Skip to content
Back to skills

hype-reel

ASecurity

Turns any product (a URL, a local app, or a repo you can run) into an insane vertical promo reel built from its REAL screens — 3D device fly-ins with a camera that dives onto each feature, exploded UI layers, a corridor of screens the camera flies through, a giant word filled with the product that you dive into, orbiting feature chips, before/after glitch wipes, counters that burst into particles, AI-prompt typing that spits out the product — all Framer Motion, word-by-word captions, rendered...

  • 16 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
content-marketingpythongoshellbashreactnode

Works with

  • claude code
  • cursor
  • terminal
  • cli

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 15 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add OutOfAmine/hype-reel --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of hype-reel?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for hype-reel
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/outofamine-hype-reel/badge)](https://www.skillsdirectory.com/skills/outofamine-hype-reel)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: hype-reel
description: Turns any product (a URL, a local app, or a repo you can run) into an insane vertical promo reel built from its REAL screens — 3D device fly-ins with a camera that dives onto each feature, exploded UI layers, a corridor of screens the camera flies through, a giant word filled with the product that you dive into, orbiting feature chips, before/after glitch wipes, counters that burst into particles, AI-prompt typing that spits out the product — all Framer Motion, word-by-word captions, rendered frame-exact to a 1080x1920 MP4 and published as a shareable page. Use it whenever the user says /hype-reel, "make a reel/promo/trailer/ad for my product/site/app/SaaS", "launch video", "TikTok/Reel/Short for my startup", "make my landing page into a video", "product demo video", "hype video", or wants something viral to post about a product — even if they don't say "reel". Also physical products from a photo (shoes, bottles, bags, food, cosmetics): "promo video for my product", "video l product dyali", "I have a product photo, make it an ad" — the guided product-promo mode.
---

# hype-reel

Make a 20-40 second vertical reel that sells one product. It is built from the product's **real screens** (captured with headless Chrome), staged with aggressive motion, and plays as a storyboard (`reel.json`) in a bundled React + Framer Motion player. Every frame is a pure function of time, so the same page plays live in a browser and renders to an exact MP4.

**Two modes.** A product with screens (site, app, SaaS, CLI) → the storyboard flow below. A **physical product from a photo** (a shoe, a perfume, a bag…) → **product promo mode**: read `references/promo.md` and follow it step by step — it walks the user through everything with one question at a time, so a beginner gets a finished reel.

`SKILL_DIR` below is this skill's folder. First run in a new copy: `cd SKILL_DIR && npm install` (puppeteer-core + ffmpeg-static; uses the Chrome/Edge already on the machine, or `CHROME_PATH`).

## 1. Find the product

Use what the user gave you: a URL, a local folder (serve it: `python -m http.server 8790` in that folder, in the background), or a repo with a dev server. Ask only if there is nothing to go on. Read its landing page / README so you know what it actually does.

## 2. Capture real screens

```bash
node SKILL_DIR/scripts/capture.mjs <url> <dir>/shots --name home --rects "h1,.hero a,#pricing"
node SKILL_DIR/scripts/capture.mjs <url> <dir>/shots --mobile --name home-m
node SKILL_DIR/scripts/capture.mjs <url> <dir>/shots --mobile --name m1 --scroll 1000
node SKILL_DIR/scripts/capture.mjs <url> <dir>/shots --full --name page      # tall page; slice it into sections for wall/tunnel
node SKILL_DIR/scripts/capture.mjs <url> <dir>/shots --name app --click "#start,.next" --js "await new Promise(r=>setTimeout(r,800))"
```

`--rects` prints each selector's box as fractions of the screenshot: paste them into a `screen` scene's `focus`. Otherwise read the screenshot and estimate fractions yourself (x, y, w, h, all 0-1). Use `--dark` for dark-mode sites, `--click`/`--js` to walk an app into the state worth showing. Capture 6-10 images: one desktop hero, 2-3 mobile, and page sections for the wall/tunnel scenes. Look at every shot before using it; an empty canvas or a cookie wall sells nothing.

## 2b. Record real footage (what makes it feel real)

Screenshots alone look like a slideshow. Record the product actually working and cut to it with `clip` scenes. Show 9:16 footage `full: true` with a slow `zoom` so it reads on a phone, and zoom terminals onto the line that matters; never leave footage small in the middle of the frame:

```bash
node SKILL_DIR/scripts/record_site.mjs <url> <dir>/site.mp4 --scroll 2400          # the real page loading, then a smooth scroll (mobile 1080x1920)
KEYS='[[1.5,"npm run dev
"]]' node SKILL_DIR/scripts/record_term.mjs <dir>/run.cast 30 <project> -- <shell or cli> [args]
node SKILL_DIR/scripts/render_term.mjs <dir>/run.cast <dir>/run.mp4 --title "Terminal"   # real terminal emulator replay -> MP4
```

`record_term.mjs` types `KEYS` into a real PTY ([seconds, text] pairs) and logs every byte; `render_term.mjs` replays it in xterm.js frame by frame and prints the aspect to give the clip. Long runs: use the clip's `rate` (e.g. 8) to fast-forward. Recording Claude Code itself works too (`-- claude --allowedTools ...`).

## 3. Find the story

- **Promise** (≤ 6 words): the hook and the end title. Steal the product's own headline if it is good.
- **3 moments**: the features a viewer should *see* — these become the `focus` rects of the screen scene.
- **Proof**: one honest number that is on the site (stars, users, speed). Never invent numbers, features or logos.
- **Colours**: the brand accent from the site → `theme.accent` / `accent2` (accent2 is drawn behind dark text, so keep it light).

## 4. Storyboard

Read `references/scenes.md` for every scene and field. A shape that hits:

1. **Hook** (≤ 3 s): `slam` with the promise, or `mask` (a giant word filled with the product, dive through it), or `prompt` (type what the user wants → the product appears).
2. **The product working**: `screen` — device flies in, camera dives onto each focus rect, cursor clicks, labels pop.
3. **Depth**: `exploded` (UI splits into 3D layers) or `tunnel` (fly through a corridor of screens).
4. **Breadth**: `orbit` (feature chips around the logo) or `wall` (infinite 3D wall of screens).
5. **Proof**: `counter`, or `wipe` (before → after).
6. **Everywhere**: `fan` of phone screens.
7. **End**: `end` — title, CTA pill (`Comment *KEYWORD*` or the URL), handle.

6-9 scenes, never two of the same type in a row, alternate loud (slam/mask/counter) with screen-heavy scenes. Captions (`say`) are what the voice says, short and concrete; write them in the user's language.

**With the user's own voice** (the strongest version): write the script one line per idea, have them record one take, clean it (any voice enhancer; keep natural speed), then:

```bash
python SKILL_DIR/scripts/align_words.py voice.wav lines.txt words.json   # word times; lines.txt = what was said
```

**Sound**: `python SKILL_DIR/scripts/sfx.py reel.json -o voice_sfx.wav` synthesises whooshes on cuts, impacts on slam words, pops on labels, shutters on screenshot walls (plus any scene `sfx`, like keyboard `typing` over a terminal clip) and mixes them under the voice; point `audio` at the result. Keep them under the voice (default peak -16 dBFS).

Put `audio` and `words` in the storyboard and cut scenes on the words: each scene starts ~0.06 s before the word that introduces it, slams get `times` per word. If the script says "look at this video", leave a pause in the voice there (insert room tone) so the footage plays long enough to be seen.

**Look**: `theme.mode: "light"` + `display: "Inter Tight"` + `accentFont: "Instrument Serif"` gives a clean editorial look (paper, ink, one accent colour, serif italic accent words); dark mode with `Anton` + `Montserrat` captions is the loud one. Pick one per reel and keep one accent colour. Transitions default to a zoom/whip/glitch/flash/drop cycle; set `in` to override.

Keep the reel's files outside the user's repo (scratchpad or a reels folder).

## 5. Build, check, render

```bash
python SKILL_DIR/scripts/build.py <dir>/reel.json                     # -> reel.html (fix every ERROR)
node SKILL_DIR/scripts/render.mjs <dir>/reel.html --stills 1,4.5,9    # PNGs to eyeball
node SKILL_DIR/scripts/render.mjs <dir>/reel.html <dir>/reel.mp4      # 1080x1920, 30 fps, with audio if set
```

Always look at stills of every scene before the final render: text clipped at the edges, a focus rect on the wrong element, an empty screenshot. Rendering is ~3x real time.

## 6. Deliver

- Artifact tool available: rebuild with `--artifact` and publish the HTML (icon `play`). Give the link.
- Always hand over the MP4 path, plus a one-line caption + 3-5 hashtags for posting.

## Iterating

Edit the JSON and rebuild; never hand-edit the built HTML. "More hype" = shorter `dur`s, more `slam`/`mask`, `beats` (times of camera punches). "Calmer" = fewer scenes, `in: "cut"`.

Files in this skill

  • SKILL.md8 KB
  • assets/player.html62.3 KB
  • assets/promo_player.html25 KB
  • assets/term.html2.3 KB
  • package-lock.json53 KB
  • package.json744 B
  • references/promo.md6.8 KB
  • references/scenes.md4.8 KB
  • scripts/align_words.py2.3 KB
  • scripts/build.py8.3 KB
  • scripts/capture.mjs4.1 KB
  • scripts/chrome.mjs1.5 KB
  • scripts/promo_assets.py4.2 KB
  • scripts/promo_build.py9.7 KB
  • scripts/promo_voice.py2.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.