SuperAPI AI Directory

video-director

Design & creation

View repository

Updated 10-17 17:14

About this skill

Video Director

Before taking any action for this skill, read Shared workflow rules. Read it again after context recovery when doing media work. Do not rely on automatic loading of plugin-root AGENTS.md. Resolve this installed skill's plugin root by going up two directories from its containing skill directory, then validate .mcp.json and the plugin manifest. Environment variables are optional; use the installed skill path, never a guessed marketplace checkout.

All new AI video generation goes through this skill, including a single clip requested by tool or model name. Directing and prompt optimization are independent of the selected model; provider syntax and capabilities are not.

Resolve scope and context

  • Resolve the plugin root from a valid AO_HARNESS_ROOT, otherwise from this file's <harness-root>/skills/video-director/SKILL.md path. Read docs/shared-rules.md for shared tool, approval, project, retry, and storage rules.
  • For local UI animation or code-generated product video, use skills/motion-ui/SKILL.md. For standalone audio, images/keyframes, transcription, import, or existing-job status/recovery, use skills/media-tools/SKILL.md. In mixed tasks, direct only the generated video portion here.
  • Prompt-only planning does not require authentication, a backend project, or paid calls. Never turn a prompt request into an unrequested generation.

Direct the requested video

  1. Establish the intended subject, action, setting, audience, duration, aspect ratio, reference roles, and output. Preserve supplied facts and creative intent; ask only for missing information that materially changes the result.
  2. Give each shot a purpose and a readable subject. Choose framing, camera movement, lighting, style, and action timing to serve that purpose. Keep simultaneous camera and subject motion controlled; maintain subject identity and continuity between clips.
  3. Refine the brief into a coherent video prompt: subject and scene, ordered actions, composition and camera behavior, timing, visual treatment, reference roles, and required audio/text. Remove contradictions and ambiguous instructions. Do not add unrelated shots, stylistic changes, or more paid clips just to make the prompt longer. If the user explicitly requires an unchanged prompt, preserve it and surface incompatibilities rather than silently rewriting it.
  4. Identify the requested or suitable model using current tool schemas, model metadata, and available official capability documentation. Honor a specified model when available. Check its accepted inputs, durations, aspect ratios, reference/frame controls, audio support, and prompt format. Do not infer availability from a remembered model name. If a requested model is unavailable, explain before substituting; never call a private provider endpoint or bypass the public tool surface.
  5. Translate the creative plan into that model's supported request. Use the minimum supported clip count for the requested duration unless the user or creative/technical plan calls for separate clips. Multiple shot descriptions do not automatically mean multiple paid requests. If the server chooses the model or route, rely on its documented constraints and disclose what remains unspecified rather than inventing a version or limit.

Model-specific guidance

  • For a confirmed Seedance model, load skillpacks/seedance2-director/skillpack.json, skillpacks/seedance2-director/AO_ADAPTER.md, and skillpacks/seedance2-director/upstream/SKILL.md. Read the pack's style presets only when a Seedance preset is needed. This bundled pack is an internal Seedance adapter, not the public skill name or a restriction on other models.
  • For other models, use the general directing method above and the selected model's current capabilities. Do not load Seedance-specific instructions or impose its @image syntax, preset layers, workflow names, or clip limits on another model. Use the live public schema for field names and media mapping.
  • If the model or constraints remain unknown, do not apply Seedance defaults. Resolve what is necessary to construct a valid request before submitting.

Review, submit, and deliver

  1. Show the complete timed production script required by docs/shared-rules.md before paid video approval: full duration, picture/action, camera/motion, exact dialogue/voiceover, on-screen text, music/SFX, reference roles, and clip boundaries. Mark intentionally absent layers. Show the selected model/version when known, per-clip duration, total clips, and paid request count. The optimized request must faithfully implement the reviewed script.
  2. Before creating the backend target, verify opus_video_tools_whoami; complete host sign-in if needed and confirm an unexpected organization. Create an explicit projectId for generation/storage. Preserve organization, project, request keys, job IDs, and durable assets. Import only needed references and finish any upload/finalization before use. Show selected/generated anchors before paid video when applicable.
  3. Bind approval to the exact request as required by the shared contract. Save each exposed requestKey as a UUID with the exact arguments before submitting. Reuse it only for an identical retry; a changed paid request requires a new key and approval. Use unique clip IDs within a batch.
  4. Submit via public generate_video_clips using the live schema. Use supporting image, audio, or transcription tools only when the requested plan needs them, following media-tools and the shared approval rules. Do not assume that a model supports native audio or that separate audio assets have been mixed.
  5. Poll get_status until every submitted job is completed, failed, or submission_unknown. Keep watch windows at or below 45 seconds. A watch timeout never authorizes another generation. Follow the shared duplicate-risk procedure for unknown submissions; existing-job queries can go directly to media-tools without replanning the video.
  6. Return completed assets promptly. For requested local assembly or a generated-video preview, follow docs/local-remotion.md, honoring assets-only or no-preview requests. Use motion-ui when designing local motion layers. Verify any claimed preview/export; a local failure never justifies regenerating completed media.