{"id":"a06a3338-729c-4809-acb7-bfbb6dec786d","shortId":"hZ8GeD","kind":"skill","title":"video-content","tagline":"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","description":"# /video-content — Video Assembly Pipeline\n\nThree-tier video pipeline from static slides to platform-ready video. ffmpeg bookends every tier — slicing at the start, post-processing at the end.\n\nFor three-tier details, see [rules/three-tiers.md](rules/three-tiers.md).\nFor Remotion slide archetypes, see [references/remotion-archetypes.md](references/remotion-archetypes.md).\nFor ffmpeg recipes, see [references/ffmpeg-recipes.md](references/ffmpeg-recipes.md).\n\n## ffmpeg Bookend Architecture\n\n```\nSTART (always): ffmpeg slice\n  Input:  tall artboard PNG (e.g., 2160×26880 @ 2x) OR individual slide PNGs\n  Output: individual slide PNGs at target resolution (1080×1920)\n  Method: crop=W:H:0:Y per slide, scale to target\n\nMIDDLE (tier-dependent):\n  v1 Quick:    ffmpeg crossfade stitch\n  v1.5 Enhanced: ffmpeg Ken Burns + audio\n  v2 Full:     Remotion animate with spring physics\n\nEND (always): ffmpeg post-process\n  - Audio mixing (background music, SFX from Remotion)\n  - Two-pass H.264 encode (CRF 18, movflags +faststart)\n  - Thumbnail extraction (best frame or slide 1)\n  - GIF preview (first 3 seconds, 480px wide)\n  - Platform-specific encode (TikTok, Instagram, YouTube presets)\n```\n\n## Workflow\n\n### Phase 1: Detect Input\n\nCheck for these artifacts (in order of preference):\n\n1. **Handoff YAML** at `marketing/handoffs/{name}-handoff.yaml` — written by /paper-marketing\n2. **Content spec YAML** at `marketing/content-specs/{name}.yaml` — written by /slideshow-script\n3. **Exported PNG** — user provides path to tall artboard export\n4. **Slide directory** — user provides path to individual slide PNGs\n\nIf handoff YAML exists, read it for:\n- `export_search_pattern` — filename pattern for the exported PNG\n- `artboard.width`, `artboard.height`, `artboard.slide_count` — for ffmpeg slice coordinates\n- `brand_snapshot` — full palette + fonts for Remotion `brand.ts` generation\n- `content_spec` — path to the content spec YAML for slide types and animation hints\n- `extracted_jsx` — optional HTML/CSS per slide for pixel-perfect Remotion reference\n\nBoth 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.\n\nIf no artifacts exist, ask the user:\n```\n\"What slides should I turn into a video?\"\n\nOptions:\n1. \"I have a Paper export PNG\" — provide path\n2. \"I have individual slide PNGs\" — provide directory\n3. \"Run /paper-marketing first\" — go back to design phase\n```\n\n### Phase 2: ffmpeg Slice (START bookend)\n\nIf input is a tall artboard (not individual slides):\n\n**Where does SLIDE_COUNT come from?**\n- From `artboard.slide_count` in handoff YAML (preferred — exact value)\n- From content spec YAML `slides` array length\n- If neither exists, ask the user: \"How many slides are in this image?\"\n\n```bash\n# Detect slide count from image height\nSLIDE_HEIGHT=$((IMAGE_HEIGHT / SLIDE_COUNT))\n\n# Slice each slide\nfor i in $(seq 0 $((SLIDE_COUNT - 1))); do\n  Y=$((i * SLIDE_HEIGHT))\n  ffmpeg -i input.png \\\n    -vf \"crop=${IMAGE_WIDTH}:${SLIDE_HEIGHT}:0:${Y},scale=${TARGET_W}:${TARGET_H}\" \\\n    slides/slide_$((i + 1)).png\ndone\n```\n\nIf input is already individual slides, skip to Phase 3.\n\n### Phase 3: Select Tier\n\nUse AskUserQuestion:\n```\n\"Which video tier?\"\n\n1. \"v1 Quick\" (~5 seconds) — ffmpeg crossfade, no animation. Good for draft review.\n2. \"v1.5 Enhanced\" (~15 seconds) — ffmpeg Ken Burns + background audio. Good enough to post.\n3. \"v2 Full\" (~90 seconds) — Remotion animated with spring physics, SFX, light leaks. Production quality.\n```\n\n### Phase 4: Assemble (tier-dependent)\n\n#### v1 Quick — ffmpeg Crossfade\n\n```bash\n# 3.5s per slide, 0.5s crossfade, H.264 CRF 18\nffmpeg -loop 1 -t 3.5 -i slide_1.png \\\n       -loop 1 -t 3.5 -i slide_2.png \\\n       ... \\\n       -filter_complex \"xfade=transition=fade:duration=0.5:offset=3.0,...\" \\\n       -c:v libx264 -crf 18 -pix_fmt yuv420p \\\n       -movflags +faststart output_v1.mp4\n```\n\n#### v1.5 Enhanced — Ken Burns + Audio\n\n```bash\n# Ken Burns: zoompan with subtle zoom + pan per slide\nffmpeg -loop 1 -t 4 -i slide_1.png \\\n  -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\" \\\n  ...\n# Then stitch with xfade + add background audio\n```\n\nSee [references/ffmpeg-recipes.md](references/ffmpeg-recipes.md) for full Ken Burns and audio mixing commands.\n\n#### v2 Full — Remotion Animate\n\n1. **Scaffold Remotion project** (if not exists):\n   ```bash\n   mkdir -p marketing/video/{name}\n   cd marketing/video/{name}\n   bun init -y\n   bun add remotion @remotion/cli @remotion/transitions @remotion/google-fonts @remotion/layout-utils\n   ```\n\n2. **Read content spec YAML** for slide content + archetypes\n\n3. **Generate slide components** using archetypes from [references/remotion-archetypes.md](references/remotion-archetypes.md):\n   - Map `type: stat` → StatSlide component\n   - Map `type: anchor_word` → AnchorWordSlide component\n   - Map `type: emotional_pivot` → EmotionalPivotSlide component\n   - etc.\n\n4. **Auto-include in every v2 project:**\n   - SFX on transitions: `@remotion/sfx` (whoosh, switch, page-turn mapped to archetype)\n   - Light leaks at emotional pivots: `@remotion/light-leaks` with `hueShift` for brand color\n   - `calculateMetadata` for dynamic duration based on slide count\n   - Zod parametrizable schema (colors, text editable in Studio)\n   - `fitText()` from `@remotion/layout-utils` for auto-sizing hero text\n\n5. **Opt-in features** (ask user):\n   - ElevenLabs voiceover + auto-subtitles\n   - Custom SFX beyond defaults\n\n6. **Render:**\n   ```bash\n   bunx remotion render src/index.ts TikTokSlideshow output_v2.mp4\n   ```\n\nRead 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.).\n\n### Phase 5: ffmpeg Post-Process (END bookend)\n\nAlways runs, regardless of tier:\n\n```bash\n# 1. Audio mix (if background music provided)\nffmpeg -i video.mp4 -i music.mp3 \\\n  -filter_complex \"[1:a]volume=0.15[bg];[0:a][bg]amix=inputs=2\" \\\n  -c:v copy mixed.mp4\n\n# 2. Two-pass encode for optimal quality/size\nffmpeg -i mixed.mp4 -c:v libx264 -b:v 4M -pass 1 -f null /dev/null\nffmpeg -i mixed.mp4 -c:v libx264 -b:v 4M -pass 2 -movflags +faststart final.mp4\n\n# 3. Thumbnail (slide 1 or best frame)\nffmpeg -i final.mp4 -vf \"select=eq(n\\,0)\" -frames:v 1 thumbnail.png\n\n# 4. GIF preview (first 3 seconds, 480px wide)\nffmpeg -i final.mp4 -t 3 -vf \"fps=12,scale=480:-1\" preview.gif\n\n# 5. Platform-specific encode\n# TikTok: H.264, 1080x1920, 30fps, CRF 18, AAC 128k\n# Instagram: H.264, 1080x1350 or 1080x1920, 30fps, max 60s\n# YouTube: H.264, 1080x1920, 30fps, CRF 16 (higher quality)\n```\n\n### Phase 6: Output and Register\n\n**Output directory:** `marketing/video/{name}/`\n```\nmarketing/video/lumi-aida/\n├── slides/           # Individual slide PNGs\n├── output_v1.mp4     # Quick version (if made)\n├── output_v1.5.mp4   # Enhanced version (if made)\n├── output_v2.mp4     # Full version (if made)\n├── thumbnail.png     # Best frame\n├── preview.gif       # 3-second preview\n└── src/              # Remotion project (v2 only)\n```\n\nUpdate `brand/assets.md` with new video asset entry.\n\nReport:\n```\nVideo ready:\n  File: marketing/video/{name}/output_{tier}.mp4\n  Duration: {seconds}s\n  Size: {MB} MB\n  Resolution: {width}x{height}\n  Thumbnail: marketing/video/{name}/thumbnail.png\n  Preview GIF: marketing/video/{name}/preview.gif\n```\n\n## Standalone Usage\n\nThis skill works independently:\n- `/video-content` alone — provide any slide PNGs, get video\n- `/paper-marketing` → `/video-content` — design + assemble (no scripting)\n- `/slideshow-script` → `/video-content` — skip Paper, use existing images\n- Any PNG source → `/video-content` — works with Canva exports, screenshots, anything\n\n## Prerequisites\n\n- `ffmpeg` installed (8.0+)\n- `bun` installed (for Remotion v2)\n- For v2: Remotion packages installed automatically during scaffold\n\n## Anti-Patterns\n\n- **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.\n- **Missing faststart** — Always include `-movflags +faststart` for web/social video. Without it, the video won't play until fully downloaded.\n- **Scaling after stitching** — Always scale individual slides BEFORE stitching. Scaling the final video degrades quality.\n- **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.\n- **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.\n- **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.\n- **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`.\n\n## Edge Cases\n\n- **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.\n- **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.\n- **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.\n- **Disk space** — Video rendering needs space. A 7-slide v2 project can use 500MB+. Check available space before rendering.\n- **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.\n- **Corrupted PNG input** — If ffmpeg fails on a specific slide, verify the PNG opens in an image viewer. Re-export from Paper if corrupted.\n\n## Principles\n\n- **ffmpeg bookends everything** — slice at start, post-process at end, regardless of tier\n- **Tiers are progressive** — v1 is instant, v1.5 is better, v2 is production. User chooses speed vs quality.\n- **Content spec drives everything** — slide types, animation hints, and voice constraints come from YAML\n- **Remotion best practices** — always load the remotion-best-practices skill for v2 work\n- **No hardcoded content** — all text, colors, and timing come from content spec + brand files","tags":["video","content","marketing","cli","moizibnyousaf","agent-skills","ai-agents","ai-marketing","brand-memory","brand-voice","claude-code","claude-code-skills"],"capabilities":["skill","source-moizibnyousaf","skill-video-content","topic-agent-skills","topic-ai-agents","topic-ai-marketing","topic-brand-memory","topic-brand-voice","topic-claude-code","topic-claude-code-skills","topic-cli","topic-cmo","topic-marketing-automation","topic-marketing-cli","topic-seo"],"categories":["marketing-cli"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/MoizIbnYousaf/marketing-cli/video-content","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add MoizIbnYousaf/marketing-cli","source_repo":"https://github.com/MoizIbnYousaf/marketing-cli","install_from":"skills.sh"}},"qualityScore":"0.459","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 18 github stars · SKILL.md body (10,659 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:05:53.110Z","embedding":null,"createdAt":"2026-05-04T19:06:16.951Z","updatedAt":"2026-05-18T19:05:53.110Z","lastSeenAt":"2026-05-18T19:05:53.110Z","tsv":"'+0.0015':632 '-1':950 '-90':23 '/.claude/skills/remotion-best-practices/skill.md':819 '/dev/null':898 '/output_':1038 '/paper-marketing':231,382,1074 '/preview.gif':1059 '/slideshow-script':242,1080 '/thumbnail.png':1054 '/video-content':52,1066,1075,1081,1090 '0':136,459,477,867,927 '0.15':865 '0.5':565,590 '1':193,211,222,363,462,486,508,573,579,622,668,848,862,895,916,930 '1.3':633 '1080':130 '1080x1350':967 '1080x1920':643,959,969,975 '12':947 '120':641 '128k':964 '15':524,1219 '15s':18 '16':978 '18':184,570,597,962,1206 '1920':131 '2':232,372,390,521,693,872,877,909 '2160':116 '23':1212 '26880':117 '2x':118 '3':197,243,380,498,500,535,702,913,936,944,1017 '3.0':592 '3.5':561,575,581 '30':645 '30fps':960,970,976 '4':253,551,624,729,932 '44100':1281 '480':949 '480px':199,938 '4m':893,907 '5':511,785,835,952 '500mb':1379 '5s':11 '6':801,982 '60':22 '60s':972 '7':1373 '8.0':1100 '90':538 'aac':963 'add':650,687,1271 'alon':1067 'alreadi':492 'alway':108,166,842,1120,1143,1163,1487 'amix':870 'anchor':718 'anchorwordslid':720 'anim':21,161,308,345,516,541,667,821,1256,1476 'anti':1115 'anti-pattern':1114 'anullsrc':1279 'anyth':1096 'apt':1306 'archetyp':94,701,707,748 'architectur':106 'array':424 'artboard':113,251,400,1191 'artboard.height':280 'artboard.slide':281,411 'artboard.width':279 'artifact':217,349 'ask':351,429,790 'askuserquest':504 'assembl':38,54,552,1077 'asset':1030,1352 'assum':1227 'audio':157,171,530,609,652,661,849,1258,1267,1274,1403 'auto':731,781,795 'auto-includ':730 'auto-s':780 'auto-subtitl':794 'automat':1111 'avail':1381 'b':891,905 'back':385 'background':173,529,651,852,1385 'balloon':1220 'base':764 'bash':439,560,610,675,803,847 'best':189,815,918,1014,1485,1492 'better':1461 'beyond':799 'bg':866,869 'bookend':70,105,394,841,1440 'bottom':1332 'brand':287,758,1510 'brand.ts':294 'brand/assets.md':1026 'brew':1301 'bun':683,686,1101 'bunx':804 'burn':17,156,528,608,612,659 'c':593,873,888,902 'calculatemetadata':760 'canva':1093 'case':1286 'caus':1346 'cd':680 'check':214,1236,1290,1358,1380 'choos':1466 'cl':1282 'color':759,771,1503 'come':408,1481,1506 'command':663 'common':1345 'complex':585,861 'compon':705,715,721,727,1248 'constraint':1480 'content':3,233,296,301,326,339,343,420,695,700,1470,1500,1508 'coordin':286 'copi':875 'copyright':1411 'corrupt':1413,1437 'count':282,407,412,442,451,461,767,1321 'crf':183,569,596,961,977,1202,1205,1211,1217 'crop':133,472,1337 'crossfad':150,514,559,567 'css':1253 'custom':797 'd':640 'default':800 'degrad':1173 'depend':146,555 'design':387,1076 'detail':87 'detect':212,440 'dimens':1188 'directori':255,379,987 'disk':1366 'divis':1318 'done':488 'download':1159 'draft':519 'drive':1472 'durat':589,763,1041 'dynam':762 'e.g':115 'edg':1285 'edit':773 'elevenlab':792 'emot':724,752 'emotionalpivotslid':726 'encod':182,204,881,956 'end':82,165,840,1449 'enhanc':14,153,523,606,1003 'enough':532 'entri':1031 'eq':925 'error':1357,1360 'etc':728,833 'even':1179 'everi':71,734 'everyth':1441,1473 'exact':417 'exist':266,350,428,674,1085,1230 'export':244,252,270,277,368,1094,1433 'export/brand':337 'extract':188,310 'f':896,1276 'fade':588 'fail':1344,1418 'faststart':186,602,911,1142,1146 'featur':789 'ffmpeg':9,13,69,99,104,109,149,154,167,284,391,468,513,526,558,571,620,836,855,885,899,920,940,1098,1287,1293,1300,1303,1308,1417,1439 'file':827,1035,1221,1396,1511 'filenam':273 'filter':584,860 'final':1171 'final.mp4':912,922,942 'first':196,383,935 'fittext':776 'fix':1363 'fmt':599,1123 'font':291,1348 'format':1119 'fps':644,946 'frame':190,919,928,1015,1201 'free':1400 'full':159,289,333,537,657,665,1009 'fulli':1158 'gain':1226 'generat':295,703 'get':1072 'gif':194,933,1056 'go':384 'good':517,531 'grade':27 'gradient':1254 'green':1133 'h':135,483 'h.264':181,568,958,966,974,1126 'handoff':223,264,323,335,414 'handoff.yaml':228 'hardcod':1499 'height':445,447,449,467,476,1050,1316,1326 'hero':783 'high':1204 'higher':979 'hint':309,346,1477 'html/css':313 'hueshift':756 'ih/2-':638 'ih/zoom/2':639 'imag':438,444,448,473,1086,1315,1429 'impercept':1341 'implement':1244 'import':1232 'includ':732,1144 'independ':1065 'individu':120,124,260,375,402,493,992,1165,1185 'info':338 'init':684 'input':111,213,396,490,871,1182,1415 'input.png':470 'instagram':206,965 'instal':1099,1102,1110,1289,1299,1302,1307 'instant':12,1458 'isn':1193 'iw/2-':635 'iw/zoom/2':636 'jsx':311 'ken':16,155,527,607,611,658 'lavfi':1277 'leak':547,750,1251 'length':425 'librari':1404 'libx264':595,890,904 'light':546,749,1250 'like':1184 'linux':1309 'load':824,1488 'look':1183,1213 'loop':572,578,621 'maco':1304 'made':1000,1006,1012 'make':45 'mani':433 'map':711,716,722,746 'margin':1224 'marketing/content-specs':237 'marketing/handoffs':226 'marketing/video':678,681,988,1036,1052,1057 'marketing/video/lumi-aida':990 'max':971 'may':1262,1335 'mb':1045,1046 'mcp':33 'method':132 'middl':143 'min':630 'miss':1141,1295,1347,1351 'mix':172,662,850 'mixed.mp4':876,887,901 'mkdir':676 'mobil':1216 'movflag':185,601,910,1145 'mp4':1040 'muddi':1214 'music':174,853,1386,1395,1406,1412 'music.mp3':859 'must':1392 'n':926 'name':227,238,679,682,989,1037,1053,1058 'need':330,829,1370 'neither':427 'never':1409 'new':1028 'null':897 'offset':591 'opac':1255 'open':1426 'opt':787 'opt-in':786 'optim':883 'option':312,362 'order':219 'output':123,603,809,983,986,995,1001,1007,1361 'p':677 'packag':1109,1229,1241 'page':744 'page-turn':743 'palett':290 'pan':617 'paper':32,367,1083,1435 'parametriz':769 'pass':180,880,894,908 'path':248,258,298,371 'pattern':272,274,1116 'per':138,314,563,618 'perfect':319 'phase':210,388,389,497,499,550,834,981 'physic':164,544 'pipelin':8,55,60 'pivot':725,753 'pix':598,1122 'pixabay':1405 'pixel':318,1118,1334 'pixel-perfect':317 'platform':42,66,202,954,1261 'platform-readi':41,65 'platform-specif':201,953 'play':1138,1156 'player':1130 'png':114,245,278,369,487,1088,1414,1425 'pngs':36,122,126,262,377,994,1071 'polish':19 'post':78,169,534,838,1446 'post-process':77,168,837,1445 'practic':816,1486,1493 'prefer':221,416 'prerequisit':1097 'preset':208 'preview':195,934,1019,1055 'preview.gif':951,1016 'principl':1438 'proceed':1312 'process':79,170,839,1447 'produc':1197 'product':26,548,1464 'production-grad':25 'progress':1455 'project':671,736,1022,1376 'provid':247,257,336,341,370,378,854,1068,1393 'public':1354 'qualiti':549,980,1174,1225,1469 'quality/size':884 'quick':10,148,510,557,997 'r':1280 're':1239,1432 're-export':1431 'read':267,694,811 'readi':43,67,1034 'real':1240 'recip':100 'refer':321 'references/ffmpeg-recipes.md':102,103,654,655 'references/remotion-archetypes.md':96,97,709,710 'regardless':844,1450 'regist':985 'reject':1263 'remot':20,92,160,177,293,320,540,666,670,688,805,814,1021,1104,1108,1228,1342,1484,1491 'remotion-best-practic':813,1490 'remotion/cli':689 'remotion/google-fonts':691,1350 'remotion/layout-utils':692,778 'remotion/light-leaks':754,1235 'remotion/sfx':740,1233 'remotion/transitions':690 'render':802,806,1343,1369,1384 'report':1032 'resolut':129,1047 'retri':1365 'review':520 'round':1322 'royalti':1399 'royalty-fre':1398 'rule':822,826 'rules/three-tiers.md':89,90 'run':381,843 'scaffold':669,1113 'scale':140,479,948,1160,1164,1169 'schema':770 'screen':1134 'screenshot':1095 'script':1079 'search':271 'second':198,512,525,539,937,1018,1042 'see':88,95,101,653 'select':501,924 'seq':458 'sfx':175,545,737,798,1245 'shortest':1284 'show':1131 'silent':1273 'singl':1199 'size':782,1044,1222 'skill':50,817,1063,1494 'skill-video-content' 'skip':495,1082,1175 'slice':73,110,285,392,452,1177,1195,1442 'slide':30,63,93,121,125,139,192,254,261,305,315,342,355,376,403,406,423,434,441,446,450,454,460,466,475,494,564,619,699,704,766,915,991,993,1070,1166,1186,1320,1325,1374,1422,1474 'slide_1.png':577,626 'slide_2.png':583 'slides/slide_':484 'snapshot':288 'social':1260 'sourc':1089,1387,1401 'source-moizibnyousaf' 'space':1367,1371,1382 'spec':234,297,302,327,340,421,696,1471,1509 'specif':203,825,955,1421 'speed':1467 'spot':1210 'spring':163,543 'src':1020 'src/index.ts':807 'standalon':1060 'standard':1247 'start':76,107,393,1444 'stat':713 'static':29,62 'statslid':714 'step':1178 'stereo':1283 'stitch':151,647,1162,1168 'stretch':1200 'studio':775 'subtitl':796 'subtl':615 'suggest':1397 'sure':46 'sweet':1209 'switch':742 'take':28 'tall':112,250,399,1190 'target':128,142,480,482 'tell':1296 'text':772,784,1502 'text-animations.md':832 'three':5,57,85 'three-tier':4,56,84 'thumbnail':187,914,1051 'thumbnail.png':931,1013 'tier':6,58,72,86,145,334,502,507,554,846,1039,1452,1453 'tier-depend':144,553 'tiktok':205,957 'tiktokslideshow':808 'time':1505 'timing.md':831 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-marketing' 'topic-brand-memory' 'topic-brand-voice' 'topic-claude-code' 'topic-claude-code-skills' 'topic-cli' 'topic-cmo' 'topic-marketing-automation' 'topic-marketing-cli' 'topic-seo' 'track':1259,1268,1275 'transit':587,739 'transitions.md':830 'turn':358,745 'two':179,879 'two-pass':178,878 'type':306,712,717,723,1475 'typescript':1356 'unavail':1243 'updat':1025 'uppbeat':1408 'usag':1061 'use':48,503,706,1084,1121,1349,1378,1410 'user':246,256,353,431,791,1298,1329,1391,1465 'usual':1340 'v':594,874,889,892,903,906,929 'v1':147,509,556,1270,1456 'v1.5':152,522,605,1389,1459 'v1.5.mp4':1002 'v1.mp4':604,996 'v2':158,332,536,664,735,1023,1105,1107,1375,1462,1496 'v2.mp4':810,1008 'valu':418 'verifi':1187,1423 'version':998,1004,1010 'vf':471,627,923,945 'video':2,7,44,53,59,68,361,506,1029,1033,1073,1149,1153,1172,1264,1368 'video-cont':1 'video.mp4':857 'viewer':1430 'voic':1479 'voiceov':793 'volum':864 'vs':1468 'w':134,481 'warn':1327 'web/social':1148 'whenev':51 'whoosh':741 'wide':200,939 'width':474,1048 'without':1127,1150,1265,1313 'won':1136,1154 'word':719 'work':1064,1091,1497 'workflow':209 'written':229,240 'wrong':1117 'x':634,1049 'xfade':586,649 'y':137,464,478,637,685 'yaml':224,235,239,265,303,324,328,415,422,697,1483 'youtub':207,973,1402 'yuv420p':600,1124 'z':629 'zod':768 'zoom':616,631 'zoompan':613,628","prices":[{"id":"06b940a4-12fd-44bd-8b19-dfc211b8c25b","listingId":"a06a3338-729c-4809-acb7-bfbb6dec786d","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"MoizIbnYousaf","category":"marketing-cli","install_from":"skills.sh"},"createdAt":"2026-05-04T19:06:16.951Z"}],"sources":[{"listingId":"a06a3338-729c-4809-acb7-bfbb6dec786d","source":"github","sourceId":"MoizIbnYousaf/marketing-cli/video-content","sourceUrl":"https://github.com/MoizIbnYousaf/marketing-cli/tree/main/skills/video-content","isPrimary":false,"firstSeenAt":"2026-05-04T19:06:16.951Z","lastSeenAt":"2026-05-18T19:05:53.110Z"}],"details":{"listingId":"a06a3338-729c-4809-acb7-bfbb6dec786d","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"MoizIbnYousaf","slug":"video-content","github":{"repo":"MoizIbnYousaf/marketing-cli","stars":18,"topics":["agent-skills","ai-agents","ai-marketing","brand-memory","brand-voice","claude-code","claude-code-skills","cli","cmo","marketing-automation","marketing-cli","seo","skills-sh","typescript"],"license":"mit","html_url":"https://github.com/MoizIbnYousaf/marketing-cli","pushed_at":"2026-05-13T21:06:05Z","description":"Agent-native marketing cli: 51 skills, 5 research agents, brand memory that compounds, plus a local Studio dashboard (beta). single agent-native cli, then /cmo in ur coding agent..","skill_md_sha":"eccc4994e8461b7f52756078d5ce0d6fc9494b00","skill_md_path":"skills/video-content/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/MoizIbnYousaf/marketing-cli/tree/main/skills/video-content"},"layout":"multi","source":"github","category":"marketing-cli","frontmatter":{"name":"video-content","description":"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 they mention ffmpeg video assembly, Remotion rendering, Ken Burns effects, or any slides-to-video pipeline. Works with any PNG source — Paper exports, Canva, screenshots, anything."},"skills_sh_url":"https://skills.sh/MoizIbnYousaf/marketing-cli/video-content"},"updatedAt":"2026-05-18T19:05:53.110Z"}}