content-creator
Content Creator
Configuration
MAX_ITERATIONS: 5
DEFAULT_RESOLUTION: 1280x720
DEFAULT_FORMAT: landscape
ASSET_COLLECTION_NAME: content_creator_assets
Format Selection
Each video format is defined in its own recipe file under reference/formats/. Read the selected format file before Phase 2 — it defines persona, pacing, narrative arc, sourcing strategy, and quality criteria.
| User asks for... | Format file |
|---|---|
| "briefing", "summary", "quick take", "60 seconds on" | formats/briefing.md |
| "explainer", "breakdown", "deep dive", "Fireship-style", "tech video" | formats/fireship-explainer.md |
If ambiguous, default to briefing for short requests and fireship-explainer for anything that implies depth or multiple topics.
Production Method Diversity (CRITICAL)
No single production method may dominate. AI image generation (generate_image) is the easiest tool to reach for, but using it for every segment produces a narrated slideshow.
Hard Rules (all formats)
- No single production method may be used for more than 50% of segments.
- At least 3 different production methods per video (from: real-sourced assets, Remotion, Playwright, AI video, AI image, TextAsset).
code_editorMUST NOT usegenerate_image. AI hallucinates code. Use Remotion or Playwright (local HTML+highlight.js).diagram_animationMUST NOT usegenerate_image. No animation. Use Remotion SVG.split_screenMUST NOT usegenerate_image. Layout unreliable. Use Remotion.kinetic_textMUST use VideoDBTextAsset. Don't generate an image of text.- Code screenshots MUST use local HTML+highlight.js (see browser-recording.md
capture_code_display). Never ray.so/carbon.sh URL encoding.
Recommended Production Method Per Visual Type
| Visual Type | Primary Method | Fallback | NEVER use |
|---|---|---|---|
code_editor |
Remotion | Playwright (local HTML+highlight.js) | generate_image, ray.so URL encoding |
diagram_animation |
Remotion SVG | generate_image (static only, rename to image_scene) |
— |
logo_composition |
Real logos (Simple Icons CDN) | generate_image |
— |
split_screen |
Remotion | Playwright (side-by-side screenshots) | generate_image |
data_viz |
Remotion | generate_image (static chart fallback) |
— |
motion_scene |
Stock footage (Pexels) | generate_video |
— |
browser_capture |
Playwright recording | Playwright screenshot | generate_image |
kinetic_text |
VideoDB TextAsset | Remotion text component | generate_image |
meme_insert |
Real meme template (Imgflip/GIPHY) | generate_image |
— |
image_scene |
Stock photo (Pexels) | generate_image |
— |
stock_footage |
Pexels/Pixabay API | generate_video |
— |
The self-review phase will automatically fail any video where >50% of segments use a single production method.
Asset Sourcing Hierarchy
Before producing any visual, follow this priority. See recipes/sourcing/asset-library.md for details.
1. SEARCH the asset library collection (instant, free, pre-indexed)
↓ not found
2. SOURCE from external APIs (Pexels, Imgflip, GIPHY, Simple Icons, etc.)
↓ not available
3. GENERATE with AI (generate_image, generate_video, TextAsset)
↓ after sourcing/generating
4. UPLOAD to asset library for future reuse
Each sourcing channel has its own recipe:
| Sourcing Recipe | File | Used for |
|---|---|---|
| Asset Library | sourcing/asset-library.md | Cache search (always first) |
| Stock Footage | sourcing/stock-footage.md | stock_footage, motion_scene, image_scene |
| Meme Sourcing | sourcing/meme-sourcing.md | meme_insert |
| Logo Sourcing | sourcing/logo-sourcing.md | logo_composition, logo overlays |
| GIF Reactions | sourcing/gif-reactions.md | PiP overlays, reaction clips |
Parallel Execution
This skill supports parallel runs. Every run must generate a unique slug and namespace all local temp files under it.
Slug Generation
import uuid
SLUG = uuid.uuid4().hex[:8]
WORK_DIR = f"/tmp/vb_{SLUG}"
What the slug isolates
| Resource | Path pattern |
|---|---|
| Browser capture videos | {WORK_DIR}/captures/ |
| Screenshots | {WORK_DIR}/screenshots/ |
| Downloaded review frames | {WORK_DIR}/frames/ |
| Any temp scripts | {WORK_DIR}/scripts/ |
| Remotion projects | {WORK_DIR}/remotion/ |
Rules
- Never use bare
/tmp/paths. Always use{WORK_DIR}/.... - Create
WORK_DIRearly. RunPath(WORK_DIR).mkdir(parents=True, exist_ok=True)in Phase 0. - Pass
WORK_DIRto all functions. - Clean up on completion.
shutil.rmtree(WORK_DIR, ignore_errors=True). - Log the slug.
print(f"Video run: {SLUG}").
Dependencies
Required: VideoDB — handles all media generation (images, video, voice, music, sound effects), timeline composition, indexing, search, and streaming. Install: pip install videodb python-dotenv. Get a free API key at console.videodb.io.
Optional tools (use if available, fall back gracefully if not):
- Remotion — code-rendered animations: charts, code editors, diagrams, logos, split-screen. Fallback: Playwright or AI generation.
- Playwright — browser recording and screenshots. Navigate to real websites, capture code displays. Install:
pip install playwright && playwright install chromium. See browser-recording.md.
Optional API keys (set in environment for richer sourcing):
PEXELS_API_KEY— stock footage and photos from PexelsGIPHY_API_KEY— reaction GIFs and animated memes from GIPHYPIXABAY_API_KEY— stock footage fallback from PixabayIMGFLIP_USERNAME/IMGFLIP_PASSWORD— captioned meme generation via Imgflip
If any key is missing, that sourcing channel is skipped gracefully. The video will still work — just with fewer real-world assets.
Visual Types
The skill supports 11 visual types. Pick based on what communicates best:
| Visual Type | Use For | Primary Source |
|---|---|---|
data_viz |
Animated charts, bar graphs, counters | Remotion |
motion_scene |
Atmospheric b-roll, hooks, transitions | Stock video (Pexels) / AI video |
browser_capture |
Citing sources, showing evidence | Playwright |
kinetic_text |
Key quotes, stat highlights, punchy declarations | VideoDB TextAsset |
image_scene |
Abstract concepts, mood backgrounds | Stock photo (Pexels) / AI image |
code_editor |
Code with syntax highlighting | Remotion / Playwright HTML |
meme_insert |
Humor beats, joke images/clips | Real memes (Imgflip/GIPHY) |
diagram_animation |
Architecture diagrams, data flows | Remotion SVG |
logo_composition |
Tech logo grids, comparisons | Real logos (Simple Icons) |
split_screen |
Side-by-side comparisons | Remotion |
stock_footage |
Real-world b-roll clips | Pexels/Pixabay API |
Pipeline
0. Pre-flight → verify tools, bootstrap asset collection, read format file
1. Research → parallel subagents investigate the topic
2. Script → structure findings into a video script (format-driven)
3. Asset Production → source/create visuals (search → source → generate)
4. Composition → arrange on timeline, generate stream
4.5 Captions → (optional, user-requested) index spoken words, add auto-synced animated captions
5. Self-Review → index draft, critique, identify fixes
6. Iterate/Deliver → fix and recompose, or deliver final URL
Phase 0: Pre-flight Checks
- Generate slug and create
WORK_DIR(with subdirs:captures,screenshots,frames,scripts,remotion,sourced,review_frames). - Connect to VideoDB. Find or create the
content_creator_assetscollection (see sourcing/asset-library.md). - Check and install Playwright if missing (
pip install playwright && playwright install chromium). - Set up Remotion (MANDATORY ATTEMPT). Follow recipes/remotion-setup.md for full bootstrap instructions, component library, and test render. Set
REMOTION_AVAILABLE = True/Falsebased on result. - Check which API keys are available (
PEXELS_API_KEY,GIPHY_API_KEY,IMGFLIP_USERNAME,IMGFLIP_PASSWORD,PIXABAY_API_KEY). - Read the selected format file (
reference/formats/{format}.md). - Print capability summary including
REMOTION_AVAILABLE,PLAYWRIGHT_AVAILABLE, and which API keys are set.
Remotion Bootstrap (Phase 0, Step 4)
Remotion enables animated code, diagrams, transitions, split-screens, data viz, and kinetic text — visual types that are static/broken without it. You MUST attempt this setup. Only skip if it fails after the retry.
Full setup instructions, component library (CodeEditor, KineticText, DiagramFlow, BarChart, SplitCompare, WhipTransition, CounterReveal), and rendering commands are in recipes/remotion-setup.md.
Quick summary:
- Check
node --version && npm --version - Scaffold project:
npm init -y && npm install remotion @remotion/cli react react-dom - Write Root.tsx and component files from the recipe
- Test render:
npx remotion still src/Root.tsx CodeEditor test.png --props='{"code":"const x=1;","language":"javascript"}' --frame=0 - If test render succeeds →
REMOTION_AVAILABLE = True
REMOTION_AVAILABLE = False # set to True after successful test render
REMOTION_DIR = f"{WORK_DIR}/remotion"
If REMOTION_AVAILABLE = False: visual types diagram_animation, split_screen, and data_viz MUST be downgraded to Playwright-rendered alternatives or replaced with a different visual type in the script. Do NOT silently fall back to generate_image for these types.
Phase 1: Research
Launch 3-5 parallel subagents to investigate different angles of the topic.
Phase 2: Script
Convert research into a video script. Follow the narrative arc and pacing defined in the format file.
See reference/scriptwriting.md for the JSON schema and visual type guidance.
Phase 3: Asset Production
For each segment, follow the sourcing hierarchy: search asset library, source from external APIs, then generate.
See reference/asset-production.md for the visual type → recipe router. Each visual type has a dedicated recipe file. Each sourcing channel has a dedicated recipe under recipes/sourcing/.
Also generate per-segment narration audio and one background music track using the videodb skill.
Phase 4: Composition
Arrange all assets on a multi-track timeline. Follow the pacing and transition rules defined in the format file.
Present the stream URL: https://console.videodb.io/player?url={STREAM_URL}
Phase 4.5: Add Captions (Optional)
If the user explicitly requests captions, add speech-synced animated captions as a post-processing pass after the main stream is composed. Upload the stream, index spoken words, and recompose with a CaptionAsset(src="auto") overlay.
See reference/recipes/captions.md for the full caption config, animation styles, and color presets. Only run this phase if the user asks for captions.
Phase 5: Self-Review (mandatory)
Always runs at least once. Upload the draft, index it, compare intended vs actual. Critique as a director.
Phase 6: Iterate or Deliver
If issues remain and under MAX_ITERATIONS, fix and recompose. Otherwise deliver the final stream URL and player URL with a segment breakdown.
Quick Reference
| Phase | Key Reference |
|---|---|
| Format Selection | formats/briefing.md or formats/fireship-explainer.md |
| Research | research.md |
| Script | scriptwriting.md |
| Asset Production | asset-production.md |
| Composition | composition.md |
| Self-Review | self-review.md |
| Media APIs | videodb skill |
Visual Recipe Files
| Recipe | Path |
|---|---|
| Remotion Setup | recipes/remotion-setup.md |
| Code Slide | recipes/code-slide.md |
| Meme & Humor | recipes/meme-humor.md |
| Kinetic Text | recipes/kinetic-text.md |
| Diagram Flow | recipes/diagram-flow.md |
| Data Viz | recipes/data-viz.md |
| Split Compare | recipes/split-compare.md |
| Overlay Techniques | recipes/overlay-techniques.md |
| Captions | recipes/captions.md |
Sourcing Recipe Files
| Recipe | Path |
|---|---|
| Asset Library | sourcing/asset-library.md |
| Stock Footage | sourcing/stock-footage.md |
| Meme Sourcing | sourcing/meme-sourcing.md |
| Logo Sourcing | sourcing/logo-sourcing.md |
| GIF Reactions | sourcing/gif-reactions.md |