video
Reference for the video tool of Video: videos and scenes, with every action and what it does.
Template videos and scene videos built scene by scene, plus imported reference films. Agents can list, read, review, tag, rename, collect and duplicate imported films, never change their file.
Call it as geenius_video(tool: "video", action: "<action>", args: {...}) through Geenius OS.
Actions#
| Action | What it does |
|---|---|
list | Videos in the workspace, without their specs. Each row has creatorName, tags and posterUrl once rendered; IMPORTED videos (finished MP4s a person added, reference films to study) carry description and source. |
read | One video: title, template, spec, size, state, duration, revision, and fileUrl/posterUrl once rendered (stale:true when edited after the render), and appUrl. A long video's spec is big: use scene_list and scene_read instead. |
review | Study one video without rendering: its poster (posterUrl, the middle frame a person's render stored), fileUrl, state, and a plain-words description of what plays when (for a scene: every scene, transition and layer). Agents cannot render, so a draft has no poster: read its description. |
create | A new draft video from a template (an id from template list, not imported; or the key of one of YOUR OWN templates: params fill it, template_version pins an older version); omit spec to start from the template's sample. Returns its id and appUrl. |
update | Changes a video: title, size, tags, spec (the whole spec, validated against the template) or spec_patch (top-level fields merged onto the current spec; an array like scenes is REPLACED whole, so for scenes use the scene_* actions). Imported videos cannot change file, size or description. |
delete | Removes a video and its rendered file for good, NO undo (rename or leave it instead when unsure). Only its creator or a workspace owner/admin may, and only with confirm set to the video's exact title (or its id). |
duplicate | A copy of a video as a new draft. |
scene_list | A scene video's scenes: index (0-based), id, title, chapter, start (s), duration, transition, layer counts. Small: use it instead of read. |
scene_read | ONE scene in full. |
scene_add | Adds a scene: scene:{...fields} OR component:"<name>" + params:{...}; returns the new scene's id. A component makes a designed scene (device frames with moving screens, journey step, chaos-to-calm, big number, quote, captions, lower third, outro ...) for the video's brand and frame shape: THE WAY TO MAKE A SCENE LOOK GOOD instead of text slides. Saved scenes you reuse: the snippet tool. |
scene_update | Changes one scene: patch:{...scene fields} merged onto it (layers is replaced whole; null removes a field). The id never changes. For a scene made from a component send params:{...} (merged over its old ones) to re-make it, or component + params to make it from another. |
scene_remove | Removes one scene. |
scene_move | Moves one scene to a new 0-based index (to) or after another scene id. |
scene_duplicate | Copies one scene (default right after it). |
scene_copy_from | Copies scenes from another video of the workspace into this one (fresh ids; chapter markers come along). |
chapters | The chapters of a scene video (a scene with chapter:"Name" starts one, up to the next), their start times, and the list as YouTube chapter text ("0:00 Intro"; YouTube needs 0:00 first, 3+ chapters, 10 s+ each). |
split | Makes ONE VIDEO PER CHAPTER (separate drafts with the same look, titled "<title> - 1. <chapter>"; the original stays). Needs 2+ chapters. This is the path for anything longer than |
component_list | The component library: name, title, what it is for, its params and the required ones. Components are also previewed live in the app (Components page). |
component_read | One component: every param with type, limits and default, the scripted-screen kinds, the named transitions and a SAMPLE params object that is valid as it is. |
ui_list | The UI KIT: our own animatable app screens, drawn by our renderer from data (no screenshots, no code). 10 READY-MADE SCREENS (booking, invoice, client-app, matter, crm, chat, dashboard, approvals, kanban, inbox) that look like a real app, ~30 PIECES (calendar, invoice, contact-card, contact-list, inbox-list, chat-thread, kanban, table, kpi-tiles, chart-card, approval-card, doc-preview, matter, pipeline, file-list, notification-list, agent-roster, activity-feed, toast, button, input, toggle, progress, badge, avatar ...), ~100 line icons and the ENTER vocabulary (pop, rise, slide, fade, zoom, blur; inside a piece rows fill, numbers count up, checks draw, buttons are pressed, a cursor clicks, the content scrolls). |
ui_read | One UI-kit screen (its full recipe, valid as it is) or piece (every prop and a valid sample); with neither, the screen fields, steps and timings. |
lint | The MINIMUM QUALITY BAR of a scene video, checked in plain words: text-only scenes, too little shown (devices, screens, pictures), too many words, too short to read, text outside the safe margins, scenes with no motion, low contrast, tiny text. create, update and every scene action already return the first few as lint; this lists all. It never blocks: fix what it says before you hand the video to a person to render. |
audio_library | Search the SOUND LIBRARY of licensed music and sound effects (compact rows: id, title, kind, category, mood, tempo, seconds, license). Filter by kind (music|sfx), category, mood, tempo (fast|slow|mid) and words in q; without filters you get the first rows plus the category and mood names to filter by. Put a chosen id into audio_track_add library_id. id reads one item in full (its url and attribution). If no library is connected to this deployment the answer says so (available:false) and you can still add a track from an https address. |
audio_track_add | Adds a SOUND to a scene video: a music, sfx or voice track on the video's timeline (seconds). Take a library sound with library_id (from audio_library: the kind, source, title and attribution come with it) or give kind + source (an https address of an audio file, or storage:<id> of a sound uploaded in the app). Defaults: start 0; duration = the sound once (or the rest of the video); music gets volume 0.5, a 0.5 s fade in, a 1.5 s fade out and loops when the video is longer than the sound. duck:0.3 makes music dip to 30% while a voice or sfx track plays. Returns the new track's id, all tracks and the sound in words. The MP4 gets ONE stereo AAC track mixed from them when a person renders in the browser; with no tracks the MP4 has no audio. Tell the person the sound is added; they hear it in the preview (after a click on the page). |
audio_track_update | Changes one audio track: send the fields to change (title, start, duration, offset, volume, fade_in, fade_out, loop, duck, kind) and, to remove a setting, name it in clear (e.g. clear:["duck","offset"]). The id and the sound never change (remove the track and add another to swap the sound). The whole spec is validated; errors name the track and the field. |
audio_track_remove | Removes one audio track (the uploaded sound file is released when no other track uses it). |