agentsclimarketplace

Video production

Skill Aaryan-Kapoor/video-production-skill/skills/video-production

Turn an AI agent into a full-stack educational video producer: research, storyboard, narration, animated visuals, render, QC, archive, and delivery.

Install
npx -y skills add Aaryan-Kapoor/video-production-skill --skill video-production

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 15 stars15 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

End-to-end narrated video production with research, source extraction, storyboard/script, Manim/ffmpeg visuals, TTS voiceover, QC, archival backups, and optional local/Tailscale hosting. Use when the user asks to make, create, generate, render, or produce a video, explainer, paper walkthrough, product demo, briefing, daily summary video, Manim animation, or narrated presentation.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

7.0 KB, as published. Nobody here has run it

Video Production

Core Rule

Treat a video request as a finished deliverable, not a plan. Research, script, produce, render, verify, archive, and deliver or host unless blocked by missing access, missing dependencies, or an explicit user constraint.

When the user gives broad creative freedom, preserve the "go all out" standard: polished visuals, clear narrative, source-grounded claims, animated diagrams/charts, narration, caveats, and a strong takeaway.

Compatibility

Requires Python 3.10+ and ffmpeg/ffprobe. Recommended optional tools: Manim, Kokoro or another TTS stack, poppler-utils, Pillow, and Tailscale for private hosting. Kokoro can be wired portably with KOKORO_PYTHON, KOKORO_TTS_DIR, KOKORO_VOICE, and KOKORO_LANG_CODE; do not hardcode user-specific install paths.

Workspace Contract

Use a durable workspace. By default the helper scripts use:

$VIDEO_PRODUCTION_ROOT if set, otherwise ~/video-productions/
├── jobs/<YYYY-MM-DD-HHMM-slug>/
│   ├── assets/      # durable source figures, crops, tables, screenshots
│   ├── audio/       # narration segments + final voiceover
│   ├── frames/      # QC preview frames
│   ├── src/         # Manim/Python scripts, storyboard, segments.json
│   ├── renders/     # intermediate renders
│   ├── exports/     # final videos for this job
│   ├── logs/
│   └── manifest.json
├── backups/<YYYY-MM-DD>/   # copy every finished video here
├── serve/<slug>/           # one-file hosting dirs
└── current -> jobs/latest

For OpenClaw, run scripts with {baseDir}. For other agents, resolve scripts/... relative to this skill folder.

Initialize every non-trivial video job:

python {baseDir}/scripts/init_video_job.py "Topic or title" --prompt "original user prompt" [--source URL_OR_PATH]

Archive every completed MP4:

python {baseDir}/scripts/archive_video.py path/to/final.mp4 --job "$VIDEO_PRODUCTION_ROOT/current"

Use /tmp/video-production-<slug>/ only for disposable intermediates. Keep durable sources, scripts, final renders, and QC frames in the job folder.

Standard Workflow

  1. Clarify only if necessary. If the prompt is enough, act. Make reasonable choices for length, style, and depth.
  2. Create the job workspace. Save prompt, source IDs/URLs, scripts, and final artifacts under the video production root.
  3. Gather sources.
    • Paper: fetch PDF/page, extract text and page images.
    • Current/mutable topic: browse or use first-party sources.
    • Stable topic: use knowledge plus targeted verification where useful.
  4. Build a production brief. For long/technical sources, summarize thesis, structure, figures/tables, numbers, caveats, and narrative arc before scripting.
  5. Write narration as segments. One short spoken paragraph per scene in src/segments.json. Keep it conversational and educational.
  6. Generate voiceover. Use an available TTS stack such as Kokoro, OpenAI TTS, ElevenLabs, or platform-native TTS. Normalize audio with ffmpeg loudnorm.
  7. Produce visuals. Prefer Manim for diagrams, equations, charts, timelines, and animated mechanisms. Use ffmpeg/PIL for crops, previews, and compositing.
  8. Sync by segment timing. Read generated audio durations and allocate scene animations to match. The final video should not drift from narration.
  9. Render and mux. Render video, mux voiceover with AAC, export MP4 at 720p or 1080p depending time/size constraints.
  10. QC before delivery. Extract representative frames and inspect for cropped text, unreadable charts, broken LaTeX, severe overlap, and missing audio stream.
  11. Archive and deliver. Copy final MP4 into job exports and backups. If direct media upload fails, host only the intended video file and share the URL.

Source-Specific Guidance

Read references/source-playbooks.md when the video depends on a paper, product or project material, current events, or a recurring daily summary.

Read references/production-standards.md when the user asks for a high-effort explainer, says "go all out", or the video should be unusually polished.

Default Tool Patterns

Voiceover

Prefer the bundled Kokoro helper when Kokoro is available. It accepts src/segments.json or a plain text file, writes one WAV per segment, combines audio/voice_raw.wav, normalizes audio/voice.wav with ffmpeg loudnorm, and records segment starts/durations in audio/timings.json.

# Optional portable wiring; set only what the environment needs.
export KOKORO_PYTHON=/path/to/python-with-kokoro
export KOKORO_TTS_DIR=/path/to/kokoro/repo
export KOKORO_VOICE=af_heart

python {baseDir}/scripts/synth_kokoro.py src/segments.json --out audio

Use python {baseDir}/scripts/synth_kokoro.py --check to validate Kokoro + ffmpeg availability. If unavailable, fall back to another reliable TTS stack, but preserve the same artifacts: per-segment WAVs, audio/voice_raw.wav, normalized audio/voice.wav, and audio/timings.json.

Manim environment

Use a per-job or temp venv if Manim is not globally installed:

uv venv .venv
source .venv/bin/activate
uv pip install 'manim>=0.19,<0.20'
manim -qm --fps 30 src/video.py SceneName

Use -ql for draft checks, -qm for fast delivery, and higher quality only when needed.

Paper asset extraction

pdftotext -layout paper.pdf paper.txt
pdftoppm -jpeg -r 200 paper.pdf assets/page

Crop figures/tables with PIL. Aggressively simplify dense tables into charts instead of showing tiny unreadable screenshots.

Final mux

ffmpeg -y -i render.mp4 -i audio/voice.wav \
  -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \
  -c:a aac -b:a 160k -shortest exports/final.mp4

Verify:

ffprobe -v error -show_entries format=duration,size -of default=nw=1 exports/final.mp4
ffprobe -v error -select_streams a:0 -show_entries stream=codec_name,duration -of default=nw=1 exports/final.mp4

Optional private hosting fallback

If Tailscale is available:

python {baseDir}/scripts/host_video.py exports/final.mp4 --port 8791 --slug my-video

Then run the printed server command in the background, verify with curl -I, and send the URL. Host only the intended video file.

Delivery Standards

  • Final reply should be short and include the attachment/link.
  • Mention duration and what is included only if useful.
  • Do not leave unarchived finished videos in /tmp only.
  • Do not claim success until render, audio stream, QC frames, and backup are verified.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.