AgentStack
SKILL verified MIT Self-run

Video Production

skill-aaryan-kapoor-video-production-skill-video-production · by Aaryan-Kapoor

End-to-end educational and explainer 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, lecture recap, class-prep video, daily summary video, Manim animation, or narrated pres…

No reviews yet
0 installs
15 views
0.0% view→install

Install

$ agentstack add skill-aaryan-kapoor-video-production-skill-video-production

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Video Production? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

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//
│   ├── 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//   # copy every finished video here
├── serve//           # 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-/ 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.
  • Course/LMS: use the platform's safe/official export or CLI path; do not browser-scrape private course data.
  • Current/mutable topic: browse or use first-party sources.
  • Stable topic: use knowledge plus targeted verification where useful.
  1. Build a production brief. For long/technical sources, summarize thesis, structure, figures/tables, numbers, caveats, and narrative arc before scripting.
  2. Write narration as segments. One short spoken paragraph per scene in src/segments.json. Keep it conversational and educational.
  3. Generate voiceover. Use an available TTS stack such as Kokoro, OpenAI TTS, ElevenLabs, or platform-native TTS. Normalize audio with ffmpeg loudnorm.
  4. Produce visuals. Prefer Manim for diagrams, equations, charts, timelines, and animated mechanisms. Use ffmpeg/PIL for crops, previews, and compositing.
  5. Sync by segment timing. Read generated audio durations and allocate scene animations to match. The final video should not drift from narration.
  6. Render and mux. Render video, mux voiceover with AAC, export MP4 at 720p or 1080p depending time/size constraints.
  7. QC before delivery. Extract representative frames and inspect for cropped text, unreadable charts, broken LaTeX, severe overlap, and missing audio stream.
  8. 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, course 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.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.