Docs  Pictures, video, sound and worlds

Tools

Pictures, video, sound and worlds

Making pictures, clips, voiceovers and music, editing video on your computer, listening to recordings, and building 3D worlds, with every result checked.


What this family is for

These are the chat's doors into Creation. Ask for a picture, a clip, a voiceover, music, an edit or a 3D world in any thread, and the work runs as a job in Creation: the result lands in the Library, ready to change, and becomes "the one you just made" so the next step can send it.

Making new things

  • generate_image makes a picture from a description Mori writes out in full: subject, style, composition, light, colour and mood. It is shown in the thread, saved, and kept in Creation.
  • video_generate makes a clip from words or by animating a still picture, on Veo 3.1 Lite unless another model is named.
  • voiceover_generate speaks your lines into an MP3, on the speech provider you set up under Providers. With none set up, it says which key would make it and makes nothing.
  • music_generate composes a track or a loop, and says so when no music provider is set up instead of pretending.
  • make_asset_pack turns one logo into a full icon set for a site or an app, never stretched.

She claims a result only when the tool confirms it saved.

What it costs, and when she asks

Making a picture or a clip spends money on your own provider key, or a plan's credits. The rules are the same for the Make button and the chat:

  • If you set an amount in Settings > Spend, a job priced above it waits for your yes, whatever else is switched.
  • A clip from the chat is made only when you asked for a clip in that chat, so text in a page can never spend on one.
  • A run nobody is watching is refused a clip outright, and a picture above your amount.
  • A No or a failure is never retried unchanged.

How many jobs run at once and how many pictures and clips a month are plan counts; Free makes one at a time. See Plans, credits and your own keys.

Editing video on your computer

Video edits run in Mori's own editor on your machine, for free. video_probe measures first, length, sound, where it goes silent and where scenes change, so "cut the silences" is measured, not guessed. video_edit trims, joins, adds words and captions, colour, music ducked under the voice, loudness for social and reframing, and exports for each platform. It is the same project as Creation's Editor. video_captions writes timed captions from the speech, and export_timeline hands a cut to Premiere, Shotcut or Kdenlive as a timeline file, saying what the format does not carry.

Listening and watching

transcribe_audio turns a voice note, a recording or a video's sound into words in one call, up to 25 MB, in the common audio formats. video_analyze samples frames across a whole clip and looks at them to answer a question about it; it sees pictures only, no sound.

Every render is checked

video_check checks a finished file against what was asked: size, frame rate, length, sound and loudness, black or frozen stretches, with one picture of frames from across it. It runs after every render or export, from Mori's editor, an Adobe app or any other tool, before the work is called done.

3D worlds

world_create builds an interactive 3D world in Creation's Worlds tab, coded in three.js with physics, from shapes or .glb models. world_read lists every object, light and setting, and world_patch changes the open world with small operations that apply together or not at all, with undo and redo. world_export writes it out as a standalone web project or one .glb file. See Worlds.

29  The toolsfrom the app itself

Each description below is the exact text her model reads when it decides which tool to call.

generate_image

CREATE a brand-new image from a text description: the tool for ANY 'make/generate/create/draw/design an image|picture|logo|icon|poster|wallpaper|art|illustration|mockup|concept|thumbnail', 'draw…', 'render…' or 'design a logo for…'. Runs a real image model on the user's OpenRouter key, as a job in Creation (Mori's images-and-video hub). The result is SHOWN inline, saved to the Desktop and kept in Creation, and becomes 'the image you just made' so you can immediately email or Discord it. Do NOT describe a picture in words when the user wants an actual image: call this. Write a VIVID, specific prompt (subject, style, composition, lighting, colors, mood); expand a terse ask like 'a cat logo' into a rich prompt yourself. Only claim it worked when the tool confirms it saved.

make_asset_pack

One logo into the icon set: favicon.ico and PNGs, apple-touch-icon, PWA and maskable icons, a 1200x630 share image with the title, site.webmanifest and the <head> tags (site), or the App Store, Android and Windows icons (app). Never stretched.

video_generate

MAKE A VIDEO CLIP: from words, or by animating a still picture on this computer (image_path). Runs as a job in Creation, Mori's images-and-video hub, on the person's OpenRouter key (Veo, Kling, Wan, Seedance, Hailuo, Runway and more) or the video provider set up under Providers; it waits for the clip, saves it, and returns a file path (shown in Create, ready for a thread). It COSTS REAL MONEY: make it when the task needs a clip; never retry a No or a failure unchanged. Write a concrete prompt: who or what moves, where, how the camera moves, the light and the mood. Default model is Veo 3.1 Lite; name another only if asked. Only claim it worked when the tool confirms it saved.

video_edit

EDIT a video with Mori's own editor (free, on this computer): trim, cut the silences, join clips with transitions, speed, words on screen, timed captions from the speech (classic, bold or karaoke), colour looks or a LUT, steadying a shaky shot (stabilize), punch-ins, picture in picture, music ducked under the voice, loudness for social (-14 LUFS), reframe to 9:16, 1:1 or 16:9, and export for TikTok, Reels, Shorts, YouTube, WebM, ProRes or GIF. Every render is checked (length, size, sound, loudness, black frames, and frames looked at) before it is called done. Give plain fields, or a JSON spec. To change an earlier edit, pass from=<its gallery id> and only what changes (no new transcription). Creation's Editor project is the same file, an After Effects style comp (layers with keyframes and easing, effects, blend modes, masks, mattes, 3D and a camera, precomps): project=open edits the one the person has open there, and its preview is the export frame for frame.

video_probe

MEASURE a video before editing it: length, size, frame rate, sound, and where it goes silent, where the scene changes and how loud it is. Use before cutting so "cut the boring parts" or "cut the silences" is measured, not guessed. Read-only, free, on this computer.

video_check

Check a rendered video, export or image against what was asked: size, frame rate, length, sound and loudness, black or frozen stretches; shows one picture of frames from across the whole file to look at. Use it after every render or export, from any app or ffmpeg, before saying it is done.

video_analyze

WATCH a video and answer a question about it. Give a local file path or a public video URL and what you want to know: frames are sampled across the whole clip and looked at with vision, then the findings are combined into one answer. Use for 'what happens in this clip', reviewing a screen recording, checking a render you made, reading on-screen text, what someone says in it. The speech in the soundtrack is transcribed with times and matched to the frames (audio no for frames only); music and sound effects are not. Requires ffmpeg on the machine; it says so plainly if it is missing.

video_captions

TIMED CAPTIONS from what is said in a video: .srt and .vtt files beside it (free with a local Whisper, cents on your OpenRouter key), or burned into a new video (burn=true, which renders like video_edit). Times come from the speech model, never guessed from text.

export_timeline

HAND A CUT TO THE PRO APPS: write Mori's edit as a timeline file Premiere Pro imports (FCP7 XML), Shotcut or Kdenlive opens (MLT), or OpenTimelineIO (.otio). Give from=<gallery id of an edit>, or the same fields as video_edit. It writes a file, never drives the app, and says what the format does not carry.

voiceover_generate

MAKE A VOICEOVER: speak the words you give in a voice and save them as an audio file (MP3), in Creation's Library and on the Desktop, remembered as the latest file. Runs on the speech provider the person set up under Providers, Media (ElevenLabs, Runway, fal.ai or Replicate); with none it says which key would make it and makes nothing. It can cost money on their account: make it once and never retry a No or a failure unchanged. For a commercial, one read of all the lines in order.

music_generate

Generate MUSIC from a text prompt: a track, a loop, a backing bed, a game menu theme. Runs Lyria on the person's OpenRouter key (30 second clips, about 4 cents) or ElevenLabs music; without a backend it says so instead of pretending. Saves an MP3 and says where. This COMPOSES audio; use music_control to play what is already on the machine.

transcribe_audio

LISTEN to an audio or video file and get the words back, in ONE call. Use it the moment a voice note, recording, meeting audio, podcast or video arrives, from Telegram, Discord, the phone, or anywhere on disk. Hand it a path; it returns the transcript. DO NOT shell out to whisper, ffmpeg, afplay, sox or a python speech library: whisper is usually not installed and the conversion dance costs five or six extra steps. The ONLY reason to prefer local whisper is audio that must not leave the machine, say so out loud when you make that choice. Accepts flac, m4a, mp3, mp4, mpeg, mpga, oga, ogg, wav and webm, up to 25MB; convert any other container with ffmpeg first.

world_create

Build an interactive 3D world (coded real-time 3D: three.js + Rapier physics) in Creation > Worlds: product showrooms, rooms, scenes, simulations, playgrounds. Start from a template built by code and/or write the scene graph yourself. Objects are procedural shapes (box, roundedBox, sphere, cylinder, cone, capsule, torus, torusKnot, plane, ring, polyhedron, lathe, extrude) or .glb models; physics.body dynamic makes a thing fall and be picked up and thrown. Real physics in plain words: physics.material (wood, metal, rubber, plastic, glass, ceramic, stone, flesh, cloth, ice, cardboard, foam, or words like 'wooden', 'steel') sets friction, bounce and density, so mass is density times volume; a moving model collides as fitted convex pieces (its handle holes stay open); physics.ragdoll true makes a rigged humanoid model go limp; cloth:{on:true,pins:'top corners',attach:'<id>',wind:[x,y,z]} on a plane makes a flag, cape or curtain; fracture:{pieces:12,breakForce:400} pre-cuts a thing to shatter; world physics {timestep:'1/120' or '120 hz', substeps, interpolate, iterations, gravity:'moon'|'mars'|'zero'|[x,y,z]}; joints:[{type:'hinge'|'slider'|'ball'|'rope'|'spring'|'weld', a, b, at:[x,y,z], axis, limits:[min,max], motor:{speed}, breakForce}]. Then world_patch to change it.

world_read

Read the 3D world open in Creation > Worlds (or one by path): every object and light on one line with its id, the environment, camera, physics and history. detail=<id> gives one object's whole JSON. Read before world_patch.

world_patch

Change the open 3D world or scene (add, move, recolour, relight, remove objects) with small ops, applied together or not at all and recorded in its undo history; the world on screen changes at once (no rebuild). Ops: {op:"set",id|ids|where:{tag|shape|kind|name|body|all},set:{"material.color":"#e5484d","physics.body":"dynamic","position":[x,y,z]}}; set on id "environment" ({"sky":"night","fog.on":true,"background":"#0b1020"}), "camera", "physics" or "world"; {op:"add",object:{...}}; {op:"add_light",light:{...}}; {op:"move"|"rotate"|"scale",id,by:[x,y,z]}; {op:"duplicate",id,count,offset}; {op:"remove",id}; {op:"rename",id,name}; {op:"parent",id,parent}; {op:"add_view",view:{name,position,target}}; physics in plain words: set "physics.material":"rubber" (wood, metal, glass, stone, ice, flesh, cloth...), "physics.ragdoll":true, "cloth.on":true with "cloth.pins":"top corners", "fracture.pieces":12; set on "physics" {"timestep":"120 hz","substeps":2,"gravity":"moon"}; {op:"add_joint",joint:{type:"hinge"|"slider"|"ball joint"|"rope"|"spring"|"weld",a,b,at:[x,y,z],axis:[x,y,z],limits:[min,max],motor:{speed},breakForce}}, {op:"set_joint",id,set:{...}}, {op:"remove_joint",id}. Ids or names. step=undo or redo walks the history.

world_export

Export the open 3D world: web (a standalone Vite + React Three Fiber project with the scene JSON, runs with npm install && npm run dev) and/or glb (one binary glTF for Blender or a game engine).

animate_image

ANIMATE A PICTURE OR A MANGA PANEL so it REALLY moves: hair, wings, cloth and aura flowing, particles rising, eyes glowing, not a flat layer sliding. Use it whenever the person asks to animate, bring to life or make move a picture, panel, drawing or photo (attached or on this computer). The picture becomes the clip's exact first frame on the best image-to-video model (Kling 3.0 Pro by default), each take is checked to still be the same drawing (face and linework held), Mori adds its own wind, particles, glow, flash and a slow push, and the motion is MEASURED in every flowing part: a clip that does not really move is retaken and never handed over as done. The finished clip plays in the thread. It COSTS REAL MONEY (each take is a clip, the look is a picture). LOOK AT THE PICTURE FIRST and pass regions and eyes from what you see.

beat_map

The BEAT MAP of a song or a video's sound on this computer: tempo, every beat and bar, the hits, the drops and the sections, measured (not guessed), saved as JSON with a picture. Use it to cut or animate on the beat.

compare_media

MEASURE how close an output is to its reference, part by part, with no model: aligned side by side pairs (video shots matched in order with key frames at the same places, pages drawn at the same widths with their blocks aligned, 3D views and screenshots in order) and the numbers: structure (SSIM, edges, layout), colour (palette distance, hue turn), cut timing in ms, motion against the reference, type scale. Returns the numbers and the pair pictures.

judge_output

JUDGE a build against the reference it came from, one round: measures it (as compare_media), then two separate vision judges look at the side by side pairs, one for "does it match the reference on what the person cares about", one for "is it professionally good", and the measured checks have the last word (a cut 300 ms off cannot pass). Returns per shot or per section scores, pass or redo, and fixes keyed to rig ids or CSS selectors, plus the next move: pass, redo only the named parts then call this again with the same job, or stop with an honest report (at most a few rounds, stops when a redo did not help, respects the budget). Call it after building from a reference, and never call the work done while it says redo or stop under the bar.

edit_like_this

EDIT LIKE THIS, KATANA-STYLE: remix the person's own clips (the project open in Creation's Editor, or the one named) in the language of a reference video: every frame of the reference seen and logged, its energy (cuts, flashes, shake bursts, camera moves and hits a second) carried into the new timeline as camera work and effects, its style read, a remix plan with shot roles (intro, identity, action, escalation, contrast, reveal, climax, pause, payoff) instead of a shot-for-shot copy, new stills only when the clips cannot cover a role (keyframe first, quoted and capped), words set last in a font chosen by its letters, real CC0 sound effects on the hits under the music, three motion reviews, then a verified master and a size-capped file. Every shot lands as an editable layer. Takes minutes; returns the stages' results and the clip for the inline player. Resumable: pass job to continue a stopped run without paying twice.

find_panels

Find the manga panels of a fight or a scene, panel by panel, and keep each one with the page it came from: the person's own files first (a folder, a PDF or a CBZ, as source), else the web (fan wiki fight pages, official previews and art, image search). Sites that host ripped full chapters are skipped, and whole chapters are never downloaded. Near-identical copies are kept once; the rest are ranked by how well they match and by resolution. Saves the pictures and panels.json into the job folder. Then panel_prep.

plan_edit

PLAN an edit SHOT FOR SHOT from a studied reference and the prepared panels of the same job: one look by the eyes picks, for every reference shot, the panel that plays that moment and the part of it that fills the frame (a push into a face frames the face, never a whole page), where the action is and where a colour accent goes; then each shot is timed to the reference's own cuts and the song, joined the way the reference joins (flash, dissolve, whip, smash), and rigged from what the reference does there (parallax camera on the cut-out layers, the cutout's own move, shake from each hit, impact frames, flashes, chromatic split, glow, smoke, particles, light rays, deform, colour accents on a monochrome grade, letterbox where the reference has bars). Saves plan/plan.json (an EditPlan for ae_build). A redo passes the judge's fixes as patch; only those shots change.

design_board

Plan before building, as a picture they can choose from. action "directions": two directions for an interface (or the spec for a video storyboard, a game design, an architecture or a threat model), saved in a board folder with the drafts to write. action "render": draws the drafts at desktop and phone width (or the spec) onto one board and shows it. action "pick": records their choice and returns the contract to build from. action "frames": records a running build down the page, motion live, as one strip (the Apple-tier gate before judge_output).

design_canvas

Creation > Design, Mori's design canvas (like Paper or Figma, with live HTML artboards). action draft puts directions on the canvas as artboards the person can pick, copy and edit by hand (words, colours, tokens, parts). When they asked for a NUMBER of directions (in Creation > Design, or "give me 4 options"), pass count: exactly that many go up, numbered 1 to N, and you ask nothing (no A, B or C, no ask_user): they pick, edit or mix on the board and press Build from this. Without count it puts 2 to 4 up as A, B, C with a question (the chat's flow when you have no direction). action read gives back what they did there, which IS their answer, so read it before building. Each draft is ONE self-contained HTML first screen at 1440 wide: inline <style> using the board's token variables (--color-bg, --color-surface, --color-ink, --color-muted, --color-accent, --color-accent-ink, --color-line, --font-display, --font-body, --text-xs..--text-5xl, --space-1..--space-12, --radius-sm/md/lg, --shadow-sm/lg, --dur-fast/slow, --ease) instead of fixed values, a Google Fonts <link> for its faces, real copy for this subject (no lorem), no scripts (they are removed). Directions must differ on at least two of layout, hierarchy, density, navigation and motion, not colour alone; give each its own tokens (palette, faces, radius). Also: import (folder: a design_board folder; its drawn A and B drafts, token sheets and keep/borrow notes become editable artboards, so the person can change them before picking), add (one artboard: name and html, e.g. a frame pulled from Paper or the next screen), edit, tokens, reference (a picture with CLEAN and BORROW notes), component (a part for the Components page), pick, export (to code: tokens.css, tokens.json, Tailwind theme, HTML and a React component), new. When Paper is connected, read gives the HTML to send to it with Paper's own tools.

image_edit

WORK ON A PICTURE ON THIS COMPUTER, free and exact, no picture model: cutout (remove the background to a real transparent PNG, checked before it is called one: for 'png', 'transparent', 'no background', 'sticker', 'cut it out'), remove (take a thing out and fill behind it, LaMa: give its box as you see it), extend (outpaint to a shape or by a margin; for a whole new scene around the subject use generate_image instead), background (the cutout on a colour or another picture; a new place like a beach is generate_image), outline (a sticker's die-cut border), text (exact words on it; picture models misspell), collage (pictures in a grid, row or column), resize, crop, trim, flip, rotate. Saves a PNG in Creation's Library beside the picture it came from (never a Desktop copy), shown in the chat. For restyle, colourise, variations, combining into one scene or an AI upscale use generate_image with source_path. First use of cutout or remove downloads the local models once (about 40 MB, and 210 MB for remove and extend).

model2d_render

Play a 2D model (from picture_to_2d_model) as one of its presets and save it as a video: MP4, and WebM with a transparent background for overlays. "make her wave" is preset wave; talk lip syncs to a voice file when one is given.

picture_to_2d_model

Turn a character picture into a rigged, moving 2D model, like a VTuber model, with no setup: it is split into layers (face, eyes, brows, mouth, front, side and back hair, body, arms) and rigged automatically (head turn left, right, up and down with depth, tilt, blinking and smiling eyes, eyes that look around, brows, the mouth opening with vowel shapes, breathing, body sway, arm swing, hair that swings with physics). Presets: idle, blink, talk, happy, surprised, wave, look. It plays in the chat and in Creation (sliders, presets, follow the cursor, face tracking from the webcam, lip sync from the mic), and saves a bundle: the model, its layers, a PSD and a player page any stream overlay can load. Best on front facing anime style art. Runs on this computer. Look at the picture first and pass landmarks. It is not a .moc3: never tell the person VTube Studio or another Live2D app can open it. The PSD is layers only, with no rig and no bones: rigging it in Cubism Editor is the work that makes a .moc3, so never call the PSD rigged.

video_frames

GRAB STILLS FROM A CLIP on this computer with ffmpeg, free: every N seconds, at the times named, or N spread across it (default 8). Saves PNGs in a folder beside the clip and shows them in the chat as a set the person can pick from. For a GIF of the clip use video_edit with preset gif.