Source profileQuality 84/100Review permissions

MoizIbnYousaf/marketing-cli/skills/video-content/SKILL.md

video-content

Three-tier video pipeline: ffmpeg Quick (5s, instant) → ffmpeg Enhanced with Ken Burns (15s, polished) → Remotion Animated (60-90s, production-grade). Takes static slides from Paper MCP or any PNGs and assembles them into platform-ready video. Make sure to use this skill whenever the user has slides, images, or PNGs and wants to turn them into video — even if they just say 'make a video from these', 'animate my slides', 'I have images and need a TikTok', or 'stitch these together'. Also use when

Source repository stars
27
Declared platforms
0
Static risk flags
1
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

Three-tier video pipeline from static slides to platform-ready video. ffmpeg bookends every tier — slicing at the start, post-processing at the end.

Best for

  • Also use when

Not for

  • Wrong pixel format — Always use -pixfmt yuv420p for H.264. Without it, some players show a green screen or won't play at all.
  • Missing faststart — Always include -movflags +faststart for web/social video. Without it, the video won't play until fully downloaded.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/MoizIbnYousaf/marketing-cli --skill "skills/video-content"
Safe inspection promptEditorial

Inspect the Agent Skill "video-content" from https://github.com/MoizIbnYousaf/marketing-cli/blob/f12fbcbe4929584697b309b9096c9427b0cfce8e/skills/video-content/SKILL.md at commit f12fbcbe4929584697b309b9096c9427b0cfce8e. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Workflow

    Check for these artifacts (in order of preference):

    Handoff YAML at marketing/handoffs/{name}-handoff.yaml — written by /paper-marketingContent spec YAML at marketing/content-specs/{name}.yaml — written by /slideshow-scriptExported PNG — user provides path to tall artboard export
  2. 02

    Phase 1: Detect Input

    Check for these artifacts (in order of preference):

    Handoff YAML at marketing/handoffs/{name}-handoff.yaml — written by /paper-marketingContent spec YAML at marketing/content-specs/{name}.yaml — written by /slideshow-scriptExported PNG — user provides path to tall artboard export
  3. 03

    Phase 2: ffmpeg Slice (START bookend)

    If input is a tall artboard (not individual slides):

    From artboard.slidecount in handoff YAML (preferred — exact value)From content spec YAML slides array lengthIf neither exists, ask the user: "How many slides are in this image?"
  4. 04

    Phase 3: Select Tier

    Review the “Phase 3: Select Tier” section in the pinned source before continuing.

    Review and apply the “Phase 3: Select Tier” source section.
  5. 05

    Phase 4: Assemble (tier-dependent)

    Review the “Phase 4: Assemble (tier-dependent)” section in the pinned source before continuing.

    Review and apply the “Phase 4: Assemble (tier-dependent)” source section.

Permission review

Static risk signals and limitations

Runs scripts

medium · line 127

The documentation asks the agent to run terminal commands or scripts.

bun init -y

Runs scripts

medium · line 128

The documentation asks the agent to run terminal commands or scripts.

bun add remotion @remotion/cli @remotion/transitions @remotion/google-fonts @remotion/layout-utils

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score84/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars27SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
MoizIbnYousaf/marketing-cli
Skill path
skills/video-content/SKILL.md
Commit
f12fbcbe4929584697b309b9096c9427b0cfce8e
License
MIT
Collected
2026-07-28
Default branch
main
View the original SKILL.md

/video-content — Video Assembly Pipeline

Three-tier video pipeline from static slides to platform-ready video. ffmpeg bookends every tier — slicing at the start, post-processing at the end.

For three-tier details, see rules/three-tiers.md. For Remotion slide archetypes, see references/remotion-archetypes.md. For ffmpeg recipes, see references/ffmpeg-recipes.md.

ffmpeg Bookend Architecture

START (always): ffmpeg slice
  Input:  tall artboard PNG (e.g., 2160×26880 @ 2x) OR individual slide PNGs
  Output: individual slide PNGs at target resolution (1080×1920)
  Method: crop=W:H:0:Y per slide, scale to target

MIDDLE (tier-dependent):
  v1 Quick:    ffmpeg crossfade stitch
  v1.5 Enhanced: ffmpeg Ken Burns + audio
  v2 Full:     Remotion animate with spring physics

END (always): ffmpeg post-process
  - Audio mixing (background music, SFX from Remotion)
  - Two-pass H.264 encode (CRF 18, movflags +faststart)
  - Thumbnail extraction (best frame or slide 1)
  - GIF preview (first 3 seconds, 480px wide)
  - Platform-specific encode (TikTok, Instagram, YouTube presets)

Workflow

Phase 1: Detect Input

Check for these artifacts (in order of preference):

  1. Handoff YAML at marketing/handoffs/{name}-handoff.yaml — written by /paper-marketing
  2. Content spec YAML at marketing/content-specs/{name}.yaml — written by /slideshow-script
  3. Exported PNG — user provides path to tall artboard export
  4. Slide directory — user provides path to individual slide PNGs

If handoff YAML exists, read it for:

  • export_search_pattern — filename pattern for the exported PNG
  • artboard.width, artboard.height, artboard.slide_count — for ffmpeg slice coordinates
  • brand_snapshot — full palette + fonts for Remotion brand.ts generation
  • content_spec — path to the content spec YAML for slide types and animation hints
  • extracted_jsx — optional HTML/CSS per slide for pixel-perfect Remotion reference

Both handoff YAML and content spec YAML are needed for v2 Full tier. Handoff provides export/brand info, content spec provides slide content and animation hints.

If no artifacts exist, ask the user:

"What slides should I turn into a video?"

Options:
1. "I have a Paper export PNG" — provide path
2. "I have individual slide PNGs" — provide directory
3. "Run /paper-marketing first" — go back to design phase

Phase 2: ffmpeg Slice (START bookend)

If input is a tall artboard (not individual slides):

Where does SLIDE_COUNT come from?

  • From artboard.slide_count in handoff YAML (preferred — exact value)
  • From content spec YAML slides array length
  • If neither exists, ask the user: "How many slides are in this image?"
# Detect slide count from image height
SLIDE_HEIGHT=$((IMAGE_HEIGHT / SLIDE_COUNT))

# Slice each slide
for i in $(seq 0 $((SLIDE_COUNT - 1))); do
  Y=$((i * SLIDE_HEIGHT))
  ffmpeg -i input.png \
    -vf "crop=${IMAGE_WIDTH}:${SLIDE_HEIGHT}:0:${Y},scale=${TARGET_W}:${TARGET_H}" \
    slides/slide_$((i + 1)).png
done

If input is already individual slides, skip to Phase 3.

Phase 3: Select Tier

Use AskUserQuestion:

"Which video tier?"

1. "v1 Quick" (~5 seconds) — ffmpeg crossfade, no animation. Good for draft review.
2. "v1.5 Enhanced" (~15 seconds) — ffmpeg Ken Burns + background audio. Good enough to post.
3. "v2 Full" (~90 seconds) — Remotion animated with spring physics, SFX, light leaks. Production quality.

Phase 4: Assemble (tier-dependent)

v1 Quick — ffmpeg Crossfade

# 3.5s per slide, 0.5s crossfade, H.264 CRF 18
ffmpeg -loop 1 -t 3.5 -i slide_1.png \
       -loop 1 -t 3.5 -i slide_2.png \
       ... \
       -filter_complex "xfade=transition=fade:duration=0.5:offset=3.0,..." \
       -c:v libx264 -crf 18 -pix_fmt yuv420p \
       -movflags +faststart output_v1.mp4

v1.5 Enhanced — Ken Burns + Audio

# Ken Burns: zoompan with subtle zoom + pan per slide
ffmpeg -loop 1 -t 4 -i slide_1.png \
  -vf "zoompan=z='min(zoom+0.0015,1.3)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=120:s=1080x1920:fps=30" \
  ...
# Then stitch with xfade + add background audio

See references/ffmpeg-recipes.md for full Ken Burns and audio mixing commands.

v2 Full — Remotion Animate

  1. Scaffold Remotion project (if not exists):

    mkdir -p marketing/video/{name}
    cd marketing/video/{name}
    bun init -y
    bun add remotion @remotion/cli @remotion/transitions @remotion/google-fonts @remotion/layout-utils
    
  2. Read content spec YAML for slide content + archetypes

  3. Generate slide components using archetypes from references/remotion-archetypes.md:

    • Map type: stat → StatSlide component
    • Map type: anchor_word → AnchorWordSlide component
    • Map type: emotional_pivot → EmotionalPivotSlide component
    • etc.
  4. Auto-include in every v2 project:

    • SFX on transitions: @remotion/sfx (whoosh, switch, page-turn mapped to archetype)
    • Light leaks at emotional pivots: @remotion/light-leaks with hueShift for brand color
    • calculateMetadata for dynamic duration based on slide count
    • Zod parametrizable schema (colors, text editable in Studio)
    • fitText() from @remotion/layout-utils for auto-sizing hero text
  5. Opt-in features (ask user):

    • ElevenLabs voiceover + auto-subtitles
    • Custom SFX beyond defaults
  6. Render:

    bunx remotion render src/index.ts TikTokSlideshow output_v2.mp4
    

Read the remotion-best-practices skill at ~/.claude/skills/remotion-best-practices/SKILL.md for animation rules, and load specific rule files as needed (transitions.md, timing.md, text-animations.md, etc.).

Phase 5: ffmpeg Post-Process (END bookend)

Always runs, regardless of tier:

# 1. Audio mix (if background music provided)
ffmpeg -i video.mp4 -i music.mp3 \
  -filter_complex "[1:a]volume=0.15[bg];[0:a][bg]amix=inputs=2" \
  -c:v copy mixed.mp4

# 2. Two-pass encode for optimal quality/size
ffmpeg -i mixed.mp4 -c:v libx264 -b:v 4M -pass 1 -f null /dev/null
ffmpeg -i mixed.mp4 -c:v libx264 -b:v 4M -pass 2 -movflags +faststart final.mp4

# 3. Thumbnail (slide 1 or best frame)
ffmpeg -i final.mp4 -vf "select=eq(n\,0)" -frames:v 1 thumbnail.png

# 4. GIF preview (first 3 seconds, 480px wide)
ffmpeg -i final.mp4 -t 3 -vf "fps=12,scale=480:-1" preview.gif

# 5. Platform-specific encode
# TikTok: H.264, 1080x1920, 30fps, CRF 18, AAC 128k
# Instagram: H.264, 1080x1350 or 1080x1920, 30fps, max 60s
# YouTube: H.264, 1080x1920, 30fps, CRF 16 (higher quality)

Phase 6: Output and Register

Output directory: marketing/video/{name}/

marketing/video/lumi-aida/
├── slides/           # Individual slide PNGs
├── output_v1.mp4     # Quick version (if made)
├── output_v1.5.mp4   # Enhanced version (if made)
├── output_v2.mp4     # Full version (if made)
├── thumbnail.png     # Best frame
├── preview.gif       # 3-second preview
└── src/              # Remotion project (v2 only)

Update brand/assets.md with new video asset entry.

Report:

Video ready:
  File: marketing/video/{name}/output_{tier}.mp4
  Duration: {seconds}s
  Size: {MB} MB
  Resolution: {width}x{height}
  Thumbnail: marketing/video/{name}/thumbnail.png
  Preview GIF: marketing/video/{name}/preview.gif

Standalone Usage

This skill works independently:

  • /video-content alone — provide any slide PNGs, get video
  • /paper-marketing/video-content — design + assemble (no scripting)
  • /slideshow-script/video-content — skip Paper, use existing images
  • Any PNG source → /video-content — works with Canva exports, screenshots, anything

Prerequisites

  • ffmpeg installed (8.0+)
  • bun installed (for Remotion v2)
  • For v2: Remotion packages installed automatically during scaffold

Anti-Patterns

  • Wrong pixel format — Always use -pix_fmt yuv420p for H.264. Without it, some players show a green screen or won't play at all.
  • Missing faststart — Always include -movflags +faststart for web/social video. Without it, the video won't play until fully downloaded.
  • Scaling after stitching — Always scale individual slides BEFORE stitching. Scaling the final video degrades quality.
  • Skipping the slice step — Even if the input "looks like" individual slides, verify dimensions. A tall artboard that isn't sliced will produce a single stretched frame.
  • CRF too high — CRF 18 is the sweet spot. CRF 23+ looks muddy on mobile. CRF below 15 balloons file size for marginal quality gain.
  • Assuming Remotion packages exist — Before importing @remotion/sfx or @remotion/light-leaks, check if they're real packages. If unavailable, implement SFX with standard <Audio> component and light leaks with CSS gradients + opacity animation.
  • No audio track — Social platforms may reject videos without an audio track. For v1, add a silent audio track: -f lavfi -i anullsrc=r=44100:cl=stereo -shortest.

Edge Cases

  • ffmpeg not installed — Check with which ffmpeg. If missing, tell the user: "Install ffmpeg: brew install ffmpeg (macOS) or apt install ffmpeg (Linux)." Do not proceed without it.
  • Image height not divisible by slide count — Round down the slide height. Warn the user that the bottom few pixels may be cropped. This is usually imperceptible.
  • Remotion render fails — Common causes: missing fonts (use @remotion/google-fonts), missing assets in public/, or TypeScript errors. Check the error output and fix before retrying.
  • Disk space — Video rendering needs space. A 7-slide v2 project can use 500MB+. Check available space before rendering.
  • Background music sourcing — For v1.5, the user must provide a music file. Suggest royalty-free sources: YouTube Audio Library, Pixabay Music, or Uppbeat. Never use copyrighted music.
  • Corrupted PNG input — If ffmpeg fails on a specific slide, verify the PNG opens in an image viewer. Re-export from Paper if corrupted.

Principles

  • ffmpeg bookends everything — slice at start, post-process at end, regardless of tier
  • Tiers are progressive — v1 is instant, v1.5 is better, v2 is production. User chooses speed vs quality.
  • Content spec drives everything — slide types, animation hints, and voice constraints come from YAML
  • Remotion best practices — always load the remotion-best-practices skill for v2 work
  • No hardcoded content — all text, colors, and timing come from content spec + brand files

Alternatives

Compare before choosing

Computed 9827

MoizIbnYousaf/marketing-cli

higgsfield-generate

Use when the user wants to generate an image or video via Higgsfield AI. Covers 30+ models: Soul V2, Seedance 2.0, Kling 3.0, Veo 3.1, GPT Image 2, Nano Banana 2. Also covers Marketing Studio — branded ad video/image with avatars and products. Use whenever: "generate an image", "make a video", "animate this photo", "image-to-video", "img2vid", "edit this image with AI", "produce a clip", "create an ad", "make a UGC video", "marketing video", "brand video", "TV spot", "import product from URL", "

Computed 9727

MoizIbnYousaf/marketing-cli

create-skill

Create new marketing skills for the mktg playbook. Use when the agent needs to add a new capability, someone says 'create a skill', 'new skill', 'add a marketing skill', 'extend the playbook', 'I need a skill for X', 'build a skill', 'make a skill for Y', or 'add capability for Z'. Also use when someone wants to capture a marketing workflow they just did into a reusable skill, or when they say 'turn this into a skill'. Reads the skill contract, generates SKILL.md with correct frontmatter and str

Computed 9438,313

wshobson/agents

brand-landingpage

Brand-first landing page designer — runs a brand-identity interview (colors, typography, shape language), then generates and iterates on a polished landing page via Stitch with deployment-ready HTML. Use when the user asks to create, design, or build a landing page, homepage, or marketing page and has no established visual direction. Skip when they have a design mockup, need a dashboard or app UI, are working at component level, building a multi-page app, or restyling with known design tokens —

Computed 9427

MoizIbnYousaf/marketing-cli

cmo-remotion

Brand-grounded Remotion video pipeline. Take a brief, ground it in `brand/` (voice, audience, positioning, creative-kit), write a beat sheet, scaffold a fresh Remotion project, generate any required assets, compose with frame-driven animations, and bake a final MP4. Use this skill whenever the user wants to build a NEW Remotion video from scratch — product films, motion graphics, code-driven shaders, CRT/glitch effects, HTML-in-canvas demos, React video. Triggers on requests like "make a remotio