{"id":"249bb057-387c-4876-bcda-60393df3b6b0","shortId":"s5sXbY","kind":"skill","title":"vid-sizzle-reel","tagline":"Generates a high-energy sizzle reel or hype video (MP4) from brand assets and key messages. Fast-paced montage format with dynamic cuts, bold text overlays, and optional music. 4-section structure: Cold Open, Build, Peak, Land. 4 tone presets. Beat-sync cuts when music is provide","description":"# vid-sizzle-reel\n\nGenerates a high-energy sizzle reel or hype video from brand assets and key messages.\nPipeline: HyperFrames HTML composition (GSAP timelines) → headless Chromium → FFmpeg H.264 MP4.\nNo Runway. No Pika. No AI video APIs. Zero runtime cost beyond Node.js + FFmpeg.\n\n**Differentiation from `vid-product-launch`:**\n- `vid-product-launch` tells a narrative story — one earned reveal, five sections, tension arc\n- `vid-sizzle-reel` creates energy and excitement — fast cuts, music-first, no single story beat\n\n---\n\n## Critical Rules (read before every generation)\n\n1. **Write the key messages yourself — or ask the user to write them.** These are the exact phrases that appear on screen. \"AI will figure it out\" produces filler. 3-5 sharp lines is the entire content of a sizzle reel.\n\n2. **Brand name appears ONLY in the Land section.** Cold Open and Build create tension without naming the brand. The Land section is the payoff.\n\n3. **Declare the rhythm pattern in a comment at the top of the script before writing any HTML.** Format: `// RHYTHM: flash-sequence | Cold[0-5s]: stat | Build[5-40s]: msg(1.5s)|flash|... | Peak[40-55s]: ... | Land[55-60s]: logo+CTA`. Every timing decision checks against this.\n\n4. **Build end-state layout in CSS first — no GSAP yet.** Position every element at its most-visible moment in static CSS. Then add GSAP entrances with `gsap.from()` and exits with `gsap.to()`. Never position at animated start state.\n\n5. **`class=\"clip\"` on every timed element.** Required by HyperFrames. Without it, the element is invisible to the player.\n\n6. **`data-start`, `data-duration`, `data-track-index` on every clip.** No exceptions. Same-track clips cannot overlap — use different track indices.\n\n7. **No `Math.random()`.** HyperFrames requires deterministic compositions. Use seeded PRNG (mulberry32) for any pseudo-random values.\n\n8. **All GSAP timelines start `{ paused: true }` and register to `window.__timelines[\"comp-id\"]`.** The HyperFrames player controls playback — never call `tl.play()`.\n\n9. **Never `position: absolute` on `.scene-content` containers.** Use `width:100%; height:100%; padding:Npx; display:flex`. Reserve `position:absolute` for decorative elements only.\n\n10. **Music: separate `<audio>` element with `data-track-index`.** Video must be `muted playsinline`. Never put audio in a `<video>` element.\n\n11. **Read `references/cut-patterns.md` AND `references/tone-presets.md` before generating any HTML.**\n\n12. **Never dump HTML in chat.** Save to file. Show summary only.\n\n---\n\n## Step 1: Intake\n\n**Required:**\n- `key_messages` — 3-5 punchy lines to flash on screen (user must write these)\n\n**Optional parameters and defaults:**\n\n| Parameter | Default | Description |\n|---|---|---|\n| brand_assets | none | Logo URL/path, brand colors (hex), key screenshots |\n| tone | energetic | energetic / cinematic / emotional / professional |\n| music | none | File path, or BPM/genre string (e.g. \"128bpm electronic\") |\n| duration | 60 | 30 / 60 / 90 seconds |\n| aspect_ratio | 9:16 | 9:16 (1080x1920) / 16:9 (1920x1080) |\n| cut_style | auto | fast (1-2s) / cinematic (3-5s) — auto derives from tone |\n| end_card | auto | Logo + tagline + CTA URL for Land section |\n\n`cut_style` auto-defaults: energetic → `fast`; professional → `fast` (2s); cinematic → `cinematic`; emotional → `mixed`\n\n**If `key_messages` is missing, ask exactly:**\n\n> \"To generate the sizzle reel, I need your key messages — the exact phrases that will flash on screen. Give me 3-5 punchy lines. These are the most important thing you're writing for this video.\n>\n> Examples: 'Used by 500+ growth teams' / 'From days to minutes' / 'Works with Claude, Codex, Gemini'\n>\n> Also useful: tone (energetic/cinematic/emotional/professional), duration (30/60/90s), any brand colors or logo URL.\"\n\nIf key_messages are present → proceed to Step 2 immediately.\n\n---\n\n## Step 2: Install HyperFrames\n\nInstall HyperFrames skills (first time only — skip if already installed):\n\n```bash\nnpx skills add heygen-com/hyperframes\n```\n\nVerify environment:\n```bash\nnode --version   # must be >= 22\nffmpeg -version  # must be present\n```\n\nScaffold the project:\n```bash\nnpx hyperframes init sizzle-[slug] --example kinetic-type --non-interactive\ncd sizzle-[slug]\n```\n\nSlug: kebab-case from end_card brand name or first key_message, max 25 chars.\n\n---\n\n## Step 3: Internal Architecture (never shown to user)\n\n**1. Derive cut-point timing from `duration` + `cut_style`:**\n\n| Section | 30s | 60s | 90s |\n|---|---|---|---|\n| Cold Open | 0-5s | 0-5s | 0-8s |\n| Build | 5-25s | 5-40s | 8-65s |\n| Peak | 25-28s | 40-55s | 65-80s |\n| Land | 28-30s | 55-60s | 80-90s |\n\nConvert every boundary to milliseconds. Calculate per-scene duration from `cut_style`:\n- `fast`: 1.2s-1.8s per message (use 1.5s default)\n- `cinematic`: 3.5s-5.0s per message (use 4.0s default)\n- `mixed`: 2.0s-4.0s varying by section energy\n\n**2. Map key_messages to scenes:**\n- Cold Open (1 scene): one impact stat or question — NO brand name, builds intrigue\n- Build: one scene per key_message\n- Peak: repeat the strongest message at double scale, or combine 2 messages in rapid flash\n- Land: brand name + tagline + CTA URL\n\n**3. Detect beat sync if music provided:**\n```bash\nnpx hyperframes tts --analyze-beats [music-file]\n```\nIf unavailable, calculate from BPM: `beat_ms = 60000 / BPM`. Align cuts to every 2nd beat.\n\n**4. Select tone preset** — read `references/tone-presets.md` for CSS tokens.\n\n**5. Declare rhythm pattern** — write comment at top of script:\n```js\n// RHYTHM: flash-sequence\n// Cold Open [0-5000ms]: stat\n// Build [5000-40000ms]: msg-1(1500ms)|flash|msg-2(1500ms)|flash|msg-3(1500ms)|flash|msg-4(1500ms)|flash|build-accum(10000ms)\n// Peak [40000-55000ms]: msg-strongest(1200ms)|flash|msg-2nd(1200ms)|flash|HOLD(5600ms)\n// Land [55000-60000ms]: logo+tagline+cta\n```\n\n**6. Determine pixel dimensions:**\n- `9:16` → W=1080, H=1920 (default — Instagram Reels, TikTok, YouTube Shorts)\n- `16:9` → W=1920, H=1080\n\n---\n\n## Step 4: HyperFrames HTML Composition\n\nRead `references/cut-patterns.md` and the HyperFrames skill (`/hyperframes`) before writing any code.\n\n**Required HTML skeleton:**\n\n```html\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n[font CDN link from tone preset]\n<style>\n:root {\n  [all CSS tokens from tone preset]\n}\n\n*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }\n</style>\n</head>\n<body>\n<div\n  data-composition-id=\"sizzle-[slug]\"\n  data-width=\"[W]\"\n  data-height=\"[H]\"\n  style=\"position:relative;width:[W]px;height:[H]px;overflow:hidden;background:var(--bg)\"\n>\n\n  [if cut-flash: true]\n  <div id=\"cut-flash\"\n    style=\"position:absolute;inset:0;background:var(--cut-flash-bg);opacity:0;pointer-events:none;z-index:200\"></div>\n  [end if]\n\n  [if film-grain: true]\n  <canvas id=\"grain-overlay\"\n    width=\"240\" height=\"135\"\n    style=\"position:absolute;inset:0;width:[W]px;height:[H]px;pointer-events:none;opacity:0.022;mix-blend-mode:overlay;z-index:50\"></canvas>\n  [end if]\n\n  [if vignette: true]\n  <div id=\"vignette-overlay\"\n    style=\"position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 35%,rgba(0,0,0,0.65) 100%);pointer-events:none;z-index:51\"></div>\n  [end if]\n\n  <!-- Scenes — one div per scene -->\n  <div id=\"scene-cold\"\n    class=\"clip\"\n    data-start=\"0\"\n    data-duration=\"5\"\n    data-track-index=\"0\"\n    style=\"position:absolute;inset:0;opacity:0\"\n  >\n    <div class=\"scene-content\" style=\"width:100%;height:100%;padding:120px;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box\">\n      [cold open content — one stat or impact phrase, no brand name]\n    </div>\n  </div>\n\n  [one div per Build scene, data-start increments by cut duration]\n  [Peak scene(s)]\n  [Land scene — brand name + tagline + CTA]\n\n  [if music provided]\n  <audio id=\"music\"\n    class=\"clip\"\n    data-start=\"0\"\n    data-duration=\"[total_duration]\"\n    data-track-index=\"10\"\n    data-volume=\"0.85\"\n    src=\"[music_path]\"\n  ></audio>\n  [end if]\n\n  <script src=\"https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js\"></script>\n  <script>\n  // ── RHYTHM DECLARATION ──────────────────────────────────────────────────────\n  // RHYTHM: [flash-sequence | cinematic-hold | beat-sync | mixed]\n  // Cold Open [0-Nms]: ...\n  // Build [N-Nms]: ...\n  // Peak [N-Nms]: ...\n  // Land [N-Nms]: ...\n\n  // ── SEEDED PRNG (for grain only — no other random values) ───────────────────\n  function mulberry32(seed) {\n    return function() {\n      seed |= 0; seed = seed + 0x6D2B79F5 | 0;\n      let t = Math.imul(seed ^ seed >>> 15, 1 | seed);\n      t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t;\n      return ((t ^ t >>> 14) >>> 0) / 4294967296;\n    };\n  }\n\n  [if film-grain: true]\n  // ── FILM GRAIN (cinematic/emotional only) ───────────────────────────────────\n  const grainCanvas = document.getElementById('grain-overlay');\n  const grainCtx = grainCanvas ? grainCanvas.getContext('2d') : null;\n  // Grain updated by GSAP ticker (not per-frame capture — HyperFrames handles this)\n  [end if]\n\n  // ── GSAP TIMELINE ───────────────────────────────────────────────────────────\n  const tl = gsap.timeline({ paused: true });\n\n  // ── COLD OPEN ───────────────────────────────────────────────────────────────\n  [cold open entrance and exit tweens — see cut-patterns.md for exact pattern]\n\n  // ── BUILD SECTION ───────────────────────────────────────────────────────────\n  [per-message tweens — flash-sequence or cinematic-hold from cut-patterns.md]\n\n  // ── PEAK SECTION ─────────────────────────────────────────────────────────────\n  [peak tweens — same pattern as build but tighter timing]\n\n  // ── LAND SECTION ─────────────────────────────────────────────────────────────\n  [land entrances — logo, tagline, CTA. No exit — holds to end]\n\n  // ── TIMELINE REGISTRATION ────────────────────────────────────────────────────\n  window.__timelines = window.__timelines || {};\n  window.__timelines[\"sizzle-[slug]\"] = tl;\n  </script>\n</div>\n</body>\n</html>\n```\n\n**Design quality rules:**\n- Cold open stat: ≥160px font size for 16:9, ≥100px for 9:16\n- Key messages: ≥80px font size — readable at a glance\n- Land section brand name: ≥120px for 16:9\n- All colors from preset token variables — no free hex except `var(--accent)` literal hex inside canvas `fillStyle`\n- `scene-content` always uses `padding + flex` — never `position:absolute` on content container\n- `class=\"clip\"` on every element with `data-start`\n\n---\n\n## Step 5: Self-QA (fix every failure before Step 6)\n\n**Content:**\n- [ ] `key_messages` — each phrase appears exactly once, no duplicates\n- [ ] Brand name appears ONLY in Land section (not cold open, not build, not peak)\n- [ ] Cold open contains NO brand name and NO product name — only stat or impact phrase\n- [ ] Land section has: brand name + tagline + CTA URL (three elements minimum)\n- [ ] end_card CTA URL present on final frame\n\n**HyperFrames contract:**\n- [ ] `class=\"clip\"` on every element with `data-start`\n- [ ] `data-start`, `data-duration`, `data-track-index` on every clip\n- [ ] `data-composition-id` on the root composition div\n- [ ] `window.__timelines[\"sizzle-[slug]\"] = tl` registered\n- [ ] All timelines start `{ paused: true }`\n- [ ] No `Math.random()` — seeded PRNG only\n- [ ] No `tl.play()` or `tl.resume()` calls\n\n**GSAP / Layout:**\n- [ ] `gsap.from()` for all entrances (FROM offscreen TO CSS position)\n- [ ] `gsap.to()` for all exits (FROM CSS position TO offscreen)\n- [ ] No `position:absolute` on `.scene-content` containers\n- [ ] Rhythm pattern declared in comment at top of script\n\n**Cut timing:**\n- [ ] `fast` tone: average cut duration ≤ 2.0s\n- [ ] `cinematic` tone: average cut duration ≥ 3.0s\n- [ ] Cut flash fires at every cut boundary for `energetic` tone (60ms, opacity 0→1→0)\n- [ ] Same-track clips do NOT overlap (check all `data-track-index` groupings)\n\n**SFX:**\n- [ ] `window.__sfxTimeline` present and placed before timeline registration\n- [ ] `word-hit` event per key message\n- [ ] `whoosh` at Build → Peak transition boundary\n- [ ] `cta-chime` at Land start\n- [ ] No SFX fires before 500ms\n\n---\n\n## Step 6: Lint, Render, Output\n\n```bash\nnpx hyperframes lint\nnpx hyperframes inspect --json\n```\n\nFix all lint errors. Fix all inspect errors (text overflow, clip escaping containers). Then render:\n\n```bash\nnpx hyperframes render --output sizzle/[slug]/sizzle-reel.mp4\n```\n\nOutput:\n```\n## Sizzle Reel: [brand name from end_card]\nTone: [tone] | Duration: [N]s | Cut style: [cut_style] | Aspect: [ratio]\nRhythm: [declared pattern]\n\nSections\n  Cold Open [0-Ns]:  [impact stat or phrase]\n  Build     [N-Ns]:  [N key messages listed]\n  Peak      [N-Ns]:  [strongest message at max scale]\n  Land      [N-Ns]:  [brand name] + \"[tagline]\" + [CTA URL]\n\nFiles\n  Source: sizzle/[slug]/index.html\n  Output: sizzle/[slug]/sizzle-reel.mp4\n```\n\n---\n\n## SFX Timeline (embed in every composition)\n\nThe same FFmpeg-synthesized SFX system as `vid-product-launch`. Place `window.__sfxTimeline` immediately before the GSAP timeline registration.\n\nSFX type reference for sizzle reel:\n\n| Type | Sound | Duration | Placement |\n|---|---|---|---|\n| `word-hit` | Sub punch (50Hz) + transient click (2.2kHz) + noise burst | 180ms | One per key_message scene start |\n| `whoosh` | Two-band noise sweep (1.1kHz body + 4-8kHz air) | 700ms | At Build → Peak boundary |\n| `cta-chime` | A major chord (440+554+659+880Hz) + aecho bell shimmer | 1.2s | Exactly at Land start |\n\n```js\nwindow.__sfxTimeline = [\n  // one word-hit per key_message (computed from scene start times)\n  { ms: MSG_1_START_MS,           sfx: 'word-hit',   vol: 0.50 },\n  { ms: MSG_2_START_MS,           sfx: 'word-hit',   vol: 0.50 },\n  { ms: MSG_3_START_MS,           sfx: 'word-hit',   vol: 0.50 },\n  // ... repeat for each message\n  { ms: PEAK_START_MS - 700,      sfx: 'whoosh',     vol: 0.55 },\n  { ms: LAND_START_MS,            sfx: 'cta-chime',  vol: 0.65 },\n];\n```\n\nCompute all `ms` values from declared section timing constants. Never hardcode.\n\n---\n\n## Prompt Tips (show when user asks for guidance)\n\n> \"Write the key messages yourself. They are the entire content of this video. 3 sharp lines beats 10 vague ones every time.\"\n>\n> \"Choose music before choosing visuals. The BPM determines the cut style. The cut style determines every timing decision.\"\n>\n> \"Cold open: one number. Not a sentence, not a tagline — one specific, surprising number. It earns 5 seconds of attention.\"\n>\n> \"The Land section is not a credits page. Logo + one line + one URL. Anything more dilutes the CTA.\"\n>\n> \"Match tone to channel. Energetic for social and Product Hunt. Cinematic for B2C premium and investor decks. Professional for enterprise conferences. Emotional for crowdfunding.\"\n\nGood:\n```\nSizzle reel, 60 seconds. Tone: energetic. Key messages: ['AI skills, ready to install' /\n'52+ skills across GTM, content, research' / 'Works with Claude, Codex, Gemini' /\n'Zero setup. Instant value.']. Music: 128bpm electronic. Cut style: fast.\nEnd card: OpenDirectory + 'AI skills, ready to install' + 'opendirectory.dev'. Aspect: 9:16.\n```\n\nBad:\n```\nhype video for our company\n```","tags":["vid","sizzle","reel","opendirectory","varnan-tech","agent-skills","gtm","hermes-agent","marketing-skills","openclaw-skills","skill-pack","skills"],"capabilities":["skill","source-varnan-tech","skill-vid-sizzle-reel","topic-agent-skills","topic-gtm","topic-hermes-agent","topic-marketing-skills","topic-openclaw-skills","topic-skill-pack","topic-skills","topic-technical-seo"],"categories":["opendirectory"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/Varnan-Tech/opendirectory/vid-sizzle-reel","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add Varnan-Tech/opendirectory","source_repo":"https://github.com/Varnan-Tech/opendirectory","install_from":"skills.sh"}},"qualityScore":"0.593","qualityRationale":"deterministic score 0.59 from registry signals: · indexed on github topic:agent-skills · 286 github stars · SKILL.md body (15,121 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-18T18:54:44.489Z","embedding":null,"createdAt":"2026-05-08T18:56:12.097Z","updatedAt":"2026-05-18T18:54:44.489Z","lastSeenAt":"2026-05-18T18:54:44.489Z","tsv":"'+554':1565 '+659':1566 '+880':1567 '-1':929 '-1.8':787 '-2':524,933 '-25':743 '-28':753 '-3':937 '-30':763 '-4':941 '-4.0':809 '-40':240,746 '-40000':926 '-5':174,235,459,528,586,733,736 '-5.0':798 '-5000':921 '-55':248,756 '-55000':950 '-60':252,766 '-60000':966 '-65':749 '-8':739,1550 '-80':759 '-90':769 '/hyperframes':659,1004 '/index.html':1480 '/sizzle-reel.mp4':1418,1484 '0':234,732,735,738,920,1334,1336,1444 '0.50':1602,1613,1624 '0.55':1637 '0.65':1647 '1':144,453,523,716,823,1335,1594 '1.1':1546 '1.2':785,1572 '1.5':243,792 '10':411,1684 '100':397,399 '10000ms':947 '100px':1087 '1080':978,992 '1080x1920':515 '11':431 '12':440 '1200ms':955,960 '120px':1104 '128bpm':501,1799 '1500ms':930,934,938,942 '16':512,514,516,976,987,1085,1090,1106,1815 '160px':1081 '180ms':1533 '1920':980,990 '1920x1080':518 '2':185,636,639,815,851,1605 '2.0':807,1313 '2.2':1529 '22':667 '25':706,752 '28':762 '2nd':892,959 '2s':553 '3':173,210,458,527,585,709,862,1616,1680 '3.0':1320 '3.5':796 '30':505 '30/60/90s':621 '30s':727 '4':36,44,262,894,994,1549 '4.0':803 '40':247,755 '40000':949 '440':1564 '5':239,302,742,745,903,1148,1723 '500':604 '5000':925 '500ms':1382 '50hz':1526 '52':1783 '55':251,765 '55000':965 '5600ms':963 '6':321,971,1157,1384 '60':504,506,1772 '60000':886 '60ms':1332 '60s':728 '65':758 '7':347 '700':1633 '700ms':1553 '8':364,748 '80':768 '80px':1093 '9':386,511,513,517,975,988,1086,1089,1107,1814 '90':507 '90s':729 'absolut':389,406,1134,1291 'accent':1119 'accum':946 'across':1785 'add':287,655 'aecho':1569 'ai':91,166,1778,1807 'air':1552 'align':888 'alreadi':650 'also':616 'alway':1128 'analyz':874 'analyze-beat':873 'anim':299 'anyth':1740 'api':93 'appear':163,188,1163,1170 'arc':120 'architectur':711 'ask':151,563,1664 'aspect':509,1436,1813 'asset':18,71,478 'attent':1726 'audio':427 'auto':521,530,536,547 'auto-default':546 'averag':1310,1317 'b2c':1757 'bad':1816 'band':1543 'bash':652,662,676,869,1388,1411 'beat':48,137,864,875,884,893,1683 'beat-sync':47 'bell':1570 'beyond':97 'bodi':1548 'bold':30 'boundari':773,1328,1371,1557 'bpm':883,887,1695 'bpm/genre':498 'brand':17,70,186,203,477,482,623,699,831,857,1047,1066,1102,1168,1186,1200,1422,1471 'build':41,197,238,263,741,833,835,924,945,1052,1179,1368,1450,1555 'build-accum':944 'burst':1532 'calcul':776,881 'call':384,1268 'cannot':341 'canva':1123 'card':535,698,1209,1426,1805 'case':695 'cd':689 'cdn':1014 'channel':1748 'char':707 'chat':445 'check':259,1344 'chime':1374,1560,1645 'choos':1689,1692 'chord':1563 'chromium':82 'cinemat':490,526,554,555,795,1315,1755 'class':303,1138,1218 'claud':613,1791 'click':1528 'clip':304,334,340,1139,1219,1239,1340,1406 'code':1008 'codex':614,1792 'cold':39,194,233,730,821,918,1038,1078,1176,1182,1442,1707 'color':483,624,1109 'com':658 'combin':850 'comment':217,908,1301 'comp':376 'comp-id':375 'compani':1821 'composit':78,353,997,1242,1247,1490 'comput':1587,1648 'confer':1765 'constant':1656 'contain':394,1137,1184,1296,1408 'content':180,393,1040,1127,1136,1158,1295,1676,1787 'contract':1217 'control':381 'convert':771 'cost':96 'creat':125,198 'credit':1733 'critic':138 'crowdfund':1768 'css':269,285,901,1278,1285 'cta':255,539,860,970,1069,1203,1210,1373,1474,1559,1644,1744 'cta-chim':1372,1558,1643 'cut':29,50,130,519,544,719,724,782,889,1021,1059,1306,1311,1318,1322,1327,1432,1434,1698,1701,1801 'cut-flash':1020 'cut-point':718 'data':323,326,329,417,1055,1145,1225,1228,1231,1234,1241,1347 'data-composition-id':1240 'data-dur':325,1230 'data-start':322,1054,1144,1224,1227 'data-track-index':328,416,1233,1346 'day':608 'decis':258,1706 'deck':1761 'declar':211,904,1299,1439,1653 'decor':408 'default':473,475,548,794,805,981 'deriv':531,717 'descript':476 'design':1075 'detect':863 'determin':972,1696,1703 'determinist':352 'differ':344 'differenti':100 'dilut':1742 'dimens':974 'display':402 'div':1050,1248 'doubl':847 'dump':442 'duplic':1167 'durat':327,503,620,723,780,1060,1232,1312,1319,1429,1519 'dynam':28 'e.g':500 'earn':115,1722 'electron':502,1800 'element':276,308,315,409,414,430,1142,1206,1222 'emb':1487 'emot':491,556,1766 'end':265,534,697,1024,1031,1036,1073,1208,1425,1804 'end-stat':264 'energet':488,489,549,1330,1749,1775 'energetic/cinematic/emotional/professional':619 'energi':9,63,126,814 'enterpris':1764 'entir':179,1675 'entranc':289,1274 'environ':661 'error':1399,1403 'escap':1407 'event':1362 'everi':142,256,275,306,333,772,891,1141,1153,1221,1238,1326,1489,1687,1704 'exact':160,564,576,1164,1574 'exampl':601,682 'except':336,1117 'excit':128 'exit':293,1283 'failur':1154 'fast':23,129,522,550,552,784,1308,1803 'fast-pac':22 'ffmpeg':83,99,668,1494 'ffmpeg-synthes':1493 'figur':168 'file':448,495,878,1476 'filler':172 'fillstyl':1124 'film':1028 'film-grain':1027 'final':1214 'fire':1324,1380 'first':133,270,645,702 'five':117 'fix':1152,1396,1400 'flash':231,245,463,580,855,916,931,935,939,943,956,961,1022,1323 'flash-sequ':230,915 'flex':403,1131 'font':1013,1082,1094 'format':26,228 'frame':1215 'free':1115 'gemini':615,1793 'generat':5,59,143,437,566 'give':583 'glanc':1099 'good':1769 'grain':1029 'group':1350 'growth':605 'gsap':79,272,288,366,1269,1508 'gsap.from':291,1271 'gsap.to':295,1280 'gtm':1786 'guidanc':1666 'h':979,991 'h.264':84 'hardcod':1658 'headless':81 'height':398 'hex':484,1116,1121 'heygen':657 'heygen-com':656 'high':8,62 'high-energi':7,61 'hit':1361,1523,1583,1600,1611,1622 'hold':962 'html':77,227,439,443,996,1010,1012 'hunt':1754 'hype':13,67,1817 'hyperfram':76,311,350,379,641,643,678,871,995,1002,1216,1390,1393,1413 'hz':1568 'id':377,1243 'immedi':637,1505 'impact':826,1044,1195,1446 'import':593 'increment':1057 'index':331,419,1236,1349 'indic':346 'init':679 'insid':1122 'inspect':1394,1402 'instagram':982 'instal':640,642,651,1782,1811 'instant':1796 'intak':454 'interact':688 'intern':710 'intrigu':834 'investor':1760 'invis':317 'js':913,1578 'json':1395 'kebab':694 'kebab-cas':693 'key':20,73,147,456,485,559,573,629,703,817,839,1091,1159,1364,1455,1536,1585,1669,1776 'khz':1530,1547,1551 'kinet':684 'kinetic-typ':683 'land':43,192,205,250,542,761,856,964,1064,1100,1173,1197,1376,1467,1576,1639,1728 'launch':105,109,1502 'layout':267,1270 'line':176,461,588,1682,1737 'link':1015 'lint':1385,1391,1398 'list':1457 'liter':1120 'logo':254,480,537,626,968,1735 'major':1562 'map':816 'match':1745 'math.random':349,1260 'max':705,1465 'messag':21,74,148,457,560,574,630,704,790,801,818,840,845,852,1092,1160,1365,1456,1463,1537,1586,1628,1670,1777 'millisecond':775 'minimum':1207 'minut':610 'miss':562 'mix':557,806 'moment':282 'montag':25 'most-vis':279 'mp4':15,85 'ms':885,922,927,951,967,1592,1596,1603,1607,1614,1618,1629,1632,1638,1641,1650 'msg':242,928,932,936,940,953,958,1593,1604,1615 'msg-2nd':957 'msg-strongest':952 'mulberry32':357 'music':35,52,132,412,493,867,877,1071,1690,1798 'music-fil':876 'music-first':131 'must':421,467,665,670 'mute':423 'n':1430,1452,1454,1460,1469 'n-ns':1451,1459,1468 'name':187,201,700,832,858,1048,1067,1103,1169,1187,1191,1201,1423,1472 'narrat':112 'need':571 'never':296,383,387,425,441,712,1132,1657 'node':663 'node.js':98 'nois':1531,1544 'non':687 'non-interact':686 'none':479,494 'npx':401,653,677,870,1389,1392,1412 'ns':1445,1453,1461,1470 'number':1710,1720 'offscreen':1276,1288 'one':114,825,836,1041,1049,1534,1580,1686,1709,1717,1736,1738 'opac':1333 'open':40,195,731,822,919,1039,1079,1177,1183,1443,1708 'opendirectori':1806 'opendirectory.dev':1812 'option':34,470 'output':1387,1415,1419,1481 'overflow':1405 'overlap':342,1343 'overlay':32 'pace':24 'pad':400,1130 'page':1734 'paramet':471,474 'path':496 'pattern':214,906,1298,1440 'paus':369,1257 'payoff':209 'peak':42,246,751,841,948,1061,1181,1369,1458,1556,1630 'per':778,789,800,838,1051,1363,1535,1584 'per-scen':777 'phrase':161,577,1045,1162,1196,1449 'pika':89 'pipelin':75 'pixel':973 'place':1355,1503 'placement':1520 'playback':382 'player':320,380 'playsinlin':424 'point':720 'posit':274,297,388,405,1133,1279,1286,1290 'premium':1758 'present':632,672,1212,1353 'preset':46,897,1018,1111 'prng':356,1262 'proceed':633 'produc':171 'product':104,108,1190,1501,1753 'profession':492,551,1762 'project':675 'prompt':1659 'provid':54,868,1072 'pseudo':361 'pseudo-random':360 'punch':1525 'punchi':460,587 'put':426 'qa':1151 'qualiti':1076 'question':829 'random':362 'rapid':854 'ratio':510,1437 're':596 'read':140,432,898,998 'readabl':1096 'readi':1780,1809 'reel':4,11,58,65,124,184,569,983,1421,1516,1771 'refer':1513 'references/cut-patterns.md':433,999 'references/tone-presets.md':435,899 'regist':372,1253 'registr':1358,1510 'render':1386,1410,1414 'repeat':842,1625 'requir':309,351,455,1009 'research':1788 'reserv':404 'reveal':116 'rhythm':213,229,905,914,1297,1438 'root':1246 'rule':139,1077 'runtim':95 'runway':87 'same-track':337,1337 'save':446 'scaffold':673 'scale':848,1466 'scene':392,779,820,824,837,1053,1062,1065,1126,1294,1538,1589 'scene-cont':391,1125,1293 'screen':165,465,582 'screenshot':486 'script':223,912,1305 'second':508,1724,1773 'section':37,118,193,206,543,726,813,1101,1174,1198,1441,1654,1729 'seed':355,1261 'select':895 'self':1150 'self-qa':1149 'sentenc':1713 'separ':413 'sequenc':232,917 'setup':1795 'sfx':1351,1379,1485,1496,1511,1597,1608,1619,1634,1642 'sharp':175,1681 'shimmer':1571 'short':986 'show':449,1661 'shown':713 'singl':135 'size':1083,1095 'sizzl':3,10,57,64,123,183,568,680,690,1250,1416,1420,1478,1482,1515,1770 'skeleton':1011 'skill':644,654,1003,1779,1784,1808 'skill-vid-sizzle-reel' 'skip':648 'slug':681,691,692,1251,1417,1479,1483 'social':1751 'sound':1518 'sourc':1477 'source-varnan-tech' 'specif':1718 'start':300,324,368,1056,1146,1226,1229,1256,1377,1539,1577,1590,1595,1606,1617,1631,1640 'stat':237,827,923,1042,1080,1193,1447 'state':266,301 'static':284 'step':452,635,638,708,993,1147,1156,1383 'stori':113,136 'string':499 'strongest':844,954,1462 'structur':38 'style':520,545,725,783,1433,1435,1699,1702,1802 'sub':1524 'summari':450 'surpris':1719 'sweep':1545 'sync':49,865 'synthes':1495 'system':1497 'taglin':538,859,969,1068,1202,1473,1716 'team':606 'tell':110 'tension':119,199 'text':31,1404 'thing':594 'three':1205 'tiktok':984 'time':257,307,646,721,1307,1591,1655,1688,1705 'timelin':80,367,1255,1357,1486,1509 'tip':1660 'tl':1252 'tl.play':385,1265 'tl.resume':1267 'token':902,1112 'tone':45,487,533,618,896,1017,1309,1316,1331,1427,1428,1746,1774 'top':220,910,1303 'topic-agent-skills' 'topic-gtm' 'topic-hermes-agent' 'topic-marketing-skills' 'topic-openclaw-skills' 'topic-skill-pack' 'topic-skills' 'topic-technical-seo' 'track':330,339,345,418,1235,1339,1348 'transient':1527 'transit':1370 'true':370,1023,1030,1035,1258 'tts':872 'two':1542 'two-band':1541 'type':685,1512,1517 'unavail':880 'url':540,627,861,1204,1211,1475,1739 'url/path':481 'use':343,354,395,602,617,791,802,1129 'user':153,466,715,1663 'vagu':1685 'valu':363,1651,1797 'var':1118 'vari':811 'variabl':1113 'verifi':660 'version':664,669 'vid':2,56,103,107,122,1500 'vid-product-launch':102,106,1499 'vid-sizzle-reel':1,55,121 'video':14,68,92,420,600,1679,1818 'vignett':1034 'visibl':281 'visual':1693 'vol':1601,1612,1623,1636,1646 'w':977,989 'whoosh':1366,1540,1635 'width':396 'window.__sfxtimeline':1352,1504,1579 'window.__timelines':374,1249 'without':200,312 'word':1360,1522,1582,1599,1610,1621 'word-hit':1359,1521,1581,1598,1609,1620 'work':611,1789 'write':145,155,225,468,597,907,1006,1667 'yet':273 'youtub':985 'zero':94,1794","prices":[{"id":"105a9578-990a-4afc-9e67-8744d7a38fba","listingId":"249bb057-387c-4876-bcda-60393df3b6b0","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"Varnan-Tech","category":"opendirectory","install_from":"skills.sh"},"createdAt":"2026-05-08T18:56:12.097Z"}],"sources":[{"listingId":"249bb057-387c-4876-bcda-60393df3b6b0","source":"github","sourceId":"Varnan-Tech/opendirectory/vid-sizzle-reel","sourceUrl":"https://github.com/Varnan-Tech/opendirectory/tree/main/skills/vid-sizzle-reel","isPrimary":false,"firstSeenAt":"2026-05-08T18:56:12.097Z","lastSeenAt":"2026-05-18T18:54:44.489Z"}],"details":{"listingId":"249bb057-387c-4876-bcda-60393df3b6b0","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"Varnan-Tech","slug":"vid-sizzle-reel","github":{"repo":"Varnan-Tech/opendirectory","stars":286,"topics":["agent-skills","gtm","hermes-agent","marketing-skills","openclaw-skills","skill-pack","skills","technical-seo"],"license":"mit","html_url":"https://github.com/Varnan-Tech/opendirectory","pushed_at":"2026-05-18T18:27:10Z","description":" AI Agent Skills built for Founders who hate Marketing","skill_md_sha":"54a85ab3a59371f6d82ad5d8c29465858ae0eeb5","skill_md_path":"skills/vid-sizzle-reel/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/Varnan-Tech/opendirectory/tree/main/skills/vid-sizzle-reel"},"layout":"multi","source":"github","category":"opendirectory","frontmatter":{"name":"vid-sizzle-reel","description":"Generates a high-energy sizzle reel or hype video (MP4) from brand assets and key messages. Fast-paced montage format with dynamic cuts, bold text overlays, and optional music. 4-section structure: Cold Open, Build, Peak, Land. 4 tone presets. Beat-sync cuts when music is provided. Built on HyperFrames (GSAP + headless Chromium + FFmpeg). Trigger when user says \"sizzle reel\", \"hype video\", \"highlight reel\", \"launch hype\", \"conference opener\", \"event promo video\", \"investor pitch video\", or \"brand video montage\".","compatibility":"[claude-code, gemini-cli, github-copilot]"},"skills_sh_url":"https://skills.sh/Varnan-Tech/opendirectory/vid-sizzle-reel"},"updatedAt":"2026-05-18T18:54:44.489Z"}}