Individual skill
html-reel
Turn a tweet, a video, a YouTube video or a landing page into a 9:16 reel (Instagram Reels, TikTok, Shorts) that says what the source says and looks like it, with every cut on a word. Read the source (its words, its media, its measured fonts and colours), pick a structure (a promo, a showcase, "found this", an explainer, before and after), write the script in the creator's voice from the source's own facts, make the voice with timestamps (their cloned ElevenLabs voice), then build the picture from HTML scenes drawn from one clock (window.__frame(t)) in the source's look, opening on its cover (the hook's best moment as the first frame), its demo video framed and cut to words, and assemble it in Fil's video editor over MCP. The creator is in it from the first draft as a placeholder in the camera layouts (a backlit studio silhouette) (full frame, a bubble, half the frame), swapped for their phone takes when they record, and everything retimed to their own words by word anchors, t = W(τ); a reel can also be faceless. Use when someone wants a reel, a short or a vertical video from a post, a thread, a launch, a landing page, a demo video or a YouTube video, "a reel like this one", or a talking-head promo cut to their own delivery.
agent-skills/media/html-reel/SKILL.md
Source commit 5ea1661a0e05d82b054553daaa6baf6d0233c33c
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- Yes
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Network or broad shell
- Last checked
- Nov 9, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 7,364
- Repository last updated
- Nov 8, 2026
- License
- MIT
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- engineering Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 27,660 bytesSKILL.mdcore · 27,660 bytesSKILL.mdcore · 27,660 bytesSKILL.mdcore · 27,660 bytesSKILL.mdcore · 27,660 bytesSKILL.mdcore · 27,660 bytesSKILL.mdcore · 27,660 bytesSKILL.mdcore · 27,660 bytesSKILL.mdcore · 27,660 bytesSKILL.mdcore · 27,660 bytesSKILL.mdcore · 27,660 bytesagents/openai.yamlasset · 482 bytesdemo/PROMPT.mddoc · 5,667 bytesdemo/index.htmlasset · 71,893 bytesdemo/preview.jpgasset · 112,211 bytesreferences/fil-editor.mddoc · 13,631 bytesreferences/formula.mddoc · 6,605 bytesreferences/judging.mddoc · 2,544 bytesreferences/retime.mddoc · 5,100 bytesreferences/source.mddoc · 9,972 bytesreferences/structures.mddoc · 6,827 bytesscripts/bubble.mjsruns · 7,796 bytesscripts/choreo-example.mjsruns · 2,993 bytesscripts/cursors/grab.pngasset · 3,930 bytesscripts/cursors/open.pngasset · 5,549 bytesscripts/decursor.pyruns · 21,477 bytesscripts/fil-words.pyruns · 4,261 bytesscripts/flash-crop.mjsruns · 4,077 bytesscripts/frame-video.mjsruns · 13,998 bytesscripts/join-takes.pyruns · 8,053 bytesscripts/named-times.pyruns · 1,840 bytesscripts/preview-reel.mjsruns · 18,195 bytesscripts/read-source.mjsruns · 24,591 bytesscripts/record-window.mjsruns · 10,627 bytesscripts/reel-clock.cssasset · 4,358 bytesscripts/reel-clock.jsruns · 15,844 bytesscripts/render-frames.mjsruns · 13,268 bytesscripts/split-flip.mjsruns · 4,648 bytesscripts/tighten-voice.pyruns · 3,378 bytesscripts/timemap.pyruns · 6,471 bytesscripts/verify-export.mjsruns · 6,713 bytesscripts/vo-words.pyruns · 6,364 bytes
Read excerpt
# HTML Reel
**HTML scenes · DreamCut · Fil's video editor over MCP · ffmpeg.** A scene engine without a framework is in `scripts/reel-clock.js`.
A reel is a voice with pictures cut to it. This skill makes one from a source someone already has, a tweet, a landing page, a YouTube video or a video file, so it says what that source says and looks like it: its words become the script, its media the picture, its fonts and colours the titles. Every picture follows the words: a title lands on its word, the demo cuts on the line that names it, a sound effect hits on the reveal. The creator is in it from the first draft, a backlit silhouette standing where their camera goes, so the reel is complete before they record a word; their takes replace it, and because the scenes are HTML drawn from one clock, everything is retimed to their real delivery without animating anything again.
**Boundary.** Use `html-demo` for a live app window on a web page (no video file). Use `browser-video-recording` for a polished screen recording on its own. Use `website-to-motion-design` to turn a page into a fixed-length motion piece with no voice. Use this skill when the deliverable is a vertical video cut to a voice, from a source.
**Provenance.** Extracted from Meng To's launch reel for HTML Demo (fil.design/skills/html-demo), October 2026: a 24.7 s reference reel's eight layouts studied, a scratch voice in his cloned ElevenLabs voice, four DreamCut recordings of the skill page, an HTML hook and tail rendered frame by frame, three drafts in Fil's video editor, two blind judges a round, then his two phone takes cut into one 33.7 s reel on his own word timings, and later one landscape take, its pauses cut, retimed the same way into 37.5 s. Then made general: each of three of his posts (MiniMax landing pages, a reverse-engineered smart home, the Anatomy skill) turned into a reel in its own look, first faceless, then again with a placeholder in the camera layouts (first an ink drawing of him, then a backlit studio silhouette), cinematic type and captions, previewed locally before Fil. The files and numbers below are from those runs.
## The mechanism
**Everything is placed on word times, and everything drawn is a pure function of t.** Each HTML scene sets every element from `t`, the seconds into the scene, through `window.__frame(t)`, at a fixed 540 × 960 stage rendered at 2× (1080 × 1920). A renderer calls it once a frame and screenshots; nothing reads a clock. So when the real take arrives, word anchors give a piecewise-linear map from the real seconds τ to the scratch seconds t, and the scene renders again at `t = W(τ)`: the same animation, on the new delivery, with no judder.