{"generatedAt":"2026-10-28T05:58:35.139Z","streams":[{"id":"originals","name":"varg Originals","tagline":"Skills varg builds itself, from the official varg-ai skill to the ad formats inside varg Studio.","description":"Skills varg builds and maintains itself. One is published from vargHQ/skills today (varg-ai); the rest are production pipelines proven on client work that still live in the meta-repo, the claude.ai org sync, the SDK repo or an open pull request, plus the ad formats and hook styles hard-coded in varg Studio. The stream's job is to move all of them into vargHQ/skills under one standard, so every card says exactly where a skill stands: live, beta or draft.","owner":"varg team","ingestion":"manual","cadence":"On every merged PR to vargHQ/skills","sources":[{"label":"vargHQ/skills (published skills)","url":"https://github.com/vargHQ/skills","note":"Live entries. Claude Code plugin marketplace (.claude-plugin/marketplace.json + plugin.json), ClawHub auto-publish (.github/workflows/publish-clawhub.yml), npx skills. Today: varg-ai."},{"label":"vargHQ/skills open pull requests","url":"https://github.com/vargHQ/skills/pulls","note":"Skills in review are listed as beta until they merge (varg-previz, PR #24)."},{"label":"Meta-repo agent skills (.agents/skills, private)","url":"https://github.com/vargHQ/vargHQ/tree/master/.agents/skills","note":"imessage-video, varg-consistent-characters, varg-podcast-video, varg-templates-section. Skip the non-media ones (stripe-*, connect-recommend, deploy-network-proxy, frontend-design)."},{"label":"claude.ai org skill sync","url":"https://claude.ai","note":"Org skills synced to ~/.claude/skills/synced/<org>/ (listed in its manifest.json): varg-music-video, varg-character-keynote."},{"label":"vargHQ/sdk agent skills","url":"https://github.com/vargHQ/sdk/tree/main/.claude/skills","note":"ffmpeg-mixing is listed. varg-video-generation is the legacy BYOK skill superseded by varg-ai and is not."},{"label":"varg Studio formats and hooks (private)","url":"https://github.com/vargHQ/studio-app/blob/varg/main/plugins/varg-studio/src/shared/formats.ts","note":"9 ad formats, 12 hook styles, HOUSE_MODELS and per-format recipes; the hook copy bank is in src/server/production/plan-writer/copy.ts. Listed as drafts while they are extracted into skills."},{"label":"varg model catalog","url":"https://varg.ai/models/llms.txt","note":"Every id in an entry's models field must appear here."},{"label":"ClawHub registry","url":"https://clawhub.ai/skills/varg-ai","note":"Confirms what publish-clawhub.yml pushed; the registry slug is the skill folder name."}],"qualityGate":["Frontmatter has `name` (same as the folder) and a third-person `description` (≤ 1,024 characters) that says what the skill makes, with \"Use when …\" and \"NOT for …\" naming the neighbouring skills","SKILL.md is ≤ 500 lines, with the cost and safety gates (estimate_cost first, explicit go-ahead before any spend) at the top of the body and details in references/ one level deep","Prices in credits only, never dollars; exact prices come from estimate_cost at run time","`metadata` carries flat varg.* keys: varg.cost.typical, varg.cost.estimate_tool, varg.runtime.typical, varg.models (catalog ids from varg.ai/models/llms.txt) and varg.outputs","Every media reference is declared by role in assets/refs.manifest.json (url, sha256, bytes, license, role, controls / must_not_touch); no film stills, MP3 or MP4 in the bundle","No keys in files or commands: the varg MCP OAuth connection, or $VARG_API_KEY loaded from ~/.varg/credentials","evals/ holds trigger near-misses and process cases on mocked varg tools; `claude plugin eval` shows the skill beating the no-skill baseline without spending credits","CI validator passes (`claude plugin validate .` in vargHQ/skills until a validate workflow lands there)","Published from vargHQ/skills: listed in .claude-plugin/plugin.json (Claude Code marketplace), pushed to ClawHub by publish-clawhub.yml, installable with `npx skills add vargHQ/skills`"],"scripts":[{"cmd":"bun run validate originals","description":"Validate this stream against src/data/types.ts (run `bun run validate` for all streams)"},{"cmd":"gh api \"repos/vargHQ/skills/git/trees/main?recursive=1\" --jq '.tree[].path | select(endswith(\"/SKILL.md\"))'","description":"List the skills published in vargHQ/skills (candidates for status live)"},{"cmd":"gh pr list -R vargHQ/skills --state open","description":"Skills in review (listed as beta until merged)"},{"cmd":"gh run list -R vargHQ/skills --workflow publish-clawhub.yml --limit 3","description":"Check the latest ClawHub publish runs"},{"cmd":"curl -s https://varg.ai/models/llms.txt","description":"Current varg model ids for the models field"}],"lastSync":"2026-10-26T23:49:24Z"},{"id":"vendors","name":"Vendor Skills","tagline":"Official skills from the companies that make the models and tools.","description":"Skills that model and tool companies publish in their own GitHub repos: HeyGen HyperFrames, Remotion, Higgsfield, fal, Replicate, ElevenLabs, Google Gemini, Anthropic, Runway, Black Forest Labs, Krea, LottieFiles, PixiJS, Motion, Rive, Melies, inference.sh and GSAP. A daily sync reads every SKILL.md in the repos listed in sources.json and refreshes the upstream facts (files, version, last change, GitHub stars, skills.sh installs); a weekly human review curates new arrivals and re-checks skills that changed upstream. Only licensed media skills (image, video, audio, motion and rendering) are listed, and they bill through the vendor's own account, not varg credits.","owner":"varg catalog team","ingestion":"automated","cadence":"Daily sync + weekly human review","sources":[{"label":"HeyGen · heygen-com/hyperframes","url":"https://github.com/heygen-com/hyperframes","note":"7 published skills + 7 registry blocks; repo-internal skills (metadata.internal) excluded"},{"label":"HeyGen · heygen-com/hyperframes-community-skills","url":"https://github.com/heygen-com/hyperframes-community-skills","note":"8 community-tier skills written or submitted by HeyGen staff; duo and x-posting-license in beta pending a rights check"},{"label":"Remotion · remotion-dev/skills","url":"https://github.com/remotion-dev/skills","note":"12 skills, generated from the Remotion monorepo"},{"label":"Higgsfield · higgsfield-ai/skills","url":"https://github.com/higgsfield-ai/skills","note":"7 skills; higgsfield-websites excluded (not media)"},{"label":"fal · fal-ai-community/skills","url":"https://github.com/fal-ai-community/skills","note":"15 skills; fal-redesign and fal-regenerate-3d excluded (website builders)"},{"label":"Replicate · replicate/skills","url":"https://github.com/replicate/skills","note":"5 skills; Cog packaging skills excluded"},{"label":"ElevenLabs · elevenlabs/skills","url":"https://github.com/elevenlabs/skills","note":"7 audio skills; voice-agent runtime, setup and onboarding skills excluded"},{"label":"Google · google-gemini/gemini-skills","url":"https://github.com/google-gemini/gemini-skills","note":"gemini-omni-flash-api and gemini-api-dev only"},{"label":"Anthropic · anthropics/skills","url":"https://github.com/anthropics/skills","note":"Creative skills only: algorithmic-art, canvas-design, slack-gif-creator, theme-factory, brand-guidelines"},{"label":"PixiJS · pixijs/pixijs-skills","url":"https://github.com/pixijs/pixijs-skills","note":"Router plus 7 visual skills (filters, shaders, blend modes, text, particles, meshes, GIFs)"},{"label":"Motion · motiondivision/ai-kit","url":"https://github.com/motiondivision/ai-kit","note":"The Motion AI Kit skill"},{"label":"Melies · melies-co/melies-cli","url":"https://github.com/melies-co/melies-cli","note":"SKILL.md shipped with the melies CLI"},{"label":"inference.sh · inference-sh/skills","url":"https://github.com/inference-sh/skills","note":"52 media skills: all image, video and audio tools plus selected photo, video, design, content, prompting and social guides"},{"label":"Runway · runwayml/skills","url":"https://github.com/runwayml/skills","note":"5 Runway Dev integration skills; setup and Characters skills excluded"},{"label":"Runway · runwayml/runway-mcp-plugin","url":"https://github.com/runwayml/runway-mcp-plugin","note":"runway-media and runway-workflows (hosted MCP)"},{"label":"Runway · runwayml/runway-studio-skills","url":"https://github.com/runwayml/runway-studio-skills","note":"Single skill with Python scripts for the Runway API"},{"label":"Black Forest Labs · black-forest-labs/skills","url":"https://github.com/black-forest-labs/skills","note":"10 FLUX image and FLUX 3 video skills"},{"label":"LottieFiles · LottieFiles/motion-design-skill","url":"https://github.com/LottieFiles/motion-design-skill"},{"label":"LottieFiles · LottieFiles/dotlottie-web","url":"https://github.com/LottieFiles/dotlottie-web","note":"Root SKILL.md in the dotLottie web runtime repo"},{"label":"LottieFiles · LottieFiles/creator-agent-plugin","url":"https://github.com/LottieFiles/creator-agent-plugin","note":"Beta: the Creator MCP endpoint is not public yet"},{"label":"LottieFiles · LottieFiles/viscript","url":"https://github.com/LottieFiles/viscript","note":"Beta: vis-skills from an experimental project"},{"label":"Rive · rive-app/skills","url":"https://github.com/rive-app/skills"},{"label":"Krea · krea-ai/skills","url":"https://github.com/krea-ai/skills","note":"4 skills run through Krea's MCP tools"},{"label":"GSAP · greensock/gsap-skills","url":"https://github.com/greensock/gsap-skills","note":"gsap-core, gsap-timeline and gsap-plugins; scroll, framework and helper skills excluded"},{"label":"skills.sh","url":"https://skills.sh","note":"Install counts (shown rounded) and Gen / Socket / Snyk security verdicts per skill"}],"qualityGate":["Publisher is the vendor's own GitHub org, confirmed by a GitHub-verified domain or a link from the vendor's site, docs or npm package","A license is declared (SKILL.md frontmatter, LICENSE file, package.json or README); repos with no license are not added","SKILL.md frontmatter parses, with a name and a description that says when to use the skill","It is a media skill: it makes, edits, renders or directs images, video, audio or motion","Bundled scripts only call the vendor's hosts, GitHub or documented package registries; any installer piped to a shell comes from the vendor's own domain","skills.sh security audits (Gen Agent Trust Hub, Socket, Snyk) are read; every Fail is reviewed and logged in REPLENISH.md before the entry goes live","Install commands are copied from the vendor's README or docs or from skills.sh, adding only documented flags such as -a <agent>","Curated summary (120 characters or less), a 2–4 sentence description, category, tags and preview are set","cost.note names who bills the user; vendor skills never carry varg credit estimates"],"scripts":[{"cmd":"bun run sync:vendors --dry-run","description":"Fetch every source repo and print the diff (added, changed, gone, stats drift, live entries to review) without writing"},{"cmd":"bun run sync:vendors","description":"Refresh upstream fields in skills.json, add new skills as beta, move vanished ones to draft, stamp lastSync"},{"cmd":"bun run sync:vendors --repo owner/name","description":"Sync a single repo (repeatable), e.g. right after adding it to sources.json"},{"cmd":"bun run validate","description":"Validate every stream's files against src/data/types.ts"}],"lastSync":"2026-10-27T00:40:14Z"},{"id":"community","name":"Community","tagline":"Photo, video, audio and motion skills by independent creators, read line by line before they go live.","description":"Skills published by independent creators on GitHub, skills.sh and ClawHub, not by the companies whose models or tools they drive (those live in Vendors). A weekly script surfaces candidates by stars, installs, recency, license and SKILL.md quality; a person triages them, reads every script, hook and installer for supply-chain red flags, and writes the entry. Where independent evidence exists (blind A/B tests against a no-skill control, end-to-end render tests), the entry cites it.","owner":"varg catalog team — community triage rotation","ingestion":"hybrid","cadence":"Weekly discovery run + human triage","sources":[{"label":"GitHub repository and code search","url":"https://github.com/search?q=filename%3ASKILL.md+video&type=code","note":"gh api search/repositories (media keywords, sorted by stars) and search/code (filename:SKILL.md + keyword)"},{"label":"skills.sh search API","url":"https://skills.sh/api/search?q=video&limit=50","note":"Public JSON behind `npx skills find`; all-time installs per skill"},{"label":"ClawHub search API","url":"https://clawhub.ai/api/v1/search?q=video&nonSuspiciousOnly=true","note":"Public read endpoint (openclaw/clawhub docs/api.md); returns installs, downloads and scan flags"},{"label":"Awesome Short Drama Skills","url":"https://github.com/UnderleveledBuilder/awesome-short-drama-skills","note":"Hand-checked short-drama list with blind A/B evals against a no-skill control"},{"label":"Awesome Claude Video Skills (Agent Skills Hub)","url":"https://github.com/zhuyansen/awesome-claude-video-skills","note":"353 video repos graded from their READMEs; 16 rendered end to end on one brief"},{"label":"LinklyAI best-skills","url":"https://github.com/LinklyAI/best-skills","note":"Daily cross-registry ranking (skills.sh, ClawHub, Tencent SkillHub, GitHub)"},{"label":"X launch posts","url":"https://x.com/search?q=%22claude%20skill%22%20video&f=live","note":"Creator launches and demos; searched through the X MCP"}],"qualityGate":["Independent publisher: not a company's official skill for its own model, API or tool (those go to Vendors)","Media work: makes or edits images, video, audio, motion or 3D, or directly prepares them (scripts, storyboards, prompts)","Current: a commit in the last 180 days, and a SKILL.md with name and description frontmatter","Signal: at least 20 GitHub stars, 1K installs, a notable author, or independent eval or press evidence","Security read of every script, hook and installer: no pipe-to-shell from unofficial hosts, no obfuscation, no credential reads, no undeclared network hosts, no npm/pip install hooks, no opaque binaries in the skill folder","License recorded (SPDX id, or \"unknown\" and the entry stays beta); noncommercial, copyleft or brand-asset terms spelled out in `legal`","Install command copied from the repo README or skills.sh, never composed by hand","No likeness abuse, sexual content, watermark or provenance stripping, or reverse-engineered private APIs"],"scripts":[{"cmd":"bun run discover:community","description":"GitHub repo + code search, skills.sh and ClawHub search → filters, scores and writes data/streams/community/candidates.json (flags: --limit N, --since YYYY-MM-DD, --quick, --dry-run)"},{"cmd":"bun run validate community","description":"Checks skills.json and stream.json against src/data/types.ts and the cross-stream slug and id rules"}],"lastSync":"2026-10-27T00:41:05Z"},{"id":"trends","name":"Trend Radar","tagline":"Viral photo and video formats agents should be able to make, logged as wanted skills until someone builds them.","description":"The radar watches X, TikTok, Douyin, consumer AI effect galleries and the founder's inspiration board for formats that are spreading now, and records each one as a wanted entry with its source post, engagement, a pipeline an agent could follow and a build wave. Wanted entries have no install: they tell builders what to make next and tell agents what users will ask for. When a format ships as a skill (in Originals, or as a claimed Community skill), its wanted entry is deleted and the source post is credited in the new skill.","owner":"varg founder (curator of the inspiration board): Monday triage; any teammate can fast-track a breakout","ingestion":"hybrid","cadence":"Weekly radar run (Mondays) + same-day fast track for breakout trends","sources":[{"label":"X search (radar queries)","url":"https://x.com/search?q=%22claude%20skill%22%20video&f=live","note":"Run through the X MCP with since: and min_faves: operators; the query set lives in scripts/trend-radar.prompt.md"},{"label":"varg inspiration board (Notion)","url":"https://varga.notion.site/add-3979b7e6f38680059a4eec16551e523f","note":"The founder's board of saved formats; every item becomes a wanted entry or gets a written reason for skipping it"},{"label":"TikTok Creative Center","url":"https://ads.tiktok.com/business/creativecenter/","note":"Trending hashtags, songs and top ads; confirm the format on X or in a fetched post before adding"},{"label":"Douyin hot list","url":"https://www.douyin.com/hot","note":"Chinese-first formats often reach X a week later (the lyric-screen clip on the board traveled that way)"},{"label":"Higgsfield apps and presets","url":"https://higgsfield.ai/blog/introducing-higgsfield-apps","note":"An effects factory that ships about ten presets a day and culls by engagement; what survives a week is a signal"},{"label":"Kling AI video effects","url":"https://kling.ai/topics/ai-video-effects","note":"Rotating one-photo effects; the API lists 228 effect templates"},{"label":"PixVerse effect templates","url":"https://play.google.com/store/apps/details?id=com.pixverseai.pixverse","note":"Seasonal and IP-licensed effects; rewrite IP-bound ones generically before adding"},{"label":"Pika effects","url":"https://pika.art","note":"Physics-gag effects (squish, melt, inflate)"},{"label":"Opus Pro: viral AI video styles of 2026","url":"https://www.opus.pro/blog/viral-ai-video-styles-2026","note":"An editorial roundup (updated 2026-10-07); use it as a checklist of families, never as evidence"}],"qualityGate":["trend.sourceUrl is a post you fetched (X MCP, browser or yt-dlp) or one documented in the research notes; no aggregator links","Engagement recorded as of a date: views, likes and bookmarks where the platform shows them","Passes at least one demand signal from REPLENISH.md (reach, save ratio, how-was-this-made replies, paid tools)","The pipeline names varg catalog model ids and the code libraries an agent would use; the format is reproducible by an agent","Not already covered by a live, beta or draft skill in any stream","Name, summary and preview carry no third-party brands, characters, studios or living artists (a platform UI that is the format's common name may appear in the name); legal holds the rights notes","cost is omitted or derived from the varg catalog (list_models), always in credits","wave set by the rules in REPLENISH.md; featured only for wave 1, at most four in the stream","bun run validate trends passes"],"scripts":[{"cmd":"claude \"$(cat scripts/trend-radar.prompt.md)\"","description":"Weekly radar run in Claude Code with the X connector: finds candidates, drafts wanted entries into data/streams/trends/skills.json and prints a report for review"},{"cmd":"bun run validate trends","description":"Checks the trend pool against the schema in src/data/types.ts"}],"lastSync":"2026-10-26T23:54:08Z"},{"id":"craft","name":"varg Craft","tagline":"Cinematic reference libraries turned into original technique cards, craft skills and ref packs — pointers, not payloads.","description":"The craft stream turns what cinematographers name — shot sizes, angles, lenses, camera moves, light, color, cuts and composition — into original technique cards that compile into each video model's documented syntax. Reference sites (shot.cafe, film-grab, eyecannndy, Melies, aicameramovements, GrokFilm) inform the vocabulary and the taxonomy, but no card text, film still or clip is copied; humans get deep links instead. Finishing assets come only from clean licenses: varg-baked LUTs and Apache-2.0 Paper Shaders presets.","owner":"varg craft editor (the founder until an editor is assigned)","ingestion":"manual","cadence":"Monthly card review + on every model change in the varg catalog","sources":[{"label":"shot.cafe","url":"https://shot.cafe","note":"Shot-type and lighting tag vocabulary; human deep links to /tag/<tag> only. Personal, non-commercial terms; robots.txt disallows ClaudeBot."},{"label":"film-grab","url":"https://film-grab.com","note":"Composition, color, camera and film-stock notes; human search links (?s=<query>) only. Fair-dealing gallery; the operator rejects AI and bots."},{"label":"eyecannndy","url":"https://eyecannndy.com","note":"Technique names and /technique/<slug> pages as human links; clips are excerpts of others' work; Cloudflare blocks automation."},{"label":"Melies cinematic techniques","url":"https://melies.co/cinematic-techniques","note":"Card shape only (definition, narrative use, wrong substitute, template) — never its text or stills; terms bar automation; EU database right applies."},{"label":"aicameramovements","url":"https://aicameramovements.com","note":"Camera-clause pattern (movement, speed, framing, ending) — not its wording; owner and license unknown, unreachable on 2026-10-26."},{"label":"GrokFilm","url":"https://grokfilm.app","note":"Taxonomy only (8 disciplines, difficulty, mood); its prompts are one boilerplate template and its text has no license."},{"label":"Paper Shaders","url":"https://shaders.paper.design","note":"Apache-2.0 since 2026-06-27; presets ship as JSON refs; pin exact 0.0.x versions."},{"label":"varg model catalog","url":"https://varg.ai/models/llms.txt","note":"Which models and routes are live; its version drives the freshness check."},{"label":"Google video prompt guide (Veo, Gemini Omni)","url":"https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/video/video-gen-prompt-guide","note":"Camera vocabulary and negative-prompt rules; updated 2026-10-22."},{"label":"Kling camera control guide","url":"https://kling.ai/blog/kling-ai-camera-control-video-guide","note":"Kling 3.0 move patterns and one-move-per-shot rule."},{"label":"Seedance 2.5 prompt guide (Volcano Engine)","url":"https://docs.volcengine.com/docs/ark/seedance-2-5-prompt-guide?lang=zh","note":"Chinese camera terms, shot labels, timestamps and transitions."},{"label":"MiniMax Hailuo camera commands","url":"https://platform.minimax.io/docs/api-reference/video-generation-t2v","note":"The 15 bracket commands and how they combine."},{"label":"Luma camera movement prompts","url":"https://lumalabs.ai/news/ai-camera-movement-prompts","note":"Camera-first order and speed adverbs; concept keys via the API."},{"label":"Runway AI camera prompts","url":"https://runway.com/resources/ai-camera-prompts","note":"Element order for Gen-4.5, positive phrasing, lens terms."}],"qualityGate":["Original wording: definition, use, misuse and clause are varg's own — no sentence from Melies, aicameramovements, GrokFilm, eyecannndy or StudioBinder","One move per camera clause, stating direction, speed, what the camera moves relative to, and the frame it ends on","Adapters follow each model's documented syntax: camera first for Veo, Luma and Runway; subject first for Kling and Seedance; Hailuo commands only from the official 15, at most 3 per bracket","Positive-only phrasing for Veo, Luma and Runway adapters; no 'cinematic' or '4k' filler for Luma and Runway","Aliases carry the vocabulary other tools use (Higgsfield presets, Hailuo brackets, Luma concepts, Seedance terms) and never collide with another card's aliases","Links are human deep links built from verified URL patterns; no image is embedded, fetched or hotlinked","Every ref records a license: original, link-only, user-supplied or an SPDX id","No names of living directors, cinematographers, actors or characters, and no film titles in cards","bun run validate passes: schema, unique ids and slugs, every technique id referenced in skills.json exists"],"scripts":[{"cmd":"bun run validate","description":"Checks every stream file against src/data/types.ts: required fields, unique ids and slugs, and that each technique id referenced in skills.json exists in techniques.json."}],"lastSync":"2026-10-27T00:11:31Z"}],"entries":[{"id":"vargHQ/varg-ai","slug":"varg-ai","name":"varg AI","skillName":"varg-ai","type":"skill","status":"live","stream":"originals","category":"tooling","tags":["video","image","audio","talking-head","captions","render","tsx","official"],"summary":"The official varg skill: videos, images, speech and music through one API key, rendered in the cloud or locally.","description":"The flagship varg skill and the only one published in vargHQ/skills so far. It finds an existing varg API key (environment, `~/.varg/credentials`, `.env`) without printing it, checks the credit balance, then picks **cloud render** (`POST /v2/render`, curl only) or **local render** (`bunx vargai render`, bun + ffmpeg, free `--preview`). Media is made with function calls (`Image()`, `Video()`, `Speech()`) and composed in JSX (`<Render>`, `<Clip>`, `<Music>`, `<Captions>`); ten reference files cover models, components, recipes, prompting, the REST API, BYOK and common errors. The Claude Code plugin also adds the hosted varg MCP server (OAuth sign-in), and the skill checks GitHub for a newer version once per session.","useWhen":["Creating videos, animations, talking characters, slideshows, product showcases or social content","Generating a single image, video clip, voice line or music track","Requests like \"create a video\", \"make a slideshow\", \"talking head\", \"lip sync\", \"captions\" or \"render video\""],"notFor":["Bring-your-own provider keys through the API: v2 has no BYOK (only local render with direct provider modules)"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-ai","repo":"vargHQ/skills","path":"varg-ai","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-ai -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-ai -a cursor -y","openclaw":"npx clawhub@latest install varg-ai"},"agents":["claude-code","codex","cursor","openclaw"],"models":["nano_banana_pro","grok_imagine_image","ideogram_v4_5","kling_v3","kling_v2_5","eleven_v3","music_v1","veed_fabric_1_0","sync_v2_pro"],"requires":["varg API key","curl (cloud render)","bun + ffmpeg (local render)"],"cost":{"typicalCredits":"~200–500 credits / run (estimate)","note":"The skill's figure for a typical 3-clip video. Single images start at a few credits and local `--preview` renders are free; exact quote via `POST /v2/estimate`."},"files":["SKILL.md","references/byok.md","references/cloud-render.md","references/common-errors.md","references/components.md","references/gateway-api.md","references/local-render.md","references/models.md","references/prompting.md","references/recipes.md","references/templates.md","scripts/setup.sh","scripts/setup.ts"],"stats":{"stars":21,"source":"GitHub","asOf":"2026-10-26"},"version":"2.0.5","updatedAt":"2026-10-20","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":265,"text":"bunx vargai render video.tsx --preview"},"featured":true,"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/7df061df8dcb/varg-ai.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRqgAAABXRUJQVlA4IJwAAABQBQCdASogABIAPs1Yo0unpaMhsBgMAPAZiWgAnTLUiDs+hbh5XranvzDW2gF9Yr0xTHAA/sAkQIJxVK5CZh0e45fCFpPt05F3Yj1Kfw9OnETj3MXPDmdHOfTZqsme1GPmvJENr2HQqGc3erU9vuUsAgzuuHmqCazq2FpuDcJI4Fk+ld2LmN5ipHN7+Fc5/BzqYiZScnEH167MgAA=","source":"https://su.varg.ai/renders/1775274181981_idqe0r1a.mp4","page":"https://varg.ai","credit":"varg","rights":"varg-owned","note":"varg's 'Claymation UGC Ad – Super Focus', the most-used template in varg's gallery, rendered from a varg TSX file (vargHQ/templates claymation-ugc.tsx): generated claymation scenes, a voiceover, music and word captions composed in one render. Cut 5.5-13.5 s: coffee at the desk, the 'Super Focus' bottle in hand, papers flying.","bytes":175921,"addedAt":"2026-10-27"}},{"id":"vargHQ/video-skills","slug":"video-skills","name":"Video Skills Finder","skillName":"video-skills","type":"skill","status":"live","stream":"originals","category":"research","tags":["finder","search","catalog","video","official"],"summary":"Finds the right skill for any AI video, image, voice or music job here and shows you the visual options.","description":"A small skill that turns any agent into a guide to this catalog. Given a request in any language (\"a UGC ad\", \"клип на песню\", \"captions like TikTok\"), it searches `skills.varg.ai/api/search`, reads the matching use-case page, and asks the person 2–4 questions with example links (look, format, voice, length) before anything is generated. Then it installs the chosen skill and runs the generation on varg. A built-in table covers the common requests when the catalog is unreachable.","useWhen":["Any request to make, edit, caption, voice, dub or animate a video","Choosing between skills for a video, image or audio job","Before writing a media pipeline from scratch"],"notFor":["Non-media coding tasks"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/video-skills","repo":"vargHQ/skills","path":"video-skills","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill video-skills -a codex -y","cursor":"npx skills add vargHQ/skills --skill video-skills -a cursor -y","gemini-cli":"npx skills add vargHQ/skills --skill video-skills -a gemini-cli -y","openclaw":"npx clawhub@latest install video-skills"},"agents":["claude-code","codex","cursor","openclaw"],"models":[],"requires":["Network access to skills.varg.ai"],"cost":{"note":"Free — the skill only searches; generation is quoted in credits"},"files":["SKILL.md"],"version":"2.0.5","updatedAt":"2026-10-20","addedAt":"2026-10-27","preview":{"kind":"terminal","hue":18,"text":"video-skills"},"featured":true,"adds":"tool"},{"id":"vargHQ/iphone-duo-fold","slug":"iphone-duo-fold","name":"iPhone Duo Fold","skillName":"iphone-duo-fold","type":"skill","status":"live","stream":"originals","adds":"visual","category":"native-ui","tags":["iphone-duo","foldable","device-mockup","app-promo","3d","three-js","progressive-blur","transparent","code2video","product","free","official"],"summary":"Your screens on Apple's foldable iPhone Duo, unfolding in 3D with its progressive blur. Local, free.","description":"Apple's foldable iPhone in 3D, folding open or shut with your screens: the cover shows while it's folded, the inner screen when it opens, and the moving half blurs and darkens toward its edge exactly like the launch film. A screen can be an image, a screen recording, an HTML page the agent writes for you, or a URL, and one picture can span both screens so the folded view continues into the open one. Four presets (`unfold`, `fold`, `loop`, `reveal`) or your own keyframes for the hinge and the camera, Star White or Night Sky, a caption that sits with the phone at any aspect, MP4 at any size or transparent ProRes 4444 / WebM for an edit. Frames are rendered one by one in headless Chrome and piped into ffmpeg, so the same flags always give the same video; a 6 s 1080p clip takes about 20 s. The fold deformation and blur shaders are ported from [jadon7/iphone-duo](https://github.com/jadon7/iphone-duo) (MIT); Apple's AR model is fetched from apple.com on the first run and never bundled.","useWhen":["An iPhone Duo or foldable iPhone mockup video, an app promo on a folding phone","An unfold reveal, a fold animation or a fold-unfold loop with your own screens","A transparent phone clip to drop into an edit","Requests like \"айфон дуо\", \"складной айфон\", \"анимация складывания\", \"покажи приложение на iPhone Duo\""],"notFor":["Flat phone mockups or screen swipes (use stamp-carousel or apple-notes-video)","Generated live-action footage of a phone in someone's hands (use varg-ai)"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/code2video-templates/tree/master/iphone-duo-fold","repo":"vargHQ/code2video-templates","path":"iphone-duo-fold","license":"MIT"},"install":{"claude-code":"git clone --depth 1 https://github.com/vargHQ/code2video-templates ~/code2video-templates && ln -s ~/code2video-templates/iphone-duo-fold ~/.claude/skills/iphone-duo-fold"},"agents":["claude-code","codex","cursor"],"requires":["bun","ffmpeg","Google Chrome or Chromium"],"cost":{"note":"Free — renders locally, no varg API key"},"runtime":"~20 s per 6 s clip at 1080p","files":["SKILL.md","README.md","render.ts","settings.json","page/duo.js","page/duo-model.js","page/usd-crate-listops.js","page/screens.js","examples/aurora.json","examples/aurora.html","examples/trips-inner.html","examples/trips-cover.html","make.command","THIRD_PARTY_NOTICES.md"],"version":"1.0.0","updatedAt":"2026-10-27","addedAt":"2026-10-27","preview":{"kind":"cards","hue":160,"text":"unfold"},"featured":true,"legal":"Fetches Apple's public AR model of the iPhone Duo on first run and never redistributes it; iPhone and Apple are Apple trademarks. Screens must be the user's own; the `reveal` preset shows the Apple logo on the back.","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b1adcaedb8e5/iphone-duo-fold.mp4","w":720,"h":404,"duration":7,"blur":"data:image/webp;base64,UklGRnAAAABXRUJQVlA4IGQAAABQBACdASogABIAPtFYoEuoJSMhsBgMAQAaCWUAwNw0b7f8qULuT/goG6EAAP73eY352+Bfw08ew3Gntrvh44u6Q08GF2X6NZ8WuMnEOi4yB58smZh5CeipKyUU77THSegS7wAA","source":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_d308f2e74e3b.mp4","page":"https://github.com/vargHQ/code2video-templates/tree/master/iphone-duo-fold","credit":"varg","rights":"varg-owned","note":"Rendered with the template itself: bun render.ts --config examples/aurora.json (a generated panorama across both screens; folded, the cover shows the cabin and the clock, unfolding reveals the lake). 1920x1080, 7 s.","bytes":71592,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-previz","slug":"varg-previz","name":"Previz to Seedance","skillName":"varg-previz","type":"skill","status":"beta","stream":"originals","category":"cinematic","tags":["camera","editing","characters","storyboard","previz","three-js","video-to-video","music"],"summary":"Plan multi-shot AI video before paying: story, anchor sheets, a three.js grey-box previz, then a Seedance v2v pack.","description":"Pre-visualises any multi-shot video (music videos, ads, UGC spots, trailers, explainers) so camera, geography, scale and timing are fixed for free before the paid step. The pipeline runs story structure → `storyboard.json` → character, product and location anchors → master scenes of 4–11 s → a three.js grey-box previz with auto cameras from plain storyboard words → a Seedance 2.5 video-to-video pack where each run gets its previz clip as `@video1` plus refs for only what is in frame. `build_pack.py --check` blocks costly mistakes (runs without image refs, refs under 300 px, runs over 15 s, shots in no run) before anything is spent. Built on a 36-shot music video and tested on a 6-shot product ad; in review as [vargHQ/skills PR #24](https://github.com/vargHQ/skills/pull/24) and goes live when it merges.","useWhen":["A previz, 3D animatic, camera blocking or camera approval pass","Shot lists, scene grouping, or story structure for a clip or ad","Character, product or vehicle sheets","A Seedance 2.5 video-to-video pack"],"notFor":["1–3 shot pieces with a simple camera: skip the previz and go straight to anchors and image-to-video"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-previz","repo":"vargHQ/skills","path":"varg-previz","license":"MIT"},"agents":["claude-code"],"models":["seedance_2_5","gpt_image_2_5","sync_v2_pro"],"requires":["python3 and a browser (previz app)","bun + playwright-core + Chrome or Chromium (clip capture)","ffmpeg (pack build)","varg MCP connection or VARG_API_KEY (generation)"],"cost":{"typicalCredits":"~65–180 credits / run (480p, as billed)","note":"Story, storyboard, scene grouping and the previz are free. Seedance 2.5 v2v runs of 4–11 s at 480p billed about 16 credits per second while estimate_cost quoted 315–361, so the skill quotes the estimate as a ceiling and reports the billed cost after."},"refs":[{"role":"motion","label":"Grey-box previz clip per run (@video1)","kind":"video","license":"original","note":"Copies camera, hard-cut timing and blocking only; never its look"},{"role":"identity","label":"Character sheet","kind":"image","license":"original","note":"Only for characters in frame; crop out anything that should not appear"},{"role":"product","label":"Product or vehicle sheet with a human for scale","kind":"image","license":"original","note":"State the size ratio in every prompt"},{"role":"location","label":"Master plate per location","kind":"image","license":"original","note":"One location = one master plate = one set; made by image-editing a previz render"}],"files":["SKILL.md","references/character-sheets.md","references/scene-grouping.md","references/seedance-v2v.md","references/story-structure.md","references/threejs-previz.md","scripts/new_previz.py","templates/previz/README.md","templates/previz/config.json","templates/previz/examples/space-opera/README.md","templates/previz/examples/space-opera/pack.json","templates/previz/examples/space-opera/props.js","templates/previz/examples/space-opera/sets.js","templates/previz/examples/space-opera/shots.js","templates/previz/index.html","templates/previz/js/autocam.js","templates/previz/js/main.js","templates/previz/js/props.js","templates/previz/js/rig.js","templates/previz/js/sets.js","templates/previz/js/shots.js","templates/previz/sample/storyboard.json","templates/previz/seedance/pack.json","templates/previz/seedance/tools/build_pack.py","templates/previz/seedance/tools/capture.mjs","templates/previz/serve.py","templates/previz/vendor/three.module.min.js"],"version":"1.0.0","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"film","hue":190,"text":"MCU, 3/4 left, push in"},"legal":"Vendors three.js r169 (MIT) so the previz app runs offline.","adds":"tool","install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-previz -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-previz -a cursor -y","gemini-cli":"npx skills add vargHQ/skills --skill varg-previz -a gemini-cli -y","openclaw":"npx clawhub@latest install varg-previz"},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2f5f2d60dd84/varg-previz.mp4","w":720,"h":450,"duration":12,"blur":"data:image/webp;base64,UklGRsIAAABXRUJQVlA4ILYAAAAwBQCdASogABQAPtFQo0woJCMiMBgMAQAaCWIAtt0AADiQv02cv54c9Um2gcPtisMsAAD82XydB9PvSJOe5R3HVu5Gm+1BZldG6zs7Z88RE/DmyuMsdtbeNMzVbpNLNdShsaf1SlPCMQEq1cc7MFm8fjtbXuUXdXJrLaOUfigVCPR9yFQ3IprllB/hKq0O5MFf/y3hy4U5Ozb3nImaMOL28fRJwVyFsMs2e7/mlS38X87o7AAAAA==","source":"https://github.com/vargHQ/skills/pull/24","page":"https://github.com/vargHQ/skills/pull/24","credit":"varg (varg-previz app, rendered locally)","rights":"generated","note":"The skill's own free step, run for real: its three.js grey-box previz app (vargHQ/skills feature/varg-previz, commit 30620f7) playing the bundled 6-shot sample storyboard 'Morning Drop' (9:16, 12 s, 3 locations). Auto cameras come from the storyboard words (CU push-in, OTS, WS truck right, MS pull out); the set map shows each shot's camera frustums. Captured in headless Chrome at 1440x900, 24 fps, by seeking the timeline frame by frame. No generation credits.","bytes":205616,"addedAt":"2026-10-27"}},{"id":"vargHQ/media-download","slug":"media-download","name":"Local-first video downloader: private, no subscription","skillName":"media-download","type":"skill","status":"live","stream":"originals","adds":"tool","category":"tooling","tags":["download","yt-dlp","gallery-dl","pinterest","references","moodboard","x","youtube","instagram","tiktok","free","official"],"summary":"Save any video by link (X, YouTube, Instagram, TikTok, 1800+ sites) or Pinterest images as references, locally, no key.","description":"The skill turns a pasted link into a local file. `scripts/video.sh` wraps yt-dlp and saves an MP4 (h264 + aac) that plays everywhere, or MP3 with `-a`. `-q 720` caps resolution by the smaller side, so vertical Reels and TikToks stay 720×1280. `-p` downloads a playlist, and `-c <browser>` reuses the user's own login for Facebook, Instagram or Reddit, after the agent asks first. `scripts/pinterest.sh` wraps gallery-dl. It takes a search query, pin, board, profile or `pin.it` link and saves the images. It ships moodboard query presets ported from vargHQ/inspirator, which makes it a quick way to collect style and product references before a generation. Both scripts install or locate their tool themselves and print only file paths. Nothing is uploaded, and no varg account is needed. Companion CLI and library: [vargHQ/social-media-video-downloader](https://github.com/vargHQ/social-media-video-downloader).","useWhen":["The user pastes a video link and wants to download, save or grab it","Pulling the audio of a video as MP3, its metadata, or a whole playlist","Collecting Pinterest images or a moodboard of references for a style, product or character","Requests like \"скачай видео\", \"скачай с пинтереста\", \"собери референсы\", \"download this video\" or \"save this reel\""],"notFor":["Private, deleted or DRM-protected content, or getting around paywalls","Mass-scraping someone else's account"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/media-download","repo":"vargHQ/skills","path":"media-download","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill media-download -a codex -y","cursor":"npx skills add vargHQ/skills --skill media-download -a cursor -y"},"agents":["claude-code","codex","cursor","openclaw"],"requires":["bash + curl","yt-dlp (auto-installed if missing)","ffmpeg (recommended: YouTube HD, MP3)","gallery-dl, uvx or pipx (Pinterest)"],"cost":{"note":"Free — runs locally, no varg API key"},"runtime":"seconds to a few minutes","files":["SKILL.md","references/pinterest-presets.md","scripts/pinterest.sh","scripts/video.sh"],"version":"1.0.0","updatedAt":"2026-10-27","addedAt":"2026-10-27","preview":{"kind":"terminal","hue":25,"text":"video.sh -q 720 https://x.com/…/status/…"},"legal":"Downloads only what the user has the right to save; the skill declines DRM, paywall and mass-scraping requests.","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/547c697e5104/media-download.mp4","w":404,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRtQBAABXRUJQVlA4IMgBAADQCQCdASogADoAPtFQnkuoJCKhsBv8AQAaCWcA0rAKxYEGuKnW73wI+hYU0qW5zS/YBkm1n7qL7kC9tETuXtZEnBY8abrv/1lnMBmt+1N3hvWa1uae1AAA/v6++YplxVvIvQ5WAGdB/5Wb/YIzPR7OSEioJZTrdHcCdfwupx4O0I/rJje5gzA4YERjXJgarWRkZ/Ud2nfh691t6v6zznjDXuG6yTYZJnzPMQPcrrRBmWfVfIxd5jUQlF4XZAyFbGyVtFWpONkUU9l8GtNiaLpjf4cSH650OTtMWGHE/LT51Qh+7NXWJhXPy+t09SUOhSeMknEBNs/za9PDadTiKbw9GiMjh6VXncETzk47tIxz5P6jV2/TTILrLuScl5dnqMOV9hAflNZDq0V3Rhw3ugcgjeETgvBgmFVfX9dWyHUeit3TGROkv9JYetzbBBv872MObiov3krmXSjJ2EuXTxo0bfLT8Sgc9BDco3Kojhc4K56poDEPafcRRLEalQ1q1whmbqWzuo7RrXX2ZT9TMr8ItrufWn9MUWefblmSMjNn2fxpT9a64rk6w7g1xR8/icKRz8aopBwScOBis5yioYH5EUC1piqAAAA=","source":"https://x.com/NASA/status/2112560723603632217","page":"https://x.com/NASA/status/2112560723603632217","credit":"NASA","rights":"public-domain","note":"Downloaded from an X post with the skill's video.sh (-q 720): NASA's Moon Base rover clip, a US government work in the public domain. Cut 4-12 s.","bytes":419530,"addedAt":"2026-10-27"}},{"id":"vargHQ/short-form-ffmpeg-cookbook","slug":"short-form-ffmpeg-cookbook","name":"Short-form FFmpeg cookbook: copyable commands for Reels","skillName":"short-form-ffmpeg-cookbook","type":"skill","status":"live","stream":"originals","adds":"tool","category":"editing","tags":["ffmpeg","captions","subtitles","9:16","vertical","reels","tiktok","shorts","crop","trim","music","free","official"],"summary":"Footage into a 9:16 MP4 with FFmpeg: crop to vertical, burn captions, trim and join, music under the voice.","description":"Copyable FFmpeg commands for short-form video: crop a 16:9 video to 1080×1920 (center, offset or over a blurred copy), burn in SRT or ASS captions or add soft subtitles, trim to the frame or losslessly, join matching or mismatched clips, and lay music under the voice with sidechain ducking. Every command was run on test media. When the agent has no shell, the same commands run on the varg ffmpeg tool, priced in credits.","useWhen":["Cropping a horizontal video to 9:16 for Reels, TikTok or Shorts","Burning SRT or ASS captions into a video","Trimming clips and joining them into one MP4","Adding background music that ducks under the voice"],"notFor":["Animated word-by-word captions (use a Remotion or HyperFrames caption skill)","Choosing which editing service to use (use varg-video-editing)"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/short-form-ffmpeg-cookbook","repo":"vargHQ/skills","path":"short-form-ffmpeg-cookbook","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill short-form-ffmpeg-cookbook -a codex -y","cursor":"npx skills add vargHQ/skills --skill short-form-ffmpeg-cookbook -a cursor -y"},"agents":["claude-code","codex","cursor","openclaw"],"requires":["ffmpeg + ffprobe","libass in the ffmpeg build (for burned captions)"],"cost":{"note":"Free — runs locally, no varg API key"},"runtime":"seconds per command","files":["SKILL.md"],"version":"1.0.0","updatedAt":"2026-10-28","addedAt":"2026-10-28","preview":{"kind":"terminal","hue":25,"text":"$ ffmpeg -i input.mp4 -vf \"crop=ih*9/16:ih,scale=1080:1920\" …\n→ vertical.mp4 1080×1920\n$ ffmpeg -i vertical.mp4 -vf \"subtitles=subs.srt\" …\n→ captioned.mp4"}},{"id":"vargHQ/varg-music-video","slug":"varg-music-video","name":"Turn a song into an AI music video","skillName":"varg-music-video","type":"skill","status":"beta","stream":"originals","category":"music","tags":["lip-sync","beat-grid","lyrics","storyboard","editing","characters","captions","seedance"],"summary":"Direct an AI music video the way top X creators do: song map, beat-grid storyboard, stills first, Seedance, lip-sync.","description":"Encodes how the most-watched AI music videos on X are made (Obie Fernandez's slopcore guide, anabology's Claudia videos, Framer_X, EXM7777, zealcaiden) as a gated pipeline: measure the song into `songmap.json`, pitch the concept and lyric surfaces, cast and lock a reference bible, storyboard every cut on a downbeat, approve stills at full size, then pilot, quote and wait for \"Go\" before Seedance 2.5 clips. Every singing or talking shot gets a mandatory lip-sync pass against the real vocal, and lyrics and graphics are drawn in code, never by the video model. Steps varg cannot do yet are tagged `[varg: missing]` with a workaround, so the skill doubles as a build list for varg.","useWhen":["A music video or a singing character","A \"clip with a song\" or slopcore","A launch video or promo set to a track"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-music-video","license":"MIT","repo":"vargHQ/skills","path":"varg-music-video"},"agents":["claude-ai","claude-code","codex","cursor","gemini-cli","openclaw"],"models":["seedance_2_5","gpt_image_2_5","nano_banana_2","soul","sync_v2_pro","sync_v3","groq_whisper_large_v3_turbo","lyria_3_5","eleven_music_v2_5","seedvr_video"],"requires":["varg MCP connection","Song file and lyric sheet, or a brief to generate the song","Headless browser (Playwright) for lyrics drawn in code","Demucs for stem separation (not in varg yet)"],"cost":{"typicalCredits":"up to ~5,000 credits / 30 s video (estimate)","note":"Converted from the skill's creator-reported budgets: a first 30 s video has a ceiling of about 5,000 credits, a 4-minute song with one shot per lyric line runs ~30,000–45,000, and dialogue roughly doubles that. Every batch is quoted with estimate_cost before \"Go\"."},"refs":[{"role":"identity","label":"Character reference sheets (front, side, back, three-quarter, full body)","kind":"image","license":"original","note":"Locked once approved; fix the motion prompt instead of regenerating them"},{"role":"first-frame","label":"Approved still per shot","kind":"image","license":"original","note":"Insert shots use it as the exact first frame; expressions are fixed in the still"},{"role":"audio","label":"Clean vocal slice per singing shot","kind":"audio","license":"user-supplied","note":"Only the words sung on camera; the lyrics are also written into the prompt"},{"role":"audio","label":"Master song","kind":"audio","license":"user-supplied","note":"Motion shots get it so the action lands on the beat; \"no lipsync, no dialogue\""},{"role":"motion","label":"Motion reference clip (@Video1)","kind":"video","license":"user-supplied","note":"Defines motion and pacing only; do not use its person, clothing or scene"}],"files":["SKILL.md"],"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"karaoke","hue":330,"text":"no es grasa, es queso"},"legal":"Register an own song with the distributor before the video spreads, expect Content ID claims on someone else's song, and label AI content where platforms require it.","featured":true,"adds":"visual","install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-music-video -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-music-video -a cursor -y","gemini-cli":"npx skills add vargHQ/skills --skill varg-music-video -a gemini-cli -y","openclaw":"npx clawhub@latest install varg-music-video"},"media":{"type":"none","reason":"varg's own music video ('I Don't Wanna Pick', the 36-shot project behind varg-previz) is not published anywhere I can find, and the skill's worked examples (Queso, Juego) are anabology's videos, not varg's; no varg-owned render to show.","searched":["varg.ai public template gallery (all exposed templates)","app repo marketing and develop home media","vargHQ/skills feature/varg-previz branch incl. examples/space-opera README and PR #24","synced varg-music-video SKILL.md","meta-repo grep for music video / Wanna Pick","founder's Notion (search: music video, I Don't Wanna Pick)","@vargaiHQ media posts on X"],"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-character-keynote","slug":"varg-character-keynote","name":"Character Keynote","skillName":"varg-character-keynote","type":"skill","status":"beta","stream":"originals","category":"talking-head","tags":["ads","ugc","characters","native-audio","template","seedance"],"summary":"One render call: a Soul character delivers a keynote-style ad line on a generated stage, voiced by Seedance 2.5.","description":"A single `render_video` call makes an 8 s, 9:16 talking-speaker ad: Soul generates the character, nano_banana_2 the empty stage, and Seedance 2.5 animates both with native speech and applause. To make a new one the agent edits only three things in a fixed TSX template (the spoken `LINE`, the character prompt and the stage prompt), which keeps results consistent from run to run. It never launches a render without the user's explicit go-ahead.","useWhen":["A speaker or keynote-style UGC video with a custom character","Swapping the character in the varg keynote template"],"notFor":["Multi-scene stories: one render is one continuous 8 s action","Videos that need on-screen text: the prompt keeps \"no text on screen\""],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-character-keynote","license":"MIT","repo":"vargHQ/skills","path":"varg-character-keynote"},"agents":["claude-ai","claude-code","codex","cursor","gemini-cli","openclaw"],"models":["soul","nano_banana_2","seedance_2_5"],"requires":["varg MCP connection (render_video, get_job)"],"cost":{"typicalCredits":"~400 credits / run (estimate)","note":"Converted from the skill's own per-run figure."},"runtime":"5–15 min","refs":[{"role":"identity","label":"Soul character still (first reference image)","kind":"image","license":"original","note":"Generated in the same render; locks the speaker's face, body and clothing"},{"role":"location","label":"Empty conference stage (second reference image)","kind":"image","license":"original","note":"Generated by nano_banana_2; always \"empty, no people\", with a themed screen behind the speaker"},{"role":"style","label":"Soul \"Realistic\" style preset","kind":"text","note":"style_id 1cb4b936-77bf-4f9a-9039-f3d349a4cdbe, passed through providerOptions.higgsfield"}],"files":["SKILL.md"],"updatedAt":"2026-08-24","addedAt":"2026-10-26","preview":{"kind":"avatar","hue":20,"text":"I waited seventy years to try tai chi."},"adds":"visual","install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-character-keynote -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-character-keynote -a cursor -y","gemini-cli":"npx skills add vargHQ/skills --skill varg-character-keynote -a gemini-cli -y","openclaw":"npx clawhub@latest install varg-character-keynote"},"media":{"type":"none","reason":"No published render of the keynote template exists in varg's code, docs, gallery or Notion; the skill names no example output, and making one would be a paid Soul + Nano Banana 2 + Seedance 2.5 run.","searched":["varg.ai public template gallery (home, /ugc-ads and /product-videos expose 28 of 39 templates, none on a stage)","app/scripts/publish-service-template.ts and app develop home media","app/src/marketing (mcp examples, platform, models)","meta-repo grep for keynote, TEDx, applause, 'seventy years'","synced varg-character-keynote SKILL.md","founder's Notion (search: keynote, tai chi, 'I waited seventy years')","@vargaiHQ media posts on X"],"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-consistent-characters","slug":"varg-consistent-characters","name":"Consistent Characters","skillName":"varg-consistent-characters","type":"skill","status":"beta","stream":"originals","category":"characters","tags":["ads","talking-head","captions","qa","native-audio","kling","reference-video"],"summary":"Multi-scene ads where the same actors, outfits and location hold in every cut: cards, composites, Kling v3 clips.","description":"Turns a scene script and real actor photos into a multi-scene vertical ad that stays consistent across cuts. It builds frozen references once (a full-body profile card per actor that fixes the outfit, and an empty location card), composes every scene from them with one shared preamble, gets the stills approved before paying for video, and animates each scene with kling_v3 native-audio dialogue in a cloud render. It also covers trimming dead air with `silencedetect`, word-level captions through a transcription pass, frame-by-frame QA, and reverse-engineering a script from a reference video. Battle-tested on a client project (formula-care-ep2).","useWhen":["A script defines actors (A1, A2…), a location (L1) and numbered scenes","A client provides actor photos","The same people, outfits and location must appear in every scene","Frame-based QA of generated output","Extracting a scene script from a reference video when none is provided"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-consistent-characters","repo":"vargHQ/skills","path":"varg-consistent-characters","license":"MIT"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["nano_banana_pro","kling_v3","groq_whisper_large_v3_turbo"],"requires":["varg API key","varg-ai skill","ffmpeg","bun (local render)"],"cost":{"typicalCredits":"~2,100 credits / run (estimate)","note":"A 5-scene, 22 s ad at the per-unit prices the skill quotes (~126 credits per image, ~221 per kling_v3 clip); its older formula-care-ep2 cost table adds up to ~415. Cached re-renders cost a few credits, and an edit regenerates only the changed scene."},"refs":[{"role":"identity","label":"Actor photo per character (A1, A2…)","kind":"image","license":"user-supplied","note":"Edited into a full-body profile card; never described from scratch in scene prompts"},{"role":"identity","label":"Character profile card","kind":"image","license":"original","note":"Full body, neutral pose, plain studio background; its outfit is the outfit for the whole video"},{"role":"location","label":"Empty location card (L1)","kind":"image","license":"original","note":"No people, so characters from earlier scenes cannot leak in"},{"role":"first-frame","label":"Approved scene composite","kind":"image","license":"original","note":"Exactly one image per kling_v3 video"}],"files":["SKILL.md"],"version":"1.1.0","updatedAt":"2026-08-05","addedAt":"2026-10-26","preview":{"kind":"grid","hue":150,"text":"A1 · A2 · L1"},"legal":"Actor photos are client-supplied; get the client's permission before outputs go into a public gallery.","featured":true,"adds":"visual","install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-consistent-characters -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-consistent-characters -a cursor -y","gemini-cli":"npx skills add vargHQ/skills --skill varg-consistent-characters -a gemini-cli -y","openclaw":"npx clawhub@latest install varg-consistent-characters"},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/fd12064dae3c/varg-consistent-characters.mp4","w":404,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRgwCAABXRUJQVlA4IAACAACQCgCdASogADoAPtFeqE0oJSQiLBqpmQAaCUAWdm0AcXsn4pr20vPWdZPxVTthc1tv1Jfw83dkrNqo0yRAmXAZwCK1F1naUu1bRfRBxo2RYE5a6Z9FcMMbBSB/GAAA/uV0hjfMldIgGvlUsyZ15rbEyndRJ4N7TiKx3mOaPe7L+um49QL5Jj6wYltI2K7zIws4tzgidz43xIDlF8umBXo7bP3D9LdcgUUC7dQmTawk/u28Dr1VdjFUi5wKABZrK35NhIOELLy/3+SlG/+ISTNW5j5cOLEAMuG3Pfpa9gXbVXfk2aokoR2w+tKdE9lwjPYwDr7AqSOjMo6tSIITars4n03cG7MFs11/ugNGj3w21Oky+FtPAgKPZ3i1cMssRi2ndlsMzSekZd76e4cBZNb5MJmyMS71QJm/OZL/mlqP8VzguHgaTlIisRE3PeJX6bD377XRa2Xo4n++ZoVrq8Bk/bQaVvG7vftDW7jfH/grP+cBj5j0W5KUPhGfWwtlYQBItYwSAxGSe25u8rGv8J/VVvwbBsfpaa+nnc4A4skAfdWE1tOmQRYBfYGSjk96FsVvknrgOSwcaDg5l85sIiGsRXVIuD1F3xQu0FnvIv7wkKObqi1t16wcsJwOdWxmOqQ4cZya9glcQydNc0KTX00pPxNABR9DBzaMHedH6AAAAA==","source":"https://s3.varg.ai/tai-chi-cast-b/ep2-v4.mp4","page":"https://varg.ai/ugc-ads","credit":"varg","rights":"varg-owned","note":"varg's 'Gym Ad – Two-Character UGC' template, which matches the skill's own worked example (formula-care-ep2: two actor cards, an empty gym-with-huge-windows location card, kling-v3 clips with native dialogue, 22.4 s after silence trimming). The cut (4-12 s) crosses four camera setups, and the same two actors, outfits and gym hold in every one.","bytes":213565,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-character-design","slug":"varg-character-design","name":"Character Design","skillName":"varg-character-design","type":"skill","status":"live","stream":"originals","category":"characters","tags":["character-design","character-sheet","turnaround","consistent-character","ai-influencer","mascot"],"summary":"How to make AI characters people remember: definition, details, clothing, and a sheet that keeps them consistent.","description":"Start here for any character. Define it (premise, archetype, contrast), write the details a camera can see (age as a number, body cues, the face feature by feature, one signature detail), dress it garment by garment with one loud colour, then lock it in a model sheet and reuse it in Nano Banana, Kling 4 and Seedance 2.5. Links the category recipes: grandmas, big guys, cringe deadpan, beautiful women, fitness, absurd and mascots, cartoon looks. Tested on varg on 2026-10-27.","useWhen":["Create or describe a character: who they are, face, body, clothing","A character sheet or turnaround","A consistent character across images and videos","An AI influencer, persona or mascot"],"notFor":["Multi-scene ads from real actor photos (use Consistent Characters with the sheet)"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-character-design","repo":"vargHQ/skills","path":"varg-character-design","license":"MIT"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["seedream_5_pro","nano_banana_2_1","gpt_image_2_5","seedance_2_5","kling_v4"],"requires":["varg API key or varg MCP"],"cost":{"typicalCredits":"~7 credits per sheet, 6 per scene still","note":"Measured on varg 2026-10-27: Seedream 5 Pro sheet 7, Nano Banana 2.1 sheet or still 6, 5 s video 83 (Kling 4) to 203 (Seedance 2.5 with audio)."},"files":["SKILL.md","references/archetypes.md","references/sheet-prompts.md","references/downstream.md","references/moderation.md","references/realism.md","references/styles.md","references/sources.md"],"version":"1.0.0","updatedAt":"2026-10-27","addedAt":"2026-10-27","preview":{"kind":"grid","hue":28,"text":"details · clothing · sheet"},"legal":"Original characters only in ads; label AI characters as AI; never present one as a real customer.","featured":true,"adds":"visual","install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-character-design -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-character-design -a cursor -y","gemini-cli":"npx skills add vargHQ/skills --skill varg-character-design -a gemini-cli -y","openclaw":"npx clawhub@latest install varg-character-design"},"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/cdf841a5e376/varg-character-design.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRjQBAABXRUJQVlA4ICgBAACQBgCdASogABIAPtFUo0uoJKMhsAgBABoJQBajZJYEJm9ABDAbU8snjqIeJCkZfUaFwwDMah+AukU+eg0AAP63p2oFFSs9RGJRCDBYNrCqzTBKYFhvuxBaZW3SgwqjJAVYbuRxac42L3LQVNrXyOmvxhURJA3zMgsj20tVqvC1yukPwPp9ulK55KUORN1PaK7gEC5g1vbSsn+hcpbTHd5ZuqlfUjqiKrdYp+kEjGEh/gDEvJ9CFOKvWz9stMkSDFulsv6coJBYKHvlV9VdmK4Pk04C3Uroi1SCU+AGCnuxaxFQP+lxw/95EYMEv+s77j3eB56xrNcs3y+3NVEEkZxZAqxP4X71zPP9ejooIKHpdYYcQjL/H/6CIZ8VHx/+gz6kBtHpErAAAA==","source":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_7d8641db61c3.jpg","page":"https://github.com/vargHQ/skills/tree/main/varg-character-design","credit":"varg","rights":"varg-owned","note":"Front views from the category sheets (Nonna, Bruno, Gérard, a beautiful woman, Mara, Baguettosaurus, Señor Pincho, Gary), generated on varg 2026-10-27","bytes":48794,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-character-grandma","slug":"varg-character-grandma","name":"Grandma Characters","skillName":"varg-character-grandma","type":"skill","status":"live","stream":"originals","category":"characters","tags":["grandma","granny","grandpa","old","elderly","character-sheet"],"summary":"Very old AI characters people remember: age vs behaviour, real wrinkles, a loud outfit and one prop.","description":"Granny pages have the best money evidence of any AI archetype (Granny Spills: 2.1M followers and brand deals). The recipe: an exact age, real wrinkles and age spots, one loud piece (leopard housecoat, shiny track suit, pink fur coat), one prop and one behaviour that does not fit the age. Ready characters, the sheet prompt, formats that work and the FTC line. Example: Nonna Rosa.","useWhen":["An AI granny, grandpa, babushka, nonna or abuela","An old character for an ad or an AI influencer page"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-character-grandma","repo":"vargHQ/skills","path":"varg-character-grandma","license":"MIT"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["seedream_5_pro","nano_banana_2_1","kling_v4","seedance_2_5"],"requires":["varg API key or varg MCP"],"cost":{"typicalCredits":"~7 credits per sheet, 6 per scene still","note":"Measured on varg 2026-10-27: Seedream 5 Pro sheet 7, Nano Banana 2.1 sheet or still 6, 5 s video 83 (Kling 4) to 203 (Seedance 2.5 with audio)."},"files":["SKILL.md"],"version":"1.0.0","updatedAt":"2026-10-27","addedAt":"2026-10-27","preview":{"kind":"avatar","hue":30},"adds":"visual","install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-character-grandma -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-character-grandma -a cursor -y","gemini-cli":"npx skills add vargHQ/skills --skill varg-character-grandma -a gemini-cli -y","openclaw":"npx clawhub@latest install varg-character-grandma"},"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/30b8895d05ea/varg-character-grandma.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRjYBAABXRUJQVlA4ICoBAADwBQCdASogABIAPtFWpEuoJKOhsAgBABoJZQCw7mwJVn3RE887y3nl19riM40czF5zdFVN34raoAD+t6dut6L9+HSyds881nmawzIn93krgru8DpQ3IQcINS+E1zcFtxkxf4QZBUUXgVPzem8fvQBvMZ82Uj+I1eeAgi9rernHHGA//0vcI7P3bOF79qcQHLQ/FibVLrxXDTOvy06m8Hamb9baRHsYYnPNII4hkfBBgIYU+PJfAtcddqGGN2CdGfXn0XGteDPn4fR2HJht/DaMPqEkj5XkX9ULIm5L5zIYP1u6SERDzKWQ8Iz0298U8AoQjR8uefTx8c0353BgbQsCsD/Quxxcj5sxSnlrrT+LldAAql+kPgN1BzjbbPG+dPNA0Q8L/I4zJAAA","source":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_7d8641db61c3.jpg","page":"https://github.com/vargHQ/skills/tree/main/varg-character-grandma","credit":"varg","rights":"varg-owned","note":"Nonna Rosa character sheet, Seedream 5 Pro, 7 credits (2026-10-27)","bytes":66022,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-character-big-guy","slug":"varg-character-big-guy","name":"Big Guy Characters","skillName":"varg-character-big-guy","type":"skill","status":"live","stream":"originals","category":"characters","tags":["big-guy","fat","heavy","plus-size","strongman","character-sheet"],"summary":"Big, heavy characters played straight: size shown with visible cues, a small delicate job, never mocked.","description":"Extreme bodies played straight spread (a 280-lb clown lifting cars: 14.6M views on one reel). Numbers alone come out too small: the recipe shows size with visible cues (belly, neck, arms, fit) and puts the contrast in the job and the outfit (a 160 kg florist in a tiny pink apron). Ready characters, sheet tips and what not to joke about. Example: Bruno.","useWhen":["A fat, big, heavy or plus-size character","A gentle giant or a strongman"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-character-big-guy","repo":"vargHQ/skills","path":"varg-character-big-guy","license":"MIT"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["seedream_5_pro","nano_banana_2_1","kling_v4"],"requires":["varg API key or varg MCP"],"cost":{"typicalCredits":"~7 credits per sheet, 6 per scene still","note":"Measured on varg 2026-10-27: Seedream 5 Pro sheet 7, Nano Banana 2.1 sheet or still 6, 5 s video 83 (Kling 4) to 203 (Seedance 2.5 with audio)."},"files":["SKILL.md"],"version":"1.0.0","updatedAt":"2026-10-27","addedAt":"2026-10-27","preview":{"kind":"avatar","hue":340},"adds":"visual","install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-character-big-guy -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-character-big-guy -a cursor -y","gemini-cli":"npx skills add vargHQ/skills --skill varg-character-big-guy -a gemini-cli -y","openclaw":"npx clawhub@latest install varg-character-big-guy"},"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/a8f54ecd7b02/varg-character-big-guy.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRgABAABXRUJQVlA4IPQAAAAQBgCdASogABIAPtFUo0uoJKMhsAgBABoJZQC+T3pmzVMYOoFK6/B+wMQClTy7w19vxc3Y+AdscCAA/scrVIrFaohBxhmLomDkiGh5xFJKNr8Ks8DYfqTIJrCc2PQOXThUBdkpgeBB4iKsxzxhDvRCt4q00p2H/IyphC00iEehQ/qO8NdVGG8yjaHRKylTdPFDiWtd7t7kTZCl03Nu5N6lCRv4iUNdGvllHlBVT8hpc+1/FnW3DRZ1Eti/6bqnNxMOQ2dt1zAmDSScQjncb7bEz8iK9wEXmuLDJfOfSeC7uD3ubxnO3m8HBwb7guEbdAlIOOgA","source":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_7715698a084a.jpg","page":"https://github.com/vargHQ/skills/tree/main/varg-character-big-guy","credit":"varg","rights":"varg-owned","note":"Bruno model sheet, Seedream 5 Pro with visible size cues, 7 credits (2026-10-27)","bytes":28170,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-character-cringe","slug":"varg-character-cringe","name":"Cringe Deadpan Characters","skillName":"varg-character-cringe","type":"skill","status":"live","stream":"originals","category":"characters","tags":["cringe","deadpan","weird","odd","ai-influencer","character-sheet"],"summary":"Bizarre but believable characters people argue about: one wrong outfit, one repeated action, no smile.","description":"The late-2026 meta: Jean Phil reached 244K followers from 12 posts. The recipe: a real-looking adult with one strange haircut, one strange face feature and a suit nobody wears, completely serious, doing one action in a new ordinary place every post, with motion from footage you own. Ready characters and the posting format. Example: Gérard.","useWhen":["A weird, cringe, awkward or deadpan character","An \"is he real?\" AI persona like Jean Phil"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-character-cringe","repo":"vargHQ/skills","path":"varg-character-cringe","license":"MIT"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["seedream_5_pro","kling_v4","seedance_2_5","minimax_h3_max_recast"],"requires":["varg API key or varg MCP"],"cost":{"typicalCredits":"~7 credits per sheet, 6 per scene still","note":"Measured on varg 2026-10-27: Seedream 5 Pro sheet 7, Nano Banana 2.1 sheet or still 6, 5 s video 83 (Kling 4) to 203 (Seedance 2.5 with audio)."},"files":["SKILL.md"],"version":"1.0.0","updatedAt":"2026-10-27","addedAt":"2026-10-27","preview":{"kind":"avatar","hue":45},"adds":"visual","install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-character-cringe -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-character-cringe -a cursor -y","gemini-cli":"npx skills add vargHQ/skills --skill varg-character-cringe -a gemini-cli -y","openclaw":"npx clawhub@latest install varg-character-cringe"},"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/ea0beb949386/varg-character-cringe.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRggBAABXRUJQVlA4IPwAAAAQBwCdASogABIAPtFUpk2oJCOiMBgIAQAaCUATpBWHgcDn//zCB/AOn/eFho20Ul1H1ab8eyDmbkDV3fgz5m6/QAD+6n+taBXhSMyya4faBaVtBDmEbmX1nsfqYpkjLNmQ2NuPK4pgVS2JNpfkgUlaklO0sE3FUnLHaO0eszVQxqvw7sXtgev+gTWwu6JMo+ywSpcVMBOxrRYFOObM8bsGt2GNm6Waq0BApAk+UUDr2x0Kg5RT0NT8mdc227VyDeppbauQYTmfz4BXBgwXQU8+6Mf8EW/AO1lsmGjtctxoUw2+6YcmTkeNZ4/ulmOlPH9EKNSPlETMCFN4AAA=","source":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_8252d5cfde30.jpg","page":"https://github.com/vargHQ/skills/tree/main/varg-character-cringe","credit":"varg","rights":"varg-owned","note":"Gérard model sheet, Seedream 5 Pro, 7 credits (2026-10-27)","bytes":25988,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-character-beautiful-woman","slug":"varg-character-beautiful-woman","name":"Beautiful Women","skillName":"varg-character-beautiful-woman","type":"skill","status":"live","stream":"originals","category":"characters","tags":["beautiful-woman","model","ai-influencer","glamour","swimwear","realism"],"summary":"Very beautiful AI women who look like real models: casting details, real skin, fashion styling, no false blocks.","description":"Not the average face and not the plastic \"AI girl\": cast her like a model agency (striking features one by one), keep real skin, style her (makeup, one jewellery piece, an exactly named outfit) and light it like a shoot. Five tested looks (editorial, red carpet, beauty close-up, party flash, swimwear campaign) and the wording that passes filters. Adults only, no nudity.","useWhen":["A beautiful, gorgeous or attractive woman","An AI model or influencer girl","A glamour, red-carpet or swimwear shot that keeps getting blocked"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-character-beautiful-woman","repo":"vargHQ/skills","path":"varg-character-beautiful-woman","license":"MIT"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["seedream_5_pro","gpt_image_2_5","nano_banana_2_1","soul"],"requires":["varg API key or varg MCP"],"cost":{"typicalCredits":"~7 credits per sheet, 6 per scene still","note":"Measured on varg 2026-10-27: Seedream 5 Pro sheet 7, Nano Banana 2.1 sheet or still 6, 5 s video 83 (Kling 4) to 203 (Seedance 2.5 with audio)."},"files":["SKILL.md"],"version":"1.0.0","updatedAt":"2026-10-27","addedAt":"2026-10-27","preview":{"kind":"avatar","hue":350},"legal":"Adult characters only; no nudity or sexualised posing; no real person's likeness. Label AI models as AI.","adds":"visual","install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-character-beautiful-woman -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-character-beautiful-woman -a cursor -y","gemini-cli":"npx skills add vargHQ/skills --skill varg-character-beautiful-woman -a gemini-cli -y","openclaw":"npx clawhub@latest install varg-character-beautiful-woman"},"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/6c5966b6ac5e/varg-character-beautiful-woman.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRkQBAABXRUJQVlA4IDgBAADwBgCdASogABIAPtFSokuoJKMhsAgBABoJagCdINr8/gV///DgP1uL4FmVZ/C4+E6UQ2MDmQVadIJbsi2lzNxIAP6cJDRwz4GLkoXymCIsVsMZwSrdtDe030K4ddmOriUfnFvGFdrE3mvhGxgADX0DsuZnU4d1r/h709qEOCyuUCtV4526fFKM8L0lck3KQ8D/o5nFmFRz0B07XvYIVvnuxblFeOYNvTbbrfKBDga2XRdQK6r4qJnJ7l8Z21kbyDSWTC2DY32giHh+VSJYamvpZB4G+BNjA6QhtXwaJeDbPu47vBq2j0AFAF+0COy+w8Wo8vtVtBtJypLYrMFxLPPJSnZDeNECkuAZKTx8lleXsK/vmhPTpQIlrRCZBx/QBYZ7JB+buetLbKJdWURJ9BN3xKjv7EEWAAA=","source":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_031f7b085fc9.jpg","page":"https://github.com/vargHQ/skills/tree/main/varg-character-beautiful-woman","credit":"varg","rights":"varg-owned","note":"Four tested looks: Seedream 5 Pro editorial, GPT Image 2.5 red carpet, Nano Banana 2.1 beauty close-up, Soul party flash (2026-10-27)","bytes":54626,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-character-fitness","slug":"varg-character-fitness","name":"Fitness Characters","skillName":"varg-character-fitness","type":"skill","status":"live","stream":"originals","category":"characters","tags":["fitness","gym","sports-bra","athlete","activewear","moderation"],"summary":"Fitness coaches and athletes with real muscle, a signature colour and catalog wording that gets sports bras through.","description":"Real muscle and skin, one signature colour, clothing named like a product listing and always an activity. The catalog prompt passed on all six image models we tested, while \"beautiful girl in a sports bra\" was blocked on GPT Image 2.5. Ready characters, the prompt that passes and a swap table. Example: Mara.","useWhen":["A fitness influencer, gym character or trainer for an app","An athlete for an activewear or supplement ad","A character in a sports bra that keeps getting blocked"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-character-fitness","repo":"vargHQ/skills","path":"varg-character-fitness","license":"MIT"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["seedream_5_pro","nano_banana_2_1","gpt_image_2_5","kling_v4"],"requires":["varg API key or varg MCP"],"cost":{"typicalCredits":"~7 credits per sheet, 6 per scene still","note":"Measured on varg 2026-10-27: Seedream 5 Pro sheet 7, Nano Banana 2.1 sheet or still 6, 5 s video 83 (Kling 4) to 203 (Seedance 2.5 with audio)."},"files":["SKILL.md"],"version":"1.0.0","updatedAt":"2026-10-27","addedAt":"2026-10-27","preview":{"kind":"avatar","hue":80},"adds":"visual","install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-character-fitness -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-character-fitness -a cursor -y","gemini-cli":"npx skills add vargHQ/skills --skill varg-character-fitness -a gemini-cli -y","openclaw":"npx clawhub@latest install varg-character-fitness"},"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/970c7b30ba05/varg-character-fitness.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRvAAAABXRUJQVlA4IOQAAACwBQCdASogABIAPtFepU6oJSMiKAqpABoJZQDKIHBDgDjSPaQ2X26g7mW9G4EJwmPcNjr+NIAA/vBkYbQRZNUGu3P8um5tXMfYJGAKZuwsCpQnvKzL5f8HEIOBjQyNuS8TTdrWqdYWxc9mvhDXA7hvkRlSIqPh/nOuUC9/1Hn61GG86mQIazCe+X9x2wfTwBePr8+xMazqlDRP8V/UrOdCi0PUdFVAMXMvr2YdRxo8f3zKhbZP3L8h+MX7aC2Bz1Tz4lMc0D4hIzDwOkNBS87RwCaVV27fE3G2i3Mi02AWu/Q8AAA=","source":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_00d1bc4f1c02.jpg","page":"https://github.com/vargHQ/skills/tree/main/varg-character-fitness","credit":"varg","rights":"varg-owned","note":"Mara model sheet with catalog wording, Seedream 5 Pro, 7 credits (2026-10-27)","bytes":21790,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-character-absurd","slug":"varg-character-absurd","name":"Absurd Characters & Mascots","skillName":"varg-character-absurd","type":"skill","status":"live","stream":"originals","category":"characters","tags":["absurd","brainrot","mascot","creature","3d","clay"],"summary":"Food or object + animal + one human detail: brainrot-style creatures and brand mascots in 3D or clay.","description":"The fastest-growing AI characters (Italian brainrot, fruit dramas) and the best brand evidence (mascots). The formula, the 3D family-film and clay stop-motion style blocks, the turnaround sheet and three tested characters: Baguettosaurus, Señor Pincho the cactus and Hector the sheep. Original creatures only.","useWhen":["An absurd, funny or brainrot character","A creature, a talking animal or object","A brand mascot"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-character-absurd","repo":"vargHQ/skills","path":"varg-character-absurd","license":"MIT"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["nano_banana_2_1","gpt_image_2_5","seedance_2_5","kling_v4"],"requires":["varg API key or varg MCP"],"cost":{"typicalCredits":"~6 credits per sheet","note":"Nano Banana 2.1, measured 2026-10-27."},"files":["SKILL.md"],"version":"1.0.0","updatedAt":"2026-10-27","addedAt":"2026-10-27","preview":{"kind":"avatar","hue":110},"adds":"visual","install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-character-absurd -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-character-absurd -a cursor -y","gemini-cli":"npx skills add vargHQ/skills --skill varg-character-absurd -a gemini-cli -y","openclaw":"npx clawhub@latest install varg-character-absurd"},"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/067ffd2edd78/varg-character-absurd.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRvgAAABXRUJQVlA4IOwAAABwBQCdASogABIAPtFYpEuoJSOhsAgBABoJQBWAZYAsXa1TThWDoXMKfoc3cHwduG+x6NVgAP7fE3yS9S+QhVkXaP84uyboax8vIL6rgvaUw4WpJk3kXmRI5UKb5AyWlEUMxh7OpRpD0g0zYK2GQzZd7Lu/n4IM7C/Yc5KvcH0wsPxWsn+7CL4Fa5MUHSNQYV2cf/rIZlTEwajRkvrn0teRqKrzA8FaHspXderjAKp/t+cpEZjtG6cg5urjgwl9unIb9TkipDuUoA+4TgjyAFC9mazyK6iku3uKdgMTLCtUwB3tJgHKR6uQ1B0AAA==","source":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_3356a6c5b5c1.png","page":"https://github.com/vargHQ/skills/tree/main/varg-character-absurd","credit":"varg","rights":"varg-owned","note":"Baguettosaurus, Señor Pincho and Hector from their Nano Banana 2.1 sheets (2026-10-27)","bytes":41686,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-character-cartoon","slug":"varg-character-cartoon","name":"Cartoon Look Characters","skillName":"varg-character-cartoon","type":"skill","status":"live","stream":"originals","category":"characters","tags":["cartoon","simpsons-style","pixar-style","anime","restyle","style"],"summary":"Original characters in famous cartoon looks (yellow sitcom, 3D family film, anime, clay), described without IP names.","description":"Describe the look, never name the show: Nano Banana 2.1 refused \"The Simpsons style\" and drew the same look from a description. Style blocks for nine famous looks, what to keep away from in each, a tested original (Gary Pruitt) and a restyle of an existing character from its sheet.","useWhen":["A Simpsons-, Pixar-, Ghibli- or South Park-style character","A cartoon version of a person or a mascot"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-character-cartoon","repo":"vargHQ/skills","path":"varg-character-cartoon","license":"MIT"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["nano_banana_2_1","gpt_image_2_5","seedance_2_5","minimax_h3_max_style_retro_toon_70s"],"requires":["varg API key or varg MCP"],"cost":{"typicalCredits":"~6 credits per sheet","note":"Nano Banana 2.1, measured 2026-10-27."},"files":["SKILL.md"],"version":"1.0.0","updatedAt":"2026-10-27","addedAt":"2026-10-27","preview":{"kind":"avatar","hue":55},"legal":"Styles are free; characters, names, logos and catchphrases are not. Keep IP names out of prompts and ad copy.","adds":"visual","install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-character-cartoon -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-character-cartoon -a cursor -y","gemini-cli":"npx skills add vargHQ/skills --skill varg-character-cartoon -a gemini-cli -y","openclaw":"npx clawhub@latest install varg-character-cartoon"},"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/ed07b62f9de5/varg-character-cartoon.webp","w":960,"h":536,"blur":"data:image/webp;base64,UklGRgwBAABXRUJQVlA4IAABAAAwBgCdASogABIAPtFUoUuoJKMhsAgBABoJbACdMoM0qYEGr/80xAegAPSAX1XsDP0UrxtVuhoxZLpAAP7nO7xUd3S2+TDnkQCkq+MmO7lusutXPL9Q3bPhjTcAXE6pJgyyGMCon9i6H2Hv9kzsBnubN5vdRBbRMEB1CbDc05LsXB9lj3CQK8U9kfbLmXHUUweRK/eCreHBxoFAfVsClmWed+RqNvErLd6TzAxjL1eX5rPdlIH1LTm7bTul7J3MXVi4I5auopFWp8pi+cXAhkD8fGBheJlfHViZcDJurr8vWyO2qg2tKgDQxR1iSzgDPZiod0Ur0vZQtLKhH46tAAAA","source":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_a4a9e3cae8a4.png","page":"https://github.com/vargHQ/skills/tree/main/varg-character-cartoon","credit":"varg","rights":"varg-owned","note":"Gary Pruitt model sheet in the yellow 2D sitcom look, described without the show's name, Nano Banana 2.1 (2026-10-27)","bytes":43766,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-podcast-video","slug":"varg-podcast-video","name":"Turn a script into a two-person podcast video","type":"skill","status":"beta","stream":"originals","category":"talking-head","tags":["podcast","dialogue","characters","native-audio","education"],"summary":"Two-character podcast or debate clips: one studio set, locked camera angles, MiniMax H3 Max with native audio.","description":"A 7-step recipe for two-character dialogue videos: write 5 s scenes with one short line each, generate an empty studio set, compose a wide shot from the character, outfit and set references, derive close-ups and a cold-light \"truth cutaway\" from that wide shot, then animate each scene with minimax_h3_max image-to-video speaking the line natively. It records what fails (over-the-shoulder shots rearrange the characters; describing appearance swaps the person) and ends with an HTML storyboard that plays every scene in order. The file has no YAML frontmatter yet and calls the legacy `/v1` endpoints, so both need fixing before it is published.","useWhen":["Two-character conversation videos: podcast, interview, debate","Educational \"lie vs truth\" formats","Multi-scene videos where characters must stay consistent across camera angles","Short-form pieces with 5 s scenes and punchy lines"],"notFor":["Over-the-shoulder shots: the model rearranges the characters","Long monologues: one short line per 5 s scene"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-podcast-video","repo":"vargHQ/skills","path":"varg-podcast-video","license":"MIT"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["nano_banana_pro","minimax_h3_max"],"requires":["varg API key","A reference image per character"],"cost":{"typicalCredits":"~450 credits / run (estimate)","note":"The skill's figure for one 9-scene question (5 stills + nine 5 s minimax_h3_max clips); a 12-question episode is ~5,400 credits. Written against the legacy v1 API, so re-check with estimate_cost."},"refs":[{"role":"identity","label":"Reference image per character","kind":"image","license":"user-supplied","note":"Referenced by position (\"left character from ref 1\"); never describe appearance in the prompt"},{"role":"style","label":"Outfit reference (optional)","kind":"image","license":"original","note":"Clothing generated on a mannequin when the character photo has the wrong outfit"},{"role":"location","label":"Empty studio set","kind":"image","license":"original","note":"No people; the base for the wide shot"},{"role":"first-frame","label":"Wide shot of both characters","kind":"image","license":"original","note":"First reference for every camera angle: \"exact same scene, ONLY change the camera\""}],"files":["SKILL.md"],"updatedAt":"2026-09-02","addedAt":"2026-10-26","preview":{"kind":"wave","hue":40,"text":"So... is Omega-3 actually important?"},"adds":"visual","skillName":"varg-podcast-video","install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-podcast-video -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-podcast-video -a cursor -y","gemini-cli":"npx skills add vargHQ/skills --skill varg-podcast-video -a gemini-cli -y","openclaw":"npx clawhub@latest install varg-podcast-video"},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/100daa58d70d/varg-podcast-video.mp4","w":720,"h":410,"duration":8,"blur":"data:image/webp;base64,UklGRvgAAABXRUJQVlA4IOwAAAAwBgCdASogABIAPtFcpk6oJSMiKAqpABoJYwCdMoM6ORUHlAZrrHyuzI63ctezs7q50LAgPJQeUCCAAP71d7q7FURnZBz7AoARMRGadtxSWaOyxCTaNFuPwXzx7VJmCo+RWGpD3dJdge/GJpowKkrv3uxasrXsygwTTsb3rfc3UVZ4aYukV0XbLW/uVjKOuzWJOUkYP82QEabdz0ho7AN/gFQUXFiXMH/6ilkibJuMBdDnVuR7BmUwspSTx0Ge2RSAIGzyc6Np6n/fOP+ell1WiWqazXUEy8tGeKIDciIFwpX/yHN+Yo9dQYZoAA==","source":"https://uu.varg.ai/templates/omega3-jesus-devil/omega3-podcast.mp4","page":"https://varg.ai","credit":"varg","rights":"varg-owned","note":"From varg's 'Omega-3: Jesus vs The Devil – AI Podcast' template (15 min, minimax-h3-max with native audio) — the skill's own worked example: one studio set, locked close-ups, Jesus asks and the Devil answers. Cut 9.5-17.5 s.","bytes":201829,"addedAt":"2026-10-27"}},{"id":"vargHQ/imessage-video","slug":"varg-imessage-video","name":"iMessage Video","skillName":"imessage-video","type":"skill","status":"beta","stream":"originals","category":"native-ui","tags":["chat-story","ios","ads","deterministic-render","puppeteer"],"summary":"Pixel-perfect iMessage conversation videos from a JSON script: iOS 26 chrome, typing, tapbacks, group chats.","description":"Renders a JSON conversation into a deterministic 1170×2532 mp4 that looks like a real iMessage screen recording, with bubble tails, typing indicators, input-bar typing, tapbacks, link cards, read receipts and group chats. The default `ios26-pro` engine draws every frame as a pure function of time, and reply delays and typing speed come from message length, so one `pace` value replaces hand-tuned delays. Optional in-chat screenshots come from the varg image API; the render itself is local. The engine lives in the private vargHQ/imessage-ad repo.","useWhen":["An \"iMessage ad\" or \"text message video\"","A fake iMessage conversation or chat screen recording","An iOS message mockup video","Turning a scripted dialogue into a shareable vertical clip"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"vargHQ (internal: .agents/skills/imessage-video)","repo":"vargHQ/vargHQ","path":".agents/skills/imessage-video","license":"proprietary"},"agents":["claude-code","codex"],"models":["nano_banana_pro"],"requires":["bun","Chrome (Puppeteer)","ffmpeg","vargHQ/imessage-ad checkout (private)","varg API key (only for in-chat screenshots)"],"cost":{"note":"Free — local deterministic render; optional in-chat screenshots are billed per image by the varg image API."},"files":["SKILL.md"],"updatedAt":"2026-08-05","addedAt":"2026-10-26","preview":{"kind":"chat","hue":212,"text":"yo did you finish that promo??"},"legal":"Recreates Apple's iMessage interface; an Apple trade-dress review is on varg's P0 legal list. The ios26-pro cadence model is adapted (MIT) from nikosmaheras-code/remotion-imessage.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2fc5d178d91b/varg-imessage-video.mp4","w":332,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRiIBAABXRUJQVlA4IBYBAACwBwCdASogAEYAPslWpEunpSOhsBZsyPAZCUABfuSaU1nkDFXog6uivCevt5/23z5L89E0hiQwi3PDsIWc+y0jSDz2oTJ4AP76TH0Gu5RUx51qPy3eRex9xd0OgBk9KMZOLfCE4Nj1xBedjoRPDk6IY31wLihAjsDhq4UdKH9Wp0AAyTeiUVDehgn0YGGQR9Y46V1aQwfrxx3UTPpAzPJyTLR+Vp+nCvAnm2YlD7HUf0ojtn8PWu2sMLCwySYvQ6yGy7IiSX/5iav1f2X/pN6m+u4RJOdTU1P/kbRP5fX5P/b5Id07Mf6T08aUZ4qaKEPX08S1DpXgTxZkC8yAEcwbLaiiI/458xB9NUjYCcvCsnzy1DQgAA==","source":"https://varga.notion.site/add-3979b7e6f38680059a4eec16551e523f","page":"https://varga.notion.site/add-3979b7e6f38680059a4eec16551e523f","credit":"varg","rights":"varg-owned","note":"varg's own iMessage ad (video-ios26-pro-group.mp4, ios26-pro engine, 1170x2532, 24.8 s) from the founder's Notion board: a 'ski trip' group chat with typing indicators, tapbacks, a blue reply bubble and an in-chat varg screenshot. Cut 9-17 s.","bytes":103742,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-templates-section","slug":"varg-templates-section","name":"Templates Gallery Ops","skillName":"varg-templates-section","type":"skill","status":"beta","stream":"originals","category":"tooling","tags":["templates","internal","ops","previews","ffmpeg","r2"],"summary":"Internal runbook for the varg app Templates gallery: publish renders, preview clips, frame-0 posters, shelves.","description":"varg's runbook for the Templates section at `/dashboard/community`: publish a finished render as an approved service template, upload media to R2, generate the ~170 KB preview clip that lets a card autoplay, keep the poster on the video's first frame (checked by PSNR), assign rubrics, and hide a template through `catalog.ts` instead of a destructive DB write. It covers the staging-versus-production split, per-environment API keys and a troubleshooting table of real failures. It needs the private app repo and Supabase service credentials, so it is for the varg team, not for customers.","useWhen":["Adding a template or seeding the Templates/Community gallery","Fixing an empty or miscategorised shelf","Regenerating a preview clip","Fixing a card whose picture jumps when it starts playing","Publishing something from the templates repo into the app"],"notFor":["Un-publishing on production by flipping status: hide the template in catalog.ts instead","Publishing client work into a public gallery without the client's permission"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"vargHQ (internal: .agents/skills/varg-templates-section)","repo":"vargHQ/vargHQ","path":".agents/skills/varg-templates-section","license":"proprietary"},"agents":["claude-code","codex"],"models":["ffmpeg"],"requires":["vargHQ/app checkout (private)","Supabase service key for the target environment","varg API key for the same environment","bun","ffmpeg"],"cost":{"typicalCredits":"~5 credits / preview clip (estimate)","note":"Rendering a new template from scratch is ~300–3,000 credits; a cached re-render ~27."},"files":["SKILL.md"],"updatedAt":"2026-08-05","addedAt":"2026-10-26","preview":{"kind":"grid","hue":95,"text":"9:16 shelves"},"legal":"Client footage (e.g. the tai-chi and formula-care sets built from real actor photos) needs the client's permission before it goes into a public gallery.","adds":"tool","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/067f0870395a/varg-templates-section.webp","w":960,"h":600,"blur":"data:image/webp;base64,UklGRioBAABXRUJQVlA4IB4BAAAwBgCdASogABQAPtFapk0oJSOiMBgIAQAaCWIAyjKDMYwQI/YMA3W3pVAG/TkOzGsu8F1g+jE/yz5wAP7yxWAHOdXSGarjXM9nX446bz8GxM8H66fKs1wzSRGn4tvTHwqRzUAXj3L1j/nKp8bzrbjG9hIBMAL6EkARR5k+kr13+6itc78+yaWvU2rtaXtWT+1sGgrzY0JkU1uFEofI9ioIFyJ0eiwvFMXdHea4h/gvIRkbsOLgSN2BYHIWb3zTLZ8X96p1k340DtuRZxJUDYye5C2sBMJw7FMVNLvvKta+UcrsfjRK23SjRD+OdcsZ4PGopelaQ76h7fC/fHi4oRkfCgVb7Y+wHngMWN2IqRDiOsWAL5LgZ0nsEfrpk2AA","source":"https://varg.ai","page":"https://varg.ai","credit":"varg","rights":"varg-owned","note":"Screenshot of varg's live template gallery on varg.ai (2026-10-26, headless Chrome, reduced motion so cards show their frame-0 posters): rubric chips (UGC Ads, Two-Person Dialogue, Before & After, Product, Memes, Cinematic), shelf labels, duration badges and 'All 39 templates' — the templates, posters, preview clips and shelves this runbook publishes and curates. The dashboard Templates section reads the same templates and catalog overlay.","bytes":73562,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-video-editing","slug":"varg-video-editing","name":"Video Editing Best Practices","skillName":"varg-video-editing","type":"skill","status":"live","stream":"originals","adds":"tool","category":"edit-services","tags":["editing","edit-services","ffmpeg","captions","dubbing","lip-sync","upscale","clips","transcript","v2v","resolve","otio","official"],"summary":"Best practices for editing video with agents: which service for each edit, and the rules that keep cuts clean.","description":"A routing guide your agent reads before it edits footage you already have. For ten editing jobs it names the default service and when to switch: FFmpeg or the varg ffmpeg tool for cuts, word timestamps for talking-head cleanup, OpusClip or a transcript + Gemini pipeline for Shorts, ASS captions through FFmpeg, HyperFrames or Remotion for timelines, varg Recast, Relight and ID-V2V, Runway Aleph or Luma Ray for AI edits, HeyGen, ElevenLabs and Sync Labs for dubbing, Topaz for upscaling, Gemini for QA, and OTIO or the DaVinci Resolve Studio MCP for handing off to an editing app. It also carries the rules that save a re-render: write the edit list before you spend, re-encode for frame-accurate cuts, convert to one frame rate before joining, never overwrite the source, and check frame grabs after every render. The full table, with access, pricing, gotchas and links for 30+ services, is in [references/services.md](https://github.com/vargHQ/skills/blob/main/varg-video-editing/references/services.md).","useWhen":["Editing, cutting, trimming, clipping or reframing footage the person already has","Asked which tool, API or service to edit video with","Captions, subtitles, dubbing, lip sync, upscaling or AI restyle on an existing video","Handing a cut to DaVinci Resolve, Premiere or Final Cut"],"notFor":["Making a new video from a brief (use varg-ai or a format skill)"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-video-editing","repo":"vargHQ/skills","path":"varg-video-editing","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-editing -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-editing -a cursor -y"},"agents":["claude-code","codex","cursor","openclaw","mcp"],"requires":["ffmpeg + ffprobe for local edits","varg API key or MCP for the paid edits it recommends (optional)"],"cost":{"note":"The guide is free; paid edits are billed by the service it picks (on varg, in credits after estimate_cost)"},"runtime":"read before each edit","files":["SKILL.md","references/services.md"],"version":"1.0.0","updatedAt":"2026-10-27","addedAt":"2026-10-27","featured":true,"preview":{"kind":"timeline","hue":25,"text":"cut → captions → dub → upscale"}},{"id":"vargHQ/ffmpeg-mixing","slug":"varg-ffmpeg-mixing","name":"Splice AI clips into a video with FFmpeg","skillName":"ffmpeg-mixing","type":"skill","status":"beta","stream":"originals","category":"editing","tags":["ffmpeg","audio-sync","trim","concat","tooling"],"summary":"Splice generated clips into an original video with ffmpeg without A/V drift: absolute trims, one audio track.","description":"A short lesson from the varg SDK on mixing clips with ffmpeg while keeping sound in sync. Pre-trimming an input with `-ss`/`-t` and then applying relative trims drifted (38 s out instead of 36 s); the fix is to trim every segment from the full original with absolute timestamps, reset with `setpts=PTS-STARTPTS`, scale before trimming, and cut the audio once with `atrim` so the video segments add up to the audio length. It ships a ready `filter_complex` for inserting a generated scene into an original video.","useWhen":["Stitching generated clips into an original video","Inserting scenes at timestamps","Any ffmpeg filter_complex work that trims or concatenates clips against one continuous audio track"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/sdk/tree/main/.claude/skills/ffmpeg-mixing","repo":"vargHQ/sdk","path":".claude/skills/ffmpeg-mixing","license":"MIT"},"agents":["claude-code"],"requires":["ffmpeg"],"cost":{"note":"Free — runs locally, no varg credits."},"files":["SKILL.md"],"version":"1.0.0","updatedAt":"2026-06-08","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":120,"text":"trim · concat · atrim"},"adds":"tool","media":{"type":"none","reason":"The skill's result is a splice that keeps audio in sync; no varg render of such an insert is published, and a silent card clip of a cut would not show what the skill fixes (A/V drift).","searched":["sdk/.claude/skills/ffmpeg-mixing/SKILL.md (no example media)","sdk examples and docs","varg.ai public pages","app marketing constants","founder's Notion cases (showreel assemblies)"],"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-studio-ugc-ads","slug":"varg-studio-ugc-ads","name":"UGC Ad","type":"skill","status":"draft","stream":"originals","category":"ads","tags":["ugc","voiceover","captions","varg-studio","first-ad"],"summary":"A creator-style ad shot like a friend's recommendation: 3 shots, voiceover, captions, end card, no presenter.","description":"Being extracted from varg Studio, where this format is hard-coded today (`formats.ts`); there is no SKILL.md yet. Studio plans three shots (a selfie-style hold near window light, a close-up of the product being applied, a smile to camera with the product in frame) under a voiceover built from lines such as \"Okay, real talk about [pain]\" and \"I started using [product] two weeks ago\", sized at about 7–8 words per 3 seconds (35–40 words for the default 15 s), plus captions and an end card. Draft tier: a product-in-hand still (bria_fibo_edit_1_5_product_holding), a lyria_3_5 music bed, three 5 s minimax_h3_max_turbo shots at 480p, an eleven_v4_turbo voice line and a render; the final tier swaps the shots to kling_v3_standard, and the finish pass upscales with topaz_video. Default hooks: Question, POV, Confession; one of Studio's three first-ad formats.","useWhen":["A creator-style product ad without a talking presenter"],"notFor":["Ads that need someone speaking to camera: use Talking Head"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"vargHQ (internal: studio-app/plugins/varg-studio/src/shared/formats.ts)","repo":"vargHQ/studio-app","path":"plugins/varg-studio/src/shared/formats.ts","license":"proprietary"},"agents":["varg-studio"],"models":["bria_fibo_edit_1_5_product_holding","lyria_3_5","minimax_h3_max_turbo","kling_v3_standard","eleven_v4_turbo","render","topaz_video"],"requires":["varg Studio desktop app (private)","varg account"],"cost":{"note":"Studio quotes every batch in credits on a price card and spends only after the user approves it."},"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":345,"text":"Okay, real talk"},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/7446ec754170/varg-studio-ugc-ads.mp4","w":404,"h":720,"duration":9,"blur":"data:image/webp;base64,UklGRt4BAABXRUJQVlA4INIBAACQCgCdASogADoAPtFaoUyoJSMiLAsxABoJZACvP9H9pGrGqwlAW9hn6yvYjMM5eQO28AGwsayO/A5TaDLkM/2K9aIL/VP8iVKrIEeIEc5WwuSwy+bAI6Em+lnFNgAA/sshR3/BlSIY9h+HjtCvqpe74J+193+IrLm1WEoWfy7P+Lskb8J2M2IVnZBdgp4bGregvZExInyKqbneP1a6xB30FTEjnoOJzGx/af0WXR7xwU2/+U/HgLK0EueHVTvuUoJNmSLZYYSu6ceJGzyiUkeT6ApnacWXu5SZ/NeT2hUuU3oEiEM0KS6nHjQ2D3T7U4Of6xQh66bdXyFaINw7udNKaZA0PYJ5Ik+uJP6qYDhfjMtW1j7e5fA2+ZgqmtOb/Tau+gN3Td0kxPhwQIl0c/8Ca7uYuzRpWX78HvBg1TKsUhdEfFyE8/ebtknqhs7tZeye7yhNm40eYYuMYLv5cdQE/YgXwoSozzcLpRuzUQr3xFjqKjXl8dBYI93rPzjDMbaHSQdmWz6IrSeCPF3RXQuzAIlvPKnV9G9z24HyI53mszmk+Fweh1TpYqwNbneyuAoYBt/apPdg8q+dCF/hXH56acdEHgFfFfa6PoVUHe2s7mAA","source":"https://su.varg.ai/renders/1775267011290_iig0hmqv.mp4","page":"https://varg.ai/ugc-ads","credit":"varg","rights":"varg-owned","note":"varg's 'Talking Head Product Ad' template (kling-v3 + lip-sync, word captions; it sits on the UGC Ads shelf of varg's gallery). The cut (7.8-16.8 s) has the same three beats Studio's UGC format plans: a selfie-style hold with the product, a close-up of it being applied, and back to camera with the product ('You need to try this'). Shows a real third-party product (a CeraVe jar) in a spec ad.","bytes":174498,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-studio-us-vs-them","slug":"varg-studio-us-vs-them","name":"Us vs Them Ad","type":"skill","status":"draft","stream":"originals","category":"ads","tags":["comparison","split-screen","voiceover","captions","varg-studio","first-ad"],"summary":"Your product next to the usual alternative: split frame, product hero, voiceover, captions, end card.","description":"Being extracted from varg Studio, where this format is hard-coded today (`formats.ts`); there is no SKILL.md yet. Shots: a split frame of the usual alternative and the product, a product hero shot and an end card, under a voiceover with lines like \"Them: [alternative]. Us: [product].\" It uses the same three-shot recipe as UGC Ad (draft shots on minimax_h3_max_turbo at 480p, finals on kling_v3_standard, an eleven_v4_turbo voice line, a lyria_3_5 music bed, a topaz_video finish). Default hooks: Us vs Them flash, Price anchor, Bold claim; one of Studio's three first-ad formats.","useWhen":["Positioning a product against the usual alternative"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"vargHQ (internal: studio-app/plugins/varg-studio/src/shared/formats.ts)","repo":"vargHQ/studio-app","path":"plugins/varg-studio/src/shared/formats.ts","license":"proprietary"},"agents":["varg-studio"],"models":["bria_fibo_edit_1_5_product_holding","lyria_3_5","minimax_h3_max_turbo","kling_v3_standard","eleven_v4_turbo","render","topaz_video"],"requires":["varg Studio desktop app (private)","varg account"],"cost":{"note":"Studio quotes every batch in credits on a price card and spends only after the user approves it."},"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"lut","hue":280,"text":"Them vs Us"},"adds":"visual","media":{"type":"none","reason":"No varg render of a split-frame comparison ad exists: the gallery has no template on its Us vs Them shelf (the only one tagged us-vs-them, 'No Excuses', is a dialogue and is pinned to the Dialogue shelf), and making one would need paid generations.","searched":["varg.ai public template gallery (live rubric chips have no Us vs Them)","app/src/views/dashboard/community/catalog.ts and categories.ts","app/scripts/publish-service-template.ts","studio-app/plugins/varg-studio (formats.ts, fixtures/formats posters are drawn mockups)","founder's Notion cases"],"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-studio-before-after","slug":"varg-studio-before-after","name":"Before & After Ad","type":"skill","status":"draft","stream":"originals","category":"ads","tags":["routine","before-after","voiceover","captions","varg-studio","first-ad"],"summary":"A routine before and after with no invented results: morning and night shots, voiceover, captions, end card.","description":"Being extracted from varg Studio, where this format is hard-coded today (`formats.ts`); there is no SKILL.md yet. Shots: the morning routine, the night routine with the product, and the product on the shelf as the end card, under a voiceover that runs \"Before: [pain]…\" then \"After: [product], morning and night\". Studio's rule for this format is no invented results. Same three-shot recipe as UGC Ad; default hooks: Relatability, POV, Curiosity; one of Studio's three first-ad formats.","useWhen":["Showing a routine before and after the product"],"notFor":["Claiming results the product has not shown: the format allows no invented results"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"vargHQ (internal: studio-app/plugins/varg-studio/src/shared/formats.ts)","repo":"vargHQ/studio-app","path":"plugins/varg-studio/src/shared/formats.ts","license":"proprietary"},"agents":["varg-studio"],"models":["bria_fibo_edit_1_5_product_holding","lyria_3_5","minimax_h3_max_turbo","kling_v3_standard","eleven_v4_turbo","render","topaz_video"],"requires":["varg Studio desktop app (private)","varg account"],"cost":{"note":"Studio quotes every batch in credits on a price card and spends only after the user approves it."},"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"lut","hue":55,"text":"Before → After"},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/6fc8cf1c7428/varg-studio-before-after.mp4","w":404,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRgoCAABXRUJQVlA4IP4BAAAwCwCdASogADoAPtFapk2oJSOiLBqpmQAaCUAXZmNm7Nb9dq0bONl1cUfhU4qm1MplxT2mXW9QA8oo212G2iS9ysqXNvYegQ3+Ius+an1BNbzGq/EGPpFyNrlrom1HRt2sQAD+6BYc+Gijplq/AqJmST9TCB9IETV+FmYTbHBSHP8uCHUAoC2NLytBOGdirR7Wt+xUtNpkGg49wyVyiEuHbTY+XV8HfAdDgxS9eRHYKy+GeXRIW101K9MySu3ZPtmik2OVuBWv3ClPXOSuOeEmq0F6jG0lhJ85YEDW0b592lrAHpHYnvsnZRluWc3oaUL8potHnxhmf2ORaBbyvSW+ElT1KumOY/YpPH01MKz5mBJs+elBj2sJ2iN+gjK2dbeEn0C7SX9l9D7QdIKhEf158Ns8wlogYkEnsl1VDdT3+0tPQW1mU17bnuRJuyyexuQszyvOLP6/9yPMiHdFV14Co0z2u9sfroCrtevmn623Pk7NGZ8na7huQOnuiRIJiGCdnHgaRvU8GkSyc5cgd23cfD77Jesn+9rSDgMh5figXWyGnzWARF9jyVVxlRZdQgmgMkReomwQPOvUdan5lI29Oza5xwXyegHBJwzNwzw2f/bMigzFTGndFJOyjTzEiE1wDxdfykvUWJ9duXBZDuhPYvXWI1Q4e4HIfDZwAAA=","source":"https://uu.varg.ai/templates/tai-chi/ep3.mp4","page":"https://varg.ai","credit":"varg","rights":"varg-owned","note":"varg's 'The Bet – Before & After' template (kling-v3, captions; Before & After shelf of varg's gallery): a mirror-selfie 'before' that hard-cuts at 17.1 s to 'Day 28' in identical framing, the after shot chained off the before composite. Cut 12.5-20.5 s. Note: a transformation result, whereas the Studio format itself sticks to morning/night routine shots and invents no results.","bytes":163064,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-studio-product","slug":"varg-studio-product","name":"Product Ad","type":"skill","status":"draft","stream":"originals","category":"product","tags":["ads","packshot","product-loop","voiceover","varg-studio"],"summary":"The product itself: a 360° spin, in hand and a texture close-up, with a voiceover and an end card.","description":"Being extracted from varg Studio, where this format is hard-coded today (`formats.ts`); there is no SKILL.md yet. Shots: a 360° product spin (a pixelcut_looping_video loop at 480p), the product in hand and a texture close-up, under a voiceover with lines like \"This is [product]\". Recipe: a product-in-hand still (bria_fibo_edit_1_5_product_holding), a lyria_3_5 music bed, the loop, two 5 s shots (minimax_h3_max_turbo for drafts, kling_v3_standard for finals), an eleven_v4_turbo voice line and a render, then a topaz_video finish. Default hooks: Newness, Curiosity, Bold claim; Studio also puts a Product ad in a Social Proof slot when the brand kit has no real reviews.","useWhen":["Showing the product itself: spin, in hand, texture"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"vargHQ (internal: studio-app/plugins/varg-studio/src/shared/formats.ts)","repo":"vargHQ/studio-app","path":"plugins/varg-studio/src/shared/formats.ts","license":"proprietary"},"agents":["varg-studio"],"models":["bria_fibo_edit_1_5_product_holding","lyria_3_5","minimax_h3_max_turbo","kling_v3_standard","eleven_v4_turbo","render","topaz_video","pixelcut_looping_video"],"requires":["varg Studio desktop app (private)","varg account"],"cost":{"note":"Studio quotes every batch in credits on a price card and spends only after the user approves it."},"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"logo3d","hue":175,"text":"360° product spin"},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/48a31d44ce9c/varg-studio-product.mp4","w":404,"h":720,"duration":5,"blur":"data:image/webp;base64,UklGRg4CAABXRUJQVlA4IAICAACwCQCdASogADoAPtFgpE4oJaMiKAwBABoJZADE+Uhp/n8FWnYJ6apnVQfFCpcwGJU6c0QdZjj9JAt8BkAcef4FY//CMFSQnfWwviPXpaiAyDbeANaNYAD+/odFhQo8pLCGOSl0v5GR0e7tv6c6krJudzHsrU6figEtZdoVhO7gkwm1EhiEGFJ81uAQs4oVxPQ0vMv+SgDA55jXJ59L0ebE/UIxweUht0ZTl4d+nFW9isXf5KTcrQ9JkXRQeuqzYznMYlKbl18sYnxDNO1n6qxfXmTBIrlrAngtHPspfoUkF2mG6QzNetfvREwhfCph504h3AwJA1jByemUQIv+Bn6PJJadwDX3zT6Nmwk0UDDsSWJ6uv5NVg+w8T6BiqEZIHORMVoxMxXy2hf0YNm1m6sqYx8fM/JOFuoHlBrWRfoc0EqGMosD394uZPe7I6GnfDR0Z3lO/bX7cTUSP4+faIuhqE1Ej3+W8webisracfjxi9D5/JYHyVK4HRCL1B4MYS50WOqYpZQXLArazPHMJRVs9+EGwROxUv2Li7h2JgZ5gcXzmOz1V6/jzRFuHf3Uvb9AwOn7GB+48CCT7wJ8xLY49eDpIJuKrK80ENKtfatM3S+/9WpJdCm6Y1HxcXRc6a9ONa9n1RpKLAbO7k56v/mjJ22jJEaiPC4bKhuGSQXTqUQA","source":"https://s3.varg.ai/files/db4ef430-d0c7-403e-a8e2-722292a92e8c/file_f600204d5e7c.mp4","page":"https://varg.ai","credit":"varg","rights":"varg-owned","note":"varg's 'High-Speed Splash – Freeze + Reverse' product template (Nano Banana 2 first frame + Seedance 2.5 with native audio, identity-locked stand-in can): the can plunges into a water tank, the splash freezes, then time reverses and it rises out dry. Full 5 s clip.","bytes":253485,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-studio-social-proof","slug":"varg-studio-social-proof","name":"Social Proof Ad","type":"skill","status":"draft","stream":"originals","category":"ads","tags":["reviews","testimonial","quote-card","voiceover","varg-studio"],"summary":"A real review from your brand kit, read over the product: quote card, product in hand, voiceover, end card.","description":"Being extracted from varg Studio, where this format is hard-coded today (`formats.ts`); there is no SKILL.md yet. It quotes only real reviews stored in the brand kit; without one, Studio turns the slot into a Product ad and notes \"Add real reviews in Brands to quote them\". Shots: an on-screen quote card, the product in hand and an end card, under a voiceover that reads the review back ([first name] wrote: \"[quote]\"). Same three-shot recipe as UGC Ad; default hooks: Social proof, Question, Confession.","useWhen":["Turning a real customer review into an ad"],"notFor":["Brands with no real reviews in the brand kit: the slot becomes a Product ad"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"vargHQ (internal: studio-app/plugins/varg-studio/src/shared/formats.ts)","repo":"vargHQ/studio-app","path":"plugins/varg-studio/src/shared/formats.ts","license":"proprietary"},"agents":["varg-studio"],"models":["bria_fibo_edit_1_5_product_holding","lyria_3_5","minimax_h3_max_turbo","kling_v3_standard","eleven_v4_turbo","render","topaz_video"],"requires":["varg Studio desktop app (private)","varg account","At least one real review in the brand kit"],"cost":{"note":"Studio quotes every batch in credits on a price card and spends only after the user approves it."},"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"cards","hue":140,"text":"On-screen quote card"},"adds":"visual","media":{"type":"none","reason":"No varg render with an on-screen review or testimonial exists: the gallery has no template on its Social Proof shelf, and the Studio format only quotes real reviews from a brand kit, so a stand-in would be invented.","searched":["varg.ai public template gallery (live rubric chips have no Social Proof)","app/src/views/dashboard/community/categories.ts and catalog.ts","app/scripts/publish-service-template.ts","studio-app/plugins/varg-studio (formats.ts, fixtures/formats posters are drawn mockups)","founder's Notion cases"],"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-studio-talking-head","slug":"varg-studio-talking-head","name":"Talking Head Ad","type":"skill","status":"draft","stream":"originals","category":"talking-head","tags":["ads","presenter","lip-sync","b-roll","varg-studio"],"summary":"A presenter speaks to camera about the product: lip-synced portrait, two b-roll shots, captions, end card.","description":"Being extracted from varg Studio, where this format is hard-coded today (`formats.ts`); there is no SKILL.md yet. Recipe: a presenter portrait (nano_banana_2), a lyria_3_5 music bed, an eleven_v3 presenter voice lip-synced with veed_fabric_1_0, and two 5 s b-roll shots of the product and the product in use (minimax_h3_max_turbo for drafts, kling_v3_standard for finals), then a render and a topaz_video finish. The voiceover uses lines like \"So, [pain]. I tried [product]\". Default hooks: Question, Confession, Bold claim.","useWhen":["A presenter talking to camera about the product"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"vargHQ (internal: studio-app/plugins/varg-studio/src/shared/formats.ts)","repo":"vargHQ/studio-app","path":"plugins/varg-studio/src/shared/formats.ts","license":"proprietary"},"agents":["varg-studio"],"models":["nano_banana_2","lyria_3_5","eleven_v3","veed_fabric_1_0","minimax_h3_max_turbo","kling_v3_standard","render","topaz_video"],"requires":["varg Studio desktop app (private)","varg account"],"cost":{"note":"Studio quotes every batch in credits on a price card and spends only after the user approves it."},"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"avatar","hue":300,"text":"Presenter to camera"},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/8a4255b9e16d/varg-studio-talking-head.mp4","w":404,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRugBAABXRUJQVlA4INwBAAAwCgCdASogADoAPtFgo02oJaMiLBVbMQAaCWIAsv+SApBM9K9ZK2tJ0rV+mM+ILZ0SwZLRR8XeaMVrIs8TvteWDh/Le0RigxEomC37GIeabWuop/bBZo+rDtQA/v358IxSjh+LsaZTwPqxl72irDrnTA8kzSJU+vqONO/dyduSjAYN96qaeN24WGY7AlDDUiDOl9WZB1S4Ru0jm2I8M2wne6it+gnxcQa5Sraj05JViKEmott+IMB+cCApkEs/wXJeE3iCx5ccvWfjLpEYp5t6HAjGre3ssg3NhP1cslFV/HzPrUAkTGgmhuZrjESk3Vj6e9ggXxRoDH+YXyCHdhBF/JaNfYXBtQx0TDINmLlnFQnkxtvm7rOWbWq4rRV/LQXkq5U/cpG/nV+K3sqFHnvpPAm6DvqkU1ORXICdvkbXPqKmOzr+bxOo3H42WZ1ZWAHrFtNcwmBcUSO65EruvxF4WpmpNqIlGNqR/sZ5CyINuDpW4O3gzEThx9UjeND3GIpmNOUKyK+v8S2NUyARwivXB6PZyQoPx74mANZn+Ts78vnY7SKI07QvwE4Z1oEq07eeMmN/Wr2EVho+yUryx+8ZwOPquYCi+FX00HvUI2Q1LG6AYWFWm86OStQIAA==","source":"https://s3.varg.ai/renders/1775534627355_talking_head_promo.mp4","page":"https://varg.ai/ugc-ads","credit":"varg","rights":"varg-owned","note":"varg's 'Talking Head Promo' template (its TSX, talking-head-varg-promo.tsx, is also shown on varg.ai/platform): a Soul presenter portrait voiced with ElevenLabs v3 and lip-synced with VEED Fabric 1.0 (the same voice and lip-sync models as Studio's Talking Head recipe), a music bed, word-by-word captions and a logo overlay — 'Varg AI is just insane…'. First 8 s of 11 s.","bytes":201519,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-studio-dialogue","slug":"varg-studio-dialogue","name":"Two-Person Dialogue Ad","type":"skill","status":"draft","stream":"originals","category":"talking-head","tags":["ads","dialogue","presenter","lip-sync","varg-studio"],"summary":"Two people talk it through, one of them already a fan: two lip-synced presenters, captions, end card.","description":"Being extracted from varg Studio, where this format is hard-coded today (`formats.ts`); there is no SKILL.md yet. Recipe: two presenter portraits (nano_banana_2), a lyria_3_5 music bed, and two eleven_v3 presenter voices each lip-synced with veed_fabric_1_0, then a render and a topaz_video finish. Shots: the first person asks, the second answers with the product, and both hold the product on the end card. Default hooks: Question, Us vs Them flash, Curiosity.","useWhen":["A two-person conversation that sells the product"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"vargHQ (internal: studio-app/plugins/varg-studio/src/shared/formats.ts)","repo":"vargHQ/studio-app","path":"plugins/varg-studio/src/shared/formats.ts","license":"proprietary"},"agents":["varg-studio"],"models":["nano_banana_2","lyria_3_5","eleven_v3","veed_fabric_1_0","render","topaz_video"],"requires":["varg Studio desktop app (private)","varg account"],"cost":{"note":"Studio quotes every batch in credits on a price card and spends only after the user approves it."},"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"avatar","hue":230,"text":"First person asks"},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/c8158b74e586/varg-studio-dialogue.mp4","w":404,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRjYCAABXRUJQVlA4ICoCAAAwCgCdASogADoAPsFKnEunpCKhs/zNUPAYCWYAwB8TAsyA7OBZD2OZH2yhuevUbaSstB7V85ZJZvxxrQ97oyhtXrba9QIvoYpBPsLZ9MAWOPR4ofNBH1PN2AAA/kILCFZonPiuXBJdX932KH0lo4dR2q3dk6O1Jl8XZOhxFUtCMRpvjxcnjtccJUg2oG+yPvBbwpY2VGeB0N0PAwBZtd9g+pm5cihLm23VbB1rTnAF7heqRHL4/p0GpEaylMd4soIamedKsu4BrUpHzR+tMBbRi46VMcrZ2p322v1UBwQiqpfl5gahulUmAZBPosn13sXi0azVSq+BGzIbnW75MeNE/xrFf3cCZAspOMHc4N17jgFh0TEYPugFdudXaftam9EDIQRpeG4yfopCkGr0GYSr69M8RLXs4FlyeE6VjEiifqXUw42wPiwuuZ7Zl+jbjsFD+r3br18fuVRWUDt/boDhVxVMqZEgIYvJd+fEWgfy+YWs/sg3P5Zhk6cl0DMuPgvK/HRna6whGZnkmeWUeb8DTPJfqf9REK+1Ir2y3RQCnJjq0GIr0D6hr8wVZOWVDzfspBfXlk/D544KKRdY/NY87IMmtNgN7aNlC5P3soTi/7n3a2fnqmKoPMXVsani/v5SwYvjJ5ANx0i0nMV5VPY94OPZxhJ+Ou3P7BO4PY+iQHOr4sCvjX7CQ/7YSW7FVfhuZOFBtFWLl28MfaGJuPVr8hW7upqHaYAAAA==","source":"https://uu.varg.ai/templates/tai-chi/ep5.mp4","page":"https://varg.ai","credit":"varg","rights":"varg-owned","note":"From varg's 'No Excuses – Long-Form Dialogue' template (88 s, kling-v3 with native dialogue and captions; pinned to the Two-Person Dialogue shelf of varg's gallery): a walk-and-talk where one woman raises the doubt and the other, already a fan, answers. Cut 28.5-36.5 s.","bytes":280216,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-studio-memes","slug":"varg-studio-memes","name":"Meme Ad","type":"skill","status":"draft","stream":"originals","category":"ads","tags":["memes","humor","voiceover","captions","varg-studio"],"summary":"A familiar meme format with your product as the punchline: setup shot, punchline shot, voiceover, captions.","description":"Being extracted from varg Studio, where this format is hard-coded today (`formats.ts`); there is no SKILL.md yet. Two shots (the setup, then the product as the punchline) under a voiceover in the pattern \"Me, ignoring [pain] for months\" / \"Also me, finally trying [product]\". Recipe: a lyria_3_5 music bed, two 5 s shots (minimax_h3_max_turbo for drafts, kling_v3_standard for finals), an eleven_v4_turbo voice line, a render and a topaz_video finish. Default hooks: Pattern interrupt, Relatability, POV.","useWhen":["A meme-format ad with the product as the punchline"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"vargHQ (internal: studio-app/plugins/varg-studio/src/shared/formats.ts)","repo":"vargHQ/studio-app","path":"plugins/varg-studio/src/shared/formats.ts","license":"proprietary"},"agents":["varg-studio"],"models":["lyria_3_5","minimax_h3_max_turbo","kling_v3_standard","eleven_v4_turbo","render","topaz_video"],"requires":["varg Studio desktop app (private)","varg account"],"cost":{"note":"Studio quotes every batch in credits on a price card and spends only after the user approves it."},"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":75,"text":"The setup → the punchline"},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0f0720b8263e/varg-studio-memes.mp4","w":404,"h":720,"duration":5,"blur":"data:image/webp;base64,UklGRooBAABXRUJQVlA4IH4BAAAQCQCdASogADoAPtFepk2oJSOiKAwBABoJQBdmamr/Igy1A4fO9ITxHBfGNV+xtxlkGPUH5Iex4xp5v83+HI5ZFn9rrVbtdvsKUzKVVJ89aAAA/v5tYBfRFWEOgVgujfjIFLMKCQfDI25YiXrl8SJVU4bkbCYFHoT0707OS/Eq//6u6KwqzshoTW61ACsHHznXjys5Mqo0P2GZGzLywDjAKX1s4MCn9Cq6JVb81QMtHODHQI9GeaJEv4aFCWhid+aK87kfKPY4k5Iag6PnI552EyRwdiKfnf29CAFBfzvzk0U9l/pQiezjvnx4/mHi3OnXd3dQh0iqsQKP1g1qJATmjaDrpE6Ia+GocDiH6Qhe+37h1YwQ6TZ399jvh2eX0ohpjyOVXCAhI0aM3BWgnkszv6jwZs09T9lWik57AvVIvKG4qBVpS7FDcgfVYWg/foAbi0epWJwFYM2zW5bHxi8Xlqm+s/DqkkJcaLyZaH9EcJjmsoYHwHKFirrWAAAA","source":"https://s3.varg.ai/files/db4ef430-d0c7-403e-a8e2-722292a92e8c/file_0ca920d85a22.mp4","page":"https://varg.ai","credit":"varg","rights":"varg-owned","note":"varg's 'Ostrich – One Gulp' template (tagged memes + product; Seedance 2.5, identity-locked can): an ostrich chugs the whole can in one swallow and drops it — the product as the punchline. Full 5 s clip.","bytes":196510,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-studio-cinematic","slug":"varg-studio-cinematic","name":"Cinematic Ad","type":"skill","status":"draft","stream":"originals","category":"ads","tags":["ads","mood","music","voiceover","varg-studio","cinematic"],"summary":"Moody, high-polish shots that sell the feeling: wide establishing shot, slow push-in, close-up, end card.","description":"Being extracted from varg Studio, where this format is hard-coded today (`formats.ts`); there is no SKILL.md yet. Shots: a wide establishing shot, a slow push-in on the product, and a close-up detail with the end card, under a quiet voiceover (\"[season], slowed down\", \"[product], one quiet step\"). Same three-shot recipe as UGC Ad (minimax_h3_max_turbo drafts, kling_v3_standard finals, an eleven_v4_turbo voice line, a lyria_3_5 music bed, a topaz_video finish). Default hooks: Curiosity, Newness, Pattern interrupt.","useWhen":["A mood-first ad that sells the feeling rather than features"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"vargHQ (internal: studio-app/plugins/varg-studio/src/shared/formats.ts)","repo":"vargHQ/studio-app","path":"plugins/varg-studio/src/shared/formats.ts","license":"proprietary"},"agents":["varg-studio"],"models":["bria_fibo_edit_1_5_product_holding","lyria_3_5","minimax_h3_max_turbo","kling_v3_standard","eleven_v4_turbo","render","topaz_video"],"requires":["varg Studio desktop app (private)","varg account"],"cost":{"note":"Studio quotes every batch in credits on a price card and spends only after the user approves it."},"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"film","hue":10,"text":"Slow push-in on the product"},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a866b5f22e0f/varg-studio-cinematic.mp4","w":540,"h":720,"duration":6.6,"blur":"data:image/webp;base64,UklGRu4AAABXRUJQVlA4IOIAAABwBQCdASogACoAPtFWoUwoJKMiMBVdUQAaCWIAv+xii6oie9C3BaMvOx99bzMoFT+SD5zAAP7tZ/WLWPzLlYno+Lxiugz/MpKXyPyOwhutf/Du5vYZJtuDq9ksX0nPZENijOlWWkbaGOprVWok1tmMZN3uyMoGu7pi1cydigcptWZ56FQqjtR6oFrDFJHRKqMBm9z8ByCmrO7UbWhAXgXzXvgPgUFFvqUC5jSyiCOe6XbfurZbXl14bbijZBXPGuiWdHCt6bBdM+OL14mFqVxkDbp9yIuYhiyf0sTgMVKQAAAA","source":"https://s3.varg.ai/files/db4ef430-d0c7-403e-a8e2-722292a92e8c/file_3abbdfd2da52.mp4","page":"https://varg.ai","credit":"varg","rights":"varg-owned","note":"varg's 'Balloon Lift – Cliff Above the Clouds' template (cinematic + product; Seedance 2.5 with native audio): a sea of clouds at dawn, the can tied to balloons lifts off a stone ledge and drifts away. Full 6.6 s clip.","bytes":144500,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-studio-ad-hooks","slug":"varg-studio-ad-hooks","name":"Ad Hook Styles","type":"ref-pack","status":"draft","stream":"originals","category":"ads","tags":["hooks","copywriting","openers","editing","varg-studio"],"summary":"Studio's 12 ad hook styles with copy templates, brand-kit gates and the Hook Lab recipe for new 3 s openers.","description":"Being extracted from varg Studio, where the hook bank is hard-coded today (`formats.ts`, `plan-writer/copy.ts`); there is no SKILL.md yet. Each of the 12 styles has copy templates filled from the brand kit: a hook stays within 60 characters, banned brand words are scrubbed, and a style that lacks its input (Bold claim needs claims, Price anchor a price, Social proof a real review) falls back to Question, POV, Curiosity, then Pattern interrupt. Every format has three default styles, and a batch writes three hooks per format. \"New hooks\" (Hook Lab) re-shoots only the opener: a 3 s shot (minimax_h3_max_turbo at 480p for drafts, kling_v3_standard for finals), a hook voice line and a render, five at a time by default across Question, POV, Bold claim, Us vs Them flash and Pattern interrupt.","useWhen":["Writing or testing new openers for an existing ad","Choosing hook styles for an ad format"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"vargHQ (internal: studio-app/plugins/varg-studio/src/shared/formats.ts)","repo":"vargHQ/studio-app","path":"plugins/varg-studio/src/shared/formats.ts","license":"proprietary"},"agents":["varg-studio"],"models":["minimax_h3_max_turbo","kling_v3_standard","eleven_v4_turbo","render"],"requires":["varg Studio desktop app (private)","A brand kit (claims, a price and real reviews unlock three of the styles)"],"cost":{"note":"Studio quotes every batch in credits on a price card and spends only after the user approves it."},"refs":[{"role":"technique","label":"Question","kind":"text","license":"original","note":"e.g. \"Still dealing with [pain]?\", \"Why did nobody tell me about [product]?\""},{"role":"technique","label":"POV","kind":"text","license":"original","note":"e.g. \"POV: you finally found [product]\""},{"role":"technique","label":"Bold claim","kind":"text","license":"original","note":"Needs a claim in the brand kit; e.g. \"[claim]. That's [product].\""},{"role":"technique","label":"Us vs Them flash","kind":"text","license":"original","note":"e.g. \"Them: [alternative]. Us: [product].\", \"Ten steps vs one.\""},{"role":"technique","label":"Pattern interrupt","kind":"text","license":"original","note":"e.g. \"Stop scrolling if you have [pain]\"; \"Wait. Watch this first.\" is also the safe fallback"},{"role":"technique","label":"Confession","kind":"text","license":"original","note":"e.g. \"I was wrong about [product]\""},{"role":"technique","label":"Price anchor","kind":"text","license":"original","note":"Needs a price or a price claim; e.g. \"[product]: [price]. That's it.\""},{"role":"technique","label":"Social proof","kind":"text","license":"original","note":"Needs a real review; quotes it as \"[quote]\" — [first name]"},{"role":"technique","label":"Curiosity","kind":"text","license":"original","note":"e.g. \"The [noun] I didn't know I needed\""},{"role":"technique","label":"Warning","kind":"text","license":"original","note":"e.g. \"Don't buy another [noun] until you see this\""},{"role":"technique","label":"Newness","kind":"text","license":"original","note":"e.g. \"Just dropped: [product]\""},{"role":"technique","label":"Relatability","kind":"text","license":"original","note":"e.g. \"Anyone else fighting [pain]?\""}],"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"cards","hue":315,"text":"Question · POV · Bold claim"},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b91f267bea61/varg-studio-ad-hooks.mp4","w":720,"h":426,"duration":3.4,"blur":"data:image/webp;base64,UklGRsgAAABXRUJQVlA4ILwAAAAwBQCdASogABIAPtFcpEyoJaOiMBgIAQAaCWIAAJJ/dnRz7mPdWS0t4Mw3cQtMPaRCegD+4fEHT0S9/cje07zNttNihQdxhpVlr7pLNsi1dD2wqJId0BLjzWAs9upZLNoIH1YuaRHrqRlnqMZ3DFTYbmCJDTVOIdA+2XwSPft9eCzFki08XpssKMGNjJ24FzX3IT7FBTCj+OPb3fU1vwS2R2zvOVPUeoICkWdN5AJhtwYAjghGwihdmAAAAA==","source":"built locally: varg-hook-variants-triptych.mp4","credit":"varg","rights":"varg-owned","note":"Three hook variants of one varg demo ad (luxury car rental, s3.varg.ai/showreel/variations/hook1_cta1.mp4, hook6_cta1.mp4, hook9_cta1.mp4), first 3.4 s side by side: each opens on its own 2 s hook — 'This costs less than you think', 'Chase sunsets, not payments', 'Find your escape route' — then all three cut to the same body shot, the way Hook Lab re-shoots only the opener. Made with varg's earlier tools (Nov 2025), before Studio; the cars are Porsches.","bytes":158346,"addedAt":"2026-10-27"}},{"id":"vargHQ/varg-video-edit-library","slug":"varg-video-edit-library","name":"Video editing skills for Claude Code and AI agents","skillName":"varg-video-edit-library","type":"skill","status":"live","stream":"originals","adds":"tool","category":"edit-services","tags":["editing","cuts","transitions","titles","lower-thirds","cta","ui","cursors","devices","code","agent-flows","charts","logos","backgrounds","ffmpeg","hyperframes","remotion","capcut","official"],"summary":"206 named edits with recipes for FFmpeg, HyperFrames, Remotion and CapCut: cuts, transitions, titles, UI, numbers.","description":"The library behind every take card on Edit a video. Your agent reads one reference file per rubric and builds the edit you name: 26 cuts (J- and L-cuts, match cuts, jump-zoom punch-ins, speed ramps, freeze frames), 60 transitions (CapCut-style zooms, whips, glitches, light leaks and masks, every FFmpeg `xfade`, Remotion `TransitionSeries`, HyperFrames and GL shader transitions, OTIO and DaVinci Resolve hand-off), and 120 takes for showing a product: headlines and lower thirds, quotes and reviews, end cards and CTAs, UI walkthroughs, cursors and clicks, device mockups, code and terminal screens, AI agent flows, numbers and charts, customer logos, grids and backdrops. Each take gives the look, when to use it, the common mistake, timings, the recipe per engine and the open registry components that build it. Index: [SKILL.md](https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/SKILL.md).","useWhen":["Asked for a transition, cut, title, lower third, testimonial, end card or CTA while editing","Showing a product: screen-recording zoom, cursor, phone or laptop mockup, code or terminal, agent workflow","Animated numbers, charts, logo walls, carousels or backgrounds in a video"],"notFor":["Choosing an editing service (varg-video-editing)","Generating new footage (varg-ai)"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/tree/main/varg-video-edit-library","repo":"vargHQ/skills","path":"varg-video-edit-library","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","codex","cursor","openclaw","mcp"],"requires":["ffmpeg for the FFmpeg recipes","Node for HyperFrames and Remotion (optional)"],"cost":{"note":"Free — local renders"},"runtime":"read the one reference you need","files":["SKILL.md","references/cuts.md","references/transitions.md","references/titles.md","references/quotes.md","references/end-cards.md","references/ui.md","references/cursors.md","references/devices.md","references/code.md","references/agent-flows.md","references/numbers.md","references/logo-walls.md","references/galleries.md","references/backdrops.md"],"version":"1.0.0","updatedAt":"2026-10-28","addedAt":"2026-10-28","featured":false,"preview":{"kind":"timeline","hue":300,"text":"cut → whip → title → CTA"}},{"id":"heygen-com/figma","slug":"hyperframes-figma","name":"HyperFrames Figma","skillName":"figma","type":"skill","status":"live","stream":"vendors","category":"brand-motion","tags":["figma","design-to-video","shaders","hyperframes"],"summary":"Turn a Figma link into video: rendered assets, brand tokens, components and storyboard frames rebuilt as motion.","description":"Brings Figma files into a HyperFrames project: rendered assets and brand tokens, rebuilt components, and storyboard frames treated as keyframe states to animate between rather than as slides. It also covers Figma shaders and connector-assisted motion, with a `verify-motion` script to check the result.","useWhen":["Someone pastes a figma.com link","Using a Figma frame, logo or brand kit in a video","Animating a Figma storyboard"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/skills/figma","repo":"heygen-com/hyperframes","path":"skills/figma","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add heygen-com/hyperframes\nclaude plugin install hyperframes@hyperframes","codex":"npx skills add heygen-com/hyperframes --skill figma -a codex","cursor":"npx skills add heygen-com/hyperframes --skill figma -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes --skill figma -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js 22+","Figma access (FIGMA_TOKEN or the Figma connector)"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","scripts/verify-motion.mjs"],"stats":{"installs":337900,"stars":73064,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-21","addedAt":"2026-10-26","preview":{"kind":"cards","hue":265},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/151a57263eb7/hyperframes-figma.mp4","w":720,"h":404,"duration":9.4,"blur":"data:image/webp;base64,UklGRr4AAABXRUJQVlA4ILIAAAAQBQCdASogABIAPtFWpEuoJKOhsAgBABoJaTcAAD5AZCK39FxgoJWGmc0Ybo7+2b4AAP7zT9ew4pj7NimzZv6NqW9PpKlkBpwXu18vIrPRwPclSaa/J3BcWzVEaNboHjnqXV5e7ppGyoRmSk34q+NWIbXfotB9VnM5jWdVt2l5Zk0wVkjW9ILD5lNGztyOztNnWSyoiOwQW/KSGdum8hXNn+sk9xDdLr9nESZ6YeKZRwAA","source":"https://static.heygen.ai/hyperframes-oss/docs/images/showcase/figma-to-html-demo-v1.mp4","page":"https://hyperframes.heygen.com/guides/figma","credit":"HeyGen (HyperFrames)","rights":"publisher-repo","note":"Official docs demo: a Figma frame's PNG export beside the same design imported as working HTML; only the imported side takes input and signs in","bytes":41927,"addedAt":"2026-10-27"}},{"id":"heygen-com/hyperframes","slug":"hyperframes","name":"HyperFrames","skillName":"hyperframes","type":"skill","status":"live","stream":"vendors","category":"explainers","tags":["brand-motion","kinetic-type","captions","html-to-video","gsap","motion-graphics"],"summary":"Turn HTML, CSS and seekable animation into deterministic MP4s: launch films, explainers, captions, title cards.","description":"The entry skill for HyperFrames, HeyGen's open-source framework that renders HTML compositions to video by seeking a paused timeline frame by frame, so every render is identical. It carries the composition contract (`class=\"clip\"`, `data-start`/`data-duration`, one registered timeline per scene), the plan → check → snapshot → render work loop, and a routing table into references for launch films, explainers, music videos, charts, vertical clips, 3D and captions. It ships 13 frame presets with caption skins as starting looks.","useWhen":["Making, editing or rendering any video with HyperFrames","Launch films, explainers, music videos, chart or map videos","Captions, title cards and overlays rendered from HTML","Vertical social clips from a brief, a website or a PR"],"notFor":["Live slide decks (use HyperFrames Slideshow)","Projects that must stay in Remotion (use the Remotion skills)"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/skills/hyperframes","repo":"heygen-com/hyperframes","path":"skills/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add heygen-com/hyperframes\nclaude plugin install hyperframes@hyperframes","codex":"npx skills add heygen-com/hyperframes --skill hyperframes -a codex","cursor":"npx skills add heygen-com/hyperframes --skill hyperframes -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes --skill hyperframes -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js 22+","FFmpeg"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","assets/frame-presets/biennale-yellow/caption-skin.html","assets/frame-presets/biennale-yellow/frame-showcase.html","assets/frame-presets/biennale-yellow/FRAME.md","assets/frame-presets/blockframe/caption-skin.html","assets/frame-presets/blockframe/frame-showcase.html","assets/frame-presets/blockframe/FRAME.md","assets/frame-presets/blue-professional/caption-skin.html","assets/frame-presets/blue-professional/frame-showcase.html","assets/frame-presets/blue-professional/FRAME.md","assets/frame-presets/bold-poster/caption-skin.html","assets/frame-presets/bold-poster/frame-showcase.html","assets/frame-presets/bold-poster/FRAME.md","assets/frame-presets/broadside/caption-skin.html","assets/frame-presets/broadside/frame-showcase.html","assets/frame-presets/broadside/FRAME.md","assets/frame-presets/capsule/caption-skin.html","assets/frame-presets/capsule/frame-showcase.html","assets/frame-presets/capsule/FRAME.md","assets/frame-presets/cartesian/caption-skin.html","assets/frame-presets/cartesian/frame-showcase.html","assets/frame-presets/cartesian/FRAME.md","assets/frame-presets/cobalt-grid/caption-skin.html","assets/frame-presets/cobalt-grid/frame-showcase.html","assets/frame-presets/cobalt-grid/FRAME.md","assets/frame-presets/code-editorial/caption-skin.html","assets/frame-presets/code-editorial/fonts/EBGaramond-400.woff2","assets/frame-presets/code-editorial/fonts/EBGaramond-700.woff2","assets/frame-presets/code-editorial/fonts/Inter-400.woff2","assets/frame-presets/code-editorial/fonts/Inter-700.woff2","assets/frame-presets/code-editorial/fonts/JetBrainsMono-400.woff2","assets/frame-presets/code-editorial/fonts/JetBrainsMono-700.woff2","assets/frame-presets/code-editorial/fonts/OFL-eb-garamond.txt","assets/frame-presets/code-editorial/fonts/OFL-inter.txt","assets/frame-presets/code-editorial/fonts/OFL-jetbrains-mono.txt","assets/frame-presets/code-editorial/frame-showcase.html","assets/frame-presets/code-editorial/FRAME.md","assets/frame-presets/coral/caption-skin.html","assets/frame-presets/coral/frame-showcase.html","assets/frame-presets/coral/FRAME.md","assets/frame-presets/creative-mode/caption-skin.html","assets/frame-presets/creative-mode/frame-showcase.html","assets/frame-presets/creative-mode/FRAME.md","assets/frame-presets/daisy-days/caption-skin.html","assets/frame-presets/daisy-days/frame-showcase.html","assets/frame-presets/daisy-days/FRAME.md","assets/frame-presets/editorial-forest/caption-skin.html","assets/frame-presets/editorial-forest/frame-showcase.html","assets/frame-presets/editorial-forest/FRAME.md","references/captions.md","references/film.md","references/format.md","references/look.md","references/motion.md","references/overlays.md","references/plugin-installation.md","references/review.md","references/runtimes.md","references/skill-lifecycle.md","references/sound.md","references/spec.md","references/story.md","references/storyboard-format.md","references/storyboard.md","references/types/3d.md","references/types/character.md","references/types/data.md","references/types/explainer.md","references/types/launch.md","references/types/music.md","references/types/vertical.md","scripts/bake-basemap.mjs","scripts/lib/main-module.mjs","scripts/lib/main-module.test.mjs","scripts/locate.mjs","scripts/plugin-cli.mjs","scripts/plugin-cli.test.mjs"],"stats":{"installs":1200000,"stars":73064,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":265},"featured":true,"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/400daa5dc577/hyperframes.mp4","w":720,"h":404,"duration":10,"blur":"data:image/webp;base64,UklGRngAAABXRUJQVlA4IGwAAADQAwCdASogABIAPtFgqk+oJaOiKAgBABoJaQDKABEaBLVrnyLZHgAA/vHJ9qg+cHVcyq7UKOaTkJZh85jiQ7cv3dXUwC3v0inbc2ValRAn7AW1ZrzfHV0DSnadtCT2z3EUBV9sPV24cC0AAAA=","source":"https://static.heygen.ai/hyperframes-oss/docs/images/showcase/product-launch-huly-v5.mp4","page":"https://hyperframes.heygen.com/guides/product-launch-video","credit":"HeyGen (HyperFrames)","rights":"publisher-repo","note":"Launch film an agent built with HyperFrames from huly.io (official docs example): 'Three tools. One team.' → 'huly One app.' → product UI","bytes":59926,"addedAt":"2026-10-27"}},{"id":"heygen-com/hyperframes-cli","slug":"hyperframes-cli","name":"HyperFrames CLI","skillName":"hyperframes-cli","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["render","preview","lint","cloud-render","hyperframes"],"summary":"Drive the HyperFrames CLI: scaffold, check, preview, snapshot, edit the timeline, render locally or in the cloud.","description":"A job-by-job map of `npx hyperframes`: scaffolding, `check` with machine-readable fixes, frame snapshots and compares, timeline edits, preview, local and batch renders, cloud rendering (HeyGen, AWS Lambda, Google Cloud Run), publishing and project history. It explains how to read the CLI's JSON output and how to recover from build, browser and render failures with `doctor`.","useWhen":["Scaffolding a new HyperFrames project","Checking, previewing or rendering a composition","Rendering in the cloud or in batches","Diagnosing a failed build or render"],"notFor":["Writing the composition itself (use HyperFrames)"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/skills/hyperframes-cli","repo":"heygen-com/hyperframes","path":"skills/hyperframes-cli","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add heygen-com/hyperframes\nclaude plugin install hyperframes@hyperframes","codex":"npx skills add heygen-com/hyperframes --skill hyperframes-cli -a codex","cursor":"npx skills add heygen-com/hyperframes --skill hyperframes-cli -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes --skill hyperframes-cli -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js 22+","FFmpeg"],"cost":{"note":"Free — local render; cloud renders run on your HeyGen, AWS or Google Cloud account"},"files":["SKILL.md","references/beats.md","references/cloud.md","references/cloudrun.md","references/compare-and-batch.md","references/conventions.md","references/doctor-browser.md","references/feedback.md","references/init-and-scaffold.md","references/lambda.md","references/lint-validate-inspect.md","references/preview-render.md","references/upgrade-info-misc.md"],"stats":{"installs":1300000,"stars":73064,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":265},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2ce1446e01bd/hyperframes-cli.mp4","w":720,"h":404,"duration":11.5,"blur":"data:image/webp;base64,UklGRnIAAABXRUJQVlA4IGYAAAAwBACdASogABIAPtFcpUyoJSOiMBgIAQAaCWkAyUwQ+H6e7pvh+5jcO0AA/vBAlN4uRXDbDD/37n69gPbBKS7+CpBIgtYT9Gb0NipH5v6GH8X/wG3gD7n2MEMXyTcVosKG432AAAA=","source":"https://static.heygen.ai/hyperframes-oss/docs/images/showcase/render-loop-demo-v2.mp4","page":"https://hyperframes.heygen.com/guides/rendering","credit":"HeyGen (HyperFrames)","rights":"publisher-repo","note":"Official docs demo: 'npx hyperframes render --output final.mp4' captures frames with 4 workers, finishes, and the rendered MP4 plays","bytes":60166,"addedAt":"2026-10-27"}},{"id":"heygen-com/hyperframes-registry","slug":"hyperframes-registry","name":"HyperFrames Registry","skillName":"hyperframes-registry","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["shaders","kinetic-type","captions","transitions","components","hyperframes"],"summary":"Pull any of ~450 ready-made blocks into a video as editable source: transitions, titles, captions, charts, 3D.","description":"Searches and installs HyperFrames registry items — about 450 blocks and components — with `npx hyperframes add` and `catalog`, then wires them into `index.html` as sub-compositions or merged snippets. It covers transitions, overlays, titles, kinetic type, captions, charts, map overlays, 3D and camera moves, plus the quality bar and steps for contributing a new block upstream.","useWhen":["A brief names a look or effect (glitch, film grain, CRT, a chart)","Installing or wiring a registry block or component","Contributing a new block to the registry"],"notFor":["Hand-animating a one-off scene from scratch (use HyperFrames)"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/skills/hyperframes-registry","repo":"heygen-com/hyperframes","path":"skills/hyperframes-registry","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add heygen-com/hyperframes\nclaude plugin install hyperframes@hyperframes","codex":"npx skills add heygen-com/hyperframes --skill hyperframes-registry -a codex","cursor":"npx skills add heygen-com/hyperframes --skill hyperframes-registry -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes --skill hyperframes-registry -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js 22+"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","examples/add-block.md","examples/add-component.md","references/component-quality-bar.md","references/contributing.md","references/demo-html-pattern.md","references/discovery.md","references/install-locations.md","references/placeholder-material.md","references/search.md","references/templates.md","references/wiring-blocks.md","references/wiring-components.md"],"stats":{"installs":1000000,"stars":73064,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-21","addedAt":"2026-10-26","preview":{"kind":"grid","hue":265},"featured":true,"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e45347961f24/hyperframes-registry.mp4","w":720,"h":404,"duration":11.7,"blur":"data:image/webp;base64,UklGRowAAABXRUJQVlA4IIAAAACwBACdASogABIAPtFWokuoJKMhsBgMAQAaCWkAAIrbx88AlChbgWT9A/J3bF4AAP72pJym8hhBKQ9hUwscWQFusN3jv8Hon14P/esZY3RLxWPXHj+l+Ld+Xd9mbLX5TztaYvV8RxvpKuP7KbiG8WNcByq/cvsOAZTSVoAbcUAAAA==","source":"https://static.heygen.ai/hyperframes-oss/docs/images/showcase/studio-assets-catalog-loop-v1.mp4","page":"https://hyperframes.heygen.com/studio/assets-and-blocks","credit":"HeyGen (HyperFrames)","rights":"publisher-repo","note":"Official docs loop: searching the registry catalog for 'macOS Notification' and dropping the block onto the timeline, where it appears in the video","bytes":47890,"addedAt":"2026-10-27"}},{"id":"heygen-com/media-use","slug":"hyperframes-media-use","name":"HyperFrames Media Use","skillName":"media-use","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["image","color","captions","voiceover","sfx","hyperframes","audio"],"summary":"Find or make every asset a video needs: music, SFX, voiceover, images, logos, avatars, transcripts, grades.","description":"One verb, `npx hyperframes media-use resolve`, turns a need into a local file in `assets/` with a ledger record, so renders never fetch. Each media type has a HeyGen route (a 10k-track music catalog, 75k+ images and icons, voices, avatar video) and a free route with no account (Openverse and 21 bundled sound effects, on-device Kokoro TTS, local transcription, background removal, LUT grades). It also mixes placed audio and treats footage that looks dark, flat or dull.","useWhen":["A video needs music, sound effects or a voiceover","Images, icons or a brand logo for a scene","Transcripts, captions or background removal","Footage looks dark, flat or dull and needs a grade"],"notFor":["Clip timing and track layout (use HyperFrames)"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/skills/media-use","repo":"heygen-com/hyperframes","path":"skills/media-use","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add heygen-com/hyperframes\nclaude plugin install hyperframes@hyperframes","codex":"npx skills add heygen-com/hyperframes --skill media-use -a codex","cursor":"npx skills add heygen-com/hyperframes --skill media-use -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes --skill media-use -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["kokoro","musicgen","whisper","parakeet","mflux","ltx"],"requires":["Node.js 22+","HeyGen CLI and account (optional, paid media)","Python 3.10+ (optional, local TTS)"],"cost":{"note":"Free local route; the HeyGen route uses HeyGen subscription or API credits"},"files":["SKILL.md",".gitignore","audio/assets/sfx/chime.mp3","audio/assets/sfx/click-soft.mp3","audio/assets/sfx/click.mp3","audio/assets/sfx/CREDITS.md","audio/assets/sfx/error.mp3","audio/assets/sfx/glitch-1.mp3","audio/assets/sfx/glitch-2.mp3","audio/assets/sfx/glitch-3.mp3","audio/assets/sfx/impact-bass-1.mp3","audio/assets/sfx/impact-bass-2.mp3","audio/assets/sfx/key-press.mp3","audio/assets/sfx/manifest.json","audio/assets/sfx/notification.mp3","audio/assets/sfx/ping.mp3","audio/assets/sfx/pop.mp3","audio/assets/sfx/riser.mp3","audio/assets/sfx/sparkle.mp3","audio/assets/sfx/typing.mp3","audio/assets/sfx/whoosh-cinematic.mp3","audio/assets/sfx/whoosh-short.mp3","audio/assets/sfx/whoosh.mp3","audio/references/bgm.md","audio/references/captions/authoring.md","audio/references/captions/motion.md","audio/references/captions/transcript-handling.md","audio/references/remove-background.md","audio/references/requirements.md","audio/references/sfx.md","audio/references/transcribe.md","audio/references/tts-to-captions.md","audio/references/tts.md","audio/scripts/audio.mjs","audio/scripts/audio.test.mjs","audio/scripts/carve.mjs","audio/scripts/carve.test.mjs","audio/scripts/extract-audio-data.py","audio/scripts/gemini-pipeline.test.mjs","audio/scripts/heygen-tts.mjs","audio/scripts/heygen-tts.test.mjs","audio/scripts/heygen-voice.mjs","audio/scripts/heygen-voice.test.mjs","audio/scripts/lib/audio-meta.mjs","audio/scripts/lib/audio-meta.test.mjs","audio/scripts/lib/bgm-volume.mjs","audio/scripts/lib/bgm.mjs","audio/scripts/lib/bgm.test.mjs","audio/scripts/lib/concurrency.mjs","audio/scripts/lib/concurrency.test.mjs","audio/scripts/lib/gemini-auth_test.py","audio/scripts/lib/gemini-auth.mjs","audio/scripts/lib/gemini-auth.py","audio/scripts/lib/gemini-auth.test.mjs","audio/scripts/lib/gemini-tts.mjs","audio/scripts/lib/gemini-tts.test.mjs","audio/scripts/lib/heygen.mjs","audio/scripts/lib/heygen.test.mjs","audio/scripts/lib/main-module.mjs","audio/scripts/lib/media-record.mjs","audio/scripts/lib/media-record.test.mjs","audio/scripts/lib/openverse.mjs","audio/scripts/lib/python.mjs","audio/scripts/lib/python.test.mjs","audio/scripts/lib/sfx.mjs","audio/scripts/lib/sfx.test.mjs","audio/scripts/lib/tts.cleanup.test.mjs","audio/scripts/lib/tts.mjs","audio/scripts/lib/tts.spawn.test.mjs","audio/scripts/lib/tts.test.mjs","audio/scripts/lyria-recipe.py","audio/scripts/wait-bgm.mjs","audio/scripts/wait-bgm.test.mjs","luts/index.json","luts/README.md","references/audio.md","references/grading.md","references/local.md","references/media-treatment-recipes.md","references/media-treatments.md","references/memory.md","references/meta.md","references/mixing.md","references/operations.md","references/resolve.md","references/setup-providers.md","references/telemetry-dashboard.md","scripts/audio-duck.mjs","scripts/compatibility.test.mjs","scripts/dither.mjs","scripts/dither.test.mjs","scripts/eval.mjs","scripts/lib/config-lock.mjs","scripts/lib/cutlist.mjs","scripts/lib/duck.mjs","scripts/lib/error-diffusion.mjs","scripts/lib/index-gen.mjs","scripts/lib/manifest.mjs","scripts/lib/media-fetch.mjs","scripts/lib/media-home.mjs","… +16 more files"],"stats":{"installs":1100000,"stars":73064,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"wave","hue":265},"legal":"Openverse sound effects can be CC BY; the skill keeps a credits file for attribution.","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/363b74fce211/hyperframes-media-use.mp4","w":720,"h":404,"duration":12,"blur":"data:image/webp;base64,UklGRvoAAABXRUJQVlA4IO4AAAAwBQCdASogABIAPtFYpEuoJSOhsAgBABoJbACsAdwA9EHzXhZXMOBKHxmUHH8bHpUH8AD+8ycR3zzfa74p76x75fkeNlXt1PbtQ5Q9cMWEYL9ztNZDcIi1LqMCqMWxbsGtn5rq7wR9hrYncZ+1uZj9//OCiWc/Z6M63oYkwFki1qsVeOdhaibrvyMyK2mAnVkaqpXhDyXny88tYkYLD4VnLHwMSika35OeohWHt02KRJL5c2H1tpBN8sOk3GU4WctKbaO7KDTNOckqf5aJFoqIv4q7RsJ5vweDrULbeA1t00ezpn1L8L1yIdQgI8AA","source":"https://static.heygen.ai/hyperframes-oss/docs/images/showcase/media-effects-showcase-v2.mp4","page":"https://hyperframes.heygen.com/guides/media-effects","credit":"HeyGen (HyperFrames)","rights":"publisher-repo","note":"Official docs showcase of media treatments on real sources: repair then mood grade, portrait correction, three LUTs on the same street footage, ASCII glyph styles","bytes":280540,"addedAt":"2026-10-27"}},{"id":"heygen-com/remotion-to-hyperframes","slug":"remotion-to-hyperframes","name":"Remotion to HyperFrames","skillName":"remotion-to-hyperframes","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["remotion","migration","lottie","threejs","hyperframes"],"summary":"Port Remotion, Lottie, Three.js, p5 or canvas animations into HyperFrames and verify them frame by frame.","description":"Imports existing video code or footage into HyperFrames — Remotion first, also Motion Canvas, Lottie, Three.js, p5.js, canvas and plain HTML/CSS animation, or renders from Manim, After Effects and Blender. It translates natively, then verifies the port frame by frame against the original with a bundled test corpus.","useWhen":["Porting a Remotion project to HyperFrames","Reusing Lottie, Three.js or p5 animations in a video","Bringing in renders from After Effects, Manim or Blender"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/skills/remotion-to-hyperframes","repo":"heygen-com/hyperframes","path":"skills/remotion-to-hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add heygen-com/hyperframes\nclaude plugin install hyperframes@hyperframes","codex":"npx skills add heygen-com/hyperframes --skill remotion-to-hyperframes -a codex","cursor":"npx skills add heygen-com/hyperframes --skill remotion-to-hyperframes -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes --skill remotion-to-hyperframes -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js 22+","FFmpeg"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","assets/.gitkeep","assets/test-corpus/.gitignore","assets/test-corpus/run.sh","assets/test-corpus/tier-1-title-card/.gitignore","assets/test-corpus/tier-1-title-card/expected.json","assets/test-corpus/tier-1-title-card/hf-src/compositions/title.html","assets/test-corpus/tier-1-title-card/hf-src/index.html","assets/test-corpus/tier-1-title-card/README.md","assets/test-corpus/tier-1-title-card/remotion-src/package.json","assets/test-corpus/tier-1-title-card/remotion-src/remotion.config.ts","assets/test-corpus/tier-1-title-card/remotion-src/src/index.ts","assets/test-corpus/tier-1-title-card/remotion-src/src/Root.tsx","assets/test-corpus/tier-1-title-card/remotion-src/src/TitleCard.tsx","assets/test-corpus/tier-1-title-card/remotion-src/tsconfig.json","assets/test-corpus/tier-2-multi-scene/.gitignore","assets/test-corpus/tier-2-multi-scene/expected.json","assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-1.html","assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-2.html","assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-3.html","assets/test-corpus/tier-2-multi-scene/hf-src/index.html","assets/test-corpus/tier-2-multi-scene/README.md","assets/test-corpus/tier-2-multi-scene/remotion-src/package.json","assets/test-corpus/tier-2-multi-scene/remotion-src/remotion.config.ts","assets/test-corpus/tier-2-multi-scene/remotion-src/src/index.ts","assets/test-corpus/tier-2-multi-scene/remotion-src/src/MultiScene.tsx","assets/test-corpus/tier-2-multi-scene/remotion-src/src/Root.tsx","assets/test-corpus/tier-2-multi-scene/remotion-src/tsconfig.json","assets/test-corpus/tier-2-multi-scene/setup.sh","assets/test-corpus/tier-3-data-driven/.gitignore","assets/test-corpus/tier-3-data-driven/expected.json","assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-1.html","assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-2.html","assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-3.html","assets/test-corpus/tier-3-data-driven/hf-src/index.html","assets/test-corpus/tier-3-data-driven/README.md","assets/test-corpus/tier-3-data-driven/remotion-src/package.json","assets/test-corpus/tier-3-data-driven/remotion-src/remotion.config.ts","assets/test-corpus/tier-3-data-driven/remotion-src/src/components/AnimatedNumber.tsx","assets/test-corpus/tier-3-data-driven/remotion-src/src/components/StatCard.tsx","assets/test-corpus/tier-3-data-driven/remotion-src/src/components/UnderlinedText.tsx","assets/test-corpus/tier-3-data-driven/remotion-src/src/index.ts","assets/test-corpus/tier-3-data-driven/remotion-src/src/Root.tsx","assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/OutroScene.tsx","assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/StatsScene.tsx","assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/TitleScene.tsx","assets/test-corpus/tier-3-data-driven/remotion-src/src/Stargazed.tsx","assets/test-corpus/tier-3-data-driven/remotion-src/tsconfig.json","assets/test-corpus/tier-4-escape-hatch/cases/01-use-state.tsx","assets/test-corpus/tier-4-escape-hatch/cases/02-use-effect-deps.tsx","assets/test-corpus/tier-4-escape-hatch/cases/03-async-metadata.tsx","assets/test-corpus/tier-4-escape-hatch/cases/04-third-party-react.tsx","assets/test-corpus/tier-4-escape-hatch/cases/05-lambda-config.tsx","assets/test-corpus/tier-4-escape-hatch/cases/06-warnings-only.tsx","assets/test-corpus/tier-4-escape-hatch/cases/07-custom-hook.tsx","assets/test-corpus/tier-4-escape-hatch/cases/08-mixed.tsx","assets/test-corpus/tier-4-escape-hatch/expected.json","assets/test-corpus/tier-4-escape-hatch/README.md","assets/test-corpus/tier-4-escape-hatch/validate.sh","references/api-map.md","references/escape-hatch.md","references/eval.md","references/fonts.md","references/limitations.md","references/lottie.md","references/media.md","references/parameters.md","references/sequencing.md","references/timing.md","references/transitions.md","scripts/.gitkeep","scripts/frame_strip.sh","scripts/lint_source.py","scripts/render_diff.sh","scripts/tests/boxSizing.test.mjs","scripts/tests/fixtures/blocker.tsx","scripts/tests/fixtures/clean.tsx","scripts/tests/smoke.sh"],"stats":{"installs":515000,"stars":73064,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":265},"adds":"tool","media":{"type":"none","reason":"No official media shows a Remotion-to-HyperFrames port. The only Remotion/HyperFrames video pair (the 'Inkwell' films on the vs-Remotion page) is one brief built separately in each tool, so it would misrepresent a frame-matched port; the skill's test corpus ships sources only, no renders","searched":["github.com/heygen-com/hyperframes skills/remotion-to-hyperframes (SKILL.md, assets/test-corpus: sources only)","hyperframes README","hyperframes.heygen.com/guides/hyperframes-vs-remotion (Inkwell films: separate builds, not a port)","hyperframes.heygen.com/prompting/remotion-migration (no media)","hyperframes.heygen.com/showcase","heygen-com/hyperframes PRs #4141 #5561 #6392 (no attachments)","web search for a port demo"],"addedAt":"2026-10-27"}},{"id":"heygen-com/slideshow","slug":"hyperframes-slideshow","name":"HyperFrames Slideshow","skillName":"slideshow","type":"skill","status":"live","stream":"vendors","category":"explainers","tags":["slides","presentation","pitch-deck","hyperframes"],"summary":"Build a live, navigable deck with fragment reveals, branching hotspots and presenter notes instead of an MP4.","description":"Builds a HyperFrames slideshow served by `hyperframes present`: discrete slides, fragment reveals, branching hotspot navigation and presenter mode with speaker notes. It can also turn an existing web page into a deck and covers handing it off as a standalone harness.","useWhen":["A presentation or pitch deck rather than a rendered video","Interactive decks with reveals or branching","Converting a web page into slides"],"notFor":["Rendered MP4 output (use HyperFrames)"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/skills/slideshow","repo":"heygen-com/hyperframes","path":"skills/slideshow","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add heygen-com/hyperframes\nclaude plugin install hyperframes@hyperframes","codex":"npx skills add heygen-com/hyperframes --skill slideshow -a codex","cursor":"npx skills add heygen-com/hyperframes --skill slideshow -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes --skill slideshow -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js 22+","A browser"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","references/standalone-harness.md"],"stats":{"installs":424300,"stars":73064,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-21","addedAt":"2026-10-26","preview":{"kind":"cards","hue":265},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d762d55a36a8/hyperframes-slideshow.mp4","w":720,"h":404,"duration":12,"blur":"data:image/webp;base64,UklGRogAAABXRUJQVlA4IHwAAACwBACdASogABIAPsFKoEunpCMht/qoAPAYCWcAy6Qh3xYDIH3p3GlnH3XF8UYAAP7qXo/hH0Tb56HVRfqT9SILQk4Zvq+SmSTD37hc5H7jbMmRPUiVkIC2oGadQymHCLILvgxAzsoRRfXUfNfqoDjAsaRRPGkMBMEkv8AA","source":"https://static.heygen.ai/hyperframes-oss/docs/images/showcase/slideshow-demo-v1.mp4","page":"https://hyperframes.heygen.com/guides/slideshow","credit":"HeyGen (HyperFrames)","rights":"publisher-repo","note":"Official docs demo of a live HyperFrames deck being navigated: fragment reveals, a chart built by fragments, a hotspot into a branch slide","bytes":57037,"addedAt":"2026-10-27"}},{"id":"heygen-com/canopy-part-title","slug":"hyperframes-canopy-part-title","name":"Canopy Part Title","skillName":"canopy-part-title","type":"skill","status":"live","stream":"vendors","category":"kinetic-type","tags":["title-card","hyperframes-block","3d"],"summary":"Leaves sweep across the frame and part to reveal your headline: a 12-second 1080p title block.","description":"A HyperFrames registry block: leaves sweep through the frame and part to reveal the headline (1920×1080, 12 s, 11 variables). Install it into a project with `npx hyperframes add canopy-part-title`, mount it from `index.html` and set its variables; it renders locally like any other composition.","useWhen":["A ready-made title or motion moment instead of hand-built animation","Openers, chapter cards and launch-film beats in a HyperFrames project"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/canopy-part-title","repo":"heygen-com/hyperframes","path":"registry/blocks/canopy-part-title","license":"Apache-2.0"},"install":{"claude-code":"npx skills add heygen-com/hyperframes --skill canopy-part-title -a claude-code","codex":"npx skills add heygen-com/hyperframes --skill canopy-part-title -a codex","cursor":"npx skills add heygen-com/hyperframes --skill canopy-part-title -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes --skill canopy-part-title -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["HyperFrames project (Node.js 22+, FFmpeg)"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","assets/leaf-surface-color.webp","assets/leaf-surface-normal.webp","canopy-part-title.html","registry-item.json"],"stats":{"installs":10100,"stars":73064,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-25","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":265,"text":"REVEAL"},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/28caaca90886/hyperframes-canopy-part-title.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRgQBAABXRUJQVlA4IPgAAACwBgCdASogABIAPtFco0yoJSMiMBgIAQAaCWIAnTLT7CUSef+NAIwACj3706m9/9ICiT8qDPV71dWtP2tmAAD+9H+jmyrTZQaLHUOpdC5RnVCpfR5xTwWZsVIg5Q+V3aKW5i0DPXhZQGqYW8/5p5kWLrDGILiz77dekBacta2ClMAuqV+xgQNdhdR426dRH5QELTAz0FH/mkrKaVv6+K9FPiS70uVCrm0HwpiKy6YB0h7+Nugd3nX2fCP0uHqfFvJNMFMmuVKPl7gsCzYfFMtDvcBA3cDalcN5x8uifAOga9xlsjt4rUpU5uJh+Umrn0SxcnonL7QAAA==","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/canopy-part-title.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/canopy-part-title","credit":"HeyGen (HyperFrames)","rights":"publisher-repo","note":"Official catalog render of the block: leaves sweep in and part to reveal 'Understory', then a second sweep swaps to 'Move slowly'","bytes":369244,"addedAt":"2026-10-27"}},{"id":"heygen-com/code-slice-hero","slug":"hyperframes-code-slice-hero","name":"Code Slice Hero","skillName":"code-slice-hero","type":"skill","status":"live","stream":"vendors","category":"kinetic-type","tags":["title-card","hero","hyperframes-block","3d"],"summary":"A tiled headline flips cell by cell under a sweeping depth field to reveal a second line: an 8-second hero.","description":"A HyperFrames registry block: a tiled headline surface flips cell by cell under a sweeping depth field to reveal the rear headline (1920×1080, 8 s, 18 variables). Install it into a project with `npx hyperframes add code-slice-hero`, mount it from `index.html` and set its variables; it renders locally like any other composition.","useWhen":["A ready-made title or motion moment instead of hand-built animation","Openers, chapter cards and launch-film beats in a HyperFrames project"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-slice-hero","repo":"heygen-com/hyperframes","path":"registry/blocks/code-slice-hero","license":"Apache-2.0"},"install":{"claude-code":"npx skills add heygen-com/hyperframes --skill code-slice-hero -a claude-code","codex":"npx skills add heygen-com/hyperframes --skill code-slice-hero -a codex","cursor":"npx skills add heygen-com/hyperframes --skill code-slice-hero -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes --skill code-slice-hero -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["HyperFrames project (Node.js 22+, FFmpeg)"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","assets/Geist-Bold.ttf","assets/Geist-OFL.txt","assets/gsap-3.14.2.min.js","assets/GSAP-NOTICE.txt","code-slice-hero.html","registry-item.json","shadows.js","surface.js"],"stats":{"installs":10100,"stars":73064,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-25","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":265,"text":"SLICE"},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/9f799bc52087/hyperframes-code-slice-hero.mp4","w":720,"h":404,"duration":5.5,"blur":"data:image/webp;base64,UklGRogAAABXRUJQVlA4IHwAAAAQBACdASogABIAPtFUo0uoJKMhsAgBABoJaQAD4wIOAKxfcmLy1dAwAAD+9gL+iAa5hC1Zfi7Dw5VWX2KbVafkCvo7DXgRHTAzZmqKObzCA6U/zICmzdZNDNqHTRSwECrTZmcT0P/D8cM9sCigLLhLcVKJeOG5bjoEAAAA","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-slice-hero.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/code-slice-hero","credit":"HeyGen (HyperFrames)","rights":"publisher-repo","note":"Official catalog render of the block: the tiled 'MAKE IT' headline flips cell by cell to reveal 'MATTER.'","bytes":41905,"addedAt":"2026-10-27"}},{"id":"heygen-com/cuboid-carousel","slug":"hyperframes-cuboid-carousel","name":"Cuboid Carousel","skillName":"cuboid-carousel","type":"skill","status":"live","stream":"vendors","category":"brand-motion","tags":["carousel","product","hyperframes-block","3d"],"summary":"A chain of bevelled 3D cuboids rides a travelling wave as a content carousel for features or products.","description":"A HyperFrames registry block: a chain of bevelled cuboids rides a travelling wave as a content carousel (1920×1080, about 6.7 s, 40 variables). Install it into a project with `npx hyperframes add cuboid-carousel`, mount it from `index.html` and set its variables; it renders locally like any other composition.","useWhen":["A ready-made title or motion moment instead of hand-built animation","Openers, chapter cards and launch-film beats in a HyperFrames project"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/cuboid-carousel","repo":"heygen-com/hyperframes","path":"registry/blocks/cuboid-carousel","license":"Apache-2.0"},"install":{"claude-code":"npx skills add heygen-com/hyperframes --skill cuboid-carousel -a claude-code","codex":"npx skills add heygen-com/hyperframes --skill cuboid-carousel -a codex","cursor":"npx skills add heygen-com/hyperframes --skill cuboid-carousel -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes --skill cuboid-carousel -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["HyperFrames project (Node.js 22+, FFmpeg)"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","assets/addons/environments/RoomEnvironment.js","assets/addons/utils/BufferGeometryUtils.js","assets/cuboid-motion.js","assets/gsap-3.14.2.min.js","assets/GSAP-NOTICE.txt","assets/Three-LICENSE.txt","assets/three.core.min.js","assets/three.module.min.js","cuboid-carousel.html","registry-item.json"],"stats":{"installs":10100,"stars":73064,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-25","addedAt":"2026-10-26","preview":{"kind":"cards","hue":265},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/68a80d7dd39c/hyperframes-cuboid-carousel.mp4","w":720,"h":404,"duration":6.2,"blur":"data:image/webp;base64,UklGRngAAABXRUJQVlA4IGwAAABQBACdASogABIAPtFYpEuoJSOhsAgBABoJaQDOdCHfxBKL9M7saqX6E4MAAP72gg2budKfCRfo8TdrMX4IUV5unhjzEL39ZKaJ95fKeKsHSQdBJt3bLMU3CvK+LvMtzIW+ZwlQzcRlqfXOQAA=","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/cuboid-carousel.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/cuboid-carousel","credit":"HeyGen (HyperFrames)","rights":"publisher-repo","note":"Official catalog render of the block: a chain of bevelled card cuboids rides a travelling wave, then one card settles and swings to camera","bytes":117275,"addedAt":"2026-10-27"}},{"id":"heygen-com/frost-sequence-camera-orbit","slug":"hyperframes-frost-sequence-camera-orbit","name":"Frost Sequence Camera Orbit","skillName":"frost-sequence-camera-orbit","type":"skill","status":"live","stream":"vendors","category":"brand-motion","tags":["logo-sting","launch","hyperframes-block","3d"],"summary":"An orbiting camera follows an ice logo as it shatters, reforms into two text moments and fades out.","description":"A HyperFrames registry block: an orbiting camera follows an ice logo as it breaks apart, reforms into two text moments and fades (1920×1080, 22.5 s, 216 variables). Install it into a project with `npx hyperframes add frost-sequence-camera-orbit`, mount it from `index.html` and set its variables; it renders locally like any other composition.","useWhen":["A ready-made title or motion moment instead of hand-built animation","Openers, chapter cards and launch-film beats in a HyperFrames project"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/frost-sequence-camera-orbit","repo":"heygen-com/hyperframes","path":"registry/blocks/frost-sequence-camera-orbit","license":"Apache-2.0"},"install":{"claude-code":"npx skills add heygen-com/hyperframes --skill frost-sequence-camera-orbit -a claude-code","codex":"npx skills add heygen-com/hyperframes --skill frost-sequence-camera-orbit -a codex","cursor":"npx skills add heygen-com/hyperframes --skill frost-sequence-camera-orbit -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes --skill frost-sequence-camera-orbit -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["HyperFrames project (Node.js 22+, FFmpeg)"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","assets/Clipper-LICENSE.txt","assets/example-logo.svg","assets/fonts/Geist-Bold.ttf","assets/fonts/Geist-OFL.txt","assets/fonts/Geist-Regular.ttf","assets/fonts/Geist-SemiBold.ttf","assets/frost.js","assets/gsap-3.14.2.min.js","assets/GSAP-NOTICE.txt","assets/logo.svg","assets/OpentypeJS-LICENSE.txt","assets/test-mark.svg","assets/textures/bluenoise64.png","assets/Three-LICENSE.txt","assets/ThreeMeshBVH-LICENSE.txt","frost-sequence-camera-orbit.html","registry-item.json","source/build.mjs","source/package.json","source/presets/approved-material.json","source/presets/source-hero4-material.json","source/README.md","source/src/assets.ts","source/src/cache.ts","source/src/core/AdaptiveResolution.ts","source/src/core/clock.ts","source/src/core/ease.ts","source/src/core/interaction.ts","source/src/core/motion.ts","source/src/core/schedule.ts","source/src/core/seed.ts","source/src/core/state.ts","source/src/dials/baked.json","source/src/dials/defaults.ts","source/src/dials/store.ts","source/src/erosion/AssemblyField.ts","source/src/erosion/ErosionField.ts","source/src/frost.ts","source/src/ice/CrackPlanes.ts","source/src/ice/EnvironmentSampling.ts","source/src/ice/FastOptics.ts","source/src/ice/features.ts","source/src/ice/GlassMatcap.ts","source/src/ice/IceMaterial.ts","source/src/ice/MeshEntry.ts","source/src/ice/OpticalTransport.ts","source/src/ice/optics.ts","source/src/ice/SharedSurface.ts","source/src/ice/SurfaceDetail.ts","source/src/ice/variant.ts","source/src/motion/editor.ts","source/src/motion/meshes.ts","source/src/motion/objectFrame.ts","source/src/motion/track.ts","source/src/post/Post.ts","source/src/powder/Powder.ts","source/src/powder/returnGroups.ts","source/src/powder/shardAtlas.ts","source/src/rewrite.ts","source/src/rig/LogoRig.ts","source/src/scene/Backdrop.ts","source/src/scene/DebugViews.ts","source/src/scene/Environment.ts","source/src/scene/Lights.ts","source/src/scene/Rig.ts","source/src/shape/deform.ts","source/src/shape/geometry.ts","source/src/shape/gpuSdf.ts","source/src/shape/logo.ts","source/src/shape/logoRefine.ts","source/src/shape/sdf.ts","source/src/shape/text.ts","source/src/shape/textRefine.ts","source/src/shape/unionOutlines.ts","source/src/tsl/noise.ts","source/src/tsl/t.ts","source/src/vendor/clipper-README.md","source/src/vendor/clipper.cjs","source/src/World.ts","source/tools/compile-preflight.mjs","source/tools/run-shard-compile.mjs","source/tools/shard-compile-probe.ts"],"stats":{"installs":10200,"stars":73064,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-25","addedAt":"2026-10-26","preview":{"kind":"logo3d","hue":265},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2570c1aa4cfd/hyperframes-frost-sequence-camera-orbit.mp4","w":560,"h":314,"duration":10,"blur":"data:image/webp;base64,UklGRlAAAABXRUJQVlA4IEQAAACQAwCdASogABIAPtFYpEuoJSOhsAgBABoJZwAAW+svyNGnl1GAAP73cqJEMyfFymKpYYSM7EJR8k/Ddj3TyKZr3C+AAA==","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/frost-sequence-camera-orbit.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/frost-sequence-camera-orbit","credit":"HeyGen (HyperFrames)","rights":"publisher-repo","note":"Official catalog render of the block, first 10 s: the ice logo shatters under an orbiting camera and reforms into 'Hard to break.'","bytes":472421,"addedAt":"2026-10-27"}},{"id":"heygen-com/glass-shard-title","slug":"hyperframes-glass-shard-title","name":"Glass Shard Title","skillName":"glass-shard-title","type":"skill","status":"live","stream":"vendors","category":"kinetic-type","tags":["title-card","hyperframes-block","3d"],"summary":"Glass shards fly in through fog and tile themselves into your headline, then fly out past the camera.","description":"A HyperFrames registry block: glass shards fly in through fog and tile themselves into the headline (1920×1080, 12.16 s, 19 variables). Install it into a project with `npx hyperframes add glass-shard-title`, mount it from `index.html` and set its variables; it renders locally like any other composition.","useWhen":["A ready-made title or motion moment instead of hand-built animation","Openers, chapter cards and launch-film beats in a HyperFrames project"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/glass-shard-title","repo":"heygen-com/hyperframes","path":"registry/blocks/glass-shard-title","license":"Apache-2.0"},"install":{"claude-code":"npx skills add heygen-com/hyperframes --skill glass-shard-title -a claude-code","codex":"npx skills add heygen-com/hyperframes --skill glass-shard-title -a codex","cursor":"npx skills add heygen-com/hyperframes --skill glass-shard-title -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes --skill glass-shard-title -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["HyperFrames project (Node.js 22+, FFmpeg)"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","assets/ferndale_studio_01_1k.hdr","assets/fonts/cormorant-garamond.woff2","assets/fonts/CormorantGaramond-OFL.txt","assets/fonts/Geist-Bold.ttf","assets/fonts/Geist-OFL.txt","assets/fonts/Geist-Regular.ttf","assets/fonts/Geist-SemiBold.ttf","assets/glass-main.js","assets/glass-main.mjs","assets/Three-LICENSE.txt","build-bundle.mjs","glass-shard-title.html","registry-item.json"],"stats":{"installs":10100,"stars":73064,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-24","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":265,"text":"SHATTER"},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f6b92a1beeaa/hyperframes-glass-shard-title.mp4","w":720,"h":404,"duration":7.2,"blur":"data:image/webp;base64,UklGRoQAAABXRUJQVlA4IHgAAABQBACdASogABIAPtFYpEuoJSOhsAgBABoJZwDOdCHfiQfQMMFiI0mYnUagAP73c1pLMFmgQ8rzXD1ucYZuF3ISVrTSA8E/hL/kdBFvSlksG8J8VkzGnZJ9AQBLoGOgBixJmAptjRW68GrbnHJfMg4pNlSwuWldmAA=","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/glass-shard-title.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/glass-shard-title","credit":"HeyGen (HyperFrames)","rights":"publisher-repo","note":"Official catalog render of the block: glass shards fly in, tile into 'Designed in glass', then fly out past the camera","bytes":139416,"addedAt":"2026-10-27"}},{"id":"heygen-com/orbit-card","slug":"hyperframes-orbit-card","name":"Orbit Card","skillName":"orbit-card","type":"skill","status":"live","stream":"vendors","category":"launch","tags":["feature-card","product","hyperframes-block","3d","brand-motion"],"summary":"A single feature card orbits a dot sphere on a Blender-made camera move: a 10-second product beat.","description":"A HyperFrames registry block: a single feature card orbits a dot sphere on approved Blender camera motion (1920×1080, 10 s, 4 variables). Install it into a project with `npx hyperframes add orbit-card`, mount it from `index.html` and set its variables; it renders locally like any other composition.","useWhen":["A ready-made title or motion moment instead of hand-built animation","Openers, chapter cards and launch-film beats in a HyperFrames project"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/orbit-card","repo":"heygen-com/hyperframes","path":"registry/blocks/orbit-card","license":"Apache-2.0"},"install":{"claude-code":"npx skills add heygen-com/hyperframes --skill orbit-card -a claude-code","codex":"npx skills add heygen-com/hyperframes --skill orbit-card -a codex","cursor":"npx skills add heygen-com/hyperframes --skill orbit-card -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes --skill orbit-card -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["HyperFrames project (Node.js 22+, FFmpeg)"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","assets/Archivo-LICENSE.txt","assets/archivo-regular.ttf","assets/archivo-semibold.ttf","assets/gsap-3.14.2.min.js","assets/GSAP-NOTICE.txt","assets/orbit-motion.js","assets/orbit-scene.js","assets/Three-LICENSE.txt","assets/three.core.min.js","assets/three.module.min.js","orbit-card.html","registry-item.json"],"stats":{"installs":10100,"stars":73064,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-25","addedAt":"2026-10-26","preview":{"kind":"cards","hue":265},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d22e16d165d1/hyperframes-orbit-card.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRjwAAABXRUJQVlA4IDAAAADwAgCdASogABIAPtFepU6oJSMiKAqpABoJaQAAOsieYAD+8P7QNoX3cR4+cGUAAAA=","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/orbit-card.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/orbit-card","credit":"HeyGen (HyperFrames)","rights":"publisher-repo","note":"Official catalog render of the block: the 'Always in sync' feature card with a dot sphere orbits on the camera move","bytes":105908,"addedAt":"2026-10-27"}},{"id":"heygen-com/wireframe-portal-title","slug":"hyperframes-wireframe-portal-title","name":"Wireframe Portal Title","skillName":"wireframe-portal-title","type":"skill","status":"live","stream":"vendors","category":"kinetic-type","tags":["title-card","hyperframes-block","3d"],"summary":"A wireframe portal bursts open, the title comes through, then its letters swap into a second phrase.","description":"A HyperFrames registry block: a wireframe portal bursts open, the title comes through, then its letters swap into a second phrase (1920×1080, 8 s, 9 variables). Install it into a project with `npx hyperframes add wireframe-portal-title`, mount it from `index.html` and set its variables; it renders locally like any other composition.","useWhen":["A ready-made title or motion moment instead of hand-built animation","Openers, chapter cards and launch-film beats in a HyperFrames project"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/wireframe-portal-title","repo":"heygen-com/hyperframes","path":"registry/blocks/wireframe-portal-title","license":"Apache-2.0"},"install":{"claude-code":"npx skills add heygen-com/hyperframes --skill wireframe-portal-title -a claude-code","codex":"npx skills add heygen-com/hyperframes --skill wireframe-portal-title -a codex","cursor":"npx skills add heygen-com/hyperframes --skill wireframe-portal-title -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes --skill wireframe-portal-title -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["HyperFrames project (Node.js 22+, FFmpeg)"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","assets/fonts/Geist-Bold.ttf","assets/fonts/Geist-OFL.txt","assets/fonts/Geist-Regular.ttf","assets/fonts/Geist-SemiBold.ttf","registry-item.json","wireframe-portal-title.html"],"stats":{"installs":10100,"stars":73064,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-25","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":265,"text":"PORTAL"},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a9084c5eed14/hyperframes-wireframe-portal-title.mp4","w":720,"h":404,"duration":7.6,"blur":"data:image/webp;base64,UklGRm4AAABXRUJQVlA4IGIAAADQAwCdASogABIAPtFUo0uoJKMhsAgBABoJaQAAW+qqByXw2/pzaWAA/u+0v216yDqr122DWPhGMEmUrgjHn0hxnBYVk2S/fLpEmmviAg8DwIxzwGNKT1bx+x8Rg6Drx0CAAA==","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/wireframe-portal-title.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/wireframe-portal-title","credit":"HeyGen (HyperFrames)","rights":"publisher-repo","note":"Official catalog render of the block: 'BREAKTHROUGH' bursts through a wireframe portal, then its letters swap to a second phrase","bytes":297667,"addedAt":"2026-10-27"}},{"id":"heygen-com/camera-3d-captions","slug":"hyperframes-camera-3d-captions","name":"3D Camera Captions","skillName":"camera-3d-captions","type":"skill","status":"live","stream":"vendors","category":"captions","tags":["code-to-video","hyperframes","talking-head","3d","kinetic-type","alpha-matte"],"summary":"Captions that live in 3D around a talking head: the camera flies through the words, heroes pass behind the speaker.","description":"Rebuilds the After Effects 3D-camera caption look as a deterministic per-frame painter for HyperFrames: caption groups sit at different depths so camera moves pull them apart, hero words hide behind the speaker through an alpha matte, and a ring of words turns in front. Prep scripts cut the take, build a reflect-padded plate and a local person matte with `hyperframes remove-background`, and measure font metrics; in-browser checks catch words leaving the frame or touching. It needs a locked-off talking-head shot and word timings from a transcriber you already run. A community-tier skill written by HeyGen's Jake Moran.","useWhen":["3D text or 3D camera captions on a talking-head video","Words placed around or behind the speaker","A camera move that flies through the captions","Depth captions on an avatar video"],"notFor":["Plain subtitles (use HyperFrames)","Moving or handheld shots, extreme close-ups, or subjects a matting model can't separate"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes-community-skills/tree/master/skills/camera-3d-captions","repo":"heygen-com/hyperframes-community-skills","path":"skills/camera-3d-captions","license":"Apache-2.0"},"install":{"claude-code":"npx skills add heygen-com/hyperframes-community-skills --skill camera-3d-captions -a claude-code","codex":"npx skills add heygen-com/hyperframes-community-skills --skill camera-3d-captions -a codex","cursor":"npx skills add heygen-com/hyperframes-community-skills --skill camera-3d-captions -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes-community-skills --skill camera-3d-captions -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js 22+","FFmpeg","Python 3 with fonttools, brotli, numpy and pillow","A locked-off talking-head take and word timings from your own transcriber","p5 Paint Animation skill (optional, for hand-drawn words)"],"cost":{"note":"Free — open-source, renders locally; the person matte runs on-device"},"files":["SKILL.md","assets/kit/cam3d.js","assets/kit/finish.js","assets/kit/tables.js","references/recipes.md","references/worked-film.html","scripts/font-metrics.py","scripts/frame-bounds.js","scripts/glyph-gaps.js","scripts/hand/build-sprites.py","scripts/hand/hand-word.anim.js","scripts/prep-take.sh"],"stats":{"installs":264,"stars":231,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-22","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":265,"text":"DEPTH"},"legal":"scanned: manual review 2026-10-26 — scripts use local ffmpeg, fontTools and NumPy; network is npm (`hyperframes@0.8.62`), the CLI's one-time person-matte model download and GSAP from jsDelivr. skills.sh: Trust Hub Pass, Socket Pass, Snyk Warn (GSAP CDN). Community tier: heygen-com/hyperframes-community-skills sits outside HeyGen's curated set; written by HeyGen's Jake Moran (PR #11). Fonts are yours: check they allow embedding.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/1fc0866a8618/hyperframes-camera-3d-captions.mp4","w":720,"h":404,"duration":6,"blur":"data:image/webp;base64,UklGRgQBAABXRUJQVlA4IPgAAADQBQCdASogABIAPtFUo0uoJKMhsAgBABoJYgCdMtCBS8AVw6oKU0JSKF7/VYGhGdUi7mKmaHUoAP7zNWxtIYk+VEzMLhulOV25ejP6Oaw7IoGq1S/6Cri/RRefcdu2QYqOq6T+3lZUVIBqksw6uMN+DNawdk58PGXvz4iCUgl/EKs3NftrVUcNnZ/oWOs55NJwr6CKGjXKI+w65axoSqb8/z1ryOEbQjIiSvY9hx2htCcNosFDUXr8hQ2bFrU8BkmEH1Ygl8//Y6A7nYbbHTZaGRbUZugxk1AafL+ayBy142eXoZlgA8QqlXprIkJhF/DMHsYh7AAAAA==","source":"https://video.twimg.com/amplify_video/2102541009884471296/vid/avc1/1920x1080/sRrjQm5Z6BzvxSuw.mp4","page":"https://x.com/jake11moran/status/2102544324445848031","credit":"Jake Moran (@jake11moran), skill author at HeyGen","rights":"creator-post","note":"Skill launch demo: captions placed in 3D around a talking head; 'forget' flies through, words pass behind the speaker and curve around her","bytes":176586,"addedAt":"2026-10-27"}},{"id":"heygen-com/day-in-my-life","slug":"hyperframes-day-in-my-life","name":"Day in My Life","skillName":"day-in-my-life","type":"skill","status":"live","stream":"vendors","category":"animation","tags":["code-to-video","hyperframes","p5-brush","hand-drawn","short-film","agent-history","art-direction"],"summary":"A 60–75 s hand-drawn ink film of your agent's day with you, built from local Claude Code history, scored for strings.","description":"Makes a two-tone p5.brush ink film of one typical session between the agent and its user, from the first message to the lesson it keeps, told only in the user's verbatim words (a coder gets a coding day). `harvest.py` reads the local Claude Code history, the user approves every on-screen line with its source before anything renders, and `score.py` synthesizes a string score locked to the film's clock. HyperFrames renders it locally on the GPU and `qc.py` checks stepping, seams and loudness; it is a community-tier skill written by HeyGen's Jake Moran.","useWhen":["A film of a day in the life of your agent","What it is like to be your agent, from your real sessions","A personal video of your Claude Code work"],"notFor":["Someone else's history or a team's shared logs","Product marketing or anything the user won't review","claude.ai-only users with no local transcripts","A watercolor version with an orchestral score (use Session Story)"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes-community-skills/tree/master/skills/day-in-my-life","repo":"heygen-com/hyperframes-community-skills","path":"skills/day-in-my-life","license":"Apache-2.0"},"install":{"claude-code":"npx skills add heygen-com/hyperframes-community-skills --skill day-in-my-life -a claude-code"},"agents":["claude-code"],"requires":["Claude Code with 10+ local sessions over 5 days","Node.js 22+","Python 3.9+ with numpy and scipy","FFmpeg","A GPU for the WebGL render"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","assets/kit/brush-ink.js","assets/kit/film.js","assets/kit/hf-bridge.js","assets/kit/props.js","assets/template/archetypes.json","assets/template/hyperframes.json","assets/template/index.html","assets/template/scenes.js","assets/template/story.example.json","references/look.md","references/score.md","references/story.md","scripts/harvest.py","scripts/new-film.mjs","scripts/package-lock.json","scripts/package.json","scripts/qc.py","scripts/requirements.txt","scripts/score.py","scripts/setup.sh","scripts/shoot.mjs"],"stats":{"installs":168,"stars":231,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-24","addedAt":"2026-10-26","preview":{"kind":"film","hue":265,"text":"a day in my life"},"legal":"scanned: manual review 2026-10-26 — scripts use the standard library, NumPy/SciPy and ffmpeg with no network; puppeteer's install fetches Chrome for Testing. It reads ~/.claude/projects transcripts and memory locally and quotes them only after the user approves each line. skills.sh: Pass, Pass, Pass. Community tier (outside HeyGen's curated set); written by HeyGen's Jake Moran (PR #13). Setup pulls p5 (LGPL-2.1) from npm.","adds":"visual","media":{"type":"none","reason":"No public render of this skill's ink film exists: the skill folder ships code and templates only (no example film), its PR has no attachments, and neither the author nor @HyperFrames_ posted a demo; the sister skills' launch videos are a different look","searched":["github.com/heygen-com/hyperframes-community-skills skills/day-in-my-life (SKILL.md, assets, references: no media)","community-skills README and PR #13 (no attachments)","hyperframes.heygen.com docs and showcase","X: from:jake11moran media Aug-Oct 2026, from:HyperFrames_ media, from:Rames_Jusso media, searches 'day-in-my-life' and 'a day in my life as' agent"],"addedAt":"2026-10-27"}},{"id":"heygen-com/duo","slug":"hyperframes-duo","name":"Duo Foldable Phone","skillName":"duo","type":"skill","status":"beta","stream":"vendors","category":"native-ui","tags":["code-to-video","hyperframes","meme","side-by-side","phone-mockup"],"summary":"Two HTML screens composited into a photo of hands holding an open foldable phone, for side-by-side meme videos.","description":"Composite any two HTML screens into a locked photo plate of hands holding an open foldable phone — a 1448×1086 still with two blank 495×849 / 498×849 screen slots (left and right) — to make side-by-side meme and comparison videos: TikTok vs Reels, ChatGPT vs Claude, \"me vs my friend\", before/after, two apps racing. Trigger on: \"foldable phone meme\", \"put X on the left screen and Y on the right\", \"two-screen comparison video\", \"the dual-screen phone meme\", or any request that names two apps/feeds/chats to show at once. The plate, geometry, and camera are finished — the agent only authors what plays INSIDE the two screens and renders.","useWhen":["Two apps, feeds or chats side by side on one phone","\"X vs Y\" comparison memes","Before/after or two versions racing"],"notFor":["A single phone, a laptop or a device photo you supply","Other aspect ratios (crop the 4:3 render as a follow-up)"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes-community-skills/tree/master/skills/duo","repo":"heygen-com/hyperframes-community-skills","path":"skills/duo","license":"Apache-2.0"},"install":{"claude-code":"npx skills add heygen-com/hyperframes-community-skills --skill duo -a claude-code","codex":"npx skills add heygen-com/hyperframes-community-skills --skill duo -a codex","cursor":"npx skills add heygen-com/hyperframes-community-skills --skill duo -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes-community-skills --skill duo -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js 22+ and FFmpeg for the HyperFrames CLI (npx)"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","assets/icons-instagram.svg","assets/icons-tiktok.svg","assets/plate-preview.jpg","assets/plate.png","assets/screen-spec.json","references/feed-recipes.md","references/screen-geometry.md","references/sourcing-real-ui.md","scripts/build.mjs","template/index.template.html"],"stats":{"installs":196,"stars":231,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-10","addedAt":"2026-10-26","preview":{"kind":"chat","hue":265,"text":"me vs my friend"},"legal":"scanned: manual review 2026-10-26 — build.mjs is a local scaffolder that refuses symlinks; GSAP loads from jsDelivr. skills.sh: Pass, Pass, Pass. Beta for rights: plate.png is a photo from X (@A_Kapustin) redistributed as a meme template with no license from its author, the icon sheets are TikTok's and Instagram's trademarked glyphs, and a reference shows pulling other accounts' TikTok and Instagram clips (yt-dlp, CDN URLs with spoofed headers). Community tier; by HeyGen's Jake Moran, submitted by Miguel Sierra (PR #8).","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/606355b9f5cc/hyperframes-duo.mp4","w":720,"h":540,"duration":8,"blur":"data:image/webp;base64,UklGRkABAABXRUJQVlA4IDQBAADQBgCdASogABgAPtFepUyoJaOiMBgIAQAaCWgAtRrdYRDQOwFcWV1i/Lwh90RJHqYlvF7pzE9dQsLlaSA7dnAA/vTe7v6h5ibOSwX9Af4LBlTVcHHtFGOYyyha0Xrg5+5gRWUnwg1u7Uu1O1YBl8sMRyPUgI6H0n+O0eblMIlgrjl//Yyd0vGn/I/oBGxhp1GyVFiA0cF06Vwp+zloWTm6clWzXHhzLX0BtVYrAd+etwJGqCEECzNBcKy8cnmW4Hb47bDDYbr5K5v7hb97RpD8nyLVJ8HsvpT7HxTQvI7iMkroD2E5/nnmX/kkBpT9su0d0uCTYFS743WO13l6ahFg8+wMY9tRAZx1ipN7XT3LKJMYwsR8DrbgHojaoKdRO2aqmF1sl8I1o7lAeeaaujxspAAAAA==","source":"https://video.twimg.com/amplify_video/2098118197589463040/vid/avc1/1448x1086/UVocbXWdXEQLtXc4.mp4","page":"https://x.com/jake11moran/status/2098118454343798862","credit":"Jake Moran (@jake11moran), HeyGen","rights":"creator-post","note":"The skill's 1448x1086 foldable-phone plate with two live screens side by side (a TikTok feed vs a Reels feed); linked as the duo skill demo","bytes":458459,"addedAt":"2026-10-27"}},{"id":"heygen-com/p5-paint-animation","slug":"hyperframes-p5-paint-animation","name":"p5 Paint Animation","skillName":"p5-paint-animation","type":"skill","status":"live","stream":"vendors","category":"animation","tags":["code-to-video","p5-brush","handwriting","write-on","painterly","video-repaint","art-direction"],"summary":"Handwriting that writes itself, photos that paint themselves and clips repainted as living paintings, in p5.js code.","description":"Three flows on one headless p5.brush engine: a phrase writes itself in pencil on ruled paper (with a pen track for camera moves), a photo repaints itself as brushstrokes from coarse to fine, and a short clip or Live Photo is repainted frame by frame over a locked stroke lattice so the painting holds still while the subject moves. Everything is seeded code, so the same seed gives the same frames; sketches run in sandboxed headless Chromium with network blocked and ffmpeg stitches the MP4. Render time grows per frame, so keep footage under about 10 s; a community-tier skill added by HeyGen's James Russo.","useWhen":["Handwritten text that writes itself","Turn a photo into a painting that paints itself","Repaint a short clip or Live Photo as a living painting","Sketch or write-on effects with no image model"],"notFor":["Crisp or brand-accurate typography (use real fonts)","Photoreal output","Footage longer than about 10 s","Live or interactive pages"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes-community-skills/tree/master/skills/p5-paint-animation","repo":"heygen-com/hyperframes-community-skills","path":"skills/p5-paint-animation","license":"Apache-2.0"},"install":{"claude-code":"npx skills add heygen-com/hyperframes-community-skills --skill p5-paint-animation -a claude-code","codex":"npx skills add heygen-com/hyperframes-community-skills --skill p5-paint-animation -a codex","cursor":"npx skills add heygen-com/hyperframes-community-skills --skill p5-paint-animation -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes-community-skills --skill p5-paint-animation -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js 22.12+","FFmpeg","About 500 MB of disk for Puppeteer's Chrome for Testing"],"cost":{"note":"Free — open-source, renders locally, no image models"},"files":["SKILL.md","references/flows.md","references/gotchas.md","scripts/lib/inject.mjs","scripts/lib/page-safety.mjs","scripts/package-lock.json","scripts/package.json","scripts/render-anim.mjs","scripts/render-video.mjs","scripts/render.mjs","scripts/setup.sh","scripts/sketches/handwriting.anim.js","scripts/sketches/repaint-video.js","scripts/sketches/repaint.anim.js"],"stats":{"installs":318,"stars":231,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-25","addedAt":"2026-10-26","preview":{"kind":"generative","hue":265,"text":"go make something"},"legal":"scanned: manual review 2026-10-26 — sketches render in headless Chromium with all network and file requests blocked, --inject takes typed literals only, ffmpeg runs with argument arrays; puppeteer's install fetches Chrome for Testing. skills.sh: Trust Hub Pass, Socket Warn (runs caller sketch code), Snyk Warn (--inject text). Community tier (outside HeyGen's curated set); added by HeyGen's James Russo (PR #2), harness credited to surya.website. p5 is LGPL-2.1 (from npm).","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/6e64b6b03bf7/hyperframes-p5-paint-animation.mp4","w":720,"h":406,"duration":9.6,"blur":"data:image/webp;base64,UklGRkoAAABXRUJQVlA4ID4AAACQAwCdASogABIAPtFcp04oJSOiKAqpABoJaQDKABEcrLBr5nDgAP7zax0PDkT0PfLTbibMdagxe/FyiAAAAA==","source":"https://video.twimg.com/amplify_video/2092305034516295681/vid/avc1/1914x1080/IAvw2UjQan97Wrf4.mp4","page":"https://x.com/HyperFrames_/status/2092308986775343288","credit":"HyperFrames (@HyperFrames_)","rights":"creator-post","note":"From the official community-skills launch film made with the p5 skill: 'p5.js' writes itself by hand, panels paint on, and a beach clip is repainted as a living painting (65-75 s)","bytes":117050,"addedAt":"2026-10-27"}},{"id":"heygen-com/prod-by-claude","slug":"hyperframes-prod-by-claude","name":"Prod by Claude","skillName":"prod-by-claude","type":"skill","status":"live","stream":"vendors","category":"music","tags":["code-to-video","hyperframes","strudel","live-coding","music-visualizer"],"summary":"A square video of a Strudel live-coding track where every code token lights up on the note it plays.","description":"Turns a Strudel track into a 1080×1080 HyperFrames video where the code is the picture: tokens light up on their notes, parts power on at their first note, the editor blends through real Strudel themes, drops break into graffiti ASCII and the video ends on a typed sign-off. `record.mjs` renders the mix, solo stems and every note event offline from a pinned `@strudel/web` build in muted headless Chrome, and `build-data.mjs` feeds them to the composition so each highlight lands on its note. It can also compose the track (a synth-only example is included); a community-tier skill written by HeyGen's Jake Moran.","useWhen":["A video of a Strudel live-coding track","Show the code lighting up as it plays","Compose a track and make its video"],"notFor":["Other audio or DAW projects","Visualizers for an audio file with no Strudel code (use HyperFrames' music workflow)","Talking-head videos"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes-community-skills/tree/master/skills/prod-by-claude","repo":"heygen-com/hyperframes-community-skills","path":"skills/prod-by-claude","license":"Apache-2.0"},"install":{"claude-code":"npx skills add heygen-com/hyperframes-community-skills --skill prod-by-claude -a claude-code","codex":"npx skills add heygen-com/hyperframes-community-skills --skill prod-by-claude -a codex","cursor":"npx skills add heygen-com/hyperframes-community-skills --skill prod-by-claude -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes-community-skills --skill prod-by-claude -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js 22+ and npm","Chrome for Testing 149 (about 150 MB) or your own Chrome via CHROME","FFmpeg"],"cost":{"note":"Free — renders locally; HyperFrames cloud render is optional and spends your HeyGen credits"},"runtime":"5–7 min to record 32 bars, plus render","files":["SKILL.md","assets/example/track.strudel.js","assets/template/app.js","assets/template/index.html","assets/template/video.json","references/composing.md","references/themes.md","references/video.md","scripts/build-data.mjs","scripts/new-project.mjs","scripts/package.json","scripts/record.mjs","scripts/recorder.html"],"stats":{"installs":166,"stars":231,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-24","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":265,"text":"prod by claude"},"legal":"scanned: manual review 2026-10-26 — record.mjs serves a pinned Strudel build on 127.0.0.1 to a muted headless Chrome; snapshots run with --describe false so frames stay local. skills.sh: Trust Hub Warn (npx, Chrome download), Socket Pass, Snyk Warn (GSAP CDN). Community tier (outside HeyGen's curated set); by HeyGen's Jake Moran (PR #15). @strudel/web is AGPL-3.0 (installed from npm, not bundled); samples a track loads need clearance.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/1cfd66e4efe8/hyperframes-prod-by-claude.mp4","w":560,"h":560,"duration":11,"blur":"data:image/webp;base64,UklGRmIAAABXRUJQVlA4IFYAAADwAwCdASogACAAPtFepE8oJSMiKAqpABoJZwAARHGalVxKqaMpzPwAAP7vfIq2qdSeRObR/UjYrGGw2liwmHs55kTPr285nWldh7fzOmtW30fe51AgAA==","source":"https://video.twimg.com/amplify_video/2103195216195055616/vid/avc1/1080x1080/aJ71UJbFvGYl0vzg.mp4","page":"https://x.com/jake11moran/status/2103195719859589540","credit":"Jake Moran (@jake11moran), skill author at HeyGen","rights":"creator-post","note":"Skill launch example: Claude's Strudel track as a square video; code tokens light up on their notes through theme switches into an ASCII graffiti 'DROP'","bytes":597330,"addedAt":"2026-10-27"}},{"id":"heygen-com/session-story","slug":"hyperframes-session-story","name":"Session Story","skillName":"session-story","type":"skill","status":"live","stream":"vendors","category":"animation","tags":["code-to-video","hyperframes","p5-brush","watercolor","short-film","agent-history","art-direction"],"summary":"A 40–70 s watercolor film of a typical session with your agent, told in your real messages, with its own score.","description":"The agent animates one typical session with its user in p5.brush watercolor: requests glide in as paper planes, corrections are a cartoon mallet, praise is a butterfly, and the agent types, folds and throws back its replies at a desk in a room decorated from what it knows about the user. `harvest.py` finds the routine in local Claude Code or Codex transcripts after the user agrees, every on-screen quote goes through a privacy gate, and the agent writes its own orchestral score, rendered with macOS's built-in General MIDI bank or fluidsynth. A community-tier skill written by HeyGen's Jake Moran; the character engine is adapted from John Heibel's ClaudeAnimationBase (MIT).","useWhen":["A video of a session with your agent","Show what working with you is like","A film about you and your agent, in your own words"],"notFor":["Someone else's history or a team's shared logs","Marketing with made-up quotes","A hand-drawn ink version scored for strings (use Day in My Life)"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes-community-skills/tree/master/skills/session-story","repo":"heygen-com/hyperframes-community-skills","path":"skills/session-story","license":"Apache-2.0"},"install":{"claude-code":"npx skills add heygen-com/hyperframes-community-skills --skill session-story -a claude-code","codex":"npx skills add heygen-com/hyperframes-community-skills --skill session-story -a codex","cursor":"npx skills add heygen-com/hyperframes-community-skills --skill session-story -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes-community-skills --skill session-story -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js 22+","Python 3.9+","FFmpeg","macOS swift (Xcode Command Line Tools), or fluidsynth with a General MIDI SoundFont","Local Claude Code or Codex history, or a pasted session"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","assets/engine/index.html","assets/engine/kit/clawd.js","assets/engine/kit/config.js","assets/engine/kit/core.js","assets/engine/kit/hf-bridge.js","assets/engine/kit/timeline.js","assets/engine/LICENSE-ClaudeAnimationBase","assets/engine/NOTICE.md","assets/engine/scenes/cast-custom.js","assets/engine/scenes/compile.js","assets/engine/scenes/desk.js","assets/engine/scenes/director.js","assets/engine/scenes/paper.js","assets/engine/scenes/props-custom.js","assets/engine/scenes/props.js","assets/engine/story.js","assets/example/score.py","assets/example/story.json","references/cast.md","references/motion.md","references/room.md","references/score.md","references/sources.md","references/story.md","scripts/harvest.py","scripts/new-project.mjs","scripts/package-lock.json","scripts/package.json","scripts/schedule.mjs","scripts/score/build.sh","scripts/score/orchestra.py","scripts/score/qc.py","scripts/score/render.swift","scripts/setup.sh"],"stats":{"installs":400,"stars":231,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-24","addedAt":"2026-10-26","preview":{"kind":"notes","hue":265,"text":"so cool"},"legal":"scanned: manual review 2026-10-26 — harvest.py reads ~/.claude/projects and ~/.codex/sessions locally after the user agrees, and every quote passes a privacy gate; snapshots run with --describe false so frames never reach Gemini. skills.sh: Trust Hub Warn (transcript reads), Socket Warn (build.sh), Snyk Pass. Community tier (outside HeyGen's curated set); by HeyGen's Jake Moran (PR #14); kit adapted from John Heibel's ClaudeAnimationBase (MIT).","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e6488d83a31f/hyperframes-session-story.mp4","w":720,"h":404,"duration":12,"blur":"data:image/webp;base64,UklGRu4AAABXRUJQVlA4IOIAAACQBQCdASogABIAPtFcpUyoJSOiMBgIAQAaCWoAnTLT+gBvAt3SMf14S77uyg0RiHLDGMVHAAD+xNjzPdVYU+L7WfotFpIRZv0z2cZT1LphcuXktHU8lwYMJ0QcFuq2YXbG831zvsJQWotRY9Wl8fu2MT5GYQm2a9ekwoDXjJIbnJZd+GHqBummUlwu2g/DX8dhHEIlOTzHv8sokb08iyWGjZ0WQin19AuUgvzzwGCywInMw4GYwcdENL8FfuZRN3Bgjtjd/dZ0tTt5+a1owan5YuYGGhvcjtls7xH8lZqiDnwA","source":"https://video.twimg.com/amplify_video/2103246737880326145/vid/avc1/1920x1080/8AYyyUUlReDOTGU2.mp4","page":"https://x.com/jake11moran/status/2103247490237825416","credit":"Jake Moran (@jake11moran), skill author at HeyGen","rights":"creator-post","note":"Skill launch example: the agent at its desk as Jake's real messages arrive as paper notes, a lightbulb moment and a mallet ('we have to show actual messages!')","bytes":475714,"addedAt":"2026-10-27"}},{"id":"heygen-com/vox-explainer","slug":"hyperframes-vox-explainer","name":"Plain-Sight Explainer","skillName":"vox-explainer","type":"skill","status":"live","stream":"vendors","category":"explainers","tags":["code-to-video","hyperframes","collage","editorial-collage","voiceover","archival"],"summary":"60–90 s collage explainers about everyday things, or mined from your documents and links, with numeric seam checks.","description":"A gateway workflow for collage-style explainers about something viewers see daily but never looked at, or a storyline mined from documents and links you supply: topic filter or source mining, script, a static design pass on real assets, voiceover timing, build, then numeric QC. It uses a Vox-inspired grammar (measured palette, Archivo Black headlines, a yellow-circle carrier, zoom-isolation cuts) with no Vox affiliation, plus two scripts that stamp and verify transition seams in headless Chrome. Voiceover defaults to local `npx hyperframes tts`, a hosted TTS or transcription API is used only after you approve it; imported by HeyGen's James Russo (community tier).","useWhen":["A plain-sight explainer: why is X everywhere?","A Vox-style history of an everyday object","Turn a document or link into a 60–90 s explainer"],"notFor":["Brand-faithful product launch films (use HyperFrames)","Using Vox logos or implying Vox made it"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes-community-skills/tree/master/skills/vox-explainer","repo":"heygen-com/hyperframes-community-skills","path":"skills/vox-explainer","license":"Apache-2.0"},"install":{"claude-code":"npx skills add heygen-com/hyperframes-community-skills --skill vox-explainer -a claude-code","codex":"npx skills add heygen-com/hyperframes-community-skills --skill vox-explainer -a codex","cursor":"npx skills add heygen-com/hyperframes-community-skills --skill vox-explainer -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes-community-skills --skill vox-explainer -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["kokoro"],"requires":["Node.js 22+","A HyperFrames project (npx hyperframes init)","Chrome (seam verifier)","FFmpeg"],"cost":{"note":"Free — renders locally with local TTS; a hosted TTS or transcription API, only with your OK, bills through that provider"},"files":["SKILL.md","references/animation-overlap.md","references/motion-continuity.md","references/plain-sight-script.md","references/plain-sight-topics.md","references/render-safe-seams.md","references/seam-gate.md","references/velocity-matched-transitions-gsap.md","references/velocity-matched-transitions.md","references/vox-collage-layout.md","references/vox-collage-motion.md","references/vox-text-overlays.md","scripts/seam-gate.mjs","scripts/seam-stamp.mjs"],"stats":{"installs":379,"stars":231,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-25","addedAt":"2026-10-26","preview":{"kind":"collage","hue":265,"text":"why is it everywhere?"},"legal":"scanned: manual review 2026-10-26 — seam scripts run `hyperframes@0.8.14 preview` with a filtered environment and a throwaway Chrome profile, localhost only; hosted TTS needs approval. skills.sh: Trust Hub Pass, Socket Warn (installs the upstream HyperFrames skills), Snyk Warn (reads supplied URLs). Community tier; imported by HeyGen's James Russo (PR #4) from a workflow zip whose author is not named. Vox-inspired look: no Vox affiliation or logos.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ba6b4376e811/hyperframes-vox-explainer.mp4","w":720,"h":404,"duration":11,"blur":"data:image/webp;base64,UklGRowAAABXRUJQVlA4IIAAAADQBACdASogABIAPtFWo0uoJKMhsAgBABoJZwAAXK+0WvacM9iLOQWcK0ZxYsRlWAD+88iP8r5T2NUPnRW7hDni4bIvYXNnvSGyPtFqne1Oe8OzTGit24FMUbUp9PZAEqqJ/vHfB1B9aYLOfB/lk7FwB3HI81YdvkSk7fMtQaQ4AA==","source":"https://video.twimg.com/amplify_video/2092695195649454080/vid/avc1/1920x1080/8t4qwUtnAQ2ZcQGu.mp4","page":"https://x.com/jake11moran/status/2092695713012756532","credit":"Jake Moran (@jake11moran), HeyGen","rights":"creator-post","note":"Skill launch example ('explain the history of zippers'): collage beats 'Hundreds of feet a day', 'Zipper = the boot', 'It took 30 years and a boot to get a name'","bytes":76700,"addedAt":"2026-10-27"}},{"id":"heygen-com/x-posting-license","slug":"hyperframes-x-posting-license","name":"X Posting License","skillName":"x-posting-license","type":"skill","status":"beta","stream":"vendors","category":"native-ui","tags":["code-to-video","hyperframes","x-twitter","profile-card","parody","template"],"summary":"A 10-second animated 'posting license' card for an X profile, filled with real profile data into a locked template.","description":"Turn any X (Twitter) profile into a 10.3s animated \"POSTING LICENSE\" card video — a fake driver's license in X's branding: the card slides in over an animated dot-matrix ground, license text types on letter-by-letter, follower / following / post counters tick up, a diagonal glimmer sweeps as the card tilts in 3D, it flips to a fine-print back with a signature write-on, then crouches and leaps out of frame. Trigger on: \"X driver's license\", \"posting license\", \"make an X license for @handle\", \"license card video\". The whole composition is a finished template — the agent only supplies profile data and renders.","useWhen":["An X 'posting license' or driver's license card for a handle","A short profile card video from real X data"],"notFor":["Custom card designs or edited motion (the template is locked; use HyperFrames)","Invented counts or bios"],"publisher":{"name":"HeyGen","handle":"heygen-com","url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/heygen-com/hyperframes-community-skills/tree/master/skills/x-posting-license","repo":"heygen-com/hyperframes-community-skills","path":"skills/x-posting-license","license":"Apache-2.0"},"install":{"claude-code":"npx skills add heygen-com/hyperframes-community-skills --skill x-posting-license -a claude-code","codex":"npx skills add heygen-com/hyperframes-community-skills --skill x-posting-license -a codex","cursor":"npx skills add heygen-com/hyperframes-community-skills --skill x-posting-license -a cursor","gemini-cli":"npx skills add heygen-com/hyperframes-community-skills --skill x-posting-license -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js 18+ and the HyperFrames CLI via npx","FFmpeg","A browser tool to read the X profile","macOS GPU rendering for the WebGL dot field"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","references/profile-data.md","scripts/build.mjs","template/index.template.html"],"stats":{"installs":214,"stars":231,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-27","addedAt":"2026-10-26","preview":{"kind":"cards","hue":265,"text":"POSTING LICENSE"},"legal":"scanned: manual review 2026-10-26 — build.mjs validates, escapes and caps every profile field and writes only inside --out. skills.sh: Pass, Pass, Snyk Warn (untrusted profile text). Beta for rights: an X-branded parody card built from a real person's photo and counts (make it for yourself or with consent), with the post count from api.fxtwitter.com, an unofficial X API. Community tier; by HeyGen's Jake Moran (PR #5).","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b46762a3033d/hyperframes-x-posting-license.mp4","w":720,"h":404,"duration":10.3,"blur":"data:image/webp;base64,UklGRngAAABXRUJQVlA4IGwAAADQAwCdASogABIAPslQnkunpKKhsAwA8BkJZwDGQCIfuj5vnCKF8gAA/vWHfK8JgFBY+mooNyHlRJ0+3KXJ2ZUoISdWyCb9fb+5zc7mBx/czfxhHy6cB6o3omxLQkYEq6RW1tNf7deW8/QR5AA=","source":"https://video.twimg.com/amplify_video/2093046250044329984/vid/avc1/1920x1080/OLg9J2jm5lCWOOS8.mp4","page":"https://x.com/jake11moran/status/2093056828410397064","credit":"Jake Moran (@jake11moran), skill author at HeyGen","rights":"creator-post","note":"Skill launch example: the animated X 'posting license' ID card filled with the author's own profile data, flipping to its terms on the back","bytes":343153,"addedAt":"2026-10-27"}},{"id":"remotion-dev/remotion-best-practices","slug":"remotion-best-practices","name":"Remotion Best Practices","skillName":"remotion-best-practices","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["explainers","react","programmatic-video","captions","remotion"],"summary":"Make videos in React with Remotion: the router that loads the right Remotion skill for each step.","description":"Remotion's top-level skill, generated from the Remotion monorepo, routes an agent through creating a project, writing React markup and animation, maps, multimedia, captions, interactivity, previewing in Remotion Studio, rendering, building an app on the Player and upgrading. It bundles every sub-skill's reference files and sets house rules such as preserving the user's edits and opening the preview before rendering.","useWhen":["Any Remotion task when unsure which skill applies","Creating a programmatic video in React","Previewing, rendering or captioning a Remotion composition"],"notFor":["HTML-first videos without React (use HyperFrames)"],"publisher":{"name":"Remotion","handle":"remotion-dev","url":"https://www.remotion.dev","avatar":"https://github.com/remotion-dev.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/remotion-dev/skills/tree/main/skills/remotion-best-practices","repo":"remotion-dev/skills","path":"skills/remotion-best-practices","license":"MIT"},"install":{"claude-code":"npx skills add remotion-dev/skills --skill remotion-best-practices -a claude-code","codex":"npx skills add remotion-dev/skills --skill remotion-best-practices -a codex","cursor":"npx skills add remotion-dev/skills --skill remotion-best-practices -a cursor","gemini-cli":"npx skills add remotion-dev/skills --skill remotion-best-practices -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js","Remotion 4"],"cost":{"note":"Free — local render (Remotion company license for larger for-profit teams)"},"files":["SKILL.md","agents/openai.yaml","assets/remotion-icon.svg","remotion-captions/agents/openai.yaml","remotion-captions/assets/remotion-icon.svg","remotion-captions/display-captions.md","remotion-captions/import-srt-captions.md","remotion-captions/REFERENCE.md","remotion-captions/transcribe-captions.md","remotion-create/agents/openai.yaml","remotion-create/assets/remotion-icon.svg","remotion-create/REFERENCE.md","remotion-create/tailwind.md","remotion-create/video-layout.md","remotion-docs/agents/openai.yaml","remotion-docs/assets/remotion-icon.svg","remotion-docs/REFERENCE.md","remotion-interactivity/agents/openai.yaml","remotion-interactivity/assets/remotion-icon.svg","remotion-interactivity/inline-effects.md","remotion-interactivity/REFERENCE.md","remotion-interactivity/timeline-structure.md","remotion-maps/agents/openai.yaml","remotion-maps/assets/remotion-icon.svg","remotion-maps/REFERENCE.md","remotion-maps/techniques/cesium/assets/cesium-path.json","remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx","remotion-maps/techniques/cesium/assets/city-path.json","remotion-maps/techniques/cesium/assets/example-Root.tsx","remotion-maps/techniques/cesium/assets/flight-path.ts","remotion-maps/techniques/cesium/assets/sample-river.geojson","remotion-maps/techniques/cesium/references/3d-data-sources.md","remotion-maps/techniques/cesium/references/3d-flyover-architecture.md","remotion-maps/techniques/cesium/references/3d-troubleshooting.md","remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs","remotion-maps/techniques/cesium/TECHNIQUE.md","remotion-maps/techniques/mapbox/references/render-stability.md","remotion-maps/techniques/mapbox/TECHNIQUE.md","remotion-maps/techniques/maplibre/references/render-stability.md","remotion-maps/techniques/maplibre/TECHNIQUE.md","remotion-maps/techniques/maptiler/assets/CountryLabel.tsx","remotion-maps/techniques/maptiler/assets/example-Root.tsx","remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts","remotion-maps/techniques/maptiler/assets/RiverReveal.tsx","remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json","remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json","remotion-maps/techniques/maptiler/assets/tokens.ts","remotion-maps/techniques/maptiler/references/map-data-sources.md","remotion-maps/techniques/maptiler/references/map-explainer-architecture.md","remotion-maps/techniques/maptiler/references/map-geo-prep.md","remotion-maps/techniques/maptiler/references/render-stability.md","remotion-maps/techniques/maptiler/scripts/prep-geo.mjs","remotion-maps/techniques/maptiler/TECHNIQUE.md","remotion-maps/techniques/static-map/TECHNIQUE.md","remotion-markup/3d.md","remotion-markup/agents/openai.yaml","remotion-markup/arabic-text.md","remotion-markup/assets/remotion-icon.svg","remotion-markup/audio-visualization.md","remotion-markup/audio.md","remotion-markup/calculate-metadata.md","remotion-markup/color-correction.md","remotion-markup/compositions.md","remotion-markup/connected-compositions.md","remotion-markup/cropping.md","remotion-markup/effects.md","remotion-markup/embedding-videos.md","remotion-markup/ffmpeg.md","remotion-markup/gifs.md","remotion-markup/google-fonts.md","remotion-markup/html-in-canvas.md","remotion-markup/images.md","remotion-markup/light-leaks.md","remotion-markup/local-fonts.md","remotion-markup/lottie.md","remotion-markup/measuring-dom-nodes.md","remotion-markup/measuring-text.md","remotion-markup/motion-blur.md","remotion-markup/multi-scene-video.md","remotion-markup/parameters.md","remotion-markup/REFERENCE.md","remotion-markup/remotion-maps/agents/openai.yaml","remotion-markup/remotion-maps/assets/remotion-icon.svg","remotion-markup/remotion-maps/REFERENCE.md","remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json","remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx","remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json","remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx","remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts","remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson","remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md","remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md","remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md","remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs","remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md","remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md","remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md","remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md","remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md","remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx","… +44 more files"],"stats":{"installs":689600,"stars":5750,"source":"skills.sh","asOf":"2026-10-26"},"version":"4.0.539","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":212},"legal":"remotion-dev/skills has no LICENSE file; the same skills ship MIT-licensed in Remotion's plugin repos (remotion-dev/codex-plugin, cursor-plugin). Remotion itself is free for individuals, non-profits and companies of up to 3 people; larger for-profit companies need a Remotion company license.","featured":true,"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/04200edf541b/remotion-best-practices.mp4","w":720,"h":466,"duration":8,"blur":"data:image/webp;base64,UklGRkAAAABXRUJQVlA4IDQAAADwAgCdASogABQAPtFgqk+oJSOiKAgBABoJaQAAPaUIAAD+8cR87bK42On80XXDXmw4AAAA","source":"https://video.twimg.com/amplify_video/2013626156570877952/vid/avc1/1080x700/uqJ_M_PNHHPt190d.mp4","page":"https://x.com/Remotion/status/2013626968386765291","credit":"Remotion (@Remotion)","rights":"creator-post","note":"Remotion's Agent Skills launch post: 'This animation was created just by prompting' with the skill (terminal install, then 'Agent Skills now available')","bytes":66054,"addedAt":"2026-10-27"}},{"id":"remotion-dev/remotion-captions","slug":"remotion-captions","name":"Remotion Captions","skillName":"remotion-captions","type":"skill","status":"live","stream":"vendors","category":"captions","tags":["subtitles","transcription","srt","remotion"],"summary":"Transcribe speech and burn in animated captions with Remotion, or import an existing SRT file.","description":"Covers the three caption paths in Remotion: generating captions by transcribing audio, displaying and animating them on screen, and importing existing `.srt` files. Each path has its own reference file, and a post-creation section explains how to adjust captions once they exist.","useWhen":["Adding subtitles or animated captions to a Remotion video","Transcribing a voiceover into captions","Importing an SRT file"],"publisher":{"name":"Remotion","handle":"remotion-dev","url":"https://www.remotion.dev","avatar":"https://github.com/remotion-dev.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/remotion-dev/skills/tree/main/skills/remotion-captions","repo":"remotion-dev/skills","path":"skills/remotion-captions","license":"MIT"},"install":{"claude-code":"npx skills add remotion-dev/skills --skill remotion-captions -a claude-code","codex":"npx skills add remotion-dev/skills --skill remotion-captions -a codex","cursor":"npx skills add remotion-dev/skills --skill remotion-captions -a cursor","gemini-cli":"npx skills add remotion-dev/skills --skill remotion-captions -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js","Remotion 4"],"cost":{"note":"Free — local render (Remotion company license for larger for-profit teams)"},"files":["SKILL.md","agents/openai.yaml","assets/remotion-icon.svg","display-captions.md","import-srt-captions.md","transcribe-captions.md"],"stats":{"installs":216400,"stars":5750,"source":"skills.sh","asOf":"2026-10-26"},"version":"4.0.539","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"karaoke","hue":212},"legal":"remotion-dev/skills has no LICENSE file; the same skills ship MIT-licensed in Remotion's plugin repos (remotion-dev/codex-plugin, cursor-plugin). Remotion itself is free for individuals, non-profits and companies of up to 3 people; larger for-profit companies need a Remotion company license.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/3953d368f7d3/remotion-captions.mp4","w":404,"h":720,"duration":10,"blur":"data:image/webp;base64,UklGRvIBAABXRUJQVlA4IOYBAACQCgCdASogADoAPtFan0yoJSKiMBgKAQAaCWwAsRvWSxjT0owMWLXG3ngqxAGOtmtX/+hNSXMDM4fZZu7wCuxoHIeYS0f3gcoZr3uAkgnbNAbyfilINF1dxbTS7UAA/v7M3nKj15JFO5FzuraQhWmzyEwR84vQaJ2PD2RUsfrcfHQPY+Daks5/iVhdmMVmZfQUgoj97QkFjdNawBShgb14/wEjiHO0/xdg7bRnZKX0zx+TJyhuQtlEaguXTPT+8KLs+RL5aAzHYUeNlDlGblPVvPKoQdD94SJabyxemGTUVOZ/oxvvK/LoAskxofDgp3aFe4l9js0HvzVJ/+hcLk/hFY1+tVODvZX+gO4U08PMPh9orIfmFlOMdikBbjSsRS6fkn+TtKxBTEp3aHmDHdOewyGX8ep/Dj1Ysk9cOSyA867LARcNQLGOFzeq9BKvrrHALksfhqq1W9xClCvIog8zlrypF4jg7eHy5v94OES1oagdY91MMP96USiSRQBwaOmBX5itUhRP0LV+jbLJQgMmhVM5mIj13tEi2uhLGT2OG9+zCr5cDv1mASo3/ExuvuX86q0Od/Cf0XlSgfteFSqbTuUtUpDkgYDLu6n04Qg0pPKrWYxM/8QkMWF+YBnKE6T9sGcAAAA=","source":"https://stream.mux.com/BzwCAYgGPqNtLk301tsgWCDvuWVWfEvaO2bIo2lGEd300/high.mp4","page":"https://www.remotion.dev/templates/tiktok","credit":"Remotion","rights":"publisher-site","note":"Official preview of Remotion's TikTok template: speech transcribed with Whisper.cpp and burned in as animated word-by-word captions","bytes":218904,"addedAt":"2026-10-27"}},{"id":"remotion-dev/remotion-create","slug":"remotion-create","name":"Remotion Create","skillName":"remotion-create","type":"skill","status":"live","stream":"vendors","category":"explainers","tags":["scaffold","react","tailwind","remotion"],"summary":"Scaffold a new Remotion project and lay the video out as clips or scenes before writing any frames.","description":"Starts a Remotion video in an empty or existing folder with `npx create-video@latest` and opens the Studio preview before building. It decides whether the piece is a timeline of clips or a multi-scene composition, applies the interactivity conventions and covers TailwindCSS setup.","useWhen":["Starting a new Remotion video or composition","Adding Remotion to an existing project","Planning a promo or explainer as scenes"],"publisher":{"name":"Remotion","handle":"remotion-dev","url":"https://www.remotion.dev","avatar":"https://github.com/remotion-dev.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/remotion-dev/skills/tree/main/skills/remotion-create","repo":"remotion-dev/skills","path":"skills/remotion-create","license":"MIT"},"install":{"claude-code":"npx skills add remotion-dev/skills --skill remotion-create -a claude-code","codex":"npx skills add remotion-dev/skills --skill remotion-create -a codex","cursor":"npx skills add remotion-dev/skills --skill remotion-create -a cursor","gemini-cli":"npx skills add remotion-dev/skills --skill remotion-create -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js","Remotion 4"],"cost":{"note":"Free — local render (Remotion company license for larger for-profit teams)"},"files":["SKILL.md","agents/openai.yaml","assets/remotion-icon.svg","tailwind.md","video-layout.md"],"stats":{"installs":218500,"stars":5750,"source":"skills.sh","asOf":"2026-10-26"},"version":"4.0.539","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":212},"legal":"remotion-dev/skills has no LICENSE file; the same skills ship MIT-licensed in Remotion's plugin repos (remotion-dev/codex-plugin, cursor-plugin). Remotion itself is free for individuals, non-profits and companies of up to 3 people; larger for-profit companies need a Remotion company license.","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d9d5eb0885c9/remotion-create.mp4","w":720,"h":404,"duration":6.1,"blur":"data:image/webp;base64,UklGRqAAAABXRUJQVlA4IJQAAAAwBACdASogABIAPslUnkunpKKhsAwA8BkJQBOmcBS3wv9aQkYjxjaFxkgA/vaC/QETrQHcqH+4yRPqwq6wETAstOEPs6XKt3Z8f3ycfaB5ApeDa0z0kyd/H/L6HREOLaNYtXcMwHKvC+l2ylnQrgNR876Jf+9KLmJPQs+Erf3D19vpcOutL45d6XmU/TNdrWLScKAA","source":"https://video.twimg.com/amplify_video/2051232167716433920/vid/avc1/1280x720/9Zv0yPsuHPev2ZJK.mp4","page":"https://x.com/Remotion/status/2051235644370817051","credit":"Remotion (@Remotion)","rights":"creator-post","note":"Remotion's 'Hello World' demo: npx create-video --blank, then one prompt creates a sample composition with a glitch effect; this is the rendered result","bytes":205121,"addedAt":"2026-10-27"}},{"id":"remotion-dev/remotion-docs","slug":"remotion-docs","name":"Remotion Docs","skillName":"remotion-docs","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["docs","api-reference","remotion"],"summary":"Search the Remotion docs and pull any page as Markdown instead of guessing at APIs.","description":"Looks up Remotion APIs by searching the documentation and fetching individual pages as Markdown. The agent uses it whenever an API detail is uncertain, so code follows the current docs rather than memory.","useWhen":["An unfamiliar or changed Remotion API","Checking props, flags or package names"],"publisher":{"name":"Remotion","handle":"remotion-dev","url":"https://www.remotion.dev","avatar":"https://github.com/remotion-dev.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/remotion-dev/skills/tree/main/skills/remotion-docs","repo":"remotion-dev/skills","path":"skills/remotion-docs","license":"MIT"},"install":{"claude-code":"npx skills add remotion-dev/skills --skill remotion-docs -a claude-code","codex":"npx skills add remotion-dev/skills --skill remotion-docs -a codex","cursor":"npx skills add remotion-dev/skills --skill remotion-docs -a cursor","gemini-cli":"npx skills add remotion-dev/skills --skill remotion-docs -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js","Remotion 4"],"cost":{"note":"Free — local render (Remotion company license for larger for-profit teams)"},"files":["SKILL.md","agents/openai.yaml","assets/remotion-icon.svg"],"stats":{"installs":204700,"stars":5750,"source":"skills.sh","asOf":"2026-10-26"},"version":"4.0.539","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"notes","hue":212},"legal":"remotion-dev/skills has no LICENSE file; the same skills ship MIT-licensed in Remotion's plugin repos (remotion-dev/codex-plugin, cursor-plugin). Remotion itself is free for individuals, non-profits and companies of up to 3 people; larger for-profit companies need a Remotion company license.","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/466df725cc83/remotion-docs.mp4","w":720,"h":720,"duration":5,"blur":"data:image/webp;base64,UklGRk4AAABXRUJQVlA4IEIAAADQAwCdASogACAAPs1OpkunpCOhsBgMAPAZiWkAADywbUMaYd0p8AAA/vLLlsAgIt3xCObIyMOxuJUZuR3IEpAAAAA=","source":"https://video.twimg.com/ext_tw_video/1982730995657760768/pu/vid/avc1/720x720/uAQPn-Q2umV3om9c.mp4?tag=12","page":"https://x.com/JNYBGR/status/1982731004742717588","credit":"Jonny Burger (@JNYBGR), Remotion founder","rights":"creator-post","note":"Remotion docs for AI: a docs page's 'Copy page' menu with View as Markdown, Open in ChatGPT/Claude and MCP connectors, the Markdown the skill pulls","bytes":43701,"addedAt":"2026-10-27"}},{"id":"remotion-dev/remotion-interactivity","slug":"remotion-interactivity","name":"Remotion Interactivity","skillName":"remotion-interactivity","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["editing","studio","svg","remotion"],"summary":"Structure Remotion markup so every element can be edited visually in Remotion Studio.","description":"Rules for writing Remotion markup that stays editable in Studio: choosing schema fields, wrapping elements with `Interactive`, keeping styles, effects and composition metadata inline, animating with `interpolate()`, editable SVG paths with `Interactive.Path` and path morphing. A timeline-structure reference covers video-editing projects.","useWhen":["Making a composition editable in Studio","Animated SVG paths and morphs","Building video-editing style timelines"],"publisher":{"name":"Remotion","handle":"remotion-dev","url":"https://www.remotion.dev","avatar":"https://github.com/remotion-dev.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/remotion-dev/skills/tree/main/skills/remotion-interactivity","repo":"remotion-dev/skills","path":"skills/remotion-interactivity","license":"MIT"},"install":{"claude-code":"npx skills add remotion-dev/skills --skill remotion-interactivity -a claude-code","codex":"npx skills add remotion-dev/skills --skill remotion-interactivity -a codex","cursor":"npx skills add remotion-dev/skills --skill remotion-interactivity -a cursor","gemini-cli":"npx skills add remotion-dev/skills --skill remotion-interactivity -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js","Remotion 4"],"cost":{"note":"Free — local render (Remotion company license for larger for-profit teams)"},"files":["SKILL.md","agents/openai.yaml","assets/remotion-icon.svg","inline-effects.md","timeline-structure.md"],"stats":{"installs":207300,"stars":5750,"source":"skills.sh","asOf":"2026-10-26"},"version":"4.0.539","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":212},"legal":"remotion-dev/skills has no LICENSE file; the same skills ship MIT-licensed in Remotion's plugin repos (remotion-dev/codex-plugin, cursor-plugin). Remotion itself is free for individuals, non-profits and companies of up to 3 people; larger for-profit companies need a Remotion company license.","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/aed47b8fce1d/remotion-interactivity.mp4","w":720,"h":404,"duration":10.7,"blur":"data:image/webp;base64,UklGRtQAAABXRUJQVlA4IMgAAADwBACdASogABIAPtFepEyoJaOiMBgIAQAaCWwAnQAyjUlLoDwTXcn6epzB6xF3jAAA/vWx8atFz2AUNOnN1cabLFkb7g110qt7EJplGemXDGjaxh06jXCccUpJKr5O5fJfpCbQqpjMWmWIkefmnGB52mEhzULIYyZufYf5iqQgZ4usWrTZMB1IQXpgQMGcUcRfgbY7jVbvr5RnLfx8q2mJpsgtUYWzmpCo1LNC8JmTjfuIqrNdUlNr35LmsIEnUMOsuyD2CgAAAA==","source":"https://video.twimg.com/amplify_video/2089288304650788864/vid/avc1/1920x1080/K-YkyZRC1SHHKtgL.mp4","page":"https://x.com/Remotion/status/2089295042485600381","credit":"Remotion (@Remotion)","rights":"creator-post","note":"Skills 2.0 demo: skill-generated code edited visually in Remotion Studio: dragging timeline clips, easing curves, effects, a context menu with 'Copy context for agents'","bytes":178844,"addedAt":"2026-10-27"}},{"id":"remotion-dev/remotion-maps","slug":"remotion-maps","name":"Remotion Maps","skillName":"remotion-maps","type":"skill","status":"live","stream":"vendors","category":"explainers","tags":["maps","mapbox","maplibre","cesium","data-viz","remotion"],"summary":"Animate maps in Remotion: static maps, Mapbox, MapLibre, MapTiler and CesiumJS 3D flyovers.","description":"A technique library for map animation in Remotion with one folder per approach: static maps, Mapbox, MapLibre, MapTiler and CesiumJS. Each technique ships a TECHNIQUE.md, TSX components, sample GeoJSON and path data, and prep scripts for routes and 3D flyovers.","useWhen":["Route, travel or location animations","Data stories on a map","3D city or terrain flyovers"],"publisher":{"name":"Remotion","handle":"remotion-dev","url":"https://www.remotion.dev","avatar":"https://github.com/remotion-dev.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/remotion-dev/skills/tree/main/skills/remotion-maps","repo":"remotion-dev/skills","path":"skills/remotion-maps","license":"MIT"},"install":{"claude-code":"npx skills add remotion-dev/skills --skill remotion-maps -a claude-code","codex":"npx skills add remotion-dev/skills --skill remotion-maps -a codex","cursor":"npx skills add remotion-dev/skills --skill remotion-maps -a cursor","gemini-cli":"npx skills add remotion-dev/skills --skill remotion-maps -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js","Remotion 4","Mapbox, MapTiler or Cesium token for those techniques"],"cost":{"note":"Free — local render (Remotion company license for larger for-profit teams)"},"files":["SKILL.md","agents/openai.yaml","assets/remotion-icon.svg","techniques/cesium/assets/cesium-path.json","techniques/cesium/assets/CesiumFlythrough.tsx","techniques/cesium/assets/city-path.json","techniques/cesium/assets/example-Root.tsx","techniques/cesium/assets/flight-path.ts","techniques/cesium/assets/sample-river.geojson","techniques/cesium/references/3d-data-sources.md","techniques/cesium/references/3d-flyover-architecture.md","techniques/cesium/references/3d-troubleshooting.md","techniques/cesium/scripts/prep-cesium-path.mjs","techniques/cesium/TECHNIQUE.md","techniques/mapbox/references/render-stability.md","techniques/mapbox/TECHNIQUE.md","techniques/maplibre/references/render-stability.md","techniques/maplibre/TECHNIQUE.md","techniques/maptiler/assets/CountryLabel.tsx","techniques/maptiler/assets/example-Root.tsx","techniques/maptiler/assets/MapTilerVectorElement.ts","techniques/maptiler/assets/RiverReveal.tsx","techniques/maptiler/assets/sample-data/country-meta.json","techniques/maptiler/assets/sample-data/yarlung-flow.json","techniques/maptiler/assets/tokens.ts","techniques/maptiler/references/map-data-sources.md","techniques/maptiler/references/map-explainer-architecture.md","techniques/maptiler/references/map-geo-prep.md","techniques/maptiler/references/render-stability.md","techniques/maptiler/scripts/prep-geo.mjs","techniques/maptiler/TECHNIQUE.md","techniques/static-map/TECHNIQUE.md"],"stats":{"installs":189700,"stars":5750,"source":"skills.sh","asOf":"2026-10-26"},"version":"4.0.539","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"film","hue":212},"legal":"remotion-dev/skills has no LICENSE file; the same skills ship MIT-licensed in Remotion's plugin repos (remotion-dev/codex-plugin, cursor-plugin). Remotion itself is free for individuals, non-profits and companies of up to 3 people; larger for-profit companies need a Remotion company license.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e38ee7b9062f/remotion-maps.mp4","w":720,"h":404,"duration":8.5,"blur":"data:image/webp;base64,UklGRmYAAABXRUJQVlA4IFoAAADQAwCdASogABIAPtFYpEyoJSOiKA1RABoJZwDGQBcqr54tsgr7ywAA/u2j37b4kj0D2llx1hWYjy0mYuTJu+fK//zALqUO8ME9jR6R8lfjkj6fkgiYZuCoAAA=","source":"https://video.twimg.com/amplify_video/2015057765647941632/vid/avc1/1920x1080/8a1FjBIqm4w6gb5W.mp4","page":"https://x.com/JNYBGR/status/2015059120080977936","credit":"Jonny Burger (@JNYBGR), Remotion founder","rights":"creator-post","note":"Maps skill launch demo: the prompt, then the map zooms out of Los Angeles and a route animates to New York with the camera following it","bytes":181492,"addedAt":"2026-10-27"}},{"id":"remotion-dev/remotion-markup","slug":"remotion-markup","name":"Remotion Markup","skillName":"remotion-markup","type":"skill","status":"live","stream":"vendors","category":"animation","tags":["react","transitions","effects","audio-visualization","remotion","brand-motion"],"summary":"Write Remotion markup that animates well: timing, transitions, motion blur, effects, audio, fonts and 3D.","description":"The deep reference for writing Remotion compositions: assets and media components, trimming and delays, multi-scene and connected compositions, voiceover, embedded video and audio, transitions, motion blur, light leaks and pixel effects, color correction, 3D, sound effects, audio visualization, fonts, Lottie and GIFs. Each topic is its own reference file that the agent loads on demand.","useWhen":["Writing or animating Remotion components","Adding transitions, effects or motion blur","Voiceover, sound effects or audio-reactive visuals"],"publisher":{"name":"Remotion","handle":"remotion-dev","url":"https://www.remotion.dev","avatar":"https://github.com/remotion-dev.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/remotion-dev/skills/tree/main/skills/remotion-markup","repo":"remotion-dev/skills","path":"skills/remotion-markup","license":"MIT"},"install":{"claude-code":"npx skills add remotion-dev/skills --skill remotion-markup -a claude-code","codex":"npx skills add remotion-dev/skills --skill remotion-markup -a codex","cursor":"npx skills add remotion-dev/skills --skill remotion-markup -a cursor","gemini-cli":"npx skills add remotion-dev/skills --skill remotion-markup -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js","Remotion 4"],"cost":{"note":"Free — local render (Remotion company license for larger for-profit teams)"},"files":["SKILL.md","3d.md","agents/openai.yaml","arabic-text.md","assets/remotion-icon.svg","audio-visualization.md","audio.md","calculate-metadata.md","color-correction.md","compositions.md","connected-compositions.md","cropping.md","effects.md","embedding-videos.md","ffmpeg.md","gifs.md","google-fonts.md","html-in-canvas.md","images.md","light-leaks.md","local-fonts.md","lottie.md","measuring-dom-nodes.md","measuring-text.md","motion-blur.md","multi-scene-video.md","parameters.md","remotion-maps/agents/openai.yaml","remotion-maps/assets/remotion-icon.svg","remotion-maps/REFERENCE.md","remotion-maps/techniques/cesium/assets/cesium-path.json","remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx","remotion-maps/techniques/cesium/assets/city-path.json","remotion-maps/techniques/cesium/assets/example-Root.tsx","remotion-maps/techniques/cesium/assets/flight-path.ts","remotion-maps/techniques/cesium/assets/sample-river.geojson","remotion-maps/techniques/cesium/references/3d-data-sources.md","remotion-maps/techniques/cesium/references/3d-flyover-architecture.md","remotion-maps/techniques/cesium/references/3d-troubleshooting.md","remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs","remotion-maps/techniques/cesium/TECHNIQUE.md","remotion-maps/techniques/mapbox/references/render-stability.md","remotion-maps/techniques/mapbox/TECHNIQUE.md","remotion-maps/techniques/maplibre/references/render-stability.md","remotion-maps/techniques/maplibre/TECHNIQUE.md","remotion-maps/techniques/maptiler/assets/CountryLabel.tsx","remotion-maps/techniques/maptiler/assets/example-Root.tsx","remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts","remotion-maps/techniques/maptiler/assets/RiverReveal.tsx","remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json","remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json","remotion-maps/techniques/maptiler/assets/tokens.ts","remotion-maps/techniques/maptiler/references/map-data-sources.md","remotion-maps/techniques/maptiler/references/map-explainer-architecture.md","remotion-maps/techniques/maptiler/references/map-geo-prep.md","remotion-maps/techniques/maptiler/references/render-stability.md","remotion-maps/techniques/maptiler/scripts/prep-geo.mjs","remotion-maps/techniques/maptiler/TECHNIQUE.md","remotion-maps/techniques/static-map/TECHNIQUE.md","sequencing.md","sfx.md","silence-detection.md","text-highlights.md","timing-props.md","timing.md","transitions.md","video-editing.md","voiceover.md"],"stats":{"installs":212200,"stars":5750,"source":"skills.sh","asOf":"2026-10-26"},"version":"4.0.539","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":212},"legal":"remotion-dev/skills has no LICENSE file; the same skills ship MIT-licensed in Remotion's plugin repos (remotion-dev/codex-plugin, cursor-plugin). Remotion itself is free for individuals, non-profits and companies of up to 3 people; larger for-profit companies need a Remotion company license.","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/755aef7156e9/remotion-markup.mp4","w":720,"h":404,"duration":10,"blur":"data:image/webp;base64,UklGRrIAAABXRUJQVlA4IKYAAABwBACdASogABIAPtFYo0uoJSMhsAgBABoJQBerBF36PWj9wUgBPXWG2NEgAAD+9hHO/Cwo7oWC6qWeJIAHW451OPBVs+6v7IgVjUQawXwqq9bQg/psFVnL0hT5mOkVca5O4dPXNyi6X+C+/CZB7XreMNkqQstr4U2yrfRfMR3cZdc8510i8uPtcd/E8JVu8nXgekILV1xzLncJ3YulG+ZCHcDQAAAA","source":"https://video.twimg.com/ext_tw_video/2073079514788200449/pu/vid/avc1/1280x720/2heP7vkbuoXnls_7.mp4?tag=12","page":"https://x.com/Remotion/status/2073079536414077277","credit":"Remotion (@Remotion)","rights":"creator-post","note":"HTML-in-canvas transitions written with the skills (zoomBlur, filmBurn, linearBlur, bookFlip, ripple, crosswarp...) playing between two shots","bytes":199943,"addedAt":"2026-10-27"}},{"id":"remotion-dev/remotion-multimedia","slug":"remotion-multimedia","name":"Remotion Multimedia","skillName":"remotion-multimedia","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["mediabunny","metadata","remotion"],"summary":"Read media metadata in Remotion with Mediabunny: audio duration, video dimensions and length.","description":"A small reference for using Mediabunny inside Remotion projects to read audio duration, video dimensions and video duration. Those values are typically used to size a composition from its source media.","useWhen":["Sizing a composition from source media","Reading video length or dimensions"],"publisher":{"name":"Remotion","handle":"remotion-dev","url":"https://www.remotion.dev","avatar":"https://github.com/remotion-dev.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/remotion-dev/skills/tree/main/skills/remotion-multimedia","repo":"remotion-dev/skills","path":"skills/remotion-multimedia","license":"MIT"},"install":{"claude-code":"npx skills add remotion-dev/skills --skill remotion-multimedia -a claude-code","codex":"npx skills add remotion-dev/skills --skill remotion-multimedia -a codex","cursor":"npx skills add remotion-dev/skills --skill remotion-multimedia -a cursor","gemini-cli":"npx skills add remotion-dev/skills --skill remotion-multimedia -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js","Remotion 4"],"cost":{"note":"Free — local render (Remotion company license for larger for-profit teams)"},"files":["SKILL.md","agents/openai.yaml","assets/remotion-icon.svg","get-audio-duration.md","get-video-dimensions.md","get-video-duration.md"],"stats":{"installs":191400,"stars":5750,"source":"skills.sh","asOf":"2026-10-26"},"version":"4.0.539","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":212},"legal":"remotion-dev/skills has no LICENSE file; the same skills ship MIT-licensed in Remotion's plugin repos (remotion-dev/codex-plugin, cursor-plugin). Remotion itself is free for individuals, non-profits and companies of up to 3 people; larger for-profit companies need a Remotion company license.","adds":"tool","media":{"type":"none","reason":"No media shows this skill's job (reading duration and dimensions with Mediabunny): the skill folder has only code notes; Remotion's own metadata demo uses the older Media Parser API (parseMedia), which would misrepresent the skill; mediabunny.dev has no demo media","searched":["github.com/remotion-dev/skills skills/remotion-multimedia (SKILL.md + 3 code notes)","remotion.dev docs/mediabunny/* and docs/media-parser (sample inputs, a static PNG, a YouTube talk)","X: @Remotion and @JNYBGR posts on Mediabunny/Media Parser (Media Parser metadata demo, May 2025)","mediabunny.dev homepage (logos and sponsors only)"],"addedAt":"2026-10-27"}},{"id":"remotion-dev/remotion-render","slug":"remotion-render","name":"Remotion Render","skillName":"remotion-render","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["render","export","transparent-video","remotion"],"summary":"Render a Remotion composition to a video file or a still, including transparent video.","description":"Explains the rendering strategy for exporting a Remotion composition to a video file or still with the Remotion CLI, and how to produce transparent videos. Remotion's skills render once the Studio preview is approved.","useWhen":["Exporting the final video or a still frame","Rendering a transparent overlay video"],"publisher":{"name":"Remotion","handle":"remotion-dev","url":"https://www.remotion.dev","avatar":"https://github.com/remotion-dev.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/remotion-dev/skills/tree/main/skills/remotion-render","repo":"remotion-dev/skills","path":"skills/remotion-render","license":"MIT"},"install":{"claude-code":"npx skills add remotion-dev/skills --skill remotion-render -a claude-code","codex":"npx skills add remotion-dev/skills --skill remotion-render -a codex","cursor":"npx skills add remotion-dev/skills --skill remotion-render -a cursor","gemini-cli":"npx skills add remotion-dev/skills --skill remotion-render -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js","Remotion 4"],"cost":{"note":"Free — local render (Remotion company license for larger for-profit teams)"},"files":["SKILL.md","agents/openai.yaml","assets/remotion-icon.svg","transparent-videos.md"],"stats":{"installs":219800,"stars":5750,"source":"skills.sh","asOf":"2026-10-26"},"version":"4.0.539","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":212},"legal":"remotion-dev/skills has no LICENSE file; the same skills ship MIT-licensed in Remotion's plugin repos (remotion-dev/codex-plugin, cursor-plugin). Remotion itself is free for individuals, non-profits and companies of up to 3 people; larger for-profit companies need a Remotion company license.","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/8243543eab9f/remotion-render.mp4","w":720,"h":404,"duration":6.3,"blur":"data:image/webp;base64,UklGRsYAAABXRUJQVlA4ILoAAADwBACdASogABIAPtFYpE0oJSOiMBgIAQAaCWUAxNmns6DtZyUVwGUb4UVHoQTxjlAA/vaOZk9bzol29KwDp4reCGHJ9Bz6gPm3UOdTyDAsWaCxE3y1nrq72gllhSFhlxIb7ogm296vYJhtb4FTdO9BUOtOLhjaAT46IcthPAuqxZrf2xYkPfnbA1T2EdyYq7taoti9fxjgu73KNzhLzX+r7rvq7AP/V+GCE26+/XKkP1VT1+Kklhr8AAA=","source":"https://video.twimg.com/amplify_video/2017284726927581184/vid/avc1/1316x738/g8mI2AY3wDJiNjFI.mp4","page":"https://x.com/Remotion/status/2017286966593642570","credit":"Remotion (@Remotion)","rights":"creator-post","note":"'New skill: Transparent videos': a subscribe call-to-action rendered with alpha by one prompt, laid over a talking head in an editor timeline","bytes":49457,"addedAt":"2026-10-27"}},{"id":"remotion-dev/remotion-saas","slug":"remotion-saas","name":"Remotion SaaS","skillName":"remotion-saas","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["player","saas","vue","svelte","remotion"],"summary":"Build a video app or SaaS on Remotion: embed the Player, choose a framework, decide how to render.","description":"Guides building an application on top of Remotion: choosing a template or framework, embedding the `<Player>` for in-app previews and choosing a rendering approach. It includes notes for Vue, Angular and Svelte hosts.","useWhen":["Building a video-generation product or automation","Embedding a Remotion Player in an app"],"publisher":{"name":"Remotion","handle":"remotion-dev","url":"https://www.remotion.dev","avatar":"https://github.com/remotion-dev.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/remotion-dev/skills/tree/main/skills/remotion-saas","repo":"remotion-dev/skills","path":"skills/remotion-saas","license":"MIT"},"install":{"claude-code":"npx skills add remotion-dev/skills --skill remotion-saas -a claude-code","codex":"npx skills add remotion-dev/skills --skill remotion-saas -a codex","cursor":"npx skills add remotion-dev/skills --skill remotion-saas -a cursor","gemini-cli":"npx skills add remotion-dev/skills --skill remotion-saas -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js","Remotion 4"],"cost":{"note":"Free — local render (Remotion company license for larger for-profit teams)"},"files":["SKILL.md","agents/openai.yaml","assets/remotion-icon.svg","framework.md","player.md","rendering.md"],"stats":{"installs":205200,"stars":5750,"source":"skills.sh","asOf":"2026-10-26"},"version":"4.0.539","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"cards","hue":212},"legal":"remotion-dev/skills has no LICENSE file; the same skills ship MIT-licensed in Remotion's plugin repos (remotion-dev/codex-plugin, cursor-plugin). Remotion itself is free for individuals, non-profits and companies of up to 3 people; larger for-profit companies need a Remotion company license.","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a34d2bd54432/remotion-saas.mp4","w":720,"h":404,"duration":12,"blur":"data:image/webp;base64,UklGRoQAAABXRUJQVlA4IHgAAACQBACdASogABIAPsVSoEunpKMht/VYAPAYiWcAALKn5F1DoUJyvUG2DZ27yWAA/vrv4fTqW+u7B5n0VtLuYjQ7UQT1Hdv90PR97N0QrmkfMqDe/+5DUmwoTBrP39OYdpSviCPqejSOW3E8Hd1x+BmuyZj2vOatgAA=","source":"https://video.twimg.com/amplify_video/2029623074648109056/vid/avc1/1920x1080/OsrfsRuIRxtj7Fos.mp4","page":"https://x.com/Remotion/status/2029624824578949479","credit":"Remotion (@Remotion)","rights":"creator-post","note":"From 'Let's ship a video generator app': the deployed Next.js template app, typing a prop updates the embedded Player live, then 'Render video' runs with progress (71-83 s)","bytes":61095,"addedAt":"2026-10-27"}},{"id":"remotion-dev/remotion-studio","slug":"remotion-studio","name":"Remotion Studio","skillName":"remotion-studio","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["preview","studio","remotion"],"summary":"Launch Remotion Studio to preview and scrub a composition in the browser before rendering.","description":"Starts Remotion Studio (`npx remotion studio`) so the person can preview and scrub the video in the browser, with the flags that matter for agents. Remotion's skills open this preview before building out a video and before rendering it.","useWhen":["Previewing a Remotion video","Letting someone review before the render"],"publisher":{"name":"Remotion","handle":"remotion-dev","url":"https://www.remotion.dev","avatar":"https://github.com/remotion-dev.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/remotion-dev/skills/tree/main/skills/remotion-studio","repo":"remotion-dev/skills","path":"skills/remotion-studio","license":"MIT"},"install":{"claude-code":"npx skills add remotion-dev/skills --skill remotion-studio -a claude-code","codex":"npx skills add remotion-dev/skills --skill remotion-studio -a codex","cursor":"npx skills add remotion-dev/skills --skill remotion-studio -a cursor","gemini-cli":"npx skills add remotion-dev/skills --skill remotion-studio -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js","Remotion 4"],"cost":{"note":"Free — local render (Remotion company license for larger for-profit teams)"},"files":["SKILL.md","agents/openai.yaml","assets/remotion-icon.svg"],"stats":{"installs":181700,"stars":5750,"source":"skills.sh","asOf":"2026-10-26"},"version":"4.0.539","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":212},"legal":"remotion-dev/skills has no LICENSE file; the same skills ship MIT-licensed in Remotion's plugin repos (remotion-dev/codex-plugin, cursor-plugin). Remotion itself is free for individuals, non-profits and companies of up to 3 people; larger for-profit companies need a Remotion company license.","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/97d089575c84/remotion-studio.mp4","w":720,"h":424,"duration":4.5,"blur":"data:image/webp;base64,UklGRqgAAABXRUJQVlA4IJwAAADQBACdASogABIAPs1UokunpKMhsBgMAPAZiWMAznQ0h2wuWTb49L41zRGPwE3nhAD++W5TeeQqbo/Yu/A2bJh26ilanhUeKjwQFSR9J6E2F7AdT3ULyK44V+zRIgO7hOD29IB3UnMlwanE4+yopDw8dqdOkZlgqTapb2AYbCFpqaQzJPJBl4qKJyJcDtBUvVtpGJ7BetI9SCYQAAA=","source":"https://video.twimg.com/amplify_video/2084226958062182400/vid/avc1/1350x796/18gFK__s2xOlp4s0.mp4","page":"https://x.com/Remotion/status/2084227344282055157","credit":"Remotion (@Remotion)","rights":"creator-post","note":"Remotion Studio previewing a composition with its timeline and props panel, resizing to a narrow window beside a coding agent","bytes":51834,"addedAt":"2026-10-27"}},{"id":"remotion-dev/remotion-upgrade","slug":"remotion-upgrade","name":"Remotion Upgrade","skillName":"remotion-upgrade","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["upgrade","dependencies","remotion"],"summary":"Upgrade Remotion and every @remotion/* package to one matching version, skills included.","description":"Upgrades a project with `npx remotion upgrade` when the CLI is installed, which also refreshes project-local Remotion skills. Otherwise it aligns `remotion` and every `@remotion/*` package to the same version by hand and matches Studio's auxiliary dependencies.","useWhen":["Moving a project to the latest Remotion","Version mismatch errors between Remotion packages"],"publisher":{"name":"Remotion","handle":"remotion-dev","url":"https://www.remotion.dev","avatar":"https://github.com/remotion-dev.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/remotion-dev/skills/tree/main/skills/remotion-upgrade","repo":"remotion-dev/skills","path":"skills/remotion-upgrade","license":"MIT"},"install":{"claude-code":"npx skills add remotion-dev/skills --skill remotion-upgrade -a claude-code","codex":"npx skills add remotion-dev/skills --skill remotion-upgrade -a codex","cursor":"npx skills add remotion-dev/skills --skill remotion-upgrade -a cursor","gemini-cli":"npx skills add remotion-dev/skills --skill remotion-upgrade -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js","Remotion 4"],"cost":{"note":"Free — local render (Remotion company license for larger for-profit teams)"},"files":["SKILL.md","agents/openai.yaml","assets/remotion-icon.svg"],"stats":{"installs":196300,"stars":5750,"source":"skills.sh","asOf":"2026-10-26"},"version":"4.0.539","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":212},"legal":"remotion-dev/skills has no LICENSE file; the same skills ship MIT-licensed in Remotion's plugin repos (remotion-dev/codex-plugin, cursor-plugin). Remotion itself is free for individuals, non-profits and companies of up to 3 people; larger for-profit companies need a Remotion company license.","adds":"tool","media":{"type":"none","reason":"The only official media is a static code card with 'npx remotion upgrade' and 'npx remotion skills update' (effectively an install screenshot); no recording of an upgrade run exists","searched":["github.com/remotion-dev/skills skills/remotion-upgrade (SKILL.md only)","remotion.dev docs/upgrading and docs/cli/upgrade (no media)","X: @Remotion Jan 27 2026 'skills better integrated' post (static command image), @Remotion/@JNYBGR searches for upgrade"],"addedAt":"2026-10-27"}},{"id":"higgsfield-ai/higgsfield-brandkit","slug":"higgsfield-brandkit","name":"Higgsfield Brandkit","skillName":"higgsfield-brandkit","type":"skill","status":"live","stream":"vendors","category":"logos","tags":["branding","logo","packaging","brandbook","image","brand-motion"],"summary":"Build a complete visual identity: palette, SVG logo marks, type, mockups, packaging and an editable brandbook.","description":"Creates or extends a brand system through the Higgsfield CLI plus bundled deterministic local tooling: palettes, editable SVG logo marks, typography, mockups, social graphics, packaging, signage, merchandise, posters, decks and PPTX/PDF brandbooks. It preserves supplied official assets, records approvals locally and regenerates only the outputs a change affects.","useWhen":["Create a brand kit or visual identity","Design a logo and a brandbook","Apply an existing logo to packaging, signage or merch"],"notFor":["Unbranded image generation (use Higgsfield Generate)","Product catalog photography (use Higgsfield Product Photoshoot)","Native Figma, Canva, PSD or AI files"],"publisher":{"name":"Higgsfield","handle":"higgsfield-ai","url":"https://higgsfield.ai","avatar":"https://github.com/higgsfield-ai.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/higgsfield-ai/skills/tree/main/higgsfield-brandkit","repo":"higgsfield-ai/skills","path":"higgsfield-brandkit","license":"MIT"},"install":{"claude-code":"/plugin marketplace add higgsfield-ai/skills\n/plugin install higgsfield@higgsfield","codex":"npx skills add higgsfield-ai/skills --skill higgsfield-brandkit -a codex","cursor":"npx skills add higgsfield-ai/skills --skill higgsfield-brandkit -a cursor","gemini-cli":"npx skills add higgsfield-ai/skills --skill higgsfield-brandkit -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["recraft_v4_1","seedream_5_pro","gpt_image_2"],"requires":["Higgsfield account","Higgsfield CLI (`higgsfield auth login`)","Python 3"],"cost":{"note":"Billed in Higgsfield credits"},"files":["SKILL.md","agents/openai.yaml","references/asset-analysis.md","references/brand-lock.md","references/brandbook.md","references/brandkit-design-brain.md","references/concept-boards.md","references/handoff.md","references/inline-widgets.md","references/intake.md","references/logo-export-payloads.md","references/logo-prompt-enhancer.md","references/logo.md","references/merchandise.md","references/mockups.md","references/packaging.md","references/palette.md","references/posters-banners.md","references/prerequisites.md","references/presentation-deck.md","references/preview-payloads.md","references/qa-and-iteration.md","references/signage.md","references/social-templates.md","references/state-payloads.md","references/typography.md","scripts/brandkit.py","scripts/build_brandbook.py","scripts/render_brandbook_pdf.py"],"stats":{"installs":102700,"stars":1682,"source":"skills.sh","asOf":"2026-10-26"},"version":"0.13.0","updatedAt":"2026-09-26","addedAt":"2026-10-26","preview":{"kind":"logo3d","hue":72},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/9321bfe3667f/higgsfield-brandkit.mp4","w":720,"h":404,"duration":9,"blur":"data:image/webp;base64,UklGRpAAAABXRUJQVlA4IIQAAAAQBQCdASogABIAPtFQpEuoJCOhsBgMAQAaCWwAnTLjfh2gMwAyQAEg1/E1nUTZmt8AAP7uquW7pQg+BnMHP/6UmD/UUd/8iHn2xAPs98d8CnnxDEmCtKynoVIiDiV5Fbh7M8Umbnkvidc4aRMFk3zO3GT0RS7MIy6eYIuzXNNTxss5AAA=","source":"https://static.higgsfield.ai/mcp-landing/skills/brandkit.mp4","page":"https://higgsfield.ai/skills","credit":"Higgsfield","rights":"publisher-site","note":"Brandkit skill showcase: generated brandbook pages — cover, palette, logo, typography, patterns, mock-ups; 1-10 s","bytes":253580,"addedAt":"2026-10-27"}},{"id":"higgsfield-ai/higgsfield-generate","slug":"higgsfield-generate","name":"Higgsfield Generate","skillName":"higgsfield-generate","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["image","ads","ugc","3d","audio","virality"],"summary":"Generate images, video, 3D and audio across 30+ models, plus ad videos and virality scoring, from one CLI.","description":"Higgsfield's main skill drives the `higgsfield` CLI across 30+ models with set defaults — GPT Image 2.5 for images and design, Seedance 2.5 for video, Nano Banana 2 for cartoon characters, Seed Audio for audio — covering image-to-video, edits, reframes, 3D/GLB, sound effects and music. It also runs Marketing Studio for branded ad and UGC videos (including product-URL-to-ad) and the Virality Predictor for scoring finished videos, and tells the agent to list live models rather than guess.","useWhen":["Generate an image or a video, or animate a photo","Make an ad, UGC, unboxing or presenter video","Create a 3D model, sound effect or music","Score a finished video's virality"],"notFor":["Training a face model (use Higgsfield Soul ID)","Brand systems, thumbnails or explainers (use the dedicated Higgsfield skills)","Text-to-speech"],"publisher":{"name":"Higgsfield","handle":"higgsfield-ai","url":"https://higgsfield.ai","avatar":"https://github.com/higgsfield-ai.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/higgsfield-ai/skills/tree/main/higgsfield-generate","repo":"higgsfield-ai/skills","path":"higgsfield-generate","license":"MIT"},"install":{"claude-code":"/plugin marketplace add higgsfield-ai/skills\n/plugin install higgsfield@higgsfield","codex":"npx skills add higgsfield-ai/skills --skill higgsfield-generate -a codex","cursor":"npx skills add higgsfield-ai/skills --skill higgsfield-generate -a cursor","gemini-cli":"npx skills add higgsfield-ai/skills --skill higgsfield-generate -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["gpt_image_2_5","seedance_2_5","nano_banana_2","nano_banana_pro","kling_v3","seedream_5_pro","soul","grok_imagine_1_5","omni_flash_1_1","seed_audio"],"requires":["Higgsfield account","Higgsfield CLI (`higgsfield auth login`)"],"cost":{"note":"Billed in Higgsfield credits"},"files":["SKILL.md","references/marketing-ad-references.md","references/marketing-avatars.md","references/marketing-brand-kits.md","references/marketing-dtc-ads.md","references/marketing-modes.md","references/marketing-products.md","references/marketing-setup-items.md","references/media-inputs.md","references/model-catalog.md","references/prompt-engineering.md","references/troubleshooting.md","references/workflows.md"],"stats":{"installs":219000,"stars":1682,"source":"skills.sh","asOf":"2026-10-26"},"version":"0.13.0","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"film","hue":72},"featured":true,"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/8de8df5bea9d/higgsfield-generate.mp4","w":404,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRu4BAABXRUJQVlA4IOIBAAAQCwCdASogADoAPtFSpEwoJKOiLBqsyQAaCWQAs7PDuJvEpyp2Zy8mDemDaJVsA2mq4JKC0Mnr34OrR3ObO6P4hNXSqOaz8pmvz5pdexau44AWkZ/UeFXvOdXK8dAJhKCIAP70JIwurIeT07JxnHbjvthVnGayF2sxlapn19tb1+UzctuD9CobD6LeRM4qDuZTE1gTtZGmzgMNfdJoQYMVDOirqlA79ytUI9bwRKFmGRidrwawBtIr6koBiRjXdRWVT7UPnr4gU0FBv3wk3gBaZPW+xq2C7Aqm3aopeK4Xi8P/hSw/PPtODAHnhZJV1sZ/UDoPkIQhnhmVWLo7G6GdNDs/Ge/oSQuhMSe6Ii2TWjCMBJuwIqjZ1A22Fygk6yib1xojvFEO62ggOwTmq5Aa1Hv9j2sIUsx++5ltT/8PTCiXeJcP4pBQulCTph8VApI9dAd9lOpgqXzVq2Wzs30NcRfJ8n92OblRzbqm/mXJKiRaqg828+KTzZGR4uh2Fy7kMBdN+Q/INXnfo8OdkJM5YdkDCrpNbPnXSJBkIsZsJ603lyJib+sre+lHw3uBjselsgzwSuNwRDwmrq5TWByNayBsBmQl4fD7SpbZ2ldutHjQv7D/qJdYAzrrkcjrlUNAAA==","source":"https://static.higgsfield.ai/mcp/v2/product_showcase_9x16-1mb.mp4","page":"https://higgsfield.ai/skills","credit":"Higgsfield","rights":"publisher-site","note":"Hero demo on Higgsfield's skills page: 9:16 UGC product video (Marketing Studio, Seedance) for a soda bottle; 2-10 s","bytes":309027,"addedAt":"2026-10-27"}},{"id":"higgsfield-ai/higgsfield-marketplace-cards","slug":"higgsfield-marketplace-cards","name":"Higgsfield Marketplace Cards","skillName":"higgsfield-marketplace-cards","type":"skill","status":"live","stream":"vendors","category":"product","tags":["ecommerce","listing","a-plus-content"],"summary":"Produce marketplace listing images: a compliant main image, secondary shots and A+ content modules.","description":"Routes listing requests to the Higgsfield CLI to generate marketplace product cards — a compliant main image, secondary product images and A+ style content modules — in scopes from a single main image to a full set. Compliance references and prompt templates live on Higgsfield's backend; the skill collects intent and delivers the set.","useWhen":["Marketplace listing images or product detail cards","Product infographics and A+ content","A full sales-ready image set for a listing"],"notFor":["Brand product photography outside a listing (use Higgsfield Product Photoshoot)","Video or UGC ads"],"publisher":{"name":"Higgsfield","handle":"higgsfield-ai","url":"https://higgsfield.ai","avatar":"https://github.com/higgsfield-ai.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/higgsfield-ai/skills/tree/main/higgsfield-marketplace-cards","repo":"higgsfield-ai/skills","path":"higgsfield-marketplace-cards","license":"MIT"},"install":{"claude-code":"/plugin marketplace add higgsfield-ai/skills\n/plugin install higgsfield@higgsfield","codex":"npx skills add higgsfield-ai/skills --skill higgsfield-marketplace-cards -a codex","cursor":"npx skills add higgsfield-ai/skills --skill higgsfield-marketplace-cards -a cursor","gemini-cli":"npx skills add higgsfield-ai/skills --skill higgsfield-marketplace-cards -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Higgsfield account","Higgsfield CLI (`higgsfield auth login`)"],"cost":{"note":"Billed in Higgsfield credits"},"files":["SKILL.md"],"stats":{"installs":194300,"stars":1682,"source":"skills.sh","asOf":"2026-10-26"},"version":"0.13.0","updatedAt":"2026-09-26","addedAt":"2026-10-26","preview":{"kind":"cards","hue":72},"adds":"visual","media":{"type":"none","reason":"Higgsfield publishes no marketplace-card example (main image, secondary images or A+ modules); its product-photography and Marketing Studio examples are used for sibling skills, and the only creator demo found shows a real third-party brand under a webcam overlay","searched":["github.com/higgsfield-ai/skills (repo tree, README, higgsfield-marketplace-cards/SKILL.md)","higgsfield.ai/skills + its JS showcase data","higgsfield.ai/ai-product-photography","higgsfield.ai/blog/ai-ecommerce-ads-2026","higgsfield.ai/blog/automate-ecommerce-catalog-video-ai","higgsfield.ai/mcp and bundles","higgsfield sitemaps (marketing, apps, blog)","X search (higgsfield marketplace / amazon listing)"],"addedAt":"2026-10-27"}},{"id":"higgsfield-ai/higgsfield-product-photoshoot","slug":"higgsfield-product-photoshoot","name":"Higgsfield Product Photoshoot","skillName":"higgsfield-product-photoshoot","type":"skill","status":"live","stream":"vendors","category":"product","tags":["ads","lifestyle","virtual-try-on","ecommerce"],"summary":"Shoot brand-quality product images in 10 modes: studio, lifestyle, hero banners, ad packs, try-on and more.","description":"Generates product and brand visuals through Higgsfield's product-photoshoot mode on GPT Image 2, where Higgsfield's backend assembles the final prompt. Ten modes cover studio shots, lifestyle scenes, close-ups with hands, Pinterest pins, hero banners, social carousels, ad creative packs, virtual try-on, conceptual CGI and restyles, with a short interview before each kind of request.","useWhen":["Product photos, studio or lifestyle shots","Hero banners, carousels or Meta ad creatives","Virtual try-on or a model holding the product"],"notFor":["Images without a product (use Higgsfield Generate)","Marketplace listing cards (use Higgsfield Marketplace Cards)"],"publisher":{"name":"Higgsfield","handle":"higgsfield-ai","url":"https://higgsfield.ai","avatar":"https://github.com/higgsfield-ai.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/higgsfield-ai/skills/tree/main/higgsfield-product-photoshoot","repo":"higgsfield-ai/skills","path":"higgsfield-product-photoshoot","license":"MIT"},"install":{"claude-code":"/plugin marketplace add higgsfield-ai/skills\n/plugin install higgsfield@higgsfield","codex":"npx skills add higgsfield-ai/skills --skill higgsfield-product-photoshoot -a codex","cursor":"npx skills add higgsfield-ai/skills --skill higgsfield-product-photoshoot -a cursor","gemini-cli":"npx skills add higgsfield-ai/skills --skill higgsfield-product-photoshoot -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["gpt_image_2"],"requires":["Higgsfield account","Higgsfield CLI (`higgsfield auth login`)"],"cost":{"note":"Billed in Higgsfield credits"},"files":["SKILL.md"],"stats":{"installs":197500,"stars":1682,"source":"skills.sh","asOf":"2026-10-26"},"version":"0.13.0","updatedAt":"2026-09-26","addedAt":"2026-10-26","preview":{"kind":"grid","hue":72},"adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/147da40e90b7/higgsfield-product-photoshoot.webp","w":960,"h":543,"blur":"data:image/webp;base64,UklGRvIAAABXRUJQVlA4IOYAAADwBQCdASogABIAPtFUo0uoJKMhsAgBABoJQBdg71m6CdPD9pOPBurGxk2uTi9TCPHpMOhvXGNJYAD577+Oo50vhva8qSd7cb2CMxggp5WhW4lTyMLP+5a5fpuEQAz/+eGAW7yu80yi0nfTLdr/Ky6SqmJzVV1OXEQ9uzdgpQr1FFH0fn8JUOozgWIA6BXSPpP7221qcx3AZ3lEkfVh5nH/hpuoRSC+o3r+mqu16ArjffHjzhkmovn3+SzUs5By36NUykR7GODg8St7RT7ZaW6IiEnXGt5bIXayoHLJk4LPLfPQmYAAAA==","source":"https://a.storyblok.com/f/291136904311624/2688x1520/dc5228c758/ai-product-photo-lifestyle-after.jpg/m/1920x0/filters:quality(85):no_upscale()","page":"https://higgsfield.ai/ai-product-photography","credit":"Higgsfield","rights":"publisher-site","note":"'Turn One Photo into a Full Shoot' example on Higgsfield AI Product Photography: lifestyle scene generated from a plain serum-bottle photo (the 'after' image)","bytes":72434,"addedAt":"2026-10-27"}},{"id":"higgsfield-ai/higgsfield-soul-id","slug":"higgsfield-soul-id","name":"Higgsfield Soul ID","skillName":"higgsfield-soul-id","type":"skill","status":"live","stream":"vendors","category":"characters","tags":["identity","face","digital-twin","consistency"],"summary":"Train a reusable face model from your photos for identity-consistent images and video on Higgsfield.","description":"Trains a Soul Character — a personalized model of one person's face — from a set of photos and returns a `reference_id`. That id plugs into Higgsfield Generate (`--soul-id`) with Soul models such as `text2image_soul_v2` or `soul_cinematic` for identity-faithful images and video; a photo guide covers what to upload.","useWhen":["Train my face or make my digital twin","Keep one person consistent across generations","Set up an identity before making videos"],"notFor":["One-off face swaps (use Higgsfield Generate with an image)","Named or non-photo characters"],"publisher":{"name":"Higgsfield","handle":"higgsfield-ai","url":"https://higgsfield.ai","avatar":"https://github.com/higgsfield-ai.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/higgsfield-ai/skills/tree/main/higgsfield-soul-id","repo":"higgsfield-ai/skills","path":"higgsfield-soul-id","license":"MIT"},"install":{"claude-code":"/plugin marketplace add higgsfield-ai/skills\n/plugin install higgsfield@higgsfield","codex":"npx skills add higgsfield-ai/skills --skill higgsfield-soul-id -a codex","cursor":"npx skills add higgsfield-ai/skills --skill higgsfield-soul-id -a cursor","gemini-cli":"npx skills add higgsfield-ai/skills --skill higgsfield-soul-id -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["soul","text2image_soul_v2","soul_cinematic"],"requires":["Higgsfield account","Higgsfield CLI (`higgsfield auth login`)"],"cost":{"note":"Billed in Higgsfield credits"},"files":["SKILL.md","references/photo-guide.md","references/troubleshooting.md"],"stats":{"installs":196400,"stars":1682,"source":"skills.sh","asOf":"2026-10-26"},"version":"0.13.0","updatedAt":"2026-09-26","addedAt":"2026-10-26","preview":{"kind":"avatar","hue":72},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/a512533a981b/higgsfield-soul-id.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRt4AAABXRUJQVlA4WAoAAAAQAAAAHwAAEQAAQUxQSBUAAAABD3Dz/4iIQJBt05nf/wIR/c+YewwAVlA4IKIAAABQBACdASogABIAPtFWpEuoJKOhsAgBABoJZQAD5dIN8keA65pMiohVBJwAAP72jEQ+k5AL3FuvwjRu+M9HuUh7PMq1c6ZzxMyclMyhPH+5u75hrXzqgTVYUCwMmynby4JyPE1nFx34GLamH8C5HHo9DVObfSgCIXhQ4Gc8N1ubiGJyV5nKrlAPZtqoTz+BD9EAAgMQTGdfDiAuZ8bx1XIAAAA=","source":"https://static.higgsfield.ai/soul-v2/highlight-1-v4.webp","page":"https://higgsfield.ai/soul-intro","credit":"Higgsfield","rights":"publisher-site","note":"'Soul ID Personalization' highlight on Higgsfield's Soul page: one trained identity rendered in three different styles, poses and lighting","bytes":32670,"addedAt":"2026-10-27"}},{"id":"higgsfield-ai/higgsfield-video-explainer","slug":"higgsfield-video-explainer","name":"Higgsfield Video Explainer","skillName":"higgsfield-video-explainer","type":"skill","status":"live","stream":"vendors","category":"explainers","tags":["faceless","narration","animation","subtitles"],"summary":"Turn a topic or document into a narrated, stylized explainer assembled from 10-second voiced blocks.","description":"Builds a complete non-photoreal explainer or story video: research, one style key, narration split into 10-second blocks, one Seed Audio voice take and one Gemini Omni Flash clip per block, then server-side assembly into a finished MP4. It supports Higgsfield's live style presets or custom references, mascot and faceless modes, two aspect ratios and optional burned-in subtitles.","useWhen":["Explain this topic or document in a video","A faceless narrated video or animated story","Browsing explainer styles"],"notFor":["Photoreal films, ads, talking heads or podcasts","Editing a finished video"],"publisher":{"name":"Higgsfield","handle":"higgsfield-ai","url":"https://higgsfield.ai","avatar":"https://github.com/higgsfield-ai.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/higgsfield-ai/skills/tree/main/higgsfield-video-explainer","repo":"higgsfield-ai/skills","path":"higgsfield-video-explainer","license":"MIT"},"install":{"claude-code":"/plugin marketplace add higgsfield-ai/skills\n/plugin install higgsfield@higgsfield","codex":"npx skills add higgsfield-ai/skills --skill higgsfield-video-explainer -a codex","cursor":"npx skills add higgsfield-ai/skills --skill higgsfield-video-explainer -a cursor","gemini-cli":"npx skills add higgsfield-ai/skills --skill higgsfield-video-explainer -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["omni_flash_1_1","seed_audio","nano_banana_pro","nano_banana_2"],"requires":["Higgsfield account","Higgsfield CLI (`higgsfield auth login`)","FFmpeg"],"cost":{"note":"Billed in Higgsfield credits"},"files":["SKILL.md","references/prompts.md"],"stats":{"installs":124600,"stars":1682,"source":"skills.sh","asOf":"2026-10-26"},"version":"0.13.0","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"film","hue":72},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/34cfb11019a9/higgsfield-video-explainer.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRrgAAABXRUJQVlA4IKwAAADwBACdASogABIAPtFaqU2oJSQiKAqpABoJYwCzgA90EjuAmxKeE7Wwq+HSC4MHOAAA/VCSnRzoRLlBwY7XYz6oeT7RhXVvgmXNysTOjkW566ncPM0PpqLce7/lKbOwTeAWWd/s6+XGIc6k2MvMKf0pMsYIo1EKYTgfkTBLI+FW80800u+c6pQI7bB9EU6cXlBfrxKFpYp7Efdiv55Ck+zhWUAmFAnWUEJMAAAA","source":"https://static.higgsfield.ai/mcp/v2/explainer.mp4","page":"https://higgsfield.ai/skills","credit":"Higgsfield","rights":"publisher-site","note":"Higgsfield Faceless Video showcase: 2D animated captioned explainer on how early humans discovered fire; first 8 s","bytes":179354,"addedAt":"2026-10-27"}},{"id":"higgsfield-ai/higgsfield-youtube-thumbnail","slug":"higgsfield-youtube-thumbnail","name":"Higgsfield YouTube Thumbnail","skillName":"higgsfield-youtube-thumbnail","type":"skill","status":"live","stream":"vendors","category":"image","tags":["thumbnail","youtube","shorts-cover","identity"],"summary":"Design truthful, high-CTR YouTube thumbnails and vertical covers with up to three consistent faces.","description":"Plans a truthful information-gap concept, then renders YouTube thumbnails and Shorts or Instagram covers with Nano Banana Pro, keeping up to three referenced identities plus optional logos, and applies focused Seedream edits for tweaks. It includes thumbnail frameworks and a step for baking in text overlays.","useWhen":["A YouTube thumbnail for a video","A Shorts or Instagram video cover","Thumbnail variants after any video workflow"],"notFor":["Producing the video itself (use Higgsfield Generate)","Product catalog photos or marketplace cards"],"publisher":{"name":"Higgsfield","handle":"higgsfield-ai","url":"https://higgsfield.ai","avatar":"https://github.com/higgsfield-ai.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/higgsfield-ai/skills/tree/main/higgsfield-youtube-thumbnail","repo":"higgsfield-ai/skills","path":"higgsfield-youtube-thumbnail","license":"MIT"},"install":{"claude-code":"/plugin marketplace add higgsfield-ai/skills\n/plugin install higgsfield@higgsfield","codex":"npx skills add higgsfield-ai/skills --skill higgsfield-youtube-thumbnail -a codex","cursor":"npx skills add higgsfield-ai/skills --skill higgsfield-youtube-thumbnail -a cursor","gemini-cli":"npx skills add higgsfield-ai/skills --skill higgsfield-youtube-thumbnail -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["nano_banana_pro","seedream_5_pro"],"requires":["Higgsfield account","Higgsfield CLI (`higgsfield auth login`)"],"cost":{"note":"Billed in Higgsfield credits"},"files":["SKILL.md","agents/openai.yaml","references/text-overlay-bake.md","references/thumbnail-frameworks.md"],"stats":{"installs":102900,"stars":1682,"source":"skills.sh","asOf":"2026-10-26"},"version":"0.13.0","updatedAt":"2026-09-26","addedAt":"2026-10-26","preview":{"kind":"grid","hue":72},"adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/ca2be60825df/higgsfield-youtube-thumbnail.webp","w":960,"h":536,"blur":"data:image/webp;base64,UklGRhwBAABXRUJQVlA4IBABAAAQBgCdASogABIAPtFWo0uoJKMhsAgBABoJbACdMoPM5jA6RQYwZf2Ke1N2MHVI9+IkNbqcMgGHmwAA/rWk4FrBk3tA+rfAfpO2h9z0owghtoUvVzFynULcWP6Q+ztx8hjiuyUP+UxdarSsQ6BQ6bd2+a50ctu8ArqdXHK6LR9jDCj/XLJa91PhQ05TzNMZViRTerMKOfZXRP763sw+ldXQLtNvxZOdxLHb0sDrsn4oFCwhA9cYxcF1u+C/fn8arAK1nWYWdDgYsOoQg4nM0KnXXsdoB0TJVxfJnKaHYuoj6T+54fLGtMCZY+kloMRrdFo+SEn3O/9xj/n6uw6Q1lD2NRw6xYiUiVX8rfM0/qIQAA==","source":"https://static.higgsfield.ai/mcp/v2/youtube-cover.jpg","page":"https://higgsfield.ai/skills","credit":"Higgsfield","rights":"publisher-site","note":"YouTube Covers showcase on Higgsfield's skills page: thumbnail generated for 'trying an enormous iced coffee in Miami'","bytes":56066,"addedAt":"2026-10-27"}},{"id":"fal-ai-community/character-design","slug":"fal-character-design","name":"fal Character Design","skillName":"character-design","type":"skill","status":"live","stream":"vendors","category":"characters","tags":["reference-sheet","consistency","character-to-video","fal"],"summary":"Design original characters that stay consistent: reference and expression sheets, outfits, character-to-video.","description":"Builds consistent character media with genmedia: original characters, reference and expression sheets, outfit variations, identity-preserving edits and character-to-video. An anchor system keeps identity stable across shots, with model routing and a quality bar.","useWhen":["An original character or mascot","Reference, turnaround or expression sheets","Keeping one character consistent into video"],"publisher":{"name":"fal","handle":"fal-ai-community","url":"https://fal.ai","avatar":"https://github.com/fal-ai-community.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/fal-ai-community/skills/tree/main/skills/character-design","repo":"fal-ai-community/skills","path":"skills/character-design","license":"MIT"},"install":{"claude-code":"npx skills add fal-ai-community/skills --skill character-design -a claude-code","codex":"npx skills add fal-ai-community/skills --skill character-design -a codex","cursor":"npx skills add fal-ai-community/skills --skill character-design -a cursor","gemini-cli":"npx skills add fal-ai-community/skills --skill character-design -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["fal API key (FAL_KEY)","genmedia CLI"],"cost":{"note":"Billed by fal per endpoint call"},"files":["SKILL.md","references/anchor-system.md","references/examples.md","references/prompt-patterns.md"],"stats":{"installs":457,"stars":256,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-04","addedAt":"2026-10-26","preview":{"kind":"avatar","hue":285},"adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/7d6f54829e6f/fal-character-design.webp","w":640,"h":960,"blur":"data:image/webp;base64,UklGRvQBAABXRUJQVlA4IOgBAADQCgCdASogADAAPtFSpk0oJCOiMBVaqQAaCWQAnTKEEBHRf28BjPKXdLAjGhwi8xsszjApC7Ih4IhxQEG1IhPK5enP8Y1AALmaWlu2oKvczNJ3Pfe1QN91/FtFEVhvQgDYDYSguIanZDpdNn+h1+clUQRCaTnJ3m+YSa9n2RXEQpFyguwHEG62w+die7NellVjpzofEldeLsd6IM8jmYri9VMEnK/kFX8T5jzCeOvTFtn60T0Lw0HNwcEiDWGHjkIGZqXdjbRTGZmqfPR4Mi/o9VqpRfzeCNmrlil63E5D6B5AXL24Kf7FLI26UjHWa4i9KW/v7h3QXbWiniT/BuudUeylKRqXomDux15X0RE53FBbvEs1H3PbNimI62Xauv79HHTajb9jmxinrJAXSGbTPIzIGhkFAKXmdohffaGOLhSQbLQ/EdDlmq/Dk7jdpqTNC8SnhPhD/08u0gEA5CerfVogX54N8bxXbserMQCla5xYqAlqcJMEL2DtiFSb3mxBZqKG3j87q2X4xEm5bMnwglw9diSb5u+E/grgRxc2kCETK34c1KRmazLR9/sh6nKaX021pVrh45AAVM2zems8t0HUa0oBEZN5Z6HtGJhiynnDbg/YNBX8ryL9HGUQ8dU/2VcPMwAAAA==","source":"https://v3b.fal.media/files/b/0aab72d8/pXYGQsOcVcuPVrttX_y8B_Build%20a%20character%20reference%20sheet%20from%20the%20attached%20photo.png","page":"https://fal.ai/learn/tools/ai-character-consistency","credit":"fal","rights":"publisher-site","note":"8-panel character turnaround/reference sheet generated on fal (GPT Image 2.5 edit) in fal's character-consistency guide","bytes":50492,"addedAt":"2026-10-27"}},{"id":"fal-ai-community/cinematography","slug":"fal-cinematography","name":"fal Cinematography","skillName":"cinematography","type":"skill","status":"live","stream":"vendors","category":"camera","tags":["lighting","color","prompting","cinematic","fal"],"summary":"Direct cinematic stills and video: shot language, camera moves, lenses, lighting, grade and film texture.","description":"A production skill for cinematic image and video prompts run through genmedia: it collects the shot intent, builds the prompt in a set order, routes to a model and checks the result against a quality bar. References cover shot language, lighting, lens and color choices, with worked examples.","useWhen":["A cinematic still or shot","Camera movement, lens or lighting direction","A specific grade or film texture"],"publisher":{"name":"fal","handle":"fal-ai-community","url":"https://fal.ai","avatar":"https://github.com/fal-ai-community.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/fal-ai-community/skills/tree/main/skills/cinematography","repo":"fal-ai-community/skills","path":"skills/cinematography","license":"MIT"},"install":{"claude-code":"npx skills add fal-ai-community/skills --skill cinematography -a claude-code","codex":"npx skills add fal-ai-community/skills --skill cinematography -a codex","cursor":"npx skills add fal-ai-community/skills --skill cinematography -a cursor","gemini-cli":"npx skills add fal-ai-community/skills --skill cinematography -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["fal API key (FAL_KEY)","genmedia CLI"],"cost":{"note":"Billed by fal per endpoint call"},"files":["SKILL.md","references/examples.md","references/lighting-lens-color.md","references/shot-language.md"],"stats":{"installs":1100,"stars":256,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-04","addedAt":"2026-10-26","preview":{"kind":"film","hue":285},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/825db19fa1b1/fal-cinematography.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRqwAAABXRUJQVlA4IKAAAADQBQCdASogABIAPtFWpk2oJCOiMBgIAQAaCUAWI+aIH/ygtWFTHUtVarjQQzsKrlojL+p1EPQAAP7r6nv3pFzyLvq6XktzVNG9Miu3zcEdZpeCX5bm8Uwb+HSmXU9tRToVJoP8wGCUC0GFJwFZCwDtSuLx5/QjinZsHNOGAS71weOajrrj7oyuVRUBZtOdLegaGD9U44A3c+/1vcmAAAAA","source":"https://v3b.fal.media/files/b/0a9f7ecf/jQvhuOlh8iQrO38GC4K_0_video.mp4","page":"https://fal.ai/models/bytedance/seedance-2.0/text-to-video","credit":"fal","rights":"publisher-site","note":"Seedance 2.0 example on fal's model page: 100mm macro shot with a slow slide and rack focus from tiger fur to the eye; 2-10 s","bytes":181371,"addedAt":"2026-10-27"}},{"id":"fal-ai-community/commercial","slug":"fal-commercial","name":"fal Commercial","skillName":"commercial","type":"skill","status":"live","stream":"vendors","category":"product","tags":["ads","ecommerce","product-reveal","fal"],"summary":"Plan and run product photography, e-commerce batches, product reveal videos and lifestyle commercials.","description":"Commercial image and video production with genmedia: product photography, ads, e-commerce batches, product reveals, lifestyle commercials, background replacement and social formats. It collects the inputs it needs, builds prompts in a set order with brand-safe patterns, routes to a model and checks results against a quality bar.","useWhen":["Product photography or packshots","A product reveal or lifestyle commercial","Batches of e-commerce images"],"publisher":{"name":"fal","handle":"fal-ai-community","url":"https://fal.ai","avatar":"https://github.com/fal-ai-community.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/fal-ai-community/skills/tree/main/skills/commercial","repo":"fal-ai-community/skills","path":"skills/commercial","license":"MIT"},"install":{"claude-code":"npx skills add fal-ai-community/skills --skill commercial -a claude-code","codex":"npx skills add fal-ai-community/skills --skill commercial -a codex","cursor":"npx skills add fal-ai-community/skills --skill commercial -a cursor","gemini-cli":"npx skills add fal-ai-community/skills --skill commercial -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["fal API key (FAL_KEY)","genmedia CLI"],"cost":{"note":"Billed by fal per endpoint call"},"files":["SKILL.md","references/examples.md","references/prompt-patterns.md","references/workflows.md"],"stats":{"installs":398,"stars":256,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-04","addedAt":"2026-10-26","preview":{"kind":"grid","hue":285},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/1653b02a7961/fal-commercial.mp4","w":720,"h":404,"duration":10,"blur":"data:image/webp;base64,UklGRtIAAABXRUJQVlA4IMYAAACwBQCdASogABIAPtFcqU4oJSQiKAqpABoJZQCsO//S4okAHS+1w/r1Izi5ex0Vq1b8bhAVNYAA/t+wZbNb2DeF/g9uQIUhQ5ySQNHCIrS+KYZMEZDRa/xbzPJEn0qg8UsuJ5SXlzIKHAtDt8bWia06fk5l5IpHaAox4I2FOSr45S6rKxyW/EkdZ/HoHSffDW8YsbNX0NNxcs4hOw4FLfhcLxQJRsBLqQ8l/nxrJVS5y2wffNQwXkIMdE9YPmYB5YDL/7wAAAA=","source":"https://v3b.fal.media/files/b/0aa56420/ZOqcCaK0kVC348tFJnuX9_A%2030-second%20commercial%20for%20a%20pair%20of%20hand-welted%20leather%20boots.mp4","page":"https://fal.ai/learn/tools/seedance-2-5-workflows","credit":"fal","rights":"publisher-site","note":"'A 30-second ad as a timed shot list' from fal's Seedance 2.5 guide: leather-boots commercial moving through desert, jungle and snow; 10-20 s","bytes":256299,"addedAt":"2026-10-27"}},{"id":"fal-ai-community/fal-gamedev","slug":"fal-gamedev","name":"fal Game Dev","skillName":"fal-gamedev","type":"skill","status":"live","stream":"vendors","category":"art-direction","tags":["pixel-art","sprite-sheet","game-assets","animation","fal"],"summary":"Generate 2D pixel-art game assets: characters, sprite sheets, walk and attack cycles, parallax backgrounds.","description":"Recipes for 2D game art on fal: pixel-art characters from text or an existing image, multi-direction sprite sheets fired as parallel async jobs, walk, idle, attack and jump animations, background removal, and side-scroller, parallax and isometric backgrounds. Generation and edits run on Nano Banana Pro, with GPT Image 2 variants.","useWhen":["A pixel-art character or sprite sheet","Walk, idle or attack animation frames","Side-scroller or isometric game backgrounds"],"publisher":{"name":"fal","handle":"fal-ai-community","url":"https://fal.ai","avatar":"https://github.com/fal-ai-community.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/fal-ai-community/skills/tree/main/skills/fal-gamedev","repo":"fal-ai-community/skills","path":"skills/fal-gamedev","license":"MIT"},"install":{"claude-code":"npx skills add fal-ai-community/skills --skill fal-gamedev -a claude-code","codex":"npx skills add fal-ai-community/skills --skill fal-gamedev -a codex","cursor":"npx skills add fal-ai-community/skills --skill fal-gamedev -a cursor","gemini-cli":"npx skills add fal-ai-community/skills --skill fal-gamedev -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["nano_banana_pro","gpt_image_2"],"requires":["fal API key (FAL_KEY)","genmedia CLI"],"cost":{"note":"Billed by fal per endpoint call"},"files":["SKILL.md"],"stats":{"installs":380,"stars":256,"source":"skills.sh","asOf":"2026-10-26"},"version":"0.1.0","updatedAt":"2026-05-04","addedAt":"2026-10-26","preview":{"kind":"voxel","hue":285},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/6f281f0a7cdd/fal-gamedev.mp4","w":720,"h":720,"duration":3.2,"blur":"data:image/webp;base64,UklGRkoBAABXRUJQVlA4ID4BAACQBgCdASogACAAPrVInEunJCKht+gA4BaJbAC34IEaAGeyZrI3jt9YiThEds6iedDZ0g+cy2t4H3zeqfgAAP736daEQbYlmL4E+R+1YBGU4gT5ldkUx817a+eg5aGSjdWIvboe9A8me0wgDM0X0odVgXBvJb6fOMQPcdYVAdUo90TZwUAPMOytt47bYsil3KcO9N4jz6NQQA5l6nvrEqMd4sKgvVPGkXQgG+6R531DYJMYdMfjrbzBubNz6pQqpmyFZjiyLyPKFdCJ/POfjt7L8zHkkRUazfKla+f+QhHwc98Z95RLKYEjsuedkgejrZEChtRJRpgxhKKyQIXXM9eBkOBoea77WaOumpQ+v0mmvIaYiqedhHmq+8Q0XaAedlftteuOqwThrHgkxJ31QwymAOm+wFYBVk2doE64AAA=","source":"https://raw.githubusercontent.com/lovisdotio/falsprite/main/public/showcase/037-jolly-mushroom-knight-8-bit-classic-isom.gif","page":"https://github.com/lovisdotio/falsprite","credit":"Lovis Odin (FalSprite, built on fal)","rights":"creator-post","note":"Animated 8-bit pixel-art sprite (jolly mushroom knight) from FalSprite's showcase: prompt -> nano-banana -> Bria background removal -> sprite-sheet animation on fal, the pipeline fal-gamedev runs; original 200x200 GIF","bytes":183629,"addedAt":"2026-10-27"}},{"id":"fal-ai-community/fal-models-catalog","slug":"fal-models-catalog","name":"fal Models Catalog","skillName":"fal-models-catalog","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["model-selection","image","video","3d","audio","fal"],"summary":"Choose the right fal endpoint for any modality from curated picks: image, video, 3D, audio and vision.","description":"A modality-organized catalog of production endpoint defaults on fal, with one reference file each for text-to-image, image-to-image, text-to-video, image-to-video, video-to-video, text-to-3D, image-to-3D, text-to-audio, audio-to-text and image-to-text, plus utility endpoints. Use it when no model is named or someone asks which model fits.","useWhen":["Which model should I use for this?","Finding an endpoint for a new modality","Swapping to a cheaper or faster endpoint"],"publisher":{"name":"fal","handle":"fal-ai-community","url":"https://fal.ai","avatar":"https://github.com/fal-ai-community.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/fal-ai-community/skills/tree/main/skills/fal-models-catalog","repo":"fal-ai-community/skills","path":"skills/fal-models-catalog","license":"MIT"},"install":{"claude-code":"npx skills add fal-ai-community/skills --skill fal-models-catalog -a claude-code","codex":"npx skills add fal-ai-community/skills --skill fal-models-catalog -a codex","cursor":"npx skills add fal-ai-community/skills --skill fal-models-catalog -a cursor","gemini-cli":"npx skills add fal-ai-community/skills --skill fal-models-catalog -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["fal API key (FAL_KEY)","genmedia CLI"],"cost":{"note":"Billed by fal per endpoint call"},"files":["SKILL.md","references/audio-to-text.md","references/image-to-3d.md","references/image-to-image.md","references/image-to-text.md","references/image-to-video.md","references/text-to-3d.md","references/text-to-audio.md","references/text-to-image.md","references/text-to-video.md","references/video-to-video.md"],"stats":{"installs":528,"stars":256,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-04","addedAt":"2026-10-26","preview":{"kind":"grid","hue":285},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/93309ca4de12/fal-models-catalog.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRqIAAABXRUJQVlA4IJYAAACwBACdASogABIAPtFUokuoJKMhsAgBABoJYwC7AywBtAQhFjTVx28W6xfj0KrQAP70IzJxiZV9t+vygbGauCWaAphosXIhNHt+oKky9FPu/ey1boraTxYnBR/Kp8eRB73mberxNTHuErOQMrOC8lWsqe5PilGJAgjMACo4Umn6r6Z3dgANRcgDMAaWu/SXoSZxupsTgAA=","source":"https://v3b.fal.media/files/b/0a95998b/Y2JKGGVWMyjhMKf_FoqS5_video.mp4","page":"https://fal.ai/models/bytedance/seedance-2.0/image-to-video","credit":"fal","rights":"publisher-site","note":"Seedance 2.0 image-to-video example on fal's model page (the catalog's top premium image-to-video pick): VR headset product shot with a slow tilt; 0-8 s","bytes":184332,"addedAt":"2026-10-27"}},{"id":"fal-ai-community/fal-prompting","slug":"fal-prompting","name":"fal Prompting","skillName":"fal-prompting","type":"skill","status":"live","stream":"vendors","category":"prompting","tags":["kling","gpt-image","happy-horse","fal"],"summary":"Prompt specific model families well: Kling, GPT Image 2 and Happy Horse guides, loaded only when needed.","description":"Model-family prompt craft for fal endpoints, with a table of which reference to load: separate guides for Kling, GPT Image 2 and Happy Horse. Its universal principles include preferring concrete visual facts over prestige adjectives and inspecting an endpoint's schema before assuming a control exists.","useWhen":["How do I prompt Kling or GPT Image 2?","Prompts keep coming back generic","Moving a prompt between model families"],"publisher":{"name":"fal","handle":"fal-ai-community","url":"https://fal.ai","avatar":"https://github.com/fal-ai-community.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/fal-ai-community/skills/tree/main/skills/fal-prompting","repo":"fal-ai-community/skills","path":"skills/fal-prompting","license":"MIT"},"install":{"claude-code":"npx skills add fal-ai-community/skills --skill fal-prompting -a claude-code","codex":"npx skills add fal-ai-community/skills --skill fal-prompting -a codex","cursor":"npx skills add fal-ai-community/skills --skill fal-prompting -a cursor","gemini-cli":"npx skills add fal-ai-community/skills --skill fal-prompting -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["kling_v3","gpt_image_2","happy_horse"],"requires":["fal API key (FAL_KEY)","genmedia CLI"],"cost":{"note":"Billed by fal per endpoint call"},"files":["SKILL.md","references/gpt-image-2.md","references/happy-horse.md","references/kling.md"],"stats":{"installs":513,"stars":256,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-04","addedAt":"2026-10-26","preview":{"kind":"notes","hue":285},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/1afc7b4b4ed0/fal-prompting.mp4","w":720,"h":404,"duration":5,"blur":"data:image/webp;base64,UklGRvgAAABXRUJQVlA4IOwAAAAwBgCdASogABIAPtFWokuoJKMhsAgBABoJZAC7BaglAQk4jApwmA2QmzdvO5kAygM4C89qybmNZm3AAP7qPC4FaR9QqUmHL7/ETnviE3bF4NMiDps6UuzXcnQx84AOcIlOJROjZCMUalS0/o6LsTzX4mevisv/UZOA6iDaY1cRG3/XlXwYiOpGxUG8+Gnn76BJou2rcWEsEqJCQ5k0T09KZSbylsv/fDG499T6URjM0OJm8zXrsnauN46CKW4SJPiMfGEy/tREKX+dxnexxs43N4BXuiRmUsEYptgDJaymqYV/jVzwx+jP+IAAAA==","source":"https://v3b.fal.media/files/b/0a97b8aa/HPOuCsMyzhiBQFizF-pcj_CHDwHAcJ.mp4","page":"https://fal.ai/learn/tools/prompting-happy-horse","credit":"fal","rights":"publisher-site","note":"'Short legible text' pattern from fal's Happy Horse prompting guide: slow push-in on a bookshop window with a readable 'THE STARS BELOW' cover","bytes":150675,"addedAt":"2026-10-27"}},{"id":"fal-ai-community/fal-recipes","slug":"fal-recipes","name":"fal Recipes","skillName":"fal-recipes","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["product","characters","lip-sync","virtual-try-on","restoration","fal"],"summary":"Follow proven multi-step fal pipelines for commercials, product shots, characters, lip-sync and try-on.","description":"Use-case pipelines on fal for when someone wants a kind of content rather than one endpoint call: cinematography, realism, character design and consistency, commercials, product shots, storytelling, character lip-sync, image restoration, virtual try-on and video with audio. Every recipe follows the same structure, and they cross-reference the production skills.","useWhen":["Make a commercial or a product shot","A consistent character or a lip-synced line","Virtual try-on, restoration or a film look"],"publisher":{"name":"fal","handle":"fal-ai-community","url":"https://fal.ai","avatar":"https://github.com/fal-ai-community.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/fal-ai-community/skills/tree/main/skills/fal-recipes","repo":"fal-ai-community/skills","path":"skills/fal-recipes","license":"MIT"},"install":{"claude-code":"npx skills add fal-ai-community/skills --skill fal-recipes -a claude-code","codex":"npx skills add fal-ai-community/skills --skill fal-recipes -a codex","cursor":"npx skills add fal-ai-community/skills --skill fal-recipes -a cursor","gemini-cli":"npx skills add fal-ai-community/skills --skill fal-recipes -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["fal API key (FAL_KEY)","genmedia CLI"],"cost":{"note":"Billed by fal per endpoint call"},"files":["SKILL.md","references/character-design.md","references/character-lipsync.md","references/cinematography.md","references/commercial.md","references/image-restoration.md","references/product-shot.md","references/realism.md","references/storytelling.md","references/video-with-audio.md","references/virtual-tryon.md"],"stats":{"installs":448,"stars":256,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-04","addedAt":"2026-10-26","preview":{"kind":"film","hue":285},"adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/cd8eaa45fac3/fal-recipes.webp","w":960,"h":640,"blur":"data:image/webp;base64,UklGRloBAABXRUJQVlA4IE4BAACwBgCdASogABYAPtFUo0uoJKMhsAgBABoJQBdmbObsgglAVxSqsbokHh6GFLRv/10IQwwqFb2A8oHWBx50AAD8j+j5UzT6mMoIeUqalREaAfzd7H0a3LaGFWMJSD8K46fmKpPGpmbeWOKvVEixEZWRWVxbhdfNMlrFFI5StAVewgNXZJwg8viz2ZgAW/tzfr6bHCeCZv685wg1oUYlD7nFT5XKc+D1hFXZkVcVBKVEwsfkMD9tvFBNIhjEDNgbBDGdmwF1aDaFgA70Rkm6Y/5VnwZegAKoUXU/AiZTPeLseUftl1eCsOnnn9YcFmPA7rfF/PWS7/TcAUC1ZKrBYAbVnaMklJGKTxVsxhiwUh+Palws5b0U1DHYrGLLeYUTFHbokBvaphB/x5F0/LGxXAdH1Fppj/3lOnUwSBVoxgqizhxeDb/jT5AdYWLeAAAA","source":"https://v3b.fal.media/files/b/0a970066/Vgq70Y9U3Yss1gWtoqhD1_KzDoX3x2.jpg","page":"https://fal.ai/learn/tools/prompting-gpt-image-2","credit":"fal","rights":"publisher-site","note":"Photoreal editorial example (fishmonger unpacking mackerel at dawn) generated with GPT Image 2 on fal — the default model and look of the recipes' photorealism pipeline","bytes":64830,"addedAt":"2026-10-27"}},{"id":"fal-ai-community/fal-workflow","slug":"fal-workflow","name":"fal Workflow","skillName":"fal-workflow","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["workflow-json","pipeline","fal"],"summary":"Author fal workflow JSON that chains models, or orchestrate the same pipeline locally with genmedia.","description":"Two modes for multi-step pipelines on fal: authoring declarative workflow JSON for fal's workflow runtime (node types, reference syntax and the rules that keep graphs valid), or imperative genmedia CLI orchestration when scripting locally. It includes examples, patterns and model notes.","useWhen":["Create a fal workflow or chain models","An image-to-video pipeline as a reusable graph","Fan-out generation scripted locally"],"publisher":{"name":"fal","handle":"fal-ai-community","url":"https://fal.ai","avatar":"https://github.com/fal-ai-community.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/fal-ai-community/skills/tree/main/skills/fal-workflow","repo":"fal-ai-community/skills","path":"skills/fal-workflow","license":"MIT"},"install":{"claude-code":"npx skills add fal-ai-community/skills --skill fal-workflow -a claude-code","codex":"npx skills add fal-ai-community/skills --skill fal-workflow -a codex","cursor":"npx skills add fal-ai-community/skills --skill fal-workflow -a cursor","gemini-cli":"npx skills add fal-ai-community/skills --skill fal-workflow -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["fal API key (FAL_KEY)","genmedia CLI"],"cost":{"note":"Billed by fal per endpoint call"},"files":["SKILL.md","references/EXAMPLES.md","references/MODELS.md","references/node-rules.md","references/PATTERNS.md","references/pipeline-patterns.md","references/recipes.md","references/utility-endpoints.md","references/WORKFLOWS.md"],"stats":{"installs":218,"stars":256,"source":"skills.sh","asOf":"2026-10-26"},"version":"4.0.0","updatedAt":"2026-05-04","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":285},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2123c58c0422/fal-workflow.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRm4AAABXRUJQVlA4IGIAAAAwBACdASogABIAPslSnkunpKKhsAwA8BkJaQAAccEs1yQT0vtlBxebkgAA/vENJcOd1vEvJ7JaN527mME942wzFsbaET9vFhc4a29mVywrj0Nyi/yTZWBRGk7hvLuS7AAAAA==","source":"https://v3b.fal.media/files/b/0aa56423/HNIpvl47ucnZBUfZB7h3O_One%20continuous%20restoration%2C%20camera%20locked%20to%20the%20doorway%20position%20for%20the%20whole%20clip.mp4","page":"https://fal.ai/learn/tools/seedance-2-5-workflows","credit":"fal","rights":"publisher-site","note":"'Two frames, with the end state pinned' chain from fal's Seedance 2.5 guide: Seedream still -> Seedream edit for the end frame -> Seedance bridges them; a derelict ballroom restored in one locked shot; 4-12 s","bytes":142898,"addedAt":"2026-10-27"}},{"id":"fal-ai-community/fan-cam","slug":"fal-fan-cam","name":"fal Fan Cam","skillName":"fan-cam","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["sports","broadcast","identity","native-ui","fal"],"summary":"Put someone into a live sports broadcast: a realistic fan-cam cutaway with scoreboard and channel overlays.","description":"Creates personalized fan-cam videos from a user photo: a realistic stadium or arena crowd shot made with GPT Image 2, animated with Kling v3, with scoreboard overlays, TV channel bugs and broadcast framing. It includes a prompt contract and a quality gate for identity and realism.","useWhen":["A fan-cam or crowd-reaction clip from a selfie","Broadcast-style sports cutaways"],"publisher":{"name":"fal","handle":"fal-ai-community","url":"https://fal.ai","avatar":"https://github.com/fal-ai-community.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/fal-ai-community/skills/tree/main/skills/fan-cam","repo":"fal-ai-community/skills","path":"skills/fan-cam","license":"MIT"},"install":{"claude-code":"npx skills add fal-ai-community/skills --skill fan-cam -a claude-code","codex":"npx skills add fal-ai-community/skills --skill fan-cam -a codex","cursor":"npx skills add fal-ai-community/skills --skill fan-cam -a cursor","gemini-cli":"npx skills add fal-ai-community/skills --skill fan-cam -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["gpt_image_2","kling_v3"],"requires":["fal API key (FAL_KEY)","genmedia CLI"],"cost":{"note":"Billed by fal per endpoint call"},"files":["SKILL.md","references/examples.md","references/genmedia-commands.md","references/prompt-contract.md"],"stats":{"installs":271,"stars":256,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-13","addedAt":"2026-10-26","preview":{"kind":"film","hue":285},"adds":"visual","media":{"type":"none","reason":"No real fan-cam output published: fal's fan-cam workflow template page and the skill folder show no example result; only generic Kling/GPT Image 2 examples exist, which would not show a broadcast fan-cam","searched":["github.com/fal-ai-community/skills skills/fan-cam (SKILL.md, references, PRs #17-20)","fal.ai/workflows/templates/template/fan-cam","fal.ai/models/fal-ai/kling-video/v3/pro/image-to-video","fal.ai/learn and blog.fal.ai sitemaps","X search (fal, skill author)"],"addedAt":"2026-10-27"}},{"id":"fal-ai-community/genmedia","slug":"fal-genmedia","name":"fal genmedia","skillName":"genmedia","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["cli","model-runner","image","video","fal"],"summary":"Run any of 1,200+ fal endpoints from the terminal: search, inspect schema, price, run, poll and download.","description":"Teaches the `genmedia` CLI, fal's agent-first runner for its 1,200+ model endpoints: search models, fetch schemas, check pricing, upload inputs, run synchronously or queue async jobs, track requests and download results. Every other fal skill executes through it, and it covers first-time setup with a fal API key.","useWhen":["Searching for or running a fal model","Fetching an endpoint's schema or price","Queuing and tracking async jobs"],"publisher":{"name":"fal","handle":"fal-ai-community","url":"https://fal.ai","avatar":"https://github.com/fal-ai-community.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/fal-ai-community/skills/tree/main/skills/genmedia","repo":"fal-ai-community/skills","path":"skills/genmedia","license":"MIT"},"install":{"claude-code":"npx skills add fal-ai-community/skills --skill genmedia -a claude-code","codex":"npx skills add fal-ai-community/skills --skill genmedia -a codex","cursor":"npx skills add fal-ai-community/skills --skill genmedia -a cursor","gemini-cli":"npx skills add fal-ai-community/skills --skill genmedia -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["fal API key (FAL_KEY)","genmedia CLI"],"cost":{"note":"Billed by fal per endpoint call"},"files":["SKILL.md","references/full-reference.md"],"stats":{"installs":682,"stars":256,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-08","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":285},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/85c9a8732678/fal-genmedia.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRi4BAABXRUJQVlA4ICIBAAAQBgCdASogABIAPtFUo0uoJKMhsAgBABoJbACdMuxHenl5oJzoRuzk/BcO3Z1Q4eM0qKzQ4XIG5lAA/tAIZpy3fLdlKJfa/kyPzJpD0Iwq5q2MAKrqCoCDqx1b2qhaZ6UDQzuaaT5YYZ6h6hyA3A4qOuv4ZTuyQSs6yi81ftFLsikphbjIFvorUiJ6YveCCfhbuKju3Efxy6L5GVrlA43+hNhMrg53Lnn5qrrco7aQvLqqpAVbk6S1Iwb0OxyvWSBn5enkLFeaQnXkvkggTSCwY2IbM5vp5SN/kPtvYsy19WpSehbNX5BCRge//x0prggRbFxjNmVhkokUP8jZR/zJOFtw1a1VeVUFWEfanN2YaN9vN2oPrAF0lMJyV2P6PmwAAA==","source":"https://v3b.fal.media/files/b/kangaroo/oUCiZjQwEy6bIQdPUSLDF_output.mp4","page":"https://fal.ai/models/fal-ai/veo3.1","credit":"fal","rights":"publisher-site","note":"Veo 3.1 example on fal's model page (fal-ai/veo3.1 is the endpoint genmedia's own run/status examples use): two-person street interview in New York; audio not kept","bytes":343987,"addedAt":"2026-10-27"}},{"id":"fal-ai-community/genmedia-workflow","slug":"fal-genmedia-workflow","name":"fal genmedia Workflow","skillName":"genmedia-workflow","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["pipeline","batch","subtitles","fal"],"summary":"Design multi-step media pipelines with genmedia: generate, edit, add audio and subtitles, batch, deliver.","description":"Plans and executes multi-step media workflows with genmedia that combine planning, generation, editing, image and video utilities, audio, subtitles, batching and a final delivery manifest. References cover node rules, pipeline patterns, utility endpoints and reusable recipes.","useWhen":["A pipeline with several generation and edit steps","Batch production with a delivery manifest"],"publisher":{"name":"fal","handle":"fal-ai-community","url":"https://fal.ai","avatar":"https://github.com/fal-ai-community.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/fal-ai-community/skills/tree/main/skills/genmedia-workflow","repo":"fal-ai-community/skills","path":"skills/genmedia-workflow","license":"MIT"},"install":{"claude-code":"npx skills add fal-ai-community/skills --skill genmedia-workflow -a claude-code","codex":"npx skills add fal-ai-community/skills --skill genmedia-workflow -a codex","cursor":"npx skills add fal-ai-community/skills --skill genmedia-workflow -a cursor","gemini-cli":"npx skills add fal-ai-community/skills --skill genmedia-workflow -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["fal API key (FAL_KEY)","genmedia CLI"],"cost":{"note":"Billed by fal per endpoint call"},"files":["SKILL.md","references/node-rules.md","references/pipeline-patterns.md","references/recipes.md","references/utility-endpoints.md"],"stats":{"installs":409,"stars":256,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-04","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":285},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f3ec1adb69a9/fal-genmedia-workflow.mp4","w":720,"h":404,"duration":10,"blur":"data:image/webp;base64,UklGRsQAAABXRUJQVlA4ILgAAAAwBQCdASogABIAPtFYo0uoJSMhsAgBABoJYwCuHCBSHRWqUOp8tKaiQbOOePvKwkcCuAD+6iczQA8jzxOYbc7ESN/ZtsiIddn8W+1wzh/Ue8If6I07bXbi9/cAtexsYNNgyoLZgnRKMzwOPExX16e8TgP9PN56ODb5Lyng6z55gus/Xr9VFoL4yyXb4YnGrPJUEBRAn0yWk4A2tgFqfohpzbjWGdFigP+nMYnSMJs0QXDE6CH8gAAA","source":"https://v3b.fal.media/files/b/0aa56424/o6GcAAL_ZeO5LmIioVaXr_The%20badger%20pilot%20from%20Image1%20climbs%20out%20of%20his%20cockpit%20onto%20the%20float%20of%20the%20plane%20and%20steps%20across%20onto%20the%20barge%20from.mp4","page":"https://fal.ai/learn/tools/seedance-2-5-workflows","credit":"fal","rights":"publisher-site","note":"Two-step chain from fal's Seedance 2.5 guide: a Seedream stop-motion still fed back as the reference for Seedance reference-to-video (badger pilot steps onto a fuel barge); 0-10 s","bytes":228539,"addedAt":"2026-10-27"}},{"id":"fal-ai-community/marketing","slug":"fal-marketing","name":"fal Marketing","skillName":"marketing","type":"skill","status":"live","stream":"vendors","category":"ads","tags":["campaign","paid-social","banners","launch","fal"],"summary":"Produce campaign asset matrices: launch kits, paid-social variants, banners and channel deliverables.","description":"Campaign-level marketing production with genmedia: launch kits, campaign matrices, paid social variants, landing-page, email and banner visuals, hook, proof and conversion assets, and creator ad packages. It builds the brief first, then the prompts, and references campaign patterns and worked examples.","useWhen":["A launch kit or campaign matrix","Paid social variants per channel","Banners and landing-page visuals"],"publisher":{"name":"fal","handle":"fal-ai-community","url":"https://fal.ai","avatar":"https://github.com/fal-ai-community.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/fal-ai-community/skills/tree/main/skills/marketing","repo":"fal-ai-community/skills","path":"skills/marketing","license":"MIT"},"install":{"claude-code":"npx skills add fal-ai-community/skills --skill marketing -a claude-code","codex":"npx skills add fal-ai-community/skills --skill marketing -a codex","cursor":"npx skills add fal-ai-community/skills --skill marketing -a cursor","gemini-cli":"npx skills add fal-ai-community/skills --skill marketing -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["fal API key (FAL_KEY)","genmedia CLI"],"cost":{"note":"Billed by fal per endpoint call"},"files":["SKILL.md","references/campaign-patterns.md","references/examples.md","references/workflows.md"],"stats":{"installs":340,"stars":256,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-07","addedAt":"2026-10-26","preview":{"kind":"cards","hue":285},"adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/da39ab3cfeca/fal-marketing.webp","w":960,"h":960,"blur":"data:image/webp;base64,UklGRkoBAABXRUJQVlA4ID4BAABQBwCdASogACAAPrVInEunJCKht+gA4BaJbADG+6grATINsBSOrQ6ylhjgiC9tkxJMIl5sz3wh4eQBXgdwisqZcBGgAP3X8reaL1Yjrh7CTN4TuPzPPsLjQBHZYsUg5VWjaNYNwimEiq2ge3VAZNEsGBGyW8rRYGxotav11eCwworIswi0bEdTS1DaJRNq4wKBrDfX1ptJqcLkAagkOeJkWgX1nXTl6LDu6G/1D9N/I60Hg4nzxWYAKOFDHjA88ld7POfrVngjHfDfM0cStlTaIPBDS0PKEK/S4HJWA8+/8f0d1OqeIIvD7lG7LI9hU5D94ehxW+iKUFJkXuFjLWCrLBU0bBDPaZIQYlEsaLK4Ep0rs9i1w8yJWhUD6vJXuZ0uOkawboOcn0kNVUI+d5K0j4arJcImxAgmy2RgAAA=","source":"https://v3b.fal.media/files/b/0aa63806/_c_w_VstGoLPd--0o8PA3_S8dhxehk.jpg","page":"https://fal.ai/models/openai/gpt-image-2/edit","credit":"fal","rights":"publisher-site","note":"GPT Image 2 edit example on fal's model page: a London double-decker wrapped in a full brand livery from a reference design — an out-of-home campaign visual","bytes":119046,"addedAt":"2026-10-27"}},{"id":"fal-ai-community/model-routing","slug":"fal-model-routing","name":"fal Model Routing","skillName":"model-routing","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["model-selection","image","video","lip-sync","fal"],"summary":"Pick default fal endpoints per job: premium stills, fast drafts, edits, video, lip-sync and campaign work.","description":"An endpoint-first routing table that fal's production skills use when nobody has named a model. It gives default picks for image generation, text-heavy images, premium stills, fast drafts, editing, top-quality and low-cost video, multi-shot storytelling, native audio and lip-sync, and campaign or UGC work.","useWhen":["No model was named for a generation","Choosing between quality and cost tiers","Routing campaign or UGC production"],"publisher":{"name":"fal","handle":"fal-ai-community","url":"https://fal.ai","avatar":"https://github.com/fal-ai-community.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/fal-ai-community/skills/tree/main/skills/model-routing","repo":"fal-ai-community/skills","path":"skills/model-routing","license":"MIT"},"install":{"claude-code":"npx skills add fal-ai-community/skills --skill model-routing -a claude-code","codex":"npx skills add fal-ai-community/skills --skill model-routing -a codex","cursor":"npx skills add fal-ai-community/skills --skill model-routing -a cursor","gemini-cli":"npx skills add fal-ai-community/skills --skill model-routing -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["gpt_image_2","nano_banana_pro","nano_banana_2","flux-2","seedream","seedance_2","kling_v3","happy_horse","grok_imagine"],"requires":["fal API key (FAL_KEY)","genmedia CLI"],"cost":{"note":"Billed by fal per endpoint call"},"files":["SKILL.md"],"stats":{"installs":460,"stars":256,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-07","addedAt":"2026-10-26","preview":{"kind":"cards","hue":285},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/8b678dde4c31/fal-model-routing.webp","w":960,"h":640,"blur":"data:image/webp;base64,UklGRhYBAABXRUJQVlA4IAoBAADQBgCdASogABYAPtFcqE4oJSQiKAqpABoJYgCdMu0A/2HhgF2AGS8zl/BY1xBRDQOElPVhTn418o+am3HSWQAA/u9a102Z22/hdrttTdt0YTf+vNpocKFYWG1Iq/65tpP2FbWVzK0r5LkR5BEkbxdqbi7NZdUk9am12t20N3zVPGoi2BOx5rf1wYP1Ppq6XzYAUp4Bg2YT10+nuHujqoZRc4FwQleJSx0zjmRvni80Eny/hMq9WAhX+oPF0pSvUU8LfB4PhRNIrXawp1QLhTJUoJY7b1k7uDLvUrgWmIcrvIMq/llnuKI2B8cHbcJvfrMHuIvM2+XuCl8GD56ZR9hAdc7bRy+mIMy4AA==","source":"https://v3b.fal.media/files/b/0a970078/h_8h4IEAe6XSdAXycB_4U_qZeAc8r3.jpg","page":"https://fal.ai/learn/tools/prompting-gpt-image-2","credit":"fal","rights":"publisher-site","note":"GPT Image 2 output from fal's GPT Image 2 guide (plastic-letter diner menu board at 5 AM) — openai/gpt-image-2 is model-routing's default for premium and text-heavy stills","bytes":68088,"addedAt":"2026-10-27"}},{"id":"fal-ai-community/storytelling","slug":"fal-storytelling","name":"fal Storytelling","skillName":"storytelling","type":"skill","status":"live","stream":"vendors","category":"story","tags":["storyboard","multi-shot","continuity","brand-film","fal","cinematic"],"summary":"Plan multi-shot stories: storyboards, shot lists, first-to-last-frame chains and continuity across scenes.","description":"Multi-shot narrative workflows across image, video and audio with genmedia: storyboards, shot lists, multi-prompt video, first-frame to last-frame pipelines, social stories and brand films. A shot-planning reference keeps continuity across the sequence.","useWhen":["A short film or brand film in several shots","Storyboards and shot lists","Keeping continuity between clips"],"publisher":{"name":"fal","handle":"fal-ai-community","url":"https://fal.ai","avatar":"https://github.com/fal-ai-community.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/fal-ai-community/skills/tree/main/skills/storytelling","repo":"fal-ai-community/skills","path":"skills/storytelling","license":"MIT"},"install":{"claude-code":"npx skills add fal-ai-community/skills --skill storytelling -a claude-code","codex":"npx skills add fal-ai-community/skills --skill storytelling -a codex","cursor":"npx skills add fal-ai-community/skills --skill storytelling -a cursor","gemini-cli":"npx skills add fal-ai-community/skills --skill storytelling -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["fal API key (FAL_KEY)","genmedia CLI"],"cost":{"note":"Billed by fal per endpoint call"},"files":["SKILL.md","references/examples.md","references/shot-planning.md","references/workflows.md"],"stats":{"installs":446,"stars":256,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-04","addedAt":"2026-10-26","preview":{"kind":"film","hue":285},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/6ed608385efd/fal-storytelling.mp4","w":720,"h":404,"duration":5,"blur":"data:image/webp;base64,UklGRrYAAABXRUJQVlA4IKoAAACwBACdASogABIAPtFWpE0oJCOiMBgIAQAaCWUAvsA1f+qfbQ64UUUknSjQmG4AAP7zQoUt/jNJOKrOqBVxIRMsJnWaWCBzmwqHiskonwuMN5hw9BEdt0dl8n20jdNDntuUVTZPB2q8Vi+jPAbqz25+KlBiqSPHut7PTyiW/xTd4D5IJFmrI7890B1l+u0fidbxQWiqunybY3dpgZM0qWoq4RVfSWFjInAAAA==","source":"https://v3b.fal.media/files/b/0a97deaa/M8WW7HdKsIUyN03aGVgGK_itq8UxaL.mp4","page":"https://fal.ai/models/alibaba/happy-horse/text-to-video","credit":"fal","rights":"publisher-site","note":"Happy Horse example on fal's model page: one prompt written as a three-shot list (wide, mid close-up, over-the-shoulder) of a man settling in to read","bytes":193388,"addedAt":"2026-10-27"}},{"id":"fal-ai-community/ugc","slug":"fal-ugc","name":"fal UGC","skillName":"ugc","type":"skill","status":"live","stream":"vendors","category":"ads","tags":["ugc","talking-head","testimonial","vertical-video","fal"],"summary":"Script and generate UGC-style creator ads: talking heads, demos, testimonials, unboxings and reactions.","description":"Plans and runs UGC-style social videos with genmedia: direct-to-camera creator scripts, talking-head ads, product demos, testimonials, founder clips, unboxings, reactions, before-and-after and faceless voiceover formats. It writes the script before the prompts and targets short vertical video.","useWhen":["A UGC or creator-style ad","A testimonial, unboxing or reaction video","Short vertical social video with a presenter"],"publisher":{"name":"fal","handle":"fal-ai-community","url":"https://fal.ai","avatar":"https://github.com/fal-ai-community.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/fal-ai-community/skills/tree/main/skills/ugc","repo":"fal-ai-community/skills","path":"skills/ugc","license":"MIT"},"install":{"claude-code":"npx skills add fal-ai-community/skills --skill ugc -a claude-code","codex":"npx skills add fal-ai-community/skills --skill ugc -a codex","cursor":"npx skills add fal-ai-community/skills --skill ugc -a cursor","gemini-cli":"npx skills add fal-ai-community/skills --skill ugc -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["fal API key (FAL_KEY)","genmedia CLI"],"cost":{"note":"Billed by fal per endpoint call"},"files":["SKILL.md","references/examples.md","references/formats.md","references/workflows.md"],"stats":{"installs":367,"stars":256,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-07","addedAt":"2026-10-26","preview":{"kind":"avatar","hue":285},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/414e4a210c1c/fal-ugc.mp4","w":720,"h":396,"duration":4,"blur":"data:image/webp;base64,UklGRgIBAABXRUJQVlA4IPYAAABQBgCdASogABIAPtFcpUyoJSOiMBgIAQAaCWIAnTLiLsnAYMALfDHrlLS8daGd6G2nZ+ca6MjT695K4ACtkmPOizNsiWB4J0t2U1Zumh2yOYXvo8Uf1Y2UqJq1AW//Nxk2L8VnJckLELM0mMSNevdebBQA5tfJymLy25UmN/C5H4cnbfIuIm8sDyXvsdJ9fUF5h3I+D3Qu3curzEyzuLZ1fWwbJVuPLEGtbSz/OLbCYlR74BkbrA++VO5mb//WN2iI2cm+st2w4ZAd+4j8YelMhMGmQmEHoa6gJctfgvCeQ/47rPESCGVuvaT7jU4qO5tVZg2KQAA=","source":"https://v3b.fal.media/files/b/0a976d10/3_SHLxBIby-GiYZa0SIT8_tmpejbyyngr.mp4","page":"https://fal.ai/models/veed/fabric-1.0","credit":"fal","rights":"publisher-site","note":"VEED Fabric 1.0 example on fal's model page (the UGC skill's default talking-head endpoint): creator-style clip of a woman talking to camera with a handheld mic; audio not kept","bytes":60621,"addedAt":"2026-10-27"}},{"id":"replicate/compare-models","slug":"replicate-compare-models","name":"Replicate Compare Models","skillName":"compare-models","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["model-selection","cost","quality"],"summary":"Compare Replicate models on cost, speed, quality and capabilities before you commit to one.","description":"A workflow for weighing Replicate models against each other on cost, speed, quality and capabilities. It covers the key trade-offs, official versus community models, and where prompting guidance changes the outcome.","useWhen":["Choosing between candidate models","Trading off cost, speed and quality"],"publisher":{"name":"Replicate","handle":"replicate","url":"https://replicate.com","avatar":"https://github.com/replicate.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/replicate/skills/tree/main/skills/compare-models","repo":"replicate/skills","path":"skills/compare-models","license":"Apache-2.0"},"install":{"claude-code":"npx skills add replicate/skills --skill compare-models -a claude-code","codex":"npx skills add replicate/skills --skill compare-models -a codex","cursor":"npx skills add replicate/skills --skill compare-models -a cursor","gemini-cli":"npx skills add replicate/skills --skill compare-models -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Replicate account and API token"],"cost":{"note":"Billed by Replicate per prediction"},"files":["SKILL.md"],"stats":{"installs":2200,"stars":142,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-04-17","addedAt":"2026-10-26","preview":{"kind":"cards","hue":8},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/33da884745b5/replicate-compare-models.webp","w":960,"h":288,"blur":"data:image/webp;base64,UklGRtIAAABXRUJQVlA4IMYAAAAQAwCdASogAAoAAsBMJagCdL1yVevgduJzhoetQ06z1AAA/vNd1WP71S2gEhNvErb9ppm2NYEt+UWr12bkjIhczZaL5Pqczn8No81PYES38jmTbVsNY90pUz7f+DWIdpCE0+rhE03G+SIGdyDRceXpj+a8O8IN0EUztzG6Vng8nfmXEdRrNoiG+b5qUxbH18X3j6QV+3dJntfGCWz30XB2IEjykM0Wu7+qhppm7GD/JfX7S5cSmCUKj+HW7Bo30ZRkWA5AAAA=","source":"https://replicate.com/blog/compare-image-editing-models","page":"https://replicate.com/blog/compare-image-editing-models","credit":"Replicate","rights":"publisher-site","note":"Style-transfer comparison from Replicate's 'Which image editing model should I use?' post: the input photo (left) and the same 'make this an oil painting' edit by GPT-image-1, FLUX.1 Kontext, Nano Banana (top row), Qwen, SeedEdit, Seedream (bottom row); the page's seven images arranged in one grid","bytes":46724,"addedAt":"2026-10-27"}},{"id":"replicate/find-models","slug":"replicate-find-models","name":"Replicate Find Models","skillName":"find-models","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["model-selection","search","api"],"summary":"Find current models on Replicate through search and curated collections, then read their schemas.","description":"Searches Replicate's API and curated collections for current models instead of relying on memory. It then reads model schemas and explains how to pick a model and reference it by identifier.","useWhen":["Finding a model for a task","Reading a model's inputs and outputs"],"publisher":{"name":"Replicate","handle":"replicate","url":"https://replicate.com","avatar":"https://github.com/replicate.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/replicate/skills/tree/main/skills/find-models","repo":"replicate/skills","path":"skills/find-models","license":"Apache-2.0"},"install":{"claude-code":"npx skills add replicate/skills --skill find-models -a claude-code","codex":"npx skills add replicate/skills --skill find-models -a codex","cursor":"npx skills add replicate/skills --skill find-models -a cursor","gemini-cli":"npx skills add replicate/skills --skill find-models -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Replicate account and API token"],"cost":{"note":"Billed by Replicate per prediction"},"files":["SKILL.md"],"stats":{"installs":2300,"stars":142,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-04-29","addedAt":"2026-10-26","preview":{"kind":"grid","hue":8},"adds":"api","media":{"type":"none","reason":"Discovery skill whose output is a shortlist of model IDs and schemas (text), not media; Replicate's only media for it is a Claude Desktop screen recording of a model search, and a random featured-model cover would not show what the skill does","searched":["github.com/replicate/skills (repo tree, README, skills/find-models/SKILL.md)","replicate.com/blog/new-search-api","replicate.com/collections","replicate.com/explore"],"addedAt":"2026-10-27"}},{"id":"replicate/prompt-images","slug":"replicate-prompt-images","name":"Replicate Prompt Images","skillName":"prompt-images","type":"skill","status":"live","stream":"vendors","category":"prompting","tags":["image","image-editing","typography","consistency"],"summary":"Write better image prompts and edits: photographic language, lighting, text rendering, consistent characters.","description":"Prompting techniques for image generation and editing models on Replicate. It starts by choosing a model through the API rather than from memory, then covers natural-language prompts, camera and lens language, lighting setups, composition, text rendering, style transfer, character consistency and edits such as object removal, background changes, perspective shifts and inpainting.","useWhen":["Writing prompts for an image model","Editing an image with a model","Building an image-generation feature"],"publisher":{"name":"Replicate","handle":"replicate","url":"https://replicate.com","avatar":"https://github.com/replicate.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/replicate/skills/tree/main/skills/prompt-images","repo":"replicate/skills","path":"skills/prompt-images","license":"Apache-2.0"},"install":{"claude-code":"npx skills add replicate/skills --skill prompt-images -a claude-code","codex":"npx skills add replicate/skills --skill prompt-images -a codex","cursor":"npx skills add replicate/skills --skill prompt-images -a cursor","gemini-cli":"npx skills add replicate/skills --skill prompt-images -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["nano_banana_pro","flux-2","seedream-5","imagen-4","ideogram","recraft"],"requires":["Replicate account and API token"],"cost":{"note":"Billed by Replicate per prediction"},"files":["SKILL.md"],"stats":{"installs":2700,"stars":142,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-04-29","addedAt":"2026-10-26","preview":{"kind":"notes","hue":8},"adds":"tool","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/3659e94b3693/replicate-prompt-images.webp","w":960,"h":717,"blur":"data:image/webp;base64,UklGRlYBAABXRUJQVlA4IEoBAACwBgCdASogABgAPtFYpEuoJSOhsAgBABoJaACdMt1w2nVLsG+ZVGzfbTG4rHEvPWuU8C02rBv1m8VCUGrV/AD+m64lp3cJFYmXA1QPx9OxopXfrm4ZIWh88ew5HU8t3kF8c+/2tKBnltZPful6F/AEagX6lL6gZGrdOxqQwRL3j0dToqFdxK/hmrOw6qAL5mhgEKGPnTH4M+Gayb/80XZ2Fcz2XecVk7Om57JC4+nqmLtwl1u3psd6WPvo7L8BcKdp8a5iqwsbz4rRrQFsRDOrtpbm9B9sHlEMAbZ9nSmRXbtCUeeo3OCUUQZWqwZkfciuBV3+9vffva99utLWLTukvXsQqdr29ceQEAC/a+y7tFeZRBip9H2IGT+tpbBzQmgtPz5X0MxWTsGzb5WY1f7w7jm5jP86/7/1IAdgsCL8cljtyfS7n30bFgA=","source":"https://replicate.delivery/xezq/r4VkNkCmdG6aB9Lk7PvGkwjjIue99101TaINceCbMSOA1krVA/tmpesi7smjq.jpeg","page":"https://replicate.com/blog/how-to-prompt-nano-banana-pro","credit":"Replicate","rights":"publisher-site","note":"Nano Banana Pro output from Replicate's 'How to prompt Nano Banana Pro' guide: a comic-style New York weather report with legible lettering, from its world-knowledge prompting section","bytes":130220,"addedAt":"2026-10-27"}},{"id":"replicate/prompt-videos","slug":"replicate-prompt-videos","name":"Replicate Prompt Videos","skillName":"prompt-videos","type":"skill","status":"live","stream":"vendors","category":"prompting","tags":["video","camera","dialogue","audio"],"summary":"Prompt video models like a director: shots, camera motion, four audio layers, dialogue, time-coded beats.","description":"Prompting techniques for video generation models on Replicate: layered scene description, shot types, camera motion and position, lens language, an escalation pattern, prompting all four audio layers, dialogue syntax that avoids burned-in subtitles, pronunciation, and multi-shot or time-coded prompts. Like its image sibling, it picks the model through the API first.","useWhen":["Writing prompts for a video model","Dialogue or sound in generated video","Multi-shot or time-coded clips"],"publisher":{"name":"Replicate","handle":"replicate","url":"https://replicate.com","avatar":"https://github.com/replicate.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/replicate/skills/tree/main/skills/prompt-videos","repo":"replicate/skills","path":"skills/prompt-videos","license":"Apache-2.0"},"install":{"claude-code":"npx skills add replicate/skills --skill prompt-videos -a claude-code","codex":"npx skills add replicate/skills --skill prompt-videos -a codex","cursor":"npx skills add replicate/skills --skill prompt-videos -a cursor","gemini-cli":"npx skills add replicate/skills --skill prompt-videos -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["veo_3_1","seedance_2","wan-2.2"],"requires":["Replicate account and API token"],"cost":{"note":"Billed by Replicate per prediction"},"files":["SKILL.md"],"stats":{"installs":2500,"stars":142,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-04-29","addedAt":"2026-10-26","preview":{"kind":"film","hue":8},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ba56e406f770/replicate-prompt-videos.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRpQAAABXRUJQVlA4IIgAAACwBACdASogABIAPslUn0unpKKhsAwA8BkJQAALfaGWEtVjXivso9XNInAOouQAAP71duzwUiJNDALygL8jHMU2j5o/nJIocNIN5cBjySkcW9ohHQ1zGYYWr9cwMH5eDDlBxjNkv9cX3y3FXNnniUZCnvluVj3dLZAiPj0FULN/Z6a3O4GOAAAA","source":"https://replicate.com/_content/assets/phone-prompt.CwstwBwT.mp4","page":"https://replicate.com/blog/using-and-prompting-veo-3","credit":"Replicate","rights":"publisher-site","note":"'Detailed prompt' result from Replicate's 'How to prompt Veo 3' guide: a directed noir scene (a man answers a ringing payphone in a green-lit alley, cutting to close-ups); audio not kept","bytes":227507,"addedAt":"2026-10-27"}},{"id":"replicate/run-models","slug":"replicate-run-models","name":"Replicate Run Models","skillName":"run-models","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["api","webhooks","streaming","mcp"],"summary":"Run Replicate models from code: predictions, webhooks, streaming, file handling and multi-model chains.","description":"Covers running models on Replicate through its HTTP API and MCP server, with three ways to get output: predictions, webhooks and streaming. It also explains prediction lifetime, file handling and multi-model workflows.","useWhen":["Calling a model from an app or script","Handling long jobs with webhooks","Chaining several models"],"publisher":{"name":"Replicate","handle":"replicate","url":"https://replicate.com","avatar":"https://github.com/replicate.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/replicate/skills/tree/main/skills/run-models","repo":"replicate/skills","path":"skills/run-models","license":"Apache-2.0"},"install":{"claude-code":"npx skills add replicate/skills --skill run-models -a claude-code","codex":"npx skills add replicate/skills --skill run-models -a codex","cursor":"npx skills add replicate/skills --skill run-models -a cursor","gemini-cli":"npx skills add replicate/skills --skill run-models -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Replicate account and API token","Replicate MCP server (optional)"],"cost":{"note":"Billed by Replicate per prediction"},"files":["SKILL.md"],"stats":{"installs":2300,"stars":142,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-04-17","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":8},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0c4a0d0898da/replicate-run-models.mp4","w":720,"h":620,"duration":5,"blur":"data:image/webp;base64,UklGRrwBAABXRUJQVlA4ILABAACQCACdASogABwAPtFOpUuoI6OhsBgMAQAaCWYAnTLPKs3Nbcu7VZQDpBNOmeDDTTQ/JEPHp53L6J1dJONejBla6v7WLCFOMfAABay8AAD9ofqBI86Rtw1kcBclIgxaGPbtzcDsp+Y4ZND/QwzSBOcFUSGY3ZwDSs5BYn1V7E2MFZeEFgyiOFgsJ08NVInKQVyiPOhacONdXHbtCazLlSJq8BloShGtWeCvm6GH9BTQIIVN9z5MNfE6ihr10bRj3HoYuRDwj+R8Cix1/V6ut8SO2Bb9fN46dTnEMvbDm1gCXyVucSdtm1+nxhruDL+mPlr90b62VxoX0o8UZLBJanZxSsujdVdtl3NCqrrf00IC7YmWubNpaQjDqDlGkRmblb5oF2mNBQ1/mloes6ZuRzO4H1aYOBlte63TzdsZAfo3rkcGtFDRQPVwmBv3SdE3h/FO502NhVjhq1UCym/De5fR2uhZMeghOP3FuZgNZ7NZH8KdbxuryoP4vkEind/b7UsPkVlFvnHkSJVJPXWbmQRyFIA9H8jPVw3yhzVSnEM7UmFiE1A8y0cwcqTBBB/AAAA=","source":"https://replicate.com/_content/assets/wan-videos-grid.b4BveUTr.mp4","page":"https://replicate.com/blog/wan-21-generate-videos-with-an-api","credit":"Replicate","rights":"publisher-site","note":"Grid of six Wan 2.1 videos generated through Replicate's API, from the 'Wan2.1: generate videos with an API' post","bytes":342116,"addedAt":"2026-10-27"}},{"id":"elevenlabs/dubbing","slug":"elevenlabs-dubbing","name":"ElevenLabs Dubbing","skillName":"dubbing","type":"skill","status":"live","stream":"vendors","category":"dubbing","tags":["dubbing","localization","video","translation","audio"],"summary":"Dub video and audio into other languages while keeping each original speaker's voice.","description":"Dubs audio and video into other languages with the ElevenLabs Dubbing API (`dubbing_v2`), preserving the original speakers' voices. It walks through creating a project from a file or URL, waiting for transcription, adding target languages, downloading the dub, and reviewing or correcting transcripts and translations before regenerating.","useWhen":["Localizing a video into other languages","Translating a podcast or recording","Fixing a dub's transcript or translation"],"publisher":{"name":"ElevenLabs","handle":"elevenlabs","url":"https://elevenlabs.io","avatar":"https://github.com/elevenlabs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/elevenlabs/skills/tree/main/dubbing","repo":"elevenlabs/skills","path":"dubbing","license":"MIT"},"install":{"claude-code":"npx skills add elevenlabs/skills --skill dubbing -a claude-code","codex":"npx skills add elevenlabs/skills --skill dubbing -a codex","cursor":"npx skills add elevenlabs/skills --skill dubbing -a cursor","gemini-cli":"npx skills add elevenlabs/skills --skill dubbing -a gemini-cli","openclaw":"npx skills add elevenlabs/skills --skill dubbing -a openclaw"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"requires":["ElevenLabs API key (ELEVENLABS_API_KEY)"],"cost":{"note":"Billed in ElevenLabs credits"},"files":["SKILL.md","references/api-reference.md","references/installation.md"],"stats":{"installs":4200,"stars":510,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"wave","hue":45},"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/5126f538d077/elevenlabs-dubbing.mp3","duration":15,"peaks":[0.49,0.37,0.67,0.56,0.36,0.58,0.48,0.54,0.52,0.25,0.93,0.85,0.88,0.58,0.56,0.75,0.56,0.73,0.73,0.79,0.57,0.63,0.92,0.84,0.5,0.31,0.67,1,0.78,0.81,0.81,0.8,0.91,0.77,0.8,0.92,0.52,0.7,0.68,0.52,0.51,0.59,0.4,0.66,0.48,0.89,0.65,0.59,0.49,0.56,0.43,0.84,0.85,0.27,0.29,0.84,0.66,0.6,0.55,0.61,0.56,0.56,0.59,0.39],"source":"https://eleven-public-cdn.elevenlabs.io/payloadcms/v3kpdhsl5u.mp3","page":"https://elevenlabs.io/dubbing","credit":"ElevenLabs","rights":"publisher-site","note":"Spanish dubbed track from the 'Automatic voice cloning' example on ElevenLabs' Dubbing page — the English original re-spoken in Spanish in a clone of the speaker's voice; 0.4-15.4 s","bytes":181037,"addedAt":"2026-10-27"}},{"id":"elevenlabs/music","slug":"elevenlabs-music","name":"ElevenLabs Music","skillName":"music","type":"skill","status":"live","stream":"vendors","category":"ai-music","tags":["audio","songs","instrumental","jingle","music"],"summary":"Compose songs, instrumentals, jingles and background tracks from a prompt or a section-by-section plan.","description":"Generates music with the ElevenLabs Music API (`music_v2_5`): prompt-based tracks, songs with lyrics, jingles and background beds. Composition plans give section-level control, and the skill also covers music fine-tunes, video-to-music, editing chunks in place, inpainting and streaming.","useWhen":["A background track or jingle for a video","A song with lyrics","Music that follows a video's cut"],"publisher":{"name":"ElevenLabs","handle":"elevenlabs","url":"https://elevenlabs.io","avatar":"https://github.com/elevenlabs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/elevenlabs/skills/tree/main/music","repo":"elevenlabs/skills","path":"music","license":"MIT"},"install":{"claude-code":"npx skills add elevenlabs/skills --skill music -a claude-code","codex":"npx skills add elevenlabs/skills --skill music -a codex","cursor":"npx skills add elevenlabs/skills --skill music -a cursor","gemini-cli":"npx skills add elevenlabs/skills --skill music -a gemini-cli","openclaw":"npx skills add elevenlabs/skills --skill music -a openclaw"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["eleven_music_v2_5"],"requires":["ElevenLabs API key (ELEVENLABS_API_KEY)"],"cost":{"note":"Billed in ElevenLabs credits"},"files":["SKILL.md","references/api_reference.md","references/installation.md"],"stats":{"installs":11000,"stars":510,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"karaoke","hue":45},"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/de1f19f6d496/elevenlabs-music.mp3","duration":15,"peaks":[0.42,0.65,0.48,0.77,0.66,0.62,0.54,0.7,0.54,0.71,0.58,0.61,0.52,0.71,0.62,0.59,0.62,0.6,0.56,0.72,0.55,0.6,0.71,0.53,0.62,0.76,1,0.57,0.74,0.57,0.6,0.56,0.89,0.54,0.51,0.7,0.67,0.6,0.79,0.5,0.21,0.68,0.55,0.56,0.63,0.68,0.62,0.74,0.54,0.42,0.37,0.64,0.64,0.54,0.61,0.58,0.47,0.79,0.47,0.57,0.74,0.49,0.61,0.6],"source":"https://storage.googleapis.com/eleven-public-cdn/documentation_assets/audio/music-eleven-outta-ten.mp3","page":"https://elevenlabs.io/docs/overview/capabilities/music","credit":"ElevenLabs","rights":"publisher-site","note":"'Eleven Outta Ten' — the Eleven Music sample on ElevenLabs' Music docs page; 8-23 s","bytes":181015,"addedAt":"2026-10-27"}},{"id":"elevenlabs/sound-effects","slug":"elevenlabs-sound-effects","name":"ElevenLabs Sound Effects","skillName":"sound-effects","type":"skill","status":"live","stream":"vendors","category":"sfx","tags":["sfx","foley","ambience","loops","audio"],"summary":"Generate sound effects and ambiences from a text description, including seamless loops.","description":"Generates sound effects from text with ElevenLabs (`eleven_text_to_sound_v2`): cinematic impacts, UI sounds, textures and ambiences. Parameters cover looping, duration and prompt influence, and the skill adds prompt tips and output formats.","useWhen":["Whooshes, impacts or UI sounds for an edit","A looping ambience bed","Any non-speech audio"],"publisher":{"name":"ElevenLabs","handle":"elevenlabs","url":"https://elevenlabs.io","avatar":"https://github.com/elevenlabs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/elevenlabs/skills/tree/main/sound-effects","repo":"elevenlabs/skills","path":"sound-effects","license":"MIT"},"install":{"claude-code":"npx skills add elevenlabs/skills --skill sound-effects -a claude-code","codex":"npx skills add elevenlabs/skills --skill sound-effects -a codex","cursor":"npx skills add elevenlabs/skills --skill sound-effects -a cursor","gemini-cli":"npx skills add elevenlabs/skills --skill sound-effects -a gemini-cli","openclaw":"npx skills add elevenlabs/skills --skill sound-effects -a openclaw"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["eleven_text_to_sound_v2"],"requires":["ElevenLabs API key (ELEVENLABS_API_KEY)"],"cost":{"note":"Billed in ElevenLabs credits"},"files":["SKILL.md","references/installation.md"],"stats":{"installs":11600,"stars":510,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"wave","hue":45},"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/8caef6128d55/elevenlabs-sound-effects.mp3","duration":8,"peaks":[0,0.01,0.04,0.1,0.49,1,0.9,0.93,0.89,0.75,0.85,0.83,0.81,0.73,0.71,0.76,0.85,0.74,0.83,0.82,0.87,0.71,0.73,0.81,0.83,0.79,0.87,0.76,0.76,0.73,0.9,0.78,0.69,0.77,0.71,0.83,0.71,0.71,0.65,0.64,0.51,0.63,0.46,0.5,0.45,0.53,0.42,0.27,0.3,0.26,0.2,0.16,0.13,0.15,0.12,0.08,0.09,0.08,0.07,0.05,0.04,0.05,0.04,0.03],"source":"https://storage.googleapis.com/eleven-public-cdn/documentation_assets/audio/sfx-cinematic-braam.mp3","page":"https://elevenlabs.io/docs/overview/capabilities/sound-effects","credit":"ElevenLabs","rights":"publisher-site","note":"'Cinematic braam' — the generated sound-effect example on ElevenLabs' Sound Effects docs page; 0-8 s (hit and decay)","bytes":97006,"addedAt":"2026-10-27"}},{"id":"elevenlabs/speech-to-text","slug":"elevenlabs-speech-to-text","name":"ElevenLabs Speech to Text","skillName":"speech-to-text","type":"skill","status":"live","stream":"vendors","category":"captions","tags":["audio","transcription","subtitles","diarization"],"summary":"Transcribe audio and video with word timestamps, speaker labels and keyterms, ready for subtitles.","description":"Transcribes audio and video with ElevenLabs Scribe v2, with word-level timestamps, speaker diarization, multichannel audio, keyterm prompting and language detection. It also covers real-time streaming from a server or a React client, including commit strategies and event types.","useWhen":["Generating subtitles for a video","Transcribing interviews or meetings","Word timings for captions or lip-sync"],"publisher":{"name":"ElevenLabs","handle":"elevenlabs","url":"https://elevenlabs.io","avatar":"https://github.com/elevenlabs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/elevenlabs/skills/tree/main/speech-to-text","repo":"elevenlabs/skills","path":"speech-to-text","license":"MIT"},"install":{"claude-code":"npx skills add elevenlabs/skills --skill speech-to-text -a claude-code","codex":"npx skills add elevenlabs/skills --skill speech-to-text -a codex","cursor":"npx skills add elevenlabs/skills --skill speech-to-text -a cursor","gemini-cli":"npx skills add elevenlabs/skills --skill speech-to-text -a gemini-cli","openclaw":"npx skills add elevenlabs/skills --skill speech-to-text -a openclaw"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["scribe_v2"],"requires":["ElevenLabs API key (ELEVENLABS_API_KEY)"],"cost":{"note":"Billed in ElevenLabs credits"},"files":["SKILL.md","references/installation.md","references/realtime-client-side.md","references/realtime-commit-strategies.md","references/realtime-events.md","references/realtime-server-side.md","references/transcription-options.md"],"stats":{"installs":11900,"stars":510,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"karaoke","hue":45},"adds":"api","media":{"type":"none","reason":"Speech to Text outputs text (transcripts with timestamps and speaker labels), not media; ElevenLabs only publishes the input interview recordings it transcribes and a Scribe cover graphic, neither of which shows the output","searched":["github.com/elevenlabs/skills speech-to-text (SKILL.md, references)","elevenlabs.io/docs/overview/capabilities/speech-to-text","elevenlabs.io/speech-to-text product page"],"addedAt":"2026-10-27"}},{"id":"elevenlabs/text-to-speech","slug":"elevenlabs-text-to-speech","name":"ElevenLabs Text to Speech","skillName":"text-to-speech","type":"skill","status":"live","stream":"vendors","category":"audio","tags":["voiceover","tts","voices","streaming"],"summary":"Turn scripts into natural voiceover in 90+ languages with ElevenLabs voices, streaming and stitching.","description":"Converts text to speech with ElevenLabs from Python, JavaScript or the CLI, starting with model choice: Eleven v4 and v4 Turbo, v3, Multilingual v2 or Flash. It covers voice IDs and settings, language selection, text normalization, audio effects, request stitching for long scripts, output formats, streaming and cost tracking.","useWhen":["A voiceover for a video","Narration in another language","Adding speech to an app"],"publisher":{"name":"ElevenLabs","handle":"elevenlabs","url":"https://elevenlabs.io","avatar":"https://github.com/elevenlabs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/elevenlabs/skills/tree/main/text-to-speech","repo":"elevenlabs/skills","path":"text-to-speech","license":"MIT"},"install":{"claude-code":"npx skills add elevenlabs/skills --skill text-to-speech -a claude-code","codex":"npx skills add elevenlabs/skills --skill text-to-speech -a codex","cursor":"npx skills add elevenlabs/skills --skill text-to-speech -a cursor","gemini-cli":"npx skills add elevenlabs/skills --skill text-to-speech -a gemini-cli","openclaw":"npx skills add elevenlabs/skills --skill text-to-speech -a openclaw"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["eleven_v4","eleven_v4_turbo","eleven_v3","eleven_multilingual_v2","eleven_flash_v2_5"],"requires":["ElevenLabs API key (ELEVENLABS_API_KEY)"],"cost":{"note":"Billed in ElevenLabs credits"},"files":["SKILL.md","references/installation.md","references/streaming.md","references/voice-settings.md"],"stats":{"installs":16900,"stars":510,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-18","addedAt":"2026-10-26","preview":{"kind":"wave","hue":45,"text":"Hello"},"featured":true,"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/93c5f4b65bdc/elevenlabs-text-to-speech.mp3","duration":14.4,"peaks":[0.74,0.94,0.54,0.75,0.72,0.13,0.43,0.58,0.63,1,0.11,0,0.01,0.92,0.78,0.99,0.35,0.74,0.61,0.28,0.54,1,0.5,0.04,0.08,0.83,0.45,0.63,0.57,0.54,0.49,0.63,0.5,0.39,0.31,0.59,0.61,0,0,0.73,0.58,0.7,0.88,0.97,0.46,0.69,0.62,0.97,0.91,0.89,0.72,0.63,0.87,0.55,0.12,0.67,0.7,0.7,0.86,0.72,0.53,0.64,0.49,0.17],"source":"https://storage.googleapis.com/eleven-public-cdn/audio/marketing/george.mp3","page":"https://elevenlabs.io/docs/overview/capabilities/text-to-speech","credit":"ElevenLabs","rights":"publisher-site","note":"'George' — the Text to Speech sample on ElevenLabs' TTS docs page; 4.7-19.1 s","bytes":173806,"addedAt":"2026-10-27"}},{"id":"elevenlabs/voice-changer","slug":"elevenlabs-voice-changer","name":"ElevenLabs Voice Changer","skillName":"voice-changer","type":"skill","status":"live","stream":"vendors","category":"audio","tags":["speech-to-speech","voice","narration"],"summary":"Re-voice a recording in a different voice while keeping its emotion, timing and delivery.","description":"Speech-to-speech conversion with the ElevenLabs Voice Changer (`eleven_multilingual_sts_v2`, `eleven_english_sts_v2`) that keeps the emotion, timing and delivery of the source. It covers swapping the narrator of an existing recording, converting from a URL, overriding voice settings, cleaning noisy sources first and getting deterministic output.","useWhen":["Changing the narrator of a recording","Re-voicing a voiceover in a brand voice","Performance-driven character voices"],"publisher":{"name":"ElevenLabs","handle":"elevenlabs","url":"https://elevenlabs.io","avatar":"https://github.com/elevenlabs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/elevenlabs/skills/tree/main/voice-changer","repo":"elevenlabs/skills","path":"voice-changer","license":"MIT"},"install":{"claude-code":"npx skills add elevenlabs/skills --skill voice-changer -a claude-code","codex":"npx skills add elevenlabs/skills --skill voice-changer -a codex","cursor":"npx skills add elevenlabs/skills --skill voice-changer -a cursor","gemini-cli":"npx skills add elevenlabs/skills --skill voice-changer -a gemini-cli","openclaw":"npx skills add elevenlabs/skills --skill voice-changer -a openclaw"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["eleven_multilingual_sts_v2","eleven_english_sts_v2"],"requires":["ElevenLabs API key (ELEVENLABS_API_KEY)"],"cost":{"note":"Billed in ElevenLabs credits"},"files":["SKILL.md","references/installation.md"],"stats":{"installs":6600,"stars":510,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-18","addedAt":"2026-10-26","preview":{"kind":"wave","hue":45},"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/0ef0fa88f6b4/elevenlabs-voice-changer.mp3","duration":15,"peaks":[0.87,0.73,0.69,0.5,0.41,0.32,0.37,0.23,0.01,0.71,0.92,0.33,0.72,0.37,0.3,0.67,0.55,0.38,0.38,0.42,0.11,0.01,0.62,0.65,0.68,0.44,0.43,0.53,0.43,0.52,0.55,0.37,0.28,0.18,0,0,0.55,1,0.54,0.5,0.13,0.49,0.55,0.73,0.62,0.52,0.42,0.28,0.01,0.01,0.37,0.46,0.46,0,0.68,0.57,0.38,0.3,0.62,0.43,0.39,0.32,0.58,0.58],"source":"https://eleven-public-cdn.elevenlabs.io/payloadcms/oevpzg5s04.mp3","page":"https://elevenlabs.io/voice-changer","credit":"ElevenLabs","rights":"publisher-site","note":"'Changed voice' result of the Audiobook voiceover demo on ElevenLabs' Voice Changer page (an original narration re-voiced, keeping its delivery); 0.4-15.4 s","bytes":181015,"addedAt":"2026-10-27"}},{"id":"elevenlabs/voice-isolator","slug":"elevenlabs-voice-isolator","name":"ElevenLabs Voice Isolator","skillName":"voice-isolator","type":"skill","status":"live","stream":"vendors","category":"sfx","tags":["denoise","cleanup","dialogue","audio"],"summary":"Strip background noise and music from dialogue to get clean, isolated speech.","description":"Removes background noise and isolates speech with the ElevenLabs Voice Isolator API: cleaning noisy recordings, removing music or ambience from dialogue, isolating speech from field recordings and preparing audio for transcription. Input can be a file, a URL or low-latency PCM.","useWhen":["Cleaning up a noisy interview or vlog","Removing music under dialogue","Preparing audio for transcription"],"publisher":{"name":"ElevenLabs","handle":"elevenlabs","url":"https://elevenlabs.io","avatar":"https://github.com/elevenlabs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/elevenlabs/skills/tree/main/voice-isolator","repo":"elevenlabs/skills","path":"voice-isolator","license":"MIT"},"install":{"claude-code":"npx skills add elevenlabs/skills --skill voice-isolator -a claude-code","codex":"npx skills add elevenlabs/skills --skill voice-isolator -a codex","cursor":"npx skills add elevenlabs/skills --skill voice-isolator -a cursor","gemini-cli":"npx skills add elevenlabs/skills --skill voice-isolator -a gemini-cli","openclaw":"npx skills add elevenlabs/skills --skill voice-isolator -a openclaw"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"requires":["ElevenLabs API key (ELEVENLABS_API_KEY)"],"cost":{"note":"Billed in ElevenLabs credits"},"files":["SKILL.md","references/installation.md"],"stats":{"installs":6900,"stars":510,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-18","addedAt":"2026-10-26","preview":{"kind":"wave","hue":45},"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/e95b08cb1189/elevenlabs-voice-isolator.mp3","duration":10,"peaks":[0.07,0.23,0.24,0.86,1,0.62,0.53,0.76,0.71,0.63,0.91,0.84,0.99,0.25,0.38,0.47,0.44,0.44,0.18,0.35,0.21,0,0,0,0,0.12,0.3,0.27,0.42,0.19,0.25,0.43,0.53,0.23,0.29,0.17,0.21,0.21,0.26,0.34,0.29,0.12,0.27,0.02,0.6,0.08,0.79,0.25,0.41,0.59,0.91,0.43,0.44,0.31,0,0.12,0.59,0.29,0.16,0.47,0.5,0.38,0.06,0],"source":"https://eleven-public-cdn.elevenlabs.io/audio/voice-isolator/voice-isolator-promo-isolated.mp3","page":"https://elevenlabs.io/docs/overview/capabilities/voice-isolator","credit":"ElevenLabs","rights":"publisher-site","note":"Isolated output of the Voice Isolator demo on ElevenLabs' docs (the same recording with background noise stripped); 3-13 s","bytes":120816,"addedAt":"2026-10-27"}},{"id":"google-gemini/gemini-api-dev","slug":"gemini-api-dev","name":"Gemini API Dev","skillName":"gemini-api-dev","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["image","audio","nano-banana","tts","video","sdk"],"summary":"Write current Gemini API code, including Nano Banana image generation, Omni video and Gemini TTS.","description":"Google's skill for writing code against the Gemini API in Python and TypeScript with current models and SDKs. Beyond text, chat and agents, it names the media models to use — Nano Banana 2.1 and Nano Banana Pro for image generation and editing, Gemini 3.8 Flash TTS for speech and voice design, Omni 1.1 Flash for video — and carries migration notes for each.","useWhen":["Generating or editing images with Nano Banana in code","Adding Gemini text-to-speech or voice design","Any app code that calls the Gemini API"],"notFor":["Real-time voice apps (Google's separate gemini-live-api-dev skill)"],"publisher":{"name":"Google Gemini","handle":"google-gemini","url":"https://ai.google.dev","avatar":"https://github.com/google-gemini.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/google-gemini/gemini-skills/tree/main/skills/gemini-api-dev","repo":"google-gemini/gemini-skills","path":"skills/gemini-api-dev","license":"Apache-2.0"},"install":{"claude-code":"/plugin marketplace add google-gemini/gemini-skills\n/plugin install gemini-skills@gemini-skills","codex":"codex plugin marketplace add https://github.com/google-gemini/gemini-skills\ncodex plugin add gemini-skills@gemini-skills","cursor":"npx skills add google-gemini/gemini-skills --skill gemini-api-dev -a cursor","gemini-cli":"npx skills add google-gemini/gemini-skills --skill gemini-api-dev -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["nano_banana_2_1","nano_banana_pro","gemini_3_8_flash_tts","omni_flash_1_1"],"requires":["Gemini API key","google-genai (Python) or @google/genai (JS) SDK"],"cost":{"note":"Billed by Google (Gemini API pricing)"},"files":["SKILL.md","references/migration.md"],"stats":{"installs":25200,"stars":4344,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-13","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":228},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/42eea857cf74/gemini-api-dev.webp","w":960,"h":960,"blur":"data:image/webp;base64,UklGRk4BAABXRUJQVlA4IEIBAACwCACdASogACAAPsVSoUunpKMhsAwA8BiJZACdOUF+Acmpj2CCbO8QTIKoEdPEg1x1K0nm9jiO3CAQ98B+yI8yY1+fLES78oU/Y677MwAA/vgInx81AxRj8GeLJ6DJ74EwZ1+lx3mV/KH13dufvhnfSua3mPj03XPE2wdXt6HpTdJLMm8SZGNcgByE35LVNYlNAhke9bvGs46B8/2P1A2lwK1mdmttbrwzncWcJgyFZTWuQ31iFrmw/XKmMi+Yur03UqZV6NJ2gS4fkgL4mWt88aqbJqPeG7VFgQO9izWVMlAVunTxGmu+QdXE0lUw9Sr/T5huXYbZ1hZpKYlRyFXVfPtA5XY8KmtJNcLmg4ohVH75JS0/VVYIfG31jWSeFTl97bOTFv4P2r9So1rsOMi3Z3f3Yntvyyo8vr5tOY4404AA","source":"https://storage.googleapis.com/generativeai-downloads/images/Nano%20Banana%20Pro%20outputs%20for%20docs/06-output.jpg","page":"https://ai.google.dev/gemini-api/docs/image-generation","credit":"Google","rights":"publisher-site","note":"Nano Banana output from the Gemini API image-generation docs (the API the skill writes code for): a banana-shaped perfume bottle product shot","bytes":50520,"addedAt":"2026-10-27"}},{"id":"google-gemini/gemini-omni-flash-api","slug":"gemini-omni-flash-api","name":"Gemini Omni Flash","skillName":"gemini-omni-flash-api","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["video-editing","text-to-video","image-to-video","video-extension"],"summary":"Generate and edit video with Gemini Omni 1.1 Flash: text-to-video, first/last frames, extensions, edits.","description":"Covers video generation and editing with Gemini Omni 1.1 Flash through the official `google-genai` SDK: text-to-video, image-referenced generation, first-frame and first-and-last-frame transitions, video extensions and turn-by-turn edits. Bundled Python scripts prepare and inspect source videos with ffmpeg, upload files, strip audio for full sound regeneration and run generations in parallel.","useWhen":["Editing an existing video with a prompt","Text- or image-to-video with Gemini","Extending a clip or bridging two frames"],"publisher":{"name":"Google Gemini","handle":"google-gemini","url":"https://ai.google.dev","avatar":"https://github.com/google-gemini.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/google-gemini/gemini-skills/tree/main/skills/gemini-omni-flash-api","repo":"google-gemini/gemini-skills","path":"skills/gemini-omni-flash-api","license":"Apache-2.0"},"install":{"claude-code":"/plugin marketplace add google-gemini/gemini-skills\n/plugin install gemini-skills@gemini-skills","codex":"codex plugin marketplace add https://github.com/google-gemini/gemini-skills\ncodex plugin add gemini-skills@gemini-skills","cursor":"npx skills add google-gemini/gemini-skills --skill gemini-omni-flash-api -a cursor","gemini-cli":"npx skills add google-gemini/gemini-skills --skill gemini-omni-flash-api -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["omni_flash_1_1"],"requires":["Gemini API key (GEMINI_API_KEY)","Python","FFmpeg"],"cost":{"note":"Billed by Google (Gemini API pricing)"},"files":["SKILL.md","scripts/upload_file.py","scripts/video/generate_video.py","scripts/video/inspect_video.py","scripts/video/prep_video.py"],"stats":{"installs":2000,"stars":4344,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-02","addedAt":"2026-10-26","preview":{"kind":"film","hue":228},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/97e0e1533233/gemini-omni-flash-api.mp4","w":720,"h":404,"duration":9,"blur":"data:image/webp;base64,UklGRtIAAABXRUJQVlA4IMYAAACQBQCdASogABIAPslQnkunpKKhsAwA8BkJQBOmYjWgWQ5tgJEprrIOHPHDPAwgNf3LLd0nEAD+aXTYOfNP28k57+gw8YxI4JQYxSpLpLuTcVzlHnd2wqGoaEDcy8zs2bjSvoIC74ysr3wN1wg8UQae4PYKJj46EicO6e/P7jZHuQ3JKJ3qwTvF5vFzGJ/GmH1AB9GZIULwsZQcEE6U/pWalFchhecLWE35MAnSKbq8CjTOCb3bD6T4rE+UMk6xJVX/tsAgrAA=","source":"https://storage.googleapis.com/generativeai-downloads/videos/omni_keyframe_interpolation.mp4","page":"https://ai.google.dev/gemini-api/docs/omni","credit":"Google","rights":"publisher-site","note":"First/last-frame (keyframe interpolation) example from the Gemini Omni docs: a mountain lake moving from daylight to dusk between two given frames; 0-9 s","bytes":338911,"addedAt":"2026-10-27"}},{"id":"anthropics/algorithmic-art","slug":"anthropic-algorithmic-art","name":"Algorithmic Art","skillName":"algorithmic-art","type":"skill","status":"live","stream":"vendors","category":"art-direction","tags":["generative","p5js","creative-coding","interactive"],"summary":"Create original generative art in p5.js: write an algorithmic philosophy, then code it with seeded randomness.","description":"A two-step creative process: first write an \"algorithmic philosophy\" for the piece, then express it as p5.js with seeded randomness and interactive parameter controls. The agent must start from the bundled viewer template, which separates fixed parts (layout, seed controls) from the variable algorithm, and is told to make original work rather than copy existing artists.","useWhen":["Generative or algorithmic art in p5.js","Flow fields, particles or seeded variations","An interactive art piece with parameter controls"],"notFor":["Copying an existing artist's work"],"publisher":{"name":"Anthropic","handle":"anthropics","url":"https://www.anthropic.com","avatar":"https://github.com/anthropics.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/anthropics/skills/tree/main/skills/algorithmic-art","repo":"anthropics/skills","path":"skills/algorithmic-art","license":"Apache-2.0"},"install":{"claude-code":"/plugin marketplace add anthropics/skills\n/plugin install example-skills@anthropic-agent-skills","codex":"npx skills add anthropics/skills --skill algorithmic-art -a codex","cursor":"npx skills add anthropics/skills --skill algorithmic-art -a cursor","gemini-cli":"npx skills add anthropics/skills --skill algorithmic-art -a gemini-cli"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli"],"cost":{"note":"Free — runs locally (built into paid Claude.ai plans)"},"files":["SKILL.md","LICENSE.txt","templates/generator_template.js","templates/viewer.html"],"stats":{"installs":89800,"stars":183988,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-04-20","addedAt":"2026-10-26","preview":{"kind":"generative","hue":18},"adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/8a4ae0ebb7d1/anthropic-algorithmic-art.webp","w":960,"h":777,"blur":"data:image/webp;base64,UklGRnwAAABXRUJQVlA4IHAAAABwBACdASogABoAPsVSo0unpKMhsAwA8BiJYwC06Ffv4B8W1ed7SnwWQ1HZ4AD+9wouRt6UFsocRkbG5VeZ3VP0l0vnFLZO8TIVMOxC3y+Lq0PfkgppgZviE6nV4wQtFhSnMYjF87gznIcakFNO7gAA","source":"https://video.twimg.com/amplify_video/1979368531104833536/vid/avc1/1920x1080/rJo9cOfVcQDUGDRI.mp4 (frame at 60.3 s, cropped to the art canvas)","page":"https://x.com/jasonzhou1993/status/1979369094559551678","credit":"Jason Zhou (@jasonzhou1993)","rights":"creator-post","note":"Frame from Jason Zhou's Claude Code demo: the 'Silhouette Serenity' zen-mountains p5.js piece made with the algorithmic-art skill, cropped to the art canvas (viewer controls and webcam removed)","bytes":6666,"addedAt":"2026-10-27"}},{"id":"anthropics/brand-guidelines","slug":"anthropic-brand-guidelines","name":"Brand Guidelines","skillName":"brand-guidelines","type":"skill","status":"live","stream":"vendors","category":"logos","tags":["branding","typography","colors","template","brand-motion"],"summary":"Apply Anthropic's colors and typography to any artifact; a compact template for your own brand skill.","description":"An instructions-only skill that applies Anthropic's brand palette, typography and accent rules to artifacts, with smart font application and color usage notes. It is a compact model for writing a brand-guidelines skill for your own company.","useWhen":["Styling an artifact in Anthropic's brand","A starting point for your own brand skill"],"notFor":["Other brands without rewriting it first"],"publisher":{"name":"Anthropic","handle":"anthropics","url":"https://www.anthropic.com","avatar":"https://github.com/anthropics.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/anthropics/skills/tree/main/skills/brand-guidelines","repo":"anthropics/skills","path":"skills/brand-guidelines","license":"Apache-2.0"},"install":{"claude-code":"/plugin marketplace add anthropics/skills\n/plugin install example-skills@anthropic-agent-skills","codex":"npx skills add anthropics/skills --skill brand-guidelines -a codex","cursor":"npx skills add anthropics/skills --skill brand-guidelines -a cursor","gemini-cli":"npx skills add anthropics/skills --skill brand-guidelines -a gemini-cli"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli"],"cost":{"note":"Free — runs locally (built into paid Claude.ai plans)"},"files":["SKILL.md","LICENSE.txt"],"stats":{"installs":110500,"stars":183988,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-04-20","addedAt":"2026-10-26","preview":{"kind":"cards","hue":18},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/24b58f90da95/anthropic-brand-guidelines.mp4","w":720,"h":404,"duration":6,"blur":"data:image/webp;base64,UklGRqQAAABXRUJQVlA4IJgAAADQBACdASogABIAPtFapE0oJSMiMBgIAQAaCUAWHYHpBmhk4SoiHhMvQNG3r1OlTAD+7UxT/+uvNkKVAmc67PzcLXtUXF8i7uwXdQ6CBFIQATJhHJYQZhqloyGvQl2OkPgJe9y4IS5S1p7XlRZ8oVjBdM3d20Tyadzdr4kMrC9pv+B0wCzEjGxAJsab6cFSG0fF9V4Alr4AAA==","source":"https://video.twimg.com/amplify_video/1978853350075416576/vid/avc1/1920x1080/ogeVffGCgxM2YmwV.mp4","page":"https://x.com/claudeai/status/1978855432123723909","credit":"Anthropic (Claude)","rights":"publisher-site","note":"Segment of Anthropic's Skills launch video: a company brand-guidelines skill applied to a pitch deck Claude generated (title, character and world slides in the brand's palette and type); 34.8-40.8 s","bytes":76571,"addedAt":"2026-10-27"}},{"id":"anthropics/canvas-design","slug":"anthropic-canvas-design","name":"Canvas Design","skillName":"canvas-design","type":"skill","status":"live","stream":"vendors","category":"art-direction","tags":["poster","typography","design","image"],"summary":"Design posters and visual art as PNG or PDF from a written design philosophy, with 54 bundled fonts.","description":"Produces original static visual art and posters as `.png` or `.pdf`: the agent first writes a visual philosophy, then composes the canvas, and a mandatory final pass refines rather than adds. It ships 54 open-licensed (OFL) fonts so typography renders consistently, and supports multi-page output.","useWhen":["A poster, cover or art print","Typographic or abstract visual art","A multi-page visual piece as PDF"],"notFor":["Copying an existing artist's work"],"publisher":{"name":"Anthropic","handle":"anthropics","url":"https://www.anthropic.com","avatar":"https://github.com/anthropics.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/anthropics/skills/tree/main/skills/canvas-design","repo":"anthropics/skills","path":"skills/canvas-design","license":"Apache-2.0"},"install":{"claude-code":"/plugin marketplace add anthropics/skills\n/plugin install example-skills@anthropic-agent-skills","codex":"npx skills add anthropics/skills --skill canvas-design -a codex","cursor":"npx skills add anthropics/skills --skill canvas-design -a cursor","gemini-cli":"npx skills add anthropics/skills --skill canvas-design -a gemini-cli"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli"],"cost":{"note":"Free — runs locally (built into paid Claude.ai plans)"},"files":["SKILL.md","canvas-fonts/ArsenalSC-OFL.txt","canvas-fonts/ArsenalSC-Regular.ttf","canvas-fonts/BigShoulders-Bold.ttf","canvas-fonts/BigShoulders-OFL.txt","canvas-fonts/BigShoulders-Regular.ttf","canvas-fonts/Boldonse-OFL.txt","canvas-fonts/Boldonse-Regular.ttf","canvas-fonts/BricolageGrotesque-Bold.ttf","canvas-fonts/BricolageGrotesque-OFL.txt","canvas-fonts/BricolageGrotesque-Regular.ttf","canvas-fonts/CrimsonPro-Bold.ttf","canvas-fonts/CrimsonPro-Italic.ttf","canvas-fonts/CrimsonPro-OFL.txt","canvas-fonts/CrimsonPro-Regular.ttf","canvas-fonts/DMMono-OFL.txt","canvas-fonts/DMMono-Regular.ttf","canvas-fonts/EricaOne-OFL.txt","canvas-fonts/EricaOne-Regular.ttf","canvas-fonts/GeistMono-Bold.ttf","canvas-fonts/GeistMono-OFL.txt","canvas-fonts/GeistMono-Regular.ttf","canvas-fonts/Gloock-OFL.txt","canvas-fonts/Gloock-Regular.ttf","canvas-fonts/IBMPlexMono-Bold.ttf","canvas-fonts/IBMPlexMono-OFL.txt","canvas-fonts/IBMPlexMono-Regular.ttf","canvas-fonts/IBMPlexSerif-Bold.ttf","canvas-fonts/IBMPlexSerif-BoldItalic.ttf","canvas-fonts/IBMPlexSerif-Italic.ttf","canvas-fonts/IBMPlexSerif-Regular.ttf","canvas-fonts/InstrumentSans-Bold.ttf","canvas-fonts/InstrumentSans-BoldItalic.ttf","canvas-fonts/InstrumentSans-Italic.ttf","canvas-fonts/InstrumentSans-OFL.txt","canvas-fonts/InstrumentSans-Regular.ttf","canvas-fonts/InstrumentSerif-Italic.ttf","canvas-fonts/InstrumentSerif-Regular.ttf","canvas-fonts/Italiana-OFL.txt","canvas-fonts/Italiana-Regular.ttf","canvas-fonts/JetBrainsMono-Bold.ttf","canvas-fonts/JetBrainsMono-OFL.txt","canvas-fonts/JetBrainsMono-Regular.ttf","canvas-fonts/Jura-Light.ttf","canvas-fonts/Jura-Medium.ttf","canvas-fonts/Jura-OFL.txt","canvas-fonts/LibreBaskerville-OFL.txt","canvas-fonts/LibreBaskerville-Regular.ttf","canvas-fonts/Lora-Bold.ttf","canvas-fonts/Lora-BoldItalic.ttf","canvas-fonts/Lora-Italic.ttf","canvas-fonts/Lora-OFL.txt","canvas-fonts/Lora-Regular.ttf","canvas-fonts/NationalPark-Bold.ttf","canvas-fonts/NationalPark-OFL.txt","canvas-fonts/NationalPark-Regular.ttf","canvas-fonts/NothingYouCouldDo-OFL.txt","canvas-fonts/NothingYouCouldDo-Regular.ttf","canvas-fonts/Outfit-Bold.ttf","canvas-fonts/Outfit-OFL.txt","canvas-fonts/Outfit-Regular.ttf","canvas-fonts/PixelifySans-Medium.ttf","canvas-fonts/PixelifySans-OFL.txt","canvas-fonts/PoiretOne-OFL.txt","canvas-fonts/PoiretOne-Regular.ttf","canvas-fonts/RedHatMono-Bold.ttf","canvas-fonts/RedHatMono-OFL.txt","canvas-fonts/RedHatMono-Regular.ttf","canvas-fonts/Silkscreen-OFL.txt","canvas-fonts/Silkscreen-Regular.ttf","canvas-fonts/SmoochSans-Medium.ttf","canvas-fonts/SmoochSans-OFL.txt","canvas-fonts/Tektur-Medium.ttf","canvas-fonts/Tektur-OFL.txt","canvas-fonts/Tektur-Regular.ttf","canvas-fonts/WorkSans-Bold.ttf","canvas-fonts/WorkSans-BoldItalic.ttf","canvas-fonts/WorkSans-Italic.ttf","canvas-fonts/WorkSans-OFL.txt","canvas-fonts/WorkSans-Regular.ttf","canvas-fonts/YoungSerif-OFL.txt","canvas-fonts/YoungSerif-Regular.ttf","LICENSE.txt"],"stats":{"installs":122700,"stars":183988,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-04-20","addedAt":"2026-10-26","preview":{"kind":"collage","hue":18},"featured":true,"adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/42a78defb7e9/anthropic-canvas-design.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRpIAAABXRUJQVlA4IIYAAAAwBACdASogABIAPtFWpEuoJKOhsAgBABoJZQDA3CGVM2PDazFq2o3kxAAA/u1ZoUAXfHQP+ADZo3kyBRvjPEDev2w9ZXlEdh+QtaYuhClNviStMJ1iI+ysWS8A2SRb/N18z24MSm2RyurGPTklJ7D/5kKDsCIue8fAzXjrQfsDoDOM8QAAAA==","source":"https://video.twimg.com/amplify_video/1978853350075416576/vid/avc1/1920x1080/ogeVffGCgxM2YmwV.mp4 (frame at 60.8 s)","page":"https://x.com/claudeai/status/1978855432123723909","credit":"Anthropic (Claude)","rights":"publisher-site","note":"Frame (~60.8 s) from Anthropic's 'Claude can now use Skills' launch video: three 'Shelldon' concept posters Claude made with a poster-design skill that first writes a design philosophy per poster, the approach canvas-design packages","bytes":17412,"addedAt":"2026-10-27"}},{"id":"anthropics/slack-gif-creator","slug":"anthropic-slack-gif-creator","name":"Slack GIF Creator","skillName":"slack-gif-creator","type":"skill","status":"live","stream":"vendors","category":"image","tags":["gif","animation","emoji","slack"],"summary":"Make animated GIFs that pass Slack's limits: 128×128 emoji or 480×480 message GIFs, validated on export.","description":"A Python toolkit for animated GIFs built for Slack: a GIF builder, frame composer, easing functions and validators that check Slack's constraints (128×128 emoji or 480×480 message GIFs, frame rate, color count, duration). It covers drawing shapes from scratch or animating an uploaded image.","useWhen":["A custom animated Slack emoji","A small looping reaction GIF","Animating a logo or uploaded image for chat"],"publisher":{"name":"Anthropic","handle":"anthropics","url":"https://www.anthropic.com","avatar":"https://github.com/anthropics.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/anthropics/skills/tree/main/skills/slack-gif-creator","repo":"anthropics/skills","path":"skills/slack-gif-creator","license":"Apache-2.0"},"install":{"claude-code":"/plugin marketplace add anthropics/skills\n/plugin install example-skills@anthropic-agent-skills","codex":"npx skills add anthropics/skills --skill slack-gif-creator -a codex","cursor":"npx skills add anthropics/skills --skill slack-gif-creator -a cursor","gemini-cli":"npx skills add anthropics/skills --skill slack-gif-creator -a gemini-cli"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli"],"requires":["Python 3","Pillow"],"cost":{"note":"Free — runs locally (built into paid Claude.ai plans)"},"files":["SKILL.md","core/easing.py","core/frame_composer.py","core/gif_builder.py","core/validators.py","LICENSE.txt","requirements.txt"],"stats":{"installs":75900,"stars":183988,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-04-20","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":18,"text":"GIF"},"adds":"visual","media":{"type":"none","reason":"No clean example GIF found: Anthropic's repo and posts show none, a YouTube walkthrough shows only text slides, and the one creator demo GIF ('Daily standup time!!') renders its emoji as empty boxes, which would misrepresent the skill","searched":["github.com/anthropics/skills skills/slack-gif-creator (folder, README)","anthropic.com/news/skills","anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills","support.claude.com skills articles","x.com/claudeai launch video","X search 'slack-gif-creator'","youtube.com/watch?v=92zdJ63fLIs","x.com/jasonzhou1993/status/1979369094559551678"],"addedAt":"2026-10-27"}},{"id":"anthropics/theme-factory","slug":"anthropic-theme-factory","name":"Theme Factory","skillName":"theme-factory","type":"skill","status":"live","stream":"vendors","category":"color","tags":["theme","palette","typography","slides"],"summary":"Restyle slides, docs and pages with one of 10 matched color-and-font themes, or generate a new one.","description":"Applies a consistent theme to any artifact — slides, documents, reports, HTML pages — from 10 presets such as Arctic Frost, Midnight Galaxy and Sunset Boulevard, each a palette with matching fonts, shown in a bundled showcase PDF. It can also create a new theme on the spot.","useWhen":["Giving a deck or page a cohesive look","Picking a palette and font pairing quickly"],"publisher":{"name":"Anthropic","handle":"anthropics","url":"https://www.anthropic.com","avatar":"https://github.com/anthropics.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/anthropics/skills/tree/main/skills/theme-factory","repo":"anthropics/skills","path":"skills/theme-factory","license":"Apache-2.0"},"install":{"claude-code":"/plugin marketplace add anthropics/skills\n/plugin install example-skills@anthropic-agent-skills","codex":"npx skills add anthropics/skills --skill theme-factory -a codex","cursor":"npx skills add anthropics/skills --skill theme-factory -a cursor","gemini-cli":"npx skills add anthropics/skills --skill theme-factory -a gemini-cli"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli"],"cost":{"note":"Free — runs locally (built into paid Claude.ai plans)"},"files":["SKILL.md","LICENSE.txt","theme-showcase.pdf","themes/arctic-frost.md","themes/botanical-garden.md","themes/desert-rose.md","themes/forest-canopy.md","themes/golden-hour.md","themes/midnight-galaxy.md","themes/modern-minimalist.md","themes/ocean-depths.md","themes/sunset-boulevard.md","themes/tech-innovation.md"],"stats":{"installs":95800,"stars":183988,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-04-20","addedAt":"2026-10-26","preview":{"kind":"lut","hue":18},"adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/eae222b31e99/anthropic-theme-factory.webp","w":960,"h":534,"blur":"data:image/webp;base64,UklGRtYAAABXRUJQVlA4IMoAAACQBACdASogABIAPtFYpEuoJSOhsAgBABoJQBWAMZyQo5wKYM2MlPX7mjy5cAAA/tYpdTi7VnI+2b41+cgvWUGYSvzf7CQebi70WtwYaDBZXucHiBJU9qCspSP6r6uNZDtpjI4HIkQeDMTluMzABQ6dhhIMAA0hZ7YZBXhh32iCP69AUvHuwYvFOvXuBAWv5tatWysvnUDIXc+q7FSiApSQWoxt/62hT5r3+8JYO+Zp90NzHw/+OO/OyqpwFAaTt+JsfGgWAGSgyMAA","source":"https://raw.githubusercontent.com/anthropics/skills/main/skills/theme-factory/theme-showcase.pdf (pages 1, 2, 5, 8, 9, 10; top halves arranged 3x2)","page":"https://github.com/anthropics/skills/blob/main/skills/theme-factory/theme-showcase.pdf","credit":"Anthropic","rights":"publisher-repo","note":"Six of the ten theme cards (Ocean Depths, Sunset Boulevard, Golden Hour, Tech Innovation, Botanical Garden, Midnight Galaxy) rendered from theme-showcase.pdf in the skill's own folder, top halves arranged as a grid","bytes":40460,"addedAt":"2026-10-27"}},{"id":"pixijs/pixijs","slug":"pixijs","name":"PixiJS","skillName":"pixijs","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["webgl","webgpu","2d","canvas","shaders"],"summary":"Build fast 2D WebGL/WebGPU graphics with PixiJS v8; routes each task to the right PixiJS skill.","description":"The entry point to PixiJS's official v8 skill set. It routes any PixiJS task — application setup, the scene graph (sprites, graphics, text, meshes, particles, GIFs), rendering, filters, blend modes, custom shaders and performance — to the matching specialized skill, and falls back to the canonical docs.","useWhen":["Any PixiJS v8 task","2D canvas, WebGL or WebGPU graphics in the browser","Animated scenes, games or generative visuals in 2D"],"publisher":{"name":"PixiJS","handle":"pixijs","url":"https://pixijs.com","avatar":"https://github.com/pixijs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/pixijs/pixijs-skills/tree/main/skills/pixijs","repo":"pixijs/pixijs-skills","path":"skills/pixijs","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs -a claude-code","codex":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs -a codex","cursor":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs -a cursor","gemini-cli":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["PixiJS v8"],"cost":{"note":"Free — open-source library (MIT)"},"files":["SKILL.md","references/index.md"],"stats":{"installs":6900,"stars":358,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-01","addedAt":"2026-10-26","preview":{"kind":"shader","hue":335},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/158c4a89005b/pixijs.mp4","w":720,"h":448,"duration":10,"blur":"data:image/webp;base64,UklGRugAAABXRUJQVlA4INwAAACwBQCdASogABQAPtFcpE0oJSOiMBgIAQAaCWgAtukgIL4lA3V4Zjkpeah6aHskT17J7cYeX8AA/vaQPeJfwZSaChC8cGp2i1ehte0ZTGPra7XNwewiqTk4AiAfr5OSmVPWfD+CEEIuuUW+zI9Hg84hC6ENQEB3MUj3lsba5m02p1cYPaEgjPGJx8EntzU55MY8i9OG1mZ+Zo0n7Ku1zt3PVThFrA24+nvEPpBeJnt7Usthwa2GUjnBkDHK566Z56bzf+7kyNMswjhL9o9Y4IpKt0rhLxLyQAW+/vgA","source":"https://video.twimg.com/amplify_video/2047013082267086848/vid/avc1/1158x720/u3-bDA-dCvimqK8c.mp4?tag=14","page":"https://x.com/PixiJS/status/2047013163900764508","credit":"PixiJS (@PixiJS)","rights":"creator-post","note":"PixiJS Skills launch post ('vibe code a game this weekend'): a neon runner game rendered in PixiJS with glow and glitch effects","bytes":311230,"addedAt":"2026-10-27"}},{"id":"pixijs/pixijs-blend-modes","slug":"pixijs-blend-modes","name":"PixiJS Blend Modes","skillName":"pixijs-blend-modes","type":"skill","status":"live","stream":"vendors","category":"shaders","tags":["compositing","color","overlay"],"summary":"Composite PixiJS v8 layers with add, multiply and screen, or advanced modes like overlay and color-burn.","description":"Compositing display objects with blend modes in PixiJS v8: standard modes (normal, add, multiply, screen, erase, min, max) and advanced modes from `pixi.js/advanced-blend-modes` (color-burn, overlay, hard-light and more). It explains batch-friendly ordering and fixes back-buffer and high-DPI pitfalls.","useWhen":["Light, glow or overlay compositing","Photoshop-style blend modes in a canvas scene"],"publisher":{"name":"PixiJS","handle":"pixijs","url":"https://pixijs.com","avatar":"https://github.com/pixijs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/pixijs/pixijs-skills/tree/main/skills/pixijs-blend-modes","repo":"pixijs/pixijs-skills","path":"skills/pixijs-blend-modes","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-blend-modes -a claude-code","codex":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-blend-modes -a codex","cursor":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-blend-modes -a cursor","gemini-cli":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-blend-modes -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["PixiJS v8"],"cost":{"note":"Free — open-source library (MIT)"},"files":["SKILL.md"],"stats":{"installs":5700,"stars":358,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-06-04","addedAt":"2026-10-26","preview":{"kind":"lut","hue":335},"adds":"tool","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/a6e821523bf5/pixijs-blend-modes.webp","w":960,"h":384,"blur":"data:image/webp;base64,UklGRlIBAABXRUJQVlA4IEYBAAAQBgCdASogAAwAAsBMJbACdMoRwIsB2IG6gdYB6AHla/sd8EH7X+kg5f6zw7uIlutFgHCLIpY36AAA/vjfvk+cex5mjapXkKZhc09xPdLKfB2Fu2bMWtv57FfWvPWOlp7IQfbP1I4A53vsuVRsD2IdlNFkJv95iwNDRLe+6zqhOp5XaQt/m0lt/8apmZcW/Xey1fjBCv9rUdxh9czLVC0/zhOqfdbl/NwYqyOtovE59+Gw6TlyD2KjRH/rtQ7gH+VpzlI++DL2Tu5e7TJGeLCDOBq9nJaAGVGOXj2sxbHm0hfDRLzYCcY8r7w0nS52GdSj8pOwRcKTWMErbDLI8KhoI4UpYTp6NvwVfulwj7PTiyFK83Mf+QzN+vCrJVCECmI/W+A6f/c9lrhSBWfAO2taTj7uunX89H4bzuW3kn4veNCNIwAAAA==","source":"https://pixijs.com/assets/blog/blend-modes.png","page":"https://pixijs.com/blog/pixi-v8-launches","credit":"PixiJS","rights":"publisher-site","note":"PixiJS v8 launch blog: the same sprite composited over a gradient with ten different blend modes","bytes":54036,"addedAt":"2026-10-27"}},{"id":"pixijs/pixijs-custom-rendering","slug":"pixijs-custom-rendering","name":"PixiJS Custom Rendering","skillName":"pixijs-custom-rendering","type":"skill","status":"live","stream":"vendors","category":"shaders","tags":["glsl","wgsl","uniforms","webgpu"],"summary":"Write custom shaders, uniforms and batchers for PixiJS v8 that run on both WebGL and WebGPU.","description":"Low-level PixiJS v8 rendering: dual-renderer shaders for WebGL and WebGPU, typed uniform groups and UBO mode, textures as shader resources, custom filters, advanced GPU features and extension-based custom batchers. It flags the critical v8 API mistakes, such as the old `Shader.from` signature.","useWhen":["Writing a custom shader for PixiJS","Animating uniforms at runtime","A custom batcher or draw path"],"publisher":{"name":"PixiJS","handle":"pixijs","url":"https://pixijs.com","avatar":"https://github.com/pixijs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/pixijs/pixijs-skills/tree/main/skills/pixijs-custom-rendering","repo":"pixijs/pixijs-skills","path":"skills/pixijs-custom-rendering","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-custom-rendering -a claude-code","codex":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-custom-rendering -a codex","cursor":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-custom-rendering -a cursor","gemini-cli":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-custom-rendering -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["PixiJS v8"],"cost":{"note":"Free — open-source library (MIT)"},"files":["SKILL.md","references/advanced-gpu.md","references/uniform-types.md"],"stats":{"installs":5800,"stars":358,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-01","addedAt":"2026-10-26","preview":{"kind":"shader","hue":335},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/42db30e14079/pixijs-custom-rendering.mp4","w":720,"h":448,"duration":10.3,"blur":"data:image/webp;base64,UklGRvYAAABXRUJQVlA4IOoAAACQBQCdASogABQAPtFYpE0oJSMiMBgIAQAaCWIAnTKDPcYgA3fOkwYbxkyb7Td/ki9eoLheAAD+yrP4XP0NBcOQhxcEWfTFrNAvzPpuYaOwo8ttRiFTLdWM/YkYGi+sogAzKeqFwJKOoDEL+5HWr+47Nu0TFTcg7g+1QOqIKecERzqDq9HGU1wZTWQaTRzBPy2oiv+g3g0QByHPumEb5tACY1u13ru19RtOXvXXVJwMeiKFU8OKuGfujJto6VuVF30Hb3R6YXPStzOEDYb3dRvazoVyqCO1NABegbNxaguj0KfTOcEG/6zAgAA=","source":"https://video.twimg.com/amplify_video/2050275311510863872/vid/avc1/1156x720/1UIQxRABdxuQhj_f.mp4?tag=14","page":"https://x.com/PixiJS/status/2050275368255598985","credit":"PixiJS (@PixiJS)","rights":"creator-post","note":"HTML-in-canvas page transition made with GSAP and the PixiJS Skills: a custom WebGL/WebGPU shader breaks the page into pixels on the way to the next one","bytes":235186,"addedAt":"2026-10-27"}},{"id":"pixijs/pixijs-filters","slug":"pixijs-filters","name":"PixiJS Filters","skillName":"pixijs-filters","type":"skill","status":"live","stream":"vendors","category":"shaders","tags":["glsl","wgsl","blur","effects"],"summary":"Add blur, displacement, color-matrix and custom GLSL/WGSL filters to PixiJS v8 scenes without killing FPS.","description":"Applies visual effects through PixiJS v8's filter pipeline: built-in filters (alpha, blur, color matrix, displacement, noise), custom `Filter.from()` with GLSL or WGSL, and the community pixi-filters package. It also covers filter options, `filterArea` optimization and the common v7-to-v8 mistakes.","useWhen":["Blur, glow, displacement or color effects","A custom GLSL or WGSL filter","Effects that are hurting frame rate"],"publisher":{"name":"PixiJS","handle":"pixijs","url":"https://pixijs.com","avatar":"https://github.com/pixijs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/pixijs/pixijs-skills/tree/main/skills/pixijs-filters","repo":"pixijs/pixijs-skills","path":"skills/pixijs-filters","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-filters -a claude-code","codex":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-filters -a codex","cursor":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-filters -a cursor","gemini-cli":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-filters -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["PixiJS v8"],"cost":{"note":"Free — open-source library (MIT)"},"files":["SKILL.md"],"stats":{"installs":5800,"stars":358,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-06-04","addedAt":"2026-10-26","preview":{"kind":"shader","hue":335},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/100d8d95da6e/pixijs-filters.mp4","w":720,"h":404,"duration":9,"blur":"data:image/webp;base64,UklGRq4AAABXRUJQVlA4IKIAAACwBACdASogABIAPsVOokunpCMhsAwA8BiJYgDImYyK33oacfmdKudg5w86a7PYAP70Ll7ntAJi0422/xZT9D9092JPeVrYaoksdJhj7ubK334diN90MEPTqhqBBO1E/u7yD2zP1WSM4vmNXMMyN3UjMofcvnvLYJY5FgoNXrwmCMoYpkr5vn+//HVEzxf5nO3yJ/mVknQwqdvjcbczibjEcAA=","source":"https://video.twimg.com/amplify_video/2033619820185587716/vid/avc1/1280x720/eTDV2ALQRY_chEQu.mp4?tag=14","page":"https://x.com/PixiJS/status/2033619880545817003","credit":"PixiJS (@PixiJS)","rights":"creator-post","note":"v8.17 release video: legacy vs optimized BlurFilter, blur strength animating over a scene of shapes","bytes":136010,"addedAt":"2026-10-27"}},{"id":"pixijs/pixijs-scene-gif","slug":"pixijs-gif","name":"PixiJS GIFs","skillName":"pixijs-scene-gif","type":"skill","status":"live","stream":"vendors","category":"image","tags":["gif","animation","playback"],"summary":"Load, play and control animated GIFs inside a PixiJS v8 scene.","description":"Displays animated GIFs in PixiJS v8 through the `pixi.js/gif` import, loading a `GifSource` and playing it with `GifSprite`. It covers playback control, autoplay and looping, frame callbacks, manual update mode, sharing source data between sprites and releasing memory on destroy.","useWhen":["Playing an animated GIF in a canvas scene","Syncing GIF frames to other animation"],"publisher":{"name":"PixiJS","handle":"pixijs","url":"https://pixijs.com","avatar":"https://github.com/pixijs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/pixijs/pixijs-skills/tree/main/skills/pixijs-scene-gif","repo":"pixijs/pixijs-skills","path":"skills/pixijs-scene-gif","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-gif -a claude-code","codex":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-gif -a codex","cursor":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-gif -a cursor","gemini-cli":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-gif -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["PixiJS v8"],"cost":{"note":"Free — open-source library (MIT)"},"files":["SKILL.md"],"stats":{"installs":5600,"stars":358,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-04-16","addedAt":"2026-10-26","preview":{"kind":"grid","hue":335},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f6bba94214dd/pixijs-gif.mp4","w":720,"h":404,"duration":5.1,"blur":"data:image/webp;base64,UklGRo4AAABXRUJQVlA4IIIAAACQBACdASogABIAPtFao0yoJSMiMBgIAQAaCWoAsR9kBGnQIIUuK8EH3ICfPyAA+daGZrJRrT3a/ottmdfSz7l9jr9ScTNRun/xaHeifzfGVd+tAIjFh0LX5mc0FzDUt2VingMsJFgHSj0XfEa2pYwgo9VSaLs/Pz9NQ9ZcQAI7QAAA","source":"https://pixijs.com/examples/previews/sprite_gif_animation_loading.webp","page":"https://pixijs.com/8.x/examples?example=sprite_gif_animation_loading","credit":"PixiJS (pixijs.com examples)","rights":"publisher-site","note":"Official 'GIF animation loading' example preview: an animated GIF loaded and played as a sprite in a PixiJS scene (converted from https://pixijs.com/examples/previews/sprite_gif_animation_loading.webp, 320x180, looped 3x)","bytes":36076,"addedAt":"2026-10-27"}},{"id":"pixijs/pixijs-scene-mesh","slug":"pixijs-meshes","name":"PixiJS Meshes","skillName":"pixijs-scene-mesh","type":"skill","status":"live","stream":"vendors","category":"shaders","tags":["mesh","deformation","2.5d"],"summary":"Deform images with custom geometry in PixiJS v8: meshes, planes, ropes and 2.5D perspective corners.","description":"Renders custom geometry in PixiJS v8 with `Mesh` and `MeshGeometry`. Variants cover `MeshSimple` for per-frame vertex animation, `MeshPlane` for subdivided deformation, `MeshRope` for textures along a path and `PerspectiveMesh` for 2.5D corner pinning.","useWhen":["Warping or waving an image","A texture that follows a path","Fake 3D perspective on a flat image"],"publisher":{"name":"PixiJS","handle":"pixijs","url":"https://pixijs.com","avatar":"https://github.com/pixijs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/pixijs/pixijs-skills/tree/main/skills/pixijs-scene-mesh","repo":"pixijs/pixijs-skills","path":"skills/pixijs-scene-mesh","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-mesh -a claude-code","codex":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-mesh -a codex","cursor":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-mesh -a cursor","gemini-cli":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-mesh -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["PixiJS v8"],"cost":{"note":"Free — open-source library (MIT)"},"files":["SKILL.md","references/mesh-perspective.md","references/mesh-plane.md","references/mesh-rope.md","references/mesh-simple.md","references/mesh.md"],"stats":{"installs":5700,"stars":358,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-04-16","addedAt":"2026-10-26","preview":{"kind":"shader","hue":335},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ec5251191d2b/pixijs-meshes.mp4","w":720,"h":404,"duration":6.5,"blur":"data:image/webp;base64,UklGRswAAABXRUJQVlA4IMAAAAAwBQCdASogABIAPr1OnkunJCKht/qoAOAXiWIAw0X/4DwTuy1HDPKQXKPXHcIK8VrNsAD+9ooQnSXobKrBcbWd+B7oKd8SlIxFIRg1n81FGmu0uGG54Wje2W4NJWXclbCNXGlFKQUvUWb10Mm6zcODAkDcILxBmY4+Zc1Pts/4fZ9GQkFPOR+IF9IzHtxGG4IOPqoO5F/kJ49aWSB6JvJRM0jfI81ZzK3CEbM0X5Eu3Ccn7bQkX4Rv8NsgNoIAAAA=","source":"https://video.twimg.com/amplify_video/2044837738495799296/vid/avc1/1280x720/PMESN8ztT8rx8Ei6.mp4?tag=14","page":"https://x.com/PixiJS/status/2044837805973790805","credit":"PixiJS (@PixiJS)","rights":"creator-post","note":"v8.18 release video, 'MeshRope width' segment: one texture bent along waving rope meshes of three thicknesses","bytes":130750,"addedAt":"2026-10-27"}},{"id":"pixijs/pixijs-scene-particle-container","slug":"pixijs-particles","name":"PixiJS Particles","skillName":"pixijs-scene-particle-container","type":"skill","status":"live","stream":"vendors","category":"shaders","tags":["particles","performance","effects"],"summary":"Render thousands of lightweight particles in PixiJS v8 with ParticleContainer and dynamic properties.","description":"Uses PixiJS v8's `ParticleContainer` and `Particle` to draw thousands of lightweight sprites. It covers creating and pre-populating particles, dynamic versus static properties and `update()`, batch operations, texture and shader options, fading or tinting a whole system, and the container's limitations.","useWhen":["Confetti, sparks, snow or dust effects","Thousands of moving sprites at once"],"publisher":{"name":"PixiJS","handle":"pixijs","url":"https://pixijs.com","avatar":"https://github.com/pixijs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/pixijs/pixijs-skills/tree/main/skills/pixijs-scene-particle-container","repo":"pixijs/pixijs-skills","path":"skills/pixijs-scene-particle-container","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-particle-container -a claude-code","codex":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-particle-container -a codex","cursor":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-particle-container -a cursor","gemini-cli":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-particle-container -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["PixiJS v8"],"cost":{"note":"Free — open-source library (MIT)"},"files":["SKILL.md"],"stats":{"installs":5800,"stars":358,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-17","addedAt":"2026-10-26","preview":{"kind":"generative","hue":335},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/74cf869786db/pixijs-particles.mp4","w":720,"h":404,"duration":4.1,"blur":"data:image/webp;base64,UklGRhoBAABXRUJQVlA4IA4BAAAwBwCdASogABIAPtFapU0oJSOiMBgIAQAaCWgAnR/CP2egDCgNMaOwGsC4cjA7SuvBPgQN8ZPjzoSmgx/u7ss5E1gA/tySPgn3C6zzMIl6RaLTakz5y38i3qrw3J/ndRQXmeZ0sIYZrbO+JWnXJY/Ic0wSmDsGNZFBAo6K/ol9XN0lPUfjQMWvUCRvhwSsaySqSB9oT3/EYkDzuCvz/H132ATofClBkatU0+T3kbv6nsMwYF/qUgh6s71ffAvowBskc4ntliO4Qqhbk/1ZNJnlxhjXgg+AHisScsJrDIyV7LLdCYdeggdJ0vQjCZTTaRXZfV8KmZWJZFMTM2hoLKpdRgLaD5OBdGCl3AAAAAA=","source":"https://pixijs.com/examples/previews/particle-container_basic.webp","page":"https://pixijs.com/8.x/examples?example=particle-container_basic","credit":"PixiJS (pixijs.com examples)","rights":"publisher-site","note":"Official ParticleContainer example preview: thousands of tinted sprites swarming in one container (converted from https://pixijs.com/examples/previews/particle-container_basic.webp, 320x180)","bytes":334780,"addedAt":"2026-10-27"}},{"id":"pixijs/pixijs-scene-text","slug":"pixijs-scene-text","name":"PixiJS Text","skillName":"pixijs-scene-text","type":"skill","status":"live","stream":"vendors","category":"kinetic-type","tags":["text","bitmap-text","split-text","typography"],"summary":"Render and animate text in PixiJS v8: canvas Text, BitmapText, HTMLText and per-character SplitText.","description":"Covers every way to draw text in PixiJS v8: canvas-quality `Text`, cheap per-frame `BitmapText`, `HTMLText` for HTML and CSS markup, and `SplitText` / `SplitBitmapText` for per-character animation. It compares their update costs and lists the mistakes that tank performance.","useWhen":["Animated or kinetic text in a canvas scene","Per-character text effects","Frequently updating counters or labels"],"publisher":{"name":"PixiJS","handle":"pixijs","url":"https://pixijs.com","avatar":"https://github.com/pixijs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/pixijs/pixijs-skills/tree/main/skills/pixijs-scene-text","repo":"pixijs/pixijs-skills","path":"skills/pixijs-scene-text","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-text -a claude-code","codex":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-text -a codex","cursor":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-text -a cursor","gemini-cli":"npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-text -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["PixiJS v8"],"cost":{"note":"Free — open-source library (MIT)"},"files":["SKILL.md","references/bitmap-text.md","references/html-text.md","references/split-bitmap-text.md","references/split-text.md","references/text.md"],"stats":{"installs":5800,"stars":358,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-17","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":335,"text":"PIXI"},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/190ed784f3c4/pixijs-scene-text.mp4","w":720,"h":404,"duration":5.1,"blur":"data:image/webp;base64,UklGRpwAAABXRUJQVlA4IJAAAACQBACdASogABIAPtFcqE4oJSQiKAqpABoJYwAALnhcTdFCgx1VD7yJroVu7wAA/vKqq3/DoqbgFZFkwvEF2BWQiCloOj2aa/uAIS2vVtOv78VqSD+qyY1j/6S6eGbonMSJLlhlgmFaPX+mHnYw1nFlWJMiCZ+aT3Wq9AGyPexzICvwz6Cl8311u5m2nfiQAAA=","source":"https://video.twimg.com/amplify_video/1938160812658724866/vid/avc1/1280x720/LrYGr5L_bBSNme4b.mp4?tag=14","page":"https://x.com/PixiJS/status/1938160865754419585","credit":"PixiJS (@PixiJS)","rights":"creator-post","note":"SplitText announcement: 'Text Splitting / Launching with v8.11.0' assembles character by character, then the letters scatter","bytes":103174,"addedAt":"2026-10-27"}},{"id":"motiondivision/motion","slug":"motion-ai-kit","name":"Motion AI Kit","skillName":"motion","type":"skill","status":"live","stream":"vendors","category":"animation","tags":["ui-animation","react","css","springs","performance","brand-motion"],"summary":"Write production-grade UI animation with Motion or CSS: best practices, docs search, springs, perf audits.","description":"Motion's official skill for Motion (formerly Framer Motion) and CSS animation: hand-written best practices for vanilla JS, React, Vue, Base UI and Radix, search across Motion's docs and examples, CSS `linear()` spring generation, inserting Motion components, upgrades and a visual transition editor. With Motion+ it also runs MotionScore code and runtime performance audits with Performance Doctor fixes.","useWhen":["Animating a UI with Motion, framer-motion or CSS","Generating CSS springs with linear()","Fixing janky or slow animations"],"notFor":["Rendering video files (use HyperFrames or Remotion)"],"publisher":{"name":"Motion","handle":"motiondivision","url":"https://motion.dev","avatar":"https://github.com/motiondivision.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/motiondivision/ai-kit/tree/main/plugins/motion/skills/motion","repo":"motiondivision/ai-kit","path":"plugins/motion/skills/motion","license":"MIT"},"install":{"claude-code":"npx motion-ai","codex":"npx motion-ai","gemini-cli":"npx motion-ai","cursor":"npx skills add motiondivision/ai-kit --skill motion -a cursor"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Motion (motion, motion/react or framer-motion)","Motion MCP server (free, set up by npx motion-ai)"],"cost":{"note":"Free; MotionScore audits need Motion+ (paid)"},"files":["SKILL.md","best-practices/base-ui.md","best-practices/css-or-motion.md","best-practices/index.md","best-practices/motion.md","best-practices/react.md","best-practices/vue.md","codex/index.md","css-spring/index.md","insert/index.md","performance-audit/index.md","transition-preview/index.md"],"stats":{"installs":771,"stars":63,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":58,"text":"spring"},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/4d6ef8ae7622/motion-ai-kit.mp4","w":720,"h":406,"duration":3.8,"blur":"data:image/webp;base64,UklGRmIAAABXRUJQVlA4IFYAAACwAwCdASogABIAPtFWpkwoJKOiKA1RABoJZwC7ABlPvP26JCQgAAD+8CKKEz2hpxpBvcalh1osWsBDRMb5FQlXrR4RyVSFmv2tmwkBDrtvOtqfAAAAAA==","source":"https://images.motion.dev/docs/KO5dnHOUSNGb9S73p1J7nLhoFI.gif","page":"https://motion.dev/docs/ai-kit","credit":"Motion (motion.dev)","rights":"publisher-site","note":"From the AI Kit docs 'Transition editing' section: dragging a bezier easing curve updates the transition code while a live preview animates","bytes":30667,"addedAt":"2026-10-27"}},{"id":"melies-co/melies","slug":"melies","name":"Melies","skillName":"melies","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["image","video","posters","thumbnails","characters"],"summary":"Generate images, video, movie posters and thumbnails from the terminal with 148 AI actors and style flags.","description":"The SKILL.md that ships with the Melies CLI: generate images, videos, movie posters and YouTube thumbnails by choosing from 148 built-in AI actors and 98 visual styles through flags (`--actor`, `--art-style`, `--lighting`, `--mood`) instead of writing prompts. It covers text-to-image, text-to-video, an image-to-video pipeline, upscaling and background removal, `--dry-run` cost previews and credit checks, with JSON output for agents.","useWhen":["A movie poster or YouTube thumbnail","Recurring AI actors across images and video","Image-to-video in one command"],"publisher":{"name":"Melies","handle":"melies-co","url":"https://melies.co","avatar":"https://github.com/melies-co.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/melies-co/melies-cli","repo":"melies-co/melies-cli","license":"MIT"},"install":{"claude-code":"npx skills add melies-co/melies-cli -a claude-code","codex":"npx skills add melies-co/melies-cli -a codex","cursor":"npx skills add melies-co/melies-cli -a cursor","gemini-cli":"npx skills add melies-co/melies-cli -a gemini-cli","openclaw":"npx skills add melies-co/melies-cli -a openclaw"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"models":["flux_pro","flux_schnell","kling_v3","veo_3_1"],"requires":["Melies account (MELIES_TOKEN)","melies CLI (npm install -g melies)"],"cost":{"note":"Billed in Melies credits"},"files":["SKILL.md"],"stats":{"stars":5,"source":"GitHub","asOf":"2026-10-26"},"version":"2.0.0","updatedAt":"2026-03-20","addedAt":"2026-10-26","preview":{"kind":"film","hue":35},"legal":"MIT per package.json and the README; the LICENSE file the README links to is missing from the repo.","adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/c777c6dd6ba7/melies.webp","w":960,"h":590,"blur":"data:image/webp;base64,UklGRk4BAABXRUJQVlA4IEIBAABQBgCdASogABQAPtFUo0uoJKMhsAgBABoJZAC/8vAdgQYErM7qEDLRwZkKlPCN/SqghQq/PI+9ACpOAAD2vftdRImgv1OE5Q/QD3tjdTIp9shiaBTaEdtTgi1RjO7g6tQoTQmmnaQPsNQqFyUNvT7/NzXPeiIzeY0WShoKevU/VjmBIYR0nWxaiv2IqwnMin8fb2Eo0XjRK6SUrGhnE9dB8B3oFcPJ1OtBqxzLml53cqI5exwty0dPjb9hohgTBTBxC+GKsXGOpF8YL1c3jg/1FsSxkO8ewCVzxtiQJN1JudS+0NTxgq494HHT+8pQ7c9yNkd1N/Yg1oPLKP6oqcGH55h20BXfT76ykRHdW+vnrruItk5Ttb26c7cUCuyw5nSs6TjvClDXjDk92h2Yp/yT/9fx29XQMvOg+53WIIpHIAAA","source":"https://melies.co/img/tool/ai-movie-poster.webp","page":"https://melies.co/ai-movie-poster-generator","credit":"Melies","rights":"publisher-site","note":"Gallery of movie posters generated with Melies (Matchday, Vows, Summit, Long Way Home, Dry County…) from its AI Movie Poster Generator page — the poster mode the CLI exposes","bytes":84840,"addedAt":"2026-10-27"}},{"id":"inference-sh/ai-product-photography","slug":"inference-sh-ai-product-photography","name":"AI Product Photography","skillName":"ai-product-photography","type":"skill","status":"live","stream":"vendors","category":"product","tags":["product","lifestyle","mockups","ecommerce"],"summary":"Generate commercial product shots, lifestyle scenes and mockups with FLUX, Imagen 3, Grok and Seedream.","description":"Professional AI product photography through inference.sh: studio lighting, lifestyle scenes and mockups with FLUX, Imagen 3, Grok and Seedream. Background removal and upscaling steps make the images e-commerce-ready.","useWhen":["Product shots without a photoshoot","Lifestyle scenes or mockups for a store"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/photo/ai-product-photography","repo":"inference-sh/skills","path":"guides/photo/ai-product-photography","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill ai-product-photography -a claude-code","codex":"npx skills add inference-sh/skills --skill ai-product-photography -a codex","cursor":"npx skills add inference-sh/skills --skill ai-product-photography -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill ai-product-photography -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_dev","imagen-3","grok_imagine_image","seedream","birefnet","topaz"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"grid","hue":190},"adds":"visual","media":{"type":"none","reason":"Prompting/workflow guide (AI product shots via FLUX, Seedream and others); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/photo/ai-product-photography (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/product-photography","slug":"inference-sh-product-photography","name":"Product Photography","skillName":"product-photography","type":"skill","status":"live","stream":"vendors","category":"product","tags":["packshot","lighting","ecommerce"],"summary":"Apply packshot conventions to AI product photos: angles, backgrounds, shadows, hero shots, store specs.","description":"A product photography guide for AI generation: camera angles, backgrounds, shadow types, hero and lifestyle shots and e-commerce image requirements. It includes inference.sh commands to produce and upscale the shots.","useWhen":["Packshots that follow e-commerce rules","Planning a set of product angles"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/photo/product-photography","repo":"inference-sh/skills","path":"guides/photo/product-photography","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill product-photography -a claude-code","codex":"npx skills add inference-sh/skills --skill product-photography -a codex","cursor":"npx skills add inference-sh/skills --skill product-photography -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill product-photography -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_dev","seedream","topaz"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":11,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-03","addedAt":"2026-10-26","preview":{"kind":"grid","hue":190},"adds":"visual","media":{"type":"none","reason":"Prompting/workflow guide (product photo direction with Seedream 4.5 and FLUX); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/photo/product-photography (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/ai-marketing-videos","slug":"inference-sh-ai-marketing-videos","name":"AI Marketing Videos","skillName":"ai-marketing-videos","type":"skill","status":"live","stream":"vendors","category":"ads","tags":["promo","product-demo","testimonial","launch"],"summary":"Make product demos, promos, testimonials and launch videos with Veo, Seedance, Wan, FLUX and Kokoro.","description":"Creates marketing videos — ads, promos, product launches, product demos, testimonials, explainers and brand content — through inference.sh. Veo, Seedance and Wan supply the footage, FLUX the visuals and Kokoro the voiceover.","useWhen":["A promo or launch video","A product demo or testimonial ad"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/video/ai-marketing-videos","repo":"inference-sh/skills","path":"guides/video/ai-marketing-videos","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill ai-marketing-videos -a claude-code","codex":"npx skills add inference-sh/skills --skill ai-marketing-videos -a codex","cursor":"npx skills add inference-sh/skills --skill ai-marketing-videos -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill ai-marketing-videos -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["veo_3_1","seedance_2","wan_2_5","flux_dev","kokoro"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"cards","hue":190},"adds":"visual","media":{"type":"none","reason":"Prompting/workflow guide (marketing video workflow on Veo, TTS and merging); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/video/ai-marketing-videos (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/explainer-video-guide","slug":"inference-sh-explainer-video-guide","name":"Explainer Video Guide","skillName":"explainer-video-guide","type":"skill","status":"live","stream":"vendors","category":"explainers","tags":["script","pacing","voiceover"],"summary":"Plan explainer videos end to end: script formulas, pacing, scene planning, voiceover and assembly.","description":"An explainer video production guide: script formulas, pacing rules, scene planning, voiceover and visuals. It shows how to assemble them with a multi-tool pipeline on inference.sh for product demos and how-it-works videos.","useWhen":["A product or how-it-works explainer","Writing an explainer script"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/video/explainer-video-guide","repo":"inference-sh/skills","path":"guides/video/explainer-video-guide","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill explainer-video-guide -a claude-code","codex":"npx skills add inference-sh/skills --skill explainer-video-guide -a codex","cursor":"npx skills add inference-sh/skills --skill explainer-video-guide -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill explainer-video-guide -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["veo_3_1_fast","seedance_2","flux_dev","dia-tts"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"cards","hue":190},"adds":"tool","media":{"type":"none","reason":"Prompting/workflow guide (explainer video structure and pipeline); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/video/explainer-video-guide (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/storyboard-creation","slug":"inference-sh-storyboard-creation","name":"Storyboard Creation","skillName":"storyboard-creation","type":"skill","status":"live","stream":"vendors","category":"camera","tags":["storyboard","shot-list","continuity"],"summary":"Storyboard a video before generating: shot types, angles, moves, the 180-degree rule, annotated panels.","description":"Film and video storyboarding: shot vocabulary, camera angles and movement, continuity rules including the 180-degree rule, panel layout and annotation format. FLUX draws the panels through inference.sh.","useWhen":["Planning shots before generating video","A storyboard for a client or team"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/video/storyboard-creation","repo":"inference-sh/skills","path":"guides/video/storyboard-creation","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill storyboard-creation -a claude-code","codex":"npx skills add inference-sh/skills --skill storyboard-creation -a codex","cursor":"npx skills add inference-sh/skills --skill storyboard-creation -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill storyboard-creation -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_dev"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":11,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-03","addedAt":"2026-10-26","preview":{"kind":"grid","hue":190},"adds":"tool","media":{"type":"none","reason":"Prompting/workflow guide (storyboard frames with FLUX and image stitching); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/video/storyboard-creation (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/talking-head-production","slug":"inference-sh-talking-head-production","name":"Talking Head Production","skillName":"talking-head-production","type":"skill","status":"live","stream":"vendors","category":"talking-head","tags":["avatar","lip-sync","voiceover"],"summary":"Produce talking-head videos with AI avatars, lip-sync and voiceover, from portrait specs to final cut.","description":"Talking-head production with AI avatars, lip-sync and voiceover on inference.sh. It recommends P-Video-Avatar (fastest and cheapest, built-in TTS), also covers OmniHuman, PixVerse and Fabric, and spells out portrait requirements and audio preparation.","useWhen":["A presenter or spokesperson video","Choosing an avatar and lip-sync model"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/video/talking-head-production","repo":"inference-sh/skills","path":"guides/video/talking-head-production","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill talking-head-production -a claude-code","codex":"npx skills add inference-sh/skills --skill talking-head-production -a codex","cursor":"npx skills add inference-sh/skills --skill talking-head-production -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill talking-head-production -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["p-video-avatar","omnihuman_v1_5","kokoro"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"avatar","hue":190},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/14ca1501855a/inference-sh-talking-head-production.mp4","w":720,"h":396,"duration":6.8,"blur":"data:image/webp;base64,UklGRu4AAABXRUJQVlA4IOIAAABQBgCdASogABIAPtFapU0oJSOiMBgIAQAaCUAWotAL3tu2PoAPwgrgWfOiKJ4UfCgpGb3n98qh4KzZAAD+9Zrd2+LudceYI/6NE++qN7xCQ9NF2t4XcZmTsxLjvnf2pUuoCAEH1zwOK+7yKTQW/av034Igs1pXQ83CNxYM/luCnGUqdzmqBHZWBNgb7Ax5opnte7ci0tZKg4r1kAI3gUdGzwxEpQTm1C7CNv+Aotae5ZPvT/laVBpJb0dLZns7f4PLT88cS5GtjNaOfV5u7q2gdn3uwR22AyvlOalVQBKcmQAA","source":"https://cloud.inference.sh/t/65hmp52a/2lllvorz.mp4","page":"https://inference.sh/blog/guides/p-video-avatar-talking-head-generation","credit":"inference.sh blog (P-Video-Avatar comparison)","rights":"publisher-site","note":"Talking-head output of P-Video-Avatar (the guide's recommended model): a presenter in an office speaking to camera, from inference.sh's side-by-side vs HeyGen Avatar 4","bytes":79222,"addedAt":"2026-10-27"}},{"id":"inference-sh/video-ad-specs","slug":"inference-sh-video-ad-specs","name":"Video Ad Specs","skillName":"video-ad-specs","type":"skill","status":"live","stream":"vendors","category":"ads","tags":["tiktok","instagram","youtube","specs"],"summary":"Build video ads to each platform's exact specs: TikTok, Instagram, YouTube, Facebook and LinkedIn.","description":"Video ad creation to exact platform specs for TikTok, Instagram, YouTube, Facebook and LinkedIn: dimensions, duration limits and caption requirements. Ads follow the AIDA framework and are generated with Veo or Seedance through inference.sh.","useWhen":["Cutting one ad for several platforms","Checking ad dimensions and lengths"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/video/video-ad-specs","repo":"inference-sh/skills","path":"guides/video/video-ad-specs","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill video-ad-specs -a claude-code","codex":"npx skills add inference-sh/skills --skill video-ad-specs -a codex","cursor":"npx skills add inference-sh/skills --skill video-ad-specs -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill video-ad-specs -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["veo_3_1_fast","seedance_2"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":11,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"cards","hue":190},"adds":"tool","media":{"type":"none","reason":"Prompting/workflow guide (ad platform specs, formats and pacing); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/video/video-ad-specs (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/ai-music-generation","slug":"inference-sh-ai-music-generation","name":"AI Music Generation","skillName":"ai-music-generation","type":"skill","status":"live","stream":"vendors","category":"ai-music","tags":["music","songs","soundtrack"],"summary":"Generate songs and instrumentals with ElevenLabs Music, DiffRhythm or Tencent Song Generation.","description":"Music and song generation through inference.sh's `belt` CLI. It offers ElevenLabs Music (up to 10 minutes, commercial license), DiffRhythm for fast song generation and Tencent Song Generation.","useWhen":["A song with vocals","Background music for a video"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/audio/ai-music-generation","repo":"inference-sh/skills","path":"tools/audio/ai-music-generation","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill ai-music-generation -a claude-code","codex":"npx skills add inference-sh/skills --skill ai-music-generation -a codex","cursor":"npx skills add inference-sh/skills --skill ai-music-generation -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill ai-music-generation -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["eleven_music","diffrhythm","tencent-song-generation"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-03","addedAt":"2026-10-26","preview":{"kind":"karaoke","hue":190},"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/660a98e29c9b/inference-sh-ai-music-generation.mp3","duration":20,"peaks":[0.54,0.46,0.38,0.72,0.63,1,0.58,0.44,0.76,0.6,0.65,0.88,0.74,0.47,0.8,0.4,0.6,0.66,0.84,0.61,0.53,0.6,0.52,0.58,0.7,0.57,0.46,0.9,0.57,0.38,0.78,0.4,0.51,0.89,0.49,0.72,0.8,0.58,0.82,0.86,0.53,0.44,0.6,0.62,0.26,0.56,0.85,0.5,0.54,0.73,0.36,0.49,0.86,0.46,0.36,0.7,0.46,0.66,0.77,0.58,0.55,0.72,0.8,0.57],"source":"https://aslp-lab.github.io/DiffRhythm.github.io/raw/samples/syn/llm_demo5_rock_last_0.mp3","page":"https://aslp-lab.github.io/DiffRhythm.github.io/","credit":"ASLP Lab, NWPU (DiffRhythm demo)","rights":"publisher-site","note":"DiffRhythm (the skill's quick-start model, infsh/diffrythm) English rock demo from its official project page: a full song with vocals on LLM-written lyrics, styled from a reference clip; cut from where the vocals come in","bytes":241202,"addedAt":"2026-10-27"}},{"id":"inference-sh/ai-voice-cloning","slug":"inference-sh-ai-voice-cloning","name":"AI Voice Cloning","skillName":"ai-voice-cloning","type":"skill","status":"live","stream":"vendors","category":"audio","tags":["tts","voice","emotion"],"summary":"Generate expressive voices in 100+ languages with Inworld TTS-2, ElevenLabs and more, from one CLI.","description":"Voice generation and speech synthesis through inference.sh with Inworld TTS-2 (100+ languages, emotion and non-verbal steering), Inworld TTS 1.5 (ultra-low latency), ElevenLabs, Kokoro, Chatterbox and other models. Despite its name, the skill documents voice generation rather than a voice-cloning workflow.","useWhen":["Expressive character or narrator voices","Emotion or non-verbal cues in speech"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/audio/ai-voice-cloning","repo":"inference-sh/skills","path":"tools/audio/ai-voice-cloning","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill ai-voice-cloning -a claude-code","codex":"npx skills add inference-sh/skills --skill ai-voice-cloning -a codex","cursor":"npx skills add inference-sh/skills --skill ai-voice-cloning -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill ai-voice-cloning -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["inworld-tts-2","eleven_v3","kokoro","chatterbox"],"requires":["inference.sh account","belt CLI (`belt login`)","FFmpeg"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":7,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"wave","hue":190},"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/c84f675b22ec/inference-sh-ai-voice-cloning.mp3","duration":6.4,"peaks":[0,1,0.38,0.59,0.46,0.66,0.62,0.16,0.54,0.39,0.06,0.03,0.45,0.39,0.18,0.08,0,0,0,0,0,0,0.22,0.61,0.78,0.81,0.62,0.52,0.63,0.62,0.51,0.43,0.38,0.42,0.34,0.19,0.04,0.33,0.32,0.02,0.01,0,0,0,0,0.02,0.93,0.76,0.47,0.45,0.42,0.4,0.49,0.82,0.4,0.38,0.33,0.29,0.24,0.24,0.12,0.01,0.01,0],"source":"https://inworld.ai/audio/blog/realtime-tts-2/v5/demo/crosslingual.mp3","page":"https://inworld.ai/blog/realtime-tts-2","credit":"Inworld AI (TTS-2 demo)","rights":"publisher-site","note":"Inworld TTS-2 (the skill's lead model) demo: one voice speaking English, then Spanish, then Japanese inside a single generation, with the same speaker identity throughout","bytes":77616,"addedAt":"2026-10-27"}},{"id":"inference-sh/dialogue-audio","slug":"inference-sh-dialogue-audio","name":"Dialogue Audio","skillName":"dialogue-audio","type":"skill","status":"live","stream":"vendors","category":"audio","tags":["dialogue","multi-speaker","podcast"],"summary":"Produce multi-speaker dialogue audio with speaker tags, emotion and pacing for podcasts and explainers.","description":"Creates multi-speaker dialogue audio with ElevenLabs and Dia TTS through inference.sh. It covers speaker tags, emotion control, pacing, conversation flow and post-production for podcasts, audiobooks and explainers.","useWhen":["A two-voice conversation or interview","Audiobook or explainer dialogue"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/audio/dialogue-audio","repo":"inference-sh/skills","path":"tools/audio/dialogue-audio","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill dialogue-audio -a claude-code","codex":"npx skills add inference-sh/skills --skill dialogue-audio -a codex","cursor":"npx skills add inference-sh/skills --skill dialogue-audio -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill dialogue-audio -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["eleven_v3","dia-tts"],"requires":["inference.sh account","belt CLI (`belt login`)","FFmpeg"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"wave","hue":190},"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/5f959b6a7a2d/inference-sh-dialogue-audio.mp3","duration":8.5,"peaks":[0.84,0.84,0.74,0.99,0.46,0.7,0.89,0.61,0.68,0.05,0.88,0.55,0.2,0.06,0.1,0.44,0.34,0.45,0.4,0.26,0.44,0.23,0.23,0.1,0.21,0.73,0.09,0.68,0.22,0.25,0.42,0.35,0.34,0.22,0.46,0.5,0.22,0.44,0.33,0.21,0.08,0.01,0.62,0.48,0.29,0.01,0,0,0,0.44,0.46,0.28,0.45,0.84,1,0.82,0.58,0.82,0.79,0.72,0.63,0.58,0.58,0.43],"source":"https://v3.fal.media/files/elephant/d5lORit2npFfBykcAtyUr_tmplacfh8oa.mp3","page":"https://fal.ai/models/fal-ai/dia-tts","credit":"fal (Dia TTS example, model by Nari Labs)","rights":"publisher-site","note":"Example output on fal's Dia page (the skill's falai/dia-tts app): two speakers from one script, '[S1] Dia is an open weights text to dialogue model. [S2] You get full control over scripts and voices. [S1] Wow. Amazing. (laughs)'","bytes":102648,"addedAt":"2026-10-27"}},{"id":"inference-sh/elevenlabs-dialogue","slug":"inference-sh-elevenlabs-dialogue","name":"ElevenLabs Dialogue","skillName":"elevenlabs-dialogue","type":"skill","status":"live","stream":"vendors","category":"audio","tags":["elevenlabs","dialogue","multi-speaker"],"summary":"Generate a whole multi-voice conversation as one audio file with ElevenLabs, from a script.","description":"Runs ElevenLabs multi-speaker dialogue generation through inference.sh. A script with several voices becomes a single conversation audio file.","useWhen":["A scripted conversation in one take","Podcast-style exchanges"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/audio/elevenlabs-dialogue","repo":"inference-sh/skills","path":"tools/audio/elevenlabs-dialogue","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill elevenlabs-dialogue -a claude-code","codex":"npx skills add inference-sh/skills --skill elevenlabs-dialogue -a codex","cursor":"npx skills add inference-sh/skills --skill elevenlabs-dialogue -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill elevenlabs-dialogue -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["inference.sh account","belt CLI (`belt login`)","FFmpeg"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"wave","hue":190},"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/af080259a781/inference-sh-elevenlabs-dialogue.mp3","duration":22.5,"peaks":[0,0.85,0.64,0.62,0.64,0.78,0.6,0.68,0.5,0.26,0.61,0.59,0.6,0.72,0.76,0.67,0.76,0.54,0.75,0.73,0.59,0.85,0.75,0.64,0.13,0.72,0.67,0.59,0.74,0.69,0.58,0.71,0.78,1,0.84,0.7,0.73,0.7,0.75,0.63,0.55,0.49,0.72,0.61,0.54,0.57,0.84,0.73,0.01,0.71,0.84,0.77,0.65,0.61,0.49,0.77,0.53,0.54,0.62,0.58,0.65,0.62,0.59,0.18],"source":"https://eleven-public-cdn.elevenlabs.io/payloadcms/a1c36nr6yk.mp3","page":"https://elevenlabs.io/blog/eleven-v3-audio-tags-bringing-multi-character-dialogue-to-life","credit":"ElevenLabs (Eleven v3 dialogue sample)","rights":"publisher-site","note":"Two-voice Eleven v3 dialogue (the model behind text-to-dialogue) with overlaps and interruptions: 'So, I was thinking we could—' 'Test our new timing features.' 'Exactly! How did you—' 'Know what you were thinking? Lucky guess.'","bytes":270864,"addedAt":"2026-10-27"}},{"id":"inference-sh/elevenlabs-dubbing","slug":"inference-sh-elevenlabs-dubbing","name":"ElevenLabs Dubbing (inference.sh)","skillName":"elevenlabs-dubbing","type":"skill","status":"live","stream":"vendors","category":"dubbing","tags":["elevenlabs","dubbing","localization","audio"],"summary":"Dub audio or video into 29 languages while keeping the speaker's voice, via inference.sh.","description":"Runs ElevenLabs automatic dubbing through inference.sh for audio and video. It detects speakers and translates into 29 languages while preserving each speaker's voice.","useWhen":["Localizing a video","Translating a podcast with the same voices"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/audio/elevenlabs-dubbing","repo":"inference-sh/skills","path":"tools/audio/elevenlabs-dubbing","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill elevenlabs-dubbing -a claude-code","codex":"npx skills add inference-sh/skills --skill elevenlabs-dubbing -a codex","cursor":"npx skills add inference-sh/skills --skill elevenlabs-dubbing -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill elevenlabs-dubbing -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-17","addedAt":"2026-10-26","preview":{"kind":"wave","hue":190},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/23b6476cc76e/inference-sh-elevenlabs-dubbing.mp4","w":720,"h":404,"duration":12,"blur":"data:image/webp;base64,UklGRj4BAABXRUJQVlA4IDIBAADQBgCdASogABIAPtFUo0uoJKMhsAgBABoJbACdMoSA/0II7KAEc6uAdYQxWHWlEIOYbGsSxVbwbmqJcSrI+AAA/uWuSb4LXszfbYLGlN4rHf8rpSOvLXLP6DBDd860fmr82A44FTiwxKJduIqzhew6saRZ7VunOx4eLHolgJ4oPM5beB8XJy36gB/dTUaOaLdPXrowzFlUBuQHaeI/1/BIveRYfG2NCMF4KLrzBVoi6TLidQUhspknlcY7qFivq1oSzmQTAYX8OmnvigGOjkQ6KviCCXK930A+T9KXtV/z9zMYldlTHIOQNVkuyK7xDHGeo9ExNl98F4sBQFSy36UTp3ecKsvFe6lnOJ4DgrqDm2mVueqbzGBmdYRt+UR6r54kxbwzviPfNwckJ0luikwAAAA=","source":"https://eleven-public-cdn.elevenlabs.io/payloadcms/video-derived/6a183fc818f4e5ceb9488b41/h264_720.mp4","page":"https://elevenlabs.io/blog/introducing-dubbing-v2","credit":"ElevenLabs (Dubbing v2 launch video)","rights":"publisher-site","note":"From ElevenLabs' Dubbing v2 launch video: one animated clip played as the Original, then its Japanese and French dubs (language pill at the bottom). The card is silent; the dubbed voices are in the source","bytes":359278,"addedAt":"2026-10-27"}},{"id":"inference-sh/elevenlabs-music","slug":"inference-sh-elevenlabs-music","name":"ElevenLabs Music (inference.sh)","skillName":"elevenlabs-music","type":"skill","status":"live","stream":"vendors","category":"ai-music","tags":["elevenlabs","music","soundtrack"],"summary":"Compose royalty-free tracks up to 10 minutes from a text prompt with ElevenLabs Music, via inference.sh.","description":"Runs ElevenLabs music generation through inference.sh, with genre, mood and instrument control and durations up to 10 minutes. Output is royalty-free for commercial use, aimed at background music, soundtracks, jingles and video scores.","useWhen":["Background music or a jingle","A soundtrack for a video or game"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/audio/elevenlabs-music","repo":"inference-sh/skills","path":"tools/audio/elevenlabs-music","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill elevenlabs-music -a claude-code","codex":"npx skills add inference-sh/skills --skill elevenlabs-music -a codex","cursor":"npx skills add inference-sh/skills --skill elevenlabs-music -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill elevenlabs-music -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["eleven_music"],"requires":["inference.sh account","belt CLI (`belt login`)","FFmpeg"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"karaoke","hue":190},"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/b16021101eed/inference-sh-elevenlabs-music.mp3","duration":20,"peaks":[0.86,0.89,0.89,0.8,0.74,0.97,0.86,0.92,0.91,0.61,1,0.91,0.77,0.47,0.72,0.57,0.6,0.57,0.59,0.98,0.67,0.91,0.94,0.77,0.8,0.96,0.68,0.89,0.92,0.74,0.94,0.96,0.7,0.89,0.94,0.8,0.92,0.71,0.93,0.92,0.62,0.92,0.83,0.69,0.82,0.83,0.68,0.9,0.85,0.73,0.92,0.85,0.63,0.92,0.83,0.75,0.99,0.77,0.9,0.87,0.82,0.95,0.92,0.75],"source":"https://eleven-public-cdn.elevenlabs.io/payloadcms/sibznlb97fj.mp3","page":"https://elevenlabs.io/music","credit":"ElevenLabs (Eleven Music sample)","rights":"publisher-site","note":"'Questa Notte Starlight' from ElevenLabs' music page: glossy Italo disco with live bass, guitar chops, analog synths and Italian/English vocals, generated from a text prompt; 20 s cut from after the intro","bytes":241202,"addedAt":"2026-10-27"}},{"id":"inference-sh/elevenlabs-sound-effects","slug":"inference-sh-elevenlabs-sound-effects","name":"ElevenLabs Sound Effects (inference.sh)","skillName":"elevenlabs-sound-effects","type":"skill","status":"live","stream":"vendors","category":"sfx","tags":["elevenlabs","sfx","foley","audio"],"summary":"Generate royalty-free sound effects from text with ElevenLabs, via inference.sh.","description":"Runs ElevenLabs text-to-sound-effect generation through inference.sh with custom durations. Output is royalty-free, for video production, games, podcasts and social media.","useWhen":["Sound effects for an edit","Foley or ambience"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/audio/elevenlabs-sound-effects","repo":"inference-sh/skills","path":"tools/audio/elevenlabs-sound-effects","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill elevenlabs-sound-effects -a claude-code","codex":"npx skills add inference-sh/skills --skill elevenlabs-sound-effects -a codex","cursor":"npx skills add inference-sh/skills --skill elevenlabs-sound-effects -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill elevenlabs-sound-effects -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"wave","hue":190},"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/2c9aa5d6b821/inference-sh-elevenlabs-sound-effects.mp3","duration":4,"peaks":[1,0.93,0.93,0.94,0.92,1,0.92,0.98,0.91,0.94,0.95,0.85,0.87,0.86,0.73,0.84,0.85,0.8,0.83,0.72,0.92,0.56,0.72,0.5,0.36,0.36,0.42,0.4,0.22,0.25,0.17,0.15,0.12,0.11,0.12,0.11,0.08,0.08,0.08,0.06,0.06,0.05,0.04,0.05,0.04,0.03,0.03,0.02,0.02,0.02,0.02,0.02,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0],"source":"https://eleven-public-cdn.elevenlabs.io/payloadcms/gj5zs6o2cnf.mp3","page":"https://elevenlabs.io/sound-effects","credit":"ElevenLabs (Sound Effects sample)","rights":"publisher-site","note":"Sound effect generated from the prompt 'Massive explosion' (Action category) on ElevenLabs' Sound Effects page","bytes":49104,"addedAt":"2026-10-27"}},{"id":"inference-sh/elevenlabs-stt","slug":"inference-sh-elevenlabs-stt","name":"ElevenLabs Speech to Text (inference.sh)","skillName":"elevenlabs-stt","type":"skill","status":"live","stream":"vendors","category":"captions","tags":["elevenlabs","transcription","forced-alignment","subtitles"],"summary":"Transcribe audio with ElevenLabs Scribe, speaker diarization and forced alignment, via inference.sh.","description":"Runs ElevenLabs speech-to-text through inference.sh with Scribe v1 and v2 (90+ languages). Beyond transcription it does speaker diarization, audio event tagging, word-level timestamps, forced alignment and subtitle generation, which also suits lip-sync timing and karaoke.","useWhen":["Subtitles with word timings","Aligning a known script to audio","Karaoke or lip-sync timing"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/audio/elevenlabs-stt","repo":"inference-sh/skills","path":"tools/audio/elevenlabs-stt","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill elevenlabs-stt -a claude-code","codex":"npx skills add inference-sh/skills --skill elevenlabs-stt -a codex","cursor":"npx skills add inference-sh/skills --skill elevenlabs-stt -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill elevenlabs-stt -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["scribe_v2","scribe_v1"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-17","addedAt":"2026-10-26","preview":{"kind":"karaoke","hue":190},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/7a00617f0a93/inference-sh-elevenlabs-stt.mp4","w":720,"h":404,"duration":6.5,"blur":"data:image/webp;base64,UklGRkIAAABXRUJQVlA4IDYAAABwAwCdASogABIAPtFepk6oJSMiKAqpABoJaQAAOob6ocU6kQAA/vESuUfSNoiGsopFz6lgAAA=","source":"https://eleven-public-cdn.elevenlabs.io/payloadcms/video-derived/6913501dc1565f64647b73c2/h264_720.mp4","page":"https://elevenlabs.io/blog/introducing-scribe-v2-realtime","credit":"ElevenLabs (Scribe v2 Realtime launch video)","rights":"publisher-site","note":"From ElevenLabs' Scribe v2 launch video: a spoken exchange transcribed word by word into chat bubbles ('It's john.doe@me.com', '1-800-404-9825', 'Thanks John. Everything looks to be in order.')","bytes":70457,"addedAt":"2026-10-27"}},{"id":"inference-sh/elevenlabs-tts","slug":"inference-sh-elevenlabs-tts","name":"ElevenLabs TTS (inference.sh)","skillName":"elevenlabs-tts","type":"skill","status":"live","stream":"vendors","category":"audio","tags":["elevenlabs","tts","voiceover"],"summary":"Voice scripts with ElevenLabs v4, v4 Turbo, v3, Multilingual v2 and Flash, via inference.sh.","description":"Runs ElevenLabs text-to-speech through inference.sh, with each model as its own app: Eleven v4 and v4 Turbo (audio tags, realtime streaming), Eleven v3, Multilingual v2 and Flash v2.5. It includes voice selection guidance.","useWhen":["ElevenLabs voiceover without an ElevenLabs key","Comparing ElevenLabs voice models"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/audio/elevenlabs-tts","repo":"inference-sh/skills","path":"tools/audio/elevenlabs-tts","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill elevenlabs-tts -a claude-code","codex":"npx skills add inference-sh/skills --skill elevenlabs-tts -a codex","cursor":"npx skills add inference-sh/skills --skill elevenlabs-tts -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill elevenlabs-tts -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["eleven_v4","eleven_v4_turbo","eleven_v3","eleven_multilingual_v2","eleven_flash_v2_5"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-06","addedAt":"2026-10-26","preview":{"kind":"wave","hue":190},"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/d3f7f20bf051/inference-sh-elevenlabs-tts.mp3","duration":20,"peaks":[0.56,0.37,0.38,0.01,0,0.67,0.45,0.5,0.73,0.26,0.27,0,0,0,0,0.35,0.71,0.62,0.4,0.38,0.48,0.57,0.27,0.2,0.17,0.18,0.19,0.15,0.01,0.32,0.65,0.47,0.41,0.45,0.49,0,0,0,0.73,1,0.99,0.01,0,0,0,0,0.35,0.33,0.16,0,0,0,0,0,0.45,0.3,0,0.27,0.4,0.42,0.43,0.05,0.34,0.32],"source":"https://eleven-public-cdn.elevenlabs.io/payloadcms/ju64h67fkkn.mp3","page":"https://elevenlabs.io/blog/emotional-text-to-speech-with-eleven-v4","credit":"ElevenLabs (Eleven v4 sample)","rights":"publisher-site","note":"Eleven v4 (the skill's default model) narration steered with audio tags like [tense] and [whispering]: 'The night was quiet, almost unnaturally so. Then I heard the old gate creak open behind me…'","bytes":241202,"addedAt":"2026-10-27"}},{"id":"inference-sh/elevenlabs-voice-changer","slug":"inference-sh-elevenlabs-voice-changer","name":"ElevenLabs Voice Changer (inference.sh)","skillName":"elevenlabs-voice-changer","type":"skill","status":"live","stream":"vendors","category":"audio","tags":["elevenlabs","speech-to-speech"],"summary":"Re-voice a recording into another voice while keeping words and emotion, via inference.sh.","description":"Runs the ElevenLabs voice changer through inference.sh, turning one voice into another while preserving content and emotion. It uses `eleven_multilingual_sts_v2` (70+ languages) or the English model.","useWhen":["Changing who is speaking in a recording","Character voices from your own performance"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/audio/elevenlabs-voice-changer","repo":"inference-sh/skills","path":"tools/audio/elevenlabs-voice-changer","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill elevenlabs-voice-changer -a claude-code","codex":"npx skills add inference-sh/skills --skill elevenlabs-voice-changer -a codex","cursor":"npx skills add inference-sh/skills --skill elevenlabs-voice-changer -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill elevenlabs-voice-changer -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["eleven_multilingual_sts_v2","eleven_english_sts_v2"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"wave","hue":190},"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/b5b0e4ebdc6c/inference-sh-elevenlabs-voice-changer.mp3","duration":4.9,"peaks":[0.01,0,0.05,0.94,1,0.41,0.02,0,0,0,0.02,0,0.68,0.7,0.61,0.63,0.69,0.68,0.69,0.68,0.3,0.46,0.6,0.51,0.56,0.64,0.54,0.48,0.55,0.54,0.11,0,0,0,0.02,0,0,0,0,0.24,0.31,0.39,0.67,0.64,0.06,0.16,0.43,0.45,0.29,0.28,0.45,0.64,0.6,0.5,0.53,0.1,0.41,0.18,0.38,0.33,0.1,0,0,0],"source":"https://eleven-public-cdn.elevenlabs.io/payloadcms/3bdta5lw9bp.mp3","page":"https://elevenlabs.io/voice-changer","credit":"ElevenLabs (Voice Changer sample)","rights":"publisher-site","note":"Voice Changer output from ElevenLabs' page: a recorded character line ('Character original voice') re-voiced as a yeti ('Yeti AI voice'), keeping the delivery and timing","bytes":60016,"addedAt":"2026-10-27"}},{"id":"inference-sh/elevenlabs-voice-isolator","slug":"inference-sh-elevenlabs-voice-isolator","name":"ElevenLabs Voice Isolator (inference.sh)","skillName":"elevenlabs-voice-isolator","type":"skill","status":"live","stream":"vendors","category":"sfx","tags":["elevenlabs","denoise","cleanup","audio"],"summary":"Remove background noise and isolate vocals from any recording with ElevenLabs, via inference.sh.","description":"Runs the ElevenLabs voice isolator through inference.sh for noise removal, voice extraction and audio cleanup. Typical uses are podcasts, interviews, music vocals and noisy recordings.","useWhen":["Cleaning up interview or podcast audio","Extracting vocals from music"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/audio/elevenlabs-voice-isolator","repo":"inference-sh/skills","path":"tools/audio/elevenlabs-voice-isolator","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill elevenlabs-voice-isolator -a claude-code","codex":"npx skills add inference-sh/skills --skill elevenlabs-voice-isolator -a codex","cursor":"npx skills add inference-sh/skills --skill elevenlabs-voice-isolator -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill elevenlabs-voice-isolator -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"wave","hue":190},"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/d45acb82de58/inference-sh-elevenlabs-voice-isolator.mp3","duration":12,"peaks":[1,0.91,0.9,0.91,0.87,0.88,0.64,0.77,0.68,0.65,0.87,0.65,0.51,0.58,0.56,0.51,0.58,0.5,0.33,0.56,0.49,0.37,0.43,0.4,0.32,0.34,0.48,0.43,0.57,0.39,0.63,0.49,0.38,0.5,0.15,0.2,0.13,0.14,0.12,0.22,0.19,0.06,0.16,0.37,0.26,0.49,0.16,0.39,0.55,0.26,0.28,0.13,0,0.37,0.25,0.12,0.32,0.33,0.08,0,0,0,0,0.14],"source":"https://eleven-public-cdn.elevenlabs.io/payloadcms/n2m1ib6jc6h-0u1ds4amped-Voice%20Isolator%20Demo.mp4","page":"https://elevenlabs.io/voice-isolator","credit":"ElevenLabs (Voice Isolator demo)","rights":"publisher-site","note":"Audio of ElevenLabs' Voice Isolator demo: a man speaking on a noisy rooftop; about 6 s in the 'Voice isolated' toggle switches on and the background noise drops away","bytes":145008,"addedAt":"2026-10-27"}},{"id":"inference-sh/speech-to-text","slug":"inference-sh-speech-to-text","name":"Speech to Text","skillName":"speech-to-text","type":"skill","status":"live","stream":"vendors","category":"captions","tags":["transcription","whisper","subtitles","translation"],"summary":"Transcribe audio with ElevenLabs Scribe v2 or Whisper V3 Large, with timestamps and speaker labels.","description":"Transcribes audio through inference.sh with ElevenLabs Scribe v2 (with diarization), Fast Whisper Large V3 or Whisper V3 Large. It handles transcription, translation, timestamps, speaker diarization and audio event tagging for subtitles, meetings, podcasts and voice notes.","useWhen":["Subtitles for a video","Transcribing a meeting or podcast","Translating speech to text"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/audio/speech-to-text","repo":"inference-sh/skills","path":"tools/audio/speech-to-text","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill speech-to-text -a claude-code","codex":"npx skills add inference-sh/skills --skill speech-to-text -a codex","cursor":"npx skills add inference-sh/skills --skill speech-to-text -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill speech-to-text -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["scribe_v2","whisper_large_v3"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-17","addedAt":"2026-10-26","preview":{"kind":"karaoke","hue":190},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b156b417c98b/inference-sh-speech-to-text.mp4","w":720,"h":404,"duration":8.5,"blur":"data:image/webp;base64,UklGRpYAAABXRUJQVlA4IIoAAADwBACdASogABIAPslSnkunpKKhsAwA8BkJYwDIuP8CNGeeB6k4JqvhunsrSps9Q1AA/veCaXB45qG7CU0tiA2A4h5WR+eRTEwvrlDapliQ1eL3lmvZAoyQWvE6AymluMVGCko+fD8U2unRCsvc+DD9813mCgrYEu9Odo42UJa/SU4yLb1NTdcAAAA=","source":"https://eleven-public-cdn.elevenlabs.io/payloadcms/video-derived/67bf565a14291b42ecab8652/h264_720.mp4","page":"https://elevenlabs.io/blog/meet-scribe","credit":"ElevenLabs (Scribe launch video)","rights":"publisher-site","note":"From ElevenLabs' Scribe launch video (Scribe is one of the skill's STT models, beside Whisper): a voice memo transcribed into notes, then football commentary turned into live Spanish captions ('¡Por la izquierda! ¡Golazo!')","bytes":300506,"addedAt":"2026-10-27"}},{"id":"inference-sh/text-to-speech","slug":"inference-sh-text-to-speech","name":"Text to Speech","skillName":"text-to-speech","type":"skill","status":"live","stream":"vendors","category":"audio","tags":["tts","voiceover","multilingual"],"summary":"Voice any script with Inworld TTS-2, ElevenLabs, Dia, Kokoro or Chatterbox from one CLI.","description":"A multi-model text-to-speech skill for inference.sh with guidance on picking a voice model. Options include Inworld TTS-2 (100+ languages, emotion steering), Inworld TTS 1.5 (ultra-low latency), ElevenLabs, Dia TTS, Kokoro and Chatterbox.","useWhen":["A voiceover from a script","Speech in many languages","Low-latency speech for an app"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/audio/text-to-speech","repo":"inference-sh/skills","path":"tools/audio/text-to-speech","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill text-to-speech -a claude-code","codex":"npx skills add inference-sh/skills --skill text-to-speech -a codex","cursor":"npx skills add inference-sh/skills --skill text-to-speech -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill text-to-speech -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["inworld-tts-2","eleven_v3","dia-tts","kokoro","chatterbox"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":7,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"wave","hue":190},"adds":"api","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/a1deed022c3e/inference-sh-text-to-speech.mp3","duration":20.7,"peaks":[0.11,0.7,0.59,0.71,0.58,0.34,0.51,0.38,0.34,0.38,0.44,0.55,0.52,0.32,0.01,0,0.7,0.91,0.83,0.7,0.34,0.25,0.67,0.7,0.5,0.54,0.81,0.31,0.79,0.6,0.42,1,0.5,0.44,0.39,0.71,0.34,0.51,0.54,0.66,0.27,0.12,0,0.62,0.66,0.86,0.54,0.35,0.01,0.85,0.51,0.5,0.57,0.6,0.5,0.76,0.72,0.32,0.07,0.42,0.37,0.4,0.04,0],"source":"https://huggingface.co/hexgrad/Kokoro-82M/resolve/main/samples/HEARME.wav","page":"https://huggingface.co/hexgrad/Kokoro-82M","credit":"hexgrad (Kokoro-82M model card sample)","rights":"publisher-site","note":"Kokoro TTS (the skill's quick-start model, falai/kokoro-tts) sample from its model card: 'Kokoro is an open-weight TTS model with 82 million parameters. Despite its lightweight architecture, it delivers comparable quality to larger models…'","bytes":249840,"addedAt":"2026-10-27"}},{"id":"inference-sh/ai-image-generation","slug":"inference-sh-ai-image-generation","name":"AI Image Generation","skillName":"ai-image-generation","type":"skill","status":"live","stream":"vendors","category":"image","tags":["text-to-image","image-editing","model-router"],"summary":"Generate images with 50+ models from one CLI: GPT Image 2.5, FLUX, Gemini, Grok, Seedream, Reve and more.","description":"inference.sh's router skill for image generation through the `belt` CLI, with one command shape (`belt app run <app>`) across 50+ models. It covers GPT Image 2.5, FLUX, Gemini image models, Grok Imagine, Seedream, Reve and P-Image, with guidance on which one to pick for a job.","useWhen":["Generate an image from a prompt","Comparing image models for a task","Image editing with a reference"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/image/ai-image-generation","repo":"inference-sh/skills","path":"tools/image/ai-image-generation","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill ai-image-generation -a claude-code","codex":"npx skills add inference-sh/skills --skill ai-image-generation -a codex","cursor":"npx skills add inference-sh/skills --skill ai-image-generation -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill ai-image-generation -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["gpt_image_2_5","gpt_image_2","flux_dev","nano_banana_pro","grok_imagine_image","seedream","p-image"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":14,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"grid","hue":190},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/e8bef2374467/inference-sh-ai-image-generation.webp","w":640,"h":960,"blur":"data:image/webp;base64,UklGRsgBAABXRUJQVlA4ILwBAAAwCQCdASogADAAPslYo0unpaMhsBVdUPAZCWgAsQwIKztp0DFNplo6WhohbPoj5Tp43zuJxxKt71jMfF0WQFkW7pxzQ0ZYK48JTr620RTx+h6gAP77K2cVFDgoNpLaA//OcGGC4ZS/3TNwi9tQ1AU/bMZbh5K/Qqy8PUi/xXMSLKynq4LW/uAxHwSnvPVFL99Zm+1qMPxzjQOXmMW2FiyIf2xJUPHtf4HqquXQWocZsmOiWh6B/zTjrRSUAVEWqU3SQyHgKbE3iuw7iw+CoRU7nABVrWUT6M/qRABt522t/2WiFOt9YgFEGLj1rlD9blZdSE16Wue3/lBbjZ/4RcKNpEiotbBcg+xlQD+r18aqViOcZzl7OIywQmToDPD85lQ54jj/xMo8hHFPm2DmqJOD3c5fSp/N1R+dGIBI97Qyn8MN8t+ZuPZhSiTnGBtTJlOF9Yi+QumEBh4ISXCooPbVeivXIQufFytyRxg9Boia1bAQ6myOsbK1jpWYyeHMfIPEHIgRvKGT969412mbKiqOKjLN1KvzUQGmQYdkLM5OoRhfICBq5Fpsds3lXNXuB+TYfojh77t/nZWgAAA=","source":"https://raw.githubusercontent.com/openai/openai-cookbook/main/images/photorealism-gpt-image-2.png","page":"https://github.com/openai/openai-cookbook/blob/main/examples/multimodal/image-gen-models-prompting-guide.ipynb","credit":"OpenAI Cookbook (gpt-image-2 output)","rights":"publisher-site","note":"gpt-image-2 text-to-image output from OpenAI's prompting guide (GPT-Image is the skill's default family): a photoreal 35mm-style candid of an old sailor mending a net with his dog on deck","bytes":72600,"addedAt":"2026-10-27"}},{"id":"inference-sh/background-removal","slug":"inference-sh-background-removal","name":"Background Removal","skillName":"background-removal","type":"skill","status":"live","stream":"vendors","category":"image","tags":["cutout","transparent-png","product"],"summary":"Cut subjects out of photos into clean transparent PNGs with BiRefNet.","description":"Removes image backgrounds with BiRefNet through the inference.sh CLI, producing transparent PNGs ready for compositing. It targets product photos, portraits and e-commerce images.","useWhen":["Removing a photo background","Transparent product cutouts","Preparing a subject for compositing"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/image/background-removal","repo":"inference-sh/skills","path":"tools/image/background-removal","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill background-removal -a claude-code","codex":"npx skills add inference-sh/skills --skill background-removal -a codex","cursor":"npx skills add inference-sh/skills --skill background-removal -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill background-removal -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["birefnet"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":7,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-17","addedAt":"2026-10-26","preview":{"kind":"grid","hue":190},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/5d7a501e451b/inference-sh-background-removal.webp","w":960,"h":960,"blur":"data:image/webp;base64,UklGRiwCAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSAMBAAABkHNb27FHd2zbdVYq22ZrO5XxG2w7lW3btp3KdjIz9+D9XozqiJgA+E/l5GSIf2LRkgkR3UrEAdp4DfJPERHX1KmZN8yW5DYcIMsPd3J8nmNIuYSEX5bJKFJvlWfFdYJfkPKVM5BkW0YaQ4B0Mx1B5FzpeLRmBy4xdiKOZUqLn/jS1ZhTIUgELhRuVgcqWt/shHm5gCVbB6lWFTFVkH1aCQaSAmEzBNfrszc4JQUA/KlGBmQAwOWs2z/XEMDuHZf4wSpeAALVyIFKjxH8GolYYdz85WJ+zMlUnhSISBJAAhIeJSXX2ZAjGb57ujC0kwMM8ggAcMWum9NH7KPJFAAbY//HAFZQOCACAQAAkAYAnQEqIAAgAD7FUJ9Lp6SiobAMAPAYiWwAyzGoMYFbGgA9pdVv0nyuvP6GESpRplaDPfG9F2fBwKc/IAD+/dlUHJNKrPwNQ6X9/m8+frDp2xw2neLxH8ljGTo34pFx/xg6Exp01wWjw7dmw0P67eQ+YuY/0ZZoB+KJXaXrwdBwLXxrbD1XGVr81NMLFRtyMtrxNtnUcZAj9sS41MScuP/ME4JV+dt07NrGy+9fQqwHiiBvHhMPpC+k1laAjmKLY/HTpvVT4PbU/K9rUloqv1Y9c/RainfcFGoAVQ7H4FEvepeiA9ph4+aJ/cYywglNoypWrldP3VcOwAlooQyXQAAA","source":"https://storage.googleapis.com/falserverless/example_outputs/birefnet-output.png","page":"https://fal.ai/models/fal-ai/birefnet","credit":"fal (BiRefNet example)","rights":"publisher-site","note":"BiRefNet output from fal's BiRefNet model page (inference.sh self-hosts the same open model as infsh/birefnet): a tree frog cut out of its mossy background as a transparent PNG","bytes":54528,"addedAt":"2026-10-27"}},{"id":"inference-sh/flux-image","slug":"inference-sh-flux-image","name":"FLUX Image","skillName":"flux-image","type":"skill","status":"live","stream":"vendors","category":"image","tags":["flux","lora","text-to-image","image-to-image"],"summary":"Generate and restyle images with FLUX Dev LoRA and FLUX.2 Klein, including custom LoRA styles.","description":"Runs Black Forest Labs' FLUX models through inference.sh: FLUX Dev LoRA and FLUX.2 Klein LoRA. It covers text-to-image, image-to-image and custom LoRA style adaptation from the `belt` CLI.","useWhen":["FLUX image generation","Applying a custom LoRA style","Image-to-image restyling"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/image/flux-image","repo":"inference-sh/skills","path":"tools/image/flux-image","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill flux-image -a claude-code","codex":"npx skills add inference-sh/skills --skill flux-image -a codex","cursor":"npx skills add inference-sh/skills --skill flux-image -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill flux-image -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_dev","flux-2-klein"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"grid","hue":190},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/67d29dcda656/inference-sh-flux-image.webp","w":960,"h":720,"blur":"data:image/webp;base64,UklGRhoBAABXRUJQVlA4IA4BAABQBgCdASogABgAPtFYo0uoJSMhsAgBABoJbACdMoR6b9ACusvx7lKhWOh7BQW9q25Tqldp3ETV8/mVsAD+eMV9bLseYtgLsHFYF6BzM3AalH54f9suoAP4JkgRry4/NSeSlR6/RFix/O/ft0gdW6gL1P8a3FzCXPJzlN5hhi76zriiy7vCO5t1IVqyxLOZjpYNuOh0abTrldkXWUYq8lFlPrxl3P0xsSNc4CDDuIVCJkUBh9Itmrw9xhJZraGTo4sRGfHMnGRTJD6Yrc+/wo88OhtH9uz4FLNdV/7GNk5riFo2Hqc6shw2jO6nPACqRMF0Xd2B4hnJpWuqL+ELQa0JeFCNm/XPqy/HcYyAAAA=","source":"https://v3b.fal.media/files/b/0a973316/RUfqQGRt6F-4CLxh99-lz_00a14966519b4233ad15ea1a5e81b818.jpg","page":"https://fal.ai/models/fal-ai/flux-lora","credit":"fal (FLUX.1 [dev] LoRA example)","rights":"publisher-site","note":"Example output on fal's FLUX LoRA page, the endpoint behind the skill's falai/flux-dev-lora app: FLUX.1 [dev] with an anime LoRA, 'a woman wearing jacket and tie at a tropical island'","bytes":35812,"addedAt":"2026-10-27"}},{"id":"inference-sh/gpt-image","slug":"inference-sh-gpt-image","name":"GPT Image","skillName":"gpt-image","type":"skill","status":"live","stream":"vendors","category":"image","tags":["gpt-image","image-editing","text-to-image"],"summary":"Generate and edit images with OpenAI GPT Image 2.5 and GPT Image 2 from the command line.","description":"Runs OpenAI's GPT Image 2.5 (Flare and Sunburst) and GPT Image 2 through inference.sh for text-to-image and image editing. It includes model-choice guidance and request examples for the `belt` CLI.","useWhen":["Images with dense or exact text","Editing an image with instructions","GPT Image generation without an OpenAI key"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/image/gpt-image","repo":"inference-sh/skills","path":"tools/image/gpt-image","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill gpt-image -a claude-code","codex":"npx skills add inference-sh/skills --skill gpt-image -a codex","cursor":"npx skills add inference-sh/skills --skill gpt-image -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill gpt-image -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["gpt_image_2_5_flare","gpt_image_2_5_sunburst","gpt_image_2"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":9,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-08","addedAt":"2026-10-26","preview":{"kind":"grid","hue":190},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/bb2e755a9e49/inference-sh-gpt-image.webp","w":640,"h":960,"blur":"data:image/webp;base64,UklGRnoBAABXRUJQVlA4IG4BAADwBwCdASogADAAPsVQnkunpKKhtVgMAPAYiWYAnTLA//Ff7BVqqqqiONw5fCdeNJzf5UkVALn0avEkoCQvsz7vcnbQb4Pnu4QA95kv9LNgvPUoIyAzHmbWDKVQlzZ58LuUOpm6q+CYZnW3WApelmY9yEN0B+7B4sfAwI7ev9psAlou6ntlC8+aJExdb0fTal3mw6U2pYaHxUxJQPzV+P3U9PtuolSAxG1pa7y4h3jeUdfQvW8IfbzMV6ur/7DpZP64dNT5uONKWxCIT8G2NBW5Q/WHpot5M9VlF+sjDefu25Co/08XUVRCGuoik4zcllovx8qVKqkfRzA74Upi33UPZj11wJMT1Jsb5itgO8fr08NfeD0ET4rnFlCAxg4HlX0dpq/3qcSOUwGkOq1RJqj5S4yo+AX6f2bU606nb/3WvKIcdN6DGpise0lYKMnGLCLKNTQOw8elyLgrwYaOF9rz//0ll9nZkc9dkogwAAA=","source":"https://raw.githubusercontent.com/openai/openai-cookbook/main/images/billboard_gpt-image-2.png","page":"https://github.com/openai/openai-cookbook/blob/main/examples/multimodal/image-gen-models-prompting-guide.ipynb","credit":"OpenAI Cookbook (gpt-image-2 output)","rights":"publisher-site","note":"gpt-image-2 edit from OpenAI's image-gen prompting guide: a shampoo product shot turned into a sunset highway billboard with the exact text 'Fresh and clean'. The skill defaults to GPT-Image-2.5 Flare; OpenAI's repo only has 2.0 examples","bytes":37100,"addedAt":"2026-10-27"}},{"id":"inference-sh/image-upscaling","slug":"inference-sh-image-upscaling","name":"Image Upscaling","skillName":"image-upscaling","type":"skill","status":"live","stream":"vendors","category":"image","tags":["upscale","enhance","restoration"],"summary":"Upscale and enhance low-resolution images with Real-ESRGAN, Thera, Topaz or the FLUX upscaler.","description":"Upscales and enhances images through inference.sh with a choice of four upscalers. The options are Real-ESRGAN, Thera (any output size), the FLUX Dev upscaler and the Topaz Image Upscaler.","useWhen":["Enhancing a low-resolution image","Upscaling a generation for print or 4K"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/image/image-upscaling","repo":"inference-sh/skills","path":"tools/image/image-upscaling","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill image-upscaling -a claude-code","codex":"npx skills add inference-sh/skills --skill image-upscaling -a codex","cursor":"npx skills add inference-sh/skills --skill image-upscaling -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill image-upscaling -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["topaz","real-esrgan","thera","flux-dev-upscaler"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-17","addedAt":"2026-10-26","preview":{"kind":"grid","hue":190},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/c68597e6a0d6/inference-sh-image-upscaling.webp","w":960,"h":453,"blur":"data:image/webp;base64,UklGRggBAABXRUJQVlA4IPwAAADQBACdASogABAAAsBMJZgCdMoMYPYEhH9AEsZx4DSAWoJm8dRcQBOa5NHY3Zt3KAD+9Ucq1qBDQTteSt4ZDL0sDK/WCPk5pdXLXSxaRLuIKGASF8HF5uKWG7Ag1q2vk9cNr/VnWE7m1CLdGOFyxK2TYvVQr57hFfLB4s1IkszZyaRRjest0BfRwl0qNaUmVhvZuwbOTl+Ge/t5xhO6fUoBsurlI79xfzqWSL/FrkHpao1o7ejsna0l7wBTV3VlUecfz2FyexQT7rjNqchyqQpGDmuS1rf2haSMCp1jYtOm8B/+IrK7yRrd1M0jsP+9QDwGWudvKxH9speAAAA=","source":"https://raw.githubusercontent.com/xinntao/Real-ESRGAN/master/assets/teaser.jpg","page":"https://github.com/xinntao/Real-ESRGAN","credit":"Real-ESRGAN (Xintao Wang et al.)","rights":"publisher-site","note":"Real-ESRGAN (the skill's quick-start model, infsh/real-esrgan) README teaser: bicubic input next to Real-ESRGAN output for anime, cartoon, branches, a coastline, signage and buildings","bytes":81662,"addedAt":"2026-10-27"}},{"id":"inference-sh/nano-banana","slug":"inference-sh-nano-banana","name":"Nano Banana","skillName":"nano-banana","type":"skill","status":"live","stream":"vendors","category":"image","tags":["nano-banana","gemini","image-editing"],"summary":"Generate and edit images with Google's Gemini 3 Pro Image and Gemini 2.5 Flash Image, multi-image input too.","description":"Runs Google's native Gemini image models through inference.sh: Gemini 3 Pro Image (Nano Banana Pro) and Gemini 2.5 Flash Image. It covers text-to-image, image editing and multi-image input.","useWhen":["Nano Banana Pro generation or edits","Combining several reference images"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/image/nano-banana","repo":"inference-sh/skills","path":"tools/image/nano-banana","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill nano-banana -a claude-code","codex":"npx skills add inference-sh/skills --skill nano-banana -a codex","cursor":"npx skills add inference-sh/skills --skill nano-banana -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill nano-banana -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["nano_banana_pro","gemini-2.5-flash-image"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"grid","hue":190},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/d10e6e7da996/inference-sh-nano-banana.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRhwBAABXRUJQVlA4IBABAADQBQCdASogABIAPtFUo0uoJKMhsAgBABoJbACdMxDYBLAA5PxUdIwT8fPEGUREkTBe6InNveLAAPzkb7b9MvbtMNLQPw0P93KudQv/IBKEcHimfoLbL96re85SM+WI4QzvKXulmJgohII1BpagxtAGm1oHO9IOvpD2tAUYNjvYaNy+ZO0CYWiAkTSBYvDaHFbvPvdf+6UxIH7ZxhDJDR/ec5ufZhXlHpkzR7rhA55XGSPG6kpvIXRGDYYElq7gwWiYvmweyoHeL2cbL+Zzv9tf5WTrHDyBVUdeFU+s2KRJOdDA4O1KJOyMu+C9yyMQa/01z0P+ebiziDTS0hAk/8G/b9tBNX8UvoSUCopq2uoAAA==","source":"https://lh3.googleusercontent.com/ZAvfI_VZ1L6jl9IEhLwOgMgFcgkrjrFmTNw0vY1Du-dI8whmrI1CzglA65TIb2w1rb59V4-XYcauM-iHjO9iLqu662KOchm1JSRdJt8yevfV3e_J=w1440-h810-n-nu","page":"https://deepmind.google/models/gemini-image/pro/","credit":"Google DeepMind (Nano Banana Pro)","rights":"publisher-site","note":"Nano Banana Pro (Gemini 3 Pro Image, the skill's default model) example from Google DeepMind's model page: a sunny Berlin street whose old houses are shaped like the letters B-E-R-L-I-N","bytes":95700,"addedAt":"2026-10-27"}},{"id":"inference-sh/nano-banana-2","slug":"inference-sh-nano-banana-2","name":"Nano Banana 2","skillName":"nano-banana-2","type":"skill","status":"live","stream":"vendors","category":"image","tags":["nano-banana","gemini","image-editing","grounding"],"summary":"Generate and edit images with Nano Banana 2, with up to 14 reference images and search grounding.","description":"Runs Google Gemini 3.1 Flash Image Preview (Nano Banana 2) through inference.sh for text-to-image and image editing. It accepts up to 14 input images and supports Google Search grounding.","useWhen":["Fast Nano Banana 2 generations or edits","Many reference images in one request","Grounding an image in current facts"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/image/nano-banana-2","repo":"inference-sh/skills","path":"tools/image/nano-banana-2","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill nano-banana-2 -a claude-code","codex":"npx skills add inference-sh/skills --skill nano-banana-2 -a codex","cursor":"npx skills add inference-sh/skills --skill nano-banana-2 -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill nano-banana-2 -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["nano_banana_2"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":7,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"grid","hue":190},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/ef0265bee152/inference-sh-nano-banana-2.webp","w":960,"h":960,"blur":"data:image/webp;base64,UklGRnwBAABXRUJQVlA4IHABAAAwBwCdASogACAAPrlGm0unI6Kht+gA4BcJbACdMoMi1dmdwG4C3ln3Pc2PY4kBxX4JRqZCky1sVQCBRsRfZfoMEgAA/uu49D8iIXo43tK0nJ0feDDEy9X/gsW7O2ojWtdB3cO6Avy2n0lZzOfwEdYhjDV9fEdIGYUrDZpi/QAoIixW/9ltiTQoNQk84nArDEv0RzEaG6DWg/6Joy0wjnOrdrJu6Ej/1a4Sb0XmAqgkqIPDbe10jpLqM6UUWCSF3xSj9fQWMp95ezUb8QHzkpu0se2owO+TBuGqVEeo/QFQAHsCd0tveJhe//lQvft55LIj1SQCt66RJBawyc+Nz/B8M5n8ijTdyubouCjDamn6ATHyQTnb5b/xfBqGVQeeaCJ0kRpLK6rjDQF9029+gA9E68REX4yFI7rFrtnVzn9jEubtYnSjVo4p6lqmJ9xInG+J7gfVYBJB+penPot/jkF6dWtlgQF2gZi6JYz+FrcAAA==","source":"https://cloud.inference.sh/app/files/u/4mg21r6ta37mpaz6ktzwtt8krr/01kjdpwzw6qtrdk4zar4y5kw0m.png","page":"https://inference.sh/blog/guides/nano-banana-2-image-generation","credit":"inference.sh blog (Nano Banana 2 generation)","rights":"publisher-site","note":"Nano Banana 2 (Gemini 3.1 Flash Image) output from inference.sh's launch guide: a workspace flat lay with legible handwritten 'TODO: ship it', showing its text rendering","bytes":115856,"addedAt":"2026-10-27"}},{"id":"inference-sh/p-image","slug":"inference-sh-p-image","name":"P-Image","skillName":"p-image","type":"skill","status":"live","stream":"vendors","category":"image","tags":["pruna","lora","image-editing"],"summary":"Generate and edit images fast with Pruna's P-Image models, including LoRA styles and multi-image edits.","description":"Runs Pruna's P-Image family through inference.sh: P-Image, P-Image-LoRA, P-Image-Edit and P-Image-Edit-LoRA. It covers text-to-image, image editing, LoRA styles and multi-image input.","useWhen":["Fast, low-cost image generation","LoRA-styled images or edits"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/image/p-image","repo":"inference-sh/skills","path":"tools/image/p-image","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill p-image -a claude-code","codex":"npx skills add inference-sh/skills --skill p-image -a codex","cursor":"npx skills add inference-sh/skills --skill p-image -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill p-image -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["p-image","p-image-edit"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":10,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"grid","hue":190},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/8305d060101f/inference-sh-p-image.webp","w":960,"h":548,"blur":"data:image/webp;base64,UklGRgIBAABXRUJQVlA4IPYAAACwBQCdASogABIAPtFUpU2oJCOiMBgIAQAaCUAW2TutMIBa0nOO/cclTmk/ZXk3D3GxyV8cxcAA/Xjb4ioms9qBVkX58vPWLzCIUYyt71kwQ5tAsliBpeusKtMsOOiY7n46C1eC8H0ta5P+pS0uKC6vHqR+/1+KTcK7dKIAe+P2zxPgVaiYMaxRI39vjZJlr6iSvbNod/zbxffGMgeAcNPw8SSmE+Ghe05n9mSn+OkNpv87sJm8tBnT233rwW3Pmfmvn0vhpNIJ3NJFGD5WMLqGDM7ThFJuNQK+9J/iQCr314Idq4BhPaPA9SIY0T9g5EhI9mEAAAA=","source":"https://huggingface.co/datasets/pruna-test/documentation-media/resolve/main/pruna-endpoints/art_image_generation_2.webp","page":"https://docs.pruna.ai/en/stable/docs_pruna_endpoints/performance_models/p-image.html","credit":"Pruna AI (P-Image docs example)","rights":"publisher-site","note":"P-Image output from Pruna's P-Image docs (labelled 'Art 2 - p-image'): a watercolor-style rainy Paris street with a café, red and blue umbrellas and the Eiffel Tower in the haze","bytes":52900,"addedAt":"2026-10-27"}},{"id":"inference-sh/qwen-image-2","slug":"inference-sh-qwen-image-2","name":"Qwen Image 2","skillName":"qwen-image-2","type":"skill","status":"live","stream":"vendors","category":"image","tags":["qwen","typography","image-editing"],"summary":"Generate and edit images with Alibaba Qwen-Image 2.0: the fast model, or Pro for cleaner text rendering.","description":"Runs Alibaba's Qwen-Image 2.0 models through inference.sh for text-to-image and multi-image editing. It covers the fast base model and Qwen-Image 2.0 Pro for professional text rendering.","useWhen":["Images with readable text","Multi-image edits with Qwen"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/image/qwen-image-2","repo":"inference-sh/skills","path":"tools/image/qwen-image-2","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill qwen-image-2 -a claude-code","codex":"npx skills add inference-sh/skills --skill qwen-image-2 -a codex","cursor":"npx skills add inference-sh/skills --skill qwen-image-2 -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill qwen-image-2 -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["qwen-image-2.0","qwen-image-2.0-pro"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-03","addedAt":"2026-10-26","preview":{"kind":"grid","hue":190},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/63cdd35d0ef5/inference-sh-qwen-image-2.webp","w":960,"h":549,"blur":"data:image/webp;base64,UklGRjwBAABXRUJQVlA4IDABAAAwBwCdASogABIAPtFUo0uoJKMhsAgBABoJQBOmWeYDur/80wjQIEe2kp1jKDMeZJoRExpNkq5+T3m9zy/wuA08IAAA+UtcUiixNs1Mt7/AOdl6VFshYvMfCt3NtsKOVQPrVuxMJZ+VhVfWffS+YJl+ovjmUWDoG57C7zg5HcfbttxZprSfaajAC04q+Hbt5k0+plceTVgQEDJ/u/EfYshX76h1ME/sWNEW3cf8xyQP1gjiwtpHkpwP/aMp1UtXXnZiUP2R314qoW8pGkejnS/bF4eEu8S090sb/L5qZ+6X6/p7CA6rz5Y0Gk+/kwch4udQy8S37Z8inTr9RhNyRgaugKKk2AyaFDyBAzakDNtggOOn7UXTj/dRseVKQdl5JQyWeiISiBvpIohqbBTHugAA","source":"https://qianwen-res.oss-accelerate-overseas.aliyuncs.com/Qwen-Image/image2/top.png","page":"https://inference.sh/blog/guides/qwen-image-2-generation","credit":"Alibaba Qwen (Qwen-Image-2.0 launch sample)","rights":"publisher-site","note":"Official Qwen-Image-2.0 sample (Qwen's CDN, shown in inference.sh's Qwen-Image-2.0 guide): a photoreal street scene with shop signs and banners rendered as legible Chinese text","bytes":110694,"addedAt":"2026-10-27"}},{"id":"inference-sh/qwen-image-2-pro","slug":"inference-sh-qwen-image-2-pro","name":"Qwen Image 2 Pro","skillName":"qwen-image-2-pro","type":"skill","status":"live","stream":"vendors","category":"image","tags":["qwen","typography","posters","banners"],"summary":"Make posters, banners and text-heavy designs with Qwen-Image 2.0 Pro's precise text rendering.","description":"Runs Alibaba's Qwen-Image 2.0 Pro through inference.sh for professional text rendering, fine-grained realism and close prompt adherence. The skill positions it for posters, banners and text-heavy designs.","useWhen":["A poster or banner with lots of text","Text-accurate design mockups"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/image/qwen-image-2-pro","repo":"inference-sh/skills","path":"tools/image/qwen-image-2-pro","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill qwen-image-2-pro -a claude-code","codex":"npx skills add inference-sh/skills --skill qwen-image-2-pro -a codex","cursor":"npx skills add inference-sh/skills --skill qwen-image-2-pro -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill qwen-image-2-pro -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["qwen-image-2.0-pro"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-03","addedAt":"2026-10-26","preview":{"kind":"grid","hue":190},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/d949692572ca/inference-sh-qwen-image-2-pro.webp","w":960,"h":549,"blur":"data:image/webp;base64,UklGRtYAAABXRUJQVlA4IMoAAACQBQCdASogABIAPtFaqE4oJKQiKAqpABoJZQDE81/AhmGs8hNDGEPmSTnnjJWHkbbAAJwsAAD+XtkO5S1o9vlSVa2ZC1tARV8/9TkGu2zORZ18POVNTbqqLRlfFvVLUxPGFEB/YUvSQrcJdS47htenSYmdHPslDgQAJMHPd4B92FAX9Oi8/pVVkFdUJfont3TKhOZsJ3IVu8JILQL1WZqjwYdyKHtXmQ4Et68hAzEPe/62kWxbBD379glbgUPHknBiW2qQeCw8AAAA","source":"https://qianwen-res.oss-accelerate-overseas.aliyuncs.com/Qwen-Image/image2/7.png","page":"https://inference.sh/blog/guides/qwen-image-2-generation","credit":"Alibaba Qwen (Qwen-Image-2.0 launch sample)","rights":"publisher-site","note":"Official sample from the Feb 2026 Qwen-Image-2.0 launch, which introduced the Pro tier (Qwen doesn't say which tier rendered it): handwritten notes on a glass whiteboard and a 'Qwen-Image' T-shirt, showing text on real surfaces","bytes":62242,"addedAt":"2026-10-27"}},{"id":"inference-sh/ai-avatar-video","slug":"inference-sh-ai-avatar-video","name":"AI Avatar Video","skillName":"ai-avatar-video","type":"skill","status":"live","stream":"vendors","category":"talking-head","tags":["avatar","lip-sync","tts"],"summary":"Create talking-head avatar videos from a portrait and a script, with a lip-synced voice.","description":"Creates AI avatar and talking-head videos through inference.sh, recommending Pruna P-Video-Avatar for speed and cost. It also covers OmniHuman, Fabric and PixVerse, with Inworld TTS-2 and other voices for the audio.","useWhen":["A talking-head video from a photo","Comparing avatar models"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/video/ai-avatar-video","repo":"inference-sh/skills","path":"tools/video/ai-avatar-video","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill ai-avatar-video -a claude-code","codex":"npx skills add inference-sh/skills --skill ai-avatar-video -a codex","cursor":"npx skills add inference-sh/skills --skill ai-avatar-video -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill ai-avatar-video -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["p-video-avatar","omnihuman_v1_5","veed_fabric_1_0","pixverse"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":14,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"avatar","hue":190},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f93c1e7bdc03/inference-sh-ai-avatar-video.mp4","w":720,"h":408,"duration":8,"blur":"data:image/webp;base64,UklGRiYBAABXRUJQVlA4IBoBAADwBQCdASogABIAPtFUo0uoJKMhsAgBABoJZQDOOy52AFUJpD2WelbKmpdVUxKhVrQAe7cHGiHywAD+sRXtWXGCJXYu8IlsthepPsCMRtc3Rrt7sgWSUtotfGd8mBfe7V92Jcq+aY94n8zMiLgFUaTqqJ2ErL9TZq1BJOJkQXNLTVNITin3bS0JEyMJcaF0zJ85+GhK2FkdZLOmcadox5oWOEWNXJFzgx9E3gkJO2Ddwi+cebYHXoLshefcnV+X2hNWGWAcns7rgGl9yryljD0KvtZxb+02zeYGAeVj/LLdY3Iv2JewigTNzLmrs4kvhHJO49L2mRtse56iUbnchoUCW5KIBFsLe/uTvlMyn5y1w4vvfkmnIYlAAAA=","source":"https://cloud.inference.sh/t/65hmp52a/z1p81byo.mp4","page":"https://inference.sh/blog/guides/p-video-avatar-talking-head-generation","credit":"inference.sh blog (OmniHuman 1.5 output)","rights":"publisher-site","note":"ByteDance OmniHuman 1.5 (bytedance/omnihuman-1-5, one of the skill's avatar models): a portrait animated into a girl singing with a guitar under cherry blossoms, from inference.sh's avatar-model comparison","bytes":258087,"addedAt":"2026-10-27"}},{"id":"inference-sh/ai-video-generation","slug":"inference-sh-ai-video-generation","name":"AI Video Generation","skillName":"ai-video-generation","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["text-to-video","image-to-video","model-router","veo","seedance"],"summary":"Generate video with 40+ models from one CLI: Veo 3.1, Seedance 2.0, HappyHorse, Wan, Grok and more.","description":"inference.sh's router skill for video generation through the `belt` CLI, covering 40+ models for text-to-video, image-to-video and reference-driven generation. Highlights include Google Veo 3.1, ByteDance Seedance 2.0, Alibaba HappyHorse 1.0, Wan 2.5, Grok Imagine Video, OmniHuman and P-Video.","useWhen":["Generate a video from a prompt or an image","Comparing video models for a shot"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/video/ai-video-generation","repo":"inference-sh/skills","path":"tools/video/ai-video-generation","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill ai-video-generation -a claude-code","codex":"npx skills add inference-sh/skills --skill ai-video-generation -a codex","cursor":"npx skills add inference-sh/skills --skill ai-video-generation -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill ai-video-generation -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["veo_3_1","seedance_2","happy_horse","wan_2_5","grok_imagine","omnihuman_v1_5","p-video"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":14,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"film","hue":190},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/1e11bfdec21f/inference-sh-ai-video-generation.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRsYAAABXRUJQVlA4ILoAAACQBQCdASogABIAPtFUoUwoJKMiMBgMAQAaCWoAnTLVMCLaQVm9HUP/R/tPLFCWxHyP3Qh51AD++RcX5YKM5wuE7tpRJ5JiTcXAwTLyBbSdNWJYkmiysA9Vk5kCPPS/LNAQtronE0JFE9AP/oEk0GuvTBzXaV4E5T66pWq3J++h2S+V4L5+vLczA/ZPI2ftgAftyXWXNvcT/Uzl+wAngb1U5JVPNXDCK7pogbFfWkPKUKAoapSACyAioAA=","source":"https://storage.googleapis.com/gdm-deepmind-com-prod-public/media/media/veo__veo-3__polar-bears.webm","page":"https://deepmind.google/models/veo/","credit":"Google DeepMind (Veo)","rights":"publisher-site","note":"Veo example (Veo 3.1 Fast is the skill's quick-start model) from Google DeepMind's Veo page: a sunlit hallway turns into an ice cave and the camera pushes out onto polar bears crossing the snow","bytes":653808,"addedAt":"2026-10-27"}},{"id":"inference-sh/google-veo","slug":"inference-sh-google-veo","name":"Google Veo","skillName":"google-veo","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["veo","text-to-video"],"summary":"Generate cinematic video from text with Google Veo 3.1 and Veo 3.1 Fast.","description":"Runs Google Veo 3.1 and Veo 3.1 Fast through inference.sh for high-quality, cinematic text-to-video. It documents the request shape and options for the `belt` CLI.","useWhen":["A Veo clip from a prompt","Fast Veo drafts"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/video/google-veo","repo":"inference-sh/skills","path":"tools/video/google-veo","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill google-veo -a claude-code","codex":"npx skills add inference-sh/skills --skill google-veo -a codex","cursor":"npx skills add inference-sh/skills --skill google-veo -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill google-veo -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["veo_3_1","veo_3_1_fast"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"film","hue":190},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ea333e4b6d65/inference-sh-google-veo.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRt4AAABXRUJQVlA4INIAAADQBQCdASogABIAPtFUokuoJKMhsAgBABoJagCdMoMYAE4UUt50pY2WMbGRX4zQp+vSScNq4TQAAM4HYUetirPsydJ8tjUK5lffJeILeFuFQUmxicmnjpR6Xn34u6j6FG+0czxPWNRd+yolovtyNHHeQmvecha+sWbjurlxJmHAM8lX514/wALwnoNdmQuxoSpAAJ0RwGfl+HkaKu0nLUfyj3yZzRZGsR3+TaptR2xMOHzy3slpSeMoMteoaFpIGiaX9ZFhoRZlMTNW/x8JFwaRAAA=","source":"https://storage.googleapis.com/gdm-deepmind-com-prod-public/media/media/veo__veo-3__owl.webm","page":"https://deepmind.google/models/veo/","credit":"Google DeepMind (Veo)","rights":"publisher-site","note":"Veo example from Google DeepMind's Veo page: 'a follow shot of a wise old owl high in the air, peeking through the clouds in a moonlit sky' that lands beside a badger in the forest (original has generated dialogue audio)","bytes":295667,"addedAt":"2026-10-27"}},{"id":"inference-sh/happyhorse","slug":"inference-sh-happyhorse","name":"HappyHorse","skillName":"happyhorse","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["happy-horse","video-editing","reference-to-video"],"summary":"Generate and edit video with Alibaba HappyHorse 1.0: text, image and reference-to-video plus video edits.","description":"Runs Alibaba's HappyHorse 1.0 family through inference.sh: text-to-video, image-to-video, reference-to-video and video editing. It lists the app ID and input shape for each mode.","useWhen":["Expressive character motion","Editing an existing clip with a prompt"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/video/happyhorse","repo":"inference-sh/skills","path":"tools/video/happyhorse","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill happyhorse -a claude-code","codex":"npx skills add inference-sh/skills --skill happyhorse -a codex","cursor":"npx skills add inference-sh/skills --skill happyhorse -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill happyhorse -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["happy_horse"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":9,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-03","addedAt":"2026-10-26","preview":{"kind":"film","hue":190},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ec3fb30d7af0/inference-sh-happyhorse.mp4","w":408,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRogBAABXRUJQVlA4IHwBAABwCACdASogADgAPsVOn0unpCKht/VcAPAYiWMAp0fWTkgS7WqifH1MpXeuP0YtalQRXhkEEiNamnKLhd2fFiO4p3SVqiIsn6E2ehqAAHjRdXyvhIHE/kmGuKg528vdyZ/k7s+6wirtPHWdClf6dzDyg8eWtwt0l7gluhOjs3r+/3YuUeVL8Ejrhxt3g5t/JwTZUSFXyT/YRvSeRTtsMl622CtKFX/ZnB5AqVord28H0vcs+FkKap2HQ+i+4B9VYR2ySr+AV2f3rAQwCQCVYcMDEaEHHSSzYC0+a08PJF5ibv8ekqiKuxQzpfiPOZwoO1PhdzKeKVhW7cDMheFrh+Ch51f8bHUAFoRmz5pXA32hn+P5+FM10RvaM16kRSiOz5Z1tAJCI8LC7by4DCpJly0bCSaW0xIJbIqXfolxcfY9ICZ2TfnKRT13u2T8sGg2SAaAB6fZYWUlQEjNB6G7tf8Qz7OOs1oOM9Xsy55d7H2FlXojJSHACwTqEt0AAA==","source":"https://raw.githubusercontent.com/modelstudioai/awesome-happyhorse-prompts/main/videos/t2v/t2v_case12.mp4","page":"https://github.com/modelstudioai/awesome-happyhorse-prompts/blob/main/cases/t2v.en.md","credit":"Alibaba Cloud Model Studio (HappyHorse 1.0)","rights":"publisher-site","note":"HappyHorse 1.0 text-to-video case from Alibaba Cloud Model Studio's official prompt repo: an orange-jacketed skier outruns a huge avalanche, from aerial shot to close tracking","bytes":507404,"addedAt":"2026-10-27"}},{"id":"inference-sh/image-to-video","slug":"inference-sh-image-to-video","name":"Image to Video","skillName":"image-to-video","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["image-to-video","camera","prompting"],"summary":"Animate stills into video: pick the right model, then prompt motion and camera moves that hold together.","description":"A still-to-video guide for inference.sh that compares Wan 2.5 image-to-video, Seedance, Fabric and Grok Video and says when to use each. It also teaches motion prompting and which camera movements to ask for.","useWhen":["Animating a photo or illustration","Choosing an image-to-video model","Writing motion and camera prompts"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/video/image-to-video","repo":"inference-sh/skills","path":"tools/video/image-to-video","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill image-to-video -a claude-code","codex":"npx skills add inference-sh/skills --skill image-to-video -a codex","cursor":"npx skills add inference-sh/skills --skill image-to-video -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill image-to-video -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["wan_2_5","seedance_2","veed_fabric_1_0","grok_imagine"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":11,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"film","hue":190},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b6de4a604e87/inference-sh-image-to-video.mp4","w":720,"h":404,"duration":5,"blur":"data:image/webp;base64,UklGRugAAABXRUJQVlA4INwAAADwBQCdASogABIAPtFYpk0oJSOiMBgIAQAaCWcAyJ20XGBVLNdWYX7jZc2qdu84xgQgFyEI30q6AAD82LB+TMPZl7s0+GrZQKyEZ3ZAU7d/aCx4ov0YS/AjdP/MdgO5A0YE5w06JK/LFhlW5+CJzfqCTZntTUSLeqO6IoT4ttpfaBG8dyD/AYTSnmkOBGpdWPE1Y3prv0v5LImKvxN64FXbeOrXvcAzpukGSrDKztWxzGwIN+dxl4NFzg3UhzAER6uBKjyrlOpvJjZfB+peg3BF2HQW1XaQkBz5AAAA","source":"https://storage.googleapis.com/falserverless/example_outputs/wan-25-i2v-output.mp4","page":"https://fal.ai/models/fal-ai/wan-25-preview/image-to-video","credit":"fal (Wan 2.5 image-to-video example)","rights":"publisher-site","note":"Wan 2.5 image-to-video output from fal's model page (the skill's falai/wan-2-5-i2v app): a still of a white dragon warrior animated with a slow push-in that circles to a close-up","bytes":272747,"addedAt":"2026-10-27"}},{"id":"inference-sh/p-video","slug":"inference-sh-p-video","name":"P-Video","skillName":"p-video","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["pruna","wan","fast-video"],"summary":"Generate fast 720p/1080p video with audio using Pruna P-Video and Wan text- and image-to-video.","description":"Runs Pruna's P-Video and Wan models through inference.sh for text-to-video and image-to-video. Generation is fast, at 720p or 1080p, with audio support.","useWhen":["Quick, low-cost video drafts","Wan text- or image-to-video"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/video/p-video","repo":"inference-sh/skills","path":"tools/video/p-video","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill p-video -a claude-code","codex":"npx skills add inference-sh/skills --skill p-video -a codex","cursor":"npx skills add inference-sh/skills --skill p-video -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill p-video -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["p-video","wan-t2v","wan-i2v"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":10,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-03","addedAt":"2026-10-26","preview":{"kind":"film","hue":190},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/8ae0f83834af/inference-sh-p-video.mp4","w":720,"h":408,"duration":10,"blur":"data:image/webp;base64,UklGRgwBAABXRUJQVlA4IAABAACwBQCdASogABIAPtFUokuoJKMhsAgBABoJYwCdEf/l3KMEDMU459Ql7ipgqkQdosKfYEGWOgAAzj8vtnhLfSRlGjrpKGjYI1s2GxiV+1XzYCca5YDOc4xi4NLUvLXOPQ1HXNfe6TMbM/sNr0hco+dujHNco+G2GRkEtWx2J88J0FrSsfr3zmK8nT2KeK7/E5R+Fjl0ixGTnAGIFzlEaLN3d08pT7PjxhekDSLF4KWm/lsfp2JnltgGjwIgv5/iTzLPdMp2Z8hq/JzIhQ8r6m+byvO9uJNxOcNswllyt3AYf3p1mM6xcATDx09V4WNkT16mT4MPoHaCf1WyAgW0AAAA","source":"https://huggingface.co/datasets/pruna-test/documentation-media/resolve/main/prompt_guide/p-video/not-draft.mp4","page":"https://docs.pruna.ai/en/stable/docs_pruna_endpoints/performance_models/p-video.html","credit":"Pruna AI (P-Video docs example)","rights":"publisher-site","note":"P-Video image-to-video example from Pruna's docs (1080p, 48 fps): 'The knight is walking through the medieval village and enters the castle gate'; the gate swings open at the end","bytes":501404,"addedAt":"2026-10-27"}},{"id":"inference-sh/p-video-avatar","slug":"inference-sh-p-video-avatar","name":"P-Video Avatar","skillName":"p-video-avatar","type":"skill","status":"live","stream":"vendors","category":"talking-head","tags":["avatar","lip-sync","presenter"],"summary":"Turn one portrait into a speaking avatar video with Pruna P-Video-Avatar, its built-in TTS or your audio.","description":"Generates talking-head avatar videos from a portrait with Pruna P-Video-Avatar through inference.sh: text-to-avatar with built-in TTS (30 voices, 10 languages) or audio-driven avatars, at 720p or 1080p. The vendor pitches it as much faster and cheaper than competing avatar models.","useWhen":["An AI presenter from a single photo","Product demos or explainers with a talking head","Multilingual avatar videos"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/video/p-video-avatar","repo":"inference-sh/skills","path":"tools/video/p-video-avatar","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill p-video-avatar -a claude-code","codex":"npx skills add inference-sh/skills --skill p-video-avatar -a codex","cursor":"npx skills add inference-sh/skills --skill p-video-avatar -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill p-video-avatar -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["p-video-avatar"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":9,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-03","addedAt":"2026-10-26","preview":{"kind":"avatar","hue":190},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/681ff98d5008/inference-sh-p-video-avatar.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRvgAAABXRUJQVlA4IOwAAAAwBgCdASogABIAPtFapU0oJSOiMBgIAQAaCWMAtOzybg5xyKs2aVtZCrcPxdAAbYZDaO9Y9r7nLh0AAP7vqjmmaVzq7uydfIzeWMWNF0MHfPNSHTm9LPUc/cTX7NSxnGbMuB+OYhqFLckYm8gt00exzStKqgpDgREQcGBlAz5SvbqVrdP/fvPLutMnuX9o65dgFRMrVT51acPc57+eJml8dZ85MAIvgasA5qBIEhoH6FuwKkZD/EsEqu6Gy7A0OABbs0fI4V0uamXVIlA2uzyhHY407QvX+7hLmT/eT2Jn+ktMV/8TOa3/ieAAAA==","source":"https://cloud.inference.sh/t/65hmp52a/76dpkxvt.mp4","page":"https://inference.sh/blog/guides/p-video-avatar-talking-head-generation","credit":"Pruna AI × inference.sh (P-Video-Avatar launch reel)","rights":"publisher-site","note":"P-Video-Avatar output from the launch reel on inference.sh's blog: a presenter generated from one portrait, lip-synced with built-in TTS (burned-in captions from the reel)","bytes":127139,"addedAt":"2026-10-27"}},{"id":"inference-sh/remotion-render","slug":"inference-sh-remotion-render","name":"Remotion Render (inference.sh)","skillName":"remotion-render","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["remotion","render","react","cloud-render"],"summary":"Render React/Remotion component code to MP4 in the cloud, without a local Remotion setup.","description":"Sends TSX component code to inference.sh and gets an MP4 back, so an agent can render Remotion code without a local render environment. It supports Remotion APIs such as `useCurrentFrame`, `useVideoConfig`, `spring`, `interpolate`, `AbsoluteFill` and `Sequence`.","useWhen":["Rendering Remotion code with no local setup","Motion graphics or text animations from TSX"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/video/remotion-render","repo":"inference-sh/skills","path":"tools/video/remotion-render","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill remotion-render -a claude-code","codex":"npx skills add inference-sh/skills --skill remotion-render -a codex","cursor":"npx skills add inference-sh/skills --skill remotion-render -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill remotion-render -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":14,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-12","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":190},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/c3656645addf/inference-sh-remotion-render.mp4","w":720,"h":404,"duration":5,"blur":"data:image/webp;base64,UklGRlQAAABXRUJQVlA4IEgAAADwAwCdASogABIAPtFYpEuoJSOhsAgBABoJZwAAW+v6Ckms071FRiPwAP72BvzczXKrnJSny7TzM2z3YAJWy1fK+ryW+fAAAAA=","source":"https://stream.mux.com/vKvV6aa7GXGlR01cmpc6J8Zz4Gkj9d2hBSnVYoef00900I/high.mp4","page":"https://www.remotion.dev/templates/hello-world","credit":"Remotion (Hello World template)","rights":"publisher-site","note":"Rendered output of Remotion's official Hello World template: spring and interpolate animations bring in a logo and the title 'Welcome to Remotion', the kind of TSX composition the skill renders to MP4","bytes":59181,"addedAt":"2026-10-27"}},{"id":"inference-sh/seedance","slug":"inference-sh-seedance","name":"Seedance 2.0","skillName":"seedance","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["seedance","video-with-audio","reference-to-video"],"summary":"Make 4–15 s videos with synced audio in Seedance 2.0: text, image or reference-to-video up to 1080p.","description":"Runs ByteDance Seedance 2.0 through inference.sh in Pro, Fast and Studio variants for text-to-video, image-to-video and multimodal reference-to-video with synchronized audio, up to 1080p and 4–15 seconds. Studio variants upload references to a private portrait library for stronger face consistency.","useWhen":["A Seedance clip with sound","Animating an image or references with Seedance","Consistent faces across shots"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/video/seedance","repo":"inference-sh/skills","path":"tools/video/seedance","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill seedance -a claude-code","codex":"npx skills add inference-sh/skills --skill seedance -a codex","cursor":"npx skills add inference-sh/skills --skill seedance -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill seedance -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["seedance_2","seedance_2_fast_preview"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":10,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-03","addedAt":"2026-10-26","preview":{"kind":"film","hue":190},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/8fcbe88cd691/inference-sh-seedance.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRsAAAABXRUJQVlA4ILQAAADwBQCdASogABIAPtFWpk2oJCOiMBgIAQAaCWQAnTLLvgASxkoKWz+SQC7Tkz26QFOSHlPqCXGOAAD+6fkkkX6nl1Yh69hYcELCMJ0977KoiatTbvlFn5CIknfPNLeTrBfNeTHWYKZABvZ3KBxrubVpZYB3HjKXbCz2ACgwllFAWzdquQGxn6oGZLg78UyUCan+G1Mt5/31rTUEiDu8tuwqJeLcq1hi9kJ+r4nQmeU4W/nCQAA=","source":"https://sf-bpcms.bytepluscdn.com/obj/byteplus-assets/seedance/optimized/20260826-144354.mp4","page":"https://www.byteplus.com/en/activity/seedance2-0","credit":"ByteDance BytePlus (Dreamina Seedance 2.0)","rights":"publisher-site","note":"Showcase reel from BytePlus's Dreamina Seedance 2.0 page (ByteDance's own cloud): a reader in a museum hall gets glowing eyes and transforms into a golden-armored hero swinging a fiery sword","bytes":409304,"addedAt":"2026-10-27"}},{"id":"inference-sh/ai-content-pipeline","slug":"inference-sh-ai-content-pipeline","name":"AI Content Pipeline","skillName":"ai-content-pipeline","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["pipeline","video","voiceover","social"],"summary":"Chain image, video, voice and music models into one pipeline: generate, animate, voice over, merge.","description":"Builds multi-step AI content pipelines on inference.sh that combine image, video, audio and text, for example generating an image, animating it, adding a voiceover and merging it with music. It uses FLUX, Veo, Wan, Kokoro TTS, OmniHuman, a media merger and upscaling for YouTube, social and marketing content.","useWhen":["End-to-end video from a prompt","Batch content for YouTube or social"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/content/ai-content-pipeline","repo":"inference-sh/skills","path":"guides/content/ai-content-pipeline","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill ai-content-pipeline -a claude-code","codex":"npx skills add inference-sh/skills --skill ai-content-pipeline -a codex","cursor":"npx skills add inference-sh/skills --skill ai-content-pipeline -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill ai-content-pipeline -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_dev","veo_3_1_fast","wan_2_5","kokoro","omnihuman_v1_5","topaz"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":190},"adds":"tool","media":{"type":"none","reason":"Prompting/workflow guide (multi-step content pipelines across many apps); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/content/ai-content-pipeline (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/ai-podcast","slug":"inference-sh-ai-podcast","name":"AI Podcast Video","skillName":"ai-podcast","type":"skill","status":"live","stream":"vendors","category":"talking-head","tags":["podcast","avatar","multi-speaker"],"summary":"Generate a multi-person talking-head podcast video from scratch: characters, voices, avatars, stitching.","description":"Creates multi-person talking-head podcast videos from scratch on inference.sh. Characters come from Gemini image models, voices from Inworld TTS and animation from P-Video-Avatar, and the clips are stitched into one conversation video.","useWhen":["A video podcast without filming","A multi-speaker conversation video"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/content/ai-podcast","repo":"inference-sh/skills","path":"guides/content/ai-podcast","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill ai-podcast -a claude-code","codex":"npx skills add inference-sh/skills --skill ai-podcast -a codex","cursor":"npx skills add inference-sh/skills --skill ai-podcast -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill ai-podcast -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["nano_banana_pro","inworld-tts","p-video-avatar"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"avatar","hue":190},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2bd3f813cf7a/inference-sh-ai-podcast.mp4","w":720,"h":396,"duration":12,"blur":"data:image/webp;base64,UklGRjYBAABXRUJQVlA4ICoBAACQBgCdASogABIAPtFUo0uoJKMhsAgBABoJbACdMuN/d6y6LGwLYCJwEjnukxU9fSZIJOp/Dfv0R2K2DoLgAPaW9dMrr8HhXh6Jgv03Dqe8O2wiHUp3ky9xwKkf4Y626p5mQl9kJEz9CbDpMrVlrHXsmGX5c4tQDujZBNmd3Y/9mVKwgrwlhCLBz7CZQoD/TPcVt/Cc8BBpXfV3HhONBG4yUfZNgqT9Y/96B516lOa5pz6OgIgDX8A3RhFB6Ie7w3GUwPYAJP19lermB74+YxI6g6hQQ7IB0w36opyhtb8e7T8k8n7z2Pu/Q6HerDVhMeV42LYjDzpyQFJMtklvhcnlUOMoZXI4uS+yUp9sh4h4fpHpDTmNaWvrvzedU0R+RTXhCLnyEyEVAAAA","source":"https://x.com/inference_sh/status/2055777143120859344","page":"https://x.com/inference_sh/status/2055777143120859344","credit":"inference.sh (@inference_sh)","rights":"creator-post","note":"inference.sh's 'one-shot agent podcast': a multi-speaker AI talking-head podcast (host, the Pruna plum, an Inworld character) made by one agent with P-Video-Avatar + Inworld TTS; cut at the host → plum hand-off","bytes":228416,"addedAt":"2026-10-27"}},{"id":"inference-sh/ai-podcast-creation","slug":"inference-sh-ai-podcast-creation","name":"AI Podcast Creation","skillName":"ai-podcast-creation","type":"skill","status":"live","stream":"vendors","category":"audio","tags":["podcast","audiobook","tts","music"],"summary":"Produce audio podcasts and audiobooks with multi-voice TTS, music beds, intros, outros and ffmpeg.","description":"Creates audio podcasts with text-to-speech, music and editing on inference.sh: multi-voice conversations with Kokoro, Dia TTS or Chatterbox, AI background music, intros and outros. Full episodes are assembled with ffmpeg.","useWhen":["An audio-only podcast episode","An audiobook or narrated article"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/content/ai-podcast-creation","repo":"inference-sh/skills","path":"guides/content/ai-podcast-creation","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill ai-podcast-creation -a claude-code","codex":"npx skills add inference-sh/skills --skill ai-podcast-creation -a codex","cursor":"npx skills add inference-sh/skills --skill ai-podcast-creation -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill ai-podcast-creation -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["kokoro","dia-tts","chatterbox"],"requires":["inference.sh account","belt CLI (`belt login`)","FFmpeg"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"wave","hue":190},"adds":"tool","media":{"type":"none","reason":"Workflow guide for audio-only podcasts (Kokoro TTS voices + infsh/ai-music beds, scripts from Claude). inference.sh has no example of this audio pipeline; its one agent-podcast post is a talking-head video and is used for the separate 'AI Podcast Video' guide","searched":["github.com/inference-sh/skills guides/content/ai-podcast-creation (SKILL.md text plus a generic brand banner)","inference.sh blog, docs/examples and app pages (no podcast audio samples)","x.com/inference_sh media timeline (launch cards and the video-podcast post only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/app-store-screenshots","slug":"inference-sh-app-store-screenshots","name":"App Store Screenshots","skillName":"app-store-screenshots","type":"skill","status":"live","stream":"vendors","category":"native-ui","tags":["aso","app-store","mockups","image"],"summary":"Make App Store and Google Play screenshots to exact specs: sizes, gallery order, mockups and previews.","description":"App Store and Google Play screenshot creation for app store optimization: iOS and Android dimensions, gallery ordering, device mockups and preview videos. Visuals come from FLUX, Seedream and Veo through inference.sh.","useWhen":["Store screenshots for an app launch","An app preview video"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/design/app-store-screenshots","repo":"inference-sh/skills","path":"guides/design/app-store-screenshots","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill app-store-screenshots -a claude-code","codex":"npx skills add inference-sh/skills --skill app-store-screenshots -a codex","cursor":"npx skills add inference-sh/skills --skill app-store-screenshots -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill app-store-screenshots -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_dev","seedream","veo_3_1_fast"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":11,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-03","addedAt":"2026-10-26","preview":{"kind":"cards","hue":190},"adds":"visual","media":{"type":"none","reason":"Prompting/workflow guide (App Store screenshot layout and copy); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/design/app-store-screenshots (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/book-cover-design","slug":"inference-sh-book-cover-design","name":"Book Cover Design","skillName":"book-cover-design","type":"skill","status":"live","stream":"vendors","category":"image","tags":["book-cover","typography","genre"],"summary":"Design book covers that fit their genre: typography rules, sizing, thumbnail tests and AI iterations.","description":"Book cover design with genre conventions for fiction and non-fiction, typography rules, sizing, thumbnail testing and iteration workflows. Artwork comes from FLUX, Grok or Seedream and is upscaled through inference.sh.","useWhen":["A cover for a book or ebook","Testing a cover at thumbnail size"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/design/book-cover-design","repo":"inference-sh/skills","path":"guides/design/book-cover-design","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill book-cover-design -a claude-code","codex":"npx skills add inference-sh/skills --skill book-cover-design -a codex","cursor":"npx skills add inference-sh/skills --skill book-cover-design -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill book-cover-design -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_dev","grok_imagine_image","seedream","topaz"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-17","addedAt":"2026-10-26","preview":{"kind":"grid","hue":190},"adds":"visual","media":{"type":"none","reason":"Prompting/workflow guide (book cover composition and typography); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/design/book-cover-design (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/character-design-sheet","slug":"inference-sh-character-design-sheet","name":"Character Design Sheet","skillName":"character-design-sheet","type":"skill","status":"live","stream":"vendors","category":"characters","tags":["reference-sheet","consistency","lora"],"summary":"Keep a character consistent across AI images with turnarounds, expression sheets, palettes and LoRAs.","description":"Character consistency for AI-generated images: reference sheets with turnaround views and expression sheets, color palettes, style-consistency techniques and LoRA approaches. The sheets are generated with FLUX through inference.sh.","useWhen":["A character reference or turnaround sheet","The same character across many images"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/design/character-design-sheet","repo":"inference-sh/skills","path":"guides/design/character-design-sheet","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill character-design-sheet -a claude-code","codex":"npx skills add inference-sh/skills --skill character-design-sheet -a codex","cursor":"npx skills add inference-sh/skills --skill character-design-sheet -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill character-design-sheet -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_dev"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":11,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-03","addedAt":"2026-10-26","preview":{"kind":"avatar","hue":190},"adds":"visual","media":{"type":"none","reason":"Prompting/workflow guide (character sheets with FLUX); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/design/character-design-sheet (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/logo-design-guide","slug":"inference-sh-logo-design-guide","name":"Logo Design Guide","skillName":"logo-design-guide","type":"skill","status":"live","stream":"vendors","category":"logos","tags":["logo","branding","image","brand-motion"],"summary":"Design logos with AI image models: logo types, prompting techniques, scalability rules and iteration.","description":"Logo design principles and AI image-generation practice for brand identity: logo types, prompting techniques, scalability rules and iteration workflows. Candidates are generated with FLUX, Grok or Seedream through inference.sh.","useWhen":["Logo concepts for a new brand","Iterating on a logo direction"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/design/logo-design-guide","repo":"inference-sh/skills","path":"guides/design/logo-design-guide","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill logo-design-guide -a claude-code","codex":"npx skills add inference-sh/skills --skill logo-design-guide -a codex","cursor":"npx skills add inference-sh/skills --skill logo-design-guide -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill logo-design-guide -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_dev","grok_imagine_image","seedream"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-17","addedAt":"2026-10-26","preview":{"kind":"logo3d","hue":190},"adds":"visual","media":{"type":"none","reason":"Prompting/workflow guide (logo design prompting); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/design/logo-design-guide (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/og-image-design","slug":"inference-sh-og-image-design","name":"OG Image Design","skillName":"og-image-design","type":"skill","status":"live","stream":"vendors","category":"image","tags":["open-graph","social-cards","specs"],"summary":"Design Open Graph and social share images to platform specs, with text placement and branding.","description":"Open Graph and social sharing image design: OG meta tags, Twitter cards and LinkedIn previews, text placement, branding and dynamic generation. Artwork is generated with FLUX through inference.sh.","useWhen":["Share images for a site or blog","Dynamic OG images per page"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/design/og-image-design","repo":"inference-sh/skills","path":"guides/design/og-image-design","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill og-image-design -a claude-code","codex":"npx skills add inference-sh/skills --skill og-image-design -a codex","cursor":"npx skills add inference-sh/skills --skill og-image-design -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill og-image-design -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_dev"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-03","addedAt":"2026-10-26","preview":{"kind":"cards","hue":190},"adds":"visual","media":{"type":"none","reason":"Prompting/workflow guide (OG images rendered via html-to-image); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/design/og-image-design (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/youtube-thumbnail-design","slug":"inference-sh-youtube-thumbnail-design","name":"YouTube Thumbnail Design","skillName":"youtube-thumbnail-design","type":"skill","status":"live","stream":"vendors","category":"image","tags":["thumbnail","youtube","ctr"],"summary":"Design YouTube thumbnails that read on a phone: dimensions, contrast, safe zones, text and faces.","description":"A YouTube thumbnail design guide: exact dimensions, contrast rules, mobile preview, safe zones, text placement, facial-expression psychology and A/B testing. FLUX and Seedream generate the image through inference.sh.","useWhen":["A thumbnail for a video","Improving click-through on existing thumbnails"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/design/youtube-thumbnail-design","repo":"inference-sh/skills","path":"guides/design/youtube-thumbnail-design","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill youtube-thumbnail-design -a claude-code","codex":"npx skills add inference-sh/skills --skill youtube-thumbnail-design -a codex","cursor":"npx skills add inference-sh/skills --skill youtube-thumbnail-design -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill youtube-thumbnail-design -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_dev","seedream"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":11,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-03","addedAt":"2026-10-26","preview":{"kind":"grid","hue":190},"adds":"visual","media":{"type":"none","reason":"Prompting/workflow guide (YouTube thumbnail design rules); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/design/youtube-thumbnail-design (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/video-prompting-guide","slug":"inference-sh-video-prompting-guide","name":"Video Prompting Guide","skillName":"video-prompting-guide","type":"skill","status":"live","stream":"vendors","category":"prompting","tags":["video","camera","veo","seedance","kling"],"summary":"Write prompts that video models follow: shot types, camera moves and per-model tips from Veo to Sora.","description":"Techniques for AI video prompts across Veo, Seedance, Wan, Grok, Kling, Runway, Pika and Sora: shot types, camera movement, and subject and action description. It adds model-specific strategies with examples that run on inference.sh.","useWhen":["Writing a video prompt","Porting a prompt between video models"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/prompting/video-prompting-guide","repo":"inference-sh/skills","path":"guides/prompting/video-prompting-guide","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill video-prompting-guide -a claude-code","codex":"npx skills add inference-sh/skills --skill video-prompting-guide -a codex","cursor":"npx skills add inference-sh/skills --skill video-prompting-guide -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill video-prompting-guide -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["veo_3_1","seedance_2","wan_2_5","grok_imagine"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":6,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"notes","hue":190},"adds":"tool","media":{"type":"none","reason":"Prompting/workflow guide (prompt writing for Veo, Seedance and Grok video); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/prompting/video-prompting-guide (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/ai-social-media-content","slug":"inference-sh-ai-social-media-content","name":"AI Social Media Content","skillName":"ai-social-media-content","type":"skill","status":"live","stream":"vendors","category":"shorts","tags":["tiktok","reels","shorts","thumbnails","ads"],"summary":"Produce reels, shorts, images and thumbnails for TikTok, Instagram, YouTube and X with one toolkit.","description":"Creates social media content for TikTok, Instagram, YouTube and X: images, videos, reels, shorts, thumbnails, captions and hashtags. It uses FLUX, Veo, Seedance, Wan, Kokoro TTS and an LLM for copy through inference.sh.","useWhen":["A batch of social posts with video","Reels or Shorts from a topic"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/social/ai-social-media-content","repo":"inference-sh/skills","path":"guides/social/ai-social-media-content","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill ai-social-media-content -a claude-code","codex":"npx skills add inference-sh/skills --skill ai-social-media-content -a codex","cursor":"npx skills add inference-sh/skills --skill ai-social-media-content -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill ai-social-media-content -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_dev","veo_3_1","seedance_2","kokoro"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":7,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-18","addedAt":"2026-10-26","preview":{"kind":"cards","hue":190},"adds":"visual","media":{"type":"none","reason":"Prompting/workflow guide (social posts across video, image and text apps); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/social/ai-social-media-content (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/social-media-carousel","slug":"inference-sh-social-media-carousel","name":"Social Media Carousel","skillName":"social-media-carousel","type":"skill","status":"live","stream":"vendors","category":"image","tags":["carousel","instagram","linkedin","design"],"summary":"Design swipeable carousels for Instagram, LinkedIn and X: slide structure, hooks, text hierarchy.","description":"Multi-slide carousel design for Instagram, LinkedIn and X: slide structure, hooks, text hierarchy, swipe psychology and platform specs. Slide visuals are generated with FLUX through inference.sh.","useWhen":["An Instagram or LinkedIn carousel","Turning a post into slides"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/guides/social/social-media-carousel","repo":"inference-sh/skills","path":"guides/social/social-media-carousel","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill social-media-carousel -a claude-code","codex":"npx skills add inference-sh/skills --skill social-media-carousel -a codex","cursor":"npx skills add inference-sh/skills --skill social-media-carousel -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill social-media-carousel -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_dev"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md"],"stats":{"installs":7,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-03","addedAt":"2026-10-26","preview":{"kind":"cards","hue":190},"adds":"visual","media":{"type":"none","reason":"Prompting/workflow guide (carousel slides via html-to-image); inference.sh publishes no example output for it, and its SKILL.md has at most a generic neon brand banner","searched":["github.com/inference-sh/skills guides/social/social-media-carousel (SKILL.md text, no media)","inference.sh blog, docs/examples and app pages (no example output for this guide","app pages only carry decorative cover art)","x.com/inference_sh media timeline (model launch cards only)"],"addedAt":"2026-10-27"}},{"id":"inference-sh/infsh-cli","slug":"infsh-cli","name":"inference.sh CLI","skillName":"infsh-cli","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["cli","model-runner","image","video","audio"],"summary":"Log in to inference.sh and run its catalog of AI apps — image, video, audio, LLMs, search — from one CLI.","description":"Sets up and drives inference.sh's `belt` CLI: logging in (or setting `INFERENCE_API_KEY` for agents), browsing apps and running them with JSON input. The catalog spans FLUX, Veo, Seedance, Grok, OmniHuman and many more for image, video, 3D, LLM and search tasks.","useWhen":["Setting up the belt CLI","Running any inference.sh app","Browsing which apps exist"],"publisher":{"name":"inference.sh","handle":"inference-sh","url":"https://inference.sh","avatar":"https://github.com/inference-sh.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/inference-sh/skills/tree/main/tools/infsh-cli","repo":"inference-sh/skills","path":"tools/infsh-cli","license":"MIT"},"install":{"claude-code":"npx skills add inference-sh/skills --skill infsh-cli -a claude-code","codex":"npx skills add inference-sh/skills --skill infsh-cli -a codex","cursor":"npx skills add inference-sh/skills --skill infsh-cli -a cursor","gemini-cli":"npx skills add inference-sh/skills --skill infsh-cli -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_dev","veo_3_1","seedance_2","grok_imagine","omnihuman_v1_5"],"requires":["inference.sh account","belt CLI (`belt login`)"],"cost":{"note":"Billed by inference.sh"},"files":["SKILL.md","references/app-discovery.md","references/authentication.md","references/cli-reference.md","references/running-apps.md"],"stats":{"installs":12,"stars":781,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-12","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":190},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/87f9dcb7e365/infsh-cli.mp4","w":720,"h":554,"duration":10,"blur":"data:image/webp;base64,UklGRroAAABXRUJQVlA4IK4AAABQBgCdASogABgAPrlMnUunJKMht+gA4BcJZgCpJ5HzNYAegB0f4JRHTt3oUNv/npYXypJu6MjNvJfbgAD+6hq8Bem7eekFKeRvcwWx9ibbRFj3BXG8o7Cqzxs5fbM4JHYomHi+MGsxS4UiykACjV/Zn3xCJZT6sgZMshitDW+nqQm67zdde5bAffzIquaWC2pTvlCfu29MQUEsjQQLJ2B2i9vTxKFXG21D3ZEAAAA=","source":"https://x.com/inference_sh/status/2033891339176116299","page":"https://x.com/inference_sh/status/2033891339176116299","credit":"inference.sh (@inference_sh)","rights":"creator-post","note":"inference.sh's demo of an agent (Hermes Agent) driving the inference.sh CLI: it generates 'a cat with a top hat in anime style' with p-image, then animates it with p-video; the clip shows the terminal and the resulting video","bytes":168470,"addedAt":"2026-10-27"}},{"id":"runwayml/runway-dev","slug":"runway-dev","name":"Runway Dev","skillName":"runway-dev","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["api","sdk","video","image","audio"],"summary":"Build Runway's image, video and audio models into your app: live API contracts, SDK and server-side keys.","description":"Runway's router skill for application integrations with Runway Dev: inspect the app, connect Runway's Dev MCP when useful, resolve the current API contracts, integrate through the official SDK and keep credentials server-side. It hands off to the surface skills for direct models, Model Routers, Recipes and published Workflows.","useWhen":["Adding Runway generation to an application","Debugging an existing Runway integration","Choosing between models, routers, recipes and workflows"],"publisher":{"name":"Runway","handle":"runwayml","url":"https://runwayml.com","avatar":"https://github.com/runwayml.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/runwayml/skills/tree/main/skills/runway-dev","repo":"runwayml/skills","path":"skills/runway-dev","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add runwayml/skills\nclaude plugin install runway-api@runway-dev","codex":"npx skills add runwayml/skills --skill runway-dev -a codex","cursor":"npx skills add runwayml/skills --skill runway-dev -a cursor","gemini-cli":"npx skills add runwayml/skills --skill runway-dev -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Runway API key (RUNWAYML_API_SECRET)","Runway SDK (Node.js or Python)"],"cost":{"note":"Billed in Runway credits"},"files":["SKILL.md"],"stats":{"installs":803,"stars":74,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-16","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":100},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b4d7720c6d08/runway-dev.mp4","w":576,"h":720,"duration":5,"blur":"data:image/webp;base64,UklGRowBAABXRUJQVlA4IIABAABwCACdASogACgAPtFWpU0oJCOiMBVaqQAaCUAXye+vvZ8NK561PdkBkAkJ6ua8BE7/UfjzsOFkX0h/VRU0H9UZgOqZYRpUPDF6SLkgAPz0cJmMHfOlWvIED9c5irm/qvhZICi3JtNEGorK4Ssrs8Wi7v2quF/ncbdIXhsHOw89ia+nrdmb+dEA2QZ6Fu7yvO5iEVlouDD89viZjkWD6IIGWiRLTkBakwSdodCwzwNe85Fr8XfYVJ7bz6vUyszuwmtRWqxspV3EIj08VK0c+bHAJ8X/v6ee0UiPjrBPANOlI/Nejeop1Nf/aYKol4LpywqnfSdEGcomCQCEFYRBwrMQIWpty4JRLGPTeoYx4kn5JOsmm66JzPzAw21gvZxuBvZbb7ExQN9kh67Gg78kTk7I21XjFlQ1BUpgmc/CzPzWmqIVqGKU6hnPfffH/+tNIApnZUw/xUsRKb0ErvcHUq7JOdpYF9r6c6Ap3YH40nD62Baq6xgyc8MxQkNtfXgAAAA=","source":"https://d3phaj0sisr2ct.cloudfront.net/devportal/learn/fashion-workroom-on-location-v1.mp4","page":"https://dev.runway.com/learn/fashion-workroom","credit":"Runway","rights":"publisher-site","note":"On-location shot from Runway's Fashion Workroom starter app — an app a coding agent builds on Runway Dev (models picked by Model Routers) from one prompt","bytes":346674,"addedAt":"2026-10-27"}},{"id":"runwayml/runway-dev-model-routers","slug":"runway-dev-model-routers","name":"Runway Model Routers","skillName":"runway-dev-model-routers","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["api","routing","video","image"],"summary":"Send generation through a saved Runway Model Router config instead of hard-coding one model.","description":"Routes an application's image, video or audio generation through a saved Runway Model Router configuration, and inspects or manages routers on request. It resolves the live config and current router docs, and explains why a routed request landed on a given model.","useWhen":["Swapping models without code changes","Inspecting or editing a Model Router"],"notFor":["A fixed, direct model endpoint (use Runway Dev Models)"],"publisher":{"name":"Runway","handle":"runwayml","url":"https://runwayml.com","avatar":"https://github.com/runwayml.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/runwayml/skills/tree/main/skills/runway-dev-model-routers","repo":"runwayml/skills","path":"skills/runway-dev-model-routers","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add runwayml/skills\nclaude plugin install runway-api@runway-dev","codex":"npx skills add runwayml/skills --skill runway-dev-model-routers -a codex","cursor":"npx skills add runwayml/skills --skill runway-dev-model-routers -a cursor","gemini-cli":"npx skills add runwayml/skills --skill runway-dev-model-routers -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Runway API key (RUNWAYML_API_SECRET)","Runway SDK (Node.js or Python)"],"cost":{"note":"Billed in Runway credits"},"files":["SKILL.md"],"stats":{"installs":141,"stars":74,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-16","addedAt":"2026-10-26","preview":{"kind":"cards","hue":100},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e4c98d344d76/runway-dev-model-routers.mp4","w":720,"h":404,"duration":6,"blur":"data:image/webp;base64,UklGRuoAAABXRUJQVlA4IN4AAADwBQCdASogABIAPtFWpEuoJKOhsAgBABoJZwDBzywToIxd4pmG6clU7Z5y/4lXvZ3qq32D+3JbAAD+7XyXc+iFs1Y7qmMKnASLTi6SHxtwwIF5Ha3W4+wxS/LEOWhZaLyhqacPrVaehVy1obRPVYR0Z1u1mQmvJ2zht8B0+iDd1d3OU0tnsFLqMKe4XO+xUP7m4AlvUndv0/cAvznu7BXyRi/nAzqrAWXNz9JBO+YZZlVVGCxa92RUHNESgtFbzh5g7XtWnLLr53g2QukdDfEm4sG1nIKvg88EioGmAAA=","source":"https://stream.mux.com/svhHk5P5TIcGEa6nFt004MggRZkdEdRFzRhVTtvmCQWo.m3u8","page":"https://runway.com/news/developers/evaluating-runway-model-router","credit":"Runway","rights":"publisher-site","note":"Output picked by a quality-optimized Model Router with a $1 cap (routed to Gemini Omni Flash 1.0) for the 'OPEN awning' image-to-video prompt in Runway's router evaluation post","bytes":300713,"addedAt":"2026-10-27"}},{"id":"runwayml/runway-dev-models","slug":"runway-dev-models","name":"Runway Dev Models","skillName":"runway-dev-models","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["api","video","image","audio"],"summary":"Add a direct Runway model endpoint to your app for image, video or audio, following the live contract.","description":"Adds or maintains a direct Runway Dev model endpoint in an application, covering image, video and audio generation and task handling. It discovers current model access and constraints, follows the exact endpoint contract and integrates through the official SDK.","useWhen":["Calling one specific Runway model from code","Handling Runway task polling and outputs"],"notFor":["Configurable, model-agnostic routing (use Runway Model Routers)"],"publisher":{"name":"Runway","handle":"runwayml","url":"https://runwayml.com","avatar":"https://github.com/runwayml.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/runwayml/skills/tree/main/skills/runway-dev-models","repo":"runwayml/skills","path":"skills/runway-dev-models","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add runwayml/skills\nclaude plugin install runway-api@runway-dev","codex":"npx skills add runwayml/skills --skill runway-dev-models -a codex","cursor":"npx skills add runwayml/skills --skill runway-dev-models -a cursor","gemini-cli":"npx skills add runwayml/skills --skill runway-dev-models -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Runway API key (RUNWAYML_API_SECRET)","Runway SDK (Node.js or Python)"],"cost":{"note":"Billed in Runway credits"},"files":["SKILL.md"],"stats":{"installs":704,"stars":74,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-16","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":100},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0ed62e35b84a/runway-dev-models.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRg4BAABXRUJQVlA4IAIBAACwBgCdASogABIAPtFWpEuoJKOhsAgBABoJQBajXFkTP/RYH0CIwDOMONPSvliDwzQa5RDqiu3EYve9Jk/MAAD+oUSQcpfxO9/Bux5wjEXaNzEO5CaSR1mG3bKsDuC5P/p30Tb0ozQ7U9vpbhdpC46ANPAJVxIQDRGO1X7WDmiTIOeNB3TKH6J0oGsfDipVWIvAhIPZhxZ2vj0+B4MShFB1kPffISlI8aFhdH8sOiHbZ1/wYHqq8EH9dfIPaYK6SVYMXHIdBoC7g7XQikBDrSF4RMKftCuEhQGrVPWcxVYO1BkKXoVm0cKrCm77H/jY87gscapH+eqiMR3BvbKaLvSAAAA=","source":"https://d3phaj0sisr2ct.cloudfront.net/devportal/playground-examples/landing-rwdev-creative-gen4-5.mp4","page":"https://dev.runway.com/","credit":"Runway","rights":"publisher-site","note":"Gen-4.5 example on the Runway Dev landing page (the text-to-video endpoint used in its SDK sample); 0-8 s","bytes":466987,"addedAt":"2026-10-27"}},{"id":"runwayml/runway-dev-recipes","slug":"runway-dev-recipes","name":"Runway Recipes","skillName":"runway-dev-recipes","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["api","workflows","video","image"],"summary":"Integrate Runway's prebuilt multi-step image and video Recipes using the live Recipe guide.","description":"Integrates or maintains a documented Runway Dev Recipe, a prebuilt multi-step image or video workflow. It reads the live Recipe guide for the current inputs, version and SDK method rather than relying on memory.","useWhen":["Using a prebuilt multi-step Runway workflow from code","Maintaining an existing Recipe call"],"publisher":{"name":"Runway","handle":"runwayml","url":"https://runwayml.com","avatar":"https://github.com/runwayml.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/runwayml/skills/tree/main/skills/runway-dev-recipes","repo":"runwayml/skills","path":"skills/runway-dev-recipes","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add runwayml/skills\nclaude plugin install runway-api@runway-dev","codex":"npx skills add runwayml/skills --skill runway-dev-recipes -a codex","cursor":"npx skills add runwayml/skills --skill runway-dev-recipes -a cursor","gemini-cli":"npx skills add runwayml/skills --skill runway-dev-recipes -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Runway API key (RUNWAYML_API_SECRET)","Runway SDK (Node.js or Python)"],"cost":{"note":"Billed in Runway credits"},"files":["SKILL.md"],"stats":{"installs":173,"stars":74,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-16","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":100},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/1caab3a3cb1b/runway-dev-recipes.mp4","w":404,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRvQBAABXRUJQVlA4IOgBAABQCgCdASogADoAPs1UpUunpKOhsBv6APAZiWIArDNwvtQjyrG5BV7uBe8tr/2ScKmnqdvH5UojXkBToKeE+wRsd/ie6siwDQQGc1Kuhdnq7RH1gbusKLbddB0AAP71BlWCIyN9mRdWdZ/d5rNBR6pbC9sm0Ud0j/MjSlOZSRirXky4APIvfObgb/TJt7dsRh65xpuLbnLkYbH1W+NuApnDft6f1uYkqRLMmT7ZjDHVn9Q0cR2Lkv/4M5LO5ZkgU2KBTPQFCeqAx2HyEd/46cyQfgBPNysdGG8/pDKM/SlE1u7ARjvhfmvH8splRftf2IQVktxGrqrb6ledsQwNCocWAHbKxIpc+PbLAAGpMW4K9ok25xrd72/DhwjgZXKOnqgRLzGBiNc4XMa+pVWDCcCjJUinyL6pPkF17gC2GCFIQeHt1fXUXfLaRgT7nBIDluKg+sYbMsT/6FLlOolIou+isDK2BQppFEHPAYkrJySHZp/1wEQNTIvVGZ606tVhijHJYKAoqTWbD1aw+K38dMLKpe/w8XA+P1CgCtW4+1HMyy43czugMSq4j9ln0QGtmh4B/7v4DQO6f+0mQtqBHXEWPnf2PhBDhh1m6+jWxdSgRnv3/qE2h1MnKQznPTKnJnwTbWyGhYAAAA==","source":"https://d3phaj0sisr2ct.cloudfront.net/devportal/learn/generate-ugc-videos-cream-recipe-5fa7e229.mp4","page":"https://dev.runway.com/learn/generate-ugc-videos","credit":"Runway","rights":"publisher-site","note":"Product UGC Recipe output from Runway's UGC guide ('a UGC video in one call'): a creator presenting a face cream to camera, 9:16; 0-8 s, audio not kept","bytes":241217,"addedAt":"2026-10-27"}},{"id":"runwayml/runway-dev-workflows","slug":"runway-dev-workflows","name":"Runway Dev Workflows","skillName":"runway-dev-workflows","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["api","workflows"],"summary":"Call a Workflow published in the Runway app from your application through the Dev API.","description":"Connects an application to a Workflow published in the Runway app through the Dev API, or maintains an existing invocation. Project-specific connection details come from live setup guidance, and it does not guess at unpublished workflow behavior.","useWhen":["Running a published Runway Workflow from code"],"publisher":{"name":"Runway","handle":"runwayml","url":"https://runwayml.com","avatar":"https://github.com/runwayml.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/runwayml/skills/tree/main/skills/runway-dev-workflows","repo":"runwayml/skills","path":"skills/runway-dev-workflows","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add runwayml/skills\nclaude plugin install runway-api@runway-dev","codex":"npx skills add runwayml/skills --skill runway-dev-workflows -a codex","cursor":"npx skills add runwayml/skills --skill runway-dev-workflows -a cursor","gemini-cli":"npx skills add runwayml/skills --skill runway-dev-workflows -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Runway API key (RUNWAYML_API_SECRET)","Runway SDK (Node.js or Python)"],"cost":{"note":"Billed in Runway credits"},"files":["SKILL.md"],"stats":{"installs":90,"stars":74,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-16","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":100},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/00187208d6d5/runway-dev-workflows.webp","w":960,"h":960,"blur":"data:image/webp;base64,UklGRl4BAABXRUJQVlA4IFIBAACQCACdASogACAAPtFYpE0oJKMiMBgIAQAaCWwAnTKEhFeqxIDbAXarvMVmCNA+ga011IiyCGHFiDyIHiK6m7YAyd6y2nAnAVOvkjJwAAD+5mCuXEO9cIQAtd0RPRrE+GYKDdttisrZeLnqunTOMkWt1rnzsWtu6meo5SZ/36YV+dCR4cZf9ou/p/z2MLOTcHzwVIyXsmGRsih4HHMEnBxUWBP+ChDJEhOKR80PGOaSTM24lM3gj8fa5hRWhpHtcUMzxD0NlDl8aD1KBtRgGTLDLzfBxkL+6spb8s+rrd6D9O2+LYN5Bor1Td3+0z+1VXoGRCGAXjZYiKtNn/X/H/X79OSKd8ChHq4wfHSDkMj8jZG22O3ChoOmmV0Nhq0HGJHxecgQ05LQSVtdA7tLknVO1Y55vMBjHC+Bgbu2smYSfWMOJg82xrJxj9FmkJH376EAAA==","source":"https://d3phaj0sisr2ct.cloudfront.net/devportal/landing/workflows/builder-martini-v1.jpg","page":"https://dev.runway.com/workflows","credit":"Runway","rights":"publisher-site","note":"Result of the example Workflow on Runway Dev's Workflows page (image + text nodes -> model node): 'the martini glass from image 1 against a bright blue background with a clear liquid and 3 maraschino cherries'","bytes":45946,"addedAt":"2026-10-27"}},{"id":"runwayml/runway-media","slug":"runway-media","name":"Runway Media","skillName":"runway-media","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["image","video","audio","mcp","editing"],"summary":"Generate and edit images, video, music, speech and sound effects from chat with Runway's MCP tools.","description":"Guides an agent through Runway's hosted MCP server to create, animate, edit, restyle, expand, upscale, localize or clean up visual and audio media, and to check assets, credits and plan. It reads the tool descriptions for current models and limits, and states the rough credit cost before anything beyond a single quick generation.","useWhen":["Generate or animate an image or video with Runway","Restyle, expand or upscale media","Music, speech or sound effects from Runway"],"publisher":{"name":"Runway","handle":"runwayml","url":"https://runwayml.com","avatar":"https://github.com/runwayml.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/runwayml/runway-mcp-plugin/tree/main/skills/runway-media","repo":"runwayml/runway-mcp-plugin","path":"skills/runway-media","license":"MIT"},"install":{"claude-code":"npx skills add runwayml/runway-mcp-plugin --skill runway-media -a claude-code","codex":"npx skills add runwayml/runway-mcp-plugin --skill runway-media -a codex","cursor":"npx skills add runwayml/runway-mcp-plugin --skill runway-media -a cursor","gemini-cli":"npx skills add runwayml/runway-mcp-plugin --skill runway-media -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Runway account","Runway MCP server (https://mcp.runwayml.com/mcp)"],"cost":{"note":"Billed in Runway credits"},"files":["SKILL.md"],"stats":{"installs":3,"stars":4,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-11","addedAt":"2026-10-26","preview":{"kind":"film","hue":100},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/410709b26c13/runway-media.mp4","w":720,"h":404,"duration":10,"blur":"data:image/webp;base64,UklGRuAAAABXRUJQVlA4INQAAAAwBQCdASogABIAPtFaqk2oJSQiKAqpABoJQBbZMYdNekXkVe635nq81dceZdYtxWhqIAD+8zQZoOFC5AavREjITaTK8osaILgVLZbJajuECr1AYPLLCjJvdpijZ9fN0y8npBewHp62Os9mITPQPjdtGpyUV35tGoi6L3VFEED6VCysXLEE76vFl5H0rgfggO9LUxuRYEpYfAKfJG++C/WCGuebacyM9xjIRVlvIHSXgzdEQU45AkS3/AnkIaUWsaqbs8UnxnObWHPoWJ9qY2jqgAAAAA==","source":"https://stream.mux.com/ILTzXnn017Jr01PqGAsysMt00wmBmWlJlQvnG3geDeDzfI.m3u8","page":"https://runway.com/mcp","credit":"Runway","rights":"publisher-site","note":"'Image to product ad' example on Runway's MCP page, made from chat via Runway MCP: a chameleon in a jewelry store wearing the necklace from one product photo; 0-10 s","bytes":378743,"addedAt":"2026-10-27"}},{"id":"runwayml/runway-workflows","slug":"runway-workflows","name":"Runway Workflows","skillName":"runway-workflows","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["mcp","pipeline","node-graph"],"summary":"Author, validate and run multi-step Runway workflow graphs from chat through Runway's MCP tools.","description":"Builds, inspects, validates and runs Runway editor workflow graphs through Runway's MCP server. It is for designing multi-step generation pipelines, working with nodes and running dynamic workflow tasks.","useWhen":["A multi-step generation pipeline in Runway","Creating, editing or running a Runway workflow"],"publisher":{"name":"Runway","handle":"runwayml","url":"https://runwayml.com","avatar":"https://github.com/runwayml.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/runwayml/runway-mcp-plugin/tree/main/skills/runway-workflows","repo":"runwayml/runway-mcp-plugin","path":"skills/runway-workflows","license":"MIT"},"install":{"claude-code":"npx skills add runwayml/runway-mcp-plugin --skill runway-workflows -a claude-code","codex":"npx skills add runwayml/runway-mcp-plugin --skill runway-workflows -a codex","cursor":"npx skills add runwayml/runway-mcp-plugin --skill runway-workflows -a cursor","gemini-cli":"npx skills add runwayml/runway-mcp-plugin --skill runway-workflows -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Runway account","Runway MCP server (https://mcp.runwayml.com/mcp)"],"cost":{"note":"Billed in Runway credits"},"files":["SKILL.md"],"stats":{"installs":2,"stars":4,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-11","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":100},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b337a652cbd8/runway-workflows.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRuQAAABXRUJQVlA4INgAAACQBQCdASogABIAPtFcqE4oJSQiKAqpABoJYwCzgBGNVjQbLE7YTGEYGoyIxbXcupYkdF70gAD+7YQWqviVxayXk/YxkW+V9k0+hgxsjAeeTFJ4NiRprtGUt3XGSS4t+VOJiMspfd3jq8qLpP7UONtgtpzW9WqHFEFedn6XtuqMapAAitlxYV2jvBH+LcoYW/xOUG1DkAr/9Z/CnlHdH2U3/2EH+dIzlW8i9BqePcGvOVM82ILpG1Xdhm9ok5ZCCGKx8+F5QIbKUlW+I7hcSXD2ZGEEq62AAAA=","source":"https://stream.mux.com/9PyEWgw00PrQgEwQ4j00E02k7nIrCxrVbEXIXOmIJPSLvQ.m3u8","page":"https://runway.com/mcp","credit":"Runway","rights":"publisher-site","note":"'Product shot to finished commercial' — the featured multi-step example on Runway's MCP page: a moka-pot ad built from one product photo and one prompt; 15-23 s (the cat watching, coffee climbing into the glass dome)","bytes":406813,"addedAt":"2026-10-27"}},{"id":"runwayml/runway-studio-skills","slug":"runway-studio-skills","name":"Runway Studio Skills","skillName":"runway-studio-skills","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["video","image","audio","api","product-ads"],"summary":"Run Runway's API from Python scripts: text, image and video-to-video, character performance, images, TTS.","description":"Generates video, images and audio with the Runway API through bundled Python scripts: text-to-video, image-to-video, video-to-video, character performance, image generation with references, sound effects, text-to-speech, speech-to-speech, voice dubbing and voice isolation, plus task polling. It covers product-ad workflows and lists models including Gen-4.5, Gen-4 Aleph, Veo 3.1 and Seedance 2.","useWhen":["Generate a video, image or audio with the Runway API","A product ad video","Dubbing or isolating a voice"],"publisher":{"name":"Runway","handle":"runwayml","url":"https://runwayml.com","avatar":"https://github.com/runwayml.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/runwayml/runway-studio-skills","repo":"runwayml/runway-studio-skills","license":"MIT"},"install":{"claude-code":"npx skills add runwayml/runway-studio-skills -a claude-code","codex":"npx skills add runwayml/runway-studio-skills -a codex","cursor":"npx skills add runwayml/runway-studio-skills -a cursor","gemini-cli":"npx skills add runwayml/runway-studio-skills -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["gen4.5","gen4_aleph","gen4_image","gen4_turbo","veo_3_1","seedance_2","eleven_multilingual_v2"],"requires":["Runway API key (RUNWAYML_API_SECRET)","Python with uv"],"cost":{"note":"Billed in Runway credits"},"files":["SKILL.md","scripts/generate_audio.py","scripts/generate_image.py","scripts/generate_video.py","scripts/get_task.py","scripts/runway_helpers.py"],"stats":{"installs":44,"stars":0,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-04-20","addedAt":"2026-10-26","preview":{"kind":"film","hue":100},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/8996f9887878/runway-studio-skills.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRuAAAABXRUJQVlA4INQAAABwBQCdASogABIAPtFcpUyoJSOiMBgIAQAaCWIAtPYgABOzBbWnB3GlwQp1ZBv/TcQJyzzAAP6qHM+5oRD+Upa6JYg5TnOK3T/EnRZF1KAy48yWrxGr87AS2fMxV1wwZzk5sRvtIhn15ERtSA6ejenFxAgNLst6wtIgrf141DR7uYyg5bNJjvVIjsjm4g94VZB4kD9Yv0BMEc/NvRsqFQRYe8lPuk5NEJnvdv4PLmfsKYrZVVn8WN/56d6/pnCzD57K+L0dvd3ymM7dy2XrWenJ9kIAAA==","source":"https://d3phaj0sisr2ct.cloudfront.net/devportal/playground-examples/landing-rwdev-creative-aleph2.mp4","page":"https://dev.runway.com/","credit":"Runway","rights":"publisher-site","note":"Aleph 2.0 video-to-video example on the Runway Dev landing page: edits applied to existing clips (balloons added to a car, a sneaker swapped and recolored); 0-8 s","bytes":378334,"addedAt":"2026-10-27"}},{"id":"black-forest-labs/bfl-api","slug":"bfl-api","name":"BFL API","skillName":"bfl-api","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["flux","api","webhooks","image"],"summary":"Integrate the FLUX API correctly: endpoints, async polling, webhooks, rate limits, errors and regions.","description":"Black Forest Labs' integration guide for the FLUX API: base and model endpoints with pricing, image inputs and multi-reference edits, async polling versus webhooks, rate limits, error handling and regional endpoints, with Python, TypeScript and curl clients. It warns that result URLs expire after 10 minutes.","useWhen":["Calling FLUX from an app or script","Choosing polling or webhooks","Handling rate limits and errors"],"publisher":{"name":"Black Forest Labs","handle":"black-forest-labs","url":"https://bfl.ai","avatar":"https://github.com/black-forest-labs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/black-forest-labs/skills/tree/master/skills/bfl-api","repo":"black-forest-labs/skills","path":"skills/bfl-api","license":"MIT"},"install":{"claude-code":"/plugin marketplace add black-forest-labs/skills\n/plugin install flux-image-best-practices@black-forest-labs","codex":"npx skills add black-forest-labs/skills --skill bfl-api -a codex","cursor":"npx skills add black-forest-labs/skills --skill bfl-api -a cursor","gemini-cli":"npx skills add black-forest-labs/skills --skill bfl-api -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux-2-pro","flux-2-max","flux-2-flex","flux-2-klein","flux-kontext","flux_pro"],"requires":["BFL API key (BFL_API_KEY)"],"cost":{"note":"Billed by Black Forest Labs (API credits)"},"files":["SKILL.md","metadata.json","references/api-key-setup.md","references/code-examples/curl-examples.sh","references/code-examples/python-client.py","references/code-examples/typescript-client.ts","references/endpoints.md","references/error-handling.md","references/polling-patterns.md","references/rate-limiting.md","references/webhook-integration.md"],"stats":{"installs":710,"stars":135,"source":"skills.sh","asOf":"2026-10-26"},"version":"1.0.0","updatedAt":"2026-08-10","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":0},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/a621fdfb0e5c/bfl-api.webp","w":960,"h":631,"blur":"data:image/webp;base64,UklGRj4BAABXRUJQVlA4IDIBAAAQBwCdASogABYAPtFUo0uoJKMhsAgBABoJagCdMxGuzRnbf7F8twb5VURLY46Nsvs7AU4ybRt5aOLCm7Xui3kzwAD+6dMTXfKfhZZ6hgYbH3kcV1ckiWY8a9WCbyMCWkbaLSRXeqSPXitCdnDaesfWWMJMAsXQw2P009LMjkiaaij9edx8/CMiSIDWOx5jU4d+LHzvQhT+q4tqHIpRB3+KCyk9/Y5+7CK+H0oGDM85HAcYVHz3HhDCbpEQKl4JFAiU/0xCvtqtqukwfxWCBjIwALQO8CBa8Cz8cENjb4+qVFgHtFf+kKNhiWdYNy0ZW7VESCEOv7aZADPw925n1Ku7F8mTbYjIqR/OLYF4e0d6fYGjGhF/Qa3d/3ksiLwlMIucywt6706fOOAum3SyVHkAAAA=","source":"https://cdn.sanity.io/images/2gpum2i6/production/4c9d116ad290ca493f22b10e001afa9e9cb469c0-1120x736.png","page":"https://bfl.ai/models/flux-2","credit":"Black Forest Labs","rights":"publisher-site","note":"FLUX.2 multi-reference edit from BFL's FLUX.2 page (the main model behind the API's /v1/flux-2-pro endpoint): children in a photo replaced with animals from five reference images","bytes":76056,"addedAt":"2026-10-27"}},{"id":"black-forest-labs/flux-3-archival-formats","slug":"flux-3-archival-formats","name":"FLUX 3 Archival Formats","skillName":"flux-3-archival-formats","type":"skill","status":"live","stream":"vendors","category":"color","tags":["flux","film-look","period","archival"],"summary":"Give FLUX 3 video a period look by naming the recording format and its artifacts, not a mood.","description":"Makes FLUX 3 video look archival or period-accurate by naming a recording format instead of a mood and describing that format's specific degradation and artifacts. It adds templates, a control probe to prove a style word works, and montage and review guidance.","useWhen":["A VHS, film-stock or newsreel look","Period or found-footage scenes"],"publisher":{"name":"Black Forest Labs","handle":"black-forest-labs","url":"https://bfl.ai","avatar":"https://github.com/black-forest-labs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/black-forest-labs/skills/tree/master/skills/flux-3-archival-formats","repo":"black-forest-labs/skills","path":"skills/flux-3-archival-formats","license":"MIT"},"install":{"claude-code":"/plugin marketplace add black-forest-labs/skills\n/plugin install flux-3-video@black-forest-labs","codex":"npx skills add black-forest-labs/skills --skill flux-3-archival-formats -a codex","cursor":"npx skills add black-forest-labs/skills --skill flux-3-archival-formats -a cursor","gemini-cli":"npx skills add black-forest-labs/skills --skill flux-3-archival-formats -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_3"],"requires":["BFL API key (BFL_API_KEY)"],"cost":{"note":"Billed by Black Forest Labs (API credits)"},"files":["SKILL.md","metadata.json"],"stats":{"installs":101,"stars":135,"source":"skills.sh","asOf":"2026-10-26"},"version":"1.0.0","updatedAt":"2026-08-24","addedAt":"2026-10-26","preview":{"kind":"lut","hue":0},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0f57a7e83417/flux-3-archival-formats.mp4","w":720,"h":528,"duration":8,"blur":"data:image/webp;base64,UklGRgwBAABXRUJQVlA4IAABAAAwBgCdASogABgAPtFYo0uoJSMhsAgBABoJZACdMzAOZaj//Lo6an9CQGPgWj/QZf5xCbm1GcSRUVwAAP7b3veLbHg9R2BvV7DMcAhV9JXLQlzXvthFf/qLp11DUjC2Mqdm0Dl0eqqOS9wXApwNud47Tf6ZWCqNRj0N6kSSl0ybPogR9VIqK66zK0E01+ZIpdj8iaNjkPSPWw4b00xrOaY/dqru9vI8AnR5rsXMOkiuXzy34hmqChWSe9DNTEhT40WOVPaF1CENzIzxX+96+WZPC2FjwkMLb9CaWqZf+PBa87VTLE0DIe0DrFixG2odzeDSYHdppiQ9yzbWbTOiAAAA","source":"https://cdn.sanity.io/files/2gpum2i6/production/eaf4d38db53fc4936051fa9d5f6c01263867544f.mp4","page":"https://docs.bfl.ai/guides/prompting_video_camera_terms","credit":"Black Forest Labs","rights":"publisher-site","note":"FLUX 3 'Vintage (4:3)' example from BFL's video prompting cheatsheet: 4:3 home video of a 90s birthday party with a grainy camcorder look; 0-8 s","bytes":476532,"addedAt":"2026-10-27"}},{"id":"black-forest-labs/flux-3-audio-dialogue","slug":"flux-3-audio-dialogue","name":"FLUX 3 Audio & Dialogue","skillName":"flux-3-audio-dialogue","type":"skill","status":"live","stream":"vendors","category":"sfx","tags":["flux","dialogue","voiceover","sound-design","audio"],"summary":"Direct FLUX 3's generated sound: dialogue, voiceover, ambience, effects, music, silence and timing.","description":"Directs the audio that FLUX 3 generates together with the picture. It covers dialogue and voiceover, ambience, effects, music, silence and timing cues in the prompt.","useWhen":["Dialogue or voiceover in a FLUX 3 clip","Sound design in generated video"],"publisher":{"name":"Black Forest Labs","handle":"black-forest-labs","url":"https://bfl.ai","avatar":"https://github.com/black-forest-labs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/black-forest-labs/skills/tree/master/skills/flux-3-audio-dialogue","repo":"black-forest-labs/skills","path":"skills/flux-3-audio-dialogue","license":"MIT"},"install":{"claude-code":"/plugin marketplace add black-forest-labs/skills\n/plugin install flux-3-video@black-forest-labs","codex":"npx skills add black-forest-labs/skills --skill flux-3-audio-dialogue -a codex","cursor":"npx skills add black-forest-labs/skills --skill flux-3-audio-dialogue -a cursor","gemini-cli":"npx skills add black-forest-labs/skills --skill flux-3-audio-dialogue -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_3"],"requires":["BFL API key (BFL_API_KEY)"],"cost":{"note":"Billed by Black Forest Labs (API credits)"},"files":["SKILL.md","metadata.json"],"stats":{"installs":146,"stars":135,"source":"skills.sh","asOf":"2026-10-26"},"version":"1.0.0","updatedAt":"2026-08-07","addedAt":"2026-10-26","preview":{"kind":"wave","hue":0},"adds":"tool","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/095175a46912/flux-3-audio-dialogue.mp3","duration":10,"peaks":[0.13,0.28,0.2,0.01,0.11,0.61,0.48,0.19,0.23,0.52,0.19,0.26,0.37,0.92,0.9,0.89,0.81,0.77,0.7,0.78,0.64,0.61,0.58,0.63,0.55,0.7,0.67,0.63,0.66,0.65,0.7,0.38,0.66,0.68,0.76,0.69,0.77,0.55,0.66,0.62,0.52,0.08,0.72,0.63,0.59,0.25,0.57,1,0.93,0.89,0.88,0.91,0.69,0.65,0.8,0.79,0.79,0.77,0.82,0.85,0.73,0.78,0.73,0.66],"source":"https://cdn.sanity.io/files/2gpum2i6/production/ad885036a38d8f1c47008719a13322a52ca68299.mp4","page":"https://bfl.ai/models/flux-3-video","credit":"Black Forest Labs","rights":"publisher-site","note":"Soundtrack of FLUX 3's 'Multilingual dialogue' example (a telenovela scene with a woman in red and two men in white suits): generated dialogue and room tone, audio only","bytes":121143,"addedAt":"2026-10-27"}},{"id":"black-forest-labs/flux-3-cinematic-inserts","slug":"flux-3-cinematic-inserts","name":"FLUX 3 Cinematic Inserts","skillName":"flux-3-cinematic-inserts","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["flux","b-roll","camera","prompting"],"summary":"Write FLUX 3 prompts for standalone cinematic shots: shot craft, camera, continuity and review.","description":"Prompting a standalone FLUX 3 text-to-video shot such as an insert or b-roll: shot craft, reliable concept patterns, camera, continuity and review. It ships a field guide, a review scorecard and a JSON brief template.","useWhen":["A single cinematic shot or b-roll insert","Reviewing a generated shot against a scorecard"],"publisher":{"name":"Black Forest Labs","handle":"black-forest-labs","url":"https://bfl.ai","avatar":"https://github.com/black-forest-labs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/black-forest-labs/skills/tree/master/skills/flux-3-cinematic-inserts","repo":"black-forest-labs/skills","path":"skills/flux-3-cinematic-inserts","license":"MIT"},"install":{"claude-code":"/plugin marketplace add black-forest-labs/skills\n/plugin install flux-3-video@black-forest-labs","codex":"npx skills add black-forest-labs/skills --skill flux-3-cinematic-inserts -a codex","cursor":"npx skills add black-forest-labs/skills --skill flux-3-cinematic-inserts -a cursor","gemini-cli":"npx skills add black-forest-labs/skills --skill flux-3-cinematic-inserts -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_3"],"requires":["BFL API key (BFL_API_KEY)"],"cost":{"note":"Billed by Black Forest Labs (API credits)"},"files":["SKILL.md","metadata.json","references/field-guide.md","references/review-scorecard.md","templates/brief.json"],"stats":{"installs":150,"stars":135,"source":"skills.sh","asOf":"2026-10-26"},"version":"1.0.0","updatedAt":"2026-08-07","addedAt":"2026-10-26","preview":{"kind":"film","hue":0},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/52479c636774/flux-3-cinematic-inserts.mp4","w":720,"h":396,"duration":8,"blur":"data:image/webp;base64,UklGRqAAAABXRUJQVlA4IJQAAAAQBQCdASogABIAPtFcqE2oJSQiKAqpABoJYwCw7DTv8T4/aP5CxbasJm4Y/iiQZKw4AP72kAzod0QJTw65uV4mkSxTJEN/BUS0uqnGGFEkPaRaextZllKBEU6g9A4IWMYPnZ9bMuHf6WFJti/204oBNU20bTojLyO68oaHQG/boe3DKNYyNCnaA42pLGJTAmGcAAAA","source":"https://cdn.sanity.io/files/2gpum2i6/production/51a247fd20f9abfa5689b1f8cdd3e005cc234983.mp4","page":"https://docs.bfl.ai/guides/prompting_video_camera_terms","credit":"Black Forest Labs","rights":"publisher-site","note":"FLUX 3 'Volumetric light' example from BFL's video prompting cheatsheet: god rays slicing through a dusty barn, motes drifting — a standalone atmospheric shot; 2-10 s","bytes":263757,"addedAt":"2026-10-27"}},{"id":"black-forest-labs/flux-3-generate","slug":"flux-3-generate","name":"FLUX 3 Generate","skillName":"flux-3-generate","type":"skill","status":"live","stream":"vendors","category":"tooling","tags":["flux","video","api","drafts"],"summary":"Submit, poll and validate FLUX 3 video jobs, including cheap drafts before the final render.","description":"Covers the FLUX 3 video API job lifecycle: request shape, submitting and polling jobs, downloads and technical validation of the result. Draft mode gives cheaper previews before a full render.","useWhen":["Submitting a FLUX 3 video job","Drafting before a full-price render"],"publisher":{"name":"Black Forest Labs","handle":"black-forest-labs","url":"https://bfl.ai","avatar":"https://github.com/black-forest-labs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/black-forest-labs/skills/tree/master/skills/flux-3-generate","repo":"black-forest-labs/skills","path":"skills/flux-3-generate","license":"MIT"},"install":{"claude-code":"/plugin marketplace add black-forest-labs/skills\n/plugin install flux-3-video@black-forest-labs","codex":"npx skills add black-forest-labs/skills --skill flux-3-generate -a codex","cursor":"npx skills add black-forest-labs/skills --skill flux-3-generate -a cursor","gemini-cli":"npx skills add black-forest-labs/skills --skill flux-3-generate -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_3","flux_3_draft"],"requires":["BFL API key (BFL_API_KEY)"],"cost":{"note":"Billed by Black Forest Labs (API credits)"},"files":["SKILL.md","metadata.json","references/api-quick-reference.md"],"stats":{"installs":149,"stars":135,"source":"skills.sh","asOf":"2026-10-26"},"version":"1.0.0","updatedAt":"2026-08-07","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":0},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2efa44a0527a/flux-3-generate.mp4","w":720,"h":396,"duration":5,"blur":"data:image/webp;base64,UklGRgABAABXRUJQVlA4IPQAAAAwBQCdASogABIAPtFco0yoJaMiMBgIAQAaCUbgAGAB2Arfo7K4ZiQeWUSPk+MoMNH/aAD+73vSg0iiUZtKJvfCYevNyJbxM98MxpMfwChVzrNOAr+rQSB+kvza22YmRzyhTOpwxaoe6FAtwh/jmJEnu/hZ2c1rRem+uIPEiVFnD6JeJVh8EYVW+efCD6PpumV07tQ9uEGxPUPSXN85Ds8ybn8RdXiYkzaIQrqvsmsABDK+/kFIEa/oS58OENdWeH3z0ypXgRWo+Q9tAQW0do60bIVwIHm2jAP4qVe9cmtZsHEH79wXnoju+KyA7GtDlxUeAAAA","source":"https://cdn.sanity.io/files/2gpum2i6/production/54002570def82239180c5f5f60be9f29c566bea6.mp4","page":"https://bfl.ai/models/flux-3-video","credit":"Black Forest Labs","rights":"publisher-site","note":"FLUX 3 Draft mode example on BFL's model page: the full-quality render of a koi-and-paper-lanterns prompt after its cheap draft preview","bytes":175151,"addedAt":"2026-10-27"}},{"id":"black-forest-labs/flux-3-keyframes-continuation","slug":"flux-3-keyframes-continuation","name":"FLUX 3 Keyframes & Continuation","skillName":"flux-3-keyframes-continuation","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["flux","image-to-video","video-to-video"],"summary":"Build FLUX 3 video from supplied stills or footage: keyframe image-to-video and continuation chains.","description":"Builds FLUX 3 video from supplied media: keyframes (image-to-video) and continuation (video-to-video). It explains how to prompt each shape and how to chain them into longer sequences.","useWhen":["Animating from given keyframes","Continuing an existing clip"],"publisher":{"name":"Black Forest Labs","handle":"black-forest-labs","url":"https://bfl.ai","avatar":"https://github.com/black-forest-labs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/black-forest-labs/skills/tree/master/skills/flux-3-keyframes-continuation","repo":"black-forest-labs/skills","path":"skills/flux-3-keyframes-continuation","license":"MIT"},"install":{"claude-code":"/plugin marketplace add black-forest-labs/skills\n/plugin install flux-3-video@black-forest-labs","codex":"npx skills add black-forest-labs/skills --skill flux-3-keyframes-continuation -a codex","cursor":"npx skills add black-forest-labs/skills --skill flux-3-keyframes-continuation -a cursor","gemini-cli":"npx skills add black-forest-labs/skills --skill flux-3-keyframes-continuation -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_3"],"requires":["BFL API key (BFL_API_KEY)"],"cost":{"note":"Billed by Black Forest Labs (API credits)"},"files":["SKILL.md","metadata.json"],"stats":{"installs":147,"stars":135,"source":"skills.sh","asOf":"2026-10-26"},"version":"1.0.0","updatedAt":"2026-08-07","addedAt":"2026-10-26","preview":{"kind":"film","hue":0},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/1522128adaed/flux-3-keyframes-continuation.mp4","w":720,"h":400,"duration":10,"blur":"data:image/webp;base64,UklGRrQAAABXRUJQVlA4IKgAAABwBQCdASogABIAPs1aoUunpaMhsBgMAPAZiUAToAGe4y0QjsXZJT6FWTLVrqjAqb8T+T6AAN2a+pIILB1c/dcTv4Tf9OjQ7wYa6twLPJSoFSBK3VG2T4xr6UiityHj1o0VywmIGfpSm22x4KPdhallcupdw0ahJTdZKoAfjmappQmOadbif0vY1LTRavF4D14/sfJunf5wcgG0uvgFMwkhkMEaWD/IAAA=","source":"https://cdn.sanity.io/files/2gpum2i6/production/350e1b88f5c78c096af5dbf165e768a4946381d0.mp4","page":"https://bfl.ai/models/flux-3-video","credit":"Black Forest Labs","rights":"publisher-site","note":"FLUX 3 'Keyframes' example on BFL's model page ('Toy boat'): one clip guided through start, key and end frames in order; 0-10 s","bytes":672169,"addedAt":"2026-10-27"}},{"id":"black-forest-labs/flux-3-product-ads","slug":"flux-3-product-ads","name":"FLUX 3 Product Ads","skillName":"flux-3-product-ads","type":"skill","status":"live","stream":"vendors","category":"ads","tags":["product","voiceover","editing","qc","flux"],"summary":"Build a finished product ad with FLUX 3: shot design, voiceover sync, deterministic assembly, QC gates.","description":"An end-to-end product-ad pipeline on FLUX 3: shot design with reference stills first, picture and voiceover generated together, machine-screened voiceover, timing derived from the audio and deterministic assembly. Measured QC gates catch clipped audio, floating products, off-model plates and reports that claim a pass the build did not give.","useWhen":["A finished product ad from FLUX 3 clips","Syncing on-screen action to voiceover","QC before delivering an ad"],"publisher":{"name":"Black Forest Labs","handle":"black-forest-labs","url":"https://bfl.ai","avatar":"https://github.com/black-forest-labs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/black-forest-labs/skills/tree/master/skills/flux-3-product-ads","repo":"black-forest-labs/skills","path":"skills/flux-3-product-ads","license":"MIT"},"install":{"claude-code":"/plugin marketplace add black-forest-labs/skills\n/plugin install flux-3-video@black-forest-labs","codex":"npx skills add black-forest-labs/skills --skill flux-3-product-ads -a codex","cursor":"npx skills add black-forest-labs/skills --skill flux-3-product-ads -a cursor","gemini-cli":"npx skills add black-forest-labs/skills --skill flux-3-product-ads -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_3"],"requires":["BFL API key (BFL_API_KEY)","FFmpeg"],"cost":{"note":"Billed by Black Forest Labs (API credits)"},"files":["SKILL.md","metadata.json","references/pipeline.md"],"stats":{"installs":100,"stars":135,"source":"skills.sh","asOf":"2026-10-26"},"version":"1.3.0","updatedAt":"2026-08-24","addedAt":"2026-10-26","preview":{"kind":"cards","hue":0},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/49a0bfd6f70b/flux-3-product-ads.mp4","w":720,"h":396,"duration":10,"blur":"data:image/webp;base64,UklGRqoAAABXRUJQVlA4IJ4AAADwBACdASogABIAPtFgqU+oJSOiKAgBABoJQBBOAsZWoFCmqyUtC/lExR9eWojnPHAA/v2cbG+9mlclcKQla02Gq6bE6pAup7YucKnNZyafTbr/jI7FMxffVQaeJAwC1AxymRGGSIy8wvShIY5sb9B6eMw27EjwvzEPEZ5EXeCWkJbRgipYCvLJalhl3adt+7axcQ4PoDTyELIzWv6AAA==","source":"https://cdn.sanity.io/files/2gpum2i6/production/98fc4b77e3fe1b0bb12c648c5c2b5fc02b6ddd5b.mp4","page":"https://bfl.ai/models/flux-3-video","credit":"Black Forest Labs","rights":"publisher-site","note":"FLUX 3 'Advertising' use-case example on BFL's model page: chili flakes and pouring hot sauce resolving to an unlabeled product bottle; 0-10 s","bytes":584163,"addedAt":"2026-10-27"}},{"id":"black-forest-labs/flux-3-prompt-doctor","slug":"flux-3-prompt-doctor","name":"FLUX 3 Prompt Doctor","skillName":"flux-3-prompt-doctor","type":"skill","status":"live","stream":"vendors","category":"prompting","tags":["flux","video","brief"],"summary":"Diagnose a FLUX 3 video brief before spending: resolve missing, conflicting or schema-changing asks.","description":"Checks a FLUX 3 brief before generation, routing by what must survive and testing feasibility. It resolves missing, conflicting or schema-changing requirements and returns a verdict before any money is spent.","useWhen":["A vague or contradictory video brief","Checking feasibility before generating"],"publisher":{"name":"Black Forest Labs","handle":"black-forest-labs","url":"https://bfl.ai","avatar":"https://github.com/black-forest-labs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/black-forest-labs/skills/tree/master/skills/flux-3-prompt-doctor","repo":"black-forest-labs/skills","path":"skills/flux-3-prompt-doctor","license":"MIT"},"install":{"claude-code":"/plugin marketplace add black-forest-labs/skills\n/plugin install flux-3-video@black-forest-labs","codex":"npx skills add black-forest-labs/skills --skill flux-3-prompt-doctor -a codex","cursor":"npx skills add black-forest-labs/skills --skill flux-3-prompt-doctor -a cursor","gemini-cli":"npx skills add black-forest-labs/skills --skill flux-3-prompt-doctor -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_3"],"requires":["BFL API key (BFL_API_KEY)"],"cost":{"note":"Billed by Black Forest Labs (API credits)"},"files":["SKILL.md","metadata.json","templates/brief.md"],"stats":{"installs":161,"stars":135,"source":"skills.sh","asOf":"2026-10-26"},"version":"1.0.0","updatedAt":"2026-08-07","addedAt":"2026-10-26","preview":{"kind":"notes","hue":0},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0af8e1439181/flux-3-prompt-doctor.mp4","w":720,"h":396,"duration":8,"blur":"data:image/webp;base64,UklGRqYAAABXRUJQVlA4IJoAAAAwBQCdASogABIAPtFYpE0oJSOiMBgIAQAaCUAXZmrOyUCUHulH/PMsk9U/RKhHfggVAAD9nXsq2eiIAOnSDeDjNQEVPKNFV09tC5eT46KONCGLi6HO/CdO0vVVbSbM7jO9HCt4Oh21OlWi7BciiNYOs05dqEpgwypC0OdMBC4M3vz3xQCw92Jt7GeogP5/sKon8xhZJKWAAAAA","source":"https://cdn.sanity.io/files/2gpum2i6/production/40e995b48d5af914a99f053d207b91cbf0bd516b.mp4","page":"https://docs.bfl.ai/flux_3/flux3_video","credit":"Black Forest Labs","rights":"publisher-site","note":"FLUX 3 text-to-video example from BFL's docs (a beekeeper opening a hive at golden hour) — the kind of video job the prompt doctor checks before spending; 0-8 s","bytes":231873,"addedAt":"2026-10-27"}},{"id":"black-forest-labs/flux-3-video","slug":"flux-3-video","name":"FLUX 3 Video","skillName":"flux-3-video","type":"skill","status":"live","stream":"vendors","category":"cinematic","tags":["flux","video","router"],"summary":"Route any FLUX 3 video job to the right specialist: diagnosis, direction, audio or execution.","description":"The router for BFL's FLUX 3 video skills. It reads a general video request and loads only the specialists it needs: the prompt doctor for diagnosis, cinematic inserts and archival formats for direction, audio and dialogue, keyframes and continuation, product ads, and generate for execution.","useWhen":["Any FLUX 3 video request","Unsure which FLUX 3 skill applies"],"publisher":{"name":"Black Forest Labs","handle":"black-forest-labs","url":"https://bfl.ai","avatar":"https://github.com/black-forest-labs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/black-forest-labs/skills/tree/master/skills/flux-3-video","repo":"black-forest-labs/skills","path":"skills/flux-3-video","license":"MIT"},"install":{"claude-code":"/plugin marketplace add black-forest-labs/skills\n/plugin install flux-3-video@black-forest-labs","codex":"npx skills add black-forest-labs/skills --skill flux-3-video -a codex","cursor":"npx skills add black-forest-labs/skills --skill flux-3-video -a cursor","gemini-cli":"npx skills add black-forest-labs/skills --skill flux-3-video -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux_3"],"requires":["BFL API key (BFL_API_KEY)"],"cost":{"note":"Billed by Black Forest Labs (API credits)"},"files":["SKILL.md","metadata.json"],"stats":{"installs":148,"stars":135,"source":"skills.sh","asOf":"2026-10-26"},"version":"1.0.0","updatedAt":"2026-08-24","addedAt":"2026-10-26","preview":{"kind":"film","hue":0},"adds":"api","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/56b97106ecfb/flux-3-video.mp4","w":720,"h":396,"duration":9,"blur":"data:image/webp;base64,UklGRsIAAABXRUJQVlA4ILYAAABwBQCdASogABIAPtFYpk0oJKOiMBgIAQAaCUATplAApIRxLE/WdSBerq7V0ZkRs188XI2AAP7smC2uzXmh6dAu/0ncFVjguLZPoCxpuNFqf+pIxNq/Kllp1ycbgDYUbJhjxMHyZhPSiWsH3ZZ/fLGyhnq3J6TSlneluTZ0FIwDVEOzLhtWkDClPvjaVJqB9YnDzicaq7GpTE7pn7oM7zUMsyfUUSKnnU/PI99umnHoVHHb4gAAAA==","source":"https://cdn.sanity.io/files/2gpum2i6/production/3471a6e0c6bdcf5d8cd27d76eee5412d832ab373.mp4","page":"https://bfl.ai/models/flux-3-video","credit":"Black Forest Labs","rights":"publisher-site","note":"FLUX 3 'Broad range of styles' example on BFL's model page: anime-style ramen bowl whose noodles rise like a dragon in a rainy street; 0-9 s","bytes":489550,"addedAt":"2026-10-27"}},{"id":"black-forest-labs/flux-image-best-practices","slug":"flux-image-best-practices","name":"FLUX Image Best Practices","skillName":"flux-image-best-practices","type":"skill","status":"live","stream":"vendors","category":"prompting","tags":["image","flux","typography","json-prompts"],"summary":"Prompt FLUX image models well: structure, JSON prompts, hex colors, typography and multi-reference edits.","description":"Prompting rules for BFL's FLUX image models across the FLUX.2 and FLUX.1 families, starting from a prompt-structure formula and model selection. Rule files cover text-to-image and image-to-image prompting, structured JSON prompts, hex-color control, typography, multi-reference editing and alternatives to negative prompts.","useWhen":["Writing prompts for FLUX","Exact brand colors or legible text in an image","Editing with several reference images"],"publisher":{"name":"Black Forest Labs","handle":"black-forest-labs","url":"https://bfl.ai","avatar":"https://github.com/black-forest-labs.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/black-forest-labs/skills/tree/master/skills/flux-image-best-practices","repo":"black-forest-labs/skills","path":"skills/flux-image-best-practices","license":"MIT"},"install":{"claude-code":"/plugin marketplace add black-forest-labs/skills\n/plugin install flux-image-best-practices@black-forest-labs","codex":"npx skills add black-forest-labs/skills --skill flux-image-best-practices -a codex","cursor":"npx skills add black-forest-labs/skills --skill flux-image-best-practices -a cursor","gemini-cli":"npx skills add black-forest-labs/skills --skill flux-image-best-practices -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["flux-2","flux-1"],"requires":["BFL API key (BFL_API_KEY)"],"cost":{"note":"Billed by Black Forest Labs (API credits)"},"files":["SKILL.md","AGENTS.md","metadata.json","rules/_sections.md","rules/core-principles.md","rules/flux1-models.md","rules/flux2-models.md","rules/hex-color-prompting.md","rules/i2i-prompting.md","rules/json-structured-prompting.md","rules/model-selection-guide.md","rules/multi-reference-editing.md","rules/negative-prompt-alternatives.md","rules/t2i-prompting.md","rules/typography-text.md"],"stats":{"installs":332,"stars":135,"source":"skills.sh","asOf":"2026-10-26"},"version":"1.0.0","updatedAt":"2026-08-10","addedAt":"2026-10-26","preview":{"kind":"notes","hue":0},"adds":"tool","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/1daa67491a84/flux-image-best-practices.webp","w":728,"h":960,"blur":"data:image/webp;base64,UklGRpICAABXRUJQVlA4IIYCAAAwCwCdASogACoAPrlInkunJCMhtUwA4BcJbACdMvHCvye7MGA2wHPAegDeTYEn0iE0GAdjWYEqY+RbJlYXsJZQVKIu7ObryjcC9tDUUk4GCKakVtNvNC5SEZV/AtTX/QfwAAD+4eIN5GdkS+CYqbGZN5TjD3ztp96/K2hivyYhDNlxL49U7WookVf9nLpjx3SGcgdnW6y74jyp8DRgUyRVW3/Fl2hVPjgaLsorG/oc/ovS1P4DgsqBz/4AvFHK4jo5QZgIrrUX+TBgNI3kROx3xszFuX0dCKjfm89fB4ax2CW088c0rkJ/nQPyFjsBLbXa1fmaLgT/+bt75bLTPODf59IjI+4ajhH+voGc1NuBIbtPxbY2Lfw67KZZGZIcIeK+1o8FXZizmDMUzww8kzTPOqWvYTpP4HwvW2AnIK8y4b+3HlokNft/bGJWstnLzPF2pfQdfU4MKe6QFTV3XCsUDy+c583s7h0R1QhGIK73BeoslAtT+Vr3D5hYldNium2U/dwkl9pO6F2YdrO8Hy+Mmvxa2aZL/v+tmrg9JUTfH1AWv5I0F1W4AZS29HpovwXw7nRzKVEV+34PJ+DHoMybz/gJXIyJAb2HdglBcKsGtVPDLMkWJKwwtSwb9iTGSc2bkeXnt3AIOpndagVxg5Rfery2qvMlH6Wx66aqIdNuEJIGg762hJY3zuo1OS9kpV6cyHw/VtfeZlJnWYxO+d7rsxrEjVPn6TfXx9z2sxmx+eonPHjSxi7PQh+70/ufsoT8+Zm+HTadVmCoZ3jF/AhRY5HEE4oUxkpoCW14PkvqjoOUkHKmVVEjE84E6GE4xK411apNw6gqzLG0Fvoxn9DhUVDowAAA","source":"https://cdn.sanity.io/images/2gpum2i6/production/6d99bf4508c927ab16b67359b6ff70cdc992b279-1456x1920.png","page":"https://docs.bfl.ai/guides/usecases_t2i_typography_design","credit":"Black Forest Labs","rights":"publisher-site","note":"FLUX typography example from BFL's 'Typography & design' prompting guide: a retro hand-lettered poster reading 'If you love me let me sleep'","bytes":55630,"addedAt":"2026-10-27"}},{"id":"lottiefiles/motion-design","slug":"lottiefiles-motion-design","name":"Motion Design","skillName":"motion-design","type":"skill","status":"live","stream":"vendors","category":"animation","tags":["easing","choreography","disney-principles","ui-animation","editing","brand-motion"],"summary":"Animate with intent: timing, easing, choreography and Disney principles for UI and motion graphics.","description":"LottieFiles' universal motion design principles for agents: an 8-step checklist, motion personality, property selection, duration and easing tables, choreography, emotion-to-motion mapping and weight classes, with ready patterns for entrances, state feedback and ambient loops. It works with CSS, Framer Motion, GSAP, Lottie, springs or any other animation system.","useWhen":["Animations, transitions or micro-interactions","Loading states, page transitions or scroll effects","Making motion feel intentional instead of generic"],"publisher":{"name":"LottieFiles","handle":"LottieFiles","url":"https://lottiefiles.com","avatar":"https://github.com/LottieFiles.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/LottieFiles/motion-design-skill/tree/main/skills/motion-design","repo":"LottieFiles/motion-design-skill","path":"skills/motion-design","license":"MIT"},"install":{"claude-code":"npx skills add LottieFiles/motion-design-skill --skill motion-design -a claude-code","codex":"npx skills add LottieFiles/motion-design-skill --skill motion-design -a codex","cursor":"npx skills add LottieFiles/motion-design-skill --skill motion-design -a cursor","gemini-cli":"npx skills add LottieFiles/motion-design-skill --skill motion-design -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"cost":{"note":"Free — guidance only"},"files":["SKILL.md","director/choreography.md","director/context-adaptation.md","director/core-philosophy.md","director/decision-framework.md","director/disney-principles.md","director/emotion-mapping.md","director/motion-personality.md","director/narrative-structure.md","patterns/ambient-continuous.md","patterns/entrance-exit.md","patterns/multi-element.md","patterns/state-feedback.md","reference/property-selection.md","reference/quality-checklist.md","reference/timing-easing-tables.md","reference/troubleshooting.md"],"stats":{"installs":20100,"stars":2535,"source":"skills.sh","asOf":"2026-10-26"},"version":"1.0.0","updatedAt":"2026-03-12","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":168,"text":"ease"},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/22b96f0ee9c4/lottiefiles-motion-design.mp4","w":720,"h":540,"duration":8.4,"blur":"data:image/webp;base64,UklGRgIBAABXRUJQVlA4IPYAAABQBgCdASogABgAPtFapU0oJSOiMBgIAQAaCWQAxPjoSMCCCDAMOhghlb6f60W3p2tWySlyKCmEdrJNgAD+9LSJ963m8/aSr9GHZB/vzIDC5BvnrexzAzAlLxv+Y3Gi9++SZRF66CTqCjH2Pir6s3w82OApgggw4eHIUzK684VeGhHeWxuPR/mHp8u4+GCLkHWs8Uj/ILwrszdY9WuNEXP24CjCVjlIZ/qeVEmuOrjub41+3NYYWhCuw58OrBnIj/30n/5I/v/q5Wut+chXDIz8woEomRXZSKQ8xB6Dpo/CUc97tXcS4nDEDtFjYlPS3A1bDQuAAAA=","source":"https://video.twimg.com/amplify_video/2077573680247541760/vid/avc1/1080x810/ATNH7zYjgEDfXdWF.mp4","page":"https://x.com/LottieFiles/status/2077576224659112213","credit":"LottieFiles (@LottieFiles)","rights":"creator-post","note":"LottieFiles' 'spot the difference' post for the skill: the same stacked-box animation as 'basic' (without the motion design skill) and 'principled' (with it)","bytes":288885,"addedAt":"2026-10-27"}},{"id":"lottiefiles/dotlottie-web","slug":"dotlottie-web","name":"dotLottie Web","skillName":"dotlottie-web","type":"skill","status":"live","stream":"vendors","category":"animation","tags":["lottie","web","react","animation","state-machines","tooling"],"summary":"Ship Lottie animations on the web with dotLottie: package choice, workers, state machines, theming, slots.","description":"Implements Lottie and dotLottie animations with `@lottiefiles/dotlottie-web` and `@lottiefiles/dotlottie-react` in vanilla JS, React and Next.js. It covers choosing a package, `.lottie` versus `.json`, Web Workers, state machines for interactivity, theming, dynamic slot overrides and performance practices.","useWhen":["Playing Lottie or dotLottie files in a web app","Interactive Lottie with state machines","Theming or swapping content in an animation"],"publisher":{"name":"LottieFiles","handle":"LottieFiles","url":"https://lottiefiles.com","avatar":"https://github.com/LottieFiles.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/LottieFiles/dotlottie-web","repo":"LottieFiles/dotlottie-web","license":"MIT"},"install":{"claude-code":"npx skills add LottieFiles/dotlottie-web --skill dotlottie-web -a claude-code","codex":"npx skills add LottieFiles/dotlottie-web --skill dotlottie-web -a codex","cursor":"npx skills add LottieFiles/dotlottie-web --skill dotlottie-web -a cursor","gemini-cli":"npx skills add LottieFiles/dotlottie-web --skill dotlottie-web -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Node.js","@lottiefiles/dotlottie-web or @lottiefiles/dotlottie-react"],"cost":{"note":"Free — open-source runtime (MIT)"},"files":["SKILL.md","references/dynamic-slots.md"],"stats":{"installs":123,"stars":928,"source":"skills.sh","asOf":"2026-10-26"},"version":"1.0.0","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":168},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a89c41bdf206/dotlottie-web.mp4","w":720,"h":720,"duration":3.6,"blur":"data:image/webp;base64,UklGRsoAAABXRUJQVlA4IL4AAADwBQCdASogACAAPtFUpU4oJCMiMBgIAQAaCWwAzO2APdRIi9KOs8C+ZFM11pvpqX9NpXMx1erNUAD+/ob2NurzQExkGFnxI0Zz/tde83ssGWNBeX/Wwien//8mzw/mCTXN5m2DOkHcAzvELBd2HcFHuu5wRXX/ji7k5ClH3xSahhCw4W86u6cW/5ctIt+2bpt0p/Elv+e1/zSvKT73Nu7yynmA5C9tCYxuTpkYnTKSpO+0/+9nKqb+IaNMLQAA","source":"https://raw.githubusercontent.com/LottieFiles/dotlottie-web/main/examples/web-node/demo.gif","page":"https://github.com/LottieFiles/dotlottie-web/tree/main/examples/web-node","credit":"LottieFiles","rights":"publisher-repo","note":"Output of the repo's web-node example: a Lottie animation (flame to heart to splat) rendered frame by frame with dotLottie Web and saved as a GIF","bytes":59978,"addedAt":"2026-10-27"}},{"id":"lottiefiles/lottiefiles-animation-review","slug":"lottiefiles-animation-review","name":"LottieFiles Animation Review","skillName":"lottiefiles-animation-review","type":"skill","status":"beta","stream":"vendors","category":"animation","tags":["lottie","qa","review","mcp","brand-motion"],"summary":"Inspect, compare and diagnose animation renders with LottieFiles Creator's Engine tools (pre-release).","description":"Inspect, review, compare, or diagnose an animation result with installed Engine tools. Use when the user asks why an animation differs, fails, renders poorly, or needs a quality review.","useWhen":["An animation differs, fails, renders poorly, or needs a quality review"],"notFor":["Hosts without the LottieFiles Creator MCP server connected"],"publisher":{"name":"LottieFiles","handle":"LottieFiles","url":"https://lottiefiles.com","avatar":"https://github.com/LottieFiles.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/LottieFiles/creator-agent-plugin/tree/main/skills/animation-review","repo":"LottieFiles/creator-agent-plugin","path":"skills/animation-review","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add LottieFiles/creator-agent-plugin\nclaude plugin install lottiefiles-creator@lottiefiles","codex":"codex plugin marketplace add LottieFiles/creator-agent-plugin\ncodex plugin add lottiefiles-creator@lottiefiles","gemini-cli":"gemini extensions install https://github.com/LottieFiles/creator-agent-plugin"},"agents":["claude-code","codex","gemini-cli"],"requires":["LottieFiles account","LottieFiles Creator MCP server (endpoint not public yet)"],"cost":{"note":"Needs a LottieFiles account; endpoint not yet public"},"files":["SKILL.md"],"stats":{"installs":1,"stars":2,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-05","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":168},"adds":"tool","media":{"type":"none","reason":"No media shows the review/diagnosis workflow (inspecting and comparing renders with Creator's Engine tools); LottieFiles' Creator MCP posts show generation and model-vs-model output, which would misrepresent a review skill","searched":["github.com/LottieFiles/creator-agent-plugin (README, content/skills, docs: no media)","developers.lottiefiles.com / lottiefiles.com Creator pages","X: @LottieFiles posts on Creator MCP, WebMCP and model comparisons (Sep-Oct 2026)"],"addedAt":"2026-10-27"}},{"id":"lottiefiles/lottiefiles-animation-workflows","slug":"lottiefiles-animation-workflows","name":"LottieFiles Animation Workflows","skillName":"lottiefiles-animation-workflows","type":"skill","status":"beta","stream":"vendors","category":"animation","tags":["lottie","animation","mcp","export","brand-motion"],"summary":"Create, edit and export animation documents through LottieFiles Creator's Engine tools (pre-release).","description":"Create, edit, save, export, or manage an animation document with installed Engine tools. Use when the user asks to build or change an animation, export a file, or check an async Engine job.","useWhen":["Build or change an animation","Export a file","Check an async Engine job"],"notFor":["Hosts without the LottieFiles Creator MCP server connected"],"publisher":{"name":"LottieFiles","handle":"LottieFiles","url":"https://lottiefiles.com","avatar":"https://github.com/LottieFiles.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/LottieFiles/creator-agent-plugin/tree/main/skills/animation-workflows","repo":"LottieFiles/creator-agent-plugin","path":"skills/animation-workflows","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add LottieFiles/creator-agent-plugin\nclaude plugin install lottiefiles-creator@lottiefiles","codex":"codex plugin marketplace add LottieFiles/creator-agent-plugin\ncodex plugin add lottiefiles-creator@lottiefiles","gemini-cli":"gemini extensions install https://github.com/LottieFiles/creator-agent-plugin"},"agents":["claude-code","codex","gemini-cli"],"requires":["LottieFiles account","LottieFiles Creator MCP server (endpoint not public yet)"],"cost":{"note":"Needs a LottieFiles account; endpoint not yet public"},"files":["SKILL.md"],"stats":{"installs":1,"stars":2,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-05","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":168},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/10bcb1be36c1/lottiefiles-animation-workflows.mp4","w":720,"h":720,"duration":12,"blur":"data:image/webp;base64,UklGRu4BAABXRUJQVlA4IOIBAACwCQCdASogACAAPrVInEunJCKht+gA4BaJbACdMuIlyZPgWttX0AXqxLc5gBVgSoJGh59ee1mAFMstqrGqQ/MO4FBe0zzDL7Sx5YopK33PoS+qIkDKgAD+wDRCeGePgDL2oLeavunPM4zLmDpaSIRFeuPYLjKiJvXFCGA+9LtyfcZg9Z+ruJBkDL5j3E81U/jzY8cYlSmshlyuf/z5uR/YMpzH/Xsu65fq3w/fj9pn/Eqf4eMLjfnKCvW/KW4e/nH1Yc00SLs4PfsXmnN0kCjdzHa3XsryKxxAROyceeLrWoP+ArE387sbHbfJIrVERk6rdLt7P96Ufnl1w4v990/6HWLF4FkDyHK4+hyWmVdFpEdNQZBbkZS3chNjuLlfMrL3NgIOr6ePH+xUMHL+oVhnpA8LYj3v4f/qiTJ2ge3VMA7U74akNepVZUzm/QIaLWLR5GPlcdzhdzv5kxqY7BwygkiLCH2J+wDE6M8eS2r2xtfmRG3YWJAE4jrsAKExgUunWfnhfDjLSlV4l5BG4Mv7LV7wMgk/E/1ky/idu9+x9SYZ3C0w7MkQwzVPanXsgCJEHpn3cu3xOpqJceYBB0nM8sSoXl1B2QOBotX6/I8qdWaRnVTtE6v+zew5Ze4JQ1EAAA==","source":"https://video.twimg.com/amplify_video/2105125504701562880/vid/avc1/1080x1080/tHS-f2ZYTE929YPi.mp4","page":"https://x.com/LottieFiles/status/2105125940368146824","credit":"LottieFiles (@LottieFiles)","rights":"creator-post","note":"Animations an agent built in Lottie Creator through the Creator MCP (the plugin's Engine tools): a gradient-column loop, its prompt card, then a dot-matrix 'FABLE' animation","bytes":385932,"addedAt":"2026-10-27"}},{"id":"lottiefiles/vis-skills","slug":"lottiefiles-viscript","name":"viscript Scenes","skillName":"vis-skills","type":"skill","status":"beta","stream":"vendors","category":"explainers","tags":["lua","diagrams","math","animation","experimental"],"summary":"Write animated scenes, diagrams and math shorts in Lua or JS with viscript, then audit and render them.","description":"Write viscript scenes in Lua or JS/TS: animations, diagrams, algorithm traces, code pipeline plates, 2D/3D graphics, AI-system explainers, cheatsheets, math shorts. Not for interactive input (vis-interactive), the VS Code extension (vis-vscode), or engine work (vis-animation-dev).","notFor":["Interactive scenes (viscript's vis-interactive skill)","Changes to the viscript engine itself"],"publisher":{"name":"LottieFiles","handle":"LottieFiles","url":"https://lottiefiles.com","avatar":"https://github.com/LottieFiles.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/LottieFiles/viscript/tree/viscript/tools/skill/vis-skills","repo":"LottieFiles/viscript","path":"tools/skill/vis-skills","license":"MIT"},"agents":["claude-code","codex"],"requires":["viscript checkout with a native build on PATH","Node.js"],"cost":{"note":"Free — open-source (experimental)"},"files":["SKILL.md","agents/openai.yaml","assets/wasm/bindings.d.ts","assets/wasm/bindings.js","assets/wasm/BUILD-MANIFEST.json","assets/wasm/client.d.ts","assets/wasm/client.js","assets/wasm/JetBrainsMono-OFL.txt","assets/wasm/JetBrainsMono.ttf","assets/wasm/LICENSE-LodePNG.txt","assets/wasm/LICENSE-Lua.txt","assets/wasm/LICENSE-miniaudio.txt","assets/wasm/LICENSE-ThorVG.txt","assets/wasm/LICENSE-viscript.txt","assets/wasm/NotoSansMath-OFL.txt","assets/wasm/package.json","assets/wasm/Pretendard-OFL.txt","assets/wasm/Pretendard.ttf","assets/wasm/PretendardStd-OFL.txt","assets/wasm/README.md","assets/wasm/Source-Serif-4-OFL.txt","assets/wasm/SourceSerif4-Semibold.ttf","assets/wasm/vis-wasm.js","assets/wasm/vis-wasm.wasm","references/concept-explainer.md","references/diagram/diagram-contract.md","references/diagram/motion.md","references/diagram/native-authoring.md","references/diagram/source-grounding.md","references/diagram/svg-migration.md","references/equation-derivation.md","references/javascript.md","references/lua-more.md","references/lua.md","references/profiles/ai-systems.md","references/profiles/algorithm-and-code.md","references/profiles/cheatsheet.md","references/profiles/diagram.md","references/profiles/graphics.md","references/profiles/math-shortform.md","references/profiles/pipeline-plate.md","references/profiles/readme-demo.md","references/review.md","references/scene-contract.md","references/series-production.md","references/surface-recipe.md","references/wasm-bundle.md","templates/ai-systems/scaled-dot-product-attention.lua","templates/ai-systems/transformer-block.lua","templates/ai-systems/visualization-plan.md","templates/algorithm-and-code/binary-search.lua","templates/algorithm-and-code/call-stack-and-heap.lua","templates/algorithm-and-code/code-to-visual-plan.md","templates/algorithm-and-code/merge-sort.lua","templates/algorithm-and-code/visualization-plan.md","templates/cheatsheet/cheatsheet-plan.md","templates/core/scene.js","templates/core/scene.lua","templates/diagram/causal-loop.lua","templates/diagram/native-diagram.lua","templates/diagram/source-code/structure-scenario.lua","templates/diagram/source-code/visualization-plan.md","templates/diagram/swimlane.lua","templates/graphics/2d/advanced/coverage-rasterization.lua","templates/graphics/2d/linear-gradient.lua","templates/graphics/2d/sin-cos-function-plot.lua","templates/graphics/2d/space-coordinates.lua","templates/graphics/3d/blinn-phong.lua","templates/graphics/3d/model-view-projection.lua","templates/graphics/3d/quaternion-slerp.lua","templates/graphics/3d/surface-morph.lua","templates/math-shortform/circle-wave-projections.lua","templates/math-shortform/linear-space-transform.lua","templates/math-shortform/tracked-tangent.lua","templates/pipeline-plate/pipeline-plate.lua","templates/readme-demo/command-to-result.lua"],"stats":{"stars":7,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-10-24","addedAt":"2026-10-26","preview":{"kind":"generative","hue":168},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/332f6de32fec/lottiefiles-viscript.mp4","w":720,"h":258,"duration":8.2,"blur":"data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAADQAgCdASogAAwAPtFWpEuoJKOhsAgBABoJaQAAfj4AAP7yCpVClKVZSXKX4AAA","source":"https://raw.githubusercontent.com/LottieFiles/viscript/viscript/docs/assets/skills.gif","page":"https://github.com/LottieFiles/viscript#skills-for-ai-agents","credit":"LottieFiles (viscript)","rights":"publisher-repo","note":"README 'Skills for AI agents': a prompt to vis-skills and the binary-search scene it produces","bytes":32072,"addedAt":"2026-10-27"}},{"id":"rive-app/rive","slug":"rive","name":"Rive","skillName":"rive","type":"skill","status":"live","stream":"vendors","category":"animation","tags":["interactive","animation","runtime","ui","state-machines","brand-motion"],"summary":"Know when to reach for Rive for interactive graphics and motion, then start from its CLI or runtime docs.","description":"Rive's discovery skill tells an agent when Rive fits — interactive graphics, motion and UI that run from one file across web, mobile, desktop, games and TVs — and sends it down the right path: the runtime for an existing `.riv` file, the agent-oriented Rive CLI for a new graphic, or a CLI project's `AGENTS.md`. It deliberately carries no commands so installed copies don't go stale.","useWhen":["Interactive or animated UI that should stand out","Onboarding, characters, charts or ad heroes with motion","An app that already ships .riv files"],"publisher":{"name":"Rive","handle":"rive-app","url":"https://rive.app","avatar":"https://github.com/rive-app.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/rive-app/skills/tree/main/skills/rive","repo":"rive-app/skills","path":"skills/rive","license":"MIT"},"install":{"claude-code":"/plugin marketplace add rive-app/skills\n/plugin install rive@rive","codex":"codex plugin marketplace add rive-app/skills\ncodex plugin add rive@rive","gemini-cli":"gemini extensions install https://github.com/rive-app/skills","cursor":"npx skills add rive-app/skills --skill rive -a cursor"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Rive CLI (for new files) or a Rive runtime"],"cost":{"note":"Free — open-source runtime (MIT)"},"files":["SKILL.md"],"stats":{"installs":10,"stars":0,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-19","addedAt":"2026-10-26","preview":{"kind":"logo3d","hue":305},"adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f8dcdab9e504/rive.mp4","w":720,"h":404,"duration":12,"blur":"data:image/webp;base64,UklGRmwAAABXRUJQVlA4IGAAAADwAwCdASogABIAPtFapE0oJSMiKA1RABoJaQAALclSx9cNa96HSPBgAP70tpqxrSx8EYTcEPAtXGhXcakqFAnGz8zmctWrE6dwWz5c+DxAljQeUrrCHxFid02clkAAAAA=","source":"https://video.twimg.com/amplify_video/2098163307706511360/vid/avc1/1920x1080/PyHRaYDX99pQplXf.mp4","page":"https://x.com/rive_app/status/2098199118518907145","credit":"Rive (@rive_app)","rights":"creator-post","note":"Rive CLI launch reel: games and interfaces (a racing game, a rhythm game, solitaire, liquid-glass controls) built by agents working with a person in the Rive CLI","bytes":356162,"addedAt":"2026-10-27"}},{"id":"krea-ai/faceless-video","slug":"krea-faceless-video","name":"Krea Faceless Video","skillName":"faceless-video","type":"skill","status":"live","stream":"vendors","category":"shorts","tags":["faceless","narration","documentary","storytelling","explainers"],"summary":"Make narrated faceless explainers, documentaries and kids' stories as finished multi-scene films on Krea.","description":"Produces finished multi-scene, narrator-led faceless videos on Krea: explainers, documentaries, educational stories, myth and fairy-tale retellings, kids' stories and narrated picture stories. It locks the brief, writes the story first, fixes one visual language, builds reusable assets, generates ordered scenes with retries and assembles the delivery.","useWhen":["A narrated explainer or mini-documentary","A kids' story or fairy-tale retelling","A faceless channel episode"],"notFor":["Single clips, ads, UGC or talking heads","Silent animation"],"publisher":{"name":"Krea","handle":"krea-ai","url":"https://www.krea.ai","avatar":"https://github.com/krea-ai.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/krea-ai/skills/tree/main/faceless-video","repo":"krea-ai/skills","path":"faceless-video","license":"MIT"},"install":{"claude-code":"/plugin marketplace add krea-ai/skills\n/plugin install krea@krea","codex":"npx skills add krea-ai/skills --skill faceless-video -a codex","cursor":"npx skills add krea-ai/skills --skill faceless-video -a cursor","gemini-cli":"npx skills add krea-ai/skills --skill faceless-video -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["seedance_2_5"],"requires":["Krea account","Krea MCP server connected"],"cost":{"note":"Billed in Krea compute units (CU)"},"files":["SKILL.md"],"stats":{"installs":71,"stars":29,"source":"skills.sh","asOf":"2026-10-26"},"version":"0.7.6","updatedAt":"2026-09-03","addedAt":"2026-10-26","preview":{"kind":"film","hue":130},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/531b427b9cdd/krea-faceless-video.mp4","w":720,"h":404,"duration":10,"blur":"data:image/webp;base64,UklGRsgAAABXRUJQVlA4ILwAAABwBQCdASogABIAPslUoUunpKMhsAwA8BkJYgCBJnWvAATOpfMLQxF+cAKWX/WkKKsKL440AP73eGh4E2RRAllNyjQ+E90ddNRiN34IXevPl7T3lKfrWoPgXzNwG2OgFbv7MjXSlSGbYVVl+HJ/fx/YI4T1nAT4C+/iLuuZlB5c1NwHwLhyQcBmk1HCY+Fy9vJtBM0lgjdXCE1ZwNkLTyzkt2cNNv6xql9BGCZCpcuVyl7kiRmsI7s2PQAAAA==","source":"https://www.krea.ai/marketing/faceless-video/watercolor-apollo.mp4","page":"https://www.krea.ai/skills/faceless-video","credit":"Krea","rights":"publisher-site","note":"'Watercolor chronicle — Humanity reaches the Moon', one of the complete 30-second examples on Krea's Faceless Video skill page; 13-23 s (lunar module descent, landing, first footsteps)","bytes":491242,"addedAt":"2026-10-27"}},{"id":"krea-ai/krea-generate","slug":"krea-generate","name":"Krea Generate","skillName":"krea-generate","type":"skill","status":"live","stream":"vendors","category":"image","tags":["video","editing","upscale","model-selection"],"summary":"Pick the right Krea model and prompt for any image, video, edit or upscale before you generate.","description":"Krea's generation skill, run through Krea's MCP tools, with tiered model recommendations across Krea 2, Nano Banana Pro and Lite, GPT Image 2, Seedream, Seedance, Hailuo and Veo. It adds per-model prompting guides, region-targeted edits, outpainting, upscaling and enhancers, vision QA of results and a cost preflight for expensive jobs.","useWhen":["Any image or video generation beyond a one-shot","Editing, expanding or upscaling an image","Choosing a model by quality, speed and cost"],"notFor":["Marketing and ad creative (use Krea Marketing)","Product and brand motion (use Krea Motion)"],"publisher":{"name":"Krea","handle":"krea-ai","url":"https://www.krea.ai","avatar":"https://github.com/krea-ai.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/krea-ai/skills/tree/main/krea-generate","repo":"krea-ai/skills","path":"krea-generate","license":"MIT"},"install":{"claude-code":"/plugin marketplace add krea-ai/skills\n/plugin install krea@krea","codex":"npx skills add krea-ai/skills --skill krea-generate -a codex","cursor":"npx skills add krea-ai/skills --skill krea-generate -a cursor","gemini-cli":"npx skills add krea-ai/skills --skill krea-generate -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["krea_2","nano_banana_pro","gpt_image_2","seedream_5_pro","seedance_2_5","veo_3_1_lite"],"requires":["Krea account","Krea MCP server connected"],"cost":{"note":"Billed in Krea compute units (CU)"},"files":["SKILL.md","references/cost-preflight.md","references/models/gpt-image-2-examples.md","references/models/gpt-image-2.md","references/models/krea-2.md","references/models/nano-banana-examples.md","references/models/nano-banana.md","references/models/seedance-2-examples.md","references/models/seedance-2.md","references/progress-reporting.md","references/vision-qa.md","scripts/update-check.sh","VERSION","workflows/archviz-3d-to-render.md","workflows/lora-train-and-use.md"],"stats":{"installs":342,"stars":29,"source":"skills.sh","asOf":"2026-10-26"},"version":"0.7.7","updatedAt":"2026-10-21","addedAt":"2026-10-26","preview":{"kind":"grid","hue":130},"adds":"api","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/de5f78e55f2a/krea-generate.webp","w":960,"h":536,"blur":"data:image/webp;base64,UklGRm4BAABXRUJQVlA4IGIBAACwBwCdASogABIAPtFSokuoJKMhsAgBABoJbACdMoR1d6bw5jgdrH0ASyJvHSNA2pJ9jzf//cq9yre38Ixj+pVvKoXhpmCAAP03KAFAD3T0s65EU0P0GslQL5jTeEyH6ZU2QzegjEsrn5XeDjinAQ9pMhZ+HRj+vEYZs/aIPB1ySkU33LWzAiPdIIfmYUVkal/9aJ4TytDSs6tIwx4hQzLmTCkhHB3GOQxjqIU/9IiILPFRt1Xlusl494vzz4THTYggtfyXx4AqwsiKaKt54icaJEd5bNkq7HlanVK0A9rW0u341CVsmOX+sIX/thfX6e40ptb4xXhU04DjAr4/RFUoj1ECNh9fDcEq8UWtYvAD7Zm7+27Ft9a/kvqFuEp/kvpnqWqxf8f/kdy9yJL9P/yKgMqztI/l8cgqGJc3+WacVnRZSe4jhbc2hd89h/40ZxwUGfGjOODTRr3YQsP1qeEAAAA=","source":"https://optim-images.krea.ai/https---s-krea-ai-k2-landing-tiger-png-1024.webp","page":"https://www.krea.ai/krea-2","credit":"Krea","rights":"publisher-site","note":"Krea 2 example from Krea's Krea 2 page: a stylized tiger leaping on a boar in a flower-filled jungle — output of Krea's own image model that krea-generate routes to","bytes":74776,"addedAt":"2026-10-27"}},{"id":"krea-ai/krea-marketing","slug":"krea-marketing","name":"Krea Marketing","skillName":"krea-marketing","type":"skill","status":"live","stream":"vendors","category":"ads","tags":["product","ugc","meta-ads","packaging","marketplace"],"summary":"Make performance marketing creative on Krea: packshots, marketplace cards, UGC and video ads, Meta Ads.","description":"Routes marketing and paid-social work on Krea: packaging design and mockups, product photoshoots, marketplace cards, static, UGC and video ads, campaign key visuals, ad storyboards, product launches and Meta Ads. It sets rules for using real product evidence and a model policy for marketing images.","useWhen":["Ads, UGC or campaign key visuals","Product photoshoots or marketplace cards","Meta Ads creative"],"notFor":["Generic media generation (use Krea Generate)"],"publisher":{"name":"Krea","handle":"krea-ai","url":"https://www.krea.ai","avatar":"https://github.com/krea-ai.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/krea-ai/skills/tree/main/krea-marketing","repo":"krea-ai/skills","path":"krea-marketing","license":"MIT"},"install":{"claude-code":"/plugin marketplace add krea-ai/skills\n/plugin install krea@krea","codex":"npx skills add krea-ai/skills --skill krea-marketing -a codex","cursor":"npx skills add krea-ai/skills --skill krea-marketing -a cursor","gemini-cli":"npx skills add krea-ai/skills --skill krea-marketing -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["nano_banana_pro","nano_banana_2","gpt_image_2","seedance_2_5"],"requires":["Krea account","Krea MCP server connected"],"cost":{"note":"Billed in Krea compute units (CU)"},"files":["SKILL.md","references/artifact-taxonomy.md","references/dtc-ad-formats.md","references/marketing-creative-anatomy.md","references/marketplace-cards.md","references/meta-ads-mcp.md","references/product-packaging-presets.md","references/product-photography.md","references/product-photoshoot.md","references/storyboard-variations.md","references/ugc-scripts.md","references/ugc-social-video.md","references/video-ad-post.md","references/video-ad-qa.md","workflows/cinematic-product-ad.md","workflows/dtc-ad-templates.md","workflows/full-ad-campaign.md","workflows/key-visual-sheet.md","workflows/launch-teaser.md","workflows/marketplace-cards.md","workflows/meta-ads-performance.md","workflows/product-packaging-design.md","workflows/product-photo-hero.md","workflows/product-photo-lifestyle.md","workflows/social-video-short.md","workflows/ugc-video-ad.md"],"stats":{"installs":320,"stars":29,"source":"skills.sh","asOf":"2026-10-26"},"version":"0.7.7","updatedAt":"2026-10-21","addedAt":"2026-10-26","preview":{"kind":"cards","hue":130},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/175ca41da029/krea-marketing.mp4","w":720,"h":406,"duration":9,"blur":"data:image/webp;base64,UklGRrAAAABXRUJQVlA4IKQAAADQBACdASogABIAPtFWo0uoJKMhsAgBABoJQBOl7/AkAt070eiM5B0J6/V3/ET4rAC67BkxePyXeHOGonQhQ9SF6cHZRwBW0EjHORwl/QmFtvBSuujfsCaZ5MhlySO4wJoExVsVzgTKqWRr1Y9VXY0uUBih2CATafz8awWpk6FbwJoX7ajNRafdQ2v05bGS7Lavsrr/2HgSwPWGaEHJNXIWjTAAAA==","source":"https://app-uploads.krea.ai/fa72f818-9de5-43f5-a56c-89aeeabdffd5/1788902498387-marketing-hero.mp4","page":"https://www.krea.ai/krea-agent/marketing","credit":"Krea","rights":"publisher-site","note":"Marketing example on Krea's Agent for Marketing page: one speaker product carried through studio packshot, fabric detail and lifestyle shots (full 9 s)","bytes":211164,"addedAt":"2026-10-27"}},{"id":"krea-ai/krea-motion","slug":"krea-motion","name":"Krea Motion","skillName":"krea-motion","type":"skill","status":"live","stream":"vendors","category":"brand-motion","tags":["product","logo","reveal","seedance"],"summary":"Animate products, renders and logos into reveal films and web loops with Seedance 2.5 on Krea.","description":"Product, brand and marketing motion on Krea with Seedance: animating a product still, render, logo or mark, reveal sequences, luxury showcases, beauty macro shots and web or product-page loops. Craft references cover cut architecture, dimensional motion and retakes.","useWhen":["Animating a product shot or logo","A reveal film or a looping web hero","Luxury or beauty macro motion"],"notFor":["Anime, character or narrative animation (use Krea Generate)","Ad creative (use Krea Marketing)"],"publisher":{"name":"Krea","handle":"krea-ai","url":"https://www.krea.ai","avatar":"https://github.com/krea-ai.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/krea-ai/skills/tree/main/krea-motion","repo":"krea-ai/skills","path":"krea-motion","license":"MIT"},"install":{"claude-code":"/plugin marketplace add krea-ai/skills\n/plugin install krea@krea","codex":"npx skills add krea-ai/skills --skill krea-motion -a codex","cursor":"npx skills add krea-ai/skills --skill krea-motion -a cursor","gemini-cli":"npx skills add krea-ai/skills --skill krea-motion -a gemini-cli"},"agents":["claude-code","codex","cursor","gemini-cli"],"models":["seedance_2_5"],"requires":["Krea account","Krea MCP server connected"],"cost":{"note":"Billed in Krea compute units (CU)"},"files":["SKILL.md","references/cinematic-craft.md","references/cut-architecture.md","references/dimensional-motion.md","references/edit-qa-retakes.md","references/logo-and-mark-motion.md","references/luxury-showcase.md","references/product-beauty-macro.md","references/reveal-recipes.md","workflows/cinematic-shot.md","workflows/retakes-and-delivery.md","workflows/reveal-sequence.md"],"stats":{"installs":132,"stars":29,"source":"skills.sh","asOf":"2026-10-26"},"version":"0.7.7","updatedAt":"2026-10-21","addedAt":"2026-10-26","preview":{"kind":"logo3d","hue":130},"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/6f59f44ce20a/krea-motion.mp4","w":720,"h":404,"duration":4,"blur":"data:image/webp;base64,UklGRtgAAABXRUJQVlA4IMwAAADwBQCdASogABIAPtFWpEuoJKOhsAgBABoJQBWGYzX/xbCbtpCfq3ABNZFpYUzv5Y+sOUruAEX2EAD+9Z+evW3viHMU6NHypCIo/OrGYAv1em3DZsgfFKqKqTQ8jaTa2uauWJKDKpxKFiz/GGJIwwq8eOU0z8hGzJLOgPJ9uWe9jZYzEVO8NIyRquVKd8qqAR1xAwm/jkrwiRSWgMl2DBn1Z8W1SoWAOO7S9j915GZrqFmSGYLeVcoZqtlUyHaiedgEVPLySiRE4cIRiAA=","source":"https://s.krea.ai/seedance-2-5-prompt-gallery/macro_coffee_pour__extreme_macro_shot_of_espresso_pouring_into_a_ceramic_cup_in_slow_motion_thick_g_2icu5aq3vqjg32ykxoeg_1.mp4","page":"https://www.krea.ai/models/seedance-2-5/prompt-gallery","credit":"Krea","rights":"publisher-site","note":"'Macro coffee pour' from Krea's Seedance 2.5 prompt gallery: a slow-motion product-beauty macro of espresso and crema, the kind of shot krea-motion builds","bytes":110276,"addedAt":"2026-10-27"}},{"id":"greensock/gsap-core","slug":"gsap-core","name":"GSAP Core","skillName":"gsap-core","type":"skill","status":"live","stream":"vendors","category":"animation","tags":["code-to-video","gsap","tweens","easing","stagger","tooling"],"summary":"Official GSAP core guide: to/from/fromTo tweens, eases, staggers, defaults and transforms for DOM and SVG motion.","description":"GreenSock's official skill for the GSAP core API: `gsap.to()`, `from()` and `fromTo()`, common vars, transform aliases (`x`, `y`, `scale`, `rotation`, `autoAlpha`), staggers, built-in and custom eases, defaults, function-based and relative values, and `gsap.matchMedia()` for breakpoints and reduced motion. It closes with GSAP's own best practices and a do-not list, such as preferring transforms over layout properties and setting `immediateRender: false` when stacking `from()` tweens on one property. GSAP is HyperFrames' default animation runtime, so this is the motion vocabulary of most HTML-to-video compositions.","useWhen":["Tweens, eases and staggers for DOM or SVG animation","Picking an animation library for an HTML or React video","Responsive or reduced-motion variants with gsap.matchMedia()"],"notFor":["Sequencing many steps (use GSAP Timeline)","Text splitting, SVG morphing or motion paths (use GSAP Plugins)","Scroll-linked web animation (GSAP's ScrollTrigger skill)"],"publisher":{"name":"GSAP (GreenSock)","handle":"greensock","url":"https://gsap.com","avatar":"https://github.com/greensock.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/greensock/gsap-skills/tree/main/skills/gsap-core","repo":"greensock/gsap-skills","path":"skills/gsap-core","license":"MIT"},"install":{"claude-code":"npx skills add greensock/gsap-skills --skill gsap-core -a claude-code","codex":"npx skills add greensock/gsap-skills --skill gsap-core -a codex","cursor":"npx skills add greensock/gsap-skills --skill gsap-core -a cursor"},"agents":["claude-code","codex","cursor"],"requires":["The gsap npm package"],"cost":{"note":"Free — GSAP is free under Webflow's Standard 'no charge' license"},"files":["SKILL.md"],"stats":{"stars":17222,"installs":75800,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-03-09","addedAt":"2026-10-26","preview":{"kind":"cards","hue":88,"text":"gsap.to()"},"legal":"scanned: manual review 2026-10-26 — a single SKILL.md, no scripts; links only to gsap.com docs. skills.sh audits: Gen Agent Trust Hub, Socket and Snyk all Pass. The skill text is MIT. GSAP itself ships under Webflow's Standard 'No Charge' GSAP License (effective 2025-04-30, modified 2025-05-30), not an OSI license: commercial use is free, but it bars use in tools that let users build visual animations without code where that competes with Webflow, unless Webflow consents in writing. Org greensock is GitHub-verified (gsap.com).","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/3b2f7108217b/gsap-core.mp4","w":720,"h":404,"duration":5,"blur":"data:image/webp;base64,UklGRiQBAABXRUJQVlA4IBgBAABwBgCdASogABIAPtFUokuoJKMhsAgBABoJaACxDSCkct0E5yJKXXwToJ3hjgK1+FqiQys5JZqsSVFQFAAA/oozNt/+L+goS+CPQjP8Rjov5kangxa9zUumknK5ht+jhOzD4i4ZHEmwfZw4gOEAVfDn4Y6gj8nuVWEx4UdSrKFhHwxwBVIJhzWZDqMt5PRsQfVoPi+4lrTd+Q7H2JJ1l2I1lLT8ZVh2IG/2C5eA5DbxD4AmaKE6lET5n74A8YusYMQM+WsMmGJW9sDX42tngvZptGbAdJAaTLYZolXYTJU3dfVMb2l84DZnmJ/H4lBWUdGWJc7leYGAVZHbCf97x6HsH+ArlE6YMMui52XFhGMgj+OUcd5EgAAA","source":"https://gsap.com/community/uploads/monthly_2025_02/core-particles.mp4.1ac16a8df8cce3e74e834879a13770a3.mp4","page":"https://gsap.com/core/","credit":"Tom Miller, featured on gsap.com","rights":"publisher-site","note":"Featured community demo on GSAP's Core page ('canvas particles'): staggered shapes tweening outward from the centre","bytes":209898,"addedAt":"2026-10-27"}},{"id":"greensock/gsap-plugins","slug":"gsap-plugins","name":"GSAP Plugins","skillName":"gsap-plugins","type":"skill","status":"live","stream":"vendors","category":"animation","tags":["code-to-video","gsap","split-text","kinetic-type","svg-animation","tooling"],"summary":"Official GSAP plugins guide, incl. SplitText chars/words/lines with masks and re-splitting once fonts load.","description":"GreenSock's official skill for GSAP plugins: registration, SplitText, ScrambleText, DrawSVG, MorphSVG and MotionPath, Flip, Draggable and Inertia, Observer, CustomEase and GSDevTools. For kinetic type it documents `SplitText.create()` with chars, words and lines, line/word/char masks, `aria` handling, and `autoSplit` with `onSplit()` so text re-splits after fonts finish loading, plus `font-kerning: none` to stop glyphs shifting when split into characters. It states that every plugin, including the formerly Club-only SplitText, is free in the public `gsap` package with no auth token or private registry. ScrollTrigger, core tweens and React each have their own GSAP skills.","useWhen":["Split text into characters, words or lines for staggered reveals (SplitText)","Scramble or decode text effects (ScrambleText)","SVG draw-on, morphing or motion paths","Register and use any GSAP plugin correctly"],"notFor":["Scroll-linked animation (use gsap-scrolltrigger)","Core tweens and timelines (use gsap-core and gsap-timeline)","Splitting SVG <text>: SplitText does not support it"],"publisher":{"name":"GSAP (GreenSock)","handle":"greensock","url":"https://gsap.com","avatar":"https://github.com/greensock.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/greensock/gsap-skills/tree/main/skills/gsap-plugins","repo":"greensock/gsap-skills","path":"skills/gsap-plugins","license":"MIT"},"install":{"claude-code":"npx skills add greensock/gsap-skills --skill gsap-plugins -a claude-code","codex":"npx skills add greensock/gsap-skills --skill gsap-plugins -a codex","cursor":"npx skills add greensock/gsap-skills --skill gsap-plugins -a cursor"},"agents":["claude-code","codex","cursor"],"requires":["The gsap npm package (all plugins included)"],"cost":{"note":"Free — GSAP is free under Webflow's Standard 'no charge' license"},"files":["SKILL.md"],"stats":{"stars":17221,"installs":67700,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-04-21","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":88,"text":"split · stagger · reveal"},"legal":"scanned: manual review 2026-10-26 — a single SKILL.md, no scripts. skills.sh audits: Gen Agent Trust Hub, Socket and Snyk all Pass. The skill text is MIT. GSAP itself ships under Webflow's Standard 'No Charge' GSAP License (effective 2025-04-30, modified 2025-05-30), not an OSI license: commercial use is free, but it prohibits using GSAP in tools that let users build visual animations without code when that competes with Webflow's animation builder, unless Webflow consents in writing; Webflow's FAQ says AI-generated GSAP code is not a Prohibited Use. Org greensock is GitHub-verified (gsap.com).","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e481c2ec8941/gsap-plugins.mp4","w":720,"h":404,"duration":12,"blur":"data:image/webp;base64,UklGRpoAAABXRUJQVlA4II4AAAAQBQCdASogABIAPsVSoEunpKMht/VYAPAYiWMAyNQSxcqVyu8Pt/i0HXVtV2asGr4AAPwz34SCJLIHiNUaWA/bQLVjYpCGwKPeSbrLCvimWhYwB2tEwLC3ne9DDWR2ktU+Jh1j1nRr1SYk17pNby1qx2RCgf7G9f9tUySEKR34CXyEudDI6bX4KT2W9kAA","source":"https://www.youtube.com/watch?v=L1afzNAhI40","page":"https://gsap.com/docs/v3/Plugins/SplitText/","credit":"GSAP (GSAP Learning)","rights":"publisher-site","note":"Intro of the official SplitText Walkthrough embedded in the SplitText docs: text split into characters, words and lines and animated, then more SplitText effects (14-26 s)","bytes":239291,"addedAt":"2026-10-27"}},{"id":"greensock/gsap-timeline","slug":"gsap-timeline","name":"GSAP Timeline","skillName":"gsap-timeline","type":"skill","status":"live","stream":"vendors","category":"animation","tags":["code-to-video","gsap","timeline","sequencing","choreography","tooling"],"summary":"Official GSAP timeline guide: position parameter, labels, nesting, defaults and time/progress seeking.","description":"GreenSock's official skill for `gsap.timeline()`: the position parameter (absolute, relative and label-based), labels, timeline defaults and constructor options, nesting child timelines, and playback control including seeking with `tl.time()` and `tl.progress()`. Its best practices favour one timeline and the position parameter over chained delays. A paused timeline that the renderer seeks frame by frame is how HyperFrames turns GSAP into video, so pair this skill with the HyperFrames skill when choreographing scenes.","useWhen":["Sequencing or choreographing multi-step animation","Placing tweens with the position parameter or labels","Nesting scene timelines inside a master timeline","Seeking a timeline to an exact time or progress"],"notFor":["Single tweens and eases (use GSAP Core)","Scroll-driven timelines (GSAP's ScrollTrigger skill)"],"publisher":{"name":"GSAP (GreenSock)","handle":"greensock","url":"https://gsap.com","avatar":"https://github.com/greensock.png","kind":"vendor","verified":true},"source":{"url":"https://github.com/greensock/gsap-skills/tree/main/skills/gsap-timeline","repo":"greensock/gsap-skills","path":"skills/gsap-timeline","license":"MIT"},"install":{"claude-code":"npx skills add greensock/gsap-skills --skill gsap-timeline -a claude-code","codex":"npx skills add greensock/gsap-skills --skill gsap-timeline -a codex","cursor":"npx skills add greensock/gsap-skills --skill gsap-timeline -a cursor"},"agents":["claude-code","codex","cursor"],"requires":["The gsap npm package"],"cost":{"note":"Free — GSAP is free under Webflow's Standard 'no charge' license"},"files":["SKILL.md"],"stats":{"stars":17222,"installs":69600,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-03-09","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":88,"text":"tl · labels · seek"},"legal":"scanned: manual review 2026-10-26 — a single SKILL.md, no scripts or links to other hosts. skills.sh audits: Gen Agent Trust Hub, Socket and Snyk all Pass. The skill text is MIT. GSAP itself ships under Webflow's Standard 'No Charge' GSAP License (effective 2025-04-30, modified 2025-05-30), not an OSI license: commercial use is free, but it bars use in tools that let users build visual animations without code where that competes with Webflow, unless Webflow consents in writing. Org greensock is GitHub-verified (gsap.com).","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/bbb0c690e905/gsap-timeline.mp4","w":720,"h":450,"duration":3.6,"blur":"data:image/webp;base64,UklGRpAAAABXRUJQVlA4IIQAAACQBACdASogABQAPtFgpk6oJaMiKAqpABoJZwDMWBEcjoYv6Y3s+beeFh5j+AAA/eO/UoWVWJd19QndBuxuAmenUVrK00ffH3RNVzV8ZIMwJ0a6F8uZ+OvcrpU6dYQsINNr7xJqEAPNHkfs1bXJTKNeXBUwUowk5zdlOiFnQE5cP08QAAA=","source":"https://www.youtube.com/watch?v=hTijHpSJUFw","page":"https://www.youtube.com/watch?v=hTijHpSJUFw","credit":"GSAP (GSAP Learning)","rights":"publisher-site","note":"Official 'Percentage based position parameter' tip: a two-tween timeline plays with its visualizer, the second tween overlapping the first","bytes":23417,"addedAt":"2026-10-27"}},{"id":"apify/apify-mcp","slug":"apify-mcp","name":"Apify MCP","type":"skill","status":"live","stream":"vendors","category":"research","tags":["discover","discover-social"],"summary":"Thousands of ready scrapers behind one MCP: TikTok, Instagram, YouTube, hashtags, sounds.","description":"The official Apify MCP server gives the agent the Apify Store: search actors, call them and read their datasets. For trends that means TikTok hashtag and sound scrapers, Instagram Reels, YouTube and TikTok Creative Center actors, all billed per result on your Apify account. Connect the hosted server by URL with OAuth.","useWhen":["Pull top TikTok or Reels posts for a hashtag","Track a set of competitor accounts","Get Creative Center trending sounds"],"publisher":{"name":"Apify","handle":"apify","kind":"vendor","url":"https://apify.com","avatar":"https://github.com/apify.png","verified":true},"source":{"url":"https://github.com/apify/apify-mcp-server","repo":"apify/apify-mcp-server","license":"MIT"},"install":{"claude-ai":"Settings → Connectors → Add custom connector → https://mcp.apify.com","mcp":"https://mcp.apify.com"},"agents":["claude-code","claude-ai","cursor","mcp"],"requires":["Apify account (OAuth or API token)"],"cost":{"note":"Billed by Apify per result (roughly $1–4 per 1,000 results)"},"stats":{"stars":13355,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-10-27","addedAt":"2026-10-26","preview":{"kind":"grid","hue":30,"text":"tiktok-trends-scraper"},"legal":"Scraping public social data is a terms-of-service grey area that sits with your Apify account; store metrics and links, not videos.","adds":"tool"},{"id":"twelvelabs-io/twelvelabs","slug":"twelvelabs","name":"TwelveLabs Video Understanding","type":"skill","status":"live","stream":"vendors","category":"research","tags":["discover","discover-film","discover-music","discover-teardown"],"summary":"Semantic search and analysis across your video library from Claude Code.","description":"The official TwelveLabs plugin: index videos, search them by text or image (\"a slow push-in on a face at night\"), and run Pegasus analysis for scenes, summaries and structured metadata with timestamps. Good for building a searchable reference library out of footage you own.","useWhen":["Find the shot I remember in a pile of footage","Analyze a video into timed scenes","Search references by description"],"publisher":{"name":"TwelveLabs","handle":"twelvelabs-io","kind":"vendor","url":"https://twelvelabs.io","avatar":"https://github.com/twelvelabs-io.png","verified":true},"source":{"url":"https://github.com/twelvelabs-io/twelve-labs-claude-code-plugin","repo":"twelvelabs-io/twelve-labs-claude-code-plugin","license":"MIT"},"install":{"claude-code":"/plugin marketplace add twelvelabs-io/twelve-labs-claude-code-plugin\n/plugin install twelvelabs@twelvelabs-plugins"},"agents":["claude-code"],"requires":["TwelveLabs API key"],"cost":{"note":"Billed by TwelveLabs"},"stats":{"stars":26,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-10-08","addedAt":"2026-10-26","preview":{"kind":"film","hue":265,"text":"search: push-in"},"legal":"Index only footage you own or are licensed to analyze.","adds":"tool"},{"id":"framethrower-ai/framethrower","slug":"framethrower","name":"FrameThrower Film References","type":"skill","status":"live","stream":"vendors","category":"style-refs","tags":["discover","discover-film","research"],"summary":"Film stills from 5,489 films, searchable by lighting, lens, shot size, color and mood.","description":"A remote MCP server over a cinematography library indexed frame by frame. Four tools: search frames by description, find by craft attribute (lighting, lens character, shot size, color, mood), find similar frames, and get frame details with film, director and DP credits. The fastest way for an agent to back a shot spec with real references.","useWhen":["Show me real examples of this lighting","Find frames similar to my reference","Build a reference board for a scene"],"notFor":["Feeding film stills to an image or video model"],"publisher":{"name":"FrameThrower","handle":"framethrower-ai","kind":"vendor","url":"https://framethrower.ai","avatar":"https://github.com/framethrower-ai.png","verified":false},"source":{"url":"https://github.com/framethrower-ai/framethrower-mcp","repo":"framethrower-ai/framethrower-mcp","license":"MIT"},"install":{"claude-ai":"Settings → Connectors → Add custom connector → https://framethrower.ai/api/mcp","mcp":"https://framethrower.ai/api/mcp"},"agents":["claude-ai","claude-code","cursor","mcp"],"requires":["FrameThrower account (OAuth; $2 free credit)"],"cost":{"note":"Pay per use after the free credit"},"stats":{"stars":1,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-08-12","addedAt":"2026-10-26","preview":{"kind":"film","hue":38,"text":"rim light · 85mm"},"legal":"Frames are copyrighted stills shown for reference; FrameThrower does not license them. Use as links and vocabulary, never as model inputs.","adds":"tool"},{"id":"aredotna/arena-mcp","slug":"arena-mcp","name":"Are.na MCP","type":"skill","status":"live","stream":"vendors","category":"style-refs","tags":["discover","discover-film","discover-music","research"],"summary":"Build and read Are.na moodboard channels from your agent.","description":"The official Are.na MCP server: create channels, add links and images as blocks, search and read existing boards. Use it as the shared moodboard at the end of the film or music-video guide, so the team sees the references in one place.","useWhen":["Put the references into a shareable board","Read my existing moodboard before writing prompts"],"publisher":{"name":"Are.na","handle":"aredotna","kind":"vendor","url":"https://www.are.na","avatar":"https://github.com/aredotna.png","verified":true},"source":{"url":"https://github.com/aredotna/mcp","repo":"aredotna/mcp","license":"unknown"},"install":{"claude-code":"claude mcp add --transport http --scope user arena https://mcp.are.na/mcp","codex":"codex mcp add arena --url https://mcp.are.na/mcp\ncodex mcp login arena","mcp":"https://mcp.are.na/mcp"},"agents":["claude-code","claude-ai","codex","cursor","mcp"],"requires":["Are.na account (OAuth)"],"stats":{"stars":19,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"collage","hue":0,"text":"moodboard"},"legal":"Are.na signals use=reference, ai-train=no; boards hold links and your own uploads.","adds":"tool"},{"id":"civitai/civitai-mcp","slug":"civitai-mcp","name":"Civitai MCP","type":"skill","status":"live","stream":"vendors","category":"research","tags":["discover","discover-ai"],"summary":"Top AI images and videos with prompts and base models, plus model search.","description":"The official Civitai MCP server exposes Civitai's API to the agent: browse top images and videos by period, read their prompts and base models, and search models and LoRAs. Good for answering \"what style is everyone generating this week, and with what?\"","useWhen":["What AI looks are popular this week?","Find the prompt behind a top generation","Which base model is trending?"],"publisher":{"name":"Civitai","handle":"civitai","kind":"vendor","url":"https://civitai.com","avatar":"https://github.com/civitai.png","verified":true},"source":{"url":"https://github.com/civitai/civitai-mcp-server","repo":"civitai/civitai-mcp-server","license":"Apache-2.0"},"install":{"claude-code":"claude mcp add --transport http civitai https://mcp.civitai.com/mcp --header \"Authorization: Bearer YOUR_CIVITAI_API_KEY\"","mcp":"https://mcp.civitai.com/mcp"},"agents":["claude-code","claude-ai","cursor","mcp"],"requires":["Civitai API key"],"stats":{"stars":2,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-10-22","addedAt":"2026-10-26","preview":{"kind":"grid","hue":215,"text":"most reactions · week"},"legal":"Filter to SFW (nsfw=None); credit creators and link back; each model has its own license.","adds":"tool"},{"id":"huggingface/huggingface-mcp","slug":"huggingface-mcp","name":"Hugging Face MCP","type":"skill","status":"live","stream":"vendors","category":"research","tags":["discover","discover-ai"],"summary":"Trending models, Spaces and papers from Hugging Face inside your agent.","description":"The official Hugging Face MCP server: search models, datasets, Spaces and papers, sort by trending, and run Spaces as tools. Use it to see which open video and image models are rising this week.","useWhen":["Which open video models are trending?","Find a Space to try a new model"],"publisher":{"name":"Hugging Face","handle":"huggingface","kind":"vendor","url":"https://huggingface.co","avatar":"https://github.com/huggingface.png","verified":true},"source":{"url":"https://github.com/huggingface/hf-mcp-server","repo":"huggingface/hf-mcp-server","license":"MIT"},"install":{"claude-code":"claude mcp add hf-mcp-server -t http https://huggingface.co/mcp?login","gemini-cli":"gemini mcp add -t http huggingface https://huggingface.co/mcp?login","mcp":"https://huggingface.co/mcp"},"agents":["claude-code","claude-ai","gemini-cli","cursor","mcp"],"requires":["Hugging Face account (optional login)"],"stats":{"stars":309,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":48,"text":"sort=trendingScore"},"legal":"Trending lists include NSFW and face-swap repos; filter them out.","adds":"tool"},{"id":"exa-labs/exa-mcp","slug":"exa-mcp","name":"Exa Search MCP","type":"skill","status":"live","stream":"vendors","category":"research","tags":["discover","discover-social","discover-film","discover-music","discover-ai"],"summary":"Neural web search and crawling for research agents.","description":"The official Exa MCP server: web search that understands descriptions (\"music video with a one-take dance through a supermarket\"), plus page fetching. A good general research layer under every Discover guide when a platform has no API.","useWhen":["Find pages and articles describing a look or format","Research a director or a campaign"],"publisher":{"name":"Exa","handle":"exa-labs","kind":"vendor","url":"https://exa.ai","avatar":"https://github.com/exa-labs.png","verified":true},"source":{"url":"https://github.com/exa-labs/exa-mcp-server","repo":"exa-labs/exa-mcp-server","license":"MIT"},"install":{"claude-code":"claude plugin install exa@claude-plugins-official","codex":"codex mcp add exa --url https://mcp.exa.ai/mcp","mcp":"https://mcp.exa.ai/mcp"},"agents":["claude-code","claude-ai","codex","cursor","mcp"],"requires":["Exa account (OAuth or API key)"],"cost":{"note":"Billed by Exa; free tier available"},"stats":{"stars":5175,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-10-19","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":225,"text":"search: one-take dance"},"legal":"Search results link to third-party pages; their terms apply.","adds":"tool"},{"id":"firecrawl/firecrawl-mcp","slug":"firecrawl-mcp","name":"Firecrawl MCP","type":"skill","status":"live","stream":"vendors","category":"research","tags":["discover","discover-social","discover-film","discover-music","discover-ai"],"summary":"Search, scrape and crawl web pages into clean text for your agent.","description":"The official Firecrawl MCP server: search the web, scrape a page into Markdown, map and crawl sites. Use it to read editorial roundups, award winner lists and reference pages that have no API — and respect sites that forbid bots.","useWhen":["Read an awards winners list into a table","Pull a roundup of new music videos"],"publisher":{"name":"Firecrawl","handle":"firecrawl","kind":"vendor","url":"https://firecrawl.dev","avatar":"https://github.com/firecrawl.png","verified":true},"source":{"url":"https://github.com/firecrawl/firecrawl-mcp-server","repo":"firecrawl/firecrawl-mcp-server","license":"MIT"},"install":{"mcp":"env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp"},"agents":["claude-code","claude-ai","cursor","mcp"],"requires":["Firecrawl API key (a keyless hosted endpoint has 3 tools)"],"cost":{"note":"Billed by Firecrawl; free tier available"},"stats":{"stars":7697,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-10-27","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":18,"text":"scrape → markdown"},"legal":"Do not crawl sites whose terms or robots.txt forbid it (shot.cafe, film-grab, eyecannndy, Midjourney).","adds":"tool"},{"id":"Vincentwei1021/video-shotcraft","slug":"video-shotcraft","name":"Video Shotcraft","skillName":"video-shotcraft","type":"skill","status":"live","stream":"community","category":"camera","tags":["cinematic","remotion","product-video","shot-cards","sound-design","editing"],"summary":"124 shot recipe cards and a tested Remotion template for cinematic product promos built from real UI screenshots.","description":"A self-contained production kit for web and desktop product promos: 124 shot recipe cards in 10 categories (each with intent, a motion core, a parameter table, known pitfalls and a reference implementation), a validated Remotion template called Ink Press, reusable components and audio assets, and a six-stage workflow. The skill first runs a read-only product check, then offers three modes: reuse the template, autonomous free creation, or co-creation with sign-off on the brief, visual direction, shot mapping and storyboard. The cards double as a general motion vocabulary, so you can pull one for a single shot in any video. Extras export Jianying (CapCut China) drafts and publish through Upload-Post.","useWhen":["Turn a web app or frontend project into a cinematic product video","Reuse the Ink Press template for your own product","Apply one named shot card to a single clip"],"notFor":["Live-action or AI-generated footage (it animates real page screenshots in code)"],"publisher":{"name":"Vincent Wei","handle":"Vincentwei1021","kind":"community","url":"https://github.com/Vincentwei1021","avatar":"https://github.com/Vincentwei1021.png","verified":false},"source":{"url":"https://github.com/Vincentwei1021/video-shotcraft","repo":"Vincentwei1021/video-shotcraft","license":"Apache-2.0"},"install":{"claude-code":"npx skills add Vincentwei1021/video-shotcraft","codex":"npx skills add Vincentwei1021/video-shotcraft"},"agents":["claude-code","codex"],"requires":["Node.js + Remotion","ffmpeg","Python 3 (helper scripts)","Optional: Upload-Post API key for publishing"],"cost":{"note":"Free — local Remotion render"},"files":["SKILL.md","references/pipeline.md","references/guided-free-creation.md","references/shots/<category>/<card>.md","references/sound-design.md","references/music-beat-sync.md","template/TEMPLATE.md","gallery/index.html"],"stats":{"stars":13824,"installs":5310,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-17","addedAt":"2026-10-26","preview":{"kind":"film","hue":28,"text":"crash zoom"},"legal":"scanned: manual review 2026-10-26 — no hooks or remote fetches in the skill; optional publishing uses your own Upload-Post key. Techniques are re-implemented from scratch with provenance notes in references/shots/ATTRIBUTION.md; no third-party footage or brand assets are bundled.","featured":true,"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2debe3ea5ec0/video-shotcraft.mp4","w":720,"h":404,"duration":5.7,"blur":"data:image/webp;base64,UklGRnAAAABXRUJQVlA4IGQAAADwBACdASogABIAPtFao00oJSMiKA1RABoJZwDM0BEdtIswZMh/D1Q41pRJXtMRluAA/vHUn4+AO/dZ5kxQnKI/xW460p0h2M1fs3+aY6I0N0I19ghYtEUzAbuw8ttUzfFi+AAA","source":"https://vincentwei1021.github.io/video-shotcraft/media/exploded-view.mp4","page":"https://vincentwei1021.github.io/video-shotcraft/","credit":"Vincent Wei (video-shotcraft)","rights":"publisher-site","note":"The exploded-view shot card from the skill's Gallery: a product dashboard tilts in 3D, its panels fly apart with callouts, then reassemble under 'Built in layers.' Full 5.7 s clip.","bytes":80339,"addedAt":"2026-10-27"}},{"id":"gooseworks-ai/goose-video","slug":"gooseworks-apple-notes-ads","name":"Gooseworks Video (Apple Notes Ads)","skillName":"goose-video","type":"skill","status":"live","stream":"community","category":"native-ui","tags":["ads","notes-ad","imessage","ugc","hosted-service"],"summary":"Video ads in chat from a reference ad or a ready style, including the viral HTML-only Apple Notes typing ad.","description":"The Gooseworks entry skill behind the July 2026 \"Apple Notes ads in Claude\" launch (about 200K views on X): Claude builds a native-looking Notes typing ad in HTML with no video model in the loop, and the same kit renders iMessage and ChatGPT screen mockups. Today `goose-video` is a thin router: it asks for the brand and product, finds a real reference ad to remake (or offers ready-made styles) and drives the work through the Gooseworks MCP server, which holds the provider keys and bills in Gooseworks credits after you approve a priced plan. The deterministic Notes renderer (`create-apple-notes-mockup`, HTML + Playwright) is still in the repo but marked superseded by the kit's phone-chat part.","useWhen":["Make a vertical Apple Notes, iMessage or ChatGPT-screen ad for Meta or TikTok","Remake a reference ad you like for your own brand and product","Test many cheap ad variants without a video model"],"notFor":["Offline or self-hosted rendering (generation runs on the Gooseworks service)","Cinematic footage or talking-head video"],"publisher":{"name":"Gooseworks","handle":"gooseworks-ai","kind":"community","url":"https://github.com/gooseworks-ai","avatar":"https://github.com/gooseworks-ai.png","verified":false},"source":{"url":"https://github.com/gooseworks-ai/goose-skills/tree/main/skills/entry/goose-video","repo":"gooseworks-ai/goose-skills","path":"skills/entry/goose-video","license":"MIT"},"install":{"claude-code":"npx gooseworks@latest install --claude --mcp","codex":"npx gooseworks@latest install --codex --mcp","cursor":"npx gooseworks@latest install --cursor --mcp"},"agents":["claude-code","codex","cursor","mcp"],"requires":["Gooseworks account","Node.js (npx)"],"cost":{"note":"Billed in Gooseworks credits; each video is priced and needs your approval first"},"files":["SKILL.md","skill.meta.json"],"stats":{"stars":1270,"source":"GitHub (gooseworks-ai/goose-skills)","asOf":"2026-10-26"},"version":"4.5.2","updatedAt":"2026-10-25","addedAt":"2026-10-26","preview":{"kind":"notes","hue":48,"text":"you just stopped scrolling. for a note."},"legal":"scanned: manual review 2026-10-26 — the skill is instructions only; generation runs on Gooseworks' servers, which hold the provider keys. The installer is an unpinned `npx gooseworks@latest` that writes MCP config and ~/.gooseworks/credentials.json. Startup publisher whose skill fronts its own paid service: a candidate to move to Vendors.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d146add52283/gooseworks-apple-notes-ads.mp4","w":404,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRlwBAABXRUJQVlA4IFABAAAwCACdASogADoAPs1UpEunpKOhqA6o8BmJZwDRDaqlML1uGvaa/yZpCRS/ywnnECRf499IwUDewxNpp57zwMFwCv9xwLgf9E9zgAD++kumiUMavUY2xOZBjqUFTGPq7pB8qrKhgSFy+ToNkUuEa+dafxWmVDpRC8MFILXjanEU0XHC5ju5W6KhRYFwHsMYa5lf62H9fY7Xr4rTu6/nOKP9x/+fdOWTVozMAmybifmctlnilTGUj7z9sdFKr3Jvw6FDCf3KRTp7oTuzjutSmF3dBFePanZpnuAKfwD1iPsog4nFBTe3N6Sb1EfYFMUFnO7fJKaUERBfmFHpl6tWMLlyUuAhufEJUEpyISLvf9q1CHobX4eD2hX5eqigsEFIwX1PxDqYu9k1meQ4CEXhD3X0Y9wwQKBiO/XHxLffxSSkU2c3ALOHfUmh7Qdks0QAAAA=","source":"https://video.twimg.com/amplify_video/2075128405973209088/vid/avc1/720x1280/J4FUwWn8uJ7x7T9N.mp4?tag=14","page":"https://x.com/shivsakhuja/status/2075128457030472110","credit":"Shiv Sakhuja / Gooseworks","rights":"creator-post","note":"The 'Introducing Apple Notes ads in Claude' launch video for /goose-video: a native-looking Notes typing ad built in HTML. First 8 s of the typing.","bytes":37481,"addedAt":"2026-10-27"}},{"id":"coreyhaines31/video","slug":"marketingskills-video","name":"Marketing Video Production","skillName":"video","type":"skill","status":"live","stream":"community","category":"ads","tags":["explainers","product-demo","hyperframes","remotion","avatars","repurposing"],"summary":"Corey Haines' marketing video skill: pick code, a video model or an avatar, then script, prompt and repurpose.","description":"Part of Corey Haines' marketingskills pack (57K GitHub stars), this skill routes a video request to the right production approach before anything is generated: programmatic video (HyperFrames or Remotion), AI video models (a comparison and prompting guide covering Veo, Sora, Kling, Seedance, Hailuo, Wan and others) or AI avatars (HeyGen, Synthesia). It includes workflows for product demos, explainers, batch social clips and per-account personalized video, a method for reverse-engineering a viral edit, and an agent-native pipeline section; references cover video prompting, edit anatomy and product-demo recording. Paid ad copy and posting strategy live in the pack's sibling skills (ad-creative, social).","useWhen":["Plan and produce a marketing or product-demo video with an agent","Choose between code-built video, a video model and an avatar","Copy the structure of a reference edit"],"notFor":["Ad headlines and copy variations (use the pack's ad-creative skill)","Deciding what to post (use the social skill)"],"publisher":{"name":"Corey Haines","handle":"coreyhaines31","kind":"community","url":"https://github.com/coreyhaines31","avatar":"https://github.com/coreyhaines31.png","verified":false},"source":{"url":"https://github.com/coreyhaines31/marketingskills/tree/main/skills/video","repo":"coreyhaines31/marketingskills","path":"skills/video","license":"MIT"},"install":{"claude-code":"npx skills add coreyhaines31/marketingskills --skill video","codex":"npx skills add coreyhaines31/marketingskills --skill video"},"agents":["claude-code","codex","cursor"],"requires":["HyperFrames or Remotion for code-built video","Accounts for whichever video model or avatar service you choose"],"cost":{"note":"Free skill; generation billed by the video model or avatar service you pick"},"files":["SKILL.md","references/ai-video-prompting.md","references/edit-anatomy.md","references/product-demo-recording.md","evals/evals.json"],"stats":{"stars":56690,"installs":86225,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"version":"2.3.0","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":205,"text":"hook · demo · CTA"},"legal":"scanned: manual review 2026-10-26 — the video skill is instructions plus references; the wider repo has one committed .pyc under scripts/__pycache__ (outside the skill folder).","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/cb03ab790642/marketingskills-video.mp4","w":720,"h":720,"duration":12,"blur":"data:image/webp;base64,UklGRmYAAABXRUJQVlA4IFoAAABQBACdASogACAAPtFepU6oJSMiKAqpABoJaQAALlMFdJ0vvgsc9CKYpBEAAP7zKyvbz9xMfhQwUA149/T1txAEB6NS8MHUH89YM/bD50BuJjJCWxVvFyQAAAA=","source":"https://video.twimg.com/amplify_video/2114394054779932672/vid/avc1/1080x1080/iaKZQwHPov29kuYS.mp4?tag=16","page":"https://x.com/coreyhainesco/status/2114394072492519489","credit":"Corey Haines","rights":"creator-post","note":"Corey Haines' launch clip for the /video skill: Claude Code runs /video, writes the composition as code, then the storyboard scenes and a rendered 1080p MP4 appear. Cut 8-20 s of 30 s.","bytes":101059,"addedAt":"2026-10-27"}},{"id":"echris6/business-motion-film","slug":"business-motion-film","name":"Business Motion Film","skillName":"business-motion-film","type":"skill","status":"live","stream":"community","category":"ads","tags":["brand-motion","launch-video","gsap","three.js","critic-loop","sound-design"],"summary":"Premium short commercials for real businesses: storyboard first, HTML/GSAP motion and an independent-critic loop.","description":"Plans, builds and quality-checks a short commercial for a real business (roofing, property, e-commerce, B2B software) by mixing AI-generated footage with code-built motion in HTML/GSAP and selective Three.js. The workflow runs brief, references, storyboard, assets, components built in isolation and assembly, then a full-film \"Gauntlet\" where independent critic prompts review the cut; audio comes last but has its own rules. References distill motion principles from 28 professional launch films, a quality bar, case studies and a business-offer playbook, and shell and Python scripts handle loudness, contact sheets, SFX gain solving and offline mixing. In an Agent Skills Hub end-to-end test it took 21.8 minutes for a 15-second promo, the slowest of 16, with a look of its own.","useWhen":["Make a launch-style, SaaS-style or local-business ad","Review and improve an existing promo against a quality bar","Build a sample reel or pitch video for a client"],"notFor":["Quick one-shot clips where speed matters more than polish"],"publisher":{"name":"echris6","handle":"echris6","kind":"community","url":"https://github.com/echris6","avatar":"https://github.com/echris6.png","verified":false},"source":{"url":"https://github.com/echris6/motion-video-kit/tree/main/business-motion-film","repo":"echris6/motion-video-kit","path":"business-motion-film","license":"MIT"},"install":{"claude-code":"git clone https://github.com/echris6/motion-video-kit.git && cp -r motion-video-kit/business-motion-film ~/.claude/skills/"},"agents":["claude-code"],"requires":["ffmpeg","Python 3","A video model of your choice for the AI footage"],"cost":{"note":"Free skill; AI footage billed by the model you use"},"runtime":"~22 min for a 15 s promo (Agent Skills Hub test)","files":["SKILL.md","references/gauntlet.md","references/motion-grammar.md","references/quality-bar.md","references/launch-film-notes.md","scripts/loudness.sh","scripts/offline-mix.py","templates/component-lab.html"],"stats":{"stars":1229,"installs":223,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-14","addedAt":"2026-10-26","preview":{"kind":"cards","hue":160,"text":"Gauntlet: pass"},"legal":"scanned: manual review 2026-10-26 — local shell and Python helpers only, no install hooks.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/110bcad9773a/business-motion-film.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRvAAAABXRUJQVlA4IOQAAADQBQCdASogABIAPtFUpU2oJCOiMBgIAQAaCWMAxvcua6EGH0+HUWUkixL1eArQXye/M2IEWqOAAP7HaapHNckDTFxLGKOtgb8qJTecOLthj0kzlyAbeyPDKR8VDEHXB6IEFSpq+tqKQuhDxcMgFXu7cR9wfgQXLGQICCoUFXe9BMEe1+ocFUZvseE22FyMMui4S+d/aU3cLrWUMy0xRCZ2Xj1pQ+3w3evMKeFVRWBwjzoxGmqelZMTVEhC8hl2SJevksz5e2HCV3makPhhL9MvJkjNDCOngYdwjcPZuOl/ry/AAAA=","source":"https://video.twimg.com/amplify_video/2104231687593021440/vid/avc1/1920x1080/DO6Kg8arkRCpx_Bo.mp4?tag=16","page":"https://x.com/everestchris6/status/2104231799090217078","credit":"Chris (@everestchris6), Motion Video Kit","rights":"creator-post","note":"The ALDER roof-inspection sample commercial from the kit's case study (case-study-alder.md), embedded in the author's X article 'how to run an ai video agency': 'Small details' close-up, then a 3D house whose roof explodes into labelled layers. First 8 s of 28.7 s.","bytes":326603,"addedAt":"2026-10-27"}},{"id":"bitwize-music-studio/bitwize-music","slug":"bitwize-music","name":"Bitwize Music (Suno Album Studio)","type":"skill","status":"live","stream":"community","category":"lyrics","tags":["music","suno","lyrics","mastering","album-art","plugin","audio"],"summary":"A 53-skill Claude Code plugin for human + AI albums on Suno: lyrics, style prompts, stem mixing, mastering, release.","description":"A Claude Code plugin that runs an album like a production team: concept and tracklist, a lyric writer with prosody and pronunciation checks, plagiarism and explicit-content scans, and a Suno engineer that builds style prompts and settings for the current Suno model family (v6, v6-wild, v6-mini). Mix and mastering engineers then process per-stem WAVs for streaming loudness, and further skills cover album-art concepts, 15-second vertical promo videos and release prep, with gates that block generation until sources and lyrics are reviewed. Documentary-style albums get a bank of researcher skills (court records, SEC filings, journalism) with a verification step. Released under CC0.","useWhen":["Write and refine lyrics and Suno style prompts","Mix and master Suno stems for streaming","Plan, track and release a whole album"],"notFor":["Generating songs without a Suno account","Voice-over or sound effects for video"],"publisher":{"name":"bitwize-music-studio","handle":"bitwize-music-studio","kind":"community","url":"https://github.com/bitwize-music-studio","avatar":"https://github.com/bitwize-music-studio.png","verified":false},"source":{"url":"https://github.com/bitwize-music-studio/claude-ai-music-skills","repo":"bitwize-music-studio/claude-ai-music-skills","license":"CC0-1.0"},"install":{"claude-code":"/plugin marketplace add bitwize-music-studio/claude-ai-music-skills\n/plugin install bitwize-music@bitwize-music"},"agents":["claude-code"],"models":["suno"],"requires":["Suno account","Python 3 (mixing and mastering tools)"],"cost":{"note":"Free plugin; songs are generated in your own Suno account"},"files":["skills/suno-engineer/SKILL.md","skills/lyric-writer/SKILL.md","skills/mix-engineer/SKILL.md","skills/mastering-engineer/SKILL.md","skills/promo-director/SKILL.md","hooks/hooks.json","tools/mastering/"],"stats":{"stars":598,"installs":2271,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-13","addedAt":"2026-10-26","preview":{"kind":"wave","hue":280,"text":"[Verse 1]"},"legal":"scanned: manual review 2026-10-26 — the plugin registers PostToolUse hooks that run two local Python validators (no network) after every Write/Edit. Generated music follows Suno's terms.","adds":"tool","media":{"type":"audio","file":"https://s3.varg.ai/how-to/previews/8c6ce155dfba/bitwize-music.mp3","duration":15,"peaks":[0.89,0.93,0.89,0.73,0.9,0.88,0.88,0.82,0.98,0.89,0.94,0.75,0.9,0.76,0.66,0.54,0.69,0.9,0.99,0.94,0.92,0.79,0.87,0.77,0.94,0.78,0.93,0.67,1,0.71,0.89,0.97,0.99,0.84,0.76,0.86,0.8,0.89,0.86,0.91,0.85,0.89,0.76,0.94,0.69,0.96,0.71,0.92,0.92,0.86,0.82,0.92,0.68,0.91,0.73,0.94,0.7,0.95,0.63,0.96,0.97,0.85,0.84,0.99],"source":"https://video.twimg.com/ext_tw_video/2047080507091881984/pu/vid/avc1/720x1280/E54vXpaUCQgKlSRU.mp4?tag=12","page":"https://x.com/bitwizemusic/status/2047080655117307912","credit":"bitwize (bitwize music)","rights":"creator-post","note":"15 s of 'The Dragon' from the album Distros, a human + AI song made with the plugin that powers every bitwize album (per bitwizemusic.com/behind-the-music). Audio taken from the creator's own promo clip on X.","bytes":181008,"addedAt":"2026-10-27"}},{"id":"makevoid/motion-graphics-music-video","slug":"motion-graphics-music-video","name":"Motion Graphics Music Video","skillName":"motion-graphics-music-video","type":"skill","status":"live","stream":"community","category":"music","tags":["characters","storyboard","p5","fal","vfx","plugin"],"summary":"Animated character music videos from your song and a prompt: storyboard, fal generation, p5 motion graphics, VFX.","description":"A Claude Code plugin that turns a supplied song and a creative prompt into an animated character music video. It analyses the track, researches and writes a storyboard plan, waits for your approval, then runs staged sub-agents for character stills (GPT Image 2) and image-to-video (MiniMax H3 Max) on fal, p5.js motion graphics, audio editing and optional Swift VFX on macOS. You can revise characters, scenes, animation, sound and effects afterwards. The repo ships readable source only (no bundled media) plus a Ruby MCP server for the media tasks.","useWhen":["Make a full music video for an existing track","Revise characters, scenes or effects in a music video you already made"],"notFor":["Writing or generating the song itself"],"publisher":{"name":"Francesco Canessa","handle":"makevoid","kind":"community","url":"https://github.com/makevoid","avatar":"https://github.com/makevoid.png","verified":false},"source":{"url":"https://github.com/makevoid/motion-graphics-music-video-skill/tree/main/.claude/skills/motion-graphics-music-video","repo":"makevoid/motion-graphics-music-video-skill","path":".claude/skills/motion-graphics-music-video","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add makevoid/motion-graphics-music-video-skill && claude plugin install motion-graphics-music-video@makevoid-music-video --scope user"},"agents":["claude-code"],"models":["gpt_image_2","minimax_h3_max","whisper"],"requires":["fal API key (FAL_AI_API_KEY)","Ruby 3.2+ and Bundler","FFmpeg, ImageMagick, Python 3, Node.js 22+ and Chrome","macOS 14+ and Swift 5.9+ for the Swift VFX step"],"cost":{"note":"Uses your own fal key"},"files":["SKILL.md","references/planning.md","references/production.md","references/prompts.md","references/animation-audio-vfx.md","assets/plan-template.md","scripts/mcp.rb","scripts/mv.rb"],"stats":{"stars":187,"installs":11,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-13","addedAt":"2026-10-26","preview":{"kind":"generative","hue":320,"text":"drop"},"legal":"scanned: manual review 2026-10-26 — calls fal.ai with your key; no install hooks. Use only songs you have the rights to.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/de274146ac77/motion-graphics-music-video.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRvgAAABXRUJQVlA4IOwAAAAQBgCdASogABIAPtFYpU0oJSOiMBgIAQAaCUAXZCAn/0vNNlWxAzO0RAE9pg+zWJU3hEeaympA3CgA/veBdM5fNDVtVU50zf5YMzsJ82jf/ax89xCEuDv7hWwu34YsLsDvBm2fgzvt9isIXQPtXWFON1w69XwjMA5Gj7lJyXtOdVeYnTr8dKrqErTO+M7JDNR72rYmVR5HPagJkSt2FomA+D2FNzqwC7umoR6Vz1PQbkCajXWFpoFJsDn7FMvISDPZ6BdhZ2FXDb/phlOTc34Qu6GpSFcDWjuAbILKSA65fB0NZu1kQnachaAAAA==","source":"https://youtu.be/8b-NPujP_sw","page":"https://github.com/makevoid/motion-graphics-music-video-skill#readme","credit":"makevoid","rights":"creator-post","note":"'Programming is DEAD' music video by @makevoid, made with the skill and linked from its README gallery (YouTube): animated singer, lyric captions and motion-graphics stage. Cut 42-50 s of 1:56.","bytes":706854,"addedAt":"2026-10-27"}},{"id":"bangtutorial/bang-motion","slug":"bang-motion","name":"Bang Motion","skillName":"bang-motion","type":"skill","status":"live","stream":"community","category":"animation","tags":["brand-motion","explainers","gsap","three.js","openers","html-video","kinetic-type"],"summary":"Browser motion graphics that move like video, not slides: openers, promos, bumpers, kinetic type and explainers.","description":"An Indonesian-language skill from the Bang Tutorial YouTube channel for building cinematic motion graphics in a single HTML file with HTML, CSS and GSAP (plus Three.js when needed): promo videos, openers and intros, bumpers, kinetic typography and five explainer styles (visual journalism, cartoon, catalogue, stage and sketch) in 16:9 or 9:16. Its rules are mechanical anti-slideshow checks: deterministic timing, a style derived from the theme rather than the starter, live text over a quiet background. Puppeteer scripts export frames to MP4, and a reference covers building explainers directly in After Effects through Higgsfield's bridge.","useWhen":["Make a promo, opener, bumper or kinetic-type piece in the browser","Fix web animation that looks like a slide deck","Render a web animation to MP4"],"notFor":["AI-generated footage","Teams that need English instructions (SKILL.md is in Indonesian)"],"publisher":{"name":"Bang Tutorial","handle":"bangtutorial","kind":"community","url":"https://github.com/bangtutorial","avatar":"https://github.com/bangtutorial.png","verified":false},"source":{"url":"https://github.com/bangtutorial/bang-motion","repo":"bangtutorial/bang-motion","license":"MIT"},"install":{"claude-code":"/plugin marketplace add bangtutorial/bang-motion\n/plugin install bang-motion@bang-motion"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["A browser for preview","Node.js with Puppeteer and ffmpeg for MP4 export"],"cost":{"note":"Free — local render"},"files":["SKILL.md","references/anti-ppt.md","references/explainer.md","references/techniques.md","references/ae-bridge-higgsfield.md","assets/starter-opener.html","scripts/export-frames.mjs"],"stats":{"stars":733,"installs":149,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"version":"1.19.0","updatedAt":"2026-09-15","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":12,"text":"NOT A SLIDE"},"legal":"scanned: manual review 2026-10-26 — local scripts only.","adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/1f3a31890598/bang-motion.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRhQBAABXRUJQVlA4IAgBAABwBQCdASogABIAPslQn0unpKKlMAwA8BkJbACdMuN5ffdAMWvwPsDzeVyokX4AacwGO+JgAP58r74MpHJbkeL3/CBnLdRqCio7VG5G0eUr4wSf3uUpfuNN48r5r8FligGXuK7pH1co30/ZWNtxSc1x6qr+DA3I031eHB4XiPLqC1dT+AOepNNNOFw/NxQs935TSPd2EJqdBzWIhRx/QTP6U2xfrYhtj9z6EVaMYpUxuBcg8I69fL1x5ynCaZz3hf99GzYyE6M8H/k7b/FZP4U4NPF4VoaKM5+etyAjjpzBOipmAynoIZnxTLDpIQz5lee6Ujs9YK4Htjt1aL6txQXWQGR/yXSMAAA=","source":"https://raw.githubusercontent.com/bangtutorial/bang-motion/main/docs/gallery/02-kinetic-colorblock.jpg","page":"https://github.com/bangtutorial/bang-motion#style-gallery","credit":"Bang Tutorial (bang-motion)","rights":"publisher-repo","note":"Frame from the README style gallery: 'Poster color-block' kinetic typography (huge cropped words, color fields that slam in on the beat). Still image; no video demo is published in the repo.","bytes":27364,"addedAt":"2026-10-27"}},{"id":"eternityspring/shuohao-skills","slug":"shuohao-short-drama","name":"Shuohao Short-Drama Skills","type":"skill","status":"live","stream":"community","category":"story","tags":["short-drama","storyboard","characters","screenwriting","minimax-h3","cinematic"],"summary":"Seven chained skills from novel to AI short drama: characters, outline, art bible, script, staging, storyboard.","description":"The most-starred AI short-drama pack on GitHub (5.4K stars within three months; it announced a four-figure sponsorship on 2026-10-26). Seven chained skills turn a novel or story into character sheets with image and voice prompts, a five-part adaptation outline, an art bible for scenes and props, a structured script, staging, and a storyboard that writes one MiniMax H3 video prompt per segment (a Seedance prompt reference is included). Each stage emits JSON, Markdown and a one-page review report, and its quality gates are checked by deterministic Node scripts rather than by the model. Most stages need no API key; character-refs can render reference images through ComfyUI (Qwen Image), Codex's built-in image tool or the OpenAI Images API.","useWhen":["Adapt a novel or story into a vertical short drama","Write episode scripts and a shot-by-shot storyboard","Keep characters, scenes and props consistent across episodes"],"notFor":["Rendering the final video (it writes plans and prompts)"],"publisher":{"name":"Wesley Wang","handle":"eternityspring","kind":"community","url":"https://github.com/eternityspring","avatar":"https://github.com/eternityspring.png","verified":false},"source":{"url":"https://github.com/eternityspring/shuohao-skills","repo":"eternityspring/shuohao-skills","license":"Apache-2.0"},"install":{"claude-code":"npx skills add eternityspring/shuohao-skills","codex":"npx skills add eternityspring/shuohao-skills"},"agents":["claude-code","codex"],"models":["minimax_h3"],"requires":["Node.js 18+","Optional: ComfyUI or an OpenAI API key for character reference images"],"cost":{"note":"Free — runs on your agent's own usage; reference images are optional and billed by your image provider"},"files":["skills/novel-characters/SKILL.md","skills/novel-outline/SKILL.md","skills/novel-art/SKILL.md","skills/novel-script/SKILL.md","skills/novel-staging/SKILL.md","skills/novel-storyboard/SKILL.md","skills/character-refs/SKILL.md"],"stats":{"stars":5383,"installs":1403,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"grid","hue":200,"text":"EP 1 · SHOT 3"},"legal":"scanned: manual review 2026-10-26 — Node scripts use only the standard library. Adaptation rights to the source novel are the user's responsibility.","adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/6ceb1ef38cd6/shuohao-short-drama.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRiYBAABXRUJQVlA4IBoBAACQBQCdASogABIAPtFWpU0oJCOiMBgIAQAaCWcAUwBb81gVuz4OgdwShG5AtrRm3Z5MnojkAAD++LnsX44U+s35eDfZvrm8+eKf8MBy+11eL9yZiBK98VEBbM7WWG2ge1qZvLsG+KYhUWdBiuem+WvUAFLE8yzZrKYrrXIz7cSNp+Hjq5zTfkFkKTN6EZAYVD/4fXmnDBlrEHonr5l/4L/l2pb6/bW187SCnBHbATBDL54Hf2wvqwrLQFpvwZd0Uhnvo3cdrFn77ywtQqewj5cU3/JhyVypMdz6pl3+Yk16dn0SoAisqTTz+v+u67c5ihl7Ysb0mNlLiSqc/7nnn9N+lLxXg9c1oLmSZ8Wydgm27vjLV2ap3vWeAAA=","source":"https://raw.githubusercontent.com/eternityspring/shuohao-skills/main/skills/novel-characters/assets/sheet.jpg","page":"https://github.com/eternityspring/shuohao-skills/blob/main/skills/novel-characters/README.en.md","credit":"eternityspring (shuohao-skills)","rights":"publisher-repo","note":"Character model sheet for Shen Zhiwei from the bundled sample story: headshot, front/side/back turnaround and prop/costume details, as made by the novel-characters skill.","bytes":26644,"addedAt":"2026-10-27"}},{"id":"zenstory-ai/drama-skills","slug":"zenstory-drama-skills","name":"Drama Skills (ZenStory)","skillName":"short-drama","type":"skill","status":"live","stream":"community","category":"story","tags":["short-drama","storyboard","screenwriting","keyframes","video-prompts","eval-tested","cinematic"],"summary":"Short-drama skills that beat a no-skill control in blind tests: script, assets, storyboard, keyframe and video prompts.","description":"Twelve skills that carry a Chinese short drama or AI manju (comic drama) from an idea or a novel to the edit: development and adaptation, novel analysis, episode writing, character and location assets, image prompts, a storyboard with frozen keyframe prompts and continuity checks (axis, blocking, eyelines, props), video prompts, review, edit planning and production through provider adapters. In the Awesome Short Drama Skills blind test (2026-10-18, Opus and GPT judges, three runs each), its scripts and character outlines beat the no-skill control every time; judges noted short lines, distinct voices and emotion carried by objects, with episode-end hooks on the restrained side. The writing skills produce Markdown and call no provider; the produce skill can call MiniMax, OpenAI, Volcengine Ark or Qwen with your keys.","useWhen":["Develop a short drama or manju from an idea or a novel","Turn a script into storyboards and keyframe prompts","Check continuity before generating video"],"notFor":["English-language scripts (skills and outputs are Chinese-first)"],"publisher":{"name":"ZenStory AI","handle":"zenstory-ai","kind":"community","url":"https://github.com/zenstory-ai","avatar":"https://github.com/zenstory-ai.png","verified":false},"source":{"url":"https://github.com/zenstory-ai/drama-skills","repo":"zenstory-ai/drama-skills","license":"MIT"},"install":{"claude-code":"npx skills add zenstory-ai/drama-skills -y -g","codex":"npx skills add zenstory-ai/drama-skills -y -g"},"agents":["claude-code","codex"],"models":["seedance_2"],"requires":["Provider keys only for the produce step (MiniMax, OpenAI, Volcengine Ark or Qwen)"],"cost":{"note":"Writing skills are free; production calls are billed to your own provider keys"},"files":["skills/short-drama/SKILL.md","skills/short-drama-develop/SKILL.md","skills/short-drama-write/SKILL.md","skills/short-drama-assets/SKILL.md","skills/short-drama-storyboard/SKILL.md","skills/short-drama-video-prompts/SKILL.md","skills/short-drama-review/SKILL.md","skills/short-drama-produce/SKILL.md"],"stats":{"stars":3388,"installs":18834,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-20","addedAt":"2026-10-26","preview":{"kind":"film","hue":350,"text":"EP 1 — cliffhanger"},"legal":"scanned: manual review 2026-10-26 — provider adapters call only official MiniMax, OpenAI, Volcengine and Qwen endpoints with your keys.","featured":true,"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/3a4ecaa3014e/zenstory-drama-skills.mp4","w":404,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRgwCAABXRUJQVlA4IAACAADwCQCdASogADoAPtFapE0oJSMiKA1RABoJQBg/8e0r2mrK8Ipx4uCOO/1LFleE25NfGnj6HKT1wzqqyc1jIfdF25xY+2kk5qaUNfOVIAch4qqpeZgA6wYAAP6NPdba4ALSK4eQd3Ms5h9f3/mHTX5c0JS4C1KoMX+GzXmNavzptuzOgqBN+L+2pdgsLFMyaPuUCE8mK88GCDFaH8eEo/EJ1PnDBPfTlNy+aIya8+c5XdsgclGnervKR/UsENSX6JDOgae6/DXffe47MP+lLHfEXSQlDOVvNQSM1bXDT5icEHNvFhLZxC+6GIRKN88to/49Ks2dM79sLOyqVQF8c4AqUXuaSFEW8hTL1/xnFrtafreraE/1dkvCvT3PGM7HRG7d6rT+wxOn7xQUQr5C4pvWW1yloaOE5rfeVViKQ9iA4d+QC5SBsZPDZczsGeYAp2N+4+HvtwpNwI7DYJeVpQvGokF1cOseFwM3l8fNsQ4wYXl/+p4U5WqRZvWrC0zpBZaTGIlZR38CKbOe3CCALa2r2+HrFAadTE6KjzoySZvFlD9s/36Me89ynwbiNg+a/j++pyHq/fcxA2ASdk73m75dq4ArgF7ZUOIxjZJZvq8gbSF0MrYN/nN2feA+xSnxx5UGrmN2Bmm5DpvK+iYVmnnDXIbAz1dHQrBzzKEYLZAAAA==","source":"https://github.com/user-attachments/assets/640db65d-bd57-4924-83de-9c5852c1db26","page":"https://github.com/zenstory-ai/drama-skills#readme","credit":"ZenStory AI (drama-skills)","rights":"publisher-repo","note":"The README's 68 s vertical sample: opening of episode 1 of 让你管账号, adapted from a 20-chapter novel, 20 storyboard shots generated one by one, then cut with captions, system panels and SFX. Cut 2.5-10.5 s.","bytes":148995,"addedAt":"2026-10-27"}},{"id":"jtydhr88/screenwriting","slug":"screenwriting-skills","name":"Screenwriting Skills","type":"skill","status":"live","stream":"community","category":"story","tags":["screenwriting","short-drama","series","dialogue","eval-tested","plugin","cinematic"],"summary":"26 screenwriting and dramaturgy skills, from story structure to writing in the style of Ozu, Chekhov or Succession.","description":"A Claude Code plugin of 26 screenwriting skills distilled from published scripts and craft books: story structure, premise and theme, scene craft, dialogue, character conflict, genre anatomy, series structure and series bibles, writers' rooms, sitcom comedy, format adaptation and industry practice, plus national traditions (Japanese, Korean and French, Chinese series, Chinese opera) and author-style skills for Chekhov, Ozu Yasujiro and Succession. In the Awesome Short Drama Skills blind test (2026-10-18) its scripts and character outlines beat the no-skill control in all three runs, with emotion carried by action and supporting characters given a history; episode-end hooks were sometimes not punchy enough.","useWhen":["Write or revise a screenplay, series bible or episode","Write in a named style such as Ozu or Succession","Tighten dialogue and scene structure before storyboarding"],"notFor":["Storyboards or video prompts (pair it with a storyboard skill)"],"publisher":{"name":"Terry Jia","handle":"jtydhr88","kind":"community","url":"https://github.com/jtydhr88","avatar":"https://github.com/jtydhr88.png","verified":false},"source":{"url":"https://github.com/jtydhr88/screenwriting-skills","repo":"jtydhr88/screenwriting-skills","license":"MIT"},"install":{"claude-code":"/plugin marketplace add jtydhr88/screenwriting-skills\n/plugin install screenwriting@screenwriting-skills","codex":"git clone https://github.com/jtydhr88/screenwriting-skills.git && cp -r screenwriting-skills/plugins/screenwriting/skills/* ~/.agents/skills/"},"agents":["claude-code","codex"],"cost":{"note":"Free — instructions only"},"files":["plugins/screenwriting/skills/sw-story-structure/SKILL.md","plugins/screenwriting/skills/sw-scene-craft/SKILL.md","plugins/screenwriting/skills/sw-dialogue/SKILL.md","plugins/screenwriting/skills/sw-series-engine-bible/SKILL.md","plugins/screenwriting/skills/ozu-screenplay-style/SKILL.md","plugins/screenwriting/skills/chekhov-dramaturgy/SKILL.md","plugins/screenwriting/skills/succession-series-writing/SKILL.md"],"stats":{"stars":1821,"installs":3849,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-03","addedAt":"2026-10-26","preview":{"kind":"notes","hue":90,"text":"INT. KITCHEN — NIGHT"},"legal":"scanned: manual review 2026-10-26 — Markdown plus one helper script; skills summarize published screenplays in the author's own words.","adds":"tool","media":{"type":"none","reason":"Text-only screenwriting skills; the repo has no media and the author's X posts only show README tables, no screenplay output or visual sample","searched":["github.com/jtydhr88/screenwriting-skills README and tree (no media files)","X @jtydhr88 launch posts 2096797925368062016 and 2098743416125313337 (README screenshots only)","X search 'screenwriting-skills'"],"addedAt":"2026-10-27"}},{"id":"adoria111/emma-screenwriting-skills","slug":"emma-screenwriting","name":"Emma Short-Drama Writing Skills","type":"skill","status":"beta","stream":"community","category":"story","tags":["short-drama","screenwriting","hooks","localization","eval-tested","cinematic"],"summary":"Short-drama writing kit (hooks, outlines, dialogue, trims, US localization) that beat a no-skill control in blind tests.","description":"A beta set of 24 short-drama writing skills: structure breakdown, adaptation, topic iteration, expectation design, episode-end hooks, outline-to-script expansion, Chinese dialogue diagnosis, script trimming, and an overseas track that localizes dialogue into natural North American English for ReelShort and DramaBox-style vertical dramas. In the Awesome Short Drama Skills blind test (2026-10-18) its scripts and character outlines beat the no-skill control in all three runs; judges noted restrained dialogue and supporting characters with motives and arcs, with hooks and paywall beats on the soft side. Young repo (first commit 2026-10-06) with very few stars, so it stays in beta.","useWhen":["Design episode-end hooks and paywall beats","Expand an outline into a scene-by-scene script","Localize Chinese short-drama dialogue for US platforms"],"notFor":["Storyboards, image or video prompts"],"publisher":{"name":"Emma Wang","handle":"adoria111","kind":"community","url":"https://github.com/adoria111","avatar":"https://github.com/adoria111.png","verified":false},"source":{"url":"https://github.com/adoria111/emma-screenwriting-skills","repo":"adoria111/emma-screenwriting-skills","license":"MIT"},"install":{"claude-code":"npx skills add adoria111/emma-screenwriting-skills","codex":"npx skills add adoria111/emma-screenwriting-skills"},"agents":["claude-code","codex"],"cost":{"note":"Free — instructions only"},"files":["skills/em-structure/SKILL.md","skills/em-episode-hooks/SKILL.md","skills/em-outline-to-script/SKILL.md","skills/em-dialogue/SKILL.md","skills/em-script-trim/SKILL.md","skills/drama-dialogue-localizer/SKILL.md","advanced/story-writing/skills/em-chief-writer/SKILL.md"],"stats":{"stars":3,"installs":52,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"cards","hue":300,"text":"next-episode hook"},"legal":"scanned: manual review 2026-10-26 — Markdown only.","adds":"tool","media":{"type":"none","reason":"Text-only short-drama writing methods (outlines, hooks, dialogue, localization); no sample output, image or video is published","searched":["github.com/adoria111/emma-screenwriting-skills README and tree (no media files)","GitHub profile adoria111 (no site or X handle)","X search 'emma-screenwriting' / '艾玛短剧' / 'adoria111'"],"addedAt":"2026-10-27"}},{"id":"Hao0321/ai-short-drama","slug":"ai-short-drama-studio","name":"AI Short Drama Studio","skillName":"ai-short-drama","type":"skill","status":"live","stream":"community","category":"story","tags":["short-drama","series-bible","storyboard","continuity","eval-tested","cinematic"],"summary":"Greenlight score, series bible, episode compiler and production pack for serialized AI short dramas and manju.","description":"A single skill with eight modes for serialized AI short dramas, manju and live-action-style vertical series: genre radar and format routing, a greenlight score, series bible and asset registry, shot-by-shot timelines, payoff and reveal ladders, episode scripts, serialization state, production packs, resumable generation and QA with results fed back. Media prompts are delegated to the author's companion ai-media-generator skill, and Python lint scripts validate the studio plan and production pack against JSON schemas. In the Awesome Short Drama Skills tests its character outlines beat the no-skill control in all three runs (its scripts were mixed), and it placed 3rd (Opus judge) and 1st (GPT judge) of 12 entrants for topic selection, judged the most original.","useWhen":["Plan a season of a vertical short drama","Compile an episode into a shot timeline and production pack","Audit why a short drama is not landing"],"notFor":["Writing the media prompts themselves (route them to a prompt skill)"],"publisher":{"name":"Hao0321","handle":"Hao0321","kind":"community","url":"https://github.com/Hao0321","avatar":"https://github.com/Hao0321.png","verified":false},"source":{"url":"https://github.com/Hao0321/ai-short-drama","repo":"Hao0321/ai-short-drama","license":"MIT"},"install":{"claude-code":"git clone https://github.com/Hao0321/ai-short-drama.git ~/.claude/skills/ai-short-drama","codex":"git clone https://github.com/Hao0321/ai-short-drama.git ~/.codex/skills/ai-short-drama"},"agents":["claude-code","codex"],"requires":["Python 3 (lint scripts)"],"cost":{"note":"Free — planning and writing; generation billed by whichever models you route to"},"files":["SKILL.md","references/story-architecture.md","references/genre-engines.md","references/production-pipeline.md","references/studio-workflow.md","scripts/studio_lint.py","scripts/drama_lint.py","evals/evals.json"],"stats":{"stars":74,"installs":6,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-13","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":260,"text":"S1 · E1 greenlit"},"legal":"scanned: manual review 2026-10-26 — local Python linters only; README and SKILL.md are in Traditional Chinese.","adds":"tool","media":{"type":"none","reason":"Planning and routing skill (greenlight score, series bible, episode compiler); the repo has no media and the creator has published no sample episode","searched":["github.com/Hao0321/ai-short-drama README and tree (no media files)","GitHub profile Hao0321 (no site or X handle)","aizhuiguang.tech (a third-party product the README cites as research, not the creator's)","X search 'Hao0321' / 'ai-short-drama' (only third-party posts about other tools)"],"addedAt":"2026-10-27"}},{"id":"UnderleveledBuilder/short-drama-skill-finder","slug":"short-drama-skill-finder","name":"Short Drama Skill Finder","skillName":"short-drama-skill-finder","type":"skill","status":"live","stream":"community","category":"story","tags":["short-drama","discovery","catalog","cinematic","tooling"],"summary":"Picks short-drama and manju skills from a hand-checked list of 90+ projects by stage, video model and agent.","description":"The skill that ships with the Awesome Short Drama Skills list (1K stars, CC0). It loads the list's structured data (type, production stage, target video model, supported agents, install command, license, stars and last push for each hand-checked project) and recommends one pipeline or a few focused skills for the user's stage, model and agent, respecting license constraints for commercial use. The list also publishes blind A/B evals against a no-skill control, which is how the eval-tested short-drama entries in this catalog were chosen.","useWhen":["Choose a short-drama skill for a stage (adaptation, hooks, script, storyboard, prompts)","Find skills that target Seedance, Kling, MiniMax or ComfyUI"],"notFor":["Writing the drama itself"],"publisher":{"name":"Underleveled Builder","handle":"UnderleveledBuilder","kind":"community","url":"https://github.com/UnderleveledBuilder","avatar":"https://github.com/UnderleveledBuilder.png","verified":false},"source":{"url":"https://github.com/UnderleveledBuilder/awesome-short-drama-skills/tree/main/skills/short-drama-skill-finder","repo":"UnderleveledBuilder/awesome-short-drama-skills","path":"skills/short-drama-skill-finder","license":"CC0-1.0"},"install":{"claude-code":"npx skills add UnderleveledBuilder/awesome-short-drama-skills","codex":"npx skills add UnderleveledBuilder/awesome-short-drama-skills"},"agents":["claude-code","codex","openclaw"],"requires":["Network access (it fetches the list at run time)"],"cost":{"note":"Free"},"files":["SKILL.md"],"stats":{"stars":1026,"installs":41,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":140,"text":"npx skills add …"},"legal":"scanned: manual review 2026-10-26 — fetches https://shortdramaskills.com/data.json at run time (remote, mutable data); read any install command it suggests before running it.","adds":"tool","media":{"type":"none","reason":"A recommender whose output is a text list of skills; the repo's only image is a site banner (web/static/og.png), and no recording of the finder in use is published","searched":["github.com/UnderleveledBuilder/awesome-short-drama-skills README and tree (og.png banner, favicon)","skills/short-drama-skill-finder (SKILL.md only)","GitHub profile UnderleveledBuilder (no site or X handle)"],"addedAt":"2026-10-27"}},{"id":"cclank/lanshu-create-ai-presenter-video","slug":"lanshu-ai-presenter-video","name":"Lanshu AI Presenter Video","skillName":"lanshu-create-ai-presenter-video","type":"skill","status":"live","stream":"community","category":"talking-head","tags":["explainers","avatar","lip-sync","captions","consent"],"summary":"Publish-ready explainers led by an AI presenter from an authorized photo, or in one of twelve presenter-free styles.","description":"Turns a topic or a finished script into a complete explainer video, either led by an AI presenter generated from an authorized adult presenter image or performed without a presenter in one of twelve explainer styles (nine visual, such as paper pop-up, clay town, blueprint and chalkboard, plus three narrative ones). It runs a resumable job state machine (lock content and audio, plan and generate the presenter, edit, verify and deliver), supports revising, captioning, lip-sync repair and re-exporting an existing job, and records the actual model and provider chosen for each job instead of hard-coding one. Published by Lanshu (cclank), with Chinese and English READMEs.","useWhen":["Make a digital-presenter explainer from a script","Pick a presenter-free explainer style","Fix lip sync or captions on an existing presenter job"],"notFor":["Promos, ads or footage montages (the skill excludes them)","Presenter images you are not authorized to use"],"publisher":{"name":"Lanshu","handle":"cclank","kind":"community","url":"https://github.com/cclank","avatar":"https://github.com/cclank.png","verified":false},"source":{"url":"https://github.com/cclank/lanshu-create-ai-presenter-video","repo":"cclank/lanshu-create-ai-presenter-video","license":"MIT"},"install":{"claude-code":"git clone https://github.com/cclank/lanshu-create-ai-presenter-video.git ~/.claude/skills/lanshu-create-ai-presenter-video"},"agents":["claude-code","codex","cursor","gemini-cli"],"requires":["Python 3.9+, FFmpeg with ffprobe, bash and jq","Node.js (npx) and rsync for the styled-explainer route","Provider credentials for voice and presenter generation"],"cost":{"note":"Uses your own voice and video provider keys; the provider is chosen per job"},"files":["SKILL.md","references/generation.md","references/editing.md","references/qa-recovery.md","references/styled-explainer.md","explainer/STYLES.md","scripts/init_job.py","scripts/plan_segments.py"],"stats":{"stars":2818,"installs":37,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-11","addedAt":"2026-10-26","preview":{"kind":"avatar","hue":190,"text":"Today: how RAG works"},"legal":"scanned: manual review 2026-10-26 — local Python and shell scripts. Requires an authorized adult presenter image; never generate someone's likeness without consent.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e422196a7616/lanshu-ai-presenter-video.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRpoAAABXRUJQVlA4II4AAABwBACdASogABIAPs1QokunpKMht/VYAPAZiWcAzu2MWcYCL2mPERfZu496KAD++Wveogd+F/vHuFuhE0T2ZiwILL395DoCeD2V7JqxhpKLbRHbMOoe4YuzFpsx7X4XARsDy56HEqf5NiYAlRdfvfTSx4MjnAATAUGgW1+6nWSuEv2tpJ0LExXraGiWqlAA","source":"https://video.twimg.com/amplify_video/2094017646312423424/vid/avc1/1920x1080/PoQRtnQV02dV5Pk0.mp4","page":"https://x.com/LufzzLiz/status/2094018562046271682","credit":"岚叔 Lanshu (@LufzzLiz)","rights":"creator-post","note":"Creator's explainer on Hugging Face Storage: an AI presenter generated and embedded by this skill beside code-drawn explainer panels (graphics via the creator's companion html2video skill). First 8 s of 30 s.","bytes":61970,"addedAt":"2026-10-27"}},{"id":"Agentchengfeng/chengfeng-videocut","slug":"chengfeng-videocut","name":"Chengfeng Videocut","type":"skill","status":"live","stream":"community","category":"editing","tags":["editing","captions","transcript-editing","chinese","codex-plugin","talking-head"],"summary":"Chinese talking-head editing: word-level transcript, five-pass flub sweep, human review in a Studio, subtitles, export.","description":"A Codex plugin for editing Chinese talking-head footage. The cut skill transcribes word by word with a cloud ASR, fixes misheard terms from a dictionary, runs five separate scans for flubs and repeats, and produces a deletion ledger that you approve in a local Studio before anything is cut; sibling skills add subtitles and HTML visual layers, and the export skill burns cuts, push-ins, subtitles and visuals into one MP4 in a single pass. Your corrections and dictionary fixes are kept for the next session. The plugin installer pins exact source commits, and the Studio runtime comes from a pinned release checked against SHA-256.","useWhen":["Cut flubs, repeats and dead air from a Chinese talking-head recording","Add subtitles and visual layers, then export one MP4"],"notFor":["Non-Chinese speech (dictionary and rules are Chinese-first)","Local-only transcription (it requires a cloud ASR)"],"publisher":{"name":"chengfeng","handle":"Agentchengfeng","kind":"community","url":"https://github.com/Agentchengfeng","avatar":"https://github.com/Agentchengfeng.png","verified":false},"source":{"url":"https://github.com/Agentchengfeng/chengfeng-videocut-skills","repo":"Agentchengfeng/chengfeng-videocut-skills","license":"Apache-2.0"},"install":{"codex":"node bin/install.cjs install"},"agents":["codex"],"requires":["Codex CLI with plugin support","Node.js 18+ and Git","A cloud ASR for word-level transcription"],"cost":{"note":"Free plugin; cloud transcription billed by your ASR provider"},"files":["plugins/chengfeng-videocut/skills/chengfeng-cut/SKILL.md","plugins/chengfeng-videocut/skills/chengfeng-subtitle/SKILL.md","plugins/chengfeng-videocut/skills/chengfeng-visual/SKILL.md","plugins/chengfeng-videocut/skills/chengfeng-export/SKILL.md","plugins/chengfeng-videocut/skills/chengfeng-check-updates/SKILL.md","plugins/chengfeng-videocut/scripts/ensure-runtime.cjs","bin/install.cjs"],"stats":{"stars":3135,"installs":2802,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-20","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":20,"text":"cut filler words"},"legal":"scanned: manual review 2026-10-26 — downloads its Studio runtime from the repo's own GitHub Releases at a pinned tag with a SHA-256 check. Run the installer inside a checkout of the release named in the README, not from main.","adds":"tool","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/e62a09a47006/chengfeng-videocut.webp","w":960,"h":586,"blur":"data:image/webp;base64,UklGRooAAABXRUJQVlA4IH4AAAAwBACdASogABQAPtFOo0uoI6Mht/VYAQAaCWcAAC2RBsOtIi9tgEnobwAA/u+/vVQS2Zub3YAhtXPmrCQpCNhyw8AQCp9r6HI7VHjqaPbpotNhaOHd6WBsQBNFjOL9PfJ87TRqMH8sdzpQua4Gy4LiM0F1WhCaDqJ1zWAAAAA=","source":"https://pbs.twimg.com/media/HLZSYYBW8AAsEbL.jpg?name=large","page":"https://x.com/agentchengfeng/status/2068932528317071404","credit":"成峰 Chengfeng (@agentchengfeng)","rights":"creator-post","note":"Screenshot from the creator's X article on the Codex upgrade: the skill's storyboard review page, with a generated hand-drawn frame, the word-highlighted talking-head transcript and the colored segment timeline. Still image of the tool in use; no clean output clip from the creator was found.","bytes":31456,"addedAt":"2026-10-27"}},{"id":"adamlyttleapps/aso-appstore-screenshots","slug":"aso-appstore-screenshots","name":"ASO App Store Screenshots","skillName":"aso-appstore-screenshots","type":"skill","status":"live","stream":"community","category":"product","tags":["image","app-store","aso","nano-banana","marketing"],"summary":"App Store screenshots from your codebase: finds the core benefits, pairs simulator shots, then composes and enhances.","description":"Adam Lyttle's skill for iOS developers. It reads your app's codebase to draft the three to five benefits that drive downloads, reviews your simulator screenshots and coaches retakes, pairs each screenshot with a benefit, then generates App Store Connect-sized images in two stages: a deterministic scaffold (compose.py places the headline, device frame and screenshot) followed by an AI enhancement pass with Nano Banana Pro through a Gemini MCP server. Progress is saved to Claude Code's memory so the work resumes across sessions, and a showcase image previews the full set.","useWhen":["Make or refresh App Store screenshots for an iOS app","Turn app features into benefit-led screenshot headlines"],"notFor":["Google Play listings (sizes and frames are App Store-specific)"],"publisher":{"name":"Adam Lyttle","handle":"adamlyttleapps","kind":"community","url":"https://github.com/adamlyttleapps","avatar":"https://github.com/adamlyttleapps.png","verified":false},"source":{"url":"https://github.com/adamlyttleapps/claude-skill-aso-appstore-screenshots","repo":"adamlyttleapps/claude-skill-aso-appstore-screenshots","license":"MIT"},"install":{"claude-code":"npx skills add adamlyttleapps/claude-skill-aso-appstore-screenshots"},"agents":["claude-code"],"models":["nano_banana_pro"],"requires":["Python 3 with Pillow","SF Pro Display Black font (macOS)","Gemini MCP server (@houtini/gemini-mcp) with a Gemini API key"],"cost":{"note":"Uses your own Gemini API key for the enhancement pass"},"files":["SKILL.md","compose.py","generate_frame.py","showcase.py","assets/device_frame.png"],"stats":{"stars":1797,"installs":836,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-03-30","addedAt":"2026-10-26","preview":{"kind":"cards","hue":215,"text":"Track every habit"},"legal":"scanned: manual review 2026-10-26 — local Python only; the enhancement step depends on a third-party npm MCP server (@houtini/gemini-mcp) that was not reviewed here.","adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/2f0e09f9296a/aso-appstore-screenshots.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRmoBAABXRUJQVlA4IF4BAAAQCACdASogABIAPtFUo0uoJKMhsAgBABoJbACdMuz7ToM4Ehb9C3/o9NWsQPaAgQPrpIBSCBgQvw4ecb4z806MJJStsjgXQO6YAP7uaqqcrsQwjFpFqrHcshj4XVNQj3DbAwo+whqV/BY58oZPn5zKoaAFjV3Tz1uqqY7AL0+bFya8QO5WtKuMA+z7CjZbztF5XFuVToX3+783dnYkbplTV5a9ZpCwyFDmFcyGa+xjueKa7O+UBV6Bau8zm83u85usOCyn8q2DdCMrynVHVu2h4bwOwnlCgZv9pOVLnM4VMOwM5IqeKVlooc3beglNgKQJGwwPrRiqxHLlszU5wx3sJ1cTYCBRI+EhxMn7QLu5tJC/kRW/ig95EVv5O++2IgxQR4mTqOiqpNeSm4x1z1Jak7z0e8rizVYUzunhW+0lMhUZLwiMvf3yocc6Ryb1UOOcZJSr+aRpp2T+s6gAAA==","source":"https://pbs.twimg.com/media/HEfkxvobkAAqSJ6.jpg?name=large","page":"https://x.com/adamlyttleapps/status/2037849652364824796","credit":"Adam Lyttle","rights":"creator-post","note":"Three App Store screenshots the skill made for the creator's piano-notes app (benefit headline + simulator shot + Nano Banana polish), from his post announcing the skill.","bytes":53732,"addedAt":"2026-10-27"}},{"id":"buluslan/ecom-image2","slug":"ecom-image2","name":"E-commerce Image Studio","skillName":"ecom-image2","type":"skill","status":"live","stream":"community","category":"product","tags":["image","e-commerce","packshot","a-plus","gpt-image"],"summary":"39 e-commerce image templates (main images, lifestyle, A+, sizes, GIFs) with one style lock across a campaign set.","description":"An open-source e-commerce image skill by buluslan (新西楼.AI) with 39 scenario templates: white-background main images, lifestyle scenes, detail-page infographics, Amazon A+ modules, size charts, packaging, UGC-style shots, variant sets, seasonal campaigns, motion GIFs, bulk product swaps and transparent cutouts. It diagnoses the conversion driver, locks one campaign style across a set, assembles prompts from five slots, routes between OpenAI's GPT Image 2.5 Flare and Sunburst variants, and finishes with a platform compliance and quality pre-check (OCR optional). Images are generated through any OpenAI-compatible endpoint you configure (default api.openai.com), or the skill exports a prompt pack to paste by hand.","useWhen":["Make main images, A+ modules or lifestyle shots for a listing","Keep a whole listing set visually consistent","Batch-swap products or translate text in images"],"notFor":["Video editing, image compression or format conversion (the skill excludes them)"],"publisher":{"name":"buluslan","handle":"buluslan","kind":"community","url":"https://github.com/buluslan","avatar":"https://github.com/buluslan.png","verified":false},"source":{"url":"https://github.com/buluslan/gpt-image2-ecommerce","repo":"buluslan/gpt-image2-ecommerce","license":"MIT"},"install":{"claude-code":"git clone https://github.com/buluslan/gpt-image2-ecommerce.git ~/.claude/skills/ecom-image2"},"agents":["claude-code","codex","cursor"],"models":["gpt_image_2_5_flare","gpt_image_2_5_sunburst"],"requires":["bash, jq and curl","OpenAI-compatible image API key (IMAGE_API_KEY or OPENAI_API_KEY)","Optional: Python 3.9+ with Pillow and tesseract for compliance checks"],"cost":{"note":"Uses your own OpenAI (or compatible) image API key; manual prompt-pack mode costs nothing"},"files":["SKILL.md","references/craft.md","references/campaign-style-lock.md","references/model-routing.md","references/platform-constraints.md","scripts/imagegen.sh","scripts/compliance_check.py","evals/evals.json"],"stats":{"stars":427,"installs":36,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"version":"0.3.3","updatedAt":"2026-09-17","addedAt":"2026-10-26","preview":{"kind":"grid","hue":35,"text":"main image · A+ · lifestyle"},"legal":"scanned: manual review 2026-10-26 — default endpoint is api.openai.com; if you point IMAGE_API_BASE at a relay, your key and product images go to that relay.","adds":"visual","media":{"type":"none","reason":"The repo's only image is a promo banner (assets/banner.png) and the README's two attachments are a WeChat QR code and a dead community image (404); no sample product image set is published","searched":["github.com/buluslan/gpt-image2-ecommerce README and full tree (assets/banner.png only)","README user-attachments d8f068d9 (QR code) and 20f47cd6 (404)","GitHub profile buluslan (no site or X handle)","X search 'gpt-image2-ecommerce' / 'buluslan' / '新西楼'"],"addedAt":"2026-10-27"}},{"id":"nolangz/pixel2motion","slug":"pixel2motion","name":"Pixel2Motion Logo Animation","skillName":"pixel2motion","type":"skill","status":"live","stream":"community","category":"brand-motion","tags":["logo","svg","logo-reveal","html","motion-qa"],"summary":"Raster logo to clean SVG to a choreographed logo animation in HTML, with geometry and motion QA evidence.","description":"Turns a PNG, JPG, WebP or screenshot logo into a minimal SVG (edge smoothness is the hard gate, with IoU against the source pushed as high as is reasonable), then choreographs a logo reveal or idle, hover or loading motion using Disney's twelve animation principles, delivered as a standalone JS-rendered HTML showcase. Python scripts trace, overlay and audit the vector fit; Playwright scripts capture deterministic frames, probe easing curves and sweep ink continuity across handoffs. Version 2 adds self-crossing draw-on choreography and variable-width ribbon fitting.","useWhen":["Animate a logo or build a logo reveal, splash screen or brand intro","Vectorize a raster mark into motion-ready SVG"],"notFor":["3D logo stings","Character animation"],"publisher":{"name":"NolanLai","handle":"nolangz","kind":"community","url":"https://github.com/nolangz","avatar":"https://github.com/nolangz.png","verified":false},"source":{"url":"https://github.com/nolangz/pixel2motion","repo":"nolangz/pixel2motion","license":"MIT"},"install":{"codex":"npx skills add nolangz/pixel2motion","claude-code":"npx skills add nolangz/pixel2motion"},"agents":["codex","claude-code"],"requires":["Python 3 with Pillow, NumPy and Playwright","Chromium (playwright install chromium)"],"cost":{"note":"Free — local"},"files":["SKILL.md","references/twelve-principles-for-logos.md","references/reveal-patterns.md","references/ribbon-fitting.md","scripts/raster_logo_trace.py","scripts/animate_svg_showcase.py","scripts/capture_motion_frames.py","scripts/probe_motion_continuity.py"],"stats":{"stars":2515,"installs":309,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-21","addedAt":"2026-10-26","preview":{"kind":"logo3d","hue":265,"text":"logo reveal"},"legal":"scanned: manual review 2026-10-26 — local scripts only. Animate only logos you have the rights to use.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/5492fe729b30/pixel2motion.mp4","w":720,"h":470,"duration":2,"blur":"data:image/webp;base64,UklGRlwAAABXRUJQVlA4IFAAAACQAwCdASogABQAPtFWo0uoJKMhsAgBABoJaQAAW+s+70yfKqhQAP72AlLMO4Bimqx1THdyCR9dy4NeNZjZakTEw0Qe2+7P184RmapALTAAAA==","source":"https://raw.githubusercontent.com/nolangz/pixel2motion/main/docs/gifs/claude-horizon.gif","page":"https://github.com/nolangz/pixel2motion#readme","credit":"NolanLai (pixel2motion)","rights":"publisher-repo","note":"README showcase 'Horizon': the motion output the skill built from a raster logo (sun, horizon lines and wordmark drawn in). Full 2 s loop, converted from GIF.","bytes":10883,"addedAt":"2026-10-27"}},{"id":"feitangyuan/onetake","slug":"onetake","name":"Onetake","skillName":"onetake","type":"skill","status":"live","stream":"community","category":"launch","tags":["launch-video","product-demo","kinetic-type","motion-blur","sound-design","brand-motion"],"summary":"Launch films that never cut to the next slide: one continuous camera, measured moves, motion blur, a slideshow oracle.","description":"Makes 10–30 second product and skill motion videos (narrated feature demos up to about 60 seconds) the way high-end launch clips are cut: kinetic type, real UI as the material (rebuilt in HTML from screenshots rather than screen-recorded), a hand that causes every reaction, and beats that carry into each other. Everything lives in one HTML composition where every value is a pure function of time, built from a library of measured moves, rendered frame by frame with real shutter motion blur (1080p30 drafts, 4K60 finals) and scored with synthesized sound effects; an oracle fails a slideshow-like cut before a human has to watch it. No HyperFrames or Remotion needed. In the Agent Skills Hub end-to-end test it made a 15-second promo with a look of its own in 8.5 minutes.","useWhen":["Make a 15-second launch video or feature demo","Rebuild a product UI from screenshots for a promo","Find out why a motion video reads as a slideshow"],"notFor":["Commercial work without the author's permission (PolyForm Noncommercial license)"],"publisher":{"name":"Patrick","handle":"feitangyuan","kind":"community","url":"https://github.com/feitangyuan","avatar":"https://github.com/feitangyuan.png","verified":false},"source":{"url":"https://github.com/feitangyuan/onetake","repo":"feitangyuan/onetake","license":"PolyForm-Noncommercial-1.0.0"},"install":{"claude-code":"git clone https://github.com/feitangyuan/onetake.git ~/.claude/skills/onetake","codex":"git clone https://github.com/feitangyuan/onetake.git ~/.agents/skills/onetake"},"agents":["claude-code","codex","cursor"],"models":["kokoro","whisper"],"requires":["Python 3 and Node.js","Playwright with Chromium","ffmpeg"],"cost":{"note":"Free for noncommercial use — local render"},"runtime":"~8.5 min for a 15 s promo (Agent Skills Hub test)","files":["SKILL.md","lib/motion.js","references/motion-library.md","references/rhythm.md","references/sound.md","scripts/render.py","scripts/verify_promo.py","templates/comp.html"],"stats":{"stars":3316,"installs":355,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-21","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":0,"text":"one take"},"legal":"scanned: manual review 2026-10-26 — local scripts only. PolyForm Noncommercial 1.0.0: free for noncommercial use; commercial use needs the author's permission.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0a731928c282/onetake.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRrYAAABXRUJQVlA4IKoAAABQBQCdASogABIAPtFcpk6oJSOiKAqpABoJYwCdMxAv/gHofZ6e25LB/Ev+rAU9kGJIygAA/uvOoB7kcfXd+1hBIasrvPlDQX2cT3ldFAUFQJOK6bTB/ixHNThYjSsrvlQhKPTaGi7rwB1rFTZVQMCR2iVyqEnU6qg+ucWH9IMXhbnyfkVM/Iim0GcFZroybdm3XcZL/RufqxKgpVcmRACGpYavACczgyAAAA==","source":"https://raw.githubusercontent.com/feitangyuan/onetake/main/cases/onetake-launch-30s/onetake-launch.mp4","page":"https://github.com/feitangyuan/onetake/tree/main/cases/onetake-launch-30s","credit":"feitangyuan (onetake, @paojiaofty)","rights":"publisher-repo","note":"onetake's own 30 s launch film from the repo's cases: the 'Hush earbuds' concept ad grows out of its prompt, then the camera flows on into a festival poster without a cut. Cut 13.6-21.6 s.","bytes":331936,"addedAt":"2026-10-27"}},{"id":"op7418/guizang-product-video-skill","slug":"guizang-product-video","name":"Guizang Product Video","skillName":"guizang-product-video-skill","type":"skill","status":"live","stream":"community","category":"launch","tags":["product-video","release-notes","changelog","gsap","three.js","sound-design","brand-motion"],"summary":"Software promos and release-notes videos built from your real product components, with original music and SFX.","description":"From Guizang (歸藏, op7418), a widely followed Chinese AI designer: code-driven promo and version-update films for software (product promos, release-notes and changelog videos). It audits the repo for real features and design language, mounts real product components in the browser at video scale, writes a DIRECTION.md with three candidate directions and a second-by-second shot list, animates with GSAP and Three.js, and finishes with music (yours, a local model or code-synthesized) and motion sound effects mixed and checked by bundled scripts. Each film's visual approach must be derived from the product, not a template; HyperFrames is optional. In the Agent Skills Hub end-to-end test it made a 15-second promo with a look of its own in 8.6 minutes.","useWhen":["Make a release-notes or changelog video for an app","Turn a product's real UI into a promo film"],"notFor":["Live-action or AI-generated footage"],"publisher":{"name":"Guizang","handle":"op7418","kind":"community","url":"https://github.com/op7418","avatar":"https://github.com/op7418.png","verified":false},"source":{"url":"https://github.com/op7418/guizang-product-video-skill","repo":"op7418/guizang-product-video-skill","license":"AGPL-3.0"},"install":{"claude-code":"npx skills add https://github.com/op7418/guizang-product-video-skill --skill guizang-product-video-skill","codex":"npx skills add https://github.com/op7418/guizang-product-video-skill --skill guizang-product-video-skill"},"agents":["claude-code","codex"],"requires":["Python 3 and Node.js","A browser engine (HyperFrames optional)"],"cost":{"note":"Free — local render"},"runtime":"~8.6 min for a 15 s promo (Agent Skills Hub test)","files":["SKILL.md","references/direction.md","references/story-and-copy.md","references/visual-vocabulary.md","references/audio-sourcing.md","scripts/init_project.py","scripts/mix_audio.py","scripts/check_delivery.py"],"stats":{"stars":871,"installs":416,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-09","addedAt":"2026-10-26","preview":{"kind":"cards","hue":180,"text":"v2.0 is here"},"legal":"scanned: manual review 2026-10-26 — AGPL-3.0; the default fallback style assets are BUSL-1.1 (see README). Offering it as a hosted service triggers AGPL obligations.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ecf3504bb9c3/guizang-product-video.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRlYAAABXRUJQVlA4IEoAAABwAwCdASogABIAPtFgqk+oJaOiKAgBABoJaQDOdBEYlpamwwAA/vILgldCGTVmDmm5BpWDwBLAS09208vteY13VGVusB6UqgAAAA==","source":"https://video.twimg.com/amplify_video/2103488009001984001/vid/avc1/1920x1080/SSC7lQMsxJ9CsN3B.mp4","page":"https://x.com/op7418/status/2103488476591399234","credit":"歸藏 Guizang (@op7418)","rights":"creator-post","note":"Promo the creator made with Opus 5.5 + guizang-product-video-skill for his video podcast Next Token, built from its website: kinetic headline, animated bar chart and brand reveal. First 8 s of 60 s.","bytes":52742,"addedAt":"2026-10-27"}},{"id":"lemomo-ai/lemo-opuscar","slug":"lemo-opuscar","name":"Lemo-Opuscar Film Styles","skillName":"lemo-opuscar","type":"skill","status":"live","stream":"community","category":"art-direction","tags":["film-styles","explainers","code-made-film","documentary","plugin"],"summary":"59 film styles made entirely in code (oil paint, watercolor, ukiyo-e, satellite briefing, exploded teardown).","description":"A toolbox of film styles for Claude Code by Lemomo: each style is a style prompt plus a demo film rendered entirely in code by Claude Opus 5.5, with no video model. The skill directs and produces a short film in a named style (Impasto Oil Painting, Watercolor Brush, Ukiyo-e, Satellite Briefing, Exploded Teardown and dozens more), helps choose a style when you only have a topic, and lets you remix a style or build your own from a blank page. Explainer styles can be built from real material such as satellite imagery, laser scans, CAD files or archive scans, and documentary styles cut new films from archive footage and documents. It reached 8K GitHub stars within a month of launch.","useWhen":["Make a short film, explainer or promo in a named visual style","Pick a style for your own topic","Cut real archive footage or scans into a documentary-style film"],"notFor":["Plain editing, trimming or converting your existing video files (the skill excludes them)"],"publisher":{"name":"Lemomo","handle":"lemomo-ai","kind":"community","url":"https://github.com/lemomo-ai","avatar":"https://github.com/lemomo-ai.png","verified":false},"source":{"url":"https://github.com/lemomo-ai/lemo-opuscar","repo":"lemomo-ai/lemo-opuscar","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add lemomo-ai/lemo-opuscar && claude plugin install lemo-opuscar@lemolab"},"agents":["claude-code"],"requires":["Node.js 20+ and npm","Python 3.11+ (or uv)","Headless Chromium (installed by setup.sh)","ffmpeg","Git"],"cost":{"note":"Free — local render"},"files":["plugin/skills/lemo-opuscar/SKILL.md","plugin/skills/lemo-opuscar/scripts/setup.sh","styles/<style>/STYLE.md","core/render/","AGENTS.md"],"stats":{"stars":8062,"installs":442,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-24","addedAt":"2026-10-26","preview":{"kind":"film","hue":30,"text":"Ukiyo-e"},"legal":"scanned: manual review 2026-10-26 — setup.sh sparse-clones the style library to ~/lemo-opuscar and resets it to the latest main on each run (self-updating from its own repo), then installs npm and Python packages; set LEMO_OPUSCAR_HOME to a tagged clone to freeze it. Archive material keeps its own license.","featured":true,"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/be627819a3ff/lemo-opuscar.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRpIAAABXRUJQVlA4IIYAAADwBACdASogABIAPtFYpEuoJSOhsAgBABoJZwAAPhrhtJbafQH+/kl0e5CHqNTutcgA/j9XQ74XhijFISLHCfCaSTxlFVRhEGDzHkuUCtdavwtNhxdgKrrKle+rjbhHrzeku47ihDM9hMxZessyLAyHwDkH5VMF3TV1s58JmDuFz1JFAgAAAA==","source":"https://github.com/lemomo-ai/lemo-opuscar/releases/download/web/impasto.mp4","page":"https://github.com/lemomo-ai/lemo-opuscar#readme","credit":"Lemomo (lemo-opuscar)","rights":"publisher-repo","note":"From the Impasto style's demo film 'The Colour of Rain' (web release of the repo), made entirely in code: a cellist's music paints color into a grey rainy street, then a top view of umbrellas. Cut 19.5-27.5 s of 39.7 s.","bytes":702856,"addedAt":"2026-10-27"}},{"id":"gnipbao/story-to-handdrawn-video","slug":"story-to-handdrawn-video","name":"Story to Hand-drawn Video","skillName":"story-to-handdrawn-video","type":"skill","status":"live","stream":"community","category":"animation","tags":["hand-drawn","comic","remotion","style-library","storytelling","art-direction"],"summary":"Chinese stories or ordered images into silent hand-drawn diary-comic animations, with a curated 30-style menu.","description":"Converts Chinese story text, or a sequence of your own images, into a silent hand-drawn Remotion animation (picture track only) with generated hand lettering. It ships 327 built-in assets (297 style recipes and 30 theme palettes) behind a curated 30-style menu, keeps a colored-pencil diary look as the default, and can analyse a reference image's visual grammar and save that style privately for reuse.","useWhen":["Turn a short Chinese story into a hand-drawn animated clip","Restyle a set of images as a diary comic","Match the look of a reference illustration"],"notFor":["Narrated videos with voice-over or music (the output is silent)"],"publisher":{"name":"gnipbao","handle":"gnipbao","kind":"community","url":"https://github.com/gnipbao","avatar":"https://github.com/gnipbao.png","verified":false},"source":{"url":"https://github.com/gnipbao/story-to-handdrawn-video/tree/main/skill-package/story-to-handdrawn-video","repo":"gnipbao/story-to-handdrawn-video","path":"skill-package/story-to-handdrawn-video","license":"MIT"},"install":{"claude-code":"git clone https://github.com/gnipbao/story-to-handdrawn-video.git && cp -R story-to-handdrawn-video/skill-package/story-to-handdrawn-video ~/.claude/skills/","codex":"git clone https://github.com/gnipbao/story-to-handdrawn-video.git && cp -R story-to-handdrawn-video/skill-package/story-to-handdrawn-video ~/.codex/skills/"},"agents":["claude-code","codex"],"requires":["Python 3","Node.js with Remotion for rendering","OpenAI API key (OPENAI_API_KEY)"],"cost":{"note":"Uses your own OpenAI API key"},"files":["SKILL.md","references/asset-workflow.md","references/reference-style-workflow.md","scripts/run_story_video.py"],"stats":{"stars":2303,"installs":111,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-22","addedAt":"2026-10-26","preview":{"kind":"grid","hue":45,"text":"colored-pencil diary"},"legal":"scanned: manual review 2026-10-26 — local scripts; the only network calls go to OpenAI with your key.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f5afb7085c6b/story-to-handdrawn-video.mp4","w":540,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRg4BAABXRUJQVlA4IAIBAACQBgCdASogACoAPtFcpk4oJKMiKqgBABoJYwDIBTugvkGfwKNQcc8b0YXRyHOyGXNW6HrqORR9MDSvPL4AAP79+Y4UwceNBgRFx7s61eMe3Bf2kgAiiLkr+fAiAhEq+RbCndWG8C01I8qu1eiMQylAFWO+Z++tCVsEoqwPMeVoBtDU++MUrcPWllBomz+36LBW58/Gr+KcIojhV3Ko8aJkyChBuPEjhrzBLkWfKqVNLiV6sFKFnMOAi7vcsYNljXyFXsqvMEWwE8WgknpZEFn2jVs+XofrFH+qkkhynNTKtb0aXPup2lyqR2GEoY+ZfmtbbdOKELx6OC8paqKX2ACRgAA=","source":"https://raw.githubusercontent.com/gnipbao/story-to-handdrawn-video/main/examples/style-showcase/handdrawn-styles-75-page-flip-45s-bgm.mp4","page":"https://github.com/gnipbao/story-to-handdrawn-video/tree/main/examples/style-showcase","credit":"gnipbao (story-to-handdrawn-video)","rights":"publisher-repo","note":"The repo's 45 s page-flip showcase: the same grandmother-and-child bridge scene redrawn in one hand-drawn style after another, each page curling away from the bottom-right corner. Cut 4-12 s.","bytes":412445,"addedAt":"2026-10-27"}},{"id":"pyang5166/gbro-collage-broll","slug":"gbro-collage-broll","name":"Halftone Collage B-roll","skillName":"gbro-collage-broll","type":"skill","status":"beta","stream":"community","category":"art-direction","tags":["collage","b-roll","halftone","talking-head","gemini"],"summary":"Editorial halftone paper-collage B-roll from one line of script, with three approval gates before any video spend.","description":"Turns about five seconds of voice-over, an opinion line or an abstract idea into premium editorial halftone paper-collage B-roll. It enforces three approval gates: first only the visual metaphor, then a colored collage still made with Codex's built-in image tool, and only after the still is approved does it animate first and last frames with Gemini Omni Flash (gemini-omni-flash-preview by default, not Veo) and deliver a silent clip with a contact sheet for QA. Single-commit repo from July 2026 with 1.5K stars, so it stays in beta.","useWhen":["Make collage-style B-roll to cut into a talking-head video","Visualize one sentence or concept as a paper-collage metaphor"],"notFor":["Clips with sound (they are delivered silent)","Agents without a built-in image tool (gate 2 relies on Codex image_gen)"],"publisher":{"name":"pyang5166","handle":"pyang5166","kind":"community","url":"https://github.com/pyang5166","avatar":"https://github.com/pyang5166.png","verified":false},"source":{"url":"https://github.com/pyang5166/gbro-collage-broll","repo":"pyang5166/gbro-collage-broll","license":"MIT"},"install":{"codex":"git clone https://github.com/pyang5166/gbro-collage-broll.git ~/.agents/skills/gbro-collage-broll"},"agents":["codex"],"models":["omni_flash"],"requires":["Codex (gate 2 uses its built-in image_gen)","Python 3.10+ with google-genai","Gemini API key (GEMINI_API_KEY)","ffmpeg and ffprobe"],"cost":{"note":"Uses your own Gemini API key; stills come from Codex's image tool"},"files":["SKILL.md","scripts/generate_video.py","scripts/check_setup.sh","scripts/upload_file.py","evals/evals.json","agents/openai.yaml"],"stats":{"stars":1528,"installs":185,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-07-15","addedAt":"2026-10-26","preview":{"kind":"collage","hue":330,"text":"halftone B-roll"},"legal":"scanned: manual review 2026-10-26 — calls only Google's Gemini API with your key. Collage source imagery must be licensed for your use.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/6788c34c9695/gbro-collage-broll.mp4","w":404,"h":720,"duration":5,"blur":"data:image/webp;base64,UklGRtQAAABXRUJQVlA4IMgAAABwBQCdASogADoAPtFep0woJaOiLBqrMQAaCUAYfQl5PAxsKCxgXVYUmITobpIyWcwGDtIAAP7wOEOBJWrSeb2v9fNHN7ZHMd9pD4ETCcdT2UDLAUjU3RVgxaO95TXGRLXFBWzaMtnXoz9fa751Z8O4sQUHfsxwGXTUBd2Oz8WsLVF1+cfa1JfwZyaf7MGHVncJ19z1ZEJfbLJRoCYXMldgZcHZ0ehEW8A76kRwQluQm35Tv9JtQUJX9QOPR+YmmYAAcf66ESoAAA==","source":"https://raw.githubusercontent.com/pyang5166/gbro-collage-broll/main/assets/demo-purple.gif","page":"https://github.com/pyang5166/gbro-collage-broll#readme","credit":"pyang5166 (gbro-collage-broll)","rights":"publisher-repo","note":"README demo (deep purple): halftone paper-collage B-roll that assembles from an empty field, a crew feeding photos into a press that prints a sci-fi film strip. Full 5 s 9:16 clip from a small GIF.","bytes":131265,"addedAt":"2026-10-27"}},{"id":"camilleroux/genart","slug":"genart-skill","name":"Generative Art (Camille Roux)","skillName":"genart","type":"skill","status":"live","stream":"community","category":"art-direction","tags":["generative","creative-coding","onchain","plotter","determinism"],"summary":"Long-form generative art craft from Camille Roux: hash-seeded determinism, traits and rarity, verification, export.","description":"Written by generative artist Camille Roux, this skill covers long-form generative art for onchain platforms (Art Blocks, 256ART, Verse, Highlight, Plottables, bootloader.art or a self-hosted drop) and screen channels such as Artpoint: hash-seeded determinism, resolution-agnostic rendering, features and rarity design, preview-capture signals, debug GUIs, image and video export shortcuts, pre-mint verification, plotter and SVG output, and a section on the ethics of the field. It tells the agent to read each platform's current docs every time rather than trust memory.","useWhen":["Build or review a seeded generative sketch","Design traits and rarity for a long-form collection","Export a generative piece as video or for a plotter"],"notFor":["Image-model generation (this is code-based art)"],"publisher":{"name":"Camille Roux","handle":"camilleroux","kind":"community","url":"https://github.com/camilleroux","avatar":"https://github.com/camilleroux.png","verified":false},"source":{"url":"https://github.com/camilleroux/genart-skill/tree/main/skills/genart","repo":"camilleroux/genart-skill","path":"skills/genart","license":"MIT"},"install":{"claude-code":"/plugin marketplace add camilleroux/genart-skill\n/plugin install genart@camilleroux-genart"},"agents":["claude-code"],"requires":["Node.js","Playwright in your project for captures and checks"],"cost":{"note":"Free — runs locally"},"files":["SKILL.md","references/determinism.md","references/features.md","references/resolution.md","references/verification.md","references/ethics.md","references/tooling.md"],"stats":{"stars":156,"installs":9,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-12","addedAt":"2026-10-26","preview":{"kind":"generative","hue":170,"text":"hash-seeded"},"legal":"scanned: manual review 2026-10-26 — instructions and references only.","adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/f5909a52fbfc/genart-skill.webp","w":960,"h":385,"blur":"data:image/webp;base64,UklGRpYAAABXRUJQVlA4IIoAAAAQBACdASogAAwAPtFYpEwoJSOiMAgBABoJZQC+SCF5wF/dI4S5J6sUAAD+6nxAS9WCbJhe98/4h+c11qXrXm3FsSEsHeL54NzwYHmhgMpyC/ddS7n7/5hv9B7/V1ZQN8tTpvFV8QIXk+wXA/hNDtPMuV7AXrKZS94Emr4sKZQidTSDnVhQZd+6gAA=","source":"https://raw.githubusercontent.com/camilleroux/genart-skill/main/docs/contact-sheet-impossible-machine.jpg","page":"https://github.com/camilleroux/genart-skill#readme","credit":"Camille Roux","rights":"publisher-repo","note":"README contact sheet: six seeds of Camille Roux's 'Impossible Machine' (hand-drawn technical blueprints), each labelled with its token hash, the edition-level view the skill's scripts produce.","bytes":41108,"addedAt":"2026-10-27"}},{"id":"freestylefly/gpt-image-2-style-library","slug":"gpt-image-2-style-library","name":"GPT Image 2 Style Library","skillName":"gpt-image-2-style-library","type":"skill","status":"live","stream":"community","category":"style-refs","tags":["prompting","gpt-image","style-library","templates","image"],"summary":"Pick styles and industrial prompt templates for GPT Image 2/2.5 from a 530+ case library (a 35K-star repo).","description":"The agent-facing skill of awesome-gpt-image-2, one of the most-starred image prompt libraries on GitHub (35K stars): 530+ cases with full prompts and generation records, 20+ industrial templates, and a section comparing GPT Image 2.5 outputs for the same prompt. The skill chooses visual styles and templates from the library by category, style tag and scene tag, rewrites or classifies prompts, and flags known pitfalls with example cases.","useWhen":["Write or improve a GPT Image 2/2.5 prompt from a proven template","Classify a prompt by style and scene"],"notFor":["Generating the image itself (pair it with your image tool)"],"publisher":{"name":"Canghe","handle":"freestylefly","kind":"community","url":"https://github.com/freestylefly","avatar":"https://github.com/freestylefly.png","verified":false},"source":{"url":"https://github.com/freestylefly/awesome-gpt-image-2/tree/main/agents/skills/gpt-image-2-style-library","repo":"freestylefly/awesome-gpt-image-2","path":"agents/skills/gpt-image-2-style-library","license":"MIT"},"install":{"claude-code":"npx skills add freestylefly/awesome-gpt-image-2 --skill gpt-image-2-style-library --agent claude-code codex --global --yes --copy","codex":"npx skills add freestylefly/awesome-gpt-image-2 --skill gpt-image-2-style-library --agent claude-code codex --global --yes --copy"},"agents":["claude-code","codex"],"models":["gpt_image_2","gpt_image_2_5"],"cost":{"note":"Free prompt library; generation billed by your image provider"},"files":["SKILL.md","references/style-library.md","agents/openai.yaml","assets/city-life-system-map.png"],"stats":{"stars":35064,"installs":4036,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-14","addedAt":"2026-10-26","preview":{"kind":"grid","hue":240,"text":"style: Swiss poster"},"legal":"scanned: manual review 2026-10-26 — the skill folder is Markdown plus one image; the repo's website code (api/, payments) is not part of the skill.","adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/795b740c4f2f/gpt-image-2-style-library.webp","w":960,"h":492,"blur":"data:image/webp;base64,UklGRpwAAABXRUJQVlA4IJAAAAAwBACdASogABAAPtFWpEwoJKOiMAgBABoJZwC/OGmfxdBhZY36cTLgTKAA/ryf+TfWWLLYLKn/1j/UB3fuyc8UJShqwselqj9uyWwZb6UyrI32L43oz4SEinn12FBuDDN9cJoZ+Y6DUPa900HPJ+VMm/RQQSkJY5rb53XNqQRgm5pTs7kOgI4Xn6M2MclAAAA=","source":"https://raw.githubusercontent.com/freestylefly/awesome-gpt-image-2/main/agents/skills/gpt-image-2-style-library/assets/city-life-system-map.png","page":"https://github.com/freestylefly/awesome-gpt-image-2/tree/main/agents/skills/gpt-image-2-style-library","credit":"苍何 Canghe (freestylefly / awesome-gpt-image-2)","rights":"publisher-repo","note":"The skill's documented example output: a 'city life system map' infographic generated from the request 用 gpt-image-2-style-library 技能生成城市生命系统图谱.","bytes":91410,"addedAt":"2026-10-27"}},{"id":"JimLiu/baoyu-cover-image","slug":"baoyu-cover-image","name":"Baoyu Cover Image","skillName":"baoyu-cover-image","type":"skill","status":"live","stream":"community","category":"image","tags":["covers","thumbnails","article","image-generation"],"summary":"Article cover images built from five dimensions (type, palette, rendering, text, mood) in 2.35:1, 16:9 or 1:1.","description":"The most-installed media skill from Jim Liu (宝玉), a well-known Chinese AI writer whose baoyu-skills repo has 27K stars. It analyses an article, then builds a cover from five dimensions (type, palette, rendering, text, mood) that combine 11 color palettes and 7 rendering styles, in cinematic 2.35:1, 16:9 or 1:1. It writes every final prompt to a file before generating, prefers the runtime's native image tool (Codex imagegen, Cursor GenerateImage) or the pack's baoyu-image-gen backend, and refuses to fake raster output with SVG or to patch rendered text with overlays.","useWhen":["Make a cover or header image for an article or post","Iterate on a cover's palette, rendering or mood"],"notFor":["Diagrams, infographics or slide decks (the pack has separate skills)"],"publisher":{"name":"Jim Liu","handle":"JimLiu","kind":"community","url":"https://github.com/JimLiu","avatar":"https://github.com/JimLiu.png","verified":false},"source":{"url":"https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-cover-image","repo":"JimLiu/baoyu-skills","path":"skills/baoyu-cover-image","license":"MIT"},"install":{"claude-code":"npx skills add jimliu/baoyu-skills","codex":"npx skills add jimliu/baoyu-skills"},"agents":["claude-code","codex","cursor"],"requires":["An image backend: your agent's native image tool or baoyu-image-gen with an image API key"],"cost":{"note":"Uses your agent's image tool or your own image API key"},"files":["SKILL.md","references/style-presets.md","references/types.md","references/base-prompt.md","references/codex-imagegen.md","references/visual-elements.md"],"stats":{"stars":26982,"installs":32111,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"version":"1.117.5","updatedAt":"2026-09-10","addedAt":"2026-10-26","preview":{"kind":"grid","hue":5,"text":"cover 2.35:1"},"legal":"scanned: manual review 2026-10-26 — pick only this skill when installing; the same repo also ships skills marked \"danger\" that use reverse-engineered Gemini Web and X APIs.","adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/f1a670c149c5/baoyu-cover-image.webp","w":960,"h":407,"blur":"data:image/webp;base64,UklGRuAAAABXRUJQVlA4INQAAADQBACdASogAA4APtFUo0uoJKMhsAgBABoJQBOmUAXq9nQTk5wSwUdKmELcYHfWAAD+tp1TE4xjAQWRa2bqmWJEmbYsGTjsjlTHPzAkEnblk6Z6D9lRjgxyayykT1gRCBPD2X/udup6IlsWpYQr1uCSUGkLLCekWM7bKwZA9uNudfbcA9fa4WT23685i8/cCRIF5zuEY1KucTH/kZvTrmaqDOvY7BLdo6/bPJoyY8gtZB3lE/Zh0/UwOANY75l+TvWz127GUY26EbqieJ+Ku2Z4pAAAAA==","source":"https://raw.githubusercontent.com/JimLiu/baoyu-skills/main/screenshots/cover-image-styles/retro.webp","page":"https://github.com/JimLiu/baoyu-skills/tree/main/screenshots/cover-image-styles","credit":"Jim Liu 宝玉 (baoyu-skills)","rights":"publisher-repo","note":"Sample from the repo's cover-image-styles set: a 2.35:1 article cover in the retro style ('Golden Age: A Retrospective Journey').","bytes":92946,"addedAt":"2026-10-27"}},{"id":"wheresryan22/anatomy","slug":"anatomy-isometric","name":"Anatomy Isometric Figures","skillName":"anatomy","type":"skill","status":"live","stream":"community","category":"image","tags":["explainers","isometric","svg","illustration","webgl","diagrams"],"summary":"Detailed interactive isometric SVG figures that explain a technical idea as a physical object, with optional WebGL.","description":"One of the fastest-growing skills of October 2026 (21K stars and 22K installs within three weeks of its 8 October launch). It builds crafted isometric SVG figures that explain a technical idea as a real physical object (a test rig, a dial gauge, a cabinet of drawers, a plotter, a lock) with many small solid parts, four-tone shading, correct painter's order, a framed card with title, hint and live readout, and calm eased motion. It works framework-free or in React/Next.js, can add WebGL effects (fire, water, caustics, lamp light) inside the drawing's perspective, turns figures in 3D (beta), prints A4 sheets, and ships an audit kit that checks projection, clipping and draw order in Chrome.","useWhen":["Make an explanatory figure for docs, a blog post or a landing page","Show how a system or algorithm works as a physical object","Make a premium, Linear-style technical drawing"],"notFor":["Photoreal images","Video files (figures are interactive SVG and HTML)"],"publisher":{"name":"Ryan","handle":"wheresryan22","kind":"community","url":"https://github.com/wheresryan22","avatar":"https://github.com/wheresryan22.png","verified":false},"source":{"url":"https://github.com/wheresryan22/anatomy","repo":"wheresryan22/anatomy","license":"MIT"},"install":{"claude-code":"npx skills add wheresryan22/anatomy -g -a claude-code","codex":"npx skills add wheresryan22/anatomy -g -a codex"},"agents":["claude-code","codex"],"requires":["Node.js 20.10+","Chrome or Chromium (audit checks)"],"cost":{"note":"Free — local"},"files":["SKILL.md","kit/iso-kit.mjs","kit/gl.mjs","kit/audit.mjs","references/craft.md","references/webgl.md","references/3d.md","references/print.md"],"stats":{"stars":21063,"installs":21986,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-18","addedAt":"2026-10-26","preview":{"kind":"voxel","hue":210,"text":"isometric rig"},"legal":"scanned: manual review 2026-10-26 — local Node kit; it publishes to the Anatomy community gallery only when you ask.","featured":true,"adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/1fb6f4c25856/anatomy-isometric.webp","w":919,"h":960,"blur":"data:image/webp;base64,UklGRpIAAABXRUJQVlA4IIYAAABwBQCdASogACIAPsVWoUunpSMhtVv4APAYiWUA0JBRfUBqxtV/9U/cov6wOzRa2WBGtJDgAP74saK26QwcRmmfmNjjS+wcbxcOp6gPIgaC92WBswaXwizClZDpzj36WZ1hOc1FTs+OvenB6io7c0n5VdE+2Rl5+sYcfU47GLU/0Y5bvAAAAA==","source":"https://raw.githubusercontent.com/wheresryan22/anatomy/main/.github/assets/raptor-engine-firing.webp","page":"https://github.com/wheresryan22/anatomy#readme","credit":"Ryan (wheresryan22/anatomy)","rights":"publisher-repo","note":"README hero, examples/raptor-engine: an isometric SVG figure of a Raptor 2 engine in its test stand, firing, with the exhaust plume drawn by a WebGL shader in the same camera. Still frame of the interactive figure.","bytes":30338,"addedAt":"2026-10-27"}},{"id":"vincentsch/explainroo","slug":"explainroo","name":"Explainroo","skillName":"explainroo","type":"skill","status":"live","stream":"community","category":"explainers","tags":["voiceover","local","animated-diagrams","shorts","kokoro"],"summary":"Narrated explainer MP4s with a local voice (Kokoro), word timing (Whisper) and a canvas renderer; no API key needed.","description":"Makes an explainer, how-to, walkthrough, launch or tutorial video (or a vertical short) from two files: the script the voice reads and a small JavaScript scene file that draws the pictures. A voice model runs on your machine, word timings come from Whisper, Chrome renders the frames, explainroo adds music and sound effects, and `explainroo verify` checks the result. In the Agent Skills Hub end-to-end test (2026-10-11) it was the fastest of 16 skills, 2.0 minutes for a 15-second promo, with a look of its own.","useWhen":["Make a narrated explainer or tutorial video without API keys","Animate a diagram with a voice-over","Make a quick YouTube, Reels or TikTok explainer"],"notFor":["Talking-head or AI-generated footage"],"publisher":{"name":"Vincent Schmalbach","handle":"vincentsch","kind":"community","url":"https://github.com/vincentsch","avatar":"https://github.com/vincentsch.png","verified":false},"source":{"url":"https://github.com/vincentsch/explainroo/tree/main/skills/explainroo","repo":"vincentsch/explainroo","license":"MIT"},"install":{"claude-code":"git clone https://github.com/vincentsch/explainroo.git && cd explainroo && npm install"},"agents":["claude-code","codex"],"models":["kokoro","whisper"],"requires":["Node.js 20.11+","ffmpeg","Chrome or Chromium","espeak-ng for some narration languages"],"cost":{"note":"Free — local voice and render; ElevenLabs optional with your key"},"runtime":"~2 min for a 15 s promo (Agent Skills Hub test)","files":["skills/explainroo/SKILL.md","AGENTS.md","bin/explainroo.js","src/render.js"],"stats":{"stars":654,"installs":46,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-20","addedAt":"2026-10-26","preview":{"kind":"wave","hue":120,"text":"here's how it works"},"legal":"scanned: manual review 2026-10-26 — no npm install hooks; `explainroo doctor --fetch` downloads the local voice model.","adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/b0a4864ee2f0/explainroo.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRnwAAABXRUJQVlA4IHAAAABQBACdASogABIAPsFIn0unpCKht/qoAPAYCWUAzcAh3xcKPEhP19Ti91gAAP7r7MVuhSJ3osYgb170BHuu+bsNWxgKOp9OT8eMzySQ2B1YD/H4xkDQCvj4q5sDNdoNUmN9uNqFIH51d6hcRPC9xAAA","source":"https://raw.githubusercontent.com/vincentsch/explainroo/main/docs/media/dns-poster.jpg","page":"https://github.com/vincentsch/explainroo/tree/main/docs/media","credit":"Vincent Schmalbach (explainroo)","rights":"publisher-repo","note":"Poster frame of the repo's DNS example explainer in the chalk look: hand-drawn browser → resolver → root/.com/name servers. Still image; the README's demo video attachment is not publicly downloadable and explainroo.com is blocked by this network's safe-browsing filter.","bytes":22440,"addedAt":"2026-10-27"}},{"id":"adithya-s-k/manim-skills","slug":"manim-skill","name":"Manim Skills (3Blue1Brown Style)","type":"skill","status":"live","stream":"community","category":"explainers","tags":["manim","math","3blue1brown","animation","education"],"summary":"Plan and code 3Blue1Brown-style math animations: a scene composer plus ManimCE and ManimGL best practices.","description":"Three skills for Manim. manim-composer turns a vague concept into a researched scene-by-scene plan (scenes.md with narrative arc, visual elements, narration notes, transitions, palette and implementation order) before any code is written, and two best-practice skills cover the Manim Community Edition and 3b1b's ManimGL APIs (Scene, MathTex, InteractiveScene, camera frames). It is the most-installed Manim skill on skills.sh (8.7K installs across the three).","useWhen":["Plan an educational or math explainer in 3b1b style","Write or debug ManimCE or ManimGL code"],"notFor":["Live-action or AI-generated footage"],"publisher":{"name":"Adithya S K","handle":"adithya-s-k","kind":"community","url":"https://github.com/adithya-s-k","avatar":"https://github.com/adithya-s-k.png","verified":false},"source":{"url":"https://github.com/adithya-s-k/manim_skill","repo":"adithya-s-k/manim_skill","license":"MIT"},"install":{"claude-code":"npx skills add adithya-s-k/manim_skill"},"agents":["claude-code","codex","cursor"],"requires":["Python with manim or manimgl","ffmpeg","LaTeX for MathTex"],"cost":{"note":"Free — local render"},"files":["skills/manim-composer/SKILL.md","skills/manim-composer/references/narrative-patterns.md","skills/manim-composer/templates/scenes-template.md","skills/manimce-best-practices/SKILL.md","skills/manimgl-best-practices/SKILL.md"],"stats":{"stars":1220,"installs":8678,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-01-23","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":225,"text":"e^{iπ} + 1 = 0"},"legal":"scanned: manual review 2026-10-26 — instructions plus example scripts; no install hooks.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/50441be821bb/manim-skill.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRmYAAABXRUJQVlA4IFoAAABQBACdASogABIAPtFUokuoJKMhsAgBABoJaQAAXBuBL9fb3t3pd6KCSK8AAP72h895WrYyQaRv0LftInM49ttiSdLXAxcub37wg+EZn1KxYlLQ84zsDUmoAAA=","source":"https://github.com/user-attachments/assets/3cd398b7-7cc6-43c1-a6e9-20077be6b009","page":"https://github.com/adithya-s-k/manim_skill#readme","credit":"Adithya S K (manim_skill)","rights":"publisher-repo","note":"README demo: Claude Code with the skill renders a 3Blue1Brown-style 'Multi-Head Attention' animation (3D attention heads, 'Each head learns to attend to different patterns'), played in the editor's video tab. Cut 40-48 s of 52.6 s.","bytes":76811,"addedAt":"2026-10-27"}},{"id":"smixs/video","slug":"visual-skills-video-director","name":"AI Film Director (Visual Skills)","skillName":"video","type":"skill","status":"live","stream":"community","category":"prompting","tags":["cinematic","storyboard","seedance","kling","veo","dramaturgy"],"summary":"AI film director for video prompts: dramaturgy first (Murch, blocking, montage), then exact syntax per model.","description":"Serge Shima's video skill makes the agent write prompts like a director. It reads a dramaturgy file (Walter Murch's editing priorities, blocking, dynamic montage) and universal rules first, then exactly one model file (Seedance 2.5, Kling 3.0 Turbo/Omni, Veo 3.1 and others), then only the task references that apply (animatic keyframes, camera and lighting vocabulary, race and speed, genre patterns, fixes and skeletons). It covers storyboards, shot lists, director treatments, multi-clip story structure, character continuity, dialogue and sound design, and ends with a dramaturgy check and a three-detail check. A sibling image skill handles Nano Banana and GPT Image 2.5 prompts.","useWhen":["Write, improve, audit or split prompts for Seedance, Kling, Veo, Runway, Luma, Pika or Sora","Turn a script into a storyboard and shot-by-shot prompts","Fix a video prompt that keeps failing"],"notFor":["Still images (use the sibling image skill)","Editing or grading footage that already exists"],"publisher":{"name":"Serge Shima","handle":"smixs","kind":"community","url":"https://github.com/smixs","avatar":"https://github.com/smixs.png","verified":false},"source":{"url":"https://github.com/smixs/visual-skills/tree/main/video","repo":"smixs/visual-skills","path":"video","license":"CC-BY-4.0"},"install":{"claude-code":"npx skills add smixs/visual-skills@video","codex":"npx skills add smixs/visual-skills -g -a codex"},"agents":["claude-code","codex","cursor"],"models":["seedance_2_5","kling_v3","veo_3_1"],"cost":{"note":"Free — prompts only; generation billed by your video platform"},"files":["SKILL.md","references/dramaturgy.md","references/universal-rules.md","references/seedance-25.md","references/kling.md","references/veo.md","references/camera-lighting-vocabulary.md","references/animatic-keyframes.md"],"stats":{"stars":582,"installs":971,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-16","addedAt":"2026-10-26","preview":{"kind":"film","hue":300,"text":"slow push-in, hold on the hands"},"legal":"scanned: manual review 2026-10-26 — Markdown only. CC BY 4.0: credit Serge Shima when you reuse the text.","adds":"tool","media":{"type":"none","reason":"Prompt-writing skill; the repo's only raster image is a titled promo banner (assets/hero.webp, 'VISUAL SKILLS'), and the creator has published no film or clip made with it","searched":["github.com/smixs/visual-skills README and full tree (hero banner, SVG banners, model logos)","video/ folder (SKILL.md + references)","sergeshima.com","YouTube @SergeShima video list","X search 'visual-skills' / creator @lllblMA (only a third-party user's clip)"],"addedAt":"2026-10-27"}},{"id":"OSideMedia/higgsfield","slug":"higgsfield-prompt-skill-oside","name":"Higgsfield Prompt Skill (O-Side Media)","skillName":"higgsfield","type":"skill","status":"live","stream":"community","category":"prompting","tags":["higgsfield","seedance","cinema-studio","soul-id","camera","cinematic"],"summary":"Independent 36-skill prompt pack for Higgsfield: model picks, camera presets, Soul ID, Cinema Studio, Seedance 2.5.","description":"An independent prompt pack for Higgsfield users, not made by Higgsfield. A root skill writes and refines video and image prompts with its MCSLA formula, picks the model, camera controls and motion presets for each shot, and routes to 35 sub-skills covering Seedance 2.5 and 2.0 (omni-reference, video edit and extend, VFX), Cinema Studio 2.5/3.0/3.5, Kling 3.0 Motion Control, Soul ID character consistency, an acting system, a shot-list director, a feature-film pipeline, 3D, audio, moodboards and troubleshooting. It keeps a generation ledger, lints claims and Seedance prompts with Python scripts, and ships updates almost weekly (v3.42.0 on 2026-10-23).","useWhen":["Write or fix prompts for any Higgsfield model","Pick camera controls and motion presets per shot","Keep a character consistent with Soul ID"],"notFor":["Generating without a Higgsfield account","Other platforms (prompts assume Higgsfield's model menu)"],"publisher":{"name":"O-Side Media","handle":"OSideMedia","kind":"community","url":"https://github.com/OSideMedia","avatar":"https://github.com/OSideMedia.png","verified":false},"source":{"url":"https://github.com/OSideMedia/higgsfield-ai-prompt-skill","repo":"OSideMedia/higgsfield-ai-prompt-skill","license":"MIT"},"install":{"claude-code":"git clone https://github.com/OSideMedia/higgsfield-ai-prompt-skill ~/.claude/skills/higgsfield"},"agents":["claude-code","claude-ai","cursor","codex"],"models":["seedance_2_5","seedance_2","kling_v3","veo_3_1","nano_banana_pro","soul"],"requires":["Higgsfield account (generation and credits)","Optional: Python 3 for the lint and preflight scripts"],"cost":{"note":"Prompts only; generation is billed in Higgsfield credits"},"files":["SKILL.md","skills/higgsfield-seedance-2-5/SKILL.md","skills/higgsfield-cinema/SKILL.md","skills/higgsfield-camera/SKILL.md","skills/higgsfield-soul/SKILL.md","skills/higgsfield-acting/SKILL.md","model-guide.md","scripts/seedance_lint.py"],"stats":{"stars":799,"source":"GitHub","asOf":"2026-10-26"},"version":"3.42.0","updatedAt":"2026-10-25","addedAt":"2026-10-26","preview":{"kind":"film","hue":15,"text":"dolly in, 35mm, golden hour"},"legal":"scanned: manual review 2026-10-26 — not affiliated with Higgsfield. One sub-skill documents Higgsfield's official CLI installer (curl | sh, with a Homebrew alternative); prefer `brew install higgsfield-ai/tap/higgsfield`.","adds":"tool","media":{"type":"none","reason":"Prompt-pack skill; the repo has no media and O-Side Media has published no clip generated with it (its X media are memes and DaVinci Resolve tips)","searched":["github.com/OSideMedia/higgsfield-ai-prompt-skill README and full tree (no media files)","X @OSideMedia media timeline","o-sidemedia.com home page (no video or skill demo)"],"addedAt":"2026-10-27"}},{"id":"dexhunter/seedance-prompt-en","slug":"seedance-2-prompt-guide","name":"Seedance 2.0 Prompt Guide","skillName":"seedance-prompt-en","type":"skill","status":"live","stream":"community","category":"prompting","tags":["seedance","video-prompts","camera","reference-system"],"summary":"Prompt guide for Seedance 2.0 multimodal video: the @ reference system, camera language and ready templates.","description":"Teaches the agent to write prompts for ByteDance's Seedance 2.0 (Jimeng/Dreamina) from text, image, video and audio inputs: input limits, the @ reference system and role assignment, a prompt formula with time-segmented prompts for clips over 10 seconds, a camera-language reference, and patterns for character consistency, camera-move replication, effect templates, video extension and editing, music beat-matching, dialogue, one-take shots, e-commerce and educational content. Ships in English and Chinese (seedance-prompt-zh) and is one of the most-starred Seedance skills (4.4K stars).","useWhen":["Write a Seedance 2.0 prompt from image, clip or audio references","Replicate a camera move or effect from a reference video","Extend or edit an existing Seedance clip"],"notFor":["Seedance 2.5-specific features (written for 2.0)"],"publisher":{"name":"Dex Hünter","handle":"dexhunter","kind":"community","url":"https://github.com/dexhunter","avatar":"https://github.com/dexhunter.png","verified":false},"source":{"url":"https://github.com/dexhunter/seedance2-skill","repo":"dexhunter/seedance2-skill","license":"MIT"},"install":{"claude-code":"npx skills add dexhunter/seedance2-skill"},"agents":["claude-code","codex","cursor"],"models":["seedance_2"],"cost":{"note":"Free — prompts only; generation billed by your Seedance provider"},"files":["SKILL.md","zh/SKILL.md"],"stats":{"stars":4363,"installs":3124,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-09-19","addedAt":"2026-10-26","preview":{"kind":"film","hue":190,"text":"@image1 as the first frame"},"legal":"scanned: manual review 2026-10-26 — Markdown only.","adds":"tool","media":{"type":"none","reason":"Prompt-guide skill (text output); the repo's only image is a titled thumbnail banner (assets/seedance2-thumbnail.png) and the creator has published no clip generated from its prompts","searched":["github.com/dexhunter/seedance2-skill README and full tree (thumbnail banner only)","seedance2.help (text prompt optimizer, no videos)","X search 'seedance2-skill' / 'dexhunter' (third-party reposts with screenshots only)"],"addedAt":"2026-10-27"}},{"id":"LearnPrompt/awesome-seedance","slug":"awesome-seedance-skills","name":"Awesome Seedance Skills","skillName":"seedance-production-workflow","type":"skill","status":"live","stream":"community","category":"prompting","tags":["seedance","templates","case-library","storyboard","qa"],"summary":"Evidence-led Seedance 2.5/2.0 skills: a production workflow plus genre templates distilled from 934 verified cases.","description":"From the awesome-seedance library (934 cases checked against their original posts, 495 cross-model retests, 27 templates, synced daily from goodcase.ai). The repo's own skills include a production workflow that carries a Seedance video from brief through references, storyboard, generation handoff, shot-level review and targeted repair (with a plan validator), a prompt-library skill, a storyboard-grid-to-video skill, and genre template skills (3D cartoon, vehicles, epic fantasy and sci-fi, fashion lookbook, food ASMR, horror, memes, pets, retro DV home video, sports, travel walks). Template skills write a clip as locked identities plus a timecoded cut list.","useWhen":["Plan and review a multi-shot Seedance video end to end","Write a genre-specific Seedance prompt from a proven structure"],"notFor":["Models other than Seedance (structures were tested on Seedance 2.5 and 2.0)"],"publisher":{"name":"LearnPrompt","handle":"LearnPrompt","kind":"community","url":"https://github.com/LearnPrompt","avatar":"https://github.com/LearnPrompt.png","verified":false},"source":{"url":"https://github.com/LearnPrompt/awesome-seedance/tree/main/agents/skills","repo":"LearnPrompt/awesome-seedance","license":"MIT"},"install":{"claude-code":"npx skills add LearnPrompt/awesome-seedance --skill seedance-production-workflow","codex":"npx skills add LearnPrompt/awesome-seedance --skill seedance-production-workflow"},"agents":["claude-code","codex"],"models":["seedance_2_5","seedance_2"],"cost":{"note":"Free — prompts and plans; generation billed by your Seedance provider"},"files":["agents/skills/seedance-production-workflow/SKILL.md","agents/skills/seedance-production-workflow/references/qa-rubric.md","agents/skills/seedance-production-workflow/references/provider-capabilities.md","agents/skills/seedance-production-workflow/scripts/validate_plan.py","agents/skills/seedance-prompt-library/SKILL.md","agents/skills/seedance-storyboard-grid-to-video/SKILL.md"],"stats":{"stars":2294,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"grid","hue":100,"text":"934 verified cases"},"legal":"scanned: manual review 2026-10-26 — code is MIT and curation CC BY 4.0; quoted prompts and media remain their creators' (takedown via GitHub issue).","adds":"tool","media":{"type":"none","reason":"The only public example is the publisher's retest of a library prompt rendered on MiniMax H3, not Seedance — it would misrepresent a Seedance prompt library","searched":["LearnPrompt/awesome-seedance-skills README","goodcase.ai examples"],"addedAt":"2026-10-27"}},{"id":"digitalsamba/claude-code-video-toolkit","slug":"claude-code-video-toolkit","name":"Claude Code Video Toolkit","type":"skill","status":"live","stream":"community","category":"editing","tags":["remotion","ffmpeg","voiceover","music","open-models","templates"],"summary":"Open-source video workspace for Claude Code: script, voice, music, visuals and Remotion render on your own GPU account.","description":"A video production workspace from Digital Samba: open it in Claude Code, run /setup and /video, and the agent writes the script, generates voice-over, music and visuals, and renders the MP4 from Remotion templates. Fourteen skills cover Remotion, FFmpeg, MoviePy, Playwright screen recording, synthetic UI demos, ElevenLabs, and open models you deploy to your own Modal or RunPod account (Qwen3-TTS voices, FLUX.2 and Qwen image editing, ACE-Step music, LTX-2 video), so most generation runs at cost. Showcased templates include release-notes videos with product UI rebuilt from source, product demos and vertical shorts. In the Agent Skills Hub end-to-end test it finished a 15-second promo with sound in 5.5 minutes.","useWhen":["Produce a product demo, release-notes video or explainer from a prompt","Generate voice, music and images with open models on your own GPU account","Record and edit a scripted browser demo"],"notFor":["Quick one-off edits of existing footage (an ffmpeg-focused skill is lighter)"],"publisher":{"name":"Digital Samba","handle":"digitalsamba","kind":"community","url":"https://github.com/digitalsamba","avatar":"https://github.com/digitalsamba.png","verified":false},"source":{"url":"https://github.com/digitalsamba/claude-code-video-toolkit","repo":"digitalsamba/claude-code-video-toolkit","license":"MIT"},"install":{"claude-code":"git clone https://github.com/digitalsamba/claude-code-video-toolkit.git && cd claude-code-video-toolkit && claude"},"agents":["claude-code","codex","openclaw"],"models":["ltx-2","flux-2","qwen3-tts","ace-step-1.5","elevenlabs"],"requires":["Node.js 18+","uv for the Python tools","Modal or RunPod account for open-model generation","Optional: ElevenLabs key and Cloudflare R2"],"cost":{"note":"Open models run on your own Modal or RunPod account at cost; ElevenLabs is optional"},"runtime":"~5.5 min for a 15 s promo (Agent Skills Hub test)","files":[".claude/skills/remotion/SKILL.md",".claude/skills/ffmpeg/SKILL.md",".claude/skills/elevenlabs/SKILL.md",".claude/skills/ltx2/SKILL.md",".claude/skills/acestep/SKILL.md",".claude/skills/playwright-recording/SKILL.md",".claude/skills/synthetic-ui-demo/SKILL.md","docker/"],"stats":{"stars":2351,"installs":16841,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-21","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":230,"text":"narrate · score · render"},"legal":"scanned: manual review 2026-10-26 — the Python GPU endpoints only decode base64 media. The README and the OpenClaw variant suggest the official uv installer (curl | sh) when uv is missing; install uv with Homebrew or pipx instead.","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f6aa7b236454/claude-code-video-toolkit.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRq4AAABXRUJQVlA4IKIAAADQBACdASogABIAPtFWpk0oJKOiMBgIAQAaCWMAuwGMqVmhLrPQK4XM34gCdFoiAAD+8MiW5kPhpJlcZuG9FZc2QX4GcVVBRiE6ike3IzYfK0Vla6cnUbiUeVVGHHr1cwxeKO89A1hbjznbfSs8uS729whN7OY2NeQPnqz/xZfTvBA7W9wnTj/SCqJiV6c+O+GozRkrxJuK7h+fikLQp1IwAAA=","source":"https://demos.digitalsamba.com/video/ds-release-649.mp4","page":"https://github.com/digitalsamba/claude-code-video-toolkit#readme","credit":"Digital Samba (claude-code-video-toolkit)","rights":"publisher-site","note":"The README's lead demo, a release-notes video made with the toolkit: the 'Release 649' title, then product UI rebuilt from source with a scripted camera move (no screen recording). Cut 1-9 s of 80 s.","bytes":104121,"addedAt":"2026-10-27"}},{"id":"nateherkai/herk-edit-kit","slug":"herk-edit-kit","name":"Herk Edit Kit","skillName":"edit-video","type":"skill","status":"live","stream":"community","category":"editing","tags":["talking-head","shorts","reels","hyperframes","motion-graphics","captions"],"summary":"Nate Herk's kit to edit talking-head videos, reels and Shorts: silence and flub cuts, storytelling, motion graphics.","description":"From YouTuber Nate Herk: 15 skills that edit a raw talking-head recording end to end. The edit-video skill chains transcription, silence trimming (cut-silences), retake and stutter removal (cut-mistakes), visual storytelling, motion graphics from a 406-card library and verified HyperFrames rendering; short-form skills cut reels and YouTube Shorts, and motion-showreel builds animated showreels. It bundles HyperFrames and GSAP reference skills, works in Claude Code and Codex, and calls ElevenLabs or Kie.ai only when you add their keys.","useWhen":["Edit a raw talking-head recording into a finished video","Cut a long video into reels or Shorts","Add motion graphics and captions without After Effects"],"notFor":["Footage with no speech to transcribe"],"publisher":{"name":"Nate Herk","handle":"nateherkai","kind":"community","url":"https://github.com/nateherkai","avatar":"https://github.com/nateherkai.png","verified":false},"source":{"url":"https://github.com/nateherkai/herk-edit-kit","repo":"nateherkai/herk-edit-kit","license":"MIT"},"install":{"claude-code":"git clone https://github.com/nateherkai/herk-edit-kit.git","codex":"git clone https://github.com/nateherkai/herk-edit-kit.git"},"agents":["claude-code","codex"],"models":["whisper","elevenlabs"],"requires":["Node.js with the HyperFrames CLI (npx hyperframes)","ffmpeg","Optional: ElevenLabs and Kie.ai keys"],"cost":{"note":"Free — local render; optional ElevenLabs and Kie.ai calls use your own keys"},"files":[".claude/skills/edit-video/SKILL.md",".claude/skills/cut-silences/SKILL.md",".claude/skills/cut-mistakes/SKILL.md",".claude/skills/video-storytelling/SKILL.md",".claude/skills/short-form-edit/SKILL.md",".claude/skills/motion-showreel/SKILL.md",".claude/skills/style-library/SKILL.md"],"stats":{"stars":2250,"installs":167,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-14","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":0,"text":"cut silences"},"legal":"scanned: manual review 2026-10-26 — LICENSE is MIT plus a note that AI Automation Society brand assets in the examples are not licensed for reuse (GitHub shows NOASSERTION). Example projects include a design.tar.gz archive and ClickUp demo-recording scripts; they are examples, not skills.","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/bb31cdd5a172/herk-edit-kit.mp4","w":404,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRqQBAABXRUJQVlA4IJgBAACQCQCdASogADoAPsVQokunpKMhs/maqPAYiWQAqtcy+HoaHQwXAU5NlBNCHsHs8eOBtBzUz/O5F5njc3px+/lWtzM9DJrrAO2CkDNY9Iu6LPc/2N2wAPcoy8NvMTSjCRvK7CeRQUuG+CuTNJnSJ/bg9KKH59LFh/NrMdHhcTyIXv7dxxlgQePldANqVILQW+E8nMz7k6dhcHUB8NHLhy5B8JT0IbsATHTJoprD/CU7gOPCKZuvoJuVGYGReSybBSAQdPUlUz2YOGw7LgkfDIQRM0Nx+wKCTsZ4oi79cGwUgpHtHpgQN6XhOmaP36uYfZ1DKFpTzCJZWI4DuPF7R3wnvoiLo2SQlMCc0l18J0+f3NlhriGMGOInsAp/86/7YVQGi87nsQDXAMGNcT1BkRes3iFre+sb3hOblWLc3JIQDOxZmM2Pfj4B2JtHnYU/Kdgd+r2rpzwgzewDjC3peT018OGLRV6oM43tUdq/tLz/1/1YXzUCCSUdFs39j1qvieUYbEUe5PV3mdh5nXE5xU84jgnWPMK/uAA=","source":"https://github.com/user-attachments/assets/6fe4fc3b-c381-45f6-8305-efae2a0b0132","page":"https://github.com/nateherkai/herk-edit-kit#readme","credit":"Nate Herk (herk-edit-kit)","rights":"publisher-repo","note":"README showcase 'AI edits everything: the reveal': one take of Nate talking, edited end to end by the kit's skills into a vertical reel with word captions, split-screen motion graphics and B-roll. Cut 0.5-8.5 s of 51 s.","bytes":241783,"addedAt":"2026-10-27"}},{"id":"louisedesadeleer/clipify","slug":"clipify","name":"Clipify","skillName":"clipify","type":"skill","status":"live","stream":"community","category":"editing","tags":["shorts","captions","reframe","highlights","whisper","editing"],"summary":"Long videos into social clips: find funny lines or impact beats, cut, reframe to 9:16, burn word-by-word captions.","description":"Finds compelling moments in a video, either funny dialogue (from a Whisper transcript) or repeated impact actions such as axe chops, hits, throws or drumbeats (from audio transient detection), checks that each candidate is in frame, and cuts them as standalone clips. It can reformat 16:9 to 9:16 with a pan between faces or a split screen, time-warp pans for tighter reveals, and burn opus-style word-by-word captions from a fresh transcript of each trimmed clip. Everything runs locally with ffmpeg, Whisper and Python.","useWhen":["Make Shorts or Reels from a long video","Cut an action montage on every hit or chop","Reframe 16:9 footage to vertical with captions"],"notFor":["Generating new footage","Multi-camera edits"],"publisher":{"name":"Louise de Sadeleer","handle":"louisedesadeleer","kind":"community","url":"https://github.com/louisedesadeleer","avatar":"https://github.com/louisedesadeleer.png","verified":false},"source":{"url":"https://github.com/louisedesadeleer/clipify","repo":"louisedesadeleer/clipify","license":"MIT"},"install":{"claude-code":"git clone https://github.com/louisedesadeleer/clipify.git ~/.claude/skills/clipify"},"agents":["claude-code"],"models":["whisper"],"requires":["ffmpeg with libx264","OpenAI Whisper (openai-whisper)","Python 3 with NumPy"],"cost":{"note":"Free — local"},"files":["SKILL.md","scripts/analyze.py","scripts/detect_transients.py","scripts/build_pan.py","scripts/build_ass.py","scripts/audio_align.py"],"stats":{"stars":611,"installs":176,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-24","addedAt":"2026-10-26","preview":{"kind":"karaoke","hue":55,"text":"wait for it"},"legal":"scanned: manual review 2026-10-26 — local scripts only. Clip only footage you have the rights to.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/76ea06e94e22/clipify.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRtgAAABXRUJQVlA4IMwAAADQBQCdASogABIAPtFWpE0oJKOiMBgIAQAaCWwAnTLrp1Z/wJ0CR5iWCGRhmYlvaqZu0km8YpPwAP7quvH73QCtNbDbNNcWleh3HbIo0nRyyp5cEws2zb+qcRLHPpahSDiTTFvX4X/J+O/4CisMxv/5LI5MTp6arLR7aPNFl+fGM4d0huF54eEL/UznUrIQAWAnTT2RREN6OszfFZ8zqF7bkc0eI+OTTwv/1TG5HI5dJWMQZiVhntFmeNeLokZib9wBezAF/VYQ3rQAAAA=","source":"https://x.com/LouiseDSadeleer/status/2051652715617378655","page":"https://x.com/LouiseDSadeleer/status/2051652715617378655","credit":"Louise de Sadeleer (clipify)","rights":"creator-post","note":"From the creator's demo post: a 9:16 clip that /clipify cut from her long video (funny moment, face-tracked reframe, burned word-by-word captions) plays beside her webcam. Cut 112-120 s of 148 s.","bytes":108490,"addedAt":"2026-10-27"}},{"id":"isaacrowntree/color-grade","slug":"color-grade-ai","name":"Color Grade AI","skillName":"color-grade","type":"skill","status":"beta","stream":"community","category":"color","tags":["lut","davinci-resolve","premiere","grading","shot-matching"],"summary":"Measures a frame or clip and writes .cube 3D LUTs for DaVinci Resolve and Premiere: fixes, shot matching, presets.","description":"Generates .cube 3D LUTs for color correction by measurement rather than by eye: it analyses a frame or a whole clip, detects log versus display-referred Rec.709 footage, fits a correction and emits a ready-to-use LUT, matches one shot to another, and reports color statistics for a region such as skin or a wall. It ships correction LUTs and node-chain building blocks that bake into creative presets, a config-driven preset file, an in-browser preview for live grading, ffmpeg recipes for H.265 masters and web exports, and DaVinci Resolve node-order guidance. Small project (30 stars), so it stays in beta.","useWhen":["Fix a color cast or exposure problem with a LUT","Match one shot's grade to another","Build a reusable look as a .cube file"],"notFor":["Grading inside an editor's timeline (it outputs LUTs you apply yourself)"],"publisher":{"name":"Isaac Rowntree","handle":"isaacrowntree","kind":"community","url":"https://github.com/isaacrowntree","avatar":"https://github.com/isaacrowntree.png","verified":false},"source":{"url":"https://github.com/isaacrowntree/color-grade-ai","repo":"isaacrowntree/color-grade-ai","license":"MIT"},"install":{"claude-code":"git clone https://github.com/isaacrowntree/color-grade-ai.git ~/.claude/skills/color-grade"},"agents":["claude-code"],"requires":["Python 3","Ruby","ffmpeg and ffprobe"],"cost":{"note":"Free — local"},"files":["SKILL.md","auto_grade.py","analyze_frame.rb","bake_lut.rb","footage_type.py","correction_luts/manifest.yml"],"stats":{"stars":30,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-08-03","addedAt":"2026-10-26","preview":{"kind":"lut","hue":30,"text":"log → Rec.709"},"legal":"scanned: manual review 2026-10-26 — local Python and Ruby only. Conversion LUTs for camera log formats are not included (bring your own).","adds":"visual","media":{"type":"none","reason":"Writes .cube LUTs; the only image is the empty LUT Preview UI with no frame loaded (docs/public/preview-screenshot.png), and no before/after grade is published","searched":["github.com/isaacrowntree/color-grade-ai README and full tree (UI screenshot, favicon)","isaacrowntree.github.io/color-grade-ai and isaacrowntree.com/color-grade-ai docs (text only)","X @tikwanleep release post (link only)"],"addedAt":"2026-10-27"}},{"id":"CloudAI-X/threejs-skills","slug":"threejs-skills","name":"Three.js Skills","type":"skill","status":"live","stream":"community","category":"3d-scenes","tags":["three.js","webgl","webgpu","tsl","3d","animation","shaders"],"summary":"13 Three.js skills: scenes, geometry, materials, lighting, GLSL and TSL shaders, animation, post-processing, R3F.","description":"A community pack that fills the gap left by three.js's lack of official skills: 13 skills covering fundamentals, geometry, materials, textures, lighting, loaders, the glTF asset pipeline, interaction, animation (keyframe, skeletal, morph targets), custom GLSL shaders and their TSL equivalents on WebGPU, post-processing, performance and React Three Fiber. Each skill is a single Markdown file with quick-start code and common mistakes, useful whenever a video or motion piece needs a real 3D layer (HyperFrames supports three.js as a runtime).","useWhen":["Build or debug a three.js scene for a motion piece or site","Write a custom shader or port GLSL to TSL","Optimize glTF assets for the web"],"notFor":["Offline 3D rendering in Blender"],"publisher":{"name":"CloudAI-X","handle":"CloudAI-X","kind":"community","url":"https://github.com/CloudAI-X","avatar":"https://github.com/CloudAI-X.png","verified":false},"source":{"url":"https://github.com/CloudAI-X/threejs-skills","repo":"CloudAI-X/threejs-skills","license":"MIT"},"install":{"claude-code":"npx skills add cloudai-x/threejs-skills"},"agents":["claude-code","codex","cursor"],"requires":["A JavaScript project with three.js"],"cost":{"note":"Free — instructions only"},"files":["skills/threejs-fundamentals/SKILL.md","skills/threejs-shaders/SKILL.md","skills/threejs-animation/SKILL.md","skills/threejs-postprocessing/SKILL.md","skills/threejs-lighting/SKILL.md","skills/threejs-react-three-fiber/SKILL.md"],"stats":{"stars":3763,"installs":154958,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-19","addedAt":"2026-10-26","preview":{"kind":"shader","hue":250,"text":"TSL"},"legal":"scanned: manual review 2026-10-26 — Markdown only, no scripts.","adds":"tool","media":{"type":"none","reason":"Knowledge-only Three.js skills; the repo has no media and the creator's only clip is a Remotion launch promo (feature list and install command), not a scene built with the skills","searched":["github.com/CloudAI-X/threejs-skills README and full tree (no media files)","X @cloudxdev posts on the skills (launch post 2013358306392449499 has no media","promo video 2013778504530248074 is a feature-list slideshow)"],"addedAt":"2026-10-27"}},{"id":"calesthio/OpenMontage","slug":"openmontage","name":"OpenMontage","type":"skill","status":"live","stream":"community","category":"edit-agents","tags":["video-production","pipelines","remotion","hyperframes","explainers","editing","edit-agents","talking-head","clips","dubbing"],"summary":"Open-source agentic video studio: 12 pipelines (8 edit your footage), 100+ tools, ~140 skills. Run your agent in it.","description":"The most-starred community video project of 2026 (72K stars; once #1 repository of the day on GitHub Trending). You clone the repo and run Claude Code, Codex, Cursor, Copilot or Windsurf inside it; agent guides route a request, or a video you paste as a reference, into one of 12 production pipelines with 100+ tools and about 140 SKILL.md knowledge packs covering generation providers, Remotion and HyperFrames composition, three.js, TTS and speech-to-text, character animation QA and more. Provider adapters span fal.ai, Atlas Cloud, Kling, ElevenLabs, Fish Audio, BFL, xAI and others, each with your own keys. In the Agent Skills Hub end-to-end test it made a 15-second promo with a look of its own in 8.6 minutes.","useWhen":["Run a full video production pipeline from an agent","Remake a reference video's style for your own topic","Mix several generation providers in one project"],"notFor":["A single lightweight skill to drop into ~/.claude/skills","Closed-source or hosted use without AGPL compliance"],"publisher":{"name":"Calesthio","handle":"calesthio","kind":"community","url":"https://github.com/calesthio","avatar":"https://github.com/calesthio.png","verified":false},"source":{"url":"https://github.com/calesthio/OpenMontage","repo":"calesthio/OpenMontage","license":"AGPL-3.0"},"install":{"claude-code":"git clone https://github.com/calesthio/OpenMontage.git"},"agents":["claude-code","codex","cursor","openclaw"],"requires":["Python 3.10+ and Node.js","ffmpeg","API keys for the providers you enable"],"cost":{"note":"Free and open source; generation billed by the providers you connect"},"runtime":"~8.6 min for a 15 s promo (Agent Skills Hub test)","files":["AGENTS.md","AGENT_GUIDE.md","CLAUDE.md",".agents/skills/","docs/PROVIDERS.md","remotion-composer/","Makefile"],"stats":{"stars":72488,"installs":23270,"source":"GitHub + skills.sh","asOf":"2026-10-27"},"updatedAt":"2026-10-24","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":150,"text":"12 pipelines"},"legal":"scanned: manual review 2026-10-26 — AGPL-3.0 (copyleft, including network use). It vendors third-party skills, for example a copy of HeyGen's media-use whose setup pipes HeyGen's official CLI installer to bash; review the skills you enable.","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d1a56fafe3a7/openmontage.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRogAAABXRUJQVlA4IHwAAACwBACdASogABIAPslQnkunpKKhsAwA8BkJZwDDcCHfbU+aldCIVMyhM1ws3FgAAP73gMUSr/zH/gdJdwhG8+yt1DylKyWBNbVVU7w2xvXYwRzhFLytQekkIWmXN3xyfdyB+3BGLKfwWFPkI9CQDWHe66cNAjUqWKIgAAAA","source":"https://github.com/user-attachments/assets/f77ce7a4-68b8-4f94-a287-e94bf50a32e1","page":"https://github.com/calesthio/OpenMontage#readme","credit":"Calesthio (OpenMontage)","rights":"publisher-repo","note":"README showcase 'SIGNAL FROM TOMORROW', a sci-fi trailer produced end to end through OpenMontage (concept, script, scene plan, Veo motion clips, soundtrack, Remotion composition): the rocket-launch sequence. Cut 12.5-20.5 s of 30 s.","bytes":149810,"addedAt":"2026-10-27"}},{"id":"kajisho5/ffmpeg-skill","slug":"ffmpeg-skill","name":"FFmpeg Skill","skillName":"ffmpeg-skill","type":"skill","status":"live","stream":"community","category":"edit-services","tags":["ffmpeg","editing","captions","reframe","loudness","mcp","tooling"],"summary":"Local video editor for agents: 42 FFmpeg tools with a machine-readable contract and an MCP server; no cloud, no keys.","description":"A local FFmpeg engine for coding agents: 42 tools behind a machine-readable contract (`contract --json`) and an MCP server, covering cut, trim and join, 9:16 and 1:1 reframes, speed changes, SRT/ASS captions (animated and karaoke), logos and lower thirds, silence removal, multicam and external-mic sync, loudness normalization, HDR/Dolby Vision to SDR, LUTs, ducked background music, platform exports (YouTube, Reels, TikTok, X), compliance checks, scene detection, highlight reels and contact sheets to inspect results. The skill tells the agent what to ask, what to assume and how to report, uses only the Python 3.10+ standard library, and ships evals and a doctor command.","useWhen":["Edit, caption, reframe or export a video file locally","Normalize loudness or sync an external mic","Inspect footage with contact sheets before editing"],"notFor":["Generating new footage","Programmatic motion graphics (use Remotion or HyperFrames)"],"publisher":{"name":"Shogo Kajiyama","handle":"kajisho5","kind":"community","url":"https://github.com/kajisho5","avatar":"https://github.com/kajisho5.png","verified":false},"source":{"url":"https://github.com/kajisho5/ffmpeg-skill","repo":"kajisho5/ffmpeg-skill","license":"MIT"},"install":{"claude-code":"npx ffmpeg-skill","cursor":"npx ffmpeg-skill --cursor","codex":"npx ffmpeg-skill --codex"},"agents":["claude-code","cursor","codex","mcp"],"models":["whisper"],"requires":["FFmpeg","Python 3.10+","Node.js (npx installer)"],"cost":{"note":"Free — local, no API keys"},"files":["SKILL.md","docs/contract.md","mcp/server.py","references/devices.md","evals/agent_prompts.json","bin/install.js"],"stats":{"stars":3046,"installs":391,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"version":"2.17.2","updatedAt":"2026-10-26","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":95,"text":"ffmpeg -i talk.mp4 -vf …"},"legal":"scanned: manual review 2026-10-26 — the npx installer copies the skill into ~/.claude/skills (no install hooks); everything runs locally.","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/564622beb60d/ffmpeg-skill.mp4","w":720,"h":202,"duration":12,"blur":"data:image/webp;base64,UklGRqwAAABXRUJQVlA4IKAAAABwBQCdASogAAgALplotFoiqCgoCACYS2AE6ZQjgbYBUgfLEzk5yr/AG6ABxx03cGamlElAAP6ttzQmcOn606oD0bQzgTr4/0h9Unz7ZW9//NrvMszlZppevc1r/TnfvQhq055bjWeCB5OIFhvEtJW0a16fySeqQIOOH3VGbZlUe9g+5y4gzEby01XWNy2H38y90K9C1fq1ecGK+OsFAAAA","source":"https://raw.githubusercontent.com/kajisho5/ffmpeg-skill/main/assets/demo.gif","page":"https://github.com/kajisho5/ffmpeg-skill/tree/main/assets","credit":"Shogo Kajiyama (ffmpeg-skill)","rights":"publisher-repo","note":"The repo's demo GIF: before/after on an FFmpeg test pattern as the skill's tools burn animated captions ('Captions burned in with libass', 'Cut, fit, sync, normalise, export'). Full 12 s loop, converted from GIF; per-feature demos are in docs/demos.","bytes":179575,"addedAt":"2026-10-27"}},{"id":"calesthio/threejs-scene-composition","slug":"calesthio-threejs-scene-composition","name":"Three.js Scene Composition","skillName":"threejs-scene-composition","type":"skill","status":"live","stream":"community","category":"3d-scenes","tags":["code-to-video","threejs","3d","deterministic-render","product","tooling","brand-motion"],"summary":"Plan, build and capture Three.js scenes for video: absolute-time frames, seeded motion, color-safe glTF, render QA.","description":"A production guide for Three.js scenes that end up as rendered media, such as product orbits, title sequences and procedural worlds, not websites. Its core rule is deterministic capture: compute `time = frame / fps`, set `AnimationMixer` time, camera rigs, uniforms and particles from absolute time or a seeded cache, never accumulate state, prewarm shaders before frame one, and render the same stress frames in two clean runs to compare them. It also covers a scene contract and asset manifest, glTF validation, texture color spaces and tone mapping, GPU disposal, flash-safety review and rights tracking, with two worked examples (a color-critical 4K product orbit and an instanced title world). It was written in July 2026 as one of 153 skills in the generative-media-skills pack by the creator of OpenMontage and has not changed since. It gives the per-frame adapter shape but leaves the capture host (HyperFrames, Remotion or a headless-browser loop) to you.","useWhen":["Browser-rendered 3D product shots or title sequences delivered as video","Procedural 3D worlds or glTF scene assembly with camera and lighting animation","Deterministic frame export and render QA for a Three.js scene"],"notFor":["Modeling or preparing standalone 3D assets (the pack's 3d-asset-production skill covers that)","WebXR interaction, game logic or generic website decoration"],"publisher":{"name":"Calesthio","handle":"calesthio","kind":"community","url":"https://github.com/calesthio","avatar":"https://github.com/calesthio.png","verified":false},"source":{"url":"https://github.com/calesthio/generative-media-skills/tree/main/skills/production/runtime-assembly/threejs-scene-composition","repo":"calesthio/generative-media-skills","path":"skills/production/runtime-assembly/threejs-scene-composition","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/calesthio/generative-media-skills --skill threejs-scene-composition"},"agents":["claude-code","codex","cursor","openclaw"],"requires":["three.js (pin and record the installed revision)","A frame-capture host such as HyperFrames, Remotion or a headless-browser render loop"],"cost":{"note":"Free — instructions only"},"files":["SKILL.md","EVAL.md"],"stats":{"stars":216,"installs":110,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-07-13","addedAt":"2026-10-26","preview":{"kind":"film","hue":236,"text":"t = frame / fps"},"legal":"scanned: manual review 2026-10-26 — Markdown only: SKILL.md plus EVAL.md, an answer key the repo keeps from the agent being scored. Its links go only to threejs.org, Khronos and W3C docs. skills.sh audits: Pass/Pass/Pass. MIT (copyright \"generative-media-skills contributors\"). The skill tells you to record licenses for any models, HDRIs, fonts and mocap you bring in.","adds":"tool","media":{"type":"none","reason":"Guidance-only skill in calesthio/generative-media-skills; the repo has no media and no scene or capture made with this skill is published","searched":["github.com/calesthio/generative-media-skills README and full tree (no media files)","skills/production/runtime-assembly/threejs-scene-composition folder","X search from @calesthioailabs (no posts about this skill)","OpenMontage README showcases (other pipelines, not this skill)"],"addedAt":"2026-10-27"}},{"id":"EnzeD/r3f-skills","slug":"enzed-r3f-skills","name":"R3F Skills","type":"skill","status":"live","stream":"community","category":"3d-scenes","tags":["code-to-video","r3f","threejs","drei","3d","shaders"],"summary":"11 React Three Fiber skills checked against Fiber 9.7 and three r185: Canvas, demand loops, loaders, shaders, post.","description":"Eleven short React Three Fiber skills: fundamentals, geometry, materials, lighting, textures, loaders, animation, shaders, post-processing, interaction and Rapier physics. Each SKILL.md holds decisions, pitfalls and one checked example; all were rewritten in August 2026 for Fiber 9.7, React 19, three r185 and drei 10.7. The repo type-checks the 18 examples extracted from the Markdown and renders them in headless Chromium with pixel and remount checks. Each skill tells the agent to read the project's installed versions before choosing APIs. Topics include render-loop ownership, `frameloop=\"demand\"` with `invalidate()`, disposal and asset ownership, color spaces and selective bloom. For video, pair it with Remotion's `@remotion/three` rules: the skills teach delta-driven `useFrame` motion and do not cover frame-exact capture. The author's own with-skill vs without-skill evals report lower token use and time, but no measured correctness gain yet.","useWhen":["Set up an R3F Canvas, typed JSX and resource ownership","Animate with useFrame, damping, GLTF clips or a demand loop","Write GLSL or optional TSL materials and post-processing in R3F","Load, cache and clone GLTF assets with Suspense"],"notFor":["Fiber 10 alpha or Fiber 8 / React 18 projects (not tested by its fixtures)","Frame-exact video capture (use Remotion's @remotion/three rules in remotion-markup or Three.js Scene Composition)"],"publisher":{"name":"Nicolas Zullo","handle":"EnzeD","kind":"community","url":"https://github.com/EnzeD","avatar":"https://github.com/EnzeD.png","verified":false},"source":{"url":"https://github.com/EnzeD/r3f-skills","repo":"EnzeD/r3f-skills","license":"MIT"},"install":{"claude-code":"npx skills add EnzeD/r3f-skills"},"agents":["claude-code","codex"],"requires":["React 19 with @react-three/fiber 9 (verified with three 0.185, drei 10.7, postprocessing 6.39)"],"cost":{"note":"Free — instructions only"},"files":["skills/r3f-fundamentals/SKILL.md","skills/r3f-animation/SKILL.md","skills/r3f-shaders/SKILL.md","skills/r3f-postprocessing/SKILL.md","skills/r3f-loaders/SKILL.md","skills/r3f-textures/references/render-targets.md","evals/README.md","docs/maintenance.md"],"stats":{"stars":131,"installs":22525,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-31","addedAt":"2026-10-26","preview":{"kind":"logo3d","hue":128,"text":"useFrame"},"legal":"scanned: manual review 2026-10-26 — the skill folders hold Markdown only. Read all repo dev tooling in full: scripts/check-skills.mjs, check-browser.mjs, check-releases.mjs (its only host is registry.npmjs.org), evals/grade.mjs, rubrics and collect-sandbox.sh, and validation/*. They do local file checks and a Playwright smoke run. No install hooks, and CI runs `npm ci --ignore-scripts`. The one base64 string decodes to a 2×2 PNG test texture. skills.sh audits: Pass/Pass/Pass. License: MIT per the README; the repo has no LICENSE file.","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e7cd10f94838/enzed-r3f-skills.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRqIAAABXRUJQVlA4IJYAAAAQBQCdASogABIAPsVSoUunpKMhsAwA8BiJZACsMoMulEmjhjJMyEmjiUWGfQJPi2MAAP7yorzUwD4PPJNfqlU1itseQffHD6ZJtyvaGOoYy+aEMGfr6b8ccZjnuq3ptumAhSKIlvb1apXbhOxoCRYIu90StfD8rOnrpKnL6c6XDYFHdBq3JB0YDrTDs9J665tjrUvAAAA=","source":"https://video.twimg.com/amplify_video/2019180207689564160/vid/avc1/1920x1080/Kbr0fXouDMOx3cqE.mp4","page":"https://x.com/NicolasZu/status/2019180335351611451","credit":"Nicolas Zullo (@NicolasZu)","rights":"creator-post","note":"Timelapse (x6) of the creator's in-browser 3D factory game (belts, miners, smelters), which he says he built with these R3F skills plus an opinionated AGENTS.md (reply 2023661637438214189). Cut 22-30 s of 60 s.","bytes":168927,"addedAt":"2026-10-27"}},{"id":"sorrycc/karpathy-3d-story","slug":"karpathy-3d-story","name":"Procedural 3D Story","skillName":"karpathy-3d-story","type":"skill","status":"beta","stream":"community","category":"3d-scenes","tags":["code-to-video","threejs","3d","storytelling","narration","deterministic-render","cinematic"],"summary":"Turn a myth or book into a seeded, multi-chapter procedural three.js film in one scene.html, audited frame by frame.","description":"Builds a multi-chapter animated 3D story (default 5 chapters of about 44 s) as one self-contained `scene.html`. It contains procedural three.js sets, one biped rig dressed in costumes, an FX library, a director with camera splines and captions, and optional ElevenLabs narration, ambience and SFX. Every frame is a pure function of story time with a seeded RNG, so `?chapter=N&t=X&freeze=1` reproduces any frame. `shot.sh` renders that frame synchronously in headless Chrome with `preserveDrawingBuffer` and a `toDataURL` readback shim. The skill requires at least three screenshot audit rounds over every camera keyframe, and a bundled Journey to the West build is the reference implementation (the idea comes from a Karpathy post). Caveats: the output is a playable HTML film, not an MP4, so capture it with your own frame loop. It also downloads three r160's old UMD build, hard-codes the macOS Chrome path, and suggests `pkill -9 -f \"Google Chrome\"`, which closes your own browser too.","useWhen":["A 3D story or procedural three.js film from source material","An animated diorama of a book, legend or myth","Adding a chapter to a story built with this skill"],"notFor":["Direct MP4 delivery: it ships an HTML film, so capture it through HyperFrames, Remotion or a headless frame loop"],"publisher":{"name":"chencheng (云谦)","handle":"sorrycc","kind":"community","url":"https://github.com/sorrycc","avatar":"https://github.com/sorrycc.png","verified":false},"source":{"url":"https://github.com/sorrycc/skills/tree/master/skills/karpathy-3d-story","repo":"sorrycc/skills","path":"skills/karpathy-3d-story","license":"MIT"},"install":{"claude-code":"npx skills add sorrycc/skills"},"agents":["claude-code"],"models":["eleven_multilingual_v2"],"requires":["Google Chrome (shot.sh uses the macOS app path)","Python 3 with Pillow; ffmpeg and ffprobe for audio","Node.js (audio_sweep.js)","ElevenLabs API key (ELEVENLABS_API_KEY) for the optional soundtrack"],"cost":{"note":"Free — renders locally; the optional narration, ambience and SFX are billed by ElevenLabs"},"files":["SKILL.md","reference/architecture.md","reference/pitfalls.md","reference/audio.md","templates/shot.sh","templates/gen_audio.py","templates/audio_sweep.js","example/journey-to-the-west/scene.html"],"stats":{"stars":32,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-08-06","addedAt":"2026-10-26","preview":{"kind":"film","hue":63,"text":"Chapter 3, t = 12.5"},"legal":"scanned: manual review 2026-10-26 — read templates/build.sh, shot.sh, gen_audio.py, split_narration.py and audio_sweep.js (the example's copies are byte-identical) and scanned the example parts. Hosts: api.elevenlabs.io, with the key read from ELEVENLABS_API_KEY, and unpkg.com for a plain file download of three@0.160.0 (nothing is piped to a shell). shot.sh starts headless Chrome with --no-sandbox on a local file. SKILL.md tells the agent to run `pkill -9 -f \"Google Chrome\"` between batches, which also kills the user's own Chrome. It sets `disable-model-invocation: true`, so you call it by name. The repo's cc-skills plugin also installs create-skill and rename-sessions, a local Bun script that rewrites session titles in ~/.claude, ~/.qoder and Codex. MIT. Named after an idea Andrej Karpathy posted on X, which the SKILL.md credits; no affiliation with or endorsement by him.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/42da29528d22/karpathy-3d-story.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRqYAAABXRUJQVlA4IJoAAAAwBQCdASogABIAPtFao00oJSMiMBgIAQAaCWIAnTKATgA77c3W3LvFK31RcnDLqG3r4AD+7oEGYCdUKxilxwKqKa1oQkR4SL03JjBvwz25vyDBKNLWDQxOZGTpIs55xfbot05CnepS6wlm3bBxvLrCZMbT0sY4H9naMpZl5MqlZBrPvrzQNyrFnAvQfOOjH1rRpgeNhBZGcAAA","source":"https://video.twimg.com/amplify_video/2085263692799807488/vid/avc1/1280x720/oI1cWyPjkjBs9y99.mp4","page":"https://x.com/chenchengpro/status/2085274449121788324","credit":"陈成 chencheng (sorrycc, @chenchengpro)","rights":"creator-post","note":"The creator's Journey to the West example for /karpathy-3d-story (5 chapters, 3.5 min of procedural three.js): the camera rises over Flower-Fruit Mountain as the stone egg glows and a beam of light breaks out. Cut 17-25 s of 218 s.","bytes":238971,"addedAt":"2026-10-27"}},{"id":"dgreenheck/webgpu-threejs-tsl","slug":"dgreenheck-webgpu-threejs-tsl","name":"WebGPU Three.js TSL","skillName":"webgpu-threejs-tsl","type":"skill","status":"beta","stream":"community","category":"shaders","tags":["code-to-video","threejs","webgpu","tsl","compute","wgsl"],"summary":"TSL node materials, GPU compute, post-processing and WGSL for three.js WebGPURenderer, by the Three.js Roadmap author.","description":"A reference skill for three.js's WebGPU path. It covers `WebGPURenderer` setup, TSL syntax and node materials, GPU compute with instanced arrays, TSL post-processing, custom WGSL functions, device loss and device limits. It ships runnable examples (particles, an Earth shader, a post-processing chain) and two project templates. It was updated for three r183+ API changes in April 2026, and JetBrains includes it in its curated, verified skills catalog. It is beta because the skill has not changed since 2026-04-02, outside our 180-day window, while TSL keeps changing. For video, note that its examples animate with TSL's built-in `time` node, which follows the renderer clock. When frames must be exact, drive a `uniform()` from composition time instead.","useWhen":["Set up three.js with WebGPURenderer","Write TSL node materials or migrate GLSL to TSL","GPU compute particles or simulations in three.js","TSL post-processing or custom WGSL functions"],"notFor":["WebGLRenderer projects built on GLSL ShaderMaterial (Three.js Skills' threejs-shaders covers both GLSL and TSL)"],"publisher":{"name":"Dan Greenheck","handle":"dgreenheck","kind":"community","url":"https://github.com/dgreenheck","avatar":"https://github.com/dgreenheck.png","verified":false},"source":{"url":"https://github.com/dgreenheck/webgpu-claude-skill/tree/main/skills/webgpu-threejs-tsl","repo":"dgreenheck/webgpu-claude-skill","path":"skills/webgpu-threejs-tsl","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/dgreenheck/webgpu-claude-skill --skill webgpu-threejs-tsl"},"agents":["claude-code","cursor"],"requires":["three.js r183+ (three/webgpu and three/tsl)","A WebGPU-capable browser"],"cost":{"note":"Free — instructions only"},"files":["SKILL.md","REFERENCE.md","docs/core-concepts.md","docs/materials.md","docs/compute-shaders.md","docs/post-processing.md","docs/device-loss.md","templates/webgpu-project.js"],"stats":{"stars":1260,"installs":1620,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-04-02","addedAt":"2026-10-26","preview":{"kind":"shader","hue":272,"text":"colorNode"},"legal":"scanned: manual review 2026-10-26 — Markdown docs plus example and template JS that is scene code only: no network calls, eval or decoding. Links go to github.com, threejs.org, toji.dev and webgpureport.org. skills.sh audits: Pass/Pass/Pass. License: MIT per the README and .claude-plugin/plugin.json; the repo has no LICENSE file. Examples are derived from three.js (MIT). The README's Claude install line is a placeholder (`/skill install webgpu-threejs-tsl@<your-github-username>/…`), so the install command comes from skills.sh.","adds":"tool","media":{"type":"none","reason":"Reference skill for TSL/WebGPU code; the repo has no media and the creator's posts about the skill carry no demo of anything built with it (his other Three.js clips are not tied to the skill)","searched":["github.com/dgreenheck/webgpu-claude-skill README and full tree (no media files)","X @dangreenheck posts on the skill (2014581585354404165, 2018442761314115867: link only)","threejsroadmap.com link from GitHub profile (course site, no skill demo referenced)"],"addedAt":"2026-10-27"}},{"id":"juniorxsound/rgl-cli","slug":"rendergl-headless-three","name":"Headless Three.js WebGPU (rgl)","skillName":"rgl-cli","type":"skill","status":"beta","stream":"community","category":"tooling","tags":["code-to-video","threejs","webgpu","headless","ffmpeg","gltf"],"summary":"Render three.js scenes or GLB files to PNG, MP4, WebM or GIF in Node with Dawn WebGPU: no browser, fixed-step frames.","description":"An agent skill shipped inside `@rendergl/headless-three-webgpu-cli` (render.gl). The package is a Node.js renderer that runs three.js's WebGPU backend on Dawn (Metal, Vulkan, or SwiftShader on CPU-only hosts) with no browser or display. `rgl video` renders a GLB turntable or dolly, or a custom scene module whose `update(delta)` runs once per frame with `delta = 1 / fps`, and streams raw RGBA frames to ffmpeg as MP4, MOV, WebM or GIF. `rgl render`, `inspect` and `bench` cover stills, asset checks and benchmarks. Two sibling skills ship in the other packages: `rgl-core` (programmatic `render`, `readPixels`, `toBuffer`) and `rgl-gltf`. It is beta: the repo has 8 stars and the package is at v0.2. Frames render in order from zero, so scene modules must derive motion from the fixed `delta`, never from the wall clock.","useWhen":["Render images, videos or GIFs of a GLB or glTF from the command line","Render a custom three.js scene module headlessly in Node.js","Inspect or benchmark 3D assets without a browser"],"notFor":["Browser compositions with DOM, CSS or captions (use HyperFrames or Remotion)","Scenes that rely on WebGLRenderer-only features such as GLSL ShaderMaterial (it renders with three/webgpu)"],"publisher":{"name":"Or Fleisher","handle":"juniorxsound","kind":"community","url":"https://github.com/juniorxsound","avatar":"https://github.com/juniorxsound.png","verified":false},"source":{"url":"https://github.com/juniorxsound/headless-three-webgpu/tree/main/packages/cli/agent/skills/rgl-cli","repo":"juniorxsound/headless-three-webgpu","path":"packages/cli/agent/skills/rgl-cli","license":"Apache-2.0"},"install":{"claude-code":"npm install -D @rendergl/headless-three-webgpu-cli"},"agents":["claude-code","codex"],"requires":["Node.js 24+","ffmpeg on PATH (or RGL_FFMPEG_PATH) for video output","A GPU through Dawn (Metal or Vulkan), or SwiftShader on CPU-only hosts"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md"],"stats":{"stars":8,"source":"GitHub","asOf":"2026-10-26"},"version":"0.2.0","updatedAt":"2026-06-09","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":110,"text":"rgl video model.glb --fps 30"},"legal":"scanned: manual review 2026-10-26 — the skill folder is one SKILL.md. Read the three published package.json files: no lifecycle hooks, and the workspace `prepare: lefthook install` runs only in a repo checkout. Also read the CLI's video and encoder code: frames go to a local ffmpeg through spawn, with no network calls. Installing pulls native dependencies (`sharp` and Dawn's `webgpu` package) that were not reviewed. The repo keeps a SwiftShader .tar.gz under ext/, outside the skill and the npm packages. The skill is delivered in node_modules/@rendergl/headless-three-webgpu-cli/agent/; the README says to point your coding agent at agent/AGENTS.md. Apache-2.0.","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/7d9ff8574398/rendergl-headless-three.mp4","w":720,"h":360,"duration":2.5,"blur":"data:image/webp;base64,UklGRuAAAABXRUJQVlA4INQAAAAQBACdASogABAAAsBMJZwDImyweAGkCmY+It7MYGRHuSP0hRufVgnjwAD+mtcZJ9jmdr7JKt32bz77X+JSjX7GpO/6H0NpMTy5TOcNs9sKpPlbEUuOFt/G8blFo0BjiLfzPpbmZGScDUDmbLUtCYFMusClM9t+iAyaqpyjytvTr6/Ndgbddd84Sw0ba4TN/7rtWlKXOOe1Rj+qifBDWy8feGtp8v2HbFfPaXcQpflYkQbjgbBJjadseZ9da3W5INR9W3wcHeHggdeyD2Z0nDE5iEAAAA==","source":"https://i.imgur.com/UlEpFJy.gif","page":"https://github.com/juniorxsound/headless-three-webgpu#readme","credit":"Or Fleisher (headless-three-webgpu)","rights":"publisher-repo","note":"README cover GIF: a wall of GLB objects rendered headlessly with three.js on WebGPU/Dawn, lighting sweeping across the grid. Full 2.5 s loop (hosted on imgur, embedded in the README).","bytes":239376,"addedAt":"2026-10-27"}},{"id":"lhlGitHub/threejs-architecture-effects","slug":"threejs-architecture-effects","name":"Three.js Architecture Effects","skillName":"threejs-architecture-effects","type":"skill","status":"beta","stream":"community","category":"3d-scenes","tags":["code-to-video","threejs","3d","procedural","architecture","art-direction"],"summary":"Self-assembling 3D buildings in three.js: bricks, timber, eaves and PBR, driven by one seekable progress value.","description":"Builds orbitable three.js construction animations, mainly Chinese pavilions, pagodas and clock towers that assemble brick by brick. The order runs from foundations and timber frame to layered eaves, tiles and ornament, with procedural PBR materials and close-up detail cameras. One normalized progress value, shared by the color and depth shaders, drives the whole build, so seeking backward, pausing and replaying stay deterministic. That makes it easy to drive from a video timeline. `scripts/scaffold.mjs` copies a Vite + React + three r185 starter (a clock-tower reference) into a new folder without installing anything. It is beta because the repo was published in one day (2026-09-22, three commits). The starter is interactive (orbit, scrub bar), throttles shadow updates on wall-clock time and skips frames while the page is hidden, so a capture loop should set `progress` and force a render on every frame.","useWhen":["Brick-by-brick or storey-by-storey building growth animation","Chinese pavilions, pagodas or clock towers assembled in 3D","Architectural miniatures with orbit and detail cameras"],"notFor":["Flat image reveals or generic website styling"],"publisher":{"name":"Hailey","handle":"lhlGitHub","kind":"community","url":"https://github.com/lhlGitHub","avatar":"https://github.com/lhlGitHub.png","verified":false},"source":{"url":"https://github.com/lhlGitHub/threejs-architecture-effects","repo":"lhlGitHub/threejs-architecture-effects","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/lhlgithub/threejs-architecture-effects --skill threejs-architecture-effects","cursor":"git clone https://github.com/lhlGitHub/threejs-architecture-effects.git && cp -R threejs-architecture-effects ~/.cursor/skills/"},"agents":["claude-code","codex","cursor"],"requires":["Node.js 22.13+ and npm","A WebGL2 browser"],"cost":{"note":"Free — open-source starter, runs locally"},"files":["SKILL.md","references/construction-principles.md","references/template-guide.md","references/verification.md","scripts/scaffold.mjs","assets/starter/src/PagodaThreeScene.tsx","assets/starter/src/heritage/builder.ts","agents/openai.yaml"],"stats":{"stars":631,"installs":6,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"version":"1.0.0","updatedAt":"2026-09-22","addedAt":"2026-10-26","preview":{"kind":"voxel","hue":342,"text":"brick by brick"},"legal":"scanned: manual review 2026-10-26 — read scripts/scaffold.mjs, which copies assets/starter, refuses to overwrite and installs nothing. Also read the starter package.json (no lifecycle hooks; pins three 0.185.1, React 19 and Vite 8) and its source: no network calls or eval. skills.sh audits: Pass/Pass/Pass. assets/ holds a 24 MB preview.mp4 plus a GIF and a PNG for the README, so a full copy is heavy. The skill defaults to procedural geometry and asks for recorded licenses on any external assets. MIT (Copyright 2026 Hailey).","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/842cc4af5987/threejs-architecture-effects.mp4","w":720,"h":416,"duration":10,"blur":"data:image/webp;base64,UklGRmYAAABXRUJQVlA4IFoAAADQAwCdASogABIAPslWn0unpKKhsAwA8BkJZwDKACHe1Hkpcsc8IAAA/vN3e8h7VLP44bKcICMX65XjC5tOnbApOxephvUrPk7iMVSEYFt9Wam2icKJaNlMAAA=","source":"https://raw.githubusercontent.com/lhlGitHub/threejs-architecture-effects/main/assets/preview.mp4","page":"https://github.com/lhlGitHub/threejs-architecture-effects#readme","credit":"Hailey (lhlGitHub, threejs-architecture-effects)","rights":"publisher-repo","note":"The README preview video: a Chinese drum tower assembles itself in three.js, from empty lot to timber frame, red walls and tiered green roofs, driven by one progress value. Cut 1.5-11.5 s of 19.6 s.","bytes":154817,"addedAt":"2026-10-27"}},{"id":"iart-ai/kinetic-typography","slug":"iart-kinetic-typography","name":"Kinetic Typography","skillName":"kinetic-typography","type":"skill","status":"live","stream":"community","category":"kinetic-type","tags":["code-to-video","typography","split-text","variable-fonts","gsap","remotion"],"summary":"Kinetic type for web and video: line, word or char splits, mask and blur reveals, variable-font motion, frozen-frame QA.","description":"Animates text for web and video: pick line, word or character granularity, then apply mask, blur, clip-path or stagger reveals with concrete easing and stagger timings, animate variable-font axes through `font-variation-settings`, or run SVG text along a path, with recipes for CSS, GSAP SplitText, Framer Motion and Remotion. For HTML deliverables it requires splitting only after `document.fonts.ready`, a `?t=N` freeze harness for deterministic screenshots, and a start/mid/end check for clipped glyphs, FOUC and wrong line breaks. The verify helpers (Playwright screenshots, an ffmpeg contact sheet, an ffprobe spec check) live in the repo-root `scripts/`, so they arrive with the Claude Code plugin install but not with a skills-CLI install that copies only the skill folder. Per-character splitting breaks Arabic-script joining; use Persian Motion Director for RTL text.","useWhen":["Animate a headline or an animated title card","Split-text reveal or stagger by character, word or line","Lyric or caption video with animated words","Animate a variable font's weight or put text on a path"],"notFor":["Arabic-script or RTL text: per-letter boxes break joining (use persian-motion-director)","Transcript-driven subtitle tracks (use remotion-captions or a captions skill)","Choosing or licensing fonts (use adobe-fonts or chinese-font-selector)"],"publisher":{"name":"iart.ai","handle":"iart-ai","kind":"community","url":"https://github.com/iart-ai","avatar":"https://github.com/iart-ai.png","verified":false},"source":{"url":"https://github.com/iart-ai/kinetic-typography-skills/tree/main/skills/kinetic-typography","repo":"iart-ai/kinetic-typography-skills","path":"skills/kinetic-typography","license":"MIT"},"install":{"claude-code":"/plugin marketplace add iart-ai/kinetic-typography-skills\n/plugin install kinetic-typography-skills","codex":"npx skills add iart-ai/kinetic-typography-skills","cursor":"npx skills add iart-ai/kinetic-typography-skills"},"agents":["claude-code","cursor","codex"],"requires":["A Chromium browser for the standalone-HTML tier, or Node.js with Remotion for video","Optional helpers: Playwright via npx, ffmpeg and ffprobe"],"cost":{"note":"Free — open-source, renders locally"},"files":["SKILL.md","references/reveal-recipes.md"],"stats":{"stars":16,"installs":2313,"source":"skills.sh","asOf":"2026-10-26"},"version":"0.1.0","updatedAt":"2026-06-22","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":75,"text":"Designed for motion"},"legal":"scanned: manual review 2026-10-26 — the skill folder holds SKILL.md and one reference file; the repo-root scripts (seek-shot.sh, contact-sheet.sh, probe-mp4.sh) only run ffmpeg/ffprobe and `npx -y playwright screenshot` on local files, no other hosts, no install hooks. skills.sh audits: Gen Agent Trust Hub, Socket and Snyk all Pass. README and the skill footer link to iart.ai (the publisher's commercial motion agent) with UTM tags; the skill itself calls no iart.ai service. iart-ai/motion-skills was held as a README-only index; this is one of its sibling repos, triaged on its own. MIT.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/219258f3ad0d/iart-kinetic-typography.mp4","w":720,"h":404,"duration":6.7,"blur":"data:image/webp;base64,UklGRoAAAABXRUJQVlA4IHQAAACwBACdASogABIAPtFWo0uoJKMhsAgBABoJYwC7ACHiAFoLK9ZuIejMtUz7vrHIAP7qklLbdfy6Y7msHBj+DNZ9Ew+QzhtgDzcCBpkU3gANZXpzEQeXc9sNusdRCK5m7CpPbeLOOrd0vUqKcvbzRNUS+kAAAA==","source":"https://raw.githubusercontent.com/iart-ai/kinetic-typography-skills/main/showcase.gif","page":"https://github.com/iart-ai/kinetic-typography-skills#readme","credit":"iart.ai (kinetic-typography-skills)","rights":"publisher-repo","note":"README showcase GIF: 'Words that move', 'Fast', 'Make it feel alive', 'Rise / Fall / Repeat' set as kinetic type (splits, mask and blur reveals, weight changes). First 6.6 s, before the iart.ai end card.","bytes":81123,"addedAt":"2026-10-27"}},{"id":"calesthio/title-kinetic-typography","slug":"calesthio-title-kinetic-typography","name":"Title & Kinetic Typography Direction","skillName":"title-kinetic-typography","type":"skill","status":"live","stream":"community","category":"kinetic-type","tags":["code-to-video","kinetic-type","typography","titles","safe-zones","accessibility","captions"],"summary":"Typography direction for video: text jobs, hierarchy, reveal-hold-exit timing, safe zones, contrast, font licensing.","description":"A provider-independent playbook for text that has to read in motion: classify each element's job (main title, lower third, caption-as-design, lyric, social hook, legal super), build hierarchy, treat line breaks as editorial (including RTL, CJK and complex-script shaping), and time every beat as reveal, hold and exit. It covers platform safe zones (TikTok, Google Ads, Meta, Shorts; dated by the author), WCAG flash limits, backing plates over moving footage, phone-size review, approved typefaces and fallbacks, and the failure mode of brand fonts that are substituted silently or unlicensed, then ends with an implementation handoff spec and worked examples. It produces direction and specs, not code: pair it with Kinetic Typography, GSAP Plugins or a Remotion skill to build the result.","useWhen":["Plan titles, lower thirds or captions-as-design for a video","Set reveal, hold and exit timing and line breaks for animated text","Check safe areas, contrast and flashing before delivery","Write a typography spec to hand to an implementer"],"notFor":["Writing the animation code itself (pair with kinetic-typography or gsap-plugins)","Asking image or video models to draw exact letterforms; the skill says to prefer rendered text layers"],"publisher":{"name":"Calesthio","handle":"calesthio","kind":"community","url":"https://github.com/calesthio","avatar":"https://github.com/calesthio.png","verified":false},"source":{"url":"https://github.com/calesthio/generative-media-skills/tree/main/skills/production/post-production/title-kinetic-typography","repo":"calesthio/generative-media-skills","path":"skills/production/post-production/title-kinetic-typography","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/calesthio/generative-media-skills --skill title-kinetic-typography","codex":"npx skills add https://github.com/calesthio/generative-media-skills --skill title-kinetic-typography","cursor":"npx skills add https://github.com/calesthio/generative-media-skills --skill title-kinetic-typography"},"agents":["claude-code","codex","cursor","openclaw"],"cost":{"note":"Free — guidance only, no paid calls"},"files":["SKILL.md","EVAL.md"],"stats":{"stars":216,"installs":174,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-07-11","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":112,"text":"reveal · hold · exit"},"legal":"scanned: manual review 2026-10-26 — text-only skill (SKILL.md plus a repository-only EVAL.md answer key), no scripts, no hosts beyond cited documentation links. skills.sh audits: Gen Agent Trust Hub, Socket and Snyk all Pass. MIT. Same author as the listed OpenMontage entry. Platform safe-zone facts are marked verified 2026-07-10 by the author; re-check them before ad delivery. A republished copy exists at kiwibapl/generative-media-skills; list only this original.","adds":"visual","media":{"type":"none","reason":"Typography-direction guidance (hierarchy, timing, safe zones, licensing); the repo has no media and no title sequence made with this skill is published","searched":["github.com/calesthio/generative-media-skills README and full tree (no media files)","skills/production/post-production/title-kinetic-typography folder","X search from @calesthioailabs (no posts about this skill)"],"addedAt":"2026-10-27"}},{"id":"atmirrr/persian-motion-director","slug":"persian-motion-director","name":"Persian Motion Director","skillName":"persian-motion-director","type":"skill","status":"beta","stream":"community","category":"kinetic-type","tags":["code-to-video","rtl","persian","remotion","harfbuzz","fonts"],"summary":"Persian/RTL kinetic type done right: HarfBuzz-shaped letters, kashida, unbroken joins, font loaded before render.","description":"Directs motion design with correct Persian/Farsi and right-to-left typography in Remotion or plain web code. Its rules ban per-letter boxes and per-letter fades for joined script, pad masks for Persian ascenders and dots, set `dir`, `lang` and `<bdi>` correctly, replace letter-spacing with kashida, and load the font with `FontFace` + `delayRender` so Chrome never falls back silently. Tooling covers HarfBuzz shaping to SVG outlines split into letter bodies, dots and connected groups, a zero-width-joiner splitter for per-letter animation, and a linter for Persian copy and layout code; eight technique sketches (one camera, beat cuts, line boil, dots-last, kashida) run in a browser or through Remotion. It ships Vazirmatn (OFL) with its license text. The repo is three weeks old with a single-day commit history, so it is listed as beta.","useWhen":["Motion graphics or kinetic type that contains Persian, Farsi, Arabic-script or RTL text","Persian looks broken, disconnected or clipped in a render","Per-letter or per-dot animation of Persian words","A motion piece looks like a slideshow or 'AI-made'"],"notFor":["Latin-only kinetic type (use kinetic-typography)","Per-letter Nastaliq animation: the joiner split loses its cascade, animate by word or line"],"publisher":{"name":"atmirrr","handle":"atmirrr","kind":"community","url":"https://github.com/atmirrr","avatar":"https://github.com/atmirrr.png","verified":false},"source":{"url":"https://github.com/atmirrr/persian-motion-director","repo":"atmirrr/persian-motion-director","license":"MIT"},"install":{"claude-code":"git clone https://github.com/atmirrr/persian-motion-director ~/.claude/skills/persian-motion-director"},"agents":["claude-code"],"requires":["Node.js with Remotion 4.0.530 (pinned in assets/remotion/package.json)","Python 3 with uharfbuzz and fonttools for shape_persian.py","A native Persian reader to sign off on copy"],"cost":{"note":"Free — renders locally (Remotion needs a company license for for-profit teams above 3 employees)"},"refs":[{"role":"font","label":"Vazirmatn (bundled variable font)","kind":"font","url":"https://github.com/rastikerdar/vazirmatn","license":"OFL-1.1","note":"Shipped with OFL.txt in assets/sketches/fonts and assets/remotion/public/fonts"}],"files":["SKILL.md","references/persian-typography.md","references/anti-slideshow.md","scripts/shape_persian.py","scripts/split_fa.js","scripts/lint_persian.py","assets/remotion/src/fonts.ts","assets/sketches/sketches.js"],"stats":{"stars":147,"installs":5,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-06","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":132,"text":"Cut on the beat"},"legal":"scanned: manual review 2026-10-26 — local scripts only: shape_persian.py (uharfbuzz + fontTools), lint_persian.py (standard library), split_fa.js, Remotion render scripts with pinned 4.0.530 dependencies and no npm lifecycle hooks; no network calls, no eval, no credential access. skills.sh audits: Gen Agent Trust Hub, Socket and Snyk all Pass. Bundles Vazirmatn under SIL OFL 1.1 with its OFL.txt next to both font copies, which meets the OFL-with-license-text rule. The bundled MP3s are the author's own track generated by compose_shur_pulse.py. Code MIT. Remotion is free for individuals, non-profits and for-profits with up to 3 employees; larger companies need a Remotion company license. Beta because the whole history is three commits on 2026-10-06.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/96a5f001fd8d/persian-motion-director.mp4","w":720,"h":404,"duration":7,"blur":"data:image/webp;base64,UklGRmgAAABXRUJQVlA4IFwAAADwAwCdASogABIAPtFYpEuoJSOhsAgBABoJYwAAW+s7/85vtbVWdHsAAP7zaTVkh1x304mAWDGQECL13akv7VWsdkHMWGylnpedS8b5KI7a86RGCdLcAci3MCAAAA==","source":"https://raw.githubusercontent.com/atmirrr/persian-motion-director/main/media/01-oner.gif","page":"https://github.com/atmirrr/persian-motion-director#readme","credit":"atmirrr (persian-motion-director)","rights":"publisher-repo","note":"README technique 01 'One camera, no cuts': a Persian (RTL) product promo with correctly shaped Farsi type, scenes on one strip moving right to left with whip pans and parallax. Full 7 s loop, converted from GIF.","bytes":71676,"addedAt":"2026-10-27"}},{"id":"yaniv-golan/pretext","slug":"pretext-yaniv-golan","name":"Pretext Text Metrics","skillName":"pretext","type":"skill","status":"beta","stream":"community","category":"captions","tags":["code-to-video","typography","text-metrics","text-fitting","canvas"],"summary":"Measure and fit text without the DOM using pretext: auto-fit sizes, know line breaks before render, canvas/WebGL text.","description":"Teaches agents to use @chenglou/pretext, a small library that measures and lays out text with canvas math instead of DOM reflow. It covers the core and rich-inline APIs and the bugs that bite: lineHeight in pixels rather than a multiplier, text-then-font argument order, measuring only after web fonts load, unreliable `system-ui`, letterSpacing in pixels, and measuring the exact string that will be rendered. Patterns include auto-fitting a font size to a box, height estimation, text flowing around obstacles and shrink-wrapped bubbles, which is what titles drawn in canvas or WebGL compositions need. It tracks pretext 0.0.8, while npm's latest is 1.0.0 (2026-10-14), so check for API drift.","useWhen":["Auto-fit a font size so a title fits a box or N lines","Know line count and height before rendering text","Flow text around shapes or across variable-width lines","Measure text for canvas, SVG or WebGL rendering"],"notFor":["CSS-only text layout or generic typography advice (the skill's own exclusion)","Structured HTML content: pretext measures plain text strings"],"publisher":{"name":"Yaniv Golan","handle":"yaniv-golan","kind":"community","url":"https://github.com/yaniv-golan","avatar":"https://github.com/yaniv-golan.png","verified":false},"source":{"url":"https://github.com/yaniv-golan/pretext-skill/tree/main/pretext/skills/pretext","repo":"yaniv-golan/pretext-skill","path":"pretext/skills/pretext","license":"MIT"},"install":{"claude-code":"/plugin marketplace add yaniv-golan/pretext-skill\n/plugin install pretext@pretext-marketplace","codex":"$skill-installer https://github.com/yaniv-golan/pretext-skill","cursor":"npx skills add yaniv-golan/pretext-skill"},"agents":["claude-code","claude-ai","codex","cursor","chatgpt"],"requires":["@chenglou/pretext from npm","A browser or OffscreenCanvas with Intl.Segmenter (in Node, node-canvas works but accuracy is not guaranteed)"],"cost":{"note":"Free — open-source, runs locally"},"files":["SKILL.md","references/api.md","references/patterns.md","VERSION"],"stats":{"stars":15,"installs":19,"source":"skills.sh","asOf":"2026-10-26"},"version":"0.2.2","updatedAt":"2026-07-14","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":272,"text":"layout(prepared, 400, 24)"},"legal":"scanned: manual review 2026-10-26 — the skill folder is Markdown only (SKILL.md, references/api.md, references/patterns.md, VERSION); outside it are plugin manifests, a local version-bump script and a release workflow that zips the skill folder; no network calls or hooks. skills.sh audits: Gen Agent Trust Hub, Socket and Snyk all Pass. MIT. Beta: 15 stars and 19 installs, and it documents pretext 0.0.8 while 1.0.0 is current.","adds":"tool","media":{"type":"none","reason":"API-reference skill for @chenglou/pretext; the repo's only image is an AI-generated banner with garbled text (assets/banner.png), and the creator's posts link the repo without any demo; Pretext's own demo videos are by the library author, not this skill","searched":["github.com/yaniv-golan/pretext-skill README and full tree (banner only)","X @yanivg posts 2039614924297506977 and 2039614318228992150 (links only)"],"addedAt":"2026-10-27"}},{"id":"Songzhi-lab/chinese-font-selector","slug":"chinese-font-selector","name":"Chinese Font Selector","skillName":"chinese-font-selector","type":"skill","status":"beta","stream":"community","category":"captions","tags":["fonts","font-licensing","cjk","chinese","typography"],"summary":"Pick Chinese fonts by license tier first (OFL, vendor-free, avoid), then by scene and mood, with Latin pairings.","description":"Chooses Chinese fonts with licensing first: T0 open-source OFL faces (Source Han Sans and Serif, Smiley Sans, LXGW WenKai and others), T1 faces their vendors declare free for commercial use (Alibaba PuHuiTi, MiSans, HarmonyOS Sans, ZCOOL and others), and T2 fonts to avoid (GPL WenQuanYi, Hanyi, and system fonts such as Microsoft YaHei or PingFang that may not be extracted for embedding). A scene-by-mood matrix covers social cards, brochures, web and UI, book interiors and posters, alongside Chinese–Latin pairing, type-scale and punctuation rules, and every recommendation must state its license and download source. The skill is written in Chinese and aimed at static design; for video it is a font-picking aid, not a renderer.","useWhen":["Choose Chinese fonts that are free for commercial use","Pair Chinese and Latin fonts for mixed typesetting","Typography for Xiaohongshu cards, posters, brochures or web UI"],"notFor":["Fonts whose license cannot be found (the skill treats them as unusable)","Rendering or animating the text (pair with a video or kinetic-type skill)"],"publisher":{"name":"Songzhi-lab","handle":"Songzhi-lab","kind":"community","url":"https://github.com/Songzhi-lab","avatar":"https://github.com/Songzhi-lab.png","verified":false},"source":{"url":"https://github.com/Songzhi-lab/chinese-font-selector/tree/main/chinese-font-selector","repo":"Songzhi-lab/chinese-font-selector","path":"chinese-font-selector","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/songzhi-lab/chinese-font-selector --skill chinese-font-selector","codex":"npx skills add https://github.com/songzhi-lab/chinese-font-selector --skill chinese-font-selector","cursor":"npx skills add https://github.com/songzhi-lab/chinese-font-selector --skill chinese-font-selector"},"agents":["claude-code","cursor","codex"],"cost":{"note":"Free — guidance only"},"files":["SKILL.md","references/fonts-database.md","references/pairing-rules.md"],"stats":{"stars":81,"installs":11,"source":"skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-17","addedAt":"2026-10-26","preview":{"kind":"notes","hue":340,"text":"Source Han Sans · OFL"},"legal":"scanned: manual review 2026-10-26 — SKILL.md plus two Markdown references, no scripts, no hosts. skills.sh audits: Gen Agent Trust Hub, Socket and Snyk all Pass. MIT. The README's own install line is a placeholder, so the command comes from skills.sh. T1 'vendor free-commercial' fonts can have their terms changed or withdrawn (the skill warns about this); re-check each vendor's license page before commercial use. Beta: the publisher account dates from 2026-07-25 and the repo's history is three commits over two days in August 2026.","adds":"tool","media":{"type":"none","reason":"Knowledge skill whose output is a font recommendation (license tier, scene, pairing); the repo has 7 text files and no media, and no specimen or example layout is published","searched":["github.com/Songzhi-lab/chinese-font-selector README and full tree (no media files)","GitHub profile Songzhi-lab (no site or X handle)","X search 'chinese-font-selector'"],"addedAt":"2026-10-27"}},{"id":"audrey-560/cinematic-caption","slug":"cinematic-caption-audrey","name":"Cinematic Caption","skillName":"cinematic-caption","type":"skill","status":"beta","stream":"community","category":"captions","tags":["code-to-video","hyperframes","kinetic-type","talking-head","subtitles"],"summary":"Designed editorial captions for HyperFrames: scored hero words, subject-aware depth, glass type — not a subtitle strip.","description":"Turns a transcript (SRT/VTT or word-level JSON) into designed caption moments inside an existing HyperFrames composition: it scores hero words by meaning and proof value, builds ordered mixed-case stacks, anchors type around the speaker and only layers words behind a person when a real matte exists. It writes `cinematic-caption-plan.json` first, then a namespaced overlay track or caption sub-composition on one seek-safe timeline, and verifies with `hyperframes check`, cue snapshots and a chronological contact sheet before render. Instructions only (no scripts); it leans on the HyperFrames skills and CLI for transcription, linting and preview. Young repo: three commits over two days in August 2026.","useWhen":["Cinematic or editorial captions on a HyperFrames video","Make key words, numbers or locations large and animated around a speaker","Creator-reel or real-estate captions without a fixed subtitle band"],"notFor":["A plain fixed subtitle strip or bottom-center karaoke pills (the skill avoids them)","Remotion projects (use remotion-dev/remotion-captions)"],"publisher":{"name":"Audrey","handle":"audrey-560","kind":"community","url":"https://github.com/audrey-560","avatar":"https://github.com/audrey-560.png","verified":false},"source":{"url":"https://github.com/audrey-560/hyperframes-cinematic-caption","repo":"audrey-560/hyperframes-cinematic-caption","license":"MIT"},"install":{"claude-code":"git clone https://github.com/audrey-560/hyperframes-cinematic-caption.git ~/.claude/skills/cinematic-caption","codex":"git clone https://github.com/audrey-560/hyperframes-cinematic-caption.git ~/.agents/skills/cinematic-caption"},"agents":["claude-code","codex"],"requires":["A HyperFrames project and the HyperFrames skills (heygen-com/hyperframes)","Node.js for the HyperFrames CLI","A subject matte or cutout for behind-the-speaker words (optional)"],"cost":{"note":"Free — instructions only; renders locally with HyperFrames"},"files":["SKILL.md","references/style-system.md","references/dynamic-layout-recipes.md","agents/openai.yaml"],"stats":{"stars":63,"installs":17,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-08-25","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":290,"text":"Downtown"},"legal":"scanned: manual review 2026-10-26 — SKILL.md, two reference files and agents/openai.yaml only: no scripts, hooks or URLs. Publisher account created 2026-05. skills.sh shows Gen and Socket Pass, Snyk Warn with no finding text. Fonts must be licensed and bundled locally; the skill forbids copying another creator's identity. Beta: the repo history spans two days (2026-08-24 to 08-25) from an account created in 2026-05.","adds":"visual","media":{"type":"none","reason":"The repo is four text files (README, SKILL.md, two references) with no media, and no captioned video made with the skill is published by its author","searched":["github.com/audrey-560/hyperframes-cinematic-caption README and full tree (no media files)","GitHub profile audrey-560 (no site or X handle)","X search 'cinematic-caption' / 'cinematic caption hyperframes' (unrelated posts only)"],"addedAt":"2026-10-27"}},{"id":"iart-ai/caption-animation","slug":"iart-caption-animation","name":"Caption Animation","skillName":"caption-animation","type":"skill","status":"live","stream":"community","category":"captions","tags":["code-to-video","remotion","karaoke","tiktok","subtitles","whisper"],"summary":"Word-timed TikTok captions in Remotion or CSS: per-word pop, active-word highlight, 9:16 safe areas, sidecar SRT/VTT.","description":"A how-to skill for word-by-word captions on vertical video. It normalizes Whisper output (`@remotion/install-whisper-cpp` with token-level timestamps, or a cloud STT) or an existing SRT into `{text, startMs, endMs}` tokens, pages them 1–4 words at a time with `createTikTokStyleCaptions()`, and animates a spring pop plus an active-word highlight in Remotion, with a plain CSS variant for web players. The reference adds an SRT parser, an SRT/VTT emitter, per-platform safe-area numbers and a stills-first verify loop, and it refuses to fake word timing by splitting lines evenly. It builds on Remotion's own caption packages, so it overlaps remotion-dev/remotion-captions; the files end with promotional links to the publisher's hosted iart.ai agent.","useWhen":["Add animated TikTok or karaoke captions","Turn an SRT or Whisper transcript into word-by-word animated text","Sync captions to a voiceover and burn them in","Ship burned-in captions plus an accessible SRT/VTT"],"notFor":["Interpolating word times from sentence-level cues (it re-transcribes instead)","HyperFrames compositions (use heygen-com/hyperframes or cinematic-caption)"],"publisher":{"name":"iart.ai","handle":"iart-ai","kind":"community","url":"https://iart.ai","avatar":"https://github.com/iart-ai.png","verified":false},"source":{"url":"https://github.com/iart-ai/tiktok-video-skills/tree/main/skills/caption-animation","repo":"iart-ai/tiktok-video-skills","path":"skills/caption-animation","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/iart-ai/tiktok-video-skills --skill caption-animation","codex":"npx skills add https://github.com/iart-ai/tiktok-video-skills --skill caption-animation","cursor":"npx skills add https://github.com/iart-ai/tiktok-video-skills --skill caption-animation"},"agents":["claude-code","cursor","codex"],"models":["whisper"],"requires":["Node.js and Remotion (company license for for-profit teams above 3 employees)","whisper.cpp via @remotion/install-whisper-cpp, or your own cloud STT key","ffmpeg/ffprobe for the verify scripts"],"cost":{"note":"Free — renders locally with Remotion; a cloud STT, if chosen, bills your own key"},"files":["SKILL.md","README.md","references/word-timed-captions.md"],"stats":{"stars":17,"installs":1994,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-06-22","addedAt":"2026-10-26","preview":{"kind":"karaoke","hue":75,"text":"every word lands"},"legal":"scanned: manual review 2026-10-26 — Markdown plus three repo-level helper scripts (ffmpeg contact sheet, ffprobe spec check, `npx -y playwright screenshot` for seek stills); no hooks or remote fetches. skills.sh audits: all Pass. Remotion and @remotion/install-whisper-cpp are under the Remotion License (company license above 3 employees); @remotion/captions itself is MIT. Skill files end with UTM marketing links to iart.ai.","adds":"visual","media":{"type":"none","reason":"The only media is the pack-level teaser GIF for all tiktok-video-skills (showcase.gif: a 1.5 s 'WAIT FOR IT' word pop, then countdown, heart and logo), which does not show word-timed captions on footage; no caption-specific demo is published","searched":["github.com/iart-ai/tiktok-video-skills README, skills/caption-animation/README.md and full tree (showcase.gif only)","www.iart.ai (no caption-animation page","/caption-animation 404)"],"addedAt":"2026-10-27"}},{"id":"ahkamboh/agent-caption","slug":"agent-caption","name":"Agent Caption","type":"skill","status":"beta","stream":"community","category":"captions","tags":["code-to-video","forced-alignment","whisperx","subtitles","karaoke","translation"],"summary":"Local captions in any language: Whisper words, forced-aligned timing, SRT/VTT, burned styles or a GSAP captions.js.","description":"A Python toolkit an agent drives from SKILL.md: Whisper large-v3 (faster-whisper) writes the words, WhisperX or Meta's MMS_FA aligner times every word on the waveform, and `caption.py` burns one of 15 styles with ffmpeg (falling back to Pillow overlays when ffmpeg lacks libass) or just writes `.srt`/`.vtt`. `scripts/caption.py` emits a `captions.js` layer (word, line or karaoke presets such as hormozi, pill, neon) that mounts on a GSAP timeline in an HTML composition, and Argos Translate makes offline translated subtitle tracks. Extras include `--script` alignment of known lyrics, Demucs vocal isolation for songs, a glossary prompt and a deterministic QA report. Setup is heavy (torch, WhisperX and about 4 GB of models) and Hinglish/code-switched speech is its focus.","useWhen":["Caption a video or song in any language, fully offline","Word timing from forced alignment instead of raw ASR timestamps","Hinglish or code-switched captions","Animated word or karaoke captions for an HTML/GSAP composition","Export SRT/VTT and translated subtitle tracks"],"notFor":["Hand-timed captions or lead/lag offsets (the skill forbids them)","Cloud transcription (use elevenlabs/speech-to-text or Gladia)"],"publisher":{"name":"Ali Hamza Kamboh","handle":"ahkamboh","kind":"community","url":"https://github.com/ahkamboh","avatar":"https://github.com/ahkamboh.png","verified":false},"source":{"url":"https://github.com/ahkamboh/agent-caption","repo":"ahkamboh/agent-caption","license":"MIT"},"install":{"claude-code":"git clone https://github.com/ahkamboh/agent-caption && cd agent-caption && python setup.py","codex":"git clone https://github.com/ahkamboh/agent-caption && cd agent-caption && python setup.py","cursor":"git clone https://github.com/ahkamboh/agent-caption && cd agent-caption && python setup.py"},"agents":["claude-code","cursor","codex"],"models":["whisper-large-v3","whisperx","mms-fa","htdemucs"],"requires":["Python 3.10+","ffmpeg (libass optional)","About 4 GB of disk for models","Java 8+ only for --grammar"],"cost":{"note":"Free — runs locally; models download once"},"files":["SKILL.md","caption.py","setup.py","requirements.txt","scripts/align.py","scripts/mms_align.py","scripts/caption.py","scripts/multilang-subs.py"],"stats":{"stars":41,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-06-29","addedAt":"2026-10-26","preview":{"kind":"karaoke","hue":340,"text":"timed to the waveform"},"legal":"scanned: manual review 2026-10-26 — reviewed setup.py/.sh/.bat, caption.py and all 14 scripts (imports, subprocess calls, file writes, no obfuscation): local ffmpeg, ffprobe and Python only; no hooks, telemetry or uploads. setup.py pip-installs unpinned packages (torch, whisperx, demucs, argostranslate…) into ./.venv-whisperx; models download on first use from Hugging Face, OpenAI, PyTorch/Meta (dl.fbaipublicfiles.com) and the Argos package index. Meta's MMS_FA aligner weights (used for Punjabi/Urdu, the code-switch path and --aligner mms) are CC-BY-NC 4.0, non-commercial. SKILL.md tells chat agents to fetch its raw copy from the repo; pin a commit if you depend on it.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/8298d7a02531/agent-caption.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRsoAAABXRUJQVlA4IL4AAACwBQCdASogABIAPtFUokuoJKMhsAgBABoJYwCw7ywTlgsgTbIZqFZURbi32IriZ0w/qa0SRkAA/ufVSsFN8HIUm7BLtGxbbfgCWCl/KD/W8+l1vLlZswnzs8bB1HEYYOLmtSuNSimsg8yUDKTMsZ9sOhis+/76TAPoHQg/YvsdhXyei5l2ObURZMhKVmbLJKmxbEvn79uWQ29gQ6UXuVy5+39uO80mgoUfONCu5uWQuBmoWFF4cOJDlRWXWgAA","source":"https://raw.githubusercontent.com/ahkamboh/agent-caption/master/assets/demo.mp4","page":"https://github.com/ahkamboh/agent-caption#readme","credit":"Ali Hamza Kamboh (agent-caption)","rights":"publisher-repo","note":"The repo's demo video: the creator talks to camera while captions generated locally by the skill switch language line by line (English, then Spanish), with the language tag on top. First 8 s of 58.5 s.","bytes":126710,"addedAt":"2026-10-27"}},{"id":"swyxio/transcribe-anything","slug":"swyx-transcribe-anything","name":"Transcribe Anything","skillName":"transcribe-anything","type":"skill","status":"live","stream":"community","category":"captions","tags":["code-to-video","whisper","whisperx","word-timestamps","srt","diarization"],"summary":"Transcribe hours of audio or video with whisper, whisperX or cloud STT: word timestamps, speaker labels, SRT/VTT.","description":"A backend-routing transcription guide from swyx: it prepares media with ffmpeg (audio extraction, silence detection and trimming, chunking under API size limits), then runs local Whisper, MLX Whisper, faster-whisper, whisper.cpp, insanely-fast-whisper or whisperX, or the OpenAI, Groq, Deepgram, AssemblyAI or Gemini APIs. It covers word-level timestamps (`word_timestamps=True`, whisperX alignment), pyannote or NeMo diarization with a QA gate, custom vocabulary and SRT/VTT export, although its default output is a Markdown transcript. Instructions only; the repo README says the collection reflects the author's own setup, and setup lines use `pip3 install --break-system-packages`.","useWhen":["Transcribe a video, audio file or podcast","Word-level timestamps to drive captions","Speaker labels on a long interview","Very long files (1–8+ hours) that need chunking"],"notFor":["Long diarization on a local CPU without explicit opt-in (the skill says not to)","Styling or burning captions (pair with caption-animation or ffmpeg-captions-subtitles)"],"publisher":{"name":"Shawn Wang (swyx)","handle":"swyxio","kind":"community","url":"https://github.com/swyxio","avatar":"https://github.com/swyxio.png","verified":false},"source":{"url":"https://github.com/swyxio/skills/tree/main/transcribe-anything","repo":"swyxio/skills","path":"transcribe-anything","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/swyxio/skills --skill transcribe-anything","codex":"npx skills add https://github.com/swyxio/skills --skill transcribe-anything","cursor":"npx skills add https://github.com/swyxio/skills --skill transcribe-anything"},"agents":["claude-code","codex","cursor"],"models":["whisper","whisperx","faster-whisper","gpt-4o-transcribe"],"requires":["ffmpeg","At least one ASR backend (openai-whisper or MLX Whisper by default)","HF_TOKEN with accepted pyannote terms for diarization (optional)","Provider keys only for cloud backends (OPENAI_API_KEY, GROQ_API_KEY, DEEPGRAM_API_KEY, ASSEMBLYAI_API_KEY, GEMINI_API_KEY)"],"cost":{"note":"Free with local backends; cloud backends bill your own provider keys"},"files":["SKILL.md","README.md"],"stats":{"stars":176,"installs":10,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-06-24","addedAt":"2026-10-26","preview":{"kind":"wave","hue":130,"text":"word timestamps"},"legal":"scanned: manual review 2026-10-26 — instructions only (SKILL.md and README), no scripts or hooks; hosts are the named provider APIs (api.openai.com, api.groq.com, api.deepgram.com, AssemblyAI, Gemini) and Hugging Face. skills.sh shows Gen and Socket Pass, Snyk Warn with no finding text. Setup uses `pip3 install --break-system-packages`; prefer a virtualenv. pyannote diarization models are gated on Hugging Face.","adds":"tool","media":{"type":"none","reason":"Speech-to-text skill whose output is transcript text (SRT/VTT, speaker labels); the skill folder is README + SKILL.md with no media, and no recording or sample of it in use is published","searched":["github.com/swyxio/skills transcribe-anything folder and repo tree (no media for this skill","other skills' images only)","root README (one unrelated image)","X search from @swyx 'transcribe-anything'"],"addedAt":"2026-10-27"}},{"id":"JosiahSiegel/ffmpeg-captions-subtitles","slug":"josiahsiegel-ffmpeg-captions","name":"FFmpeg Captions and Subtitles","skillName":"ffmpeg-captions-subtitles","type":"skill","status":"live","stream":"community","category":"captions","tags":["code-to-video","ffmpeg","libass","srt","subtitles","whisper"],"summary":"FFmpeg subtitle reference: burn SRT/ASS/VTT with libass, soft tracks, conversion, styling and FFmpeg 8's Whisper filter.","description":"A reference skill for subtitle work in FFmpeg 7.1 and 8.0: burning SRT, ASS and VTT with the `subtitles` and `ass` filters, `force_style` styling and alignment, soft `mov_text` tracks, extraction and format conversion, CEA-608/708 closed captions and `drawtext` overlays. It documents FFmpeg 8's `whisper` audio filter for writing SRT straight from audio (needs a build configured with whisper.cpp), and the plugin ships a helper that fetches a ggml model and writes SRT plus VTT. Sibling skills in the same plugin marketplace cover ASS karaoke and kinetic captions (`ffmpeg-karaoke-animated-text`, `ffmpeg-kinetic-captions`). It comes from a large generalist plugin marketplace, and the SKILL.md opens with generic boilerplate rules (Windows paths, no new docs).","useWhen":["Burn SRT, ASS or VTT subtitles into a video","Add a soft subtitle track or extract subtitles","Style captions (font, outline, position) with force_style","Generate subtitles with FFmpeg 8's Whisper filter"],"notFor":["Word-by-word animated captions (use caption-animation or the sibling ffmpeg-kinetic-captions)","General encoding and editing (kajisho5/ffmpeg-skill)"],"publisher":{"name":"Josiah Siegel","handle":"JosiahSiegel","kind":"community","url":"https://github.com/JosiahSiegel","avatar":"https://github.com/JosiahSiegel.png","verified":false},"source":{"url":"https://github.com/JosiahSiegel/claude-plugin-marketplace/tree/main/plugins/ffmpeg-core/skills/ffmpeg-captions-subtitles","repo":"JosiahSiegel/claude-plugin-marketplace","path":"plugins/ffmpeg-core/skills/ffmpeg-captions-subtitles","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill ffmpeg-captions-subtitles"},"agents":["claude-code"],"requires":["ffmpeg built with libass (FFmpeg 8 built with whisper.cpp for the whisper filter)"],"cost":{"note":"Free — runs locally with ffmpeg"},"files":["SKILL.md","references/drawtext-and-whisper.md"],"stats":{"stars":59,"installs":469,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-21","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":65,"text":"-vf subtitles=subs.srt"},"legal":"scanned: manual review 2026-10-26 — Markdown reference; read the plugin's scripts too (generate-whisper-subtitles.sh downloads ggml models from huggingface.co/ggerganov/whisper.cpp; generate-karaoke.sh writes ASS locally and splits each line's time evenly across words). No hooks; skills.sh audits all Pass. FFmpeg builds with libass are LGPL or GPL depending on configuration.","adds":"tool","media":{"type":"none","reason":"FFmpeg subtitle reference (commands and options, no assets); the whole marketplace repo has no media files and no captioned sample is published","searched":["github.com/JosiahSiegel/claude-plugin-marketplace README and full tree (0 media files)","plugins/ffmpeg-core/skills/ffmpeg-captions-subtitles folder","GitHub profile JosiahSiegel (no site or X handle)"],"addedAt":"2026-10-27"}},{"id":"MaKTaiL/subtitle-translator","slug":"gemini-srt-translator","name":"Subtitle Translator","skillName":"subtitle-translator","type":"skill","status":"live","stream":"community","category":"captions","tags":["subtitles","translation","srt","ass","pysubs2"],"summary":"Agent-translated SRT/ASS subtitles in resumable batches that keep cue count, timing and ASS styling tags intact.","description":"The agent does the translating itself: `gst agent start` from the `gemini-srt-translator` Python package parses an `.srt`, an `.ass` or a video's embedded subtitle stream with pysubs2 and hands the agent numbered batches, and `gst agent commit` checks item parity and saves progress, so long files resume cleanly and keep timing, line breaks and ASS override tags. No API key is needed in this agent mode; the same package can also translate on its own with a Gemini key. Text only: no transcription or burn-in, and quality depends on the agent's model and batch size.","useWhen":["Translate an .srt or .ass subtitle file into another language","Translate the subtitles embedded in an .mkv or .mp4","Long multi-character dialogue that needs consistent tone across batches"],"notFor":["Creating subtitles from audio (transcribe first: transcribe-anything, agent-caption)","Burning subtitles into video (ffmpeg-captions-subtitles)"],"publisher":{"name":"Matheus Castro","handle":"MaKTaiL","kind":"community","url":"https://github.com/MaKTaiL","avatar":"https://github.com/MaKTaiL.png","verified":false},"source":{"url":"https://github.com/MaKTaiL/gemini-srt-translator/tree/main/skills/subtitle-translator","repo":"MaKTaiL/gemini-srt-translator","license":"MIT"},"install":{"claude-code":"pip install gemini-srt-translator && gst skill install --target claude","codex":"pip install gemini-srt-translator && gst skill install --global"},"agents":["claude-code","codex","cursor"],"requires":["Python 3.10+ with the gemini-srt-translator package","ffmpeg for subtitles embedded in video files"],"cost":{"note":"Free — the agent translates in its own context; standalone Gemini mode bills your Gemini key"},"files":["skills/subtitle-translator/SKILL.md","gemini_srt_translator/agent_cli.py","gemini_srt_translator/session.py","gemini_srt_translator/skill.py","gemini_srt_translator/ffmpeg_utils.py","pyproject.toml"],"stats":{"stars":363,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-08-27","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":275,"text":"gst agent commit"},"legal":"scanned: manual review 2026-10-26 — read the skill and the package it drives: pyproject has no build hooks and agent mode is local (pysubs2 + ffmpeg). Outside agent mode the CLI checks PyPI for a newer release and asks (y/n) before pip-upgrading itself; pin the version or pass --skip-upgrade. `gst skill install` writes SKILL.md into .agents, .claude or .gemini skill folders. Translate only subtitles you have the rights to.","adds":"tool","media":{"type":"none","reason":"Translates SRT/ASS text files; the repo has no media (README carries only badges) and no before/after subtitle sample or recording is published","searched":["github.com/MaKTaiL/gemini-srt-translator README and full tree (0 media files)","skills/subtitle-translator folder","PyPI page link (text)","GitHub profile MaKTaiL (coff.ee link only)"],"addedAt":"2026-10-27"}},{"id":"jianshuo/wjs-translating-subtitles","slug":"wjs-translating-subtitles","name":"WJS Translating Subtitles","skillName":"wjs-translating-subtitles","type":"skill","status":"live","stream":"community","category":"captions","tags":["subtitles","translation","srt","bilingual","chinese"],"summary":"Translate an SRT to Chinese, English or another language and re-cut cues at real punctuation; bilingual SRTs too.","description":"Text-only subtitle translation from Wang Jianshuo's video-localization pipeline. It translates a source SRT or pasted transcript with subtitle-length rules (about 15 Chinese or 42 Latin characters a line, two lines max), then re-segments so every cue ends at a real punctuation mark, splitting or merging cues with timestamps interpolated by character position. Output is target-only, bilingual (source line over target line) or three-language SRT, with file-naming conventions and a quality gate; Simplified Chinese and English are the tested targets. Instructions only; burn-in and dubbing live in sibling skills of the same repo.","useWhen":["Translate an SRT into Chinese or English","Bilingual (中英双语) subtitles","Fix cues that end mid-sentence before dubbing or burn-in"],"notFor":["Making the source SRT (transcribe first)","Burn-in or voice dubbing (sibling skills; for burn-in see ffmpeg-captions-subtitles)"],"publisher":{"name":"Jian Shuo Wang","handle":"jianshuo","kind":"community","url":"https://github.com/jianshuo","avatar":"https://github.com/jianshuo.png","verified":false},"source":{"url":"https://github.com/jianshuo/claude-skills/tree/main/wjs-translating-subtitles","repo":"jianshuo/claude-skills","path":"wjs-translating-subtitles","license":"MIT"},"install":{"claude-code":"npx skills add https://github.com/jianshuo/claude-skills --skill wjs-translating-subtitles","codex":"npx skills add https://github.com/jianshuo/claude-skills --skill wjs-translating-subtitles"},"agents":["claude-code","codex"],"cost":{"note":"Free — instructions only; the agent translates"},"files":["SKILL.md"],"stats":{"stars":137,"installs":217,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-05-12","addedAt":"2026-10-26","preview":{"kind":"karaoke","hue":110,"text":"It's nothing."},"legal":"scanned: manual review 2026-10-26 — Markdown only. The repo is auto-mirrored from the author's ~/.claude/skills by a local hook (not shipped) and mixes personal, non-media skills; install only this skill. The sibling wjs-burning-subtitles is not listed: its render.py downloads an unpinned ffmpeg build from evermeet.cx and runs it. skills.sh shows Gen and Socket Pass, Snyk Warn with no finding text.","adds":"tool","media":{"type":"none","reason":"Translates and re-cuts SRT text files; the skill folder is a single SKILL.md, the repo has no media, and no bilingual subtitle sample or video is published for it","searched":["github.com/jianshuo/claude-skills README and full tree (0 media files)","wjs-translating-subtitles folder (SKILL.md only)","README links (clawhub, skillsmp, PyPI: listings only)","X search for Wang Jianshuo subtitle posts (none from the author)"],"addedAt":"2026-10-27"}},{"id":"mvanhorn/last30days","slug":"last30days","name":"Last 30 Days Research","skillName":"last30days","type":"skill","status":"live","stream":"community","category":"research","tags":["discover","discover-social","discover-ai"],"summary":"Researches any topic across Reddit, X, YouTube, HN and the web for the last 30 days, with sources.","description":"Runs a grounded research pass over the last 30 days of Reddit, X, YouTube, Hacker News, Polymarket, the web and (opt-in) Xiaohongshu, then writes a summary that links every source. For video work, point it at a niche or a format (\"AI music videos\", \"skincare UGC hooks\") to see what people are actually posting and discussing before you write a brief.","useWhen":["What is trending in my niche this month?","Research a format before making it","Collect real examples with links for a brief"],"publisher":{"name":"Matt Van Horn","handle":"mvanhorn","kind":"community","url":"https://github.com/mvanhorn","avatar":"https://github.com/mvanhorn.png","verified":false},"source":{"url":"https://github.com/mvanhorn/last30days-skill","repo":"mvanhorn/last30days-skill","license":"MIT"},"install":{"claude-code":"/plugin marketplace add mvanhorn/last30days-skill\n/plugin install last30days","codex":"npx skills add mvanhorn/last30days-skill -g","cursor":"npx skills add mvanhorn/last30days-skill -g","gemini-cli":"npx skills add mvanhorn/last30days-skill -g","openclaw":"clawhub install last30days-official"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw"],"requires":["Optional: API keys for some sources (see README)"],"stats":{"stars":65610,"installs":53500,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-10-27","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":200,"text":"/last30days ai music video"},"legal":"Reads public pages and APIs and links to them; it does not re-host posts.","adds":"tool"},{"id":"bradautomates/claude-video-watch","slug":"claude-video-watch","name":"Watch (video analysis)","skillName":"watch","type":"skill","status":"live","stream":"community","category":"research","tags":["discover","discover-social","discover-film","discover-music","discover-teardown"],"summary":"Gives the agent eyes on any video: download, scene-aware frames, timestamped transcript.","description":"The /watch command downloads a video with yt-dlp, extracts frames at scene changes, builds a timestamped transcript (captions first, Whisper as a fallback) and hands it all to the agent. Use it to tear down a viral hook, an ad or a music video before planning your own version: pacing, shots, on-screen text and what is said when.","useWhen":["Break down why this video works","Get a shot list and transcript from a link","Compare hooks across several ads"],"publisher":{"name":"Brad Bonanno","handle":"bradautomates","kind":"community","url":"https://github.com/bradautomates","avatar":"https://github.com/bradautomates.png","verified":false},"source":{"url":"https://github.com/bradautomates/claude-video","repo":"bradautomates/claude-video","license":"MIT"},"install":{"claude-code":"/plugin marketplace add bradautomates/claude-video\n/plugin install watch@claude-video","codex":"npx skills add bradautomates/claude-video -g --skill watch"},"agents":["claude-code","codex"],"requires":["yt-dlp","ffmpeg","Python 3","Optional: Groq or OpenAI key for transcription"],"stats":{"stars":19340,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-09-25","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":330,"text":"/watch"},"legal":"Downloads videos locally for analysis; keep the files private and delete them afterwards.","adds":"tool"},{"id":"bradautomates/head-of-content","slug":"head-of-content","name":"Head of Content","type":"skill","status":"beta","stream":"community","category":"research","tags":["discover","discover-social"],"summary":"TikTok, Instagram, YouTube and X outlier research, hook analysis and a content plan.","description":"A skill set for Claude Cowork and Claude Code: /tiktok-research, /instagram-research, /youtube-research and /x-research find statistical outliers in accounts you track, /video-content-analyzer studies the top ones with a video model, and /content-planner turns the patterns into a plan with hook formulas. Last updated January 2026, so check it still runs against the current scrapers.","useWhen":["Find outlier posts among competitors","Extract hook formulas from top videos","Plan a month of content from what works"],"publisher":{"name":"Brad Bonanno","handle":"bradautomates","kind":"community","url":"https://github.com/bradautomates","avatar":"https://github.com/bradautomates.png","verified":false},"source":{"url":"https://github.com/bradautomates/head-of-content","repo":"bradautomates/head-of-content","license":"MIT"},"install":{},"agents":["claude-code","claude-ai"],"requires":["Apify API key","TubeLab API key","Gemini API key","Python 3.8+"],"stats":{"stars":285,"installs":4400,"source":"GitHub + skills.sh","asOf":"2026-10-26"},"updatedAt":"2026-01-23","addedAt":"2026-10-26","preview":{"kind":"cards","hue":20,"text":"outlier ×12"},"legal":"Uses Apify scrapers under your own account; scraping terms of each platform apply to you.","adds":"tool"},{"id":"ZubeidHendricks/youtube-mcp","slug":"youtube-mcp","name":"YouTube MCP","type":"skill","status":"live","stream":"community","category":"research","tags":["discover","discover-social","discover-music"],"summary":"YouTube Data API over MCP: search, video and channel stats, transcripts.","description":"An MCP server for the YouTube Data API v3. The agent can search videos, read view and like counts, compare a video with its channel to spot outliers, and pull transcripts. Pair it with the trend guide: `chart=mostPopular` per region is the official replacement for the removed Trending page.","useWhen":["Find YouTube outliers in a niche","Pull stats and transcripts for a list of videos","Check what is most popular in a region"],"publisher":{"name":"Zubeid Hendricks","handle":"ZubeidHendricks","kind":"community","url":"https://github.com/ZubeidHendricks","avatar":"https://github.com/ZubeidHendricks.png","verified":false},"source":{"url":"https://github.com/ZubeidHendricks/youtube-mcp-server","repo":"ZubeidHendricks/youtube-mcp-server","license":"MIT"},"install":{"mcp":"npx -y @smithery/cli install @ZubeidHendricks/youtube --client claude"},"agents":["claude-code","claude-ai","cursor","mcp"],"requires":["YouTube Data API key (free, 10k units/day)"],"stats":{"stars":589,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-08-08","addedAt":"2026-10-26","preview":{"kind":"grid","hue":0,"text":"mostPopular · US"},"legal":"Official API; quotas apply.","adds":"tool"},{"id":"karanb192/reddit-mcp-buddy","slug":"reddit-mcp-buddy","name":"Reddit MCP Buddy","type":"skill","status":"live","stream":"community","category":"research","tags":["discover","discover-social","discover-ai"],"summary":"Browse and search Reddit from your agent: posts, rising threads, users. No API key needed.","description":"A Reddit MCP server tuned for LLMs: browse subreddits (hot, rising, top), search posts and comments, and read user activity. Useful for r/aivideo, niche communities and \"how did you make this\" threads that reveal method demand.","useWhen":["What is rising in a subreddit today","Find threads asking how a format was made","Collect community examples of a style"],"publisher":{"name":"Karan","handle":"karanb192","kind":"community","url":"https://github.com/karanb192","avatar":"https://github.com/karanb192.png","verified":false},"source":{"url":"https://github.com/karanb192/reddit-mcp-buddy","repo":"karanb192/reddit-mcp-buddy","license":"MIT"},"install":{"claude-code":"claude mcp add --transport stdio reddit-mcp-buddy -s user -- npx -y reddit-mcp-buddy","mcp":"npx -y reddit-mcp-buddy"},"agents":["claude-code","claude-ai","cursor","mcp"],"requires":["Node.js"],"stats":{"stars":865,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-10-25","addedAt":"2026-10-26","preview":{"kind":"cards","hue":16,"text":"r/aivideo · rising"},"legal":"Reads public Reddit data; respect Reddit rate limits and terms.","adds":"tool"},{"id":"trendsmcp-ai/trends-mcp","slug":"trends-mcp","name":"Trends MCP","type":"skill","status":"live","stream":"community","category":"research","tags":["discover","discover-social"],"summary":"Live Google Trends plus growth data from TikTok, YouTube, Amazon, Reddit and 30+ sources.","description":"A hosted MCP server for search-interest data: volume, breakout keywords and five-year history from Google Trends, plus growth signals from TikTok, YouTube, Amazon, Reddit and more. Use it to check whether a topic is still rising before you build a video on it.","useWhen":["Is this topic still rising?","Find breakout keywords around a niche","Compare interest across platforms"],"publisher":{"name":"Trends MCP","handle":"trendsmcp-ai","kind":"vendor","url":"https://trendsmcp.ai","avatar":"https://github.com/trendsmcp-ai.png","verified":false},"source":{"url":"https://github.com/trendsmcp-ai/google-trends-mcp","repo":"trendsmcp-ai/google-trends-mcp","license":"MIT"},"install":{"claude-code":"claude mcp add --scope user --transport http trends-mcp https://api.trendsmcp.ai/mcp --header \"Authorization: Bearer YOUR_API_KEY\""},"agents":["claude-code","cursor","mcp"],"requires":["Trends MCP API key (free tier)"],"stats":{"stars":16,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-08-30","addedAt":"2026-10-26","preview":{"kind":"wave","hue":140,"text":"breakout ↑"},"legal":"Hosted third-party service; data terms of each source apply.","adds":"tool"},{"id":"AKzar1el/trendpulse","slug":"trendpulse","name":"TrendPulse MCP","type":"skill","status":"live","stream":"community","category":"research","tags":["discover","discover-social"],"summary":"Free Google News + Google Trends MCP for keyword, market and content research.","description":"An open-source MCP server that combines Google Trends interest data with Google News coverage, so the agent can see both what people search and what the press is writing about. Runs locally through uvx, no key.","useWhen":["Check search interest and news around a topic","Spot a spike before it peaks"],"publisher":{"name":"AKzar1el","handle":"AKzar1el","kind":"community","url":"https://github.com/AKzar1el","avatar":"https://github.com/AKzar1el.png","verified":false},"source":{"url":"https://github.com/AKzar1el/mcp-trendpulse","repo":"AKzar1el/mcp-trendpulse","license":"MIT"},"install":{"codex":"codex mcp add mcp-trendpulse -- uvx mcp-trendpulse","mcp":"uvx mcp-trendpulse"},"agents":["claude-code","codex","mcp"],"requires":["uv"],"stats":{"stars":5,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-10-27","addedAt":"2026-10-26","preview":{"kind":"wave","hue":95,"text":"trend + news"},"legal":"Reads public Google endpoints; heavy polling may be rate-limited.","adds":"tool"},{"id":"jkawamoto/youtube-transcript-mcp","slug":"youtube-transcript-mcp","name":"YouTube Transcript MCP","type":"skill","status":"live","stream":"community","category":"research","tags":["discover","discover-social","discover-music","discover-teardown"],"summary":"Transcripts of any YouTube video for the agent: hooks, scripts, lyrics timing.","description":"A small MCP server that fetches YouTube transcripts. Use it with the teardown guide to read what is said in the first three seconds of top videos, or to line up lyrics against timestamps.","useWhen":["Read the hook of a top video","Pull a script to restructure"],"publisher":{"name":"Junpei Kawamoto","handle":"jkawamoto","kind":"community","url":"https://github.com/jkawamoto","avatar":"https://github.com/jkawamoto.png","verified":false},"source":{"url":"https://github.com/jkawamoto/mcp-youtube-transcript","repo":"jkawamoto/mcp-youtube-transcript","license":"MIT"},"install":{"mcp":"uvx --from git+https://github.com/jkawamoto/mcp-youtube-transcript mcp-youtube-transcript"},"agents":["claude-code","claude-ai","cursor","mcp"],"requires":["uv"],"stats":{"stars":492,"source":"GitHub","asOf":"2026-10-26"},"updatedAt":"2026-10-21","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":350,"text":"transcript"},"legal":"Transcripts belong to the video owners; quote, do not republish.","adds":"tool"},{"id":"aguo333/ai-video-script","slug":"ai-video-script","name":"AI Video Script","skillName":"ai-video-script","type":"skill","status":"beta","stream":"community","adds":"tool","category":"story","tags":["script","storyboard","voiceover","prompting","shorts","clawhub","chinese"],"summary":"Turns a topic into a video script: shot list, per-shot image/video prompts and voiceover text","description":"Writes a full video script from a topic or keyword: overview (title, length, style, audience), a shot table with framing and camera moves, an AI prompt per shot, and narration and subtitle lines with emotion notes. Prompts follow CogVideoX and Midjourney formats, in Chinese and English. Includes templates for 15–60 s shorts and 1–5 min videos, style presets (commercial, story, educational, entertainment) and platform length hints for Douyin, Kuaishou, Bilibili and WeChat Channels. A prompt template only; no scripts, and it does not generate any media.","useWhen":["You need a video script or storyboard from a topic","You want per-shot prompts ready for an image or video model","You are planning a short video and need voiceover copy"],"notFor":["Generating the actual images or video"],"publisher":{"name":"aguo333","handle":"aguo333","kind":"community","url":"https://clawhub.ai/aguo333","avatar":"https://github.com/aguo333.png","verified":false},"source":{"url":"https://clawhub.ai/aguo333/skills/ai-video-script","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install ai-video-script"},"agents":["openclaw"],"cost":{"note":"Free — writes text only"},"files":["SKILL.md"],"stats":{"installs":420,"stars":37,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"notes","hue":40,"text":"shot 1 · 0–5s"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Pure prompt skill: no external hosts, keys or scripts."},{"id":"franklu0819-lang/douyin-hot-trend","slug":"douyin-hot-trend","name":"Douyin Hot Trend","skillName":"douyin-hot-trend","type":"skill","status":"beta","stream":"community","adds":"tool","category":"research","tags":["douyin","trends","scraper","hot-list","clawhub","chinese"],"summary":"Fetches the Douyin hot list: rank, title, heat score, link and cover image for top topics","description":"Runs a bundled Node script (`node scripts/douyin.js hot [N]`) that pulls the Douyin hot-search list, 50 entries by default. Each entry has rank, title, heat value, a Douyin search link, cover image URL when present, label and content type (video, music, challenge). Data comes from an unofficial Douyin web endpoint, so the format can change and frequent calls may trigger rate limiting.","useWhen":["You want today's trending topics on Douyin","You are picking a trending topic for a short video","You need Douyin hot-list titles with heat scores and links"],"publisher":{"name":"franklu0819-lang","handle":"franklu0819-lang","kind":"community","url":"https://clawhub.ai/franklu0819-lang","avatar":"https://github.com/franklu0819-lang.png","verified":false},"source":{"url":"https://clawhub.ai/franklu0819-lang/skills/douyin-hot-trend","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install douyin-hot-trend"},"agents":["openclaw"],"requires":["Node.js"],"cost":{"note":"Free — no API key"},"files":["SKILL.md"],"stats":{"installs":387,"stars":27,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"cards","hue":350,"text":"hot #1 · 11.8M"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Scrapes an unofficial public Douyin web endpoint (douyin.com) without login; the skill itself warns that frequent requests can trigger Douyin's anti-abuse controls."},{"id":"ide-rea/ai-picture-book","slug":"ai-picture-book","name":"Baidu Wenku AI Picture Book","skillName":"baidu-wenku-ai-picture-book","type":"skill","status":"beta","stream":"community","adds":"visual","category":"story","tags":["picture-book","kids","story","baidu","clawhub","chinese"],"summary":"Turns a story text into a static or animated picture-book video through Baidu Wenku","description":"Sends a story or description to Baidu Wenku's AI picture book service and returns a video URL. You pick static (type 9) or animated (type 10); the skill asks if you do not say. Python scripts create the task, then poll every 5–10 s until it finishes (about 2–3 minutes). There is no control over style, characters or length beyond the text you send.","useWhen":["You want a picture-book video from a story without drawing","You need a quick illustrated video for kids' education or a brand story","You want to visualise history, science or folklore as a picture book"],"publisher":{"name":"ide-rea","handle":"ide-rea","kind":"community","url":"https://clawhub.ai/ide-rea","avatar":"https://github.com/ide-rea.png","verified":false},"source":{"url":"https://clawhub.ai/ide-rea/skills/ai-picture-book","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install ai-picture-book"},"agents":["openclaw"],"requires":["Baidu API key (BAIDU_API_KEY)","Python 3"],"cost":{"note":"Billed by Baidu (your own API key)"},"files":["SKILL.md"],"stats":{"installs":333,"stars":11,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"collage","hue":95,"text":"a brave cat"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Calls Baidu's `/v2/tools/ai_picture_book` API with your BAIDU_API_KEY; the story text is sent to Baidu and results come back as hosted video URLs."},{"id":"jacobzwj/bilibili-hot-monitor","slug":"bilibili-hot-monitor","name":"Bilibili Hot Monitor","skillName":"bilibili-monitor","type":"skill","status":"beta","stream":"community","adds":"tool","category":"research","tags":["bilibili","trends","email","summaries","report","clawhub","chinese"],"summary":"Daily email report of popular Bilibili videos, with subtitle-based AI summaries and comments","description":"Builds a daily report of popular Bilibili videos and emails it through Gmail SMTP. On first run it asks step by step for your Bilibili cookies, an optional OpenRouter key and model (Gemini, Claude, GPT or DeepSeek), a Gmail address and app password, and recipients, then saves them to a local JSON config. Python scripts fetch the list, pull subtitles, have the LLM write a summary and a short review per video, and send an HTML email. A full run takes 10–15 minutes; videos without subtitles get no summary.","useWhen":["You want a daily digest of trending Bilibili videos","You want AI summaries of popular Bilibili videos sent by email","You track what is hot on Bilibili for content ideas"],"publisher":{"name":"jacobzwj","handle":"jacobzwj","kind":"community","url":"https://clawhub.ai/jacobzwj","avatar":"https://github.com/jacobzwj.png","verified":false},"source":{"url":"https://clawhub.ai/jacobzwj/skills/bilibili-hot-monitor","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install bilibili-hot-monitor"},"agents":["openclaw"],"requires":["Bilibili account cookies","Gmail address and app password","OpenRouter API key (optional)","Python 3"],"cost":{"note":"Free to fetch; AI summaries billed by OpenRouter (your own key)"},"files":["SKILL.md"],"stats":{"installs":302,"stars":22,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"terminal","hue":200,"text":"bilibili daily"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Uses your logged-in Bilibili session cookies to read bilibili.com, sends subtitles to openrouter.ai, and sends mail through Gmail SMTP with an app password; all credentials are stored in plain text in a local `bilibili-monitor.json`."},{"id":"0x00000003/douyin-cover-builder","slug":"douyin-cover-builder","name":"Douyin Cover Builder","skillName":"douyin-cover-builder","type":"skill","status":"beta","stream":"community","adds":"visual","category":"image","tags":["douyin","cover","thumbnail","prompting","typography","clawhub","chinese"],"summary":"Writes image-model prompts for Douyin covers: bold title, highlighted keywords, your face bottom right","description":"From a topic, optional key points, the pose or mood you want, and optionally your photo, it writes a final prompt for an image model plus a short art direction note. Rules cover a fixed layout (title on top, you bottom right, one hero metaphor bottom left), keywords in a contrast colour on a slight upward arc, and a background palette chosen by topic. It defaults to strict 3:4 (1080×1440) and gives a pixel check for the generated file. A prompt template only; it does not generate the image itself.","useWhen":["You need a cover or thumbnail prompt for a Douyin video","You want a consistent cover series with your face and a bold title","You want keyword highlighting and a topic-matched colour scheme on a cover"],"notFor":["Generating the image without a separate image model"],"publisher":{"name":"0x00000003","handle":"0x00000003","kind":"community","url":"https://clawhub.ai/0x00000003","avatar":"https://github.com/0x00000003.png","verified":false},"source":{"url":"https://clawhub.ai/0x00000003/skills/douyin-cover-builder","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install douyin-cover-builder"},"agents":["openclaw"],"cost":{"note":"Free — writes text only"},"files":["SKILL.md"],"stats":{"installs":205,"stars":7,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"grid","hue":280,"text":"3:4 cover"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Pure prompt skill: no external hosts or keys; it asks the agent to show a link to the author's GitHub repo (github.com/0x00000003/douyin-cover-builder) when collecting inputs."},{"id":"rascal6666/short-video-script","slug":"short-video-script","name":"Short Video Script","skillName":"short-video-script","type":"skill","status":"beta","stream":"community","adds":"tool","category":"shorts","tags":["script","hooks","titles","douyin","shorts","clawhub","chinese"],"summary":"Short-video scripts, titles and cover ideas for Douyin, Kuaishou, Bilibili and WeChat Channels","description":"A writing guide for short-video scripts: four 3-second hook formulas, a hook → pain point → content → twist → call-to-action structure, templates for knowledge and trending-topic videos, title formulas and basic cover advice. It also notes how Douyin, Kuaishou, Bilibili and WeChat Channels differ in length and tone. A prompt template only; no scripts or media generation.","useWhen":["You need a script for a Douyin, Kuaishou, Bilibili or WeChat Channels video","You want hook and title formulas for a short video","You are writing a knowledge or trending-topic short"],"publisher":{"name":"rascal6666","handle":"rascal6666","kind":"community","url":"https://clawhub.ai/rascal6666","avatar":"https://github.com/rascal6666.png","verified":false},"source":{"url":"https://clawhub.ai/rascal6666/skills/short-video-script","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install short-video-script"},"agents":["openclaw"],"cost":{"note":"Free — writes text only"},"files":["SKILL.md"],"stats":{"installs":132,"stars":6,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"notes","hue":140,"text":"hook in 3s"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Pure prompt skill: no external hosts, keys or scripts."},{"id":"klingai-dev/klingai","slug":"klingai","name":"Kling AI","skillName":"klingai","type":"skill","status":"beta","stream":"community","adds":"api","category":"cinematic","tags":["kling","text-to-video","image-to-video","characters","image","clawhub","chinese"],"summary":"Official Kling CLI: text/image-to-video, Omni reference and edit, images, reusable subjects, quota","description":"The official Kling skill: a Node CLI (`kling.mjs`) with four subcommands. `video` covers text-to-video, image-to-video, first/last frame, multi-shot storyboards and Omni reference or edit of an existing clip; `image` covers text-to-image, image-to-image, 4K and image series; `element` creates and lists reusable characters/subjects; `account` shows remaining quota and handles key setup. It submits, polls and downloads results to a local folder. The skill has strict routing and anti-guessing rules and tells the agent to confirm before any billable submit.","useWhen":["You want to generate video with Kling 3.0, 3.0 Omni or O1","You need multi-shot, first/last frame or reference-video editing with Kling","You want a consistent character across Kling videos and images","You want to check your Kling balance or resource packs"],"publisher":{"name":"Kling AI","handle":"klingai-dev","kind":"vendor","url":"https://clawhub.ai/klingai-dev","avatar":"https://github.com/klingai-dev.png","verified":false},"source":{"url":"https://clawhub.ai/klingai-dev/skills/klingai","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install klingai"},"agents":["openclaw"],"models":["kling_v3","kling_v3_omni","kling_o1_image","kling-o1","kling-2.6"],"requires":["Kling API key","Node.js 18+"],"cost":{"note":"Billed by Kling (your own API key)"},"files":["SKILL.md"],"stats":{"installs":116,"stars":5,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"film","hue":20,"text":"shot 1 · sunrise"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Published by Kling; calls the official Kling API (klingai.com) with your API key, obtained through a device-bind flow or import and stored in `~/.config/kling`; reference videos must be public URLs."},{"id":"papawaigo/video-translator","slug":"video-translator","name":"Video Translator","skillName":"video-translator","type":"skill","status":"beta","stream":"community","adds":"api","category":"audio","tags":["translation","dubbing","subtitles","audio","clawhub","chinese"],"summary":"Translates and dubs a video into Chinese or English and returns a preview link","description":"Uploads a video file or URL to the luoji.cn video translation service, which dubs it into the target language and can burn in plain or bilingual subtitles. The target can only be Chinese or English; sources can be Chinese, English, Korean, Japanese, French, Russian, Spanish or German. It submits a job, polls it and returns a `preview_url`. Subtitles stay off unless you ask for them.","useWhen":["You want a video translated and dubbed into English or Chinese","You need translated or bilingual subtitles burned into a video","You want a shareable preview link of the translated video"],"notFor":["Target languages other than Chinese or English"],"publisher":{"name":"papawaigo","handle":"papawaigo","kind":"community","url":"https://clawhub.ai/papawaigo","avatar":"https://github.com/papawaigo.png","verified":false},"source":{"url":"https://clawhub.ai/papawaigo/skills/video-translator","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install video-translator"},"agents":["openclaw"],"requires":["luoji.cn API key (VIDEO_TRANSLATE_SERVICE_API_KEY)","Python 3","curl"],"cost":{"note":"Billed by luoji.cn (token balance on your account)"},"files":["SKILL.md"],"stats":{"installs":116,"stars":6,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"karaoke","hue":170,"text":"zh → en"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Sends your video (file or URL) to a fixed third-party host, audiox-api-global.luoji.cn, with a luoji.cn API key; missing keys or low balance send the user to luoji.cn to sign up or top up."},{"id":"qiujiahong/video-gen","slug":"video-gen","name":"Seedance Video Gen","skillName":"video-gen","type":"skill","status":"beta","stream":"community","adds":"api","category":"cinematic","tags":["seedance","volcengine","text-to-video","image-to-video","feishu","clawhub","chinese"],"summary":"Text- and image-to-video with Doubao Seedance on Volcengine, with optional audio and first/last frame","description":"A Python script that calls the Doubao Seedance API on Volcengine Ark for text-to-video, image-to-video (URL or local file), video with generated audio from a first frame or first and last frames, and Seedance Lite with a style reference image. It expands your description into a detailed prompt, waits for the job and saves an MP4. The workflow then uploads the video to Feishu and sends it as a message, using a sample code block that needs your Feishu app credentials. Models are older Seedance versions (1.5 and Lite), not Seedance 2.","useWhen":["You want to generate a video from text or an image with Seedance","You need a talking or sound video from a first frame","You want a video between a first and last frame","You use Feishu and want the result sent there"],"publisher":{"name":"qiujiahong","handle":"qiujiahong","kind":"community","url":"https://clawhub.ai/qiujiahong","avatar":"https://github.com/qiujiahong.png","verified":false},"source":{"url":"https://clawhub.ai/qiujiahong/skills/video-gen","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install video-gen"},"agents":["openclaw"],"models":["seedance-1.5","seedance-lite"],"requires":["Volcengine Ark API key","Python 3","Feishu app ID and secret (optional, for delivery)"],"cost":{"note":"Billed by Volcengine (your own API key)"},"files":["SKILL.md"],"stats":{"installs":101,"stars":3,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"film","hue":230,"text":"cat in the grass"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Calls Volcengine Ark (ark.cn-beijing.volces.com, base URL overridable by env var) with your API key, and optionally uploads results to Feishu's open API (open.feishu.cn) with your app ID and secret."},{"id":"zhenyangze/tiktok-short-video","slug":"tiktok-short-video","name":"TikTok Selling Video Guide","skillName":"tiktok-short-video","type":"skill","status":"beta","stream":"community","adds":"tool","category":"ads","tags":["tiktok","ecommerce","hooks","hashtags","shorts","clawhub","chinese"],"summary":"Guide to TikTok product-selling videos: formats, 3-second hooks, shooting, editing, hashtags, metrics","description":"A written guide to TikTok videos that sell products: five formats (unboxing, review, story placement, tutorial, before/after), a 30-second structure, hook templates, gear tiers, editing pace, a hashtag mix and the metrics to watch. The SKILL.md links to five reference files with more detail. A guide only; no scripts and no media generation.","useWhen":["You are planning a TikTok video to sell a product","You want hook templates and a structure for a TikTok shop video","You need a hashtag strategy or metrics checklist for TikTok"],"notFor":["Generating or editing the video itself"],"publisher":{"name":"zhenyangze","handle":"zhenyangze","kind":"community","url":"https://clawhub.ai/zhenyangze","avatar":"https://github.com/zhenyangze.png","verified":false},"source":{"url":"https://clawhub.ai/zhenyangze/skills/tiktok-short-video","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install tiktok-short-video"},"agents":["openclaw"],"cost":{"note":"Free — writes text only"},"files":["SKILL.md"],"stats":{"installs":97,"stars":8,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"cards","hue":320,"text":"before vs after"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Pure guide: no external hosts, keys or scripts."},{"id":"a1024708231/video-producer","slug":"video-producer","name":"Video Producer","skillName":"video-producer","type":"skill","status":"beta","stream":"community","adds":"visual","category":"shorts","tags":["shorts","storyboard","tts","remotion","pipeline","clawhub","chinese"],"summary":"Topic in, narrated short MP4 out: shot plan, AI stills, per-scene voiceover, Remotion render","description":"Coordinates a short-video pipeline: it calls a separate video-director skill to write a storyboard table (scenes, timing, narration, asset prompts and file names), then generates AI images for each asset, records TTS voiceover per scene, writes Remotion code that animates the stills, emoji and titles, and renders and muxes a final MP4. It ships a keyword-to-visual mapping table (e.g. 'layoffs' becomes an empty office) and is run with `node produce.js \"topic\" '[scenes JSON]'`. The SKILL.md does not say which image model or TTS service is used, and it depends on the video-director skill being installed.","useWhen":["You want a complete short video with voiceover generated from a topic and a few talking points","You want a storyboard you can edit by hand before the video is rendered","You need text-and-emoji explainer shorts built from AI stills"],"notFor":["Live-action footage or AI video-model clips; the motion comes from animated stills in Remotion"],"publisher":{"name":"a1024708231","handle":"a1024708231","kind":"community","url":"https://clawhub.ai/a1024708231","avatar":"https://github.com/a1024708231.png","verified":false},"source":{"url":"https://clawhub.ai/a1024708231/skills/video-producer","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install video-producer"},"agents":["openclaw"],"requires":["Node.js","Remotion","video-director skill","an image generation and TTS backend (not named)"],"cost":{"note":"Depends on the image and TTS services you configure; the SKILL.md does not name them"},"files":["SKILL.md"],"stats":{"installs":94,"stars":2,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"timeline","hue":30,"text":"plan, voice, render"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). The SKILL.md names no external hosts or API keys; it runs a local `produce.js` script and relies on another skill (video-director) whose image and TTS providers are unspecified."},{"id":"sun-guannan/vectcut","slug":"vectcut","name":"VectCut","skillName":"vectcut-skill","type":"skill","status":"beta","stream":"community","adds":"tool","category":"editing","tags":["talking-head","captions","remix","ads","cloud-render","clawhub","chinese"],"summary":"Drives the VectCut editing API: talking-head cuts, remixes, e-commerce ads, subtitles, effects, cloud render","description":"An orchestration skill over the VectCut (Liuguang) cloud editing API. It routes requests into chains: talking-head edits with filler-pause removal (template-based by default), multi-clip remixes with AI voiceover, subtitles and BGM, e-commerce ads with person cutout, picture-in-picture and keyword callouts, plus AI image/video fill-in shots, cover generation and cloud rendering. It can also fetch videos from Douyin, Kuaishou, Xiaohongshu, Bilibili, TikTok and YouTube links before editing, open drafts in the VectCut desktop client via a deeplink, and turn a finished workflow into a Feishu Bitable automation with AI-agent prompts. The detailed per-step rules live in a `rules/` folder that is not included in this SKILL.md.","useWhen":["You want a talking-head recording auto-edited into a finished clip with subtitles and packaging","You want several clips remixed into one video with narration, subtitles and music","You are making an e-commerce ad with cutouts, picture-in-picture and selling-point text","You have a Douyin, Bilibili or other platform link to analyse and re-edit"],"notFor":["Adding a single plain line of text or a title; the skill routes that to API search, not the subtitle chain"],"publisher":{"name":"sun-guannan","handle":"sun-guannan","kind":"community","url":"https://clawhub.ai/sun-guannan","avatar":"https://github.com/sun-guannan.png","verified":false},"source":{"url":"https://clawhub.ai/sun-guannan/skills/vectcut","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install vectcut"},"agents":["openclaw"],"requires":["VectCut account","VECTCUT_API_KEY"],"cost":{"note":"Billed by VectCut (your own API key)"},"files":["SKILL.md"],"stats":{"installs":79,"stars":1,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"timeline","hue":200,"text":"cut, caption, render"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Calls the VectCut API (vectcut.com) with VECTCUT_API_KEY and uploads local media to its storage; it scrapes videos from Douyin, Kuaishou, Xiaohongshu, Bilibili, TikTok and YouTube links, and tells the agent to check the key by echoing it in the shell."},{"id":"wangshengli0421/tianshu-wan-video","slug":"tianshu-wan-video","name":"Tianshu Wan Video","skillName":"tianshu-wan-video","type":"skill","status":"beta","stream":"community","adds":"api","category":"cinematic","tags":["wan","text-to-video","image-to-video","alibaba","dashscope","clawhub","chinese"],"summary":"Text-to-video and image-to-video with Alibaba's Wan 2.6 through DashScope, from a small Node.js script","description":"Calls Alibaba Cloud's Tongyi Wanxiang (Wan) 2.6 video model directly through the DashScope API. A Node.js script supports text-to-video and image-to-video with prompt, duration and resolution flags, and prints `VIDEO_URL: <url>` when done. The SKILL.md is short: two example commands and no prompting guidance.","useWhen":["You want a clip from Wan 2.6 from a text prompt","You want to animate a still image (by URL) with Wan 2.6","You already have a DashScope key and want to call Wan without Python"],"publisher":{"name":"wangshengli0421","handle":"wangshengli0421","kind":"community","url":"https://clawhub.ai/wangshengli0421","avatar":"https://github.com/wangshengli0421.png","verified":false},"source":{"url":"https://clawhub.ai/wangshengli0421/skills/tianshu-wan-video","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install tianshu-wan-video"},"agents":["openclaw"],"models":["wan_2_6"],"requires":["Alibaba Cloud DashScope API key","Node.js"],"cost":{"note":"Billed by Alibaba Cloud DashScope (your own API key)"},"files":["SKILL.md"],"stats":{"installs":78,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"film","hue":280,"text":"slow push-in"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Sends prompts and image URLs to Alibaba Cloud DashScope using your DASHSCOPE_API_KEY; nothing else is called."},{"id":"markusbetter/bilibili-video-transcribe-summary","slug":"bilibili-video-transcribe-summary","name":"Bilibili Transcribe & Summary","skillName":"bilibili-transcribe-summary","type":"skill","status":"beta","stream":"community","adds":"tool","category":"research","tags":["bilibili","transcription","summary","asr","subtitles","clawhub","chinese"],"summary":"Turns a Bilibili link into a transcript and summary: official subtitles first, cloud speech-to-text as fallback","description":"Given a Bilibili URL, BV id or b23.tv short link, a Node.js script parses the page, uses the official subtitles if they exist, and otherwise downloads the anonymous audio stream (.m4s renamed to .mp3, no transcoding) and sends it to SiliconFlow's TeleAI/TeleSpeechASR model. The agent then writes a key-points summary by default, or a full transcript or focused analysis on request, and says whether the text came from subtitles or ASR. The author notes that anonymous audio access is not always reliable and some videos fail because of Bilibili restrictions.","useWhen":["You have a Bilibili video link and want its transcript","You want a summary or analysis of what a Bilibili video says","You want to pull official subtitles from a Bilibili video"],"notFor":["Videos from platforms other than Bilibili"],"publisher":{"name":"markusbetter","handle":"markusbetter","kind":"community","url":"https://clawhub.ai/markusbetter","avatar":"https://github.com/markusbetter.png","verified":false},"source":{"url":"https://clawhub.ai/markusbetter/skills/bilibili-video-transcribe-summary","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install bilibili-video-transcribe-summary"},"agents":["openclaw"],"models":["telespeechasr"],"requires":["Node.js 18+","SiliconFlow API key (only for videos without subtitles)"],"cost":{"note":"Free when official subtitles exist; speech-to-text billed by SiliconFlow (your own API key)"},"files":["SKILL.md"],"stats":{"installs":74,"stars":3,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"karaoke","hue":190,"text":"BV1… transcript"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Scrapes Bilibili pages and downloads the anonymous audio stream without logging in, then uploads that audio to SiliconFlow (cloud.siliconflow.cn) with your SILICONFLOW_API_KEY."},{"id":"dlazyai/dlazy-video-generate","slug":"dlazy-video-generate","name":"dLazy Video Generate","skillName":"dlazy-video-generate","type":"skill","status":"beta","stream":"community","adds":"api","category":"cinematic","tags":["text-to-video","image-to-video","lip-sync","model-router","dlazy","clawhub","chinese","hosted-service"],"summary":"Picks a video model for your prompt from about 20 on dLazy (Jimeng, Kling, Veo, Seedance, Wan, PixVerse) and runs it","description":"A model router that goes through the dLazy hosted service and its `dlazy` CLI. The agent picks one of about 20 video models listed in the SKILL.md (Jimeng, Kling V3 and Omni, Veo 3.1, Seedance 2.0/2.5, Wan 2.7, PixVerse C1, Vidu Q2, MiniMax Hailuo, OmniHuman 1.5 avatars, and lip-sync tools such as HeyGen, sync-lipsync 3 and VideoRetalk), checks its flags with `dlazy <model> -h`, and runs it. Commands can be piped so an image from one step feeds the next. All models are reached through dLazy, not the original providers.","useWhen":["You want a video from text, a first frame, first and last frames, or reference images and don't want to pick the model yourself","You want a digital-human video or lip sync to new audio","You want to chain image generation into image-to-video in one command line"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-video-generate","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-video-generate"},"agents":["openclaw"],"models":["jimeng","kling_v3","kling_v3_omni","veo_3_1","veo_3_1_fast","seedance_2_0","seedance_2_5","wan_2_7","pixverse_c1","vidu_q2","omnihuman_1_5","minimax-hailuo"],"requires":["dLazy account and API key","Node.js (npm/npx) for @dlazy/cli"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":70,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"film","hue":330,"text":"best model wins"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Everything goes through the dLazy reseller/aggregator (api.dlazy.com, files.dlazy.com) with a dLazy API key stored in ~/.dlazy/config.json; local files you pass are uploaded to files.dlazy.com, and it installs the npm package @dlazy/cli@1.2.3."},{"id":"dlazyai/dlazy-image-storyboard","slug":"dlazy-image-storyboard","name":"dLazy Image Storyboard","skillName":"dlazy-image-storyboard","type":"skill","status":"beta","stream":"community","adds":"visual","category":"story","tags":["storyboard","character-sheet","ads","comics","dlazy","clawhub","chinese","hosted-service"],"summary":"Plan-first storyboard workflow: specs, character sheet and script approved before each panel is rendered","description":"A gated storyboard workflow for film, ads, shorts and educational or comic-style stories. The agent locks specs (aspect ratio, panel count, cinematic vs narrative), builds a character master sheet, writes a structured panel script with shot size, camera move and lighting, and only then renders panels one at a time, waiting for user approval at each gate. Images are rendered with dLazy CLI models such as `dlazy seedream-4.5`, and the final layout targets an A4 landscape print/PDF strip or comic grid. The SKILL.md mixes English and Chinese, has a duplicated front-matter block, and gives Windows PowerShell-specific command rules.","useWhen":["You want a storyboard for a film, ad or short video with consistent characters","You want an educational or comic-style narrative laid out panel by panel","You want to approve each step (specs, character, script) before images are generated"],"notFor":["Batch-generating all panels at once; the skill forbids it and renders one image per confirmation"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-image-storyboard","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-image-storyboard"},"agents":["openclaw"],"models":["seedream-4.5"],"requires":["dLazy account and API key","Node.js (npm/npx) for @dlazy/cli"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":69,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"notes","hue":45,"text":"S01-P03 · wide · dolly"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Renders through the dLazy reseller/aggregator (api.dlazy.com, files.dlazy.com) with a dLazy API key stored in ~/.dlazy/config.json, and installs the npm package @dlazy/cli (the text cites both 1.2.3 and 1.0.9)."},{"id":"dlazyai/dlazy-jimeng-i2v-first","slug":"dlazy-jimeng-i2v-first","name":"dLazy Jimeng First-Frame Video","skillName":"dlazy-jimeng-i2v-first","type":"skill","status":"beta","stream":"community","adds":"api","category":"cinematic","tags":["jimeng","image-to-video","first-frame","dlazy","clawhub","chinese","hosted-service"],"summary":"Animates a single first-frame image into a 5 or 10 second Jimeng (Dreamina) clip through the dLazy CLI","description":"A thin wrapper around `dlazy jimeng-i2v-first`, which runs ByteDance's Jimeng (Dreamina) first-frame-to-video model through the dLazy hosted service. You pass a prompt and a first-frame image (URL or local path) and choose 5 or 10 seconds; `--dry-run` prints the payload and a cost estimate first. The SKILL.md is mostly authentication and CLI help text, and its examples use `--image` while the help lists `--firstFrame`.","useWhen":["You want to animate a still image with Jimeng","You have a first frame and want a single natural-motion shot from it"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-jimeng-i2v-first","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-jimeng-i2v-first"},"agents":["openclaw"],"models":["jimeng"],"requires":["dLazy account and API key","Node.js (npm/npx) for @dlazy/cli"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":67,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"film","hue":160,"text":"first frame, then motion"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Goes through the dLazy reseller/aggregator (api.dlazy.com, files.dlazy.com) rather than Jimeng directly, with a dLazy API key stored in ~/.dlazy/config.json; local images are uploaded to files.dlazy.com, and it installs the npm package @dlazy/cli@1.2.3."},{"id":"codekungfu/douyin-trends","slug":"douyin-trends","name":"Douyin Trends","skillName":"douyin-trends","type":"skill","status":"beta","stream":"community","adds":"tool","category":"research","tags":["douyin","trends","analytics","creators","clawhub","chinese"],"summary":"Guide for reading public Douyin search, trending and creator pages and summarising likes, comments and shares","description":"A short guide, with no scripts, for light analysis of public Douyin pages: summarising videos for a keyword or hashtag, comparing a creator's recent 7/30-day performance, and breaking down the trending list by category. It lists the entry URLs (home, discover, search) and the fields to extract (video id, title, author, hashtags, like/comment/favourite/share counts, publish time, cover URL). It warns that Douyin's anti-bot checks are strict and suggests a person opens the page before extraction; the agent needs its own browser access to do any of this.","useWhen":["You want a summary of how videos on a Douyin topic or keyword are performing","You want to compare a Douyin creator's recent videos","You want to see which categories dominate Douyin's trending list"],"notFor":["Downloading videos, removing watermarks or calling Douyin's private APIs (the skill rules these out)","Bulk scraping or commercial redistribution of the data"],"publisher":{"name":"codekungfu","handle":"codekungfu","kind":"community","url":"https://clawhub.ai/codekungfu","avatar":"https://github.com/codekungfu.png","verified":false},"source":{"url":"https://clawhub.ai/codekungfu/skills/douyin-trends","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install douyin-trends"},"agents":["openclaw"],"requires":["Browser access to douyin.com"],"cost":{"note":"Free — no paid API; reads public pages"},"files":["SKILL.md"],"stats":{"installs":67,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"cards","hue":350,"text":"#trending · 12.4w likes"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Reads public Douyin pages (douyin.com discover and search) through whatever browser the agent has; it says not to download, bypass protections or scrape in bulk, and to keep results for internal analysis only."},{"id":"oliviapp8/video-script-generator","slug":"video-script-generator","name":"Video Script Generator","skillName":"video-script-generator","type":"skill","status":"beta","stream":"community","adds":"tool","category":"ads","tags":["script","storyboard","ads","douyin","xiaohongshu","clawhub","chinese"],"summary":"Writes a short-video script and shot list as YAML/JSON from pain-solution, before-after or plot-twist templates","description":"Takes a topic or product, target audience and length (15, 30, 60 or 90 seconds) plus optional platform (Douyin, Xiaohongshu, YouTube Shorts) and tone, and writes a full script with a scene-by-scene shot list in YAML or JSON. Each scene has a type (hook, pain, solution, demo, result, twist, CTA), duration, narration, shot description and visual style, with timing guides per total length. The output is meant to feed other skills such as an avatar, scene-video or stitching skill. It writes text only; the referenced `templates/` folder is not included here.","useWhen":["You need a short-video script or ad copy for a product or topic","You want a storyboard as structured YAML/JSON for a downstream generation pipeline","You want a pain-solution, before-after or plot-twist structure for a promo"],"publisher":{"name":"oliviapp8","handle":"oliviapp8","kind":"community","url":"https://clawhub.ai/oliviapp8","avatar":"https://github.com/oliviapp8.png","verified":false},"source":{"url":"https://clawhub.ai/oliviapp8/skills/video-script-generator","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install video-script-generator"},"agents":["openclaw"],"cost":{"note":"Free — writes text only"},"files":["SKILL.md"],"stats":{"installs":67,"stars":4,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"notes","hue":90,"text":"hook · pain · solution · CTA"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Pure prompt skill: it calls no external services and needs no API keys."},{"id":"dlazyai/dlazy-jimeng-t2i","slug":"dlazy-jimeng-t2i","name":"dLazy Jimeng Text-to-Image","skillName":"dlazy-jimeng-t2i","type":"skill","status":"beta","stream":"community","adds":"api","category":"image","tags":["jimeng","text-to-image","reference-images","dlazy","clawhub","chinese","hosted-service"],"summary":"Generates images with Jimeng (Dreamina) from a prompt and up to 10 reference images, through the dLazy CLI","description":"A thin wrapper around `dlazy jimeng-t2i`, which runs ByteDance's Jimeng (Dreamina) text-to-image model through the dLazy hosted service. It takes a prompt, up to 10 optional reference images and a size from a fixed list (square, landscape and portrait presets up to about 6K), and `--dry-run` shows a cost estimate before calling. The SKILL.md is mostly authentication and CLI help text.","useWhen":["You want an image from Jimeng from a text prompt","You want a high-resolution still in a set aspect ratio, for example vertical 9:16","You want to guide generation with reference images"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-jimeng-t2i","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-jimeng-t2i"},"agents":["openclaw"],"models":["jimeng"],"requires":["dLazy account and API key","Node.js (npm/npx) for @dlazy/cli"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":66,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"grid","hue":240,"text":"four takes, one prompt"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Goes through the dLazy reseller/aggregator (api.dlazy.com, files.dlazy.com) rather than Jimeng directly, with a dLazy API key stored in ~/.dlazy/config.json; reference images are uploaded to files.dlazy.com, and it installs the npm package @dlazy/cli@1.2.3."},{"id":"dlazyai/dlazy-kling-v3","slug":"dlazy-kling-v3","name":"dLazy Kling V3","skillName":"dlazy-kling-v3","type":"skill","status":"beta","stream":"community","adds":"api","category":"cinematic","tags":["kling","text-to-video","image-to-video","dlazy","clawhub","chinese","hosted-service"],"summary":"Text-to-video and image-to-video with Kling v3 through the dLazy CLI, 3–15 s clips","description":"A thin wrapper around the dLazy hosted service: the agent runs `dlazy kling-v3` with a prompt and up to 2 images. Options cover 16:9, 9:16 or 1:1, 3–15 s duration, std or pro mode, an optional sound-effect track, and a dry run that prints a cost estimate. Results are hosted on files.dlazy.com and can be saved locally with --save. The file is CLI help plus auth boilerplate; no prompting guidance.","useWhen":["The user asks for Kling v3","Generating a video from a text prompt","Animating one or two images into a video"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-kling-v3","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-kling-v3"},"agents":["openclaw"],"models":["kling_v3"],"requires":["dLazy account / API key","Node.js (npm or npx) for @dlazy/cli"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":65,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"film","hue":200,"text":"kling v3 clip"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Installs @dlazy/cli 1.2.3 from npm and sends prompts and any local files to api.dlazy.com and files.dlazy.com with a dLazy API key; dLazy is a third-party aggregator reselling Kling access, not Kling itself."},{"id":"dlazyai/dlazy-kling-image-o1","slug":"dlazy-kling-image-o1","name":"dLazy Kling Image O1","skillName":"dlazy-kling-image-o1","type":"skill","status":"beta","stream":"community","adds":"api","category":"image","tags":["kling","text-to-image","image-edit","dlazy","clawhub","chinese","hosted-service"],"summary":"Kling o1 text-to-image and reference-image editing at 2K via the dLazy CLI","description":"Runs `dlazy kling-image-o1` on the dLazy hosted service to make or edit images from a prompt and up to 10 reference images. Output is fixed at 2K, with aspect ratios from 21:9 to 9:16 or auto; a dry run prints a cost estimate first. The file is CLI help plus auth boilerplate; no prompting guidance.","useWhen":["The user asks for Kling o1 or Kling image","Generating an image from text","Editing an image or combining several reference images"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-kling-image-o1","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-kling-image-o1"},"agents":["openclaw"],"models":["kling_o1_image"],"requires":["dLazy account / API key","Node.js (npm or npx) for @dlazy/cli"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":65,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"grid","hue":320,"text":"kling o1 stills"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Installs @dlazy/cli 1.2.3 from npm and uploads prompts and reference images to api.dlazy.com and files.dlazy.com with a dLazy API key; dLazy is a third-party aggregator reselling Kling access."},{"id":"dlazyai/dlazy-seedance-2-0","slug":"dlazy-seedance-2-0","name":"dLazy Seedance 2.0","skillName":"dlazy-seedance-2.0","type":"skill","status":"beta","stream":"community","adds":"api","category":"cinematic","tags":["seedance","bytedance","multimodal-reference","first-last-frame","dlazy","clawhub","chinese","hosted-service"],"summary":"Seedance 2.0 video from text, image/video/audio references or first and last frames, via dLazy","description":"Runs `dlazy seedance-2.0` on the dLazy hosted service. In components mode it takes up to 9 images, 3 videos and 3 audio files as references; in frames mode it interpolates between a first and last frame. Options cover 480p–1080p, six aspect ratios, 4–15 s, and generated audio (on by default). The file is CLI help plus auth boilerplate; no prompting guidance.","useWhen":["The user asks for Seedance 2.0","Making a video guided by reference images, clips or audio","Generating a clip between a first and a last frame"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-seedance-2-0","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-seedance-2-0"},"agents":["openclaw"],"models":["seedance_2_0"],"requires":["dLazy account / API key","Node.js (npm or npx) for @dlazy/cli"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":65,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"film","hue":20,"text":"seedance refs"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Installs @dlazy/cli 1.2.3 from npm and uploads prompts and reference media to api.dlazy.com and files.dlazy.com with a dLazy API key; dLazy is a third-party aggregator reselling ByteDance Seedance access."},{"id":"dlazyai/dlazy-keling-tts","slug":"dlazy-keling-tts","name":"dLazy Kling TTS","skillName":"dlazy-keling-tts","type":"skill","status":"beta","stream":"community","adds":"api","category":"audio","tags":["tts","kling","voiceover","chinese","dlazy","clawhub","hosted-service"],"summary":"Kling text-to-speech in Chinese or English with 60+ preset voices, via dLazy","description":"Runs `dlazy keling-tts` on the dLazy hosted service to turn text into MP3 or WAV speech. It lists about 35 Chinese preset voices (including regional dialect voices such as Northeastern, Sichuan and Chongqing, and a newsreader) and 27 English ones, with speed 0.8, 1.0 or 1.5. The file is CLI help plus auth boilerplate; there is no emotion or style control beyond voice choice.","useWhen":["The user asks for Kling TTS","Turning a script into a voiceover","Needing a Chinese dialect or character voice"],"notFor":["Cloning a specific person's voice (see the Kling audio clone skill)"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-keling-tts","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-keling-tts"},"agents":["openclaw"],"models":["kling-tts"],"requires":["dLazy account / API key","Node.js (npm or npx) for @dlazy/cli"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":65,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"wave","hue":140,"text":"kling voice"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Installs @dlazy/cli 1.2.3 from npm and sends text to api.dlazy.com (audio hosted on files.dlazy.com) with a dLazy API key; dLazy is a third-party aggregator reselling Kling access."},{"id":"dlazyai/dlazy-text-spoken-script","slug":"dlazy-text-spoken-script","name":"Spoken Script Writer","skillName":"dlazy-text-spoken-script","type":"skill","status":"beta","stream":"community","adds":"tool","category":"talking-head","tags":["script","talking-head","personal-brand","shorts","dlazy","clawhub","chinese","hosted-service"],"summary":"Writes short-video talking-head scripts in a fixed 7-step story structure for a personal brand","description":"A prompt template: the agent writes a spoken script for short video following seven steps — contrasting persona hook, relatable pain point, a concrete story, a counter-intuitive viewpoint, the speaker's own experience with small actions, a lift back to the persona, and a quotable closing line. It includes one worked example (a 70-year-old woman talking to stay-at-home mothers) and asks for colloquial, speakable text backed by specific people and events. No scripts of its own; the attached dLazy boilerplate also carries image-generation instructions (run `dlazy seedream-4.5` one step at a time) that look copied from another skill, and it suggests a separate storyboard skill next.","useWhen":["Writing a talking-head script for Douyin or similar short video","Telling a character story or sharing a personal viewpoint on camera","Building content for a personal brand (IP) account"],"notFor":["Empty motivational talk with no concrete story"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-text-spoken-script","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-text-spoken-script"},"agents":["openclaw"],"requires":["dLazy account / API key (only for any follow-on generation)"],"cost":{"note":"Free — writes text only; any follow-on dLazy generation is billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":64,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"notes","hue":45,"text":"7-step script"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). The writing step runs locally in the agent; the bundled boilerplate tells the agent to install @dlazy/cli from npm and call api.dlazy.com with a dLazy API key for image generation, which this skill does not otherwise need."},{"id":"dlazyai/dlazy-pixverse-c1","slug":"dlazy-pixverse-c1","name":"dLazy PixVerse C1","skillName":"dlazy-pixverse-c1","type":"skill","status":"beta","stream":"community","adds":"api","category":"cinematic","tags":["pixverse","action","vfx","first-last-frame","dlazy","clawhub","chinese","hosted-service"],"summary":"PixVerse C1 video for action and VFX shots: text, image, reference or first/last frame, via dLazy","description":"Runs `dlazy pixverse-c1` on the dLazy hosted service. One model covers text-to-video, image-to-video with up to 7 reference images, and first/last-frame interpolation; the listing pitches it for action, VFX and high-motion scenes. Options cover 360P–1080P, eight aspect ratios, 1–15 s and optional generated audio. The file is CLI help plus auth boilerplate; no prompting guidance.","useWhen":["The user asks for PixVerse C1","Generating action, effects-heavy or fast-motion shots","Making a clip from reference images or between two frames"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-pixverse-c1","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-pixverse-c1"},"agents":["openclaw"],"models":["pixverse_c1"],"requires":["dLazy account / API key","Node.js (npm or npx) for @dlazy/cli"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":64,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"film","hue":0,"text":"action vfx"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Installs @dlazy/cli 1.2.3 from npm and uploads prompts and images to api.dlazy.com and files.dlazy.com with a dLazy API key; dLazy is a third-party aggregator reselling PixVerse access."},{"id":"dlazyai/dlazy-kling-v3-omni","slug":"dlazy-kling-v3-omni","name":"dLazy Kling V3 Omni","skillName":"dlazy-kling-v3-omni","type":"skill","status":"beta","stream":"community","adds":"api","category":"cinematic","tags":["kling","omni","video-reference","video-edit","dlazy","clawhub","chinese","hosted-service"],"summary":"Kling v3 Omni video from frames, up to 7 images or a reference video, via the dLazy CLI","description":"Runs `dlazy kling-v3-omni` on the dLazy hosted service. Frames mode works from images; components mode also accepts one reference video, used either for its features or as the base clip to rework, with an option to keep the original sound. Options cover 16:9, 9:16 or 1:1 and 3–15 s (fixed by the source when a base video is used). The file is CLI help plus auth boilerplate; no prompting guidance.","useWhen":["The user asks for Kling v3 Omni","Generating video from several reference images","Reworking or restyling an existing clip with a prompt"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-kling-v3-omni","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-kling-v3-omni"},"agents":["openclaw"],"models":["kling_v3_omni"],"requires":["dLazy account / API key","Node.js (npm or npx) for @dlazy/cli"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":64,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"film","hue":260,"text":"omni remix"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Installs @dlazy/cli 1.2.3 from npm and uploads prompts, images and video to api.dlazy.com and files.dlazy.com with a dLazy API key; dLazy is a third-party aggregator reselling Kling access."},{"id":"dlazyai/dlazy-kling-audio-clone","slug":"dlazy-kling-audio-clone","name":"dLazy Kling Voice Clone","skillName":"dlazy-kling-audio-clone","type":"skill","status":"beta","stream":"community","adds":"api","category":"audio","tags":["voice-clone","kling","tts","dlazy","clawhub","chinese","hosted-service"],"summary":"Clones a voice from a reference audio file with Kling, via the dLazy CLI","description":"Runs `dlazy kling-audio-clone` on the dLazy hosted service with two inputs: a reference audio file (URL or local path) and a name for the cloned voice. The SKILL.md does not explain what the result is or how to use the cloned voice for speech afterwards, and its examples wrongly pass --prompt. CLI help plus auth boilerplate only.","useWhen":["The user asks for Kling voice cloning","Creating a custom voice from a recording","Needing narration in a specific speaker's timbre"],"notFor":["Cloning a voice without the speaker's consent"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-kling-audio-clone","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-kling-audio-clone"},"agents":["openclaw"],"models":["kling-audio-clone"],"requires":["dLazy account / API key","Node.js (npm or npx) for @dlazy/cli"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":64,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"wave","hue":170,"text":"your voice"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Installs @dlazy/cli 1.2.3 from npm and uploads the voice sample to files.dlazy.com and api.dlazy.com with a dLazy API key; dLazy is a third-party aggregator reselling Kling access, and the skill has no consent check for cloned voices."},{"id":"dlazyai/dlazy-jimeng-i2v-first-tail","slug":"dlazy-jimeng-i2v-first-tail","name":"dLazy Jimeng First-Last Frame","skillName":"dlazy-jimeng-i2v-first-tail","type":"skill","status":"beta","stream":"community","adds":"api","category":"cinematic","tags":["jimeng","first-last-frame","transition","image-to-video","dlazy","clawhub","chinese","hosted-service"],"summary":"Jimeng (Dreamina) transition video between a first and last frame, 5 or 10 s, via dLazy","description":"Runs `dlazy jimeng-i2v-first-tail` on the dLazy hosted service: give a first frame, a last frame and a prompt, and Jimeng 3.0 generates the motion between them. Duration is 5 or 10 seconds; there are no aspect-ratio or resolution options. The file is CLI help plus auth boilerplate, and its examples use an --image flag the help does not list.","useWhen":["The user asks for Jimeng first/last frame video","Making a transition between two stills","Locking both the start and end shot of a clip"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-jimeng-i2v-first-tail","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-jimeng-i2v-first-tail"},"agents":["openclaw"],"models":["jimeng"],"requires":["dLazy account / API key","Node.js (npm or npx) for @dlazy/cli"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":63,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"film","hue":95,"text":"frame A to B"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Installs @dlazy/cli 1.2.3 from npm and uploads frames and prompts to api.dlazy.com and files.dlazy.com with a dLazy API key; dLazy is a third-party aggregator reselling Jimeng (Volcengine) access."},{"id":"dlazyai/dlazy-veo-3-1","slug":"dlazy-veo-3-1","name":"dLazy Veo 3.1","skillName":"dlazy-veo-3.1","type":"skill","status":"beta","stream":"community","adds":"api","category":"cinematic","tags":["veo","google","first-last-frame","video-extend","dlazy","clawhub","chinese","hosted-service"],"summary":"Google Veo 3.1 video from frames or reference images, plus +7 s extend, up to 4K, via dLazy","description":"Runs `dlazy veo-3.1` on the dLazy hosted service in three modes: frames (first and/or last frame, 4, 6 or 8 s), components (up to 3 reference images, fixed 8 s), and extend (adds 7 s to an existing video). Output is 16:9 or 9:16 at 720P, 1080P or 4K. The file is CLI help plus auth boilerplate; no prompting guidance.","useWhen":["The user asks for Veo 3.1","Generating cinematic or effects shots from text or images","Extending an existing Veo clip"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-veo-3-1","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-veo-3-1"},"agents":["openclaw"],"models":["veo_3_1"],"requires":["dLazy account / API key","Node.js (npm or npx) for @dlazy/cli"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":63,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"film","hue":230,"text":"veo extend"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Installs @dlazy/cli 1.2.3 from npm and uploads prompts, frames and video to api.dlazy.com and files.dlazy.com with a dLazy API key; dLazy is a third-party aggregator reselling Google Veo access."},{"id":"dlazyai/dlazy-keling-sfx","slug":"dlazy-keling-sfx","name":"Kling SFX via dLazy","skillName":"dlazy-keling-sfx","type":"skill","status":"beta","stream":"community","adds":"api","category":"sfx","tags":["kling","sound-effects","foley","bgm","dlazy","clawhub","chinese","hosted-service"],"summary":"Generate sound effects from a text prompt or matched to a video with Kling SFX, through the dLazy CLI.","description":"Runs Kling's sound-effect model through the dLazy hosted service and its `dlazy keling-sfx` CLI command. Give it a text prompt (3–10 s clip), or give it one video and it scores that video with sound effects or background music, with an optional ASMR mode. The skill is a thin wrapper over the CLI: install the pinned @dlazy/cli npm package, log in, and run the command; `--dry-run` prints the payload and a cost estimate. The output example in the SKILL.md is copied boilerplate showing an image result.","useWhen":["You need sound effects generated from a text description","You want sound effects or a music bed matched to an existing video clip","Someone asks for Kling SFX or video dubbing with ambient sound"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-keling-sfx","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-keling-sfx"},"agents":["openclaw"],"models":["kling-sfx"],"requires":["dLazy account and API key","Node.js with npm/npx (@dlazy/cli)"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":63,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"wave","hue":30,"text":"glass shatter"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Sends prompts to api.dlazy.com and uploads local media to files.dlazy.com via the @dlazy/cli npm package; needs a dLazy API key stored in ~/.dlazy/config.json, and dLazy acts as a reseller in front of Kling."},{"id":"dlazyai/dlazy-jimeng-dream-actor","slug":"dlazy-jimeng-dream-actor","name":"Jimeng Dream Actor via dLazy","skillName":"dlazy-jimeng-dream-actor","type":"skill","status":"beta","stream":"community","adds":"api","category":"talking-head","tags":["jimeng","image-to-video","motion-transfer","characters","dlazy","clawhub","chinese","hosted-service"],"summary":"Animate a still character image into an action video with Jimeng Dream Actor, through the dLazy CLI.","description":"Wraps Jimeng's Dream Actor model behind the dLazy hosted service and its `dlazy jimeng-dream-actor` CLI command. It takes a prompt, one character image and optionally one driving video, and returns an action video of that character. The SKILL.md only documents CLI flags (prompt, images, videos, save path, dry-run cost estimate); it does not describe limits, durations or what the driving video controls.","useWhen":["You want a static character or person image turned into a moving action video","You want to make an image move using Jimeng Dream Actor","You have a reference motion video to drive a character photo"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-jimeng-dream-actor","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-jimeng-dream-actor"},"agents":["openclaw"],"models":["dreamactor"],"requires":["dLazy account and API key","Node.js with npm/npx (@dlazy/cli)"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":62,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"avatar","hue":290,"text":"still to motion"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Sends prompts to api.dlazy.com and uploads local images and videos to files.dlazy.com via the @dlazy/cli npm package; needs a dLazy API key, and dLazy acts as a reseller in front of Jimeng (ByteDance)."},{"id":"dlazyai/dlazy-jimeng-omnihuman-1-5","slug":"dlazy-jimeng-omnihuman-1-5","name":"OmniHuman 1.5 via dLazy","skillName":"dlazy-jimeng-omnihuman-1.5","type":"skill","status":"beta","stream":"community","adds":"api","category":"talking-head","tags":["omnihuman","jimeng","digital-human","lip-sync","dlazy","clawhub","chinese","hosted-service"],"summary":"Turn a portrait photo and an audio track into a talking digital-human video with OmniHuman 1.5, via the dLazy CLI.","description":"Runs Jimeng OmniHuman 1.5 through the dLazy hosted service with the `dlazy jimeng-omnihuman-1.5` CLI command. You pass one portrait image, one audio file and an optional prompt; it returns a presenter-style video of that person speaking. Options are 720p (audio up to 60 s) or 1080p (audio up to 30 s) and a fast mode. The description mentions text input, but the documented flags only take audio, so you need a voice track first.","useWhen":["You need a digital human or virtual presenter video from a photo","You have a voiceover and want a portrait to speak it with lip sync","Someone asks for Jimeng OmniHuman"],"notFor":["Text-only input without an audio track (the CLI takes audio)"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-jimeng-omnihuman-1-5","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-jimeng-omnihuman-1-5"},"agents":["openclaw"],"models":["omnihuman_1_5"],"requires":["dLazy account and API key","Node.js with npm/npx (@dlazy/cli)"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":62,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"avatar","hue":190,"text":"news anchor"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Sends prompts to api.dlazy.com and uploads the portrait and audio to files.dlazy.com via the @dlazy/cli npm package; needs a dLazy API key, and dLazy acts as a reseller in front of Jimeng (ByteDance). Uses a real person's likeness and voice, so consent is on the user."},{"id":"dlazyai/dlazy-viduq2-i2v","slug":"dlazy-viduq2-i2v","name":"Vidu Q2 Image-to-Video via dLazy","skillName":"dlazy-viduq2-i2v","type":"skill","status":"beta","stream":"community","adds":"api","category":"cinematic","tags":["vidu","image-to-video","camera","first-last-frame","dlazy","clawhub","chinese","hosted-service"],"summary":"Animate images into 2–10 s clips with Vidu Q2, by reference images or first/last frame, through the dLazy CLI.","description":"Runs the Vidu Q2 image-to-video model through the dLazy hosted service with the `dlazy viduq2-i2v` CLI command. Two modes: components (up to 10 reference images plus up to 7 saved subject IDs) and frames (first and optional last frame). Options cover 2–10 s duration, eight aspect ratios, 540p to 1080p, and optional generated audio (all or speech only). The SKILL.md is a flag reference with no prompting advice.","useWhen":["You want a still image turned into a video with camera movement","You need a clip that goes from a given first frame to a last frame","Someone asks for Vidu Q2"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-viduq2-i2v","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-viduq2-i2v"},"agents":["openclaw"],"models":["vidu_q2"],"requires":["dLazy account and API key","Node.js with npm/npx (@dlazy/cli)"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":61,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"film","hue":140,"text":"slow dolly in"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Sends prompts to api.dlazy.com and uploads local images to files.dlazy.com via the @dlazy/cli npm package; needs a dLazy API key, and dLazy acts as a reseller in front of Vidu."},{"id":"dlazyai/dlazy-veo-3-1-fast","slug":"dlazy-veo-3-1-fast","name":"Veo 3.1 Fast via dLazy","skillName":"dlazy-veo-3.1-fast","type":"skill","status":"beta","stream":"community","adds":"api","category":"cinematic","tags":["veo","google","text-to-video","image-to-video","dlazy","clawhub","chinese","hosted-service"],"summary":"Quick 4–8 s text- or image-to-video clips and +7 s extensions with Google Veo 3.1 Fast, via the dLazy CLI.","description":"Runs Google Veo 3.1 Fast through the dLazy hosted service with the `dlazy veo-3.1-fast` CLI command. In frames mode it makes 4, 6 or 8 s clips from a prompt with optional first and last frames, in 16:9 or 9:16 at 720p, 1080p or 4K; in extend mode it adds 7 s to an existing video. The SKILL.md is a flag reference only.","useWhen":["You need a short video generated quickly from text or an image","You want to extend an existing clip by a few seconds","Someone asks for Veo 3.1 Fast"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-veo-3-1-fast","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-veo-3-1-fast"},"agents":["openclaw"],"models":["veo_3_1_fast"],"requires":["dLazy account and API key","Node.js with npm/npx (@dlazy/cli)"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":61,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"film","hue":220,"text":"fast take"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Sends prompts to api.dlazy.com and uploads local frames and videos to files.dlazy.com via the @dlazy/cli npm package; needs a dLazy API key, and dLazy acts as a reseller in front of Google Veo."},{"id":"dlazyai/dlazy-wan2-7","slug":"dlazy-wan2-7","name":"Wan 2.7 via dLazy","skillName":"dlazy-wan2.7","type":"skill","status":"beta","stream":"community","adds":"api","category":"cinematic","tags":["wan","alibaba","text-to-video","reference-to-video","dlazy","clawhub","chinese","hosted-service"],"summary":"Text, first/last-frame and reference-to-video with Alibaba's Wan 2.7, 2–15 s clips, through the dLazy CLI.","description":"Runs Alibaba's Tongyi Wanxiang (Wan) 2.7 video model through the dLazy hosted service with the `dlazy wan2.7` CLI command. Components mode takes up to 5 reference images and 5 reference videos; frames mode takes a first and last frame; both accept an optional audio file. Clips run 2–15 s at 720P or 1080P, and prompt rewriting is on by default. The SKILL.md is a flag reference only.","useWhen":["You want text-to-video or image-to-video with Wan 2.7","You need a clip guided by reference images or videos","You want a video that interpolates between a first and last frame"],"publisher":{"name":"dlazyai","handle":"dlazyai","kind":"community","url":"https://clawhub.ai/dlazyai","avatar":"https://github.com/dlazyai.png","verified":false},"source":{"url":"https://clawhub.ai/dlazyai/skills/dlazy-wan2-7","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install dlazy-wan2-7"},"agents":["openclaw"],"models":["wan_2_7"],"requires":["dLazy account and API key","Node.js with npm/npx (@dlazy/cli)"],"cost":{"note":"Billed in dLazy credits"},"files":["SKILL.md"],"stats":{"installs":60,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"film","hue":330,"text":"ink and river"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Sends prompts to api.dlazy.com and uploads local images, videos and audio to files.dlazy.com via the @dlazy/cli npm package; needs a dLazy API key, and dLazy acts as a reseller in front of Alibaba Wan."},{"id":"um-why/douyin-search-keyword","slug":"douyin-search-keyword","name":"Douyin Search and Hot List","skillName":"douyin-search-keyword","type":"skill","status":"beta","stream":"community","adds":"tool","category":"research","tags":["douyin","trends","competitor-analysis","comments","json","clawhub","chinese"],"summary":"Read-only Douyin data as JSON: keyword search, creator posts and follower stats, comments and the live hot list.","description":"Four Node.js scripts that query public Douyin data through the third-party Guaikei data API: keyword search (sort by relevance, likes or recency; filter by time, length, video or image post), a creator's posts and follower counts, comments on a video, and the roughly 50-item hot list. Output is one JSON envelope per call with titles, authors, like/comment/share counts, links and dates, up to 10,000 items, and results are also saved to a local logs folder. It does not log in or post. The SKILL.md has strict agent rules: ask for missing keywords or links, never retry after auth errors, never change the query without asking.","useWhen":["You want trending Douyin topics or today's hot list","You need to search Douyin videos or image posts by keyword for content ideas","You want to benchmark a competitor creator's posts and follower numbers","You want to see what commenters say under a Douyin video"],"notFor":["Xiaohongshu, Kuaishou, Bilibili, Weibo or WeChat Official Accounts","Logged-in, private or write actions (posting, liking, commenting)"],"publisher":{"name":"um-why","handle":"um-why","kind":"community","url":"https://clawhub.ai/um-why","avatar":"https://github.com/um-why.png","verified":false},"source":{"url":"https://clawhub.ai/um-why/skills/douyin-search-keyword","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install douyin-search-keyword"},"agents":["openclaw"],"requires":["Guaikei API token (GUAIKEI_API_TOKEN)","Node.js 16.14+"],"cost":{"note":"Billed by Guaikei (your own API token)"},"files":["SKILL.md"],"stats":{"installs":58,"stars":4,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"cards","hue":0,"text":"hot list #1"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Sends keywords and Douyin links to the third-party data API at www.guaikei.com, which supplies scraped public Douyin data, and needs a GUAIKEI_API_TOKEN (the setup note points to a WeChat contact for support); no Douyin login or cookies are used."},{"id":"ncsimok/doorstep-video-editor","slug":"doorstep-video-editor","name":"Local Video Editor (MoviePy)","skillName":"video-editor","type":"skill","status":"beta","stream":"community","adds":"tool","category":"editing","tags":["moviepy","ffmpeg","subtitles","vertical-video","captions","clawhub","chinese"],"summary":"Local MoviePy + ffmpeg toolbox: trim, merge, Chinese text and subtitles, background music, speed, vertical resize.","description":"A Python script built on MoviePy v2 and ffmpeg that edits video locally with no external API. Commands cover info, trim, merge, adding Chinese text at top or bottom, burning subtitles from a JSON file, adding or replacing background music and audio, speed change, resizing to 1080x1920 vertical, and a text-only explainer clip. It includes short recipes for a 15 s Douyin/Xiaohongshu promo and a talking-to-camera edit; the examples come from the author's home sports service.","useWhen":["You need to trim, merge or resize short videos for Douyin or Xiaohongshu","You want to add Chinese titles or subtitles to a video","You want to add or replace background music or the voice track"],"publisher":{"name":"ncsimok","handle":"ncsimok","kind":"community","url":"https://clawhub.ai/ncsimok","avatar":"https://github.com/ncsimok.png","verified":false},"source":{"url":"https://clawhub.ai/ncsimok/skills/doorstep-video-editor","license":"unknown"},"install":{"openclaw":"npx clawhub@latest install doorstep-video-editor"},"agents":["openclaw"],"requires":["Python 3 with moviepy, pillow, numpy","ffmpeg (via imageio-ffmpeg)"],"cost":{"note":"Free — runs locally"},"files":["SKILL.md"],"stats":{"installs":56,"stars":0,"source":"ClawHub","asOf":"2026-10-27"},"addedAt":"2026-10-27","preview":{"kind":"timeline","hue":100,"text":"trim · merge · subs"},"legal":"Not manually reviewed — listed from ClawHub (2026-10-27). Runs locally with MoviePy and ffmpeg; it calls no external hosts and needs no API keys."},{"id":"browser-use/video-use","slug":"video-use","name":"video-use","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["transcript-first","edl","ffmpeg","subtitles","color-grade","talking-head","edit-agents","skill"],"summary":"Drop raw takes in a folder, chat with your agent, get final.mp4: transcript-first cuts, grade, subtitles, overlays.","description":"Open-source editing skill from the browser-use team. The agent reads a packed word-level transcript (ElevenLabs Scribe) instead of watching frames, writes an edl.json, renders with ffmpeg and self-checks every cut boundary with filmstrip and waveform images before you see a preview. It removes fillers and dead air, grades each segment, adds 30 ms audio fades, burns subtitles and spawns sub-agents for HyperFrames, Remotion or Manim overlays.","useWhen":["edit talking-head takes into one video","remove ums, false starts and dead air","assemble a launch video from raw clips"],"notFor":["generating footage from prompts"],"publisher":{"name":"Browser Use","handle":"browser-use","kind":"community","url":"https://browser-use.com","avatar":"https://github.com/browser-use.png","verified":false},"source":{"url":"https://github.com/browser-use/video-use","repo":"browser-use/video-use","license":"MIT"},"agents":["claude-code","codex","openclaw"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"video-use"},"install":{"claude-code":"git clone https://github.com/browser-use/video-use ~/Developer/video-use && ln -sfn ~/Developer/video-use ~/.claude/skills/video-use","codex":"ln -sfn ~/Developer/video-use ~/.codex/skills/video-use"},"requires":["ffmpeg","ElevenLabs API key","uv or pip"],"cost":{"note":"Free/open source"},"stats":{"stars":29979,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-08"},{"id":"FireRedTeam/firered-openstoryline","slug":"firered-openstoryline","name":"FireRed-OpenStoryline","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["conversational-editing","rough-cut","beat-sync","storyline","chinese","edit-agents","app"],"summary":"Conversational editing agent: finds media, writes the storyline, beat-syncs music and refines the cut by chat.","description":"An AI video editing agent from Xiaohongshu's FireRed team. You describe the video and it searches and segments media, writes narration, recommends music, voice and fonts with beat sync, then lets you cut, swap or resequence clips in natural language. It added an ASR-based rough cut skill that removes fillers and repeated sentences, AI transitions, and lets you save a whole editing workflow as a reusable Skill. Ships OpenClaw and Codex skills for install and use.","useWhen":["rough-cut a speech video by its transcript","turn a folder of clips into a styled vlog or product video","replay a saved editing style on new media"],"notFor":[],"publisher":{"name":"FireRed Team","handle":"FireRedTeam","kind":"community","url":"https://github.com/FireRedTeam","avatar":"https://github.com/FireRedTeam.png","verified":false},"source":{"url":"https://github.com/FireRedTeam/FireRed-OpenStoryline","repo":"FireRedTeam/FireRed-OpenStoryline","license":"Apache-2.0"},"agents":["openclaw","codex","claude-code"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"FireRed-OpenStoryline"},"install":{"openclaw":"npx clawhub install openstoryline-use","codex":"npx skills add FireRedTeam/FireRed-OpenStoryline --skill openstoryline-use --agent codex"},"cost":{"note":"Free/open source"},"stats":{"stars":3573,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-07-31"},{"id":"barefootford/buttercut","slug":"buttercut","name":"ButterCut","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["fcpxml","premiere","resolve","rough-cut","selects","whisperx","edit-agents","skill"],"summary":"Claude Code builds selects, scenes and rough cuts from your footage library and exports XML for FCP, Premiere, Resolve.","description":"A Claude Code video editing agent that indexes your footage into libraries (WhisperX transcripts plus visual notes) and then builds cuts with you: selects, scenes or a rough cut. The result is exported as timeline XML you open and finish in Final Cut Pro, Premiere Pro or DaVinci Resolve. The free core does single-track cuts; a paid Pro edition adds B-roll layered over the A-roll and multicam.","useWhen":["rough-cut an interview or vlog for a real NLE","pull selects from hours of footage","hand an editable timeline to a human editor"],"notFor":["Windows or Linux (not supported yet)"],"publisher":{"name":"TubeSalt (barefootford)","handle":"barefootford","kind":"community","url":"https://buttercut.io","avatar":"https://github.com/barefootford.png","verified":false},"source":{"url":"https://github.com/barefootford/buttercut","repo":"barefootford/buttercut","license":"custom (see repo)"},"agents":["claude-code"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"ButterCut"},"install":{"claude-code":"git clone https://github.com/barefootford/buttercut.git && cd buttercut  # then run the /setup skill"},"requires":["macOS on Apple Silicon","Ruby","Python","ffmpeg","WhisperX"],"cost":{"note":"Free core (PolyForm Noncommercial); Pro $49/year"},"stats":{"stars":613,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-23"},{"id":"poseljacob/agentic-video-editor","slug":"agentic-video-editor","name":"Agentic Video Editor (ave)","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["ads","gemini","edit-plan","reviewer-loop","ffmpeg","edit-agents","cli"],"summary":"CLI where Gemini agents pick shots, trim, render with FFmpeg and score the result until a brief is met.","description":"A command-line editor that turns a folder of raw clips plus a creative brief into an ad. A Director agent searches a shot index and writes an EditPlan, a Trim Refiner tightens boundaries, an Editor renders it with FFmpeg/MoviePy and a Reviewer scores adherence, pacing and quality, sending feedback back to the Director when the score is under a threshold. Pipelines and ad structures are YAML files you can change.","useWhen":["cut UGC or DTC ads from raw footage","batch ad variants from one brief","learn a director/reviewer loop you can fork"],"notFor":[],"publisher":{"name":"poseljacob","handle":"poseljacob","kind":"community","url":"https://github.com/poseljacob","avatar":"https://github.com/poseljacob.png","verified":false},"source":{"url":"https://github.com/poseljacob/agentic-video-editor","repo":"poseljacob/agentic-video-editor","license":"MIT"},"agents":["claude-code","codex","cursor"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"Agentic Video Editor (ave)"},"install":{"claude-code":"git clone https://github.com/poseljacob/agentic-video-editor.git && cd agentic-video-editor && pip install -e \".[dev]\""},"requires":["Python 3.11+","ffmpeg","Google AI (Gemini) API key"],"cost":{"note":"Free/open source"},"stats":{"stars":506,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-04-14"},{"id":"0xsline/openchatcut","slug":"openchatcut","name":"OpenChatCut","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["timeline","mcp","remotion","local-first","desktop","edit-agents","app"],"summary":"Local-first chat video editor with a multi-track timeline that Codex and Claude Code can edit over MCP.","description":"An open-source alternative to ChatCut: a desktop/web editor with a professional multi-track timeline, a built-in agent, Agent Skills and an MCP endpoint, rendered with Remotion. Codex or Claude Code can read, edit and export real projects that stay fully editable by hand. A paid Pro desktop edition exists.","useWhen":["let your agent edit a project you can still fix by hand","chat-edit on a real multi-track timeline","keep footage local"],"notFor":[],"publisher":{"name":"0xsline","handle":"0xsline","kind":"community","url":"https://openchatcut.com","avatar":"https://github.com/0xsline.png","verified":false},"source":{"url":"https://github.com/0xsline/OpenChatCut","repo":"0xsline/OpenChatCut","license":"AGPL-3.0"},"agents":["claude-code","codex","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"OpenChatCut"},"install":{"claude-code":"npx skills add 0xsline/OpenChatCut","mcp":"claude mcp add --transport http openchatcut http://localhost:5199/api/external-mcp/mcp"},"requires":["Node.js","local OpenChatCut app running"],"cost":{"note":"Free/open source (AGPL); paid Pro edition"},"stats":{"stars":2731,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-21"},{"id":"JimLiu/baocut","slug":"baocut","name":"BaoCut","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["timeline","subtitles","translation","dubbing","desktop","edit-agents","app"],"summary":"Desktop AI video agent that transcribes, subtitles, translates, dubs, cuts and animates into an editable timeline.","description":"A macOS/Windows app by Jim Liu built around one editable video rather than a one-shot MP4: transcripts, translations, subtitle layers, chapters, voice-overs and motion graphics all live in the timeline, and SRT/MP4 are exports. Its agent features run on a signed-in Codex CLI or Claude Code, and external agents can drive it through a desktop CLI entrypoint.","useWhen":["subtitle, translate and dub a video and keep editing it","fix one wrong line without re-rendering everything","drive an editor from Codex or Claude Code"],"notFor":[],"publisher":{"name":"Jim Liu","handle":"JimLiu","kind":"community","url":"https://baocut.com","avatar":"https://github.com/JimLiu.png","verified":false},"source":{"url":"https://github.com/JimLiu/baocut","repo":"JimLiu/baocut","license":"custom (see repo)"},"agents":["claude-code","codex"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"BaoCut"},"requires":["ffmpeg and ffprobe","Codex CLI or Claude Code sign-in"],"cost":{"note":"Free download (custom license)"},"stats":{"stars":1559,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-28"},{"id":"cartesiancs/cartcut","slug":"cartcut","name":"CartCut","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["editor","mcp","layers","motion","edit-agents","app"],"summary":"Layer-based video editor built for AI agents, with a Claude Code plugin, skill and MCP server.","description":"An open-source editor with cut editing, animation, sound mixing and layer-based (not track-based) effects, designed so agents can drive it. It ships a Claude Code plugin with a cartcut-editing skill and an MCP server package, plus a web demo.","useWhen":["give your agent a real editor with layers and keyframes","apply many effects per asset","edit motion-heavy social videos"],"notFor":[],"publisher":{"name":"Cartesian","handle":"cartesiancs","kind":"community","url":"https://cartesiancs.com/cartcut","avatar":"https://github.com/cartesiancs.png","verified":false},"source":{"url":"https://github.com/cartesiancs/cartcut","repo":"cartesiancs/cartcut","license":"MIT"},"agents":["claude-code","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"CartCut"},"install":{"claude-code":"/plugin marketplace add cartesiancs/cartcut  then  /plugin install cartcut-editing@cartcut","mcp":"npx -y @cartesiancs/cartcut-mcp"},"cost":{"note":"Free/open source"},"stats":{"stars":818,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-27","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/773a8450ea91/cartcut.webp","w":960,"h":629,"blur":"data:image/webp;base64,UklGRi4BAABXRUJQVlA4WAoAAAAQAAAAHwAAEwAAQUxQSEEAAAABV6AYABqoA6AM+s3fcBoREd9OMXWEmkh2qiR8e1RQ4gEBSEBCJKABGRi9kjai/xNwH+xV4CnEM9n/UYgnssaEDQBWUDggxgAAAPAEAJ0BKiAAFAA+yVCfS6ekoqGwDADwGQljAMTcCAFKjNciOXzx0Hh9rahjDeOUUAD+9YNQR1wRKn/LrDpOZGlq2pwX31i0ZiMflu6DeCpU1Y6dD87kHNGx9+AeNdtOL2kxK8T2GOGIfXy8pcZcdOswxru12ko7xYzPh3K3Y7b/EMvsZeJEB7BnTjtMypcjxVilizgAKBJnaWqCQ36PVI+mDeFG7Eje6xGl/KxAhUb+YeKnGtT2brhGEsnLdGYXaPOGucWAAA==","source":"https://raw.githubusercontent.com/cartesiancs/cartcut/main/.github/screenshotv6.webp","page":"https://raw.githubusercontent.com/cartesiancs/cartcut/main/.github/screenshotv6.webp","credit":"Cartesian (README)","rights":"publisher-repo","bytes":49594,"addedAt":"2026-10-28","note":"Image from the project README"}},{"id":"hypit-ai/hypit","slug":"hypit","name":"Hypit","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["remake","variants","b-roll","captions","ugc","edit-agents","skill"],"summary":"Clone a viral video as a word-anchored workflow: swap face, words and B-roll, then ship many variants.","description":"Hypit gives coding agents a language (SVML) and a runtime for video: drop in a reference and the agent rebuilds it as a workflow of footage, captions, B-roll and effects anchored to words instead of seconds. You can then swap the speaker, script or B-roll and render many variants in one command, or start from templates. Generation models are optional.","useWhen":["remake a reference reel with your own footage","produce many ad variants from one structure","keep captions and B-roll tied to words"],"notFor":[],"publisher":{"name":"Hypit","handle":"hypit-ai","kind":"community","url":"https://hypit.ai","avatar":"https://github.com/hypit-ai.png","verified":false},"source":{"url":"https://github.com/hypit-ai/hypit","repo":"hypit-ai/hypit","license":"custom (see repo)"},"agents":["claude-code","codex"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"Hypit"},"install":{"claude-code":"npx skills add hypit-ai/hypit -g"},"cost":{"note":"Free (model services billed separately)"},"stats":{"stars":26114,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-26"},{"id":"hassancs91/claude-youtube-editor","slug":"claude-youtube-editor","name":"claude-youtube-editor","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["youtube","talking-head","remotion","thumbnail","sfx","edit-agents","skill"],"summary":"Record a talking head; Claude Code does the cut, Remotion visuals, voice, SFX, thumbnail and YouTube upload.","description":"A six-step Claude Code pipeline by Hasan Aboul Hasan that takes a raw talking-head recording to a published YouTube video. Every on-screen moment is built as Remotion TSX and composited over your cut, and a /brand-setup skill makes the output match your channel. A free step-by-step guide on his site walks through setup.","useWhen":["edit a YouTube talking-head video end to end","add code-built screen graphics instead of screen recordings","brand a repeatable channel format"],"notFor":[],"publisher":{"name":"Hasan Aboul Hasan","handle":"hassancs91","kind":"community","url":"https://learnwithhasan.com/guide/how-to-edit-videos-with-claude-code/","avatar":"https://github.com/hassancs91.png","verified":false},"source":{"url":"https://github.com/hassancs91/claude-youtube-editor","repo":"hassancs91/claude-youtube-editor","license":"MIT"},"agents":["claude-code"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"claude-youtube-editor"},"install":{"claude-code":"git clone https://github.com/hassancs91/claude-youtube-editor"},"requires":["Python","Node.js","ffmpeg"],"cost":{"note":"Free/open source"},"stats":{"stars":353,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-08-18"},{"id":"kurbaitaev/ghost-editor","slug":"ghost-editor","name":"ghost-editor","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["talking-head","reels","captions","motion-graphics","style-clone","edit-agents","skill"],"summary":"Talking-head reel editor in your agent: best takes, face-safe word captions, motion graphics, 7 styles.","description":"Send it a raw selfie-style recording and get a finished Instagram, TikTok or Shorts reel. It keeps the best take of each sentence, removes pauses and false starts, times captions to every word while keeping them off your face and the app's buttons, and adds numbers, cards and animated text as you say them. It can also reverse-engineer a reference edit and copy its style.","useWhen":["turn a raw talking-head clip into a reel","copy the style of an edit you paid for","captions that never cover the face"],"notFor":[],"publisher":{"name":"kurbaitaev","handle":"kurbaitaev","kind":"community","url":"https://github.com/kurbaitaev","avatar":"https://github.com/kurbaitaev.png","verified":false},"source":{"url":"https://github.com/kurbaitaev/ghost-editor","repo":"kurbaitaev/ghost-editor","license":"MIT"},"agents":["claude-code"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"ghost-editor"},"requires":["ffmpeg","Node","Python","Whisper","Gemini API key"],"cost":{"note":"Free/open source"},"stats":{"stars":81,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-14"},{"id":"YeJe-cpu/seecut","slug":"seecut","name":"SeeCut","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["talking-head","avatar","hyperframes","jianying","self-review","chinese","edit-agents","skill"],"summary":"Talking-head and AI-avatar fine cut that watches its own render with Gemini and iterates up to three versions.","description":"A coding-agent skill that turns a talking-head or avatar recording into a dense short with evidence screenshots, cards and annotations, rendered with HyperFrames and optionally exported as a layered JianYing draft. It uses Gemini to actually watch the video for QA, compares each new version pairwise against the last and only keeps clear wins, for at most three rounds.","useWhen":["polish a spoken short with on-screen evidence","QA an edit by watching it, not by frame dumps","hand a layered draft to JianYing for touch-ups"],"notFor":[],"publisher":{"name":"YeJe-cpu","handle":"YeJe-cpu","kind":"community","url":"https://github.com/YeJe-cpu","avatar":"https://github.com/YeJe-cpu.png","verified":false},"source":{"url":"https://github.com/YeJe-cpu/SeeCut","repo":"YeJe-cpu/SeeCut","license":"custom (see repo)"},"agents":["claude-code"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"SeeCut"},"requires":["ffmpeg","Node 22+","Python","faster-whisper","Gemini access"],"cost":{"note":"Free (custom license)"},"stats":{"stars":398,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-18"},{"id":"Cassette-Editor/oh-my-cassette","slug":"oh-my-cassette","name":"Oh My Cassette","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["montage","music","mcp","hosted","edit-agents"],"summary":"MCP bridge to the Cassette editing agent: import footage and music, brief a montage, revise and export.","description":"A small PyPI MCP bridge that lets Claude Code, Codex, OpenCode or Hermes talk to the hosted Cassette montage agent. You import clips and a song, give a short brief and revisions in plain words, and get an exported MP4; the editing tools come from the Cassette service so they update without a plugin release.","useWhen":["cut a teaser or travel montage to a song","revise an edit with one-line notes","delegate montage editing to a hosted agent"],"notFor":[],"publisher":{"name":"Cassette","handle":"Cassette-Editor","kind":"community","url":"https://trycassette.online","avatar":"https://github.com/Cassette-Editor.png","verified":false},"source":{"url":"https://github.com/Cassette-Editor/oh-my-cassette","repo":"Cassette-Editor/oh-my-cassette","license":"MIT"},"agents":["claude-code","codex","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"Oh My Cassette"},"install":{"claude-code":"claude plugin marketplace add Cassette-Editor/oh-my-cassette && claude plugin install oh-my-cassette@cassette-editor","mcp":"uvx oh-my-cassette==0.6.0 login"},"requires":["Cassette account"],"cost":{"note":"Hosted service (account required)"},"stats":{"stars":126,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-26","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/5d0490ec4868/oh-my-cassette.mp4","w":720,"h":508,"duration":8.1,"blur":"data:image/webp;base64,UklGRk4AAABXRUJQVlA4IEIAAAAQAwCdASogABYAPtFeqE+oJKOiKAgBABoJaQAAQnQ1cJAA/u/mANOJyLecz/nbFbVfp44Uo2fUOwbB4m+3vb8AAAA=","source":"https://raw.githubusercontent.com/Cassette-Editor/oh-my-cassette/main/assets/demo-claude-code.gif","page":"https://raw.githubusercontent.com/Cassette-Editor/oh-my-cassette/main/assets/demo-claude-code.gif","credit":"Cassette (README)","rights":"publisher-repo","bytes":16605,"addedAt":"2026-10-28","note":"Image from the project README"}},{"id":"zenstory-ai/video-recap-skills","slug":"video-recap-skills","name":"Video Recap Skills","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["recap","narration","scene-detection","jianying","chinese","edit-agents","skill"],"summary":"Seven skills that cut one or more videos into a narrated recap: scene detection, ASR, VLM, script, TTS, ffmpeg.","description":"Claude Code and Codex skills from Zenstory that turn episodes of a show or drama into a Chinese narration recap (jieshuo). They detect scenes, transcribe, understand frames with a VLM, write and voice the script, assemble with ffmpeg and can export a JianYing draft for further edits. Remote calls go through one Xiaomi MiMo key; locally only ffmpeg is needed.","useWhen":["make a narrated recap of a series or film","pick and reorder scenes from several episodes","finish the recap in JianYing"],"notFor":[],"publisher":{"name":"Zenstory","handle":"zenstory-ai","kind":"community","url":"https://zenstory.ai/video-recap","avatar":"https://github.com/zenstory-ai.png","verified":false},"source":{"url":"https://github.com/zenstory-ai/video-recap-skills","repo":"zenstory-ai/video-recap-skills","license":"MIT"},"agents":["claude-code","codex"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"Video Recap Skills"},"install":{"claude-code":"/plugin marketplace add zenstory-ai/video-recap-skills  then  /plugin install video-recap-skills@video-recap"},"requires":["Python 3.10+","ffmpeg","Xiaomi MiMo API key"],"cost":{"note":"Free/open source"},"stats":{"stars":592,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-21"},{"id":"erduo1998-cell/erduo-broll-loop","slug":"erduo-broll-loop","name":"Erduo B-roll Loop Engineering","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["b-roll","srt","hyperframes","remotion","reviewer","chinese","edit-agents","skill"],"summary":"SRT-driven B-roll agent: a Director plans shots, Creators build them in HyperFrames or Remotion, a Reviewer checks.","description":"A multi-role skill that takes a full source SRT and a design brief and produces editable B-roll for a talking-head video. An independent Director sets the visual world and shot cards anchored to meaning (not one shot per subtitle line), Creators build continuous chapters in fresh contexts, the parent renders and an independent Reviewer looks at the actual frames and sends fixes back. Output is per-shot files, editable source and a full preview.","useWhen":["add motion B-roll over a talking-head video from its SRT","keep shots tied to the spoken timeline","get editable HyperFrames/Remotion source, not just an MP4"],"notFor":[],"publisher":{"name":"erduo1998-cell","handle":"erduo1998-cell","kind":"community","url":"https://github.com/erduo1998-cell","avatar":"https://github.com/erduo1998-cell.png","verified":false},"source":{"url":"https://github.com/erduo1998-cell/erduo-broll-loop-engineering","repo":"erduo1998-cell/erduo-broll-loop-engineering","license":"MIT"},"agents":["codex","claude-code"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"Erduo B-roll Loop Engineering"},"install":{"claude-code":"git clone https://github.com/erduo1998-cell/erduo-broll-loop-engineering.git"},"requires":["Node.js"],"cost":{"note":"Free/open source"},"stats":{"stars":232,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-10","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/488f9df1ba1d/erduo-broll-loop.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRmgAAABXRUJQVlA4IFwAAADwAwCdASogABIAPtFWo0uoJKMhsAgBABoJaQDJECHfwjCjxiIQC0EAAP71cejoi9ZSJaBHiSsxbueHO4KthNpDKuSMnYs5/IgeQef/2eUp10WWyhmzM/ikwAAAAA==","source":"https://raw.githubusercontent.com/erduo1998-cell/erduo-broll-loop-engineering/main/docs/images/demos/homepage-showcase.gif","page":"https://raw.githubusercontent.com/erduo1998-cell/erduo-broll-loop-engineering/main/docs/images/demos/homepage-showcase.gif","credit":"erduo1998-cell (README)","rights":"publisher-repo","bytes":27555,"addedAt":"2026-10-28","note":"Image from the project README"}},{"id":"jub0t/concat","slug":"concat","name":"Concat","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["editor","mcp","json-rpc","capcut-alternative","desktop","edit-agents","app"],"summary":"Free, local-first CapCut replacement with a built-in MCP server and JSON-RPC API so agents can cut video.","description":"A cross-platform desktop editor positioned as an open CapCut alternative. Besides the usual timeline UI it ships an MCP server (concat --mcp) so Claude and other agents can edit with it, and a JSON-RPC API for scripts; a source build adds gRPC and a command-line tool.","useWhen":["give an agent a free desktop editor to drive","script edits over JSON-RPC","replace CapCut without lock-in"],"notFor":[],"publisher":{"name":"jub0t","handle":"jub0t","kind":"community","url":"https://concat.standalones.org","avatar":"https://github.com/jub0t.png","verified":false},"source":{"url":"https://github.com/jub0t/Concat","repo":"jub0t/Concat","license":"AGPL-3.0"},"agents":["claude-code","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"Concat"},"install":{"mcp":"concat --mcp"},"cost":{"note":"Free/open source (AGPL)"},"stats":{"stars":12100,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-27"},{"id":"samuelgursky/davinci-resolve-mcp","slug":"davinci-resolve-mcp","name":"DaVinci Resolve MCP","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["davinci-resolve","nle","color","fusion","timeline","editing","mcp"],"summary":"The most-starred Resolve MCP: drive timelines, media pool, color, Fusion and render from any MCP client.","description":"An MCP server for DaVinci Resolve Studio by Samuel Gursky. A compact default mode exposes core tools and a full mode exposes about 390, covering projects, media pool, timelines, markers, grading, Fusion and rendering; an offline 'advanced' Node server adds grade and project-file tools that work without Resolve running. A setup command installs and registers it.","useWhen":["build or modify a Resolve timeline from chat","batch markers, renders or grades","let an agent prep a project for a colorist"],"notFor":[],"publisher":{"name":"Samuel Gursky","handle":"samuelgursky","kind":"community","url":"https://github.com/samuelgursky","avatar":"https://github.com/samuelgursky.png","verified":false},"source":{"url":"https://github.com/samuelgursky/davinci-resolve-mcp","repo":"samuelgursky/davinci-resolve-mcp","license":"MIT"},"agents":["claude-code","cursor","codex","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"DaVinci Resolve MCP"},"install":{"mcp":"npx davinci-resolve-mcp setup"},"requires":["DaVinci Resolve Studio"],"cost":{"note":"Free/open source"},"stats":{"stars":3809,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-27"},{"id":"wassermanproductions/unofficial-davinci-mcp","slug":"unofficial-davinci-mcp","name":"Unofficial DaVinci MCP","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["davinci-resolve","fcpxml","lut","color-match","beats","editing","mcp"],"summary":"Resolve MCP with live Studio control plus FCPXML/LUT workflows for the free edition and beat-aware cuts.","description":"A Python MCP server that runs DaVinci Resolve live when you have Studio, and falls back to FCPXML and LUT file workflows that work with the free edition. It adds reference color matching and optional beat detection that proposes beat, bar and phrase cut points.","useWhen":["automate Resolve without a Studio license","match the grade to a reference frame","plan cuts on musical beats"],"notFor":[],"publisher":{"name":"wassermanproductions","handle":"wassermanproductions","kind":"community","url":"https://github.com/wassermanproductions","avatar":"https://github.com/wassermanproductions.png","verified":false},"source":{"url":"https://github.com/wassermanproductions/unofficial-davinci-mcp","repo":"wassermanproductions/unofficial-davinci-mcp","license":"Apache-2.0"},"agents":["claude-code","cursor","codex","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"Unofficial DaVinci MCP"},"install":{"claude-code":"pip install \"git+https://github.com/wassermanproductions/unofficial-davinci-mcp.git\" && claude mcp add davinci -- unofficial-davinci-mcp"},"requires":["ffmpeg","DaVinci Resolve"],"cost":{"note":"Free/open source"},"stats":{"stars":37,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-07-20"},{"id":"hetpatel-11/premiere-pro-mcp-hetpatel","slug":"premiere-pro-mcp-hetpatel","name":"Adobe Premiere Pro MCP (premiere-mcp.com)","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["premiere-pro","adobe","nle","cep","editing","mcp"],"summary":"Premiere Pro MCP with a local CEP bridge, Claude Code and Codex plugins, and search-then-invoke tools.","description":"Connects Claude, Codex and other MCP clients to Adobe Premiere Pro through a local bridge panel (CEP in production, UXP experimental). Hosts see a small always-on tool set and reach the rest with search_tools and invoke_tool, which keeps context small; run verify_premiere_connection before editing. Also packaged as a Claude Code plugin and an Agent Skill.","useWhen":["edit a Premiere sequence from chat","automate repetitive timeline work","export or conform without clicking"],"notFor":[],"publisher":{"name":"Het Patel","handle":"hetpatel-11","kind":"community","url":"https://premiere-mcp.com/","avatar":"https://github.com/hetpatel-11.png","verified":false},"source":{"url":"https://github.com/hetpatel-11/Adobe_Premiere_Pro_MCP","repo":"hetpatel-11/Adobe_Premiere_Pro_MCP","license":"MIT"},"agents":["claude-code","codex","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"Adobe Premiere Pro MCP (premiere-mcp.com)"},"install":{"mcp":"npm install -g adobe-premiere-pro-mcp","claude-code":"npx skills add hetpatel-11/Adobe_Premiere_Pro_MCP --skill premiere-pro-mcp"},"requires":["Adobe Premiere Pro"],"cost":{"note":"Free/open source"},"stats":{"stars":771,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-24"},{"id":"leancoderkavy/premiere-pro-mcp-leancoder","slug":"premiere-pro-mcp-leancoder","name":"Premiere Pro MCP (premiere-pro-mcp.com)","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["premiere-pro","adobe","nle","editing","mcp"],"summary":"Independent local-first Premiere Pro MCP over a CEP bridge for Claude, Codex and Cursor.","description":"A second, independently built Premiere Pro MCP server distributed on npm. It connects Claude, Codex or Cursor to Premiere through a local CEP bridge for supported sequence, clip, marker and export workflows, with ffprobe used for media checks.","useWhen":["control Premiere from Cursor or Codex","script sequence and marker changes","compare against the other Premiere MCP"],"notFor":[],"publisher":{"name":"leancoderkavy","handle":"leancoderkavy","kind":"community","url":"https://premiere-pro-mcp.com/","avatar":"https://github.com/leancoderkavy.png","verified":false},"source":{"url":"https://github.com/leancoderkavy/premiere-pro-mcp","repo":"leancoderkavy/premiere-pro-mcp","license":"MIT"},"agents":["claude-code","codex","cursor","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"Premiere Pro MCP (premiere-pro-mcp.com)"},"install":{"mcp":"npm install -g premiere-pro-mcp"},"requires":["Adobe Premiere Pro","ffprobe"],"cost":{"note":"Free/open source"},"stats":{"stars":448,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-27"},{"id":"JUNKDOGE-JOE/after-effects-mcp","slug":"after-effects-mcp","name":"ae-mcp (After Effects MCP)","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["after-effects","adobe","motion-graphics","overlays","editing","mcp"],"summary":"Adobe After Effects automation via MCP: 16 tools for editing comps, previews, recovery and reusable work.","description":"Lets external agents or a chat panel inside After Effects (CEP) drive compositions: create and edit layers, render previews, recover from errors and reuse setups. Useful for motion-graphics overlays, titles and transitions that are then dropped into an edit.","useWhen":["build titles or lower thirds in After Effects from chat","batch-edit comps","preview motion graphics before export"],"notFor":[],"publisher":{"name":"JUNKDOGE-JOE","handle":"JUNKDOGE-JOE","kind":"community","url":"https://github.com/JUNKDOGE-JOE","avatar":"https://github.com/JUNKDOGE-JOE.png","verified":false},"source":{"url":"https://github.com/JUNKDOGE-JOE/after-effects-mcp","repo":"JUNKDOGE-JOE/after-effects-mcp","license":"MIT"},"agents":["claude-code","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"ae-mcp (After Effects MCP)"},"install":{"mcp":"claude mcp add --transport http ae http://127.0.0.1:11488/mcp"},"requires":["Adobe After Effects"],"cost":{"note":"Free/open source"},"stats":{"stars":87,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-22"},{"id":"DareDev256/fcp-mcp-server","slug":"fcp-mcp-server","name":"FCP MCP Server (FCPXML)","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["final-cut-pro","fcpxml","timeline","markers","editing","mcp"],"summary":"Read, edit and generate real Final Cut Pro timelines as FCPXML: cut detection, markers, roles, transcript edits.","description":"An MCP server that works on Final Cut Pro XML files rather than the running app, so Claude can analyze a timeline, detect cuts, add markers and roles, and generate new timelines, including transcript-based editing with optional extras. Installs with uvx in one line.","useWhen":["generate an FCP timeline from a script or transcript","add markers and chapters to an existing edit","audit a timeline for gaps and flash frames"],"notFor":[],"publisher":{"name":"DareDev256","handle":"DareDev256","kind":"community","url":"https://github.com/DareDev256","avatar":"https://github.com/DareDev256.png","verified":false},"source":{"url":"https://github.com/DareDev256/fcp-mcp-server","repo":"DareDev256/fcp-mcp-server","license":"MIT"},"agents":["claude-code","cursor","codex","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"FCP MCP Server (FCPXML)"},"install":{"claude-code":"claude mcp add fcpxml -e FCP_PROJECTS_DIR=~/Movies -- uvx fcp-mcp-server"},"cost":{"note":"Free/open source"},"stats":{"stars":130,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-24"},{"id":"elliotttate/splicekit","slug":"splicekit","name":"SpliceKit","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["final-cut-pro","macos","nle","plugins","editing","mcp"],"summary":"Patched Final Cut Pro with a command palette and an MCP server of ~200 tools that talk to FCP's runtime.","description":"SpliceKit adds a Cmd+Shift+P command palette to Final Cut Pro and an MCP server that reaches FCP's internal Objective-C runtime directly, so an agent can read timeline state, blade, retime, color-correct, apply effects and render without touching the UI. It also has an open plugin framework so the agent can build new abilities.","useWhen":["remove silences or blade at scene changes inside FCP","cut a long interview to its best moments in FCP","teach FCP new automated actions"],"notFor":[],"publisher":{"name":"Elliott Tate","handle":"elliotttate","kind":"community","url":"https://splicekit.fcp.cafe","avatar":"https://github.com/elliotttate.png","verified":false},"source":{"url":"https://github.com/elliotttate/SpliceKit","repo":"elliotttate/SpliceKit","license":"MIT"},"agents":["claude-code","cursor","codex","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"SpliceKit"},"install":{"claude-code":"git clone https://github.com/elliotttate/SpliceKit.git"},"requires":["macOS","Final Cut Pro"],"cost":{"note":"Free/open source"},"stats":{"stars":184,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-08-29"},{"id":"GuanYixuan/pyjianyingdraft","slug":"pyjianyingdraft","name":"pyJianYingDraft","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["jianying","capcut","draft","python","chinese","editing","library"],"summary":"Python library that writes JianYing (CapCut China) drafts: tracks, clips, text, effects, transitions, export.","description":"The most-used way to automate JianYing: a Python library that generates and edits draft projects with video, audio and text tracks, keyframes, filters, transitions and effects, and can drive export. Many agent skills and MCP servers for JianYing are built on it.","useWhen":["build an editable JianYing draft from a cut plan","batch remix templates","back an agent skill with real draft files"],"notFor":[],"publisher":{"name":"GuanYixuan","handle":"GuanYixuan","kind":"community","url":"https://github.com/GuanYixuan","avatar":"https://github.com/GuanYixuan.png","verified":false},"source":{"url":"https://github.com/GuanYixuan/pyJianYingDraft","repo":"GuanYixuan/pyJianYingDraft","license":"Apache-2.0"},"agents":["claude-code","codex","cursor"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"pyJianYingDraft"},"install":{"claude-code":"pip install pyJianYingDraft"},"cost":{"note":"Free/open source"},"stats":{"stars":4707,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-14"},{"id":"GuanYixuan/pycapcut","slug":"pycapcut","name":"pyCapCut","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["capcut","draft","python","editing","library"],"summary":"International CapCut version of pyJianYingDraft: generate CapCut drafts in Python for automated edits.","description":"The CapCut (international) counterpart of pyJianYingDraft by the same author. It creates CapCut desktop drafts with tracks, segments, text and effects so an agent can assemble an edit and a person can open and finish it in CapCut.","useWhen":["assemble a CapCut project from code","batch caption or remix videos in CapCut","give a human an editable draft"],"notFor":[],"publisher":{"name":"GuanYixuan","handle":"GuanYixuan","kind":"community","url":"https://github.com/GuanYixuan","avatar":"https://github.com/GuanYixuan.png","verified":false},"source":{"url":"https://github.com/GuanYixuan/pyCapCut","repo":"GuanYixuan/pyCapCut","license":"none stated"},"agents":["claude-code","codex","cursor"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"pyCapCut"},"install":{"claude-code":"pip install pycapcut"},"cost":{"note":"Free/open source"},"stats":{"stars":725,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-16"},{"id":"hey-jian-wei/jianying-mcp","slug":"jianying-mcp","name":"JianYing MCP","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["jianying","capcut","draft","transitions","chinese","editing","mcp"],"summary":"MCP server that creates JianYing drafts: tracks, clips, transitions, filters, masks, keyframes, audio fades.","description":"Lets an AI assistant build JianYing projects in natural language: create a draft, add video, audio and text segments (local files or URLs), then apply entrance animations, transitions, filters, masks, background fill, keyframes and audio effects before exporting a draft you open in JianYing.","useWhen":["build a JianYing draft from chat","add transitions and filters in bulk","prepare an editable draft for a human editor"],"notFor":[],"publisher":{"name":"hey-jian-wei","handle":"hey-jian-wei","kind":"community","url":"https://github.com/hey-jian-wei","avatar":"https://github.com/hey-jian-wei.png","verified":false},"source":{"url":"https://github.com/hey-jian-wei/jianying-mcp","repo":"hey-jian-wei/jianying-mcp","license":"none stated"},"agents":["claude-code","cursor","codex","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"JianYing MCP"},"cost":{"note":"Free/open source"},"stats":{"stars":313,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2025-08-22"},{"id":"mrbuslov/capcut-smartcut-mcp","slug":"capcut-smartcut-mcp","name":"SmartCut (capcut-ai-editor)","type":"skill","status":"live","stream":"community","adds":"tool","category":"cuts","tags":["capcut","silence-removal","retakes","talking-head","cuts","mcp"],"summary":"MCP that reads CapCut auto-captions to cut silences and duplicate takes right inside your CapCut project.","description":"Record, import into CapCut and generate auto captions, then ask Claude to 'smart cut' the project. SmartCut uses the caption timing to remove gaps over one second and keeps only the last attempt when a phrase is repeated, writing the changes back to the CapCut project for review. Works locally without API keys; OpenAI is optional for better duplicate detection.","useWhen":["clean up a talking-head recording in CapCut","drop repeated takes automatically","keep the edit editable in CapCut"],"notFor":[],"publisher":{"name":"mrbuslov","handle":"mrbuslov","kind":"community","url":"https://github.com/mrbuslov","avatar":"https://github.com/mrbuslov.png","verified":false},"source":{"url":"https://github.com/mrbuslov/capcut-ai-editor","repo":"mrbuslov/capcut-ai-editor","license":"MIT"},"agents":["claude-code","claude-ai","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"SmartCut (capcut-ai-editor)"},"install":{"mcp":"pip install -e .  (inside the cloned repo), then add the venv python to your MCP config"},"requires":["Python 3.10+","CapCut desktop"],"cost":{"note":"Free/open source"},"stats":{"stars":123,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-27"},{"id":"AcademySoftwareFoundation/opentimelineio","slug":"opentimelineio","name":"OpenTimelineIO","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["otio","edl","fcpxml","aaf","interchange","timeline","editing","library"],"summary":"Academy Software Foundation's interchange format and API for editorial timelines (EDL, FCPXML, AAF adapters).","description":"OTIO is the open standard for passing an edit between tools: a Python/C++ API and file format for tracks, clips, transitions and markers, with adapters for CMX EDL, FCP XML, AAF and more. For agents it is a good neutral 'timeline JSON' to write before rendering or handing off to an NLE.","useWhen":["hand an agent's cut to Resolve, Premiere or Avid","convert between EDL, FCPXML and AAF","store the edit as data you can diff"],"notFor":[],"publisher":{"name":"Academy Software Foundation","handle":"AcademySoftwareFoundation","kind":"community","url":"https://opentimeline.io","avatar":"https://github.com/AcademySoftwareFoundation.png","verified":false},"source":{"url":"https://github.com/AcademySoftwareFoundation/OpenTimelineIO","repo":"AcademySoftwareFoundation/OpenTimelineIO","license":"Apache-2.0"},"agents":["claude-code","codex","cursor"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"OpenTimelineIO"},"install":{"claude-code":"python -m pip install opentimelineio"},"cost":{"note":"Free/open source"},"stats":{"stars":2041,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-25"},{"id":"KyaniteLabs/kinocut","slug":"kinocut","name":"Kinocut","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["ffmpeg","mcp","cli","repurpose","quality-gates","editing"],"summary":"Guardrailed local video editing MCP (formerly mcp-video): ~200 FFmpeg tools, quality gates, Shorts repurposing.","description":"A free, local MCP server, Python client and kino CLI that lets agents trim, caption, reframe, repurpose and quality-gate video with typed tools. Each operation leaves a 'Video Receipt' and fail-closed gates catch bad output; it also wraps HyperFrames compositions and Whisper subtitles as optional extras.","useWhen":["give an agent safe, typed FFmpeg tools","repurpose long video into Shorts or Reels","check renders before delivery"],"notFor":[],"publisher":{"name":"Kyanite Labs","handle":"KyaniteLabs","kind":"community","url":"https://kinocut.dev/","avatar":"https://github.com/KyaniteLabs.png","verified":false},"source":{"url":"https://github.com/KyaniteLabs/kinocut","repo":"KyaniteLabs/kinocut","license":"Apache-2.0"},"agents":["claude-code","cursor","codex","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"Kinocut"},"install":{"claude-code":"claude mcp add kinocut -- uvx --from kinocut kino --mcp"},"requires":["ffmpeg"],"cost":{"note":"Free/open source"},"stats":{"stars":223,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-28","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/c53d4e7e420f/kinocut.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRoYAAABXRUJQVlA4IHoAAAAwBACdASogABIAPtFapk0oJSOiMBgIAQAaCWcAyNQQ7+9DaoylnCsTb7AA/vaDZX+jY4qmgtJzFkBLhLqksLpl9vbrmntS0HeS8I3zz17vXZ3k1921VAm/fyqhoSvbtN4wRtbln+dCQyc9UHsljBEEfm35K8G5LcAAAA==","source":"https://raw.githubusercontent.com/KyaniteLabs/kinocut/master/assets/kinocut-hero.webp","page":"https://raw.githubusercontent.com/KyaniteLabs/kinocut/master/assets/kinocut-hero.webp","credit":"Kyanite Labs (README)","rights":"publisher-repo","bytes":20458,"addedAt":"2026-10-28","note":"Image from the project README"}},{"id":"kevinwatt/ffmpeg-mcp-lite","slug":"ffmpeg-mcp-lite","name":"ffmpeg-mcp-lite","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["ffmpeg","mcp","trim","subtitles","editing"],"summary":"Small FFmpeg MCP: convert, compress, trim, extract audio and add subtitles, installable with uvx.","description":"A lightweight Python MCP server that exposes common FFmpeg jobs as tools: format conversion, compression, trimming, audio extraction and subtitle burn-in. It is a good minimal choice when you only need basic operations without a large tool surface.","useWhen":["trim or compress a clip from chat","burn an SRT into a video","extract audio for transcription"],"notFor":[],"publisher":{"name":"kevinwatt","handle":"kevinwatt","kind":"community","url":"https://github.com/kevinwatt","avatar":"https://github.com/kevinwatt.png","verified":false},"source":{"url":"https://github.com/kevinwatt/ffmpeg-mcp-lite","repo":"kevinwatt/ffmpeg-mcp-lite","license":"MIT"},"agents":["claude-code","cursor","codex","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"ffmpeg-mcp-lite"},"install":{"claude-code":"claude mcp add ffmpeg uvx ffmpeg-mcp-lite"},"requires":["ffmpeg"],"cost":{"note":"Free/open source"},"stats":{"stars":28,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-05-08"},{"id":"video-creator/ffmpeg-mcp-video-creator","slug":"ffmpeg-mcp-video-creator","name":"ffmpeg-mcp (video-creator)","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["ffmpeg","mcp","concat","overlay","editing"],"summary":"FFmpeg MCP for local video search, trimming, concatenation, overlays and playback through dialogue.","description":"An MCP server that wraps the ffmpeg command line so an assistant can find local videos, cut, splice, overlay, extract frames and play results. Runs with uv from a clone.","useWhen":["cut and join local clips from chat","add a watermark or picture-in-picture","extract frames for review"],"notFor":[],"publisher":{"name":"video-creator","handle":"video-creator","kind":"community","url":"https://github.com/video-creator","avatar":"https://github.com/video-creator.png","verified":false},"source":{"url":"https://github.com/video-creator/ffmpeg-mcp","repo":"video-creator/ffmpeg-mcp","license":"MIT"},"agents":["claude-code","cursor","codex","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"ffmpeg-mcp (video-creator)"},"install":{"mcp":"git clone https://github.com/video-creator/ffmpeg-mcp.git  then run it with uv from your MCP config"},"requires":["ffmpeg","uv"],"cost":{"note":"Free/open source"},"stats":{"stars":153,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-05-20"},{"id":"burningion/video-jungle-mcp","slug":"video-jungle-mcp","name":"Video Jungle MCP (video-editing-mcp)","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["mcp","search","cloud-render","editing"],"summary":"MCP for Video Jungle: upload, analyze and search footage, then generate edits from the results.","description":"Connects Claude to the Video Jungle service so you can add videos, have them analyzed, search by content and generate edits that render in the cloud, with a local Videojungle project view. One of the earliest video editing MCP servers.","useWhen":["search clips by what happens in them","auto-assemble an edit from search results","edit without local rendering"],"notFor":[],"publisher":{"name":"Kirk Kaiser","handle":"burningion","kind":"community","url":"https://github.com/burningion","avatar":"https://github.com/burningion.png","verified":false},"source":{"url":"https://github.com/burningion/video-editing-mcp","repo":"burningion/video-editing-mcp","license":"none stated"},"agents":["claude-code","claude-ai","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"Video Jungle MCP (video-editing-mcp)"},"install":{"mcp":"npx -y @smithery/cli install video-editor-mcp --client claude"},"requires":["Video Jungle API key"],"cost":{"note":"Free MCP; Video Jungle account"},"stats":{"stars":294,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2025-10-09"},{"id":"WyattBlue/auto-editor","slug":"auto-editor","name":"Auto-Editor","type":"skill","status":"live","stream":"community","adds":"tool","category":"cuts","tags":["silence-removal","jump-cut","cli","timeline-export","cuts"],"summary":"CLI that cuts dead space by loudness or motion and exports MP4 or editor timelines; now also an agent skill.","description":"A mature command-line tool for the 'first pass': it analyzes audio loudness (or motion) and removes silent or still sections, with --margin padding so cuts feel natural. It can export straight to video or to timelines for Premiere, Resolve, Final Cut and others, and ships an installable agent skill.","useWhen":["remove silence from a lecture, stream or podcast","make a first pass before the real edit","export the cut as an NLE timeline"],"notFor":[],"publisher":{"name":"WyattBlue","handle":"WyattBlue","kind":"community","url":"https://auto-editor.com","avatar":"https://github.com/WyattBlue.png","verified":false},"source":{"url":"https://github.com/WyattBlue/auto-editor","repo":"WyattBlue/auto-editor","license":"Unlicense"},"agents":["claude-code","codex","cursor","openclaw"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Auto-Editor"},"install":{"claude-code":"npx skills add WyattBlue/auto-editor"},"cost":{"note":"Free/open source"},"stats":{"stars":5642,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-27"},{"id":"mli/autocut","slug":"autocut","name":"AutoCut","type":"skill","status":"live","stream":"community","adds":"tool","category":"cuts","tags":["transcript-editing","whisper","srt","cli","cuts"],"summary":"Edit video in a text editor: Whisper transcribes, you delete lines in Markdown, AutoCut cuts the video.","description":"Mu Li's tool for transcript-based editing. It transcribes a video with Whisper into SRT and Markdown, you (or an agent) select the sentences to keep, and AutoCut renders the cut. A simple, deterministic pattern agents can drive by editing a text file.","useWhen":["cut a talk or lecture by its transcript","keep only chosen sentences","batch-subtitle a folder of videos"],"notFor":[],"publisher":{"name":"Mu Li","handle":"mli","kind":"community","url":"https://github.com/mli","avatar":"https://github.com/mli.png","verified":false},"source":{"url":"https://github.com/mli/autocut","repo":"mli/autocut","license":"Apache-2.0"},"agents":["claude-code","codex","cursor"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"AutoCut"},"install":{"claude-code":"pip install autocut-sub"},"cost":{"note":"Free/open source"},"stats":{"stars":7841,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2024-10-05"},{"id":"louisedesadeleer/cut-video","slug":"cut-video","name":"Cut Video","type":"skill","status":"live","stream":"community","adds":"tool","category":"cuts","tags":["silence-removal","forced-alignment","fillers","proxy","local","cuts","skill"],"summary":"Claude Code skill that tightens long recordings with forced-aligned cuts, keeping laughs and comedic pauses.","description":"Makes a 1080p proxy, transcribes with Whisper, force-aligns with Montreal Forced Aligner for 10 to 20 ms word boundaries, then plans tone-aware silence and filler cuts and shows you the plan. It re-checks every kept region, renders with ffmpeg trim+concat and re-transcribes the output to catch surviving stutters; an optional browser timeline lets you adjust cuts. Runs locally on Apple Silicon.","useWhen":["tighten a long interview or podcast video","remove ums without killing the comedy","get frame-accurate silence cuts"],"notFor":[],"publisher":{"name":"Louise de Sadeleer","handle":"louisedesadeleer","kind":"community","url":"https://github.com/louisedesadeleer","avatar":"https://github.com/louisedesadeleer.png","verified":false},"source":{"url":"https://github.com/louisedesadeleer/cut-video","repo":"louisedesadeleer/cut-video","license":"MIT"},"agents":["claude-code"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Cut Video"},"install":{"claude-code":"git clone https://github.com/louisedesadeleer/cut-video.git ~/.claude/skills/cut-video"},"requires":["ffmpeg with libx264","openai-whisper","Montreal Forced Aligner"],"cost":{"note":"Free/open source"},"stats":{"stars":114,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-07-09"},{"id":"antiboredom/videogrep","slug":"videogrep","name":"Videogrep","type":"skill","status":"live","stream":"community","adds":"tool","category":"cuts","tags":["supercut","search","transcript","cli","cuts"],"summary":"Search spoken words across videos and auto-build supercuts of every match.","description":"A Python CLI and library by Sam Lavigne that transcribes or reads subtitles, searches for words or phrases (including n-grams and regex) and concatenates every match into a supercut. Handy for agents that need to find and pull every moment someone says something.","useWhen":["make a supercut of a phrase","find every mention of a topic in footage","pull quotes across many videos"],"notFor":[],"publisher":{"name":"Sam Lavigne","handle":"antiboredom","kind":"community","url":"https://antiboredom.github.io/videogrep","avatar":"https://github.com/antiboredom.png","verified":false},"source":{"url":"https://github.com/antiboredom/videogrep","repo":"antiboredom/videogrep","license":"custom (see repo)"},"agents":["claude-code","codex","cursor"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Videogrep"},"install":{"claude-code":"pip install videogrep"},"cost":{"note":"Free/open source (custom license)"},"stats":{"stars":3465,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2024-04-19"},{"id":"mifi/editly","slug":"editly","name":"editly","type":"skill","status":"live","stream":"community","adds":"tool","category":"transitions","tags":["json","transitions","cli","node","ffmpeg"],"summary":"Declarative JSON5 video editing CLI/API: clips, titles, transitions, audio mixing, rendered with ffmpeg.","description":"Describe an edit as a JSON5 spec (clips, layers, text, image and video, GL transitions, audio tracks with ducking) and editly renders it with Node and ffmpeg. The spec format is easy for an agent to write and regenerate, which makes it a simple render backend for assembled edits.","useWhen":["render a cut from a JSON spec","add GL transitions between clips","make slideshows with music"],"notFor":[],"publisher":{"name":"Mikael Finstad","handle":"mifi","kind":"community","url":"https://github.com/mifi","avatar":"https://github.com/mifi.png","verified":false},"source":{"url":"https://github.com/mifi/editly","repo":"mifi/editly","license":"MIT"},"agents":["claude-code","codex","cursor"],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"editly"},"install":{"claude-code":"npm i -g editly"},"cost":{"note":"Free/open source"},"stats":{"stars":5559,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2025-05-12"},{"id":"Breakthrough/pyscenedetect","slug":"pyscenedetect","name":"PySceneDetect","type":"skill","status":"live","stream":"community","adds":"tool","category":"cuts","tags":["scene-detection","shots","cli","opencv","cuts"],"summary":"Find cuts, fades and scene changes in a video, then split it or export scene lists for the edit.","description":"A Python CLI and library that detects shot boundaries with content, adaptive or threshold detectors, writes scene lists and stats, and can split the video into scenes with ffmpeg. A standard first step for agents that need to index footage before choosing shots.","useWhen":["split footage into shots","index B-roll before an agent picks shots","detect fade-to-black transitions"],"notFor":[],"publisher":{"name":"Brandon Castellano","handle":"Breakthrough","kind":"community","url":"https://www.scenedetect.com/","avatar":"https://github.com/Breakthrough.png","verified":false},"source":{"url":"https://github.com/Breakthrough/PySceneDetect","repo":"Breakthrough/PySceneDetect","license":"BSD-3-Clause"},"agents":["claude-code","codex","cursor"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"PySceneDetect"},"install":{"claude-code":"pip install scenedetect --upgrade"},"cost":{"note":"Free/open source"},"stats":{"stars":5298,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-27"},{"id":"m-bain/whisperx","slug":"whisperx","name":"WhisperX","type":"skill","status":"live","stream":"community","adds":"tool","category":"captions","tags":["asr","word-timestamps","diarization","captions","library"],"summary":"Fast Whisper ASR with word-level timestamps and speaker diarization: the timing layer for captions and cuts.","description":"Adds forced alignment and diarization on top of Whisper so you get accurate per-word timestamps and speaker labels. Most transcript-first editing skills rely on this kind of output to place cuts between words and time captions word by word.","useWhen":["word-timed captions","cut on word boundaries","label who speaks when in interviews"],"notFor":[],"publisher":{"name":"Max Bain","handle":"m-bain","kind":"community","url":"https://github.com/m-bain","avatar":"https://github.com/m-bain.png","verified":false},"source":{"url":"https://github.com/m-bain/whisperX","repo":"m-bain/whisperX","license":"BSD-2-Clause"},"agents":["claude-code","codex","cursor"],"addedAt":"2026-10-28","preview":{"kind":"karaoke","hue":48,"text":"WhisperX"},"install":{"claude-code":"pip install whisperx"},"cost":{"note":"Free/open source"},"stats":{"stars":24890,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-22"},{"id":"6missedcalls/video-editing-skill-bash","slug":"video-editing-skill-bash","name":"video-editing-skill (Bash + FFmpeg)","type":"skill","status":"live","stream":"community","adds":"tool","category":"cuts","tags":["ffmpeg","bash","jump-cut","captions","cuts","skill"],"summary":"Pure Bash skill for OpenClaw, Claude Code and Codex: trim, jump cut, captions, text overlay, speed.","description":"A composable set of Bash scripts plus a SKILL.md that chain FFmpeg and Whisper: trim clips, remove silence, burn captions in Hormozi, standard or minimal styles, add text overlays and change speed. No Python runtime beyond Whisper.","useWhen":["quick jump cuts and captions from the terminal","chain several edits in one pipeline","a dependency-light skill for any agent"],"notFor":[],"publisher":{"name":"6missedcalls","handle":"6missedcalls","kind":"community","url":"https://github.com/6missedcalls","avatar":"https://github.com/6missedcalls.png","verified":false},"source":{"url":"https://github.com/6missedcalls/video-editing-skill","repo":"6missedcalls/video-editing-skill","license":"MIT"},"agents":["openclaw","claude-code","codex"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"video-editing-skill (Bash + FFmpeg)"},"requires":["ffmpeg","openai-whisper"],"cost":{"note":"Free/open source"},"stats":{"stars":48,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-02-27"},{"id":"Anil-matcha/ai-youtube-shorts-generator","slug":"ai-youtube-shorts-generator","name":"AI YouTube Shorts Generator","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["shorts","clipping","highlights","reframe","vertical","editing","cli"],"summary":"Open-source Opus Clip alternative: LLM finds highlights in long videos and renders 9:16 shorts with face crop.","description":"Hand it a YouTube URL and get ranked 9:16 shorts: Whisper transcription, LLM highlight detection with a viral score, hook line and reason per clip, and vertical cropping. Runs in API mode (MuAPI) or fully local mode (yt-dlp, faster-whisper), chunks videos over 30 minutes and can emit JSON for batch use.","useWhen":["turn a podcast or stream into shorts","self-host clipping instead of paying per minute","fork a simple highlight pipeline"],"notFor":[],"publisher":{"name":"Anil-matcha","handle":"Anil-matcha","kind":"community","url":"https://github.com/Anil-matcha","avatar":"https://github.com/Anil-matcha.png","verified":false},"source":{"url":"https://github.com/Anil-matcha/AI-Youtube-Shorts-Generator","repo":"Anil-matcha/AI-Youtube-Shorts-Generator","license":"MIT"},"agents":["claude-code","codex","cursor"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"AI YouTube Shorts Generator"},"install":{"claude-code":"git clone https://github.com/SamurAIGPT/AI-Youtube-Shorts-Generator.git && pip install -r requirements.txt"},"cost":{"note":"Free/open source"},"stats":{"stars":5631,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-24"},{"id":"AgriciDaniel/claude-shorts","slug":"claude-shorts","name":"claude-shorts","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["shorts","clipping","remotion","captions","reframe","editing","skill"],"summary":"Claude Code skill that scores segments of a long video, snaps cuts to words and renders captioned 9:16 clips.","description":"A 10-step interactive pipeline: preflight, GPU transcription with word timestamps, content-type detection, Claude scoring 8 to 12 candidate segments with hooks and reasons, your approval, boundary snapping to words, sentence ends and silences, then Remotion renders vertical clips with animated captions and reframing.","useWhen":["pick the best moments from a long video with you in the loop","render captioned vertical clips","reframe screen recordings and talking heads"],"notFor":[],"publisher":{"name":"AgriciDaniel","handle":"AgriciDaniel","kind":"community","url":"https://github.com/AgriciDaniel","avatar":"https://github.com/AgriciDaniel.png","verified":false},"source":{"url":"https://github.com/AgriciDaniel/claude-shorts","repo":"AgriciDaniel/claude-shorts","license":"MIT"},"agents":["claude-code"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"claude-shorts"},"install":{"claude-code":"git clone https://github.com/AgriciDaniel/claude-shorts.git"},"requires":["ffmpeg","Node.js","faster-whisper"],"cost":{"note":"Free/open source"},"stats":{"stars":242,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-07-11","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/d9d6ca934c79/claude-shorts.webp","w":960,"h":536,"blur":"data:image/webp;base64,UklGRnAAAABXRUJQVlA4IGQAAADwAwCdASogABIAPtFepk4oJSMiKAqpABoJZQBU4APOdilqdHHyxGeQAP7yndGVrIlQcK52WmCQzzv9gKvsfLDV1jXuwU1dOt8GMpK9KK9YNl0UNsbj1nNcjpdz8es/9gy4KAAA","source":"https://raw.githubusercontent.com/AgriciDaniel/claude-shorts/main/claude-shorts-header.jpeg","page":"https://raw.githubusercontent.com/AgriciDaniel/claude-shorts/main/claude-shorts-header.jpeg","credit":"AgriciDaniel (README)","rights":"publisher-repo","bytes":21824,"addedAt":"2026-10-28","note":"Image from the project README"}},{"id":"FujiwaraChoki/supoclip","slug":"supoclip","name":"SupoClip","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["shorts","clipping","self-host","api","editing","app"],"summary":"Self-hostable OpusClip alternative: long video in, captioned vertical clips out, no watermark.","description":"An open-source clipper with a web dashboard and a REST API backend (API keys, interactive docs) that finds clip-worthy moments, reframes to vertical and adds caption styles. Self-host with Docker Compose for unlimited use, or use the hosted app.","useWhen":["self-host a clipping service","call a clipping API from your own agent","avoid per-minute clipping fees"],"notFor":[],"publisher":{"name":"FujiwaraChoki","handle":"FujiwaraChoki","kind":"community","url":"https://www.supoclip.com/","avatar":"https://github.com/FujiwaraChoki.png","verified":false},"source":{"url":"https://github.com/FujiwaraChoki/supoclip","repo":"FujiwaraChoki/supoclip","license":"AGPL-3.0"},"agents":["claude-code","codex"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"SupoClip"},"install":{"claude-code":"git clone https://github.com/FujiwaraChoki/supoclip.git  then docker-compose up (see docs/setup.md)"},"requires":["Docker"],"cost":{"note":"Free self-hosted (AGPL); hosted plans"},"stats":{"stars":2123,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-27","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/6d686f612b5b/supoclip.webp","w":960,"h":864,"blur":"data:image/webp;base64,UklGRswAAABXRUJQVlA4IMAAAABwBQCdASogABwAPtFapE0oJSMiKA1RABoJZQDOddwB9j/SCU3rl2KnwVNCsfxM4+o+Q44AAP7rMt+z29+vMUHK7Ennr4uHd61RLaEOD/hsXzI7vukIlfK6gGx4Mrmiu7n+m0FIbkgh0AXvwPEyJpF6wFBkCR99lWv+c2wXKrb1dWyafnBhxY+WXxyMUOqZY3gwNlIHakXI91ijfyeqORg1y2/3lXUd1cRbn1BAnMa9Wo7z9aowsvAriMofIH1h4AA=","source":"https://raw.githubusercontent.com/FujiwaraChoki/supoclip/main/assets/banner.jpg","page":"https://raw.githubusercontent.com/FujiwaraChoki/supoclip/main/assets/banner.jpg","credit":"FujiwaraChoki (README)","rights":"publisher-repo","bytes":40408,"addedAt":"2026-10-28","note":"Image from the project README"}},{"id":"ClipsAI/clipsai","slug":"clipsai","name":"ClipsAI","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["clipping","reframe","whisperx","python","editing","library"],"summary":"Python library that segments long transcripts into clips and resizes video to 9:16 around the speaker.","description":"Clips AI uses WhisperX transcripts to find clip boundaries in audio-centric videos (podcasts, interviews, speeches) and reframes 16:9 to 9:16 by following the current speaker. It is a building block, not a full app, so it suits agents that want clip selection and reframing in code.","useWhen":["find clip boundaries in a podcast transcript","reframe interviews to vertical by active speaker","build your own clipper"],"notFor":["active maintenance (last push Jan 2024)"],"publisher":{"name":"Clips AI","handle":"ClipsAI","kind":"community","url":"https://www.clipsai.com","avatar":"https://github.com/ClipsAI.png","verified":false},"source":{"url":"https://github.com/ClipsAI/clipsai","repo":"ClipsAI/clipsai","license":"MIT"},"agents":["claude-code","codex","cursor"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"ClipsAI"},"install":{"claude-code":"pip install clipsai"},"cost":{"note":"Free/open source"},"stats":{"stars":558,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2024-01-17"},{"id":"Huanshere/videolingo","slug":"videolingo","name":"VideoLingo","type":"skill","status":"live","stream":"community","adds":"tool","category":"dubbing","tags":["subtitles","translation","dubbing","tts","app"],"summary":"One-click subtitle cutting, translation, alignment and dubbing with Netflix-style subtitle rules.","description":"Splits subtitles at natural boundaries, translates with an LLM in a translate-reflect-adapt loop, aligns timing and optionally dubs with several TTS engines, producing single-line subtitles that read like professional ones. Runs as a local web app; the README includes a prompt you can hand to a computer-using agent to install it.","useWhen":["subtitle and translate a video properly","dub a video into another language","fix long, badly split auto-subtitles"],"notFor":[],"publisher":{"name":"Huanshere","handle":"Huanshere","kind":"community","url":"https://docs.videolingo.io","avatar":"https://github.com/Huanshere.png","verified":false},"source":{"url":"https://github.com/Huanshere/VideoLingo","repo":"Huanshere/VideoLingo","license":"Apache-2.0"},"agents":["claude-code","codex"],"addedAt":"2026-10-28","preview":{"kind":"wave","hue":280,"text":"VideoLingo"},"install":{"claude-code":"git clone https://github.com/Huanshere/VideoLingo.git && cd VideoLingo"},"cost":{"note":"Free/open source"},"stats":{"stars":18963,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-09-30"},{"id":"jianchang512/pyvideotrans","slug":"pyvideotrans","name":"pyVideoTrans","type":"skill","status":"live","stream":"community","adds":"tool","category":"dubbing","tags":["dubbing","translation","subtitles","tts","cli"],"summary":"Full video translation: ASR, subtitle translation, multi-voice dubbing and muxing, with a headless CLI.","description":"Converts a video from one language to another end to end (speech recognition, translation, TTS with multiple speakers, re-synthesis) and supports many ASR, LLM and TTS backends. A CLI mode and Docker image allow headless batch runs that an agent can call.","useWhen":["dub a video into another language","batch-translate a course or channel","generate bilingual subtitles"],"notFor":[],"publisher":{"name":"jianchang512","handle":"jianchang512","kind":"community","url":"https://pyvideotrans.com","avatar":"https://github.com/jianchang512.png","verified":false},"source":{"url":"https://github.com/jianchang512/pyvideotrans","repo":"jianchang512/pyvideotrans","license":"GPL-3.0"},"agents":["claude-code","codex"],"addedAt":"2026-10-28","preview":{"kind":"wave","hue":280,"text":"pyVideoTrans"},"install":{"claude-code":"git clone https://github.com/jianchang512/pyvideotrans.git"},"cost":{"note":"Free/open source"},"stats":{"stars":19567,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-26"},{"id":"krillinai/opencreator","slug":"opencreator","name":"OpenCreator (formerly KrillinAI)","type":"skill","status":"live","stream":"community","adds":"tool","category":"dubbing","tags":["dubbing","translation","codex","workspace","app"],"summary":"Creator workspace on Codex CLI: download, translate, dub and edit video with reusable Skills and Agents.","description":"The project formerly known as KrillinAI, a popular video translation and dubbing tool, is now a local AI workspace that uses Codex CLI as its agent engine. It keeps the download, transcription, translation and dubbing tools and adds Skills, MCP and agent conversations for scripts, images, voice and editing.","useWhen":["translate and dub videos for other markets","run creator workflows through Codex","reuse dubbing pipelines as Skills"],"notFor":[],"publisher":{"name":"KrillinAI","handle":"krillinai","kind":"community","url":"https://www.open-creator.ai","avatar":"https://github.com/krillinai.png","verified":false},"source":{"url":"https://github.com/krillinai/OpenCreator","repo":"krillinai/OpenCreator","license":"Apache-2.0"},"agents":["codex"],"addedAt":"2026-10-28","preview":{"kind":"wave","hue":280,"text":"OpenCreator (formerly KrillinAI)"},"install":{"codex":"git clone https://github.com/krillinai/OpenCreator.git && pnpm install"},"cost":{"note":"Free/open source"},"stats":{"stars":13970,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-26"},{"id":"shotstack/shotstack","slug":"shotstack","name":"Shotstack","type":"skill","status":"live","stream":"community","adds":"api","category":"editing","tags":["api","json-timeline","mcp","templates","cloud-render","editing"],"summary":"Cloud video editing API with an official MCP server, CLI and Claude Code skill built around Edit JSON.","description":"Shotstack renders edits described as JSON timelines (tracks, clips, transitions, captions, templates). Its beta MCP server lets Claude, ChatGPT, Cursor, Codex or Gemini CLI compose an edit, open it in an inline Studio editor for review, validate and render it, and poll status; agents are told to call get_shotstack_guide first for the authoring rules.","useWhen":["render edits in the cloud from JSON","let a person review an agent's edit before render","template videos with merge fields"],"notFor":[],"publisher":{"name":"Shotstack","handle":"shotstack","kind":"community","url":"https://shotstack.io","avatar":"https://github.com/shotstack.png","verified":false},"source":{"url":"https://shotstack.io/docs/guide/agents/mcp-server/","license":"unknown"},"agents":["claude-code","claude-ai","chatgpt","codex","cursor","gemini-cli","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"Shotstack"},"install":{"claude-code":"claude mcp add --transport http shotstack https://mcp.shotstack.io","codex":"codex mcp add shotstack --url https://mcp.shotstack.io"},"requires":["Shotstack account"],"cost":{"note":"Per render (credits)"}},{"id":"creatomate/creatomate","slug":"creatomate","name":"Creatomate","type":"skill","status":"live","stream":"community","adds":"api","category":"editing","tags":["api","templates","mcp","captions","editing"],"summary":"Template-based video rendering API with an official remote MCP endpoint for Claude and other agents.","description":"Creatomate renders videos from templates or JSON (RenderScript) with text, media, captions and animations. Its official remote MCP server lets an assistant start renders in your project; renders spend plan credits just like API calls.","useWhen":["render branded variants from a template","auto-caption and resize for social","batch personalized videos"],"notFor":[],"publisher":{"name":"Creatomate","handle":"creatomate","kind":"community","url":"https://creatomate.com","avatar":"https://github.com/creatomate.png","verified":false},"source":{"url":"https://creatomate.com/docs/fundamentals/getting-started/mcp-integration","license":"unknown"},"agents":["claude-code","claude-ai","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"Creatomate"},"install":{"claude-code":"claude mcp add creatomate --transport http https://api.creatomate.com/mcp"},"requires":["Creatomate account"],"cost":{"note":"Subscription (credits)"}},{"id":"json2video/json2video","slug":"json2video","name":"JSON2Video","type":"skill","status":"live","stream":"community","adds":"api","category":"editing","tags":["api","json","mcp","subtitles","editing"],"summary":"Video editing API that renders JSON scenes; official CLI installs a local MCP server for Claude.","description":"JSON2Video turns a JSON description of scenes, text, audio and subtitles into a rendered video. Its official CLI authenticates and installs a local stdio MCP server, so Claude Code and Claude Desktop can render, use templates and manage the media library.","useWhen":["render a video from a JSON scene list","subtitle and voice-over automation","template-driven batches"],"notFor":[],"publisher":{"name":"JSON2Video","handle":"json2video","kind":"community","url":"https://json2video.com","avatar":"https://github.com/json2video.png","verified":false},"source":{"url":"https://json2video.com/claude-video/video-mcp-servers/","license":"unknown"},"agents":["claude-code","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"JSON2Video"},"install":{"claude-code":"npm i -g @json2video/cli && json2video auth && json2video mcp install claude"},"requires":["JSON2Video account"],"cost":{"note":"Per render (credits; free tier)"}},{"id":"submagic/submagic","slug":"submagic","name":"Submagic API","type":"skill","status":"live","stream":"community","adds":"api","category":"captions","tags":["captions","shorts","clipping","api","mcp","publishing"],"summary":"Caption-styled shorts API with an MCP server: AI captions, Magic Clips from long videos, B-roll, publishing.","description":"Submagic's API creates projects from a video URL or upload with AI captions in its templates, generates Magic Clips from YouTube or uploaded long videos, adds user B-roll and music, exports, and publishes or schedules to social platforms. A hosted MCP endpoint exposes the same actions to Claude, Cursor and other clients; transcripts can be edited before rendering.","useWhen":["add viral-style captions to a talking-head clip","clip a long YouTube video into shorts","publish captioned clips to TikTok and Reels"],"notFor":[],"publisher":{"name":"Submagic","handle":"submagic","kind":"community","url":"https://www.submagic.co","avatar":"https://github.com/submagic.png","verified":false},"source":{"url":"https://docs.submagic.co/mcp-server","license":"unknown"},"agents":["claude-code","claude-ai","cursor","mcp"],"addedAt":"2026-10-28","preview":{"kind":"karaoke","hue":48,"text":"Submagic API"},"install":{"claude-code":"claude mcp add --transport http submagic https://api.submagic.co/mcp --header \"Authorization: Bearer $SUBMAGIC_API_KEY\""},"requires":["Submagic API key"],"cost":{"note":"Subscription"}},{"id":"opus-pro/opusclip","slug":"opusclip","name":"OpusClip skills and API","type":"skill","status":"live","stream":"community","adds":"api","category":"editing","tags":["clipping","shorts","api","skill","mcp","editing"],"summary":"Official OpusClip skill and MCP: clip long videos into shorts, copy a video's style, post to social.","description":"OpusClip's API turns long videos into ranked short clips with captions and brand templates, and supports clip editing, webhooks and social posting. The official opus-skills package installs an opusclip skill (with a bundled CLI), copy-video-style and media generation for Claude Code, Codex, OpenClaw or Claude.ai, and a hosted MCP endpoint is available.","useWhen":["clip a webinar or podcast into shorts","apply a brand template to clips","post clips without leaving the agent"],"notFor":[],"publisher":{"name":"OpusClip","handle":"opus-pro","kind":"community","url":"https://opus.pro","avatar":"https://github.com/opus-pro.png","verified":false},"source":{"url":"https://help.opus.pro/api-reference/skill","repo":"opus-pro/opus-skills","license":"MIT"},"agents":["claude-code","claude-ai","codex","openclaw","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"OpusClip skills and API"},"install":{"claude-code":"/plugin marketplace add opus-pro/opus-skills  then  /plugin install opusclip@opus-skills","mcp":"claude mcp add --transport http --scope user opusclip https://mcp.opus.pro/mcp","codex":"codex plugin marketplace add opus-pro/opus-skills"},"requires":["OpusClip plan with API access"],"cost":{"note":"Per minute (1 credit per minute processed)"},"stats":{"stars":23,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-16"},{"id":"descript/descript","slug":"descript","name":"Descript (API and MCP)","type":"skill","status":"live","stream":"community","adds":"api","category":"editing","tags":["transcript-editing","fillers","audio-cleanup","mcp","api","editing"],"summary":"Edit by transcript with Underlord from Claude: import, remove fillers, Studio Sound, publish, export transcripts.","description":"Descript offers a hosted MCP server (OAuth, scoped to one Drive) and a separate API in open beta. Through MCP an assistant can import and transcribe media, run Underlord edits such as filler-word removal and Studio Sound, search projects, publish to get an MP4 link and export transcripts; it is in Claude's connector directory.","useWhen":["clean up a podcast or interview with Descript's tools","remove filler words via chat","publish a finished Descript project"],"notFor":["YouTube URL imports","exporting files without publishing"],"publisher":{"name":"Descript","handle":"descript","kind":"community","url":"https://www.descript.com","avatar":"https://github.com/descript.png","verified":false},"source":{"url":"https://help.descript.com/api-and-mcp/mcp-custom","license":"unknown"},"agents":["claude-ai","claude-code","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"Descript (API and MCP)"},"install":{"mcp":"Add custom connector URL https://api.descript.com/v2/mcp (OAuth)"},"requires":["Descript account"],"cost":{"note":"Subscription (media minutes and AI credits)"}},{"id":"mosaic/mosaic","slug":"mosaic","name":"Mosaic API","type":"skill","status":"live","stream":"community","adds":"api","category":"edit-agents","tags":["api","workflows","nodes","automation","edit-agents"],"summary":"Run node-based video editing agents (Tiles) from code: send video URLs, get edited results, trigger on YouTube.","description":"Mosaic (YC W25) lets you build editing workflows on a node canvas at edit.mosaic.so and run them over an API: POST a video URL to an agent and poll the run, with triggers for YouTube monitoring and webhooks. The product also exports timelines to Premiere Pro, Final Cut and DaVinci Resolve.","useWhen":["run the same edit recipe on every new upload","call a no-code editing workflow from your agent","auto-process a YouTube channel"],"notFor":[],"publisher":{"name":"Mosaic","handle":"mosaic","kind":"community","url":"https://mosaic.so","avatar":"https://github.com/mosaic.png","verified":false},"source":{"url":"https://docs.mosaic.so/api/introduction","license":"unknown"},"agents":["claude-code","codex"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"Mosaic API"},"requires":["Mosaic API key (mk_...)"],"cost":{"note":"Subscription"}},{"id":"video-db/videodb-skills","slug":"videodb-skills","name":"VideoDB skills","type":"skill","status":"live","stream":"community","adds":"api","category":"editing","tags":["api","search","clipping","subtitles","mcp","skill","editing"],"summary":"Server-side video for agents: ingest, search moments, cut, reframe, subtitle and stream via skills or MCP.","description":"VideoDB runs the heavy video work on its servers while the agent asks in plain language. Skills teach coding agents the VideoDB Python SDK, and a hosted MCP covers chat clients: upload a URL, find where something is said and clip it, cut a range to vertical with burned subtitles, translate transcripts, or watch an RTSP stream for events.","useWhen":["find and clip the moment someone mentions a topic","cut and burn subtitles without local ffmpeg","search across a video library"],"notFor":[],"publisher":{"name":"VideoDB","handle":"video-db","kind":"community","url":"https://docs.videodb.io","avatar":"https://github.com/video-db.png","verified":false},"source":{"url":"https://github.com/video-db/skills","repo":"video-db/skills","license":"MIT"},"agents":["claude-code","claude-ai","cursor","codex","mcp"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"VideoDB skills"},"install":{"claude-code":"npx skills add video-db/skills","mcp":"claude mcp add --transport http videodb https://mcp.videodb.io/mcp"},"requires":["VideoDB account ($20 free credits)"],"cost":{"note":"Usage-based"},"stats":{"stars":139,"source":"GitHub","asOf":"2026-10-27"},"updatedAt":"2026-10-27"},{"id":"synchronicity-labs/sync-lipsync","slug":"sync-lipsync","name":"Sync. lipsync MCP","type":"skill","status":"live","stream":"community","adds":"tool","category":"dubbing","tags":["lipsync","dubbing","mcp","api"],"summary":"Official MCP for the sync. lipsync API: re-time mouths in existing footage to new or translated audio.","description":"sync. (Synchronicity Labs) makes lipsync models that edit an existing video so the speaker's mouth matches a new audio track, the last step of a dubbing or line-replacement edit. Its open-source MCP server generates tools from the API spec at startup and works in Claude Code, Claude Desktop, Cursor and Windsurf.","useWhen":["lip-sync a dubbed video","replace a line of dialogue after the shoot","localize a talking-head ad"],"notFor":[],"publisher":{"name":"sync.","handle":"synchronicity-labs","kind":"community","url":"https://sync.so","avatar":"https://github.com/synchronicity-labs.png","verified":false},"source":{"url":"https://sync.so/docs/plugins-and-extensions/mcp-server","license":"unknown"},"agents":["claude-code","cursor","mcp"],"addedAt":"2026-10-28","preview":{"kind":"wave","hue":280,"text":"Sync. lipsync MCP"},"install":{"claude-code":"claude mcp add sync -- npx -y @sync.so/mcp-server --api-key YOUR_API_KEY"},"requires":["SYNC_API_KEY"],"cost":{"note":"Usage-based"}},{"id":"vizardai/vizard-api-skill","slug":"vizard-api-skill","name":"Vizard.ai API skill","type":"skill","status":"live","stream":"community","adds":"api","category":"editing","tags":["clipping","shorts","api","subtitles","b-roll","editing"],"summary":"Official ClawHub skill for the Vizard.ai API: clip long videos, edit shorts with subtitles and B-roll, publish.","description":"Published by Vizard on ClawHub, this skill teaches an agent the Vizard REST API: submit a long video to get several short clips, or edit a short video with subtitles and B-roll, then poll for results and optionally publish to social platforms or generate captions. Requires a paid Vizard plan.","useWhen":["clip long videos into shorts with Vizard","add subtitles and B-roll to a short","publish clips from OpenClaw"],"notFor":[],"publisher":{"name":"Vizard.ai","handle":"vizardai","kind":"community","url":"https://vizard.ai","avatar":"https://github.com/vizardai.png","verified":false},"source":{"url":"https://clawhub.ai/vizardai/vizard-api-skills","license":"unknown"},"agents":["openclaw"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"Vizard.ai API skill"},"install":{"openclaw":"openclaw skills install @vizardai/vizard-api-skills"},"requires":["VIZARDAI_API_KEY (paid plan)"],"cost":{"note":"Subscription"}},{"id":"calesthio/openmontage-talking-head","slug":"openmontage-talking-head","name":"OpenMontage Talking Head","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["openmontage","pipeline","edit-agents","skill"],"summary":"Takes raw footage of a person speaking, transcribes it, makes edit decisions (fillers, dead air, pacing), adds subtitles","description":"Takes raw footage of a person speaking, transcribes it, makes edit decisions (fillers, dead air, pacing), adds subtitles, mixes audio and composes the final video. One of OpenMontage's 12 production pipelines: a YAML manifest (`pipeline_defs/talking-head.yaml`) plus per-stage director skills in `skills/pipelines/talking-head/` that the agent reads before it calls the repo's Python tools (ffmpeg, WhisperX, scene detection, face-tracked reframe, Remotion or HyperFrames rendering). It checkpoints state, stops for approval at creative gates and self-reviews the render with ffprobe, frame samples and audio levels. Open the OpenMontage folder in your agent and ask for this kind of edit; the agent routes to the pipeline.","useWhen":["Asked for a talking head edit of footage you already have","Want a staged pipeline with approval gates instead of one prompt"],"notFor":["A single drop-in skill (it runs inside the OpenMontage repo)"],"publisher":{"name":"Calesthio","handle":"calesthio","kind":"community","url":"https://github.com/calesthio","avatar":"https://github.com/calesthio.png","verified":false},"source":{"url":"https://github.com/calesthio/OpenMontage/tree/main/skills/pipelines/talking-head/","repo":"calesthio/OpenMontage","path":"skills/pipelines/talking-head/","license":"AGPL-3.0"},"agents":["claude-code","codex","cursor","openclaw"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"OpenMontage Talking Head"},"install":{"claude-code":"git clone https://github.com/calesthio/OpenMontage.git && cd OpenMontage && make setup"},"requires":["Python 3.10+","ffmpeg","Node.js 18+","an AI coding assistant"],"cost":{"note":"Free/open source; generation billed by providers you connect"},"updatedAt":"2026-10-24"},{"id":"calesthio/openmontage-clip-factory","slug":"openmontage-clip-factory","name":"OpenMontage Clip Factory","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["openmontage","pipeline","edit-agents","skill"],"summary":"Extracts a batch of ranked short clips from one long source (webinar, stream, talk, interview) with gates for clip selec","description":"Extracts a batch of ranked short clips from one long source (webinar, stream, talk, interview) with gates for clip selection, hook placement and batch consistency. One of OpenMontage's 12 production pipelines: a YAML manifest (`pipeline_defs/clip-factory.yaml`) plus per-stage director skills in `skills/pipelines/clip-factory/` that the agent reads before it calls the repo's Python tools (ffmpeg, WhisperX, scene detection, face-tracked reframe, Remotion or HyperFrames rendering). It checkpoints state, stops for approval at creative gates and self-reviews the render with ffprobe, frame samples and audio levels. Open the OpenMontage folder in your agent and ask for this kind of edit; the agent routes to the pipeline.","useWhen":["Asked for a clip factory edit of footage you already have","Want a staged pipeline with approval gates instead of one prompt"],"notFor":["A single drop-in skill (it runs inside the OpenMontage repo)"],"publisher":{"name":"Calesthio","handle":"calesthio","kind":"community","url":"https://github.com/calesthio","avatar":"https://github.com/calesthio.png","verified":false},"source":{"url":"https://github.com/calesthio/OpenMontage/tree/main/skills/pipelines/clip-factory/","repo":"calesthio/OpenMontage","path":"skills/pipelines/clip-factory/","license":"AGPL-3.0"},"agents":["claude-code","codex","cursor","openclaw"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"OpenMontage Clip Factory"},"install":{"claude-code":"git clone https://github.com/calesthio/OpenMontage.git && cd OpenMontage && make setup"},"requires":["Python 3.10+","ffmpeg","Node.js 18+","an AI coding assistant"],"cost":{"note":"Free/open source; generation billed by providers you connect"},"updatedAt":"2026-10-24"},{"id":"calesthio/openmontage-podcast-repurpose","slug":"openmontage-podcast-repurpose","name":"OpenMontage Podcast Repurpose","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["openmontage","pipeline","edit-agents","skill"],"summary":"Turns podcast audio or video into audiogram or caption-led clips, quote cards and an optional full-episode companion vid","description":"Turns podcast audio or video into audiogram or caption-led clips, quote cards and an optional full-episode companion video, preserving the original audio. One of OpenMontage's 12 production pipelines: a YAML manifest (`pipeline_defs/podcast-repurpose.yaml`) plus per-stage director skills in `skills/pipelines/podcast-repurpose/` that the agent reads before it calls the repo's Python tools (ffmpeg, WhisperX, scene detection, face-tracked reframe, Remotion or HyperFrames rendering). It checkpoints state, stops for approval at creative gates and self-reviews the render with ffprobe, frame samples and audio levels. Open the OpenMontage folder in your agent and ask for this kind of edit; the agent routes to the pipeline.","useWhen":["Asked for a podcast repurpose edit of footage you already have","Want a staged pipeline with approval gates instead of one prompt"],"notFor":["A single drop-in skill (it runs inside the OpenMontage repo)"],"publisher":{"name":"Calesthio","handle":"calesthio","kind":"community","url":"https://github.com/calesthio","avatar":"https://github.com/calesthio.png","verified":false},"source":{"url":"https://github.com/calesthio/OpenMontage/tree/main/skills/pipelines/podcast-repurpose/","repo":"calesthio/OpenMontage","path":"skills/pipelines/podcast-repurpose/","license":"AGPL-3.0"},"agents":["claude-code","codex","cursor","openclaw"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"OpenMontage Podcast Repurpose"},"install":{"claude-code":"git clone https://github.com/calesthio/OpenMontage.git && cd OpenMontage && make setup"},"requires":["Python 3.10+","ffmpeg","Node.js 18+","an AI coding assistant"],"cost":{"note":"Free/open source; generation billed by providers you connect"},"updatedAt":"2026-10-24"},{"id":"calesthio/openmontage-hybrid","slug":"openmontage-hybrid","name":"OpenMontage Hybrid","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["openmontage","pipeline","edit-agents","skill"],"summary":"Combines your source footage with designed or generated support visuals (diagrams, overlays, inserts) with gates for sou","description":"Combines your source footage with designed or generated support visuals (diagrams, overlays, inserts) with gates for source/support balance and overlay density. One of OpenMontage's 12 production pipelines: a YAML manifest (`pipeline_defs/hybrid.yaml`) plus per-stage director skills in `skills/pipelines/hybrid/` that the agent reads before it calls the repo's Python tools (ffmpeg, WhisperX, scene detection, face-tracked reframe, Remotion or HyperFrames rendering). It checkpoints state, stops for approval at creative gates and self-reviews the render with ffprobe, frame samples and audio levels. Open the OpenMontage folder in your agent and ask for this kind of edit; the agent routes to the pipeline.","useWhen":["Asked for a hybrid edit of footage you already have","Want a staged pipeline with approval gates instead of one prompt"],"notFor":["A single drop-in skill (it runs inside the OpenMontage repo)"],"publisher":{"name":"Calesthio","handle":"calesthio","kind":"community","url":"https://github.com/calesthio","avatar":"https://github.com/calesthio.png","verified":false},"source":{"url":"https://github.com/calesthio/OpenMontage/tree/main/skills/pipelines/hybrid/","repo":"calesthio/OpenMontage","path":"skills/pipelines/hybrid/","license":"AGPL-3.0"},"agents":["claude-code","codex","cursor","openclaw"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"OpenMontage Hybrid"},"install":{"claude-code":"git clone https://github.com/calesthio/OpenMontage.git && cd OpenMontage && make setup"},"requires":["Python 3.10+","ffmpeg","Node.js 18+","an AI coding assistant"],"cost":{"note":"Free/open source; generation billed by providers you connect"},"updatedAt":"2026-10-24"},{"id":"calesthio/openmontage-localization-dub","slug":"openmontage-localization-dub","name":"OpenMontage Localization & Dub","type":"skill","status":"live","stream":"community","adds":"tool","category":"dubbing","tags":["openmontage","pipeline","dubbing","skill"],"summary":"Transcript-first translation of an existing video into subtitles, dubbed audio and optional lip-synced language variants","description":"Transcript-first translation of an existing video into subtitles, dubbed audio and optional lip-synced language variants, preserving timing per locale. One of OpenMontage's 12 production pipelines: a YAML manifest (`pipeline_defs/localization-dub.yaml`) plus per-stage director skills in `skills/pipelines/localization-dub/` that the agent reads before it calls the repo's Python tools (ffmpeg, WhisperX, scene detection, face-tracked reframe, Remotion or HyperFrames rendering). It checkpoints state, stops for approval at creative gates and self-reviews the render with ffprobe, frame samples and audio levels. Open the OpenMontage folder in your agent and ask for this kind of edit; the agent routes to the pipeline.","useWhen":["Asked for a localization & dub edit of footage you already have","Want a staged pipeline with approval gates instead of one prompt"],"notFor":["A single drop-in skill (it runs inside the OpenMontage repo)"],"publisher":{"name":"Calesthio","handle":"calesthio","kind":"community","url":"https://github.com/calesthio","avatar":"https://github.com/calesthio.png","verified":false},"source":{"url":"https://github.com/calesthio/OpenMontage/tree/main/skills/pipelines/localization-dub/","repo":"calesthio/OpenMontage","path":"skills/pipelines/localization-dub/","license":"AGPL-3.0"},"agents":["claude-code","codex","cursor","openclaw"],"addedAt":"2026-10-28","preview":{"kind":"wave","hue":280,"text":"OpenMontage Localization & Dub"},"install":{"claude-code":"git clone https://github.com/calesthio/OpenMontage.git && cd OpenMontage && make setup"},"requires":["Python 3.10+","ffmpeg","Node.js 18+","an AI coding assistant"],"cost":{"note":"Free/open source; generation billed by providers you connect"},"updatedAt":"2026-10-24"},{"id":"calesthio/openmontage-screen-demo","slug":"openmontage-screen-demo","name":"OpenMontage Screen Demo","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["openmontage","pipeline","edit-agents","skill"],"summary":"Polishes real screen captures into demos with callouts, zoom crops, subtitles and cleaned audio, or renders a synthetic ","description":"Polishes real screen captures into demos with callouts, zoom crops, subtitles and cleaned audio, or renders a synthetic terminal demo for CLI walkthroughs. One of OpenMontage's 12 production pipelines: a YAML manifest (`pipeline_defs/screen-demo.yaml`) plus per-stage director skills in `skills/pipelines/screen-demo/` that the agent reads before it calls the repo's Python tools (ffmpeg, WhisperX, scene detection, face-tracked reframe, Remotion or HyperFrames rendering). It checkpoints state, stops for approval at creative gates and self-reviews the render with ffprobe, frame samples and audio levels. Open the OpenMontage folder in your agent and ask for this kind of edit; the agent routes to the pipeline.","useWhen":["Asked for a screen demo edit of footage you already have","Want a staged pipeline with approval gates instead of one prompt"],"notFor":["A single drop-in skill (it runs inside the OpenMontage repo)"],"publisher":{"name":"Calesthio","handle":"calesthio","kind":"community","url":"https://github.com/calesthio","avatar":"https://github.com/calesthio.png","verified":false},"source":{"url":"https://github.com/calesthio/OpenMontage/tree/main/skills/pipelines/screen-demo/","repo":"calesthio/OpenMontage","path":"skills/pipelines/screen-demo/","license":"AGPL-3.0"},"agents":["claude-code","codex","cursor","openclaw"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"OpenMontage Screen Demo"},"install":{"claude-code":"git clone https://github.com/calesthio/OpenMontage.git && cd OpenMontage && make setup"},"requires":["Python 3.10+","ffmpeg","Node.js 18+","an AI coding assistant"],"cost":{"note":"Free/open source; generation billed by providers you connect"},"updatedAt":"2026-10-24"},{"id":"calesthio/openmontage-documentary-montage","slug":"openmontage-documentary-montage","name":"OpenMontage Documentary Montage","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["openmontage","pipeline","edit-agents","skill"],"summary":"Builds a CLIP-searchable corpus from free archives (Pexels, Archive.org, NASA, Wikimedia, Unsplash) and cuts real footag","description":"Builds a CLIP-searchable corpus from free archives (Pexels, Archive.org, NASA, Wikimedia, Unsplash) and cuts real footage by narrative beat with music sync and a unified grade. One of OpenMontage's 12 production pipelines: a YAML manifest (`pipeline_defs/documentary-montage.yaml`) plus per-stage director skills in `skills/pipelines/documentary-montage/` that the agent reads before it calls the repo's Python tools (ffmpeg, WhisperX, scene detection, face-tracked reframe, Remotion or HyperFrames rendering). It checkpoints state, stops for approval at creative gates and self-reviews the render with ffprobe, frame samples and audio levels. Open the OpenMontage folder in your agent and ask for this kind of edit; the agent routes to the pipeline.","useWhen":["Asked for a documentary montage edit of footage you already have","Want a staged pipeline with approval gates instead of one prompt"],"notFor":["A single drop-in skill (it runs inside the OpenMontage repo)"],"publisher":{"name":"Calesthio","handle":"calesthio","kind":"community","url":"https://github.com/calesthio","avatar":"https://github.com/calesthio.png","verified":false},"source":{"url":"https://github.com/calesthio/OpenMontage/tree/main/skills/pipelines/documentary-montage/","repo":"calesthio/OpenMontage","path":"skills/pipelines/documentary-montage/","license":"AGPL-3.0"},"agents":["claude-code","codex","cursor","openclaw"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"OpenMontage Documentary Montage"},"install":{"claude-code":"git clone https://github.com/calesthio/OpenMontage.git && cd OpenMontage && make setup"},"requires":["Python 3.10+","ffmpeg","Node.js 18+","an AI coding assistant"],"cost":{"note":"Free/open source; generation billed by providers you connect"},"updatedAt":"2026-10-24"},{"id":"calesthio/openmontage-cinematic","slug":"openmontage-cinematic","name":"OpenMontage Cinematic","type":"skill","status":"live","stream":"community","adds":"visual","category":"edit-agents","tags":["openmontage","pipeline","edit-agents","skill"],"summary":"Mood-led trailers, teasers and brand films, best with supplied footage; can analyze a reference video and fill gaps with","description":"Mood-led trailers, teasers and brand films, best with supplied footage; can analyze a reference video and fill gaps with generated inserts. One of OpenMontage's 12 production pipelines: a YAML manifest (`pipeline_defs/cinematic.yaml`) plus per-stage director skills in `skills/pipelines/cinematic/` that the agent reads before it calls the repo's Python tools (ffmpeg, WhisperX, scene detection, face-tracked reframe, Remotion or HyperFrames rendering). It checkpoints state, stops for approval at creative gates and self-reviews the render with ffprobe, frame samples and audio levels. Open the OpenMontage folder in your agent and ask for this kind of edit; the agent routes to the pipeline.","useWhen":["Asked for a cinematic edit of footage you already have","Want a staged pipeline with approval gates instead of one prompt"],"notFor":["A single drop-in skill (it runs inside the OpenMontage repo)"],"publisher":{"name":"Calesthio","handle":"calesthio","kind":"community","url":"https://github.com/calesthio","avatar":"https://github.com/calesthio.png","verified":false},"source":{"url":"https://github.com/calesthio/OpenMontage/tree/main/skills/pipelines/cinematic/","repo":"calesthio/OpenMontage","path":"skills/pipelines/cinematic/","license":"AGPL-3.0"},"agents":["claude-code","codex","cursor","openclaw"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":25,"text":"OpenMontage Cinematic"},"install":{"claude-code":"git clone https://github.com/calesthio/OpenMontage.git && cd OpenMontage && make setup"},"requires":["Python 3.10+","ffmpeg","Node.js 18+","an AI coding assistant"],"cost":{"note":"Free/open source; generation billed by providers you connect"},"updatedAt":"2026-10-24"},{"id":"calesthio/openmontage-jump-cut-reframe","slug":"openmontage-jump-cut-reframe","name":"OpenMontage Silence Cutter & Auto Reframe","type":"skill","status":"live","stream":"community","adds":"tool","category":"cuts","tags":["openmontage","cuts","skill"],"summary":"Automatic jump cuts from silencedetect, plus a face-tracked 16:9 → 9:16 reframe with a smoothed crop.","description":"Two OpenMontage tools that make the classic talking-head edit without a model: `tools/video/silence_cutter.py` finds pauses with ffmpeg silencedetect and removes them, speeds them up or only marks them; `tools/video/auto_reframe.py` turns a 16:9 interview into 9:16 by tracking the speaker's face with MediaPipe/OpenCV and smoothing the crop so it never jitters. Use them from inside OpenMontage or copy the scripts.","useWhen":["Automatic jump cuts from silencedetect, plus a face-tracked 16"],"notFor":[],"publisher":{"name":"Calesthio","handle":"calesthio","kind":"community","url":"https://github.com/calesthio","avatar":"https://github.com/calesthio.png","verified":false},"source":{"url":"https://github.com/calesthio/OpenMontage/blob/main/tools/video","repo":"calesthio/OpenMontage","path":"tools/video","license":"AGPL-3.0"},"agents":["claude-code","codex","cursor","openclaw"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"OpenMontage Silence Cutter & Auto Reframe"},"install":{"claude-code":"git clone https://github.com/calesthio/OpenMontage.git && cd OpenMontage && make setup"},"requires":["Python 3.10+","ffmpeg","Node.js 18+","an AI coding assistant"],"cost":{"note":"Free/open source"},"updatedAt":"2026-10-24"},{"id":"calesthio/openmontage-sound-design","slug":"openmontage-sound-design","name":"OpenMontage Sound Design Rules","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["openmontage","editing","skill"],"summary":"Mix targets an agent can check: dialogue −16 to −14 LUFS, music 18–20 dB under speech, whoosh timing, true-peak limits.","description":"The `skills/creative/sound-design.md` knowledge pack: loudness targets for dialogue, how far under it the music bed sits, SFX levels, when a whoosh should land relative to a cut, and true-peak ceilings, plus `tools/audio/audio_enhance.py` for noise reduction, normalisation and EQ through ffmpeg. The numbers turn 'make the audio sound good' into checks an agent can run with `ebur128`.","useWhen":["Mix targets an agent can check"],"notFor":[],"publisher":{"name":"Calesthio","handle":"calesthio","kind":"community","url":"https://github.com/calesthio","avatar":"https://github.com/calesthio.png","verified":false},"source":{"url":"https://github.com/calesthio/OpenMontage/blob/main/skills/creative/sound-design.md","repo":"calesthio/OpenMontage","path":"skills/creative/sound-design.md","license":"AGPL-3.0"},"agents":["claude-code","codex","cursor","openclaw"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"OpenMontage Sound Design Rules"},"install":{"claude-code":"git clone https://github.com/calesthio/OpenMontage.git && cd OpenMontage && make setup"},"requires":["Python 3.10+","ffmpeg","Node.js 18+","an AI coding assistant"],"cost":{"note":"Free/open source"},"updatedAt":"2026-10-24"},{"id":"calesthio/openmontage-visual-qa","slug":"openmontage-visual-qa","name":"OpenMontage Visual QA","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["openmontage","editing","skill"],"summary":"Self-review after render: frames at each cut, codec and duration checks, captions over faces, broken transitions.","description":"`tools/analysis/visual_qa.py` samples frames at the timestamps you give it, checks resolution, duration and codec, and flags captions that cover a face or transitions that land on black, so the agent can look at its own render before showing it to you. Pair it with the edit decision list: every cut point gets a still.","useWhen":["Self-review after render"],"notFor":[],"publisher":{"name":"Calesthio","handle":"calesthio","kind":"community","url":"https://github.com/calesthio","avatar":"https://github.com/calesthio.png","verified":false},"source":{"url":"https://github.com/calesthio/OpenMontage/blob/main/tools/analysis/visual_qa.py","repo":"calesthio/OpenMontage","path":"tools/analysis/visual_qa.py","license":"AGPL-3.0"},"agents":["claude-code","codex","cursor","openclaw"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"OpenMontage Visual QA"},"install":{"claude-code":"git clone https://github.com/calesthio/OpenMontage.git && cd OpenMontage && make setup"},"requires":["Python 3.10+","ffmpeg","Node.js 18+","an AI coding assistant"],"cost":{"note":"Free/open source"},"updatedAt":"2026-10-24"},{"id":"calesthio/openmontage-broll-planning","slug":"openmontage-broll-planning","name":"OpenMontage B-roll Planning","type":"skill","status":"live","stream":"community","adds":"tool","category":"editing","tags":["openmontage","editing","skill"],"summary":"Plans b-roll from a script: stock vs generated, search queries per beat, and how to judge a clip before using it.","description":"The `skills/creative/broll-planning.md` and `video-stitching.md` packs: read the script beat by beat, decide where b-roll covers a cut or illustrates a claim, choose stock (Pexels, Archive.org, NASA, Wikimedia) or generated footage, write the search query, and reject clips with watermarks, wrong aspect or mismatched grade. The stitching pack covers multi-take compilations, picture-in-picture and side-by-side layouts.","useWhen":["Plans b-roll from a script"],"notFor":[],"publisher":{"name":"Calesthio","handle":"calesthio","kind":"community","url":"https://github.com/calesthio","avatar":"https://github.com/calesthio.png","verified":false},"source":{"url":"https://github.com/calesthio/OpenMontage/blob/main/skills/creative/broll-planning.md","repo":"calesthio/OpenMontage","path":"skills/creative/broll-planning.md","license":"AGPL-3.0"},"agents":["claude-code","codex","cursor","openclaw"],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":210,"text":"OpenMontage B-roll Planning"},"install":{"claude-code":"git clone https://github.com/calesthio/OpenMontage.git && cd OpenMontage && make setup"},"requires":["Python 3.10+","ffmpeg","Node.js 18+","an AI coding assistant"],"cost":{"note":"Free/open source"},"updatedAt":"2026-10-24"},{"id":"shivsakhuja/want-notes-app-ad","slug":"want-notes-app-ad","name":"Notes-App Ad","type":"wanted","status":"wanted","stream":"trends","category":"native-ui","tags":["ads","notes-ui","typing-animation","copy-variants","deterministic","hyperframes"],"summary":"A lowercase note types itself in a phone notes app, reads like a confession, then turns out to be an ad.","description":"A phone notes screen types out 25–60 lowercase words (hook, turn, payoff, one call to action) with a caret, natural pauses and the odd backspace, then cuts to a brand end card. It works because it feels native rather than sold-to, and it is cheap and reliable: Gooseworks built its `/goose-video` Claude skill on HTML alone, with no video model. An agent writes N copy variants, renders each with an original notes-style component in HyperFrames (a GSAP typing timeline, a keyboard with key-press highlights, typing SFX) and exports 9:16 and 4:5 for A/B tests.","publisher":{"name":"Shiv","handle":"shivsakhuja","kind":"community","url":"https://x.com/shivsakhuja","avatar":"https://unavatar.io/x/shivsakhuja"},"source":{"url":"https://x.com/shivsakhuja/status/2075128457030472110"},"agents":[],"models":["render"],"cost":{"typicalCredits":"~6 credits / run (estimate)","note":"Render only (varg render tool, catalog of 2026-10-23); free when rendered locally. Needs a paid hook such as a voiceover or a variant batch."},"preview":{"kind":"notes","hue":48,"text":"not an ad (ok, it is)"},"trend":{"sourceUrl":"https://x.com/shivsakhuja/status/2075128457030472110","author":"Shiv (@shivsakhuja), co-founder of Gooseworks","date":"2026-07-09","views":200735,"likes":1029,"bookmarks":1961,"pipeline":"Copy LLM writes hook → turn → payoff variants → HTML notes component typed on a GSAP timeline (caret, pauses, backspaces, auto-scroll) → brand end card → HyperFrames render per variant","wave":1,"demand":"1,961 bookmarks on 1,029 likes (1.9×, the highest save ratio on the board) and 474 \"Goose\" comment-to-DM replies; Gooseworks sells it inside paid tiers; Notes-app ads date back to 2023 newsletter breakdowns."},"legal":"Imitates the iOS Notes UI (Apple trade dress): ship an original notes-style theme labeled \"not affiliated\", with no Apple fonts, icons or emoji. Ad copy must be truthful and disclosed as an ad where platforms require it.","featured":true,"addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/868762346d1a/want-notes-app-ad.mp4","w":404,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRlYBAABXRUJQVlA4IEoBAACwBwCdASogADoAPs1UpEunpKOhqA6o8BmJZwDRDbHxgVwaCj4BSBfEZTiT6FVpKUuAER+2t593C/lbV2TA89y1/vgCMk+AAP76S6YcwDfPSJE6pzoUzmttCQ/V3RlSSsFKBIZ45LGUqkqEMuEjL94QprXQM6rr1ku6nOUKaIqrZ+UxKmZ+uRvTk5wrWJ/0ET6b9Q0skWJ77yvznFH+4//PunLJq0ZmATZNxPzOVQRYpAGLDclyv4vu08T+kKhAAnAdH/Dsd+cXCxGtmG1lfykjwE0pcqsQLl6d3xLKGK+amjqQVawXUw4U1BklWcJHPBlqWVppINWk2AjLD8t/OCeWNc5jJaaIRM1V1OgrMLN0MiKs2wNt/M3QqRGCmldPjzcdX6J+DHJloT5mfRp+MB9QMMOkHweNXfcZ5Dxr1h/N9gckNYn7hj8AAAA=","source":"https://video.twimg.com/amplify_video/2075128405973209088/vid/avc1/720x1280/J4FUwWn8uJ7x7T9N.mp4?tag=14","page":"https://x.com/shivsakhuja/status/2075128457030472110","credit":"Shiv (@shivsakhuja), Gooseworks","rights":"creator-post","note":"Gooseworks' launch clip: an iPhone Notes screen types 'you just stopped scrolling. for a note. not an ad. except this is an ad…' line by line with a caret (first 8 s of 21 s; the brand end card follows)","bytes":38002,"addedAt":"2026-10-27"}},{"id":"jeffgwoah/want-apple-music-lyric-video","slug":"want-apple-music-lyric-video","name":"Apple Music Lyric Video","type":"wanted","status":"wanted","stream":"trends","category":"music","tags":["native-ui","lyrics","karaoke","song-generation","whisper","hyperframes"],"summary":"A phone lyric screen: the sung line big and bold, the rest dimmed and blurred, synced word by word to a song.","description":"A screen recording of a streaming app's full-screen lyrics view: the active line is large and white, neighboring lines fade and blur with distance, and the list spring-scrolls on every line. It took off with Jeff Guo's \"Claude's Plan\", a dev-culture parody whose lyric-screen clip reached 1.7M views in one X repost and, by the creator's count, 190K Douyin likes in a day. An agent generates an original song from the user's lyrics with Lyria 3.5 or ElevenLabs Music v2.5, force-aligns word times with Whisper to the known lyrics (Jeff used stable-whisper and librosa for the drops), and renders an in-house lyric player in HyperFrames with an optional album-art header, mesh-gradient background and translation line. varg puts the song, the timing and the render on one credit balance.","publisher":{"name":"Jeff Guo","handle":"jeffgwoah","kind":"community","url":"https://x.com/jeffgwoah","avatar":"https://unavatar.io/x/jeffgwoah"},"source":{"url":"https://x.com/immasiddx/status/2074152481555386804"},"agents":[],"models":["lyria_3_5","eleven_music_v2_5","whisper","render"],"cost":{"typicalCredits":"~25 credits / run (estimate)","note":"Lyria 3.5 ~11 per song + Whisper ~6 + render ~6 (varg catalog of 2026-10-23); a song the user uploads skips Lyria."},"preview":{"kind":"karaoke","hue":340,"text":"my agent shipped it while I slept"},"trend":{"sourceUrl":"https://x.com/immasiddx/status/2074152481555386804","author":"Jeff Guo (@jeffgwoah), song creator; viral repost by sid (@immasiddx)","date":"2026-07-06","views":1747334,"likes":25804,"bookmarks":8014,"pipeline":"Song (Lyria 3.5 / ElevenLabs Music v2.5, or upload) → Whisper word timestamps force-aligned to the known lyrics → lyric JSON → HyperFrames lyric player (active line bold, blur by distance, spring scroll) → 9:16 export","wave":1,"demand":"25.8K likes and 8K bookmarks on the repost; the Douyin repost saved to the board had ~24K shares; the creator's Remotion-built lyric video follow-up drew 280K views and \"how did you do it\" replies. CapCut already ships auto-lyrics, so the generated song is the paid hook."},"legal":"The Apple Music UI is Apple trade dress: build an original lyric player with no Apple marks, fonts or icons, and do not bundle AMLL (AGPL-3.0). Parodies that reuse a copyrighted melody get pulled: \"Claude's Plan\" was removed from Spotify and YouTube Music by an automated copyright claim (creator, 2026-08-26), so generate original music and lyrics.","featured":true,"addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/8b20c2d7bc9d/want-apple-music-lyric-video.mp4","w":574,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRswAAABXRUJQVlA4IMAAAABQBQCdASogACgAPtFSp00oJCOiMBVaqQAaCWkAAH7VSRQnn1HkOuttEXy5+hsBOVm+yoAA/vM2G7rMjd5zWHUem8FU8jcZn+bi2k4A1QdlQYfFba+dJ4nVOmcLM5+jniFQHm7j/To+CAks/yJnNgq15XHi1noHRVp2OgJelM4iT4w9UOAqS7c9KVI5e/qF2GENMTCKhCjWzT37uw1aNv0vcF7KXOwj2HvwsWsfF5dwHpB4oIZVxULxYHd+Kbaz4AA=","source":"https://video.twimg.com/amplify_video/2074152413733474304/vid/avc1/882x1104/krSFaIYsC4-nm-FO.mp4","page":"https://x.com/immasiddx/status/2074152481555386804","credit":"Jeff Guo (@jeffgwoah), via sid (@immasiddx)","rights":"creator-post","note":"Screen recording of the full-screen lyrics view for Jeff Guo's song 'Claude's Plan': the active line is big and white, neighbors blur, the list scrolls line by line (6–14 s of 48 s, muted)","bytes":96012,"addedAt":"2026-10-27"}},{"id":"varghq/want-floating-ui-cards-promo","slug":"want-floating-ui-cards-promo","name":"Floating UI Cards Promo","type":"wanted","status":"wanted","stream":"trends","category":"launch","tags":["native-ui","explainers","saas","launch-video","ui-cards","paper-shaders","hyperframes","brand-motion"],"summary":"A SaaS promo told through floating UI cards (social post, live pill, feature chip) over a halftone backdrop.","description":"Product moments are told by UI artifacts instead of screen recordings: a social-post card, a notification with a green \"Live\" pill, a purple feature chip, a counter and a cursor click float with spring motion over a gray halftone-dot backdrop, under a lower-third tagline. It is a staple of SaaS launch videos and fully deterministic. An agent turns product facts into 3–6 moments, themes a card kit from the brand's website tokens, animates spring scale-ins, blur-to-sharp and slow parallax in HyperFrames, and draws the backdrop with Paper Shaders (Halftone Dots, Dot Grid, Grain Gradient).","publisher":{"name":"varg inspiration board","handle":"vargHQ","kind":"varg","url":"https://varga.notion.site/add-3979b7e6f38680059a4eec16551e523f","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://varga.notion.site/add-3979b7e6f38680059a4eec16551e523f"},"agents":[],"models":["render","eleven_v4_turbo"],"cost":{"typicalCredits":"~6 credits / run (estimate)","note":"Render only (catalog of 2026-10-23); an ElevenLabs v4 Turbo voiceover adds ~0.0042 credits per character (minimum 2)."},"preview":{"kind":"cards","hue":270,"text":"New lead just raised"},"trend":{"sourceUrl":"https://varga.notion.site/add-3979b7e6f38680059a4eec16551e523f","author":"Unknown creator: a product video saved to the varg inspiration board as \"badges\" on 2026-07-08; the original post was not found","date":"2026-07-08","pipeline":"Product facts → 3–6 UI moments → card kit themed from brand tokens → spring, blur-to-sharp and parallax motion in HyperFrames → Paper Shaders halftone backdrop → lower-third taglines","wave":1,"demand":"In the report's first wave as the UI-cards SaaS promo; a launch-video staple that fits varg Studio brand kits. No engagement data: the source clip's origin is unknown."},"legal":"Use fictional brands or the user's own: the board sample shows a real publisher's card and verified ticks, which imply an endorsement that does not exist.","addedAt":"2026-10-26","adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/e4254032122f/want-floating-ui-cards-promo.webp","w":960,"h":934,"blur":"data:image/webp;base64,UklGRrwAAABXRUJQVlA4ILAAAAAQBQCdASogACAAPtFYoUwoJSMiMBgMAQAaCWcAAIa81mCZ/wBKyeep9GiwL48SPjhAAP4KBhB/0pPP0ZsVoL1Tq5RNPmOzBVq6nCbF53pXxPaDFNJXplBLhsZxm2MWIy/P3XDepaUKPD4bHuypqT+VAsoD2yAgq0xiTo8u8FdjRtJR2K3UXTwfiOV0O+c9TqSdZbd+iWwEFj2Ldy8vaG3tLnvWhjJY/0cIxdO1Hz4IAA==","source":"https://varga.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F2f7f3d60-e25a-4b36-9552-623efd7be87a%2Fa05b410f-b104-42ba-9fe6-cdb23b99bf9d%2FScreenshot_2026-07-08_at_4.46.22_PM.png?table=block&id=3979b7e6-f386-8064-8571-c992d09d8550&spaceId=2f7f3d60-e25a-4b36-9552-623efd7be87a&cache=v2","page":"https://varga.notion.site/add-3979b7e6f38680059a4eec16551e523f","credit":"Unknown creator (original post not found), via the varg inspiration board","rights":"creator-post","note":"Frame of the product video saved on the board as 'badges': a social-post card and a 'Signal Scout' notification with a green Live pill and a purple Enrichment chip float over a gray halftone backdrop, with the lower-third 'Skip the setup. Ship results.' (a still; the video itself is not on the board)","bytes":33046,"addedAt":"2026-10-27"}},{"id":"tweetbylokki/want-app-pov-device-demo","slug":"want-app-pov-device-demo","name":"App POV Device Demo","type":"wanted","status":"wanted","stream":"trends","category":"native-ui","tags":["app-marketing","device-mockup","pov","carousel","deterministic","hyperframes"],"summary":"\"POV: you're using my app\": a phone mockup swiping through items with a 3D tilt and an ambient color wash.","description":"An indie-app demo framed as a POV: a device mockup on white, a carousel swiped with a slight 3D tilt, a background tint that shifts to each item's dominant color, and one object effect that sells the app's idea (in the sample, posters cut into perforated stamps). The post earned 298 bookmarks on 24K views, a 0.70 save ratio that says creators keep it as a template. An agent recreates the screens in HTML or uses the user's screenshots, wraps them in an original device frame, drives the carousel physics and color extraction in HyperFrames, and exports 4:5 and 9:16.","publisher":{"name":"Lokki","handle":"tweetbylokki","kind":"community","url":"https://x.com/tweetbylokki","avatar":"https://unavatar.io/x/tweetbylokki"},"source":{"url":"https://x.com/tweetbylokki/status/2074809676664107064"},"agents":[],"models":["render"],"cost":{"typicalCredits":"~6 credits / run (estimate)","note":"Render only (catalog of 2026-10-23); free when rendered locally."},"preview":{"kind":"cards","hue":25,"text":"Stamps collected"},"trend":{"sourceUrl":"https://x.com/tweetbylokki/status/2074809676664107064","author":"Lokki (@tweetbylokki)","date":"2026-07-08","views":23996,"likes":423,"bookmarks":298,"pipeline":"Screens (HTML recreation or screenshots) → original device frame → carousel with 3D tilt and per-item color sampling → effect mask (stamp perforation, polaroid, die-cut) → \"POV:\" caption → 4:5 and 9:16 render","wave":1,"demand":"0.70 bookmark/like ratio; an evergreen indie-app marketing format; part of the board's native-UI family, which the research placed in wave 1."},"legal":"Device frames and OS chrome are Apple and Google trade dress, so draw original frames. Only show apps the user owns; the sample's stamp artwork belongs to its maker.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/7f31c6d4d247/want-app-pov-device-demo.mp4","w":576,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRtwAAABXRUJQVlA4INAAAACwBQCdASogACgAPsVYoEunpaMhtVgIAPAYiWkAA+RUL5Dzk7hJF4PJA2NtBN6G9S15ZcDvUqAA/vizEMW6OCJ0PgQKcLea6Xs9g2BbrlAZIHrwzvFJXj8SOnqCRONewwWFjt/mz53OFI10e3dcI1d8ZO3yfd6dKd4gH1+1+PhvjaHFlodRh5glTZ9evTy8a7QUrnm/BLff2M+g93U3vBH7h1+eNAcs7OUW81McPmputY/wPAnVSwd2Td1DX2LwJrm488cDXiDBsit8RE+AAAAA","source":"https://video.twimg.com/amplify_video/2074809478386712576/vid/avc1/1080x1350/bywMbuqp0z5Qn7XJ.mp4","page":"https://x.com/tweetbylokki/status/2074809676664107064","credit":"Lokki (@tweetbylokki)","rights":"creator-post","note":"'POV: you're browsing your favorite stamps in Stamply': a phone mockup on white swipes through stamp cards while the screen tint shifts to each stamp's color (first 8 s of 13.5 s)","bytes":148113,"addedAt":"2026-10-27"}},{"id":"varghq/want-word-per-beat-shader-promo","slug":"want-word-per-beat-shader-promo","name":"Word-per-Beat Shader Promo","type":"wanted","status":"wanted","stream":"trends","category":"kinetic-type","tags":["shaders","beat-sync","glitch","crt","paper-shaders","hyperframes","gif"],"summary":"One word per beat, each over a different full-bleed shader, with CRT glitch type: a punchy few-second loop.","description":"A short line (\"CODE / IS / ALL / YOU / NEED…\") lands one word per beat, each over a different full-bleed shader (plasma, matrix rain, truchet tiles, a tunnel, fbm fire, a synthwave grid, VHS noise) under a global CRT pass with vignette and chromatic aberration. It shows off code-rendered motion with zero generative risk. An agent detects the beat grid of a track, assigns words to beats, picks shaders from Paper Shaders presets plus custom GLSL, drives every time uniform from the frame index in HyperFrames, and exports an MP4 and a dithered GIF.","publisher":{"name":"varg inspiration board","handle":"vargHQ","kind":"varg","url":"https://varga.notion.site/add-3979b7e6f38680059a4eec16551e523f","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://varga.notion.site/add-3979b7e6f38680059a4eec16551e523f"},"agents":[],"models":["render","eleven_music_v2_5"],"cost":{"typicalCredits":"~10 credits / run (estimate)","note":"Render ~6 + an optional 15 s ElevenLabs Music v2.5 track at 0.2625 credits/s (~4), catalog of 2026-10-23."},"preview":{"kind":"kinetic","hue":300,"text":"one word per beat"},"trend":{"sourceUrl":"https://varga.notion.site/add-3979b7e6f38680059a4eec16551e523f","author":"Unknown creator: a 4 s GIF (clips_promo.gif) saved to the varg inspiration board on 2026-07-08; the original post was not found","date":"2026-07-08","pipeline":"Line of ≤10 words + track → beat grid → one word per beat on a full-bleed shader (Paper Shaders + custom GLSL) → global CRT and chromatic pass → HyperFrames render → MP4 + dithered GIF","wave":1,"demand":"In the report's first wave as a showcase for Studio's renderer; kinetic captions are part of 2026's \"brainrot edit\" style (Opus Pro roundup). No engagement data: the source GIF's origin is unknown."},"legal":"Ship OFL fonts and original or Apache-2.0 shaders (Paper Shaders is Apache-2.0). Keep flashes to three per second or fewer to respect photosensitivity guidance.","featured":true,"addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a2cad14fa7cd/want-word-per-beat-shader-promo.mp4","w":720,"h":404,"duration":4,"blur":"data:image/webp;base64,UklGRroAAABXRUJQVlA4IK4AAAAQBQCdASogABIAPtFcpEyoJaOiMBgIAQAaCWUAtsmM5VhXwSynAZrK/vTmWACVImZYAP720fQIaNpdYqP7DpfSW7UQFxJf/qAK2PBF2Utb4b1dDoRepWk0KWpsu8fZn+O/7eo/dcweHjdyx6amTgytERR6hjmZtET9NL+HQhyWZaGRt1+jyQt14p/j1lBh6IACdyz9pfQ4RTH0xNlz780+5NdWHIeG3OpD6AxgAAA=","source":"https://varga.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F2f7f3d60-e25a-4b36-9552-623efd7be87a%2F51a30008-b0c3-4c20-8141-01daf9029848%2Fclips_promo.gif?table=block&id=3979b7e6-f386-80d6-9ec0-ee76d8e05fcd&spaceId=2f7f3d60-e25a-4b36-9552-623efd7be87a&cache=v2","page":"https://varga.notion.site/add-3979b7e6f38680059a4eec16551e523f","credit":"Unknown creator (original post not found), via the varg inspiration board","rights":"creator-post","note":"clips_promo.gif from the board: 'CODE / IS / ALL / YOU / NEED / TO / CREATE' lands one word at a time, each over a different full-bleed shader (plasma, matrix rain, truchet tiles, tunnel, fbm fire, synthwave grid, VHS noise) (the full 4 s GIF)","bytes":259051,"addedAt":"2026-10-27"}},{"id":"liamjmcgregor/want-ascii-humanist-collage","slug":"want-ascii-humanist-collage","name":"ASCII Humanist Collage","type":"wanted","status":"wanted","stream":"trends","category":"art-direction","tags":["ascii","collage","halftone","word-fill","public-domain","image","stop-motion"],"summary":"Old paintings and specimens cut apart and refilled with ASCII, word-fill type and halftone on warm paper.","description":"\"Humanist collage\": public-domain paintings, engravings and specimens (butterflies, shells, botanicals) are segmented and each region is refilled with ASCII glyph ramps, typewriter word-fill (\"CLOUDS / BOAT / OCEAN\"), pixel mosaic or halftone, composited on paper and animated with stop-motion jitter into a wordmark reveal. It became the defining design look of mid-2026 once a top AI brand adopted it. An agent sources or generates physical-media plates (GPT Image 2.5 and Nano Banana 2.1 win on paint and engraving textures), cuts subjects with Bria background removal, fills regions in code (textmode.js, the three.js AsciiEffect or a HyperFrames look layer) and animates reveals at 12 fps \"on twos\".","publisher":{"name":"Liam McGregor","handle":"liamjmcgregor","kind":"community","url":"https://x.com/liamjmcgregor","avatar":"https://unavatar.io/x/liamjmcgregor"},"source":{"url":"https://x.com/liamjmcgregor/status/2074852273100877962"},"agents":[],"models":["gpt_image_2_5","nano_banana_2_1","bria_guided_remove_background","render"],"cost":{"typicalCredits":"~35–75 credits / collage (estimate)","note":"Four Nano Banana 2.1 plates at 5.25–15.75 each + four Bria cutouts at ~3 each (catalog of 2026-10-23); public-domain plates cost nothing."},"preview":{"kind":"collage","hue":35,"text":"clouds boat ocean "},"trend":{"sourceUrl":"https://x.com/liamjmcgregor/status/2074852273100877962","author":"Liam McGregor (@liamjmcgregor)","date":"2026-07-08","views":274855,"likes":3727,"bookmarks":2669,"pipeline":"Public-domain or generated plates → segmentation + Bria cutouts → per-region ASCII, word-fill, pixel or halftone fill in code → paper-texture composite → stop-motion reveal in HyperFrames","wave":1,"demand":"275K views and 0.72 bookmark/like on Liam's thread, plus 102K views on a quote crediting the pioneering artist; that artist's 2025 piece reached 547K views and press coverage. No paid tool sells the look yet."},"legal":"Living-artist risk: the look is tied to the artist enigmatriz, and replies called the brand version a \"ripoff\". Teach the general technique and never prompt \"in the style of\" a named artist. No Anthropic marks. Use public-domain plates and check each archive's terms.","featured":true,"addedAt":"2026-10-26","adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/918d58ccb163/want-ascii-humanist-collage.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRowAAABXRUJQVlA4IIAAAACwBACdASogABIAPtFYpEuoJSOhsAgBABoJZQCw7CHXG3Aa/PfMZxq4uhl4YD4AAP6MPEEYPwXt3c4K+OLsbGEPJRMmlM0Z3w74r3rlD+r4FPy1ggdfG915CD9NgJP0NkiOoXtvew24GJpqSyDYdj3B1pEFXP4hJMg9//pSAAAAAA==","source":"https://pbs.twimg.com/media/HMtapfSXQAA8140.jpg?name=large","page":"https://x.com/liamjmcgregor/status/2074852273100877962","credit":"Anthropic design work, via Liam McGregor (@liamjmcgregor)","rights":"creator-post","note":"A 19th-century-style ship painting whose right half is refilled with typewriter word-fill (BOAT / OCEAN / CLOUDS); one of the Anthropic launch visuals Liam collected and named 'humanist collage'","bytes":74524,"addedAt":"2026-10-27"}},{"id":"invincidesigns/want-generative-code-art-loop","slug":"want-generative-code-art-loop","name":"Generative Code-Art Loop","type":"wanted","status":"wanted","stream":"trends","category":"art-direction","tags":["p5js","generative","creative-coding","audio-reactive","hud","code-rendered"],"summary":"A seeded p5.js simulation with a lab-notebook HUD, built from a one-line concept, rendered as a loop.","description":"A one-sentence concept (\"imagine a campfire that pulls its own embers back in to stay warm\") becomes a seeded generative simulation: rings of thermal \"bricks\", embers drifting out and pulled back, framed by a HUD with mode, seed, a live histogram and a tracker on graph paper, often audio-reactive. Creative-coding posts like this earn strong saves. An agent writes an instance-mode p5.js sketch with seeded `randomSeed`/`noiseSeed`, a fixed-timestep simulation and checkpoints so HyperFrames seeks stay order-independent, drives reactivity from offline FFT analysis rather than a live mic, and renders 2048² or 4:5.","publisher":{"name":"Prathamesh","handle":"invinciDesigns","kind":"community","url":"https://x.com/invinciDesigns","avatar":"https://unavatar.io/x/invinciDesigns"},"source":{"url":"https://x.com/invinciDesigns/status/2074917179099578581"},"agents":[],"models":["render"],"cost":{"note":"Code-only: no generation spend. Render locally or with the varg render tool."},"preview":{"kind":"generative","hue":15},"trend":{"sourceUrl":"https://x.com/invinciDesigns/status/2074917179099578581","author":"Prathamesh (@invinciDesigns)","date":"2026-07-08","views":157249,"likes":886,"bookmarks":458,"pipeline":"Concept line → seeded p5.js sketch + HUD layer → offline audio analysis for reactivity → HyperFrames frame source with checkpointed state → 2048² or 1080×1350 render","wave":3,"demand":"157K views and 0.52 bookmark/like; the author confirmed \"p5js and its a code-art piece\". A creative-coding niche with no paid tool found."},"legal":"p5.js is LGPL-2.1, which is fine as a library. Credit and check the license of any sketch code adapted from other artists.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/3f526d56d3a9/want-generative-code-art-loop.mp4","w":720,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRmwBAABXRUJQVlA4IGABAACQBwCdASogACAAPslQn0unpKKhsAwA8BkJbACdH8GJ/2Ri+fK0QOm0Qrfsxoyo5IH55TsRZLEXmJ1HMTKDRPzsJyMrwAAA/v09Iiv0/DtzvT3vUtwKsu8o5XgzboNg8cYMJqrQSztq+iAVz/mg8FlVVGNmTPUpH7nAFSH52O60bdhcabLciOTeWglFU2IoT+GyTNhWxVAnQ8IizBNCkHlN/e1X8Sjl94Kk1kXaOXtdIPVYjjN6VoMAjvoFGX4UARfFH7GPrTKGtvdBFSf4JoC+PeT/1R/4QHzmXRHazOqT5YR7EIuDEG7bdG7RbmOH/6BRWTCr6/3pNroBJYtCujKwhJ4D5x2kx0QXcAyAWF6XglOKcUwP3eBgAjgIjs1oNW13g5pgB0YVYcWpP4vXSOhZrHtnzKa55g7J5cCAULf5Muf1Az0gKS1fRpoQRS5BvUQy128lFJuu5fordyZrWUAA","source":"https://video.twimg.com/amplify_video/2074915133466480640/vid/avc1/2048x2048/OQPDQ7ibp2vi9K_L.mp4","page":"https://x.com/invinciDesigns/status/2074917179099578581","credit":"Prathamesh (@invinciDesigns)","rights":"creator-post","note":"p5.js piece 'a campfire that pulls its own embers back in to stay warm': rings of thermal bricks shed embers that drift out and are pulled back, framed by a HUD with a histogram and a minimap (25–33 s of 42 s)","bytes":626693,"addedAt":"2026-10-27"}},{"id":"buburdin/want-chrome-logo-shader-fx","slug":"want-chrome-logo-shader-fx","name":"3D Chrome Logo with Shader FX","type":"wanted","status":"wanted","stream":"trends","category":"brand-motion","tags":["logo","chrome","shaders","webgl","three.js","launch"],"summary":"A glossy black-chrome wordmark that liquid paint flows over as the cursor moves, built from images and shaders.","description":"A spiky blackletter wordmark rendered as glossy black chrome with blue reflections; as the cursor moves, electric-blue liquid paint flows and drips over the letters, then recedes. The author's chain was inspiration boards, then Figma Weave for static images and 3D, then Claude to build it, shaders included. An agent renders the wordmark with an image model (or an image-to-3D step), layers WebGL passes (fluid ink trail, chromatic tint, specular sweep), scripts a virtual cursor path so the interaction survives as video, and frames it as a landing-page capture; Paper Shaders' Liquid Metal is a shortcut for simpler marks.","publisher":{"name":"Alex Burdin","handle":"buburdin","kind":"community","url":"https://x.com/buburdin","avatar":"https://unavatar.io/x/buburdin"},"source":{"url":"https://x.com/buburdin/status/2074917677295190308"},"agents":[],"models":["nano_banana_2_1","gpt_image_2_5","render"],"preview":{"kind":"logo3d","hue":215},"trend":{"sourceUrl":"https://x.com/buburdin/status/2074917677295190308","author":"Alex Burdin (@buburdin)","date":"2026-07-08","views":7991,"likes":85,"bookmarks":21,"pipeline":"Wordmark brief → image-model render (or image-to-3D) → WebGL fluid, chromatic and specular passes → scripted cursor path → HyperFrames screen-style render","wave":2,"demand":"Low reach (8K views) but a direct \"how was this made?\" reply thread answered with the full tool chain; brand and launch work in the research's wave 2."},"legal":"Use only the user's own wordmark. Generated letterforms can resemble existing marks, so run a trademark check before launch.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2fb47ba70246/want-chrome-logo-shader-fx.mp4","w":720,"h":548,"duration":8,"blur":"data:image/webp;base64,UklGRgoBAABXRUJQVlA4IP4AAABwBQCdASogABgAPtFUo0uoJKMhsAgBABoJZwDE2ywYYJl8Ylr1SUUYdPpIDwiB+xojVm+AAP71HgFGZYmee0gJ1FOF2ys/18+yWV7dqX+HtS1/y1T9x+el88Jn0HmhGzyQECU5FxeLL1KS2SaDoTl8a3yhJRLZQP0osTxL93ILdZyiov/kUHGspNjuFx6QKB1tFxbDNV2dFLjYgx+d6V2OxjkJKsQkxoQo58ptthCf2R7mGEtJOMn2E8La+cN1DyKaCtwqO112rKKa/6G/Bvazz9GkCTLA+gQBbM/patz9C98IwZgVDezgnoi0mE+x1n19R5tt3CO/RBFg2jAAAA==","source":"https://video.twimg.com/amplify_video/2074917442405724160/vid/avc1/2068x1576/omNEX1hmu1G2H3tU.mp4","page":"https://x.com/buburdin/status/2074917677295190308","credit":"Alex Burdin (@buburdin)","rights":"creator-post","note":"The LOCKEDIN landing page: a spiky blackletter wordmark in glossy black chrome; as the cursor moves, electric-blue liquid paint flows and drips over the letters, then recedes (2.2–10.2 s of 10.4 s)","bytes":339356,"addedAt":"2026-10-27"}},{"id":"morflax_com/want-extruded-vector-lens-blur","slug":"want-extruded-vector-lens-blur","name":"Extruded Vector with Lens Blur","type":"wanted","status":"wanted","stream":"trends","category":"brand-motion","tags":["3d","three.js","svg","lens-blur","chromatic-aberration","loop"],"summary":"Flat SVG shapes extruded into glossy 3D, turning under heavy lens blur and RGB fringing, as a seamless loop.","description":"Flat vector shapes (a \"#\", a four-point star) are extruded and beveled into glossy 3D objects that rotate under heavy lens blur and red-blue chromatic fringing on black, as a 5-second loop. Morflax sells this as a freemium browser tool, and its post drew 412 bookmarks. An agent takes the user's SVG (or makes one with Ideogram Vector), extrudes it in three.js, adds a glossy material and a turntable, then post-processes depth of field, chromatic aberration, bloom and dithering before a seamless HyperFrames render.","publisher":{"name":"Morflax","handle":"morflax_com","kind":"vendor","url":"https://x.com/morflax_com","avatar":"https://unavatar.io/x/morflax_com"},"source":{"url":"https://x.com/morflax_com/status/2075174316904153484"},"agents":[],"models":["ideogram_vector","render"],"preview":{"kind":"logo3d","hue":330},"trend":{"sourceUrl":"https://x.com/morflax_com/status/2075174316904153484","author":"Morflax (@morflax_com), the tool maker","date":"2026-07-09","views":37762,"likes":784,"bookmarks":412,"pipeline":"SVG (user or Ideogram Vector) → three.js extrude + bevel → glossy material and turntable → depth of field, chromatic aberration, bloom, dither → 5 s seamless loop","wave":2,"demand":"0.53 bookmark/like; Morflax monetizes the look as a freemium tool with pro plans; saved widely by designers."},"legal":"Recreate the look with three.js rather than Morflax's assets or presets. SVGs must be the user's own or licensed.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e71d205da9c6/want-extruded-vector-lens-blur.mp4","w":720,"h":404,"duration":5,"blur":"data:image/webp;base64,UklGRp4AAABXRUJQVlA4IJIAAACQBACdASogABIAPtFWo0uoJKMhsAgBABoJZgC7IT06AAcCj7WRDj3Pw9pWTAAA/vd9iUWcDgb9/9q6UujgkNDUe9yUm6o+PapBttOUebIkdpgUeiUzpxKR7RHgZyo0/q1NHKP9FRZVJD50U2ZhEXC6W61oojN5Jhpi75UmkpL05gQeBbzSjsDcSYEHtfopcWAAAA==","source":"https://video.twimg.com/amplify_video/2075173682490609664/vid/avc1/2560x1440/s-dYWre8CdbDxZje.mp4","page":"https://x.com/morflax_com/status/2075174316904153484","credit":"Morflax (@morflax_com)","rights":"creator-post","note":"Morflax's 'works with vectors too' loop: a flat '#' and a four-point star extruded into glossy pink 3D shapes that rotate under lens blur and red-blue fringing on black (the full 5 s loop)","bytes":67636,"addedAt":"2026-10-27"}},{"id":"contraben/want-living-editorial-banner","slug":"want-living-editorial-banner","name":"Living Editorial Banner","type":"wanted","status":"wanted","stream":"trends","category":"image","tags":["brand-motion","editorial","cinemagraph","social-card","model-routing"],"summary":"A split 16:9 card: a static serif headline and stats beside an AI painting that breathes with subtle motion.","description":"A research or brand-comms card: the left panel is static typography (logo, serif headline, reviewer avatars) and the right is an AI \"oil painting\" with minimal motion (locked camera, light flicker, micro-movement), which makes a stat feel like an editorial cover. The sample's own thread was a blind test showing the image model should follow the brief. An agent routes the hero image by brief (Muse for graphic looks, GPT Image 2.5 or Nano Banana 2.1 for painterly ones), animates it with a gentle image-to-video pass, keeps every word in HTML so text never warps, and exports 16:9, 1:1 and 4:5.","publisher":{"name":"ben (Contra Labs)","handle":"contraben","kind":"community","url":"https://x.com/contraben","avatar":"https://unavatar.io/x/contraben"},"source":{"url":"https://x.com/contraben/status/2074943936570024126"},"agents":[],"models":["muse_image","gpt_image_2_5","nano_banana_2_1","kling_v3"],"cost":{"typicalCredits":"~60–85 credits / banner (estimate)","note":"One hero image (GPT Image 2.5 at 2.1–23.1 or Nano Banana 2.1 at 5.25–15.75) + a 5 s Kling v3 pass at 11.8 credits/s (~59), catalog of 2026-10-23."},"preview":{"kind":"film","hue":30,"text":"Locked-off, light flicker"},"trend":{"sourceUrl":"https://x.com/contraben/status/2074943936570024126","author":"ben (@contraben), Contra Labs","date":"2026-07-08","views":36788,"likes":140,"bookmarks":35,"pipeline":"Headline + stat → hero image routed by brief → subtle image-to-video with a locked camera → HTML split layout → 16:9, 1:1 and 4:5 exports","wave":2,"demand":"Moderate reach (37K views) but high utility for research and brand posts; in the research's wave 2."},"legal":"Partner logos (the sample carries a model maker's logo) need permission. Keep all text in HTML. Label AI imagery where required (EU AI Act Article 50 transparency duties apply from 2026-08-02).","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/c983eaec3134/want-living-editorial-banner.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRggBAABXRUJQVlA4IPwAAADwBQCdASogABIAPtFSpk2oJCOiMBgIAQAaCUAZAIMEGSS3vtxvbzlIKz4YkoM4Y6ITKhQFGuCBgAD++Bx1eP0eInJGuOAn/Y8p1izzlAonZBoce9zaWfBKgQ1+B7iNwjEAAscJQXHllYzfUn1laHALac9PGdW8/47L8wZJO2x41F75BI4ifN0Kd7Tw+UXsNkmefClNo/xHtSZ4hYhJq5+x+6z3hmYrZ2g+BbIMojfzWE/BY6PD9hwTS4JJPRsKlJrObnS4bbTJkORQ89O6m57XK4WTExPx3CIfsDLSULrkrtCGF0yU32uDZpHHxJBoHgBXjmHUoWxvBnUvAAA=","source":"https://video.twimg.com/amplify_video/2074927061450293248/vid/avc1/1920x1080/U85G3OkXAuZ87m7K.mp4","page":"https://x.com/contraben/status/2074943936570024126","credit":"ben (@contraben), Contra Labs","rights":"creator-post","note":"Contra Labs research card: static serif headline, logo and reviewer avatars on the left, an AI 'oil painting' (made with Meta Muse Image) with a glowing laptop and slight light flicker on the right (first 8 s of 16 s)","bytes":55189,"addedAt":"2026-10-27"}},{"id":"ibexdream/want-surreal-edit-director","slug":"want-surreal-edit-director","name":"Surreal AI Edit Director","type":"wanted","status":"wanted","stream":"trends","category":"cinematic","tags":["seedance","vfx","surreal","character-consistency","upscale","shot-planning"],"summary":"A fashion portrait \"edited\" by a giant cursor: faces stretch, inflate and turn to chrome, one gag per shot.","description":"A cinematic portrait gets \"edited\" by UI: a giant cursor stretches a nose like taffy, a lasso turns a face into a chrome skull, a cheek inflates like a balloon, one transformation per shot, cut tight. It has the highest reach on the board (570K views). The credited pipeline: Midjourney stills, Seedance 2.0 animation, a Topaz upscale and a DaVinci grade, with an LLM planning shot timing. On varg an agent would build a character sheet with GPT Image 2.5 or Nano Banana Pro, plan beats and durations, generate 3–5 takes per micro-action with Seedance 2.5, upscale with Topaz Video, then stitch, grade and add SFX, quoting the cost in credits before each batch.","publisher":{"name":"ibexdream","handle":"ibexdream","kind":"community","url":"https://x.com/ibexdream","avatar":"https://unavatar.io/x/ibexdream"},"source":{"url":"https://x.com/ibexdream/status/2075192866553413944"},"agents":[],"models":["gpt_image_2_5","nano_banana_pro","seedance_2_5","topaz_video"],"cost":{"typicalCredits":"~4,000–6,000 credits / 20 s edit (estimate)","note":"Six shots × four takes × 5 s of Seedance 2.5 at 720p (33–50 credits/s, catalog of 2026-10-23); the creator's longer follow-up needed 80+ clips."},"preview":{"kind":"film","hue":200,"text":"Cursor stretch, take 3"},"trend":{"sourceUrl":"https://x.com/ibexdream/status/2075192866553413944","author":"ibexdream (@ibexdream)","date":"2026-07-09","views":570426,"likes":5558,"bookmarks":3727,"pipeline":"Character stills → beat list with durations → one transformation per shot, 3–5 takes each (Seedance 2.5) → Topaz upscale → stitch, grade, SFX","wave":2,"demand":"570K views and 0.67 bookmark/like; the creator's next piece took 80+ Seedance clips and ~25 generations for one complex action, which is the planning and budgeting a director skill would take over."},"legal":"Faces must be the user's own or consented: Seedance rejects real-person face references except through liveness-checked routes. No celebrity likeness. Label the result as AI and watermark it against reposting.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/6cdb8d7b60ed/want-surreal-edit-director.mp4","w":540,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRloBAABXRUJQVlA4IE4BAABQCACdASogACoAPsFWoEunpSMhtVv4APAYCWIAqSdidtjUSyVs3YRWZqpRtxeQPRtXXJqms5aVlu5U+5jiAv9gb5sEm0H6SDZZ0rAA/dH+QIfKiyFGTSZeowf1QGaZbAPcoE492e6AeGR/O3jQGql++Twrvv3oiRa0SEb7H6OhmPCqeW63JH3gHuXQNzGOJNmyFOrsX48sYd+vtYZ2WoV6Yb5C65KsxWHxqjl0msmiyFFJDBA6s3qYoBiPcc1VCRJmGdfpIkhfSdHn64OUfiPKrgJgPn39jlalmN1LaTLONBkSu6jloezBURhPa5z8oNHUclgmb8Hur8Iv8kpe09oWUVT6+RKJuevsSRlEr0d/qCTjovlgqwvu5tLy8g9R9Y1IVWogY0UKKB+6NQn93/PQNCPF/ZJI/tQ0EKS7SYGFxXUHAJnnzMs0eZVoAAAA","source":"https://video.twimg.com/amplify_video/2075192684843589632/vid/avc1/1080x1440/RsLH5wwECwMphGeD.mp4","page":"https://x.com/ibexdream/status/2075192866553413944","credit":"ibexdream (@ibexdream)","rights":"creator-post","note":"AI fashion portrait 'edited' by a giant cursor: a lasso turns the face into a chrome skull, the nose stretches like taffy, a cheek inflates (9.6–17.6 s of 18.6 s; Midjourney + Seedance on Runway)","bytes":589411,"addedAt":"2026-10-27"}},{"id":"_francois_vogel/want-slit-scan-time-jump","slug":"want-slit-scan-time-jump","name":"Slit-Scan Time Jump","type":"wanted","status":"wanted","stream":"trends","category":"art-direction","tags":["vfx","slit-scan","time-displacement","creative-coding","cinematic"],"summary":"A jumper hangs mid-air while the world behind smears into vertical time streaks, then snaps back on landing.","description":"A locked-off shot of someone leaping: while they hang mid-air, everything behind them smears into vertical color streaks (a slit-scan or time-displacement effect), and the frame snaps back to normal on landing. François Vogel's 2023 piece pulled 346K views in a July 2026 repost, so the effect is evergreen. An agent needs a static-camera source clip (the user's footage or one generated with Kling v3), a subject matte, and a time-displacement pass in which each column samples frame t − f(x) from a ring buffer (numpy or WebGL), then composites the subject back over the streaks.","publisher":{"name":"François Vogel","handle":"_francois_vogel","kind":"community","url":"https://x.com/_francois_vogel","avatar":"https://unavatar.io/x/_francois_vogel"},"source":{"url":"https://x.com/Inspector_9/status/2074860025047052396"},"agents":[],"models":["kling_v3","seedance_2_5"],"preview":{"kind":"shader","hue":120},"trend":{"sourceUrl":"https://x.com/Inspector_9/status/2074860025047052396","author":"François Vogel (@_francois_vogel), artist; 2026 repost by Brian (@Inspector_9)","date":"2026-07-08","views":346276,"likes":3675,"bookmarks":970,"pipeline":"Locked-off clip (user footage or Kling v3) → subject matte → time displacement from a frame ring buffer (numpy or WebGL) → composite the subject back → render","wave":3,"demand":"346K views and 970 bookmarks for a three-year-old piece; long-running how-to interest in time-displacement tutorials; a niche with no paid tool found."},"legal":"Process only footage the user owns. The reference piece is François Vogel's artwork: credit the inspiration and never repost his clips.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2abd1e0ab782/want-slit-scan-time-jump.mp4","w":720,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAAAwBwCdASogACAAPtFUo0uoJKMhsAgBABoJZQC46vAdlF3rzA4qcdobgDqESdeLTebkykwg5cS7TWbeCJuMJeqChMAA/tFhW4TDxfvBuJQqzwcJz0eQG1aFXuHx76ELs2SsOALxGd5gqwXtTyo1XKWLMCRfwCbeYuaR3K2SxrOShKz1sSOEsxwbnf5lRWFCWQhWCf3QAlL0nHVCwS8DuFVr9Wjpw0AyQUJuL/PJx2DW62nY4LcXM9giKDmFXhhXpyvzk/VHrbxowBFcthjAa0ll8LfHJBv5jhqrmT9gMRm/y86JsPG1pVMZOM0aohDN9xYWyJjN4KE7dPsyQWb7X9yhU+TO/K5UWr/QJv/YJVNQeiwXC8LlpwOS93fFHUNyMGYJVOVMaIrCvWpY7zm+aJEru0tOgsMo0YDnEgAA","source":"https://video.twimg.com/ext_tw_video/1689622673620377601/pu/vid/720x720/saAb16hS9YVhBVm_.mp4?tag=12","page":"https://x.com/Inspector_9/status/2074860025047052396","credit":"François Vogel (@_francois_vogel), via Brian (@Inspector_9)","rights":"creator-post","note":"François Vogel's 'Time & space jump': he leaps off a rock in a pine forest and, while he hangs mid-air, everything behind him smears into vertical slit-scan streaks (first 8 s of 18 s; the landing snap-back follows)","bytes":554298,"addedAt":"2026-10-27"}},{"id":"francescoinweb3/want-voxel-cartoon-character","slug":"want-voxel-cartoon-character","name":"Voxel Cartoon Character","type":"wanted","status":"wanted","stream":"trends","category":"3d-scenes","tags":["voxel","three.js","characters","story-background","code-rendered","remotion","art-direction"],"summary":"A blocky voxel character walks, jumps and lands in a tiny world, rendered from code with no video model.","description":"Blocky voxel characters idle, crouch, jump and land on floating grass-and-dirt islands, with flat colors or soft depth of field. The founder's board saved a blocky-character jump clip (origin unknown); this October post shows the same idea agent-made, a voxel mascot walking through six rooms where \"no video model made a single frame\". An agent builds instanced-cube scenes in three.js, rigs characters (skinview3d ships walk, run, fly and swim clips plus custom animations), scripts camera moves through a HyperFrames frame source, or takes the generative route with MiniMax H3 Max Low Poly; looping parkour runs double as backgrounds for chat stories.","publisher":{"name":"Francesco","handle":"francescoinweb3","kind":"community","url":"https://x.com/francescoinweb3","avatar":"https://unavatar.io/x/francescoinweb3"},"source":{"url":"https://x.com/francescoinweb3/status/2113585622317244526"},"agents":[],"models":["minimax_h3_max_style_low_poly","minimax_h3_max_3d_to_video","render"],"cost":{"note":"The code route has no generation spend; the generative route uses MiniMax H3 Max Low Poly (priced per clip in the varg catalog)."},"preview":{"kind":"voxel","hue":100},"trend":{"sourceUrl":"https://x.com/francescoinweb3/status/2113585622317244526","author":"Francesco (@francescoinweb3)","date":"2026-10-23","views":17846,"likes":205,"bookmarks":246,"pipeline":"Voxel scene (three.js instanced cubes) + rigged blocky character → animation clips (idle, walk, jump) → scripted camera → HyperFrames or Remotion render; generative route: MiniMax H3 Max Low Poly","wave":2,"demand":"In the research's wave 2 as a background for chat stories: blocky \"parkour\" story backgrounds are already a paid niche (Zebracat, Hooked); 1.2 bookmark/like on this post. No 2026 trend data for voxel AI shorts."},"legal":"Minecraft is a Mojang/Microsoft trademark: never use the name, Mojang skins, textures or the licensed font in the skill or its outputs. Ship original blocky characters and blocks.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/11d14a6fb1f5/want-voxel-cartoon-character.mp4","w":600,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRrIBAABXRUJQVlA4IKYBAABwCACdASogACYAPslSoUunpKMhtVgIAPAZCWgAxpWgFFj8Cz7s6zJRrNCvYq1mFZ8MflbKaTpTodTrYJpU+T9Sda9pVd5+AbteygU8AOJ/Fij/0k2VdYVF5fSnyblfW0n6eqcqJ87nWI2vHKjqFptNCjPkGMEBHHiibMbj7GJh3dXoTqLf2tStkiCO1AR822f3iP98kEc3PPRlGIXJEihjyv0v1+phToEuTKltMv/WOPOM5pvfy0a4XszAqR8z4NWqek4fvvVd1oPLMKFnhXxXMDKrb/tFBkqkQNyA/hwPow8VLp6XkIPZNFeOkPF2LfyrB4bwn2MMWNZYV1NJlUfzz0cjvhbGJM0QU53xwMIbq7jILfy5GYoB5MMZKiaDB1nDh2sSkawIk2NfTEmzNQyuzBuT/ZzaMVMBEU2wIuo8Jf6V97S7N4IvwiI5ObEz8F9kmW2tYO7PiS6KaMW1T4Cc/E9l/miXoKYNEJX0P0GWWHX35ptX7t/7XD/j/0lCS8nf5oFo07+F4Xy0OU23z3CPvFipWMBGJdrhzr6kaRCnbNhxoAAAAA==","source":"https://video.twimg.com/amplify_video/2113585472110747648/vid/avc1/1080x1296/9smQByHl5r8c31jL.mp4","page":"https://x.com/francescoinweb3/status/2113585622317244526","credit":"Francesco (@francescoinweb3)","rights":"creator-post","note":"A blocky red voxel character with soft depth of field hops and waves through 'rooms' of a code-built studio video (Remotion, no video model), shown inside his studio UI (11.5–19.5 s of 24 s)","bytes":267430,"addedAt":"2026-10-27"}},{"id":"dollzmania/want-y2k-pixel-dress-up-dolls","slug":"want-y2k-pixel-dress-up-dolls","name":"Y2K Pixel Dress-Up Dolls","type":"wanted","status":"wanted","stream":"trends","category":"art-direction","tags":["pixel-art","y2k","nostalgia","dress-up","gif","sprites"],"summary":"Early-2000s \"Dollz\": pixel paper dolls with layered outfits, glitter text and sparkle GIFs.","description":"Dollz were drag-and-drop pixel paper dolls (a base doll plus layered hair, clothes and accessories) framed in glittery Y2K pages with 88×31 buttons; one archive lists 230+ working dollmakers, and nostalgia Shorts about them still draw tens of thousands of views. An agent can run a combinatorial dollmaker over original part libraries, or take the AI route (image model → nearest-neighbor downscale → palette quantization → transparency cleanup), then add sparkle sprites and glitter text for PNG, GIF and MP4 output.","publisher":{"name":"Dollz Mania","handle":"dollzmania","kind":"community","url":"https://dollzmania.neocities.org/","avatar":"https://unavatar.io/dollzmania.neocities.org"},"source":{"url":"https://dollzmania.neocities.org/"},"agents":[],"models":["nano_banana_2_1","minimax_h3_max_style_16bit_pixel","render"],"preview":{"kind":"grid","hue":320,"text":"pixel doll, glitter text, 88×31 buttons"},"trend":{"sourceUrl":"https://dollzmania.neocities.org/","author":"Dollz Mania fan archive (saved to the varg inspiration board on 2026-08-05)","date":"2026-08-05","pipeline":"Original base doll + layered part sets → combinatorial dollmaker, or image model → nearest-neighbor downscale → palette quantization → sparkle sprites, glitter text, 88×31 buttons → PNG / GIF / MP4","wave":3,"demand":"A nostalgia niche: a 67 s YouTube Short about Dollz dress-up games reached 34.6K views and 2.9K likes (August 2026), and the archive lists 230+ working dollmakers. Demand size is unknown."},"legal":"Archived Dollz art belongs to the fan artists who made it: never scrape or redistribute it. Ship original base dolls and part sets.","addedAt":"2026-10-26","adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/cc7fae743716/want-y2k-pixel-dress-up-dolls.webp","w":960,"h":657,"blur":"data:image/webp;base64,UklGRq4AAABXRUJQVlA4IKIAAAAwBQCdASogABYAPtFYpU0oJKOiMBgIAQAaCWIAuxH/4B6JoRlJJaeQwBGsfgF+T46DAAD+7dN07aAEbsRx3TU8StpX1jAIjMLbBglp00mGkR8UwF3GI7qt4ktWYguhow1NwgEBL1AlGH4AxEx01eVt9pcfsc+8nFXoNkqopn1kKJkfZ4TO6RaziSKSv0jngsOGiJlB1GeX9jqlXlQEPaxMSAA=","source":"https://varga.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F2f7f3d60-e25a-4b36-9552-623efd7be87a%2F362e540c-3bdf-4d8b-bd4f-d3bb3a7f759d%2FScreenshot_2026-08-05_at_8.10.29_PM.png?table=block&id=3b49b7e6-f386-80e5-95b8-e5c333fc4912&spaceId=2f7f3d60-e25a-4b36-9552-623efd7be87a&cache=v2","page":"https://dollzmania.neocities.org/","credit":"Dollz Mania fan archive (dollzmania.neocities.org)","rights":"publisher-site","note":"The archive's home page (screenshot saved on the varg inspiration board on 2026-08-05): glitter 'Dollz Mania' logo, pixel paper dolls and 88x31 buttons on a pink heart background","bytes":46862,"addedAt":"2026-10-27"}},{"id":"belalechka/want-talking-head-sticker-edit","slug":"want-talking-head-sticker-edit","name":"Talking-Head Sticker Edit","type":"wanted","status":"wanted","stream":"trends","category":"editing","tags":["captions","stickers","editing","whisper","shorts","background-removal","talking-head"],"summary":"A presenter talks while cut-out stickers pop in on keywords, with one-word captions and a script-font hook.","description":"A presenter holds a mic in a living room while transparent cut-outs (pixel dolls, dollmaker screenshots) pop in around them on keywords, with small one-word captions up top and a script-font title hook. It is a proven creator editing style that keeps nostalgia and explainer content moving. An agent transcribes with Whisper, maps keywords to assets (generated with Nano Banana 2.1 and cut out with Bria, or user-supplied), animates bouncy pop-ins timed to word timestamps, keeps overlays off the face and inside safe zones, and renders 9:16 in HyperFrames.","publisher":{"name":"Alechka","handle":"belalechka","kind":"community","url":"https://www.youtube.com/@belalechka","avatar":"https://unavatar.io/youtube/belalechka"},"source":{"url":"https://www.youtube.com/shorts/dLaZRxfccm8"},"agents":[],"models":["whisper","nano_banana_2_1","bria_guided_remove_background","render"],"cost":{"typicalCredits":"~55–120 credits / run (estimate)","note":"Whisper ~6 + six Nano Banana 2.1 stickers at 5.25–15.75 each + six Bria cutouts at ~3 each (catalog of 2026-10-23)."},"preview":{"kind":"avatar","hue":290,"text":"am I the only one who remembers this"},"trend":{"sourceUrl":"https://www.youtube.com/shorts/dLaZRxfccm8","author":"Alechka (@belalechka on YouTube)","date":"2026-08-05","views":34576,"likes":2938,"pipeline":"Footage → Whisper word timestamps → keyword-to-sticker mapping (generate + cut out) → pop-in animation on words, one-word captions, title hook → 9:16 render","wave":3,"demand":"34.6K views and 2.9K likes (an 8.5% like rate) on a 67 s Short; overlaps existing caption tools, so the keyword-to-sticker mapping is the differentiator."},"legal":"Nostalgia screenshots and game art are third-party IP: prefer generated stand-ins or licensed assets. The presenter must be the user or a consenting person.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f28414960c0f/want-talking-head-sticker-edit.mp4","w":404,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRsIBAABXRUJQVlA4ILYBAADQCACdASogADoAPtFep04oJSOiKAqpABoJYwDEPZ/TCELEQAZoEBFrWf3xauz9nFXx2RP1eXWRjCYXPusO+zTFWeKz/eT8P3wwzXZIPNAAAPa7tHW7I2a9EX6yR3Z+tC7nim/KmEmuSMTXAj13z2+ssEHcza4yp/A+OSdeEv9ejrqa0oUU8AK1knERqBV6GCsHIN5kR5/v9j9ZjM/gmTHGDJFVkYaORXsKnIbyGp7q1nv5iLAvIPrJNav5XDVieR82aXPoqNbnw5cn6rr35VPzqdADniAqvzkly3kJ9MTPG6ycKiF/m7qidA/xx2W5LXt0WZA9saMAw9VaBUc8TZFZS/paxWxegutSA5Iv4oWT5FbyFWFEl4Ni1lrQOIgjcwbeBZnO5sr8A2US/q6/9g9CIl/Et3QH86/Wxx2SfGJKVZZ9h+xZ/3aX6BU/VzCYZjAbld3DGjoQ1tETQxCAXLPj744Y2Edi6FiumTEq9Ih1lALT7EWOz9plyXFB2iTgS5Rywo1gM7E86bVjDj0zMte0cYnjyh4egYr9cTJCNcAZY2PmB1sbpVN3NVNHP70vypLiCLsJAAA=","source":"https://www.youtube.com/shorts/dLaZRxfccm8","page":"https://www.youtube.com/shorts/dLaZRxfccm8","credit":"Alechka (@belalechka)","rights":"creator-post","note":"Her Dollz nostalgia Short: she talks into a mic on a sofa while pixel-doll cut-outs pop in around her on keywords, one-word captions sit up top, and the hook opens in script font ('Я одна это помню?') (first 8 s of 67 s; 360p source)","bytes":209780,"addedAt":"2026-10-27"}},{"id":"regyperlera/want-collectible-figure-packshot","slug":"want-collectible-figure-packshot","name":"Collectible Figure Packshot","type":"wanted","status":"wanted","stream":"trends","category":"image","tags":["figurine","one-click-effect","nano-banana","toy","product","photo-to-3d-look"],"summary":"Turn a selfie, pet or product into a realistic collectible figure, on a desk beside its box or on white.","description":"One photo becomes a realistic collectible figure on a clear acrylic base, staged on a desk beside its packaging box and a monitor showing the sculpting process, or, in the 2026 variant, a minimal isometric miniature on white. The recipe drove the 2025 Nano Banana wave (23M new Gemini users and 500M+ images, per eMarketer) and still pulls 1.6M-view posts in 2026. An agent asks for one clear photo, runs a fixed prompt template on Nano Banana 2.1 or GPT Image 2.5 with slots for pose and outfit, keeps the box art original, and can add a 5 s turntable with Kling v3.","publisher":{"name":"Regy","handle":"regyperlera","kind":"community","url":"https://x.com/regyperlera","avatar":"https://unavatar.io/x/regyperlera"},"source":{"url":"https://x.com/regyperlera/status/2010024069874512106"},"agents":[],"models":["nano_banana_2_1","gpt_image_2_5","kling_v3"],"cost":{"typicalCredits":"~5–16 credits / image (estimate)","note":"One Nano Banana 2.1 image at 5.25–15.75 credits (catalog of 2026-10-23); a 5 s Kling v3 turntable adds ~59."},"preview":{"kind":"grid","hue":70,"text":"collectible figure, acrylic base, desk, box"},"trend":{"sourceUrl":"https://x.com/regyperlera/status/2010024069874512106","author":"Regy (@regyperlera)","date":"2026-01-10","views":1595800,"likes":6594,"bookmarks":10322,"pipeline":"One photo → fixed figurine prompt (scale, base, desk-and-box or isometric-on-white, pose and outfit slots) → Nano Banana 2.1 / GPT Image 2.5 → optional 5 s turntable (Kling v3)","wave":2,"demand":"1.57 bookmark/like on 1.6M views; Gemini's own \"photo to figurine\" thread drew 2.7M views (September 2025); consumer apps ship it as a one-tap recipe, so varg's edge is model choice and batch runs."},"legal":"Keep box art original: the viral prompts name a real figure maker's packaging style (brand trade dress). Figures of real people need their consent; no licensed characters.","addedAt":"2026-10-26","adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/f0fdf133f036/want-collectible-figure-packshot.webp","w":960,"h":720,"blur":"data:image/webp;base64,UklGRugAAABXRUJQVlA4INwAAABQBQCdASogABgAPsVUoUunpSMhsAwA8BiJZwAFEB7jUHhsHOKyXqIpC0Zh9ACQoumozLAA/vYRcXlAY+NJdjB4msOIMzEk4h+oTlk9iS6B3PS9UV+9of2ahezorRbzehQQl9ifBcfc3zsbrti8WZafjHu5TwOvDtNmiaw1YjjL46Z6D5VjqV6HEz5uOHaav7zrc35d0ql9MMMnZC3iro4l0jQ5MNidnFQ4+KWoDwkhAG9u0Aw6hpI5i3ETTlL215Sic2eWfmQZWd92pVxqLypxO9GwYRwxg1dZAAAA","source":"https://pbs.twimg.com/media/G-UJWU5XYAAS_kZ.jpg?name=large","page":"https://x.com/regyperlera/status/2010024069874512106","credit":"Regy (@regyperlera)","rights":"creator-post","note":"Four minimal, isometric, realistic miniature figurines made from one selfie of the author (popcorn and 3D glasses, table saw, sports car, football) on white: the 2026 variant of the figure trend (Nano Banana Pro)","bytes":26450,"addedAt":"2026-10-27"}},{"id":"rand_shao/want-earth-zoom-out","slug":"want-earth-zoom-out","name":"Earth Zoom-Out","type":"wanted","status":"wanted","stream":"trends","category":"cinematic","tags":["camera","one-click-effect","zoom-out","seedance","kling","scale"],"summary":"One unbroken pull-back from a subject to orbit and beyond, often all the way back home again.","description":"A single unbroken camera pull-back: from a subject (a sea turtle on a reef, a person on a rooftop) up through the city, the planet and out into space, sometimes reversing all the way home. Higgsfield shipped it as a one-click \"Earth Zoom Out\" effect in June 2025, and an October 2026 post of the format reached 3.7M views. An agent takes one photo or a text subject, prompts a first frame with Nano Banana 2.1, then generates the pull-back with a strong video model (Seedance 2.5, Kling v3 or Veo 3.1), stitching two clips at a hidden cut when one generation cannot cover the whole range of scale.","publisher":{"name":"AI Video Explorer","handle":"rand_shao","kind":"community","url":"https://x.com/rand_shao","avatar":"https://unavatar.io/x/rand_shao"},"source":{"url":"https://x.com/rand_shao/status/2113738231661609045"},"agents":[],"models":["nano_banana_2_1","seedance_2_5","kling_v3","veo_3_1"],"cost":{"typicalCredits":"~120 credits / 10 s clip (estimate)","note":"Kling v3 at 11.8 credits/s without audio (catalog of 2026-10-23); Seedance 2.5 at 720p runs 33–50 credits/s."},"preview":{"kind":"film","hue":210,"text":"Pull back to orbit"},"trend":{"sourceUrl":"https://x.com/rand_shao/status/2113738231661609045","author":"AI Video Explorer (@rand_shao)","date":"2026-10-23","views":3738713,"likes":1105,"bookmarks":165,"pipeline":"Subject photo or prompt → first frame (Nano Banana 2.1) → continuous pull-back prompt (subject → city → planet → space) on Seedance 2.5 / Kling v3 / Veo 3.1 → optional reverse or hidden-cut stitch","wave":2,"demand":"3.7M views in October 2026; Higgsfield productized it as \"Earth Zoom Out\" in its Effects Pack 5 (June 2025, 186K-view launch). Consumer apps already sell it, so varg's edge is model choice and stitching."},"legal":"Generate the planet and the maps rather than compositing captures from licensed map or satellite services. Label synthetic footage where required.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/08b491ca1be4/want-earth-zoom-out.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRo4AAABXRUJQVlA4IIIAAACwBACdASogABIAPslSnUunpKKhsAwA8BkJZQCsM1XDTqxMG8Hhr5l6pXZQcTAAAP72hru6OqVzVOr1jbo3XpzAs3FZ46vcgP9GAtTSCrGAvETmJo40olqON1AZnp0c9OCXYY5dXPF+HbjvAJg8JfTRjmMjhU8dp44JF/AYjvEKQAAA","source":"https://youtu.be/T0P0qs_U67Q","page":"https://x.com/rand_shao/status/2113738231661609045","credit":"AI Video Explorer (@rand_shao)","rights":"creator-post","note":"From the creator's YouTube cut linked in the post: the unbroken pull-back rises from a hurricane over the ocean through the curve of the Earth to the whole planet in space (48–56 s of 180 s; the post has no attached video)","bytes":206351,"addedAt":"2026-10-27"}},{"id":"techhalla/want-bullet-time-orbit","slug":"want-bullet-time-orbit","name":"360° Bullet-Time Orbit","type":"wanted","status":"wanted","stream":"trends","category":"product","tags":["camera","bullet-time","orbit","packshot","one-click-effect","ads"],"summary":"Freeze the moment and orbit 360° around a product or person: a one-photo packshot that feels like a rig shot.","description":"Time freezes (splashes, crumbs, hair in mid-air) while the camera orbits 360° around the subject: the \"bullet time\" rig shot, made from a single image. Ad creators pitch it as replacing an expensive rig shoot, and the template thread behind this card holds 3.7K bookmarks. An agent starts from the user's product photo, cleans it into a hero still, then drives the orbit with MiniMax H3 Max Camera Controls (keyframed azimuth around one image), Pixelcut Looping Video for a full spin, or a frozen-moment prompt on Kling v3, and reverses and stitches the result into a seamless loop.","publisher":{"name":"TechHalla","handle":"techhalla","kind":"community","url":"https://x.com/techhalla","avatar":"https://unavatar.io/x/techhalla"},"source":{"url":"https://x.com/techhalla/status/1914795320195858694"},"agents":[],"models":["minimax_h3_max_camera_controls","pixelcut_looping_video","kling_v3"],"cost":{"typicalCredits":"~60 credits / 5 s clip (estimate)","note":"Kling v3 at 11.8 credits/s (catalog of 2026-10-23); the camera-control and looping routes price per clip length."},"preview":{"kind":"film","hue":175,"text":"360° orbit, time frozen"},"trend":{"sourceUrl":"https://x.com/techhalla/status/1914795320195858694","author":"TechHalla (@techhalla)","date":"2025-04-22","views":336172,"likes":2385,"bookmarks":3704,"pipeline":"Product photo → hero still → orbit around one image (MiniMax H3 Max Camera Controls), 360° spin (Pixelcut Looping Video) or frozen-moment prompt (Kling v3) → reverse and loop","wave":2,"demand":"1.55 bookmark/like on 336K views; Higgsfield launched on \"bullet time, super dollies and robo arms\" (641K views) and keeps 360° orbits among its camera presets."},"legal":"Use the user's own product: the viral example featured a real ice-cream brand, and third-party brands need rights.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/6843095c0b73/want-bullet-time-orbit.mp4","w":720,"h":540,"duration":5.4,"blur":"data:image/webp;base64,UklGRi4BAABXRUJQVlA4ICIBAADwBgCdASogABgAPtFYpEuoJSOhsAgBABoJZACdMzQ7Pf/qYyUouAVUMm8ArRAHU6/G+yRi5qrYfrKQ+oFaMYwAAP658rMsO706qMHC1MgJsINd/dpE8e2lOCaVK4FnltOGD0qH95Y1eGkIA0C78xMpIgO3FH7D6n6qqJt7rtEXa/k/l7evwju8a4v6K/xfYhPmPufD0VIFklwbNoadDZxnemwUtBDKwh/9S4nTBwDrvMkjod7JvnaxH+LAA8XVqEcnHWUXiqIH0k0cDv2YxQVE82hsh/vnyrOrY9O8G49VnK50qpiuIdXcFoWBknlfMs1/URdpzWU9mcHYT4NRz64HanjJ07Y/W03c7RD0t7+ydSHo/tPmm2QlZd8RjNVdplAAAA==","source":"https://video.twimg.com/amplify_video/1914790827403960320/vid/avc1/1440x1080/QRyUy80s3aPFsIKH.mp4?tag=16","page":"https://x.com/techhalla/status/1914795320195858694","credit":"TechHalla (@techhalla)","rights":"creator-post","note":"Side by side: the single ChatGPT still (left) and the Higgsfield 360° bullet-time orbit made from it (right): an AI-generated Häagen-Dazs pint with scoops, caramel and chocolate chips frozen mid-air (full 5.4 s clip)","bytes":170639,"addedAt":"2026-10-27"}},{"id":"strength04_x/want-exploded-view-reveal","slug":"want-exploded-view-reveal","name":"Exploded-View Product Reveal","type":"wanted","status":"wanted","stream":"trends","category":"product","tags":["exploded-view","packshot","ads","first-last-frame","labels","food"],"summary":"A product or dish floats apart into labeled layers, then snaps back together: a 3D-ad look from one photo.","description":"A product (or a taco) separates into its parts along a clean axis, labeled with thin leader lines and weights, then magnetically reassembles: the kind of shot that used to need a CAD model and a 3D artist. The recipe is to generate an exploded-view still and an assembled still with matching light, animate between them with first/last-frame video, and reverse it. An agent asks for one product photo, writes the parts list, renders both keyframes with Nano Banana 2.1, interpolates with Kling v3 or Veo 3.1, and adds the labels in HTML so the text stays sharp.","publisher":{"name":"M-studioAi","handle":"Strength04_X","kind":"community","url":"https://x.com/Strength04_X","avatar":"https://unavatar.io/x/Strength04_X"},"source":{"url":"https://x.com/Strength04_X/status/2006031630268522943"},"agents":[],"models":["nano_banana_2_1","kling_v3","veo_3_1"],"cost":{"typicalCredits":"~70–90 credits / clip (estimate)","note":"Two Nano Banana 2.1 keyframes at 5.25–15.75 each + a 5 s Kling v3 interpolation (~59), catalog of 2026-10-23."},"preview":{"kind":"film","hue":40,"text":"Parts float apart"},"trend":{"sourceUrl":"https://x.com/Strength04_X/status/2006031630268522943","author":"M-studioAi (@Strength04_X)","date":"2025-12-30","views":273193,"likes":2389,"bookmarks":2865,"pipeline":"Product photo → parts list → exploded keyframe + assembled keyframe with matching light (Nano Banana 2.1) → first/last-frame interpolation (Kling v3 / Veo 3.1) → reverse → HTML labels","wave":2,"demand":"1.2 bookmark/like on 273K views; related workflow posts that offer the SOP by DM draw 200+ replies; in October 2026 Google showcased a model-built exploded-view animation from a CAD file (430K views) and the open-source Anatomy skill for machine cutaways passed 2.6M views."},"legal":"Generated internals can misrepresent a real product, so do not present them as engineering fact in ads. Brand marks only with rights.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/751048b1a277/want-exploded-view-reveal.mp4","w":426,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRmQBAABXRUJQVlA4IFgBAABQCQCdASogADYAPr1Qm0unJSIht/gMAOAXiWwArDN/jhnm4Cm2l58Abz5hLAI/wfbjyz67y5XMiztxuZLuDBBGXfyoeI0M5NtfG8p0DbCGfPkPcgD+9MosvBQQJejmZAlPMnuOcV5TPT5pDHL1ZzgbBFlrFsQ9Q/yhUufOtOSZWCuGsxxAI+qrvTzI9otnrwgnb8LyaCxvM3rwvcWDrsDhbQmQW4L9l7GfZT2HsC0GGDHw0oXdMmoX+LUm48TK07UdkXsW/IS/AiWWNag+ERZD7P44cPNaDwNAQjW837NXyObSt/C5D4X3p+2kiGwzMlqMnjYjUS/yb8mFZ9cMh6Eh/HCp7oHOTN3+8Eu5LLUnSKELsqPzanHYLuD4eQEejwAGzdepcjEwY4ji11+vRKTAHriAtbgBiWUStwKK9yUkia3LlRXmss/aZ6r7wPAwac023VSWHOiYAA==","source":"https://video.twimg.com/ext_tw_video/2006031575994294273/pu/vid/avc1/720x1216/c5KiSlV9tKPt98L4.mp4","page":"https://x.com/Strength04_X/status/2006031630268522943","credit":"M-studioAi (@Strength04_X)","rights":"creator-post","note":"A floating taco separates into five ingredients stacked top to bottom with thin leader lines and gram labels, then reassembles (0.8–8.8 s of 8.8 s; Nano Banana Pro + Kling)","bytes":256415,"addedAt":"2026-10-27"}},{"id":"recap_david/want-renovation-time-lapse","slug":"want-renovation-time-lapse","name":"Renovation Time-Lapse from One Photo","type":"wanted","status":"wanted","stream":"trends","category":"product","tags":["ads","time-lapse","transformation","before-after","real-estate","first-last-frame"],"summary":"One photo of a finished build, reverse-engineered into stages and animated as a construction time-lapse.","description":"Starting from one photo of a finished renovation, garden or build, the stages are reverse-engineered (empty lot, frame, finish), each one is generated from a locked aerial angle, and the transitions are animated as a fast-forward construction time-lapse with crews and machines. Viewers wait to see what it becomes, so real-estate and landscaping firms use it for ads. An agent writes the stage list, renders consistent stills with Nano Banana 2.1 by editing backwards from the final image, interpolates the transitions with first/last-frame Kling v3, and adds an ElevenLabs Music bed.","publisher":{"name":"David Roberts","handle":"recap_david","kind":"community","url":"https://x.com/recap_david","avatar":"https://unavatar.io/x/recap_david"},"source":{"url":"https://x.com/recap_david/status/2033908333913264566"},"agents":[],"models":["nano_banana_2_1","kling_v3","eleven_music_v2_5"],"cost":{"typicalCredits":"~210–250 credits / run (estimate)","note":"Four stage stills (Nano Banana 2.1, 21–63) + three 5 s Kling v3 transitions (~177) + a 30 s ElevenLabs Music v2.5 bed (~8), catalog of 2026-10-23."},"preview":{"kind":"film","hue":90,"text":"Time-lapse, locked aerial"},"trend":{"sourceUrl":"https://x.com/recap_david/status/2033908333913264566","author":"David Roberts (@recap_david)","date":"2026-03-17","views":64762,"likes":617,"bookmarks":1091,"pipeline":"Finished photo → reverse-engineered stage list → consistent stage stills from a locked aerial angle (Nano Banana 2.1 edits) → first/last-frame transitions (Kling v3) → music bed (ElevenLabs Music v2.5) → stitch","wave":2,"demand":"1.77 bookmark/like and 244 replies to a comment-to-DM call for the system; sold as a service to real-estate and landscaping firms; a \"blueprint to reality\" variant drew 115K views in May 2026."},"legal":"Do not pass generated stages off as real project footage in property ads (misleading-advertising rules); label it as a visualization and use only the client's own project photos.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d3c5ca72346e/want-renovation-time-lapse.mp4","w":720,"h":406,"duration":8,"blur":"data:image/webp;base64,UklGRuwAAABXRUJQVlA4IOAAAADQBQCdASogABIAPtFWpEuoJKOhsAgBABoJQBajae7a2ImAAW+APhA3I7rME6p6Mb/ZR8G5yh54AP6+F+xF0XPoFK3iujIsRSr8dABF/QUW/x82LfmifTHa2m7mOXSY1EryJQBC1P92NiYf6AfZdn8lwegpJC7B9DZRI235IrRRrdJ190dMbJ2rx0MMjjCBYkhJG0Hf+W/fZgzFDOtns7bVfPPwZ2GjqlHIzLU38JpP1U+VKnJytjsol0dyrPWcN1wv6AKtEQyfVT98mBkYPik8+EYrDiSxfCv7Vm1MVqwAAA==","source":"https://video.twimg.com/amplify_video/2033907947429105668/vid/avc1/1276x720/fRInVt-upO1E7tMU.mp4?tag=14","page":"https://x.com/recap_david/status/2033908333913264566","credit":"David Roberts (@recap_david)","rights":"creator-post","note":"The time-lapse that opens his tutorial: a locked aerial view of a brick house's backyard goes from excavated pit to pool shell, deck and pergola to a filled, lit pool (0.5–8.5 s of a 10-min video; the rest is a screen-recorded walkthrough)","bytes":376503,"addedAt":"2026-10-27"}},{"id":"grantslatton/want-anime-portrait-from-photo","slug":"want-anime-portrait-from-photo","name":"Hand-Painted Anime Portrait","type":"wanted","status":"wanted","stream":"trends","category":"image","tags":["style-transfer","anime","portrait","one-click-effect","photo-edit"],"summary":"Restyle a personal photo as a soft, hand-painted anime film still, keeping the same people, pose and setting.","description":"A family or couple photo restyled as a warm, hand-painted anime film frame, keeping the people, pose, clothes and setting recognizable. In March 2025 one post of the recipe reached 53M views and set off the wave during which, per Sam Altman, OpenAI added a million users in an hour. An agent takes the photo, runs a style-transfer edit on GPT Image 2.5 or Nano Banana 2.1 with a generic style description (painted backgrounds, soft cel shading, warm light), and can offer a short living-photo pass.","publisher":{"name":"Grant Slatton","handle":"GrantSlatton","kind":"community","url":"https://x.com/GrantSlatton","avatar":"https://unavatar.io/x/GrantSlatton"},"source":{"url":"https://x.com/GrantSlatton/status/1904631016356274286"},"agents":[],"models":["gpt_image_2_5","nano_banana_2_1"],"cost":{"typicalCredits":"~2–23 credits / image (estimate)","note":"GPT Image 2.5 at 2.1 (low quality) to 23.1 (high quality) credits per image (catalog of 2026-10-23)."},"preview":{"kind":"grid","hue":140,"text":"hand-painted anime still, soft cel shading"},"trend":{"sourceUrl":"https://x.com/GrantSlatton/status/1904631016356274286","author":"Grant Slatton (@GrantSlatton)","date":"2025-03-25","views":53276849,"likes":42046,"bookmarks":14964,"pipeline":"One photo → style-transfer edit with a generic painted-anime style description (GPT Image 2.5 / Nano Banana 2.1) → optional subtle living-photo animation","wave":3,"demand":"53M views and 15K bookmarks; Sam Altman said OpenAI added 1M users in an hour during the wave (Cybernews, 2025-03-31)."},"legal":"IP-bound origin: the 2025 wave imitated one animation studio's house style and drew public criticism from artists. Keep prompts, names and marketing generic (no studio or director names, no characters), because commercial use of a recognizable house style carries trademark and passing-off risk. People in the photo must consent.","addedAt":"2026-10-26","adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/ac87322e2e13/want-anime-portrait-from-photo.webp","w":640,"h":960,"blur":"data:image/webp;base64,UklGRp4BAABXRUJQVlA4IJIBAADwBwCdASogADAAPtFapk6oJKMiKrgKAQAaCWwAnTNPejXNSxmR6nvYy61SD8s8SUqvGCYcKp1+thL/6URcdKv6Lqwi4+yeiAAA/u5+43gYLBJg/W84xU9dtxn0f0a1Z0QgisbkP/BBfaj3sZCDz7GSwcT//CzZ9gf65jBNREdN+DHGUCG3HiLRcOzAA00FLnGOURN8DBn0hqJziEhUCvnegu++v6zwUr6iZVoflYGlZsQm0FhCWMUKgu0okMkct4AAj11/IU/AdtrmGTDQZbgdeMdVRo/dDLYHzGywud3Rul7MwwNZ4zB3k34ZqP9UYz/Q2KxYeWqdXHnqGxBXq/MiA4yH4pachUA3Xc7YLhir+pL5nUnm0ZCP9RHNa25c/AR2L4IJOiUgtVzWOGkOr0plemlvz+jMD9bLT2iLsZ8hxy+LHMx9g5JKXva0SdOaWMy6/+JV0TQLTX79H1c73STKdVz6V9Urtc5Q1vLoZmLdYlecpL0tWahv1/mDi5Zf09bipI0NjtyRKhhY0ox8WE+bIAA=","source":"https://pbs.twimg.com/media/Gm6bwlBbQAA-HZI.jpg?name=large","page":"https://x.com/GrantSlatton/status/1904631016356274286","credit":"Grant Slatton (@GrantSlatton)","rights":"creator-post","note":"The post that set off the March 2025 wave: the author's beach photo with his wife and their corgi, redrawn as a warm hand-painted anime film frame (output only; the original photo in the post is left out)","bytes":52758,"addedAt":"2026-10-27"}},{"id":"rovvmut_/want-plush-toy-version","slug":"want-plush-toy-version","name":"Plush Toy Version","type":"wanted","status":"wanted","stream":"trends","category":"image","tags":["plush","toy","chibi","one-click-effect","photo-edit"],"summary":"Turn a person, pet or drawing into a cuddly plush-toy photo: chibi proportions, felt texture, stitched seams.","description":"A photo or drawing becomes a soft plush toy with chibi proportions, felt or minky texture, embroidered eyes and visible seams, staged like a product shot. Higgsfield sells it as a one-click \"Plushies\" app, and prompt posts for it keep circulating on X. An agent asks for one clear photo, runs a fixed plush prompt on Nano Banana 2.1 or GPT Image 2.5, and can add a gentle squeeze-and-bounce clip with Kling v3.","publisher":{"name":"Heisenberg","handle":"rovvmut_","kind":"community","url":"https://x.com/rovvmut_","avatar":"https://unavatar.io/x/rovvmut_"},"source":{"url":"https://x.com/rovvmut_/status/1976466575004926307"},"agents":[],"models":["nano_banana_2_1","gpt_image_2_5","kling_v3"],"cost":{"typicalCredits":"~5–16 credits / image (estimate)","note":"One Nano Banana 2.1 image at 5.25–15.75 credits (catalog of 2026-10-23)."},"preview":{"kind":"grid","hue":350,"text":"plush toy, felt texture, embroidered eyes"},"trend":{"sourceUrl":"https://x.com/rovvmut_/status/1976466575004926307","author":"Heisenberg (@rovvmut_)","date":"2025-10-10","views":38583,"likes":331,"bookmarks":379,"pipeline":"One photo → fixed plush prompt (chibi proportions, felt texture, embroidered eyes, seams) → Nano Banana 2.1 / GPT Image 2.5 → optional squeeze clip (Kling v3)","wave":3,"demand":"1.15 bookmark/like on a prompt post; Higgsfield packages it as its \"Plushies\" app; felted-wool variants resurfaced in April 2026."},"legal":"No licensed characters: most plush requests are for IP. Plush renders have been used in fake marketplace listings, so never sell a plush that does not exist.","addedAt":"2026-10-26","adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/298479b973cc/want-plush-toy-version.webp","w":960,"h":960,"blur":"data:image/webp;base64,UklGRhQBAABXRUJQVlA4IAgBAABQBgCdASogACAAPtFapE0oJSMiMBgIAQAaCUAVHo0tKatorZhrMzRIuAUwLet9XIWpRoFukWKRDb+rgAD+96op68BaNGVg1pk2RxbMDuRmQnrU5TNEIRnVH9lbHJM6b/wnN590CfAIz9K/S8g63FwyGzulNuYvmp9UtzJYeAHa6ANrQ4iH+dhbzRm9UIdRvJLUtNhmXGmEbKCbAnxRG0DWvTHSb//mXKfG7dcpZx+bHNu7/TiMHqOmnW/ne9bsADtzFCVqkpmtKxRM+NHd53CS+Ow2ehe3Ayvydf5uKWd7EPpIp211za4/L/BaUv9/Ai8HFexfhw8plFMGyhhZrIlxwhiTWMVAAAA=","source":"https://pbs.twimg.com/media/G23R3s9WgAAmlHk.jpg?name=large","page":"https://x.com/rovvmut_/status/1976466575004926307","credit":"Heisenberg (@rovvmut_)","rights":"creator-post","note":"A chibi plush with felt texture, stitched seams and embroidered-style eyes standing on a wooden desk in soft daylight (Nano Banana); 1 of 4 images in the post, chosen because the others are plushes of named celebrities","bytes":39400,"addedAt":"2026-10-27"}},{"id":"pika_labs/want-squish-inflate-gags","slug":"want-squish-inflate-gags","name":"Squish and Inflate Gags","type":"wanted","status":"wanted","stream":"trends","category":"cinematic","tags":["vfx","meme","one-click-effect","physics-gag","image-to-video"],"summary":"Any object or photo gets crushed, melted, inflated or revealed as cake: a one-tap physics gag.","description":"One-tap physics gags on any subject: a hydraulic press squishes it, it melts, it inflates like a balloon, it explodes, or it is sliced open to reveal it was cake all along. When Pika launched these effects in October 2024, \"the internet was flooded\" with them (Fast Company). An agent maps each gag to a prompt template with hold-then-act timing, generates 5 s with Kling v3 or Seedance 2.5 from the user's photo, and adds a punchy SFX hit.","publisher":{"name":"Pika","handle":"pika_labs","kind":"vendor","url":"https://x.com/pika_labs","avatar":"https://unavatar.io/x/pika_labs"},"source":{"url":"https://x.com/pika_labs/status/1841236385052967351"},"agents":[],"models":["kling_v3","seedance_2_5"],"cost":{"typicalCredits":"~60 credits / 5 s clip (estimate)","note":"Kling v3 at 11.8 credits/s without audio (catalog of 2026-10-23)."},"preview":{"kind":"film","hue":60,"text":"Press down, squish"},"trend":{"sourceUrl":"https://x.com/pika_labs/status/1841236385052967351","author":"Pika (@pika_labs), the app maker","date":"2024-10-01","views":67984,"likes":400,"bookmarks":135,"pipeline":"One photo → gag template (squish, melt, inflate, explode, cake) with hold-then-act timing → 5 s image-to-video (Kling v3 / Seedance 2.5) → SFX hit","wave":3,"demand":"Fast Company reported feeds \"flooded\" with these effects; the standalone effects app shows 533K+ downloads on a third-party tracker; effects apps keep rotating similar gags."},"legal":"Use generic effect names (Pika's effect names are its branding). Gags on real people need their consent; avoid violent crush gags on identifiable people.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d8f3295c680b/want-squish-inflate-gags.mp4","w":536,"h":720,"duration":7.9,"blur":"data:image/webp;base64,UklGRjwBAABXRUJQVlA4IDABAABwBwCdASogACoAPtFcpk4oJSOiJWzJABoJZQDHNvIOWe18qs9nTKOhNiZZGOu7fey+CUABjJ+/VS3GRVsUTMoSRPkJgAD+F3Zx0n3BxVjovshT4kFtwqg6RBTqY0dh/dcox2fMsUaYhGO/enb+sSDD5ZFWT/x0eVB/nZLhxFsxG5VgxzNit+/GFh9GVOpHoxPBbz55SmCZOks9IFIneaZnUpcfpWHOiO5PJTzaDxlmB4YFD2G0rWGNjVvhWxgd4sOW7BQhbp5gvElbIWC2e2aVGtsW9FA8T0TBSQ/svIaG2Ua/obUy/lOkJ+U3q6BSzAJzT4OS1S003MF3DY+y7jD2jXHyjxWL6U5nHQ/JOavk8WLimMtojaoLBlB2iWsZ3YX6RU0D3+hQ1xqLVwOgoAAA","source":"https://video.twimg.com/ext_tw_video/1841194982436229120/pu/vid/avc1/720x968/kRhzIFLFC1tQ3zAq.mp4?tag=12","page":"https://x.com/pika_labs/status/1841236385052967351","credit":"Pika (@pika_labs), video by @starryhe214","rights":"creator-post","note":"Pika 1.5 'Pikaffects' launch clip on a restroom toilet: it explodes, gets squished like clay between two hands, then inflates like a balloon and floats away (5.9–13.9 s of 13.9 s; crush, melt and cake-ify come before)","bytes":414024,"addedAt":"2026-10-27"}},{"id":"finnardley/want-what-if-science-explainer","slug":"want-what-if-science-explainer","name":"What-If Science Explainer","type":"wanted","status":"wanted","stream":"trends","category":"explainers","tags":["education","code-rendered","flat-vector","narration","webgl","hyperframes"],"summary":"A flat-vector space explainer drawn entirely in code: narration-timed camera moves, counters and a tiny mascot.","description":"A 30-second \"what if\" explainer in flat-vector style (a navy starfield, a shader-lit Earth with city lights, a small astronaut mascot, and countdowns and labels that fire on the narrator's words, such as \"8:20 until Earth notices\") drawn entirely in code, with no AI images or video. Finn rebuilt the look of a famous science channel with Opus 5.5 and gave away the whole prompt: one HTML file where every frame is a pure function of time, ElevenLabs narration with word timestamps, and Playwright seeking every frame. An agent writes the narration with one visual event per key word, gets timestamps from ElevenLabs v4 (or Whisper), builds canvas and WebGL scenes as a HyperFrames composition, and mixes a music bed and per-event SFX.","publisher":{"name":"Finn","handle":"finnardley","kind":"community","url":"https://x.com/finnardley","avatar":"https://unavatar.io/x/finnardley"},"source":{"url":"https://x.com/finnardley/status/2114305886420086817"},"agents":[],"models":["eleven_v4","whisper","render"],"cost":{"typicalCredits":"~10 credits / 30 s video (estimate)","note":"~450 characters of ElevenLabs v4 narration (~4 credits; v4 Turbo costs half) + render ~6 (catalog of 2026-10-23)."},"preview":{"kind":"film","hue":225,"text":"Push in on Earth"},"trend":{"sourceUrl":"https://x.com/finnardley/status/2114305886420086817","author":"Finn (@finnardley)","date":"2026-10-25","views":222313,"likes":2967,"bookmarks":5016,"pipeline":"Topic → narration with one visual event per key word → ElevenLabs v4 voice with timestamps → code-drawn 2D canvas + WebGL globe scenes, every frame a pure function of time → HyperFrames render → music bed + SFX, mastered to -14 LUFS","wave":1,"demand":"5K bookmarks on 2,967 likes (1.69×); the teaser asking \"would u guys be interested if i turned this into a free claude skill\" drew 209K views and 110 replies; faceless educational channels are a monetized niche."},"legal":"Never imitate a named channel's brand: no channel name, characters, mascots or signature palette as a \"style\" (the source prompt itself bans the channel's characters). Science claims need sources.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/604cfc74ef64/want-what-if-science-explainer.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRpYAAABXRUJQVlA4IIoAAABQBACdASogABIAPtFWo0uoJKM0sAgCkBoJYwC7ACG5H6URFTk2OevRSBWwAP7ugyZMSGiN6EDliyFngd7H1DaxHIygau/nyKRaqNKG2hGs7lpVFe3DdWusAb7/PcF2KaKpZo2k8oGavz/3bK9lR7r6jmYLy1xjFwHnC+dr7du8vEfTa/sWbNYAAAA=","source":"https://video.twimg.com/amplify_video/2114305237498388481/vid/avc1/1920x1080/KR_EeHJkJnV5xRwa.mp4","page":"https://x.com/finnardley/status/2114305886420086817","credit":"Finn (@finnardley)","rights":"creator-post","note":"'What if the Sun vanished?' drawn in code: a flat-vector Earth with city lights, an astronaut mascot and an '8:20 until Earth notices' countdown, then a dive to a YOU pin and 'This light left the Sun 8 min 20 sec ago' (2.6–10.6 s of 30 s)","bytes":169800,"addedAt":"2026-10-27"}},{"id":"archiveexplorer/want-kids-counting-song","slug":"want-kids-counting-song","name":"Kids' Counting Song Cartoon","type":"wanted","status":"wanted","stream":"trends","category":"animation","tags":["kids","sing-along","lyrics","mascot","seedance","hyperframes","ad-slots","music"],"summary":"A cute 3D mascot sings a counting song: words light up, numbers pop, a 1–5 board fills, every scene an ad slot.","description":"A 35-second toddler sing-along: a cute 3D dino in a playroom sings \"One! Jump up high!\", each word lights up as it is sung, giant numbers pop and fly into a 1–5 counting board, and the outro counts the board back. Archive broke down the format and rebuilt it end to end: a Lyria 3 Pro song from his own lyrics (Whisper caught a skipped line), Nano Banana Pro scenes for one mascot, Seedance 2.5 singing shots driven by song slices as audio references, and a HyperFrames edit written by Claude Code. Every scene doubles as an ad slot (toothbrush → toothpaste, bath → bath toys), and the whole chain exists on varg under one balance.","publisher":{"name":"Archive","handle":"ArchiveExplorer","kind":"community","url":"https://x.com/ArchiveExplorer","avatar":"https://unavatar.io/x/ArchiveExplorer"},"source":{"url":"https://x.com/ArchiveExplorer/status/2106853265694503064"},"agents":[],"models":["lyria_3_5","nano_banana_2_1","seedance_2_5","whisper","render"],"cost":{"typicalCredits":"~600–1,900 credits / 35 s video (estimate)","note":"Lyria 3.5 ~11 + six Nano Banana 2.1 scenes (32–95) + 35 s of Seedance 2.5 at 480p (15–23 credits/s) to 720p (33–50) + Whisper and render ~12 (catalog of 2026-10-23)."},"preview":{"kind":"karaoke","hue":150,"text":"Three! Spin around!"},"trend":{"sourceUrl":"https://x.com/ArchiveExplorer/status/2106853265694503064","author":"Archive (@ArchiveExplorer)","date":"2026-10-04","views":101805,"likes":1314,"bookmarks":2683,"pipeline":"Lyrics → song (Lyria 3.5) → Whisper check → mascot and scenes (Nano Banana 2.1) → singing shots from song slices as audio references (Seedance 2.5) → HyperFrames edit: word highlight, hopping star, number pops, counting board","wave":2,"demand":"2.04 bookmark/like; the post cites 8.3M views for the toddler-cartoon format it rebuilds and 1.86M for an earlier breakdown; today it takes two other platforms' credits (image/video and song), which varg can host in one place."},"legal":"Made-for-kids content: YouTube's made-for-kids rules and COPPA limit data collection and personalized ads, and product \"ad slots\" must follow children's advertising rules. Original mascot only, no licensed characters.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/dc2a9147e42a/want-kids-counting-song.mp4","w":404,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRpgBAABXRUJQVlA4IIwBAABQCQCdASogADoAPs1Sn0unpKKhsBv8APAZiWIAnTN1fOEFicIN/5bYhOtfsW2XrNYwNfKrWwcXhAdyLcG8FeX29nPEJ90wLD3efjNAUMQvX0G1mgD+7V19Enayupy4Y21cHD9+oJpZ4cUdyC/RtbViZeFjXgF5hOQZRSuaj82DZWNOnHUPH4+WXzJD0XqMS95/+qhYXY5CvHjEIEvwME3FQH3bsOW9HMQCRVxodx+FKeK48lZcQQReDK1NOpJ2ajN50tv7dmiY6fpqrXzSI8L4QWrFT/u8ZVtGhQdMwMvZPtrhw7+3voGda4wC/3w7wO4lq91c37MLgd7EaQxiuhgUKTx4tBjFhkg9JZAXM+ThQ81vgXDnpLsX1h29FefyKjTk5ONWJOD2/XqViHQQ6EASDQeSEIs28uEdb2mxD4UdwGhL9/d8adGG53UMT1qPiqlZGIv3rkMuUaiFhl2jMItV2jj1kve5zVbtL+5ZxTkWvyYxA+w2xqNR6TZkmLgw56Qk9KRl0zb3QJsAAAA=","source":"https://video.twimg.com/amplify_video/2106851145008250881/vid/avc1/1080x1920/ecMu0RpW1bdPaDJN.mp4","page":"https://x.com/ArchiveExplorer/status/2106853265694503064","credit":"Archive (@ArchiveExplorer)","rights":"creator-post","note":"A cute 3D dino sings and dances in a playroom while each sung word lights up, giant numbers 3 and 4 pop in and fly into the 1–5 counting board up top (15.5–23.5 s of 36 s, muted)","bytes":143666,"addedAt":"2026-10-27"}},{"id":"aimikoda/want-frame-break-pop-out","slug":"want-frame-break-pop-out","name":"Frame-Break Pop-Out Shot","type":"wanted","status":"wanted","stream":"trends","category":"cinematic","tags":["vfx","letterbox","frame-break","seedance","anime","compositing"],"summary":"A character bursts past the black letterbox bars, with fists, blades or sneakers popping out of the frame.","description":"A letterboxed shot in which the character breaks the frame: a hand, a katana or a sneaker sole overlaps the black bars as if leaping out of the screen. Kōda's Seedance 2.5 version drew 1.6K bookmarks, but she notes the model decides the bar size and camera moves can bend the bars. An agent can make it reliable: generate a clean full-frame action clip with Seedance 2.5, cut a subject matte (for example with the HyperFrames CLI's background removal), draw the letterbox in code, and composite the matte over the bars so the pop-out is exact on every frame.","publisher":{"name":"Kōda","handle":"aimikoda","kind":"community","url":"https://x.com/aimikoda","avatar":"https://unavatar.io/x/aimikoda"},"source":{"url":"https://x.com/aimikoda/status/2106044483863191748"},"agents":[],"models":["seedance_2_5","nano_banana_2_1","render"],"cost":{"typicalCredits":"~165–250 credits / 5 s shot (estimate)","note":"Seedance 2.5 at 720p, 33–50 credits/s (catalog of 2026-10-23); the matte and the bars are code."},"preview":{"kind":"film","hue":195,"text":"Pops out of frame"},"trend":{"sourceUrl":"https://x.com/aimikoda/status/2106044483863191748","author":"Kōda (@aimikoda)","date":"2026-10-02","views":140673,"likes":1675,"bookmarks":1612,"pipeline":"Character reference → full-frame action clip (Seedance 2.5) → subject matte → letterbox bars drawn in code → matte composited over the bars at pop-out moments → render","wave":2,"demand":"0.96 bookmark/like on 141K views; the author asked followers for a better way to control the bars, a gap a code-plus-model skill closes."},"legal":"Original characters only; real brand marks on props (the sample's sneaker shows a striped design) need rights.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/7b094ad21157/want-frame-break-pop-out.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRtgAAABXRUJQVlA4IMwAAABwBQCdASogABIAPtFYpk0oJSOiMBgIAQAaCWwAsQmAjVcWAbzEAyEfTRxQRasfPh4Ose3AAP71ootMmKhp31F/yR5gOTyUc2u6vrRAJFsp6f654mlKUsmV8zEZsoDbLkQZYUO6Mcb7th2v9d3nTuaqOY7+ZcdU/5MPjEg+UYcz5SRuS4ig4766WdLbIkF/JNaCVrNW+4hrn/x/MjtZZVnrvXMgtcH5RW83FAh7SDX9qlWa0f3O3N9JX+l8XyNtY+wS5Twqm0xVVtBkAAA=","source":"https://video.twimg.com/amplify_video/2106044251872067585/vid/avc1/2560x1440/ZA5lXl41VdMBZfZk.mp4","page":"https://x.com/aimikoda/status/2106044483863191748","credit":"Kōda (@aimikoda)","rights":"creator-post","note":"Painterly anime swordswoman in a letterboxed frame: her open hand, then the sole of her sneaker in a front kick, reach over the black bars as if leaping out of the screen (first 8 s of 30 s; Seedance 2.5)","bytes":352224,"addedAt":"2026-10-27"}},{"id":"sulfurscales/want-mannequin-rep-counter-loop","slug":"want-mannequin-rep-counter-loop","name":"Faceless Mannequin Rep-Counter Loop","type":"wanted","status":"wanted","stream":"trends","category":"shorts","tags":["faceless","loop","fitness","counter","seedance","series","ads"],"summary":"A faceless 3D mannequin throws a combo while an on-screen counter ticks with every rep, in a 6-second loop.","description":"A faceless gray mannequin in brand-colored gloves throws a jab, cross and hook on black while a minimal counter (\"REP 1/3 · 1 2 3\") ticks with each punch, so viewers count along and rewatch the 6-second loop. Sulfur traced the format behind faceless app pages and made it with one Seedance 2.5 prompt; the trick was declaring that the character has no face, which kept it identical across cuts. An agent swaps the gloves for brand colors and the move set for the app's own action (yoga, habits, product steps), generates the loop, overlays the counter in HTML synced to the action beats, and runs it as a numbered series.","publisher":{"name":"Sulfur","handle":"sulfurscales","kind":"community","url":"https://x.com/sulfurscales","avatar":"https://unavatar.io/x/sulfurscales"},"source":{"url":"https://x.com/sulfurscales/status/2106719924001575108"},"agents":[],"models":["seedance_2_5","render"],"cost":{"typicalCredits":"~90–300 credits / loop (estimate)","note":"6 s of Seedance 2.5 at 480p (15–23 credits/s) or 720p (33–50), catalog of 2026-10-23."},"preview":{"kind":"kinetic","hue":230,"text":"1 2 3 combo"},"trend":{"sourceUrl":"https://x.com/sulfurscales/status/2106719924001575108","author":"Sulfur (@sulfurscales)","date":"2026-10-04","views":75077,"likes":523,"bookmarks":364,"pipeline":"Brand color + move set → faceless mannequin prompt (Seedance 2.5) → beat-timed counter overlay in HTML → seamless loop → numbered series","wave":2,"demand":"346 replies to a reply-to-get-the-prompt-guide call (comment-to-DM); 0.70 bookmark/like; the author ties it to faceless app pages that are growing now."},"legal":"Fitness and health claims in ads must be substantiated. A faceless mannequin avoids likeness issues; keep glove and apparel marks generic.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/7abe933b84f2/want-mannequin-rep-counter-loop.mp4","w":404,"h":720,"duration":5.8,"blur":"data:image/webp;base64,UklGRhQCAABXRUJQVlA4IAgCAADwCQCdASogADoAPtFUokuoJKMhsBgMAQAaCWIAyiFMpIHRBd7fEtLbez8Z10YuBFKc/7Xh60q4/kJj8/rvlkfkAIrd+mcqZfm91jMHDC5KM027ouUw7/IAAP7+9hBNW1n1ib6y6qOW+9WONVeUHDuJpimUJO1B+vfcxoIoDWj2uLP/xXJiRQBHQu6TfJYHy7Mo7XTt7zz7PJvdRQbbJdltk74O6Yc/C/Yk/HYJSCabsmSLCSey1hFavv4SmDzkdPAlEL8IgoOR2pnqf/kI7i6EiZBpjvY/UjVlns+jezaz7MyftVHW9EX/BwjdAEYDwSIlaBb4FJr+iroMox+GmtM9U4TtTXHfZg9VzK/p2orlos2D+/q60dKmsnhM87s3DHO+x+136ZJXhitCyTdhvrDDj5u8cGdlsDj7bQ1Akoa/YAwlijF4Hgo+PXowdwfV40cWHJ/Knwzd1y3WcruEIXDbGb3j3pzJNnP4Q7NM3gBJwg1O074vXwKbXuBf6eiPNx0DTR1s2/miA8c6E0GYlbpBtIt08hcVfhpqK19LyMb3/jcx3D5wusZJVHwcxYLLxytq15wKGLGEd+3Ux3nsi1H+uub8l6hw/DRiIhT7q/feVHHFoQS6ytCnLhzYRGB3Q3fSDQyFAVripbzQr7qnQZfk1pKBbG8602P49QeVFTsfH9Owh8MKcAAA","source":"https://video.twimg.com/amplify_video/2106718757691502593/vid/avc1/576x1024/gT6sq_FMmeG2GsXd.mp4","page":"https://x.com/sulfurscales/status/2106719924001575108","credit":"Sulfur (@sulfurscales)","rights":"creator-post","note":"His Seedance 2.5 remake of the format: a faceless gray mannequin in blue gloves throws jab, cross, hook on black while a 'REP 1/3 · 1 2 3 JAB CROSS HOOK' counter ticks with each punch (the full 5.8 s loop)","bytes":233202,"addedAt":"2026-10-27"}},{"id":"wytsekoetse/want-deadpan-satire-travel-ad","slug":"want-deadpan-satire-travel-ad","name":"Deadpan Satire Travel Ad","type":"wanted","status":"wanted","stream":"trends","category":"cinematic","tags":["satire","comedy","fake-ad","seedance","subtitles","multi-shot"],"summary":"A cheerful tour-guide ad cut against escalating chaos: the subtitles stay sunny while the city burns.","description":"A cheerful tour guide leads a group through a famous city while everything around them escalates into chaos (smoke, riot shields, a burnt croissant) and the subtitles stay relentlessly upbeat, ending on a mock brand card (\"Limited time: 50% off\"). The deadpan contrast between ad copy and visuals reached 4M views. Credited tools: ChatGPT as prompt architect, GPT Image 2.5 and Nano Banana 2.1 stills, Seedance 2.5 video, Suno music and Adobe finishing. An agent writes the ironic script, locks the guide's identity with reference stills, generates 12–15 shots, burns in subtitles and a fictional brand end card in HTML, and scores it with ElevenLabs Music.","publisher":{"name":"Wytse Koetse","handle":"Wytsekoetse","kind":"community","url":"https://x.com/Wytsekoetse","avatar":"https://unavatar.io/x/Wytsekoetse"},"source":{"url":"https://x.com/Wytsekoetse/status/2112211697008075021"},"agents":[],"models":["gpt_image_2_5","nano_banana_2_1","seedance_2_5","eleven_music_v2_5"],"cost":{"typicalCredits":"~2,500–4,000 credits / 75 s ad (estimate)","note":"Fifteen 5 s Seedance 2.5 shots at 720p (33–50 credits/s) plus stills and music, catalog of 2026-10-23."},"preview":{"kind":"film","hue":10,"text":"Handheld tour, deadpan"},"trend":{"sourceUrl":"https://x.com/Wytsekoetse/status/2112211697008075021","author":"Wytse Koetse (@Wytsekoetse)","date":"2026-10-19","views":4058632,"likes":3780,"bookmarks":1161,"pipeline":"Ironic ad script → guide reference stills (GPT Image 2.5 / Nano Banana 2.1) → 12–15 Seedance 2.5 shots → HTML subtitles + fictional brand end card → music bed","wave":3,"demand":"4M views and 263 quotes on a 78 s piece, part of the creator's running AI-satire series; expensive per run, so a planning skill must budget shots."},"legal":"Fictional brands and no real people. Riot or disaster imagery of real places can be clipped and mistaken for news: watermark it and label it as AI-generated.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f47dcd157b18/want-deadpan-satire-travel-ad.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRsAAAABXRUJQVlA4ILQAAAAQBQCdASogABIAPtFYpEuoJSOhsAgBABoJYwC2yd0Y4bXIXMZVNLrU3leF+ZLM/s0QAM4sWogJqovkjR2cmdelhJk/6fBX4c46+dO8xpiyJ1W7UxlatT8KTzg8UHPiYeUlbY25NdLsSH5gF/Ob4ZfGULckp0BnRKNUTIZsBhhKL4ykh3ob68zacvx5GwY63JsV0U2b4iJSQrfwsRMX56FqHQkdu51DVjna24YqPMUSjXfgAAA=","source":"https://x.com/Wytsekoetse/status/2112211697008075021","page":"https://x.com/Wytsekoetse/status/2112211697008075021","credit":"Wytse Koetse (@Wytsekoetse)","rights":"creator-post","note":"'Paris City Tours' AI satire: a smiling guide with a little flag presents the burning Moulin Rouge, a smoking Eiffel Tower and the empty wall where the Mona Lisa hung, with relentlessly upbeat subtitles (28.5–36.5 s of 78 s)","bytes":273399,"addedAt":"2026-10-27"}},{"id":"azed_ai/want-gameplay-concept-trailer","slug":"want-gameplay-concept-trailer","name":"Fake AAA Gameplay Trailer","type":"wanted","status":"wanted","stream":"trends","category":"cinematic","tags":["gaming","gameplay","hud","seedance","concept","trailer"],"summary":"Thirty seconds of \"gameplay\" from a game that does not exist: third-person HUD, minimap, puzzle and boss fight.","description":"A 30-second third-person action-adventure \"gameplay capture\" from a game that does not exist: health bars, a minimap and controller prompts over a hero leaping across flooded ruins, solving a glowing pedestal puzzle and facing a stone colossus. Amira Zairi's Seedance 2.5 version reached 15M views. An agent writes a level beat sheet (traverse, puzzle, boss), generates key art and a consistent hero with GPT Image 2.5, produces one continuous Seedance 2.5 shot (it supports up to 30 s), and draws the HUD in HTML so it stays crisp and consistent.","publisher":{"name":"Amira Zairi","handle":"azed_ai","kind":"community","url":"https://x.com/azed_ai","avatar":"https://unavatar.io/x/azed_ai"},"source":{"url":"https://x.com/azed_ai/status/2100222523535409655"},"agents":[],"models":["gpt_image_2_5","seedance_2_5","render"],"cost":{"typicalCredits":"~1,000–1,500 credits / 30 s trailer (estimate)","note":"30 s of Seedance 2.5 at 720p, 33–50 credits/s (catalog of 2026-10-23)."},"preview":{"kind":"film","hue":165,"text":"Third-person follow"},"trend":{"sourceUrl":"https://x.com/azed_ai/status/2100222523535409655","author":"Amira Zairi (@azed_ai)","date":"2026-09-16","views":14978290,"likes":1460,"bookmarks":954,"pipeline":"Level beat sheet → hero and world key art (GPT Image 2.5) → one 30 s continuous gameplay shot (Seedance 2.5) → HUD (health, minimap, prompts) drawn in HTML → render","wave":2,"demand":"15M views, 961 replies and 544 quotes; useful for indie pitch decks and game-marketing concepts."},"legal":"Original IP only: no real franchise characters, logos or signature HUD layouts. Do not present it as a real game announcement; label it as an AI concept.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/31d5b877e9a6/want-gameplay-concept-trailer.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRoIAAABXRUJQVlA4IHYAAACQBACdASogABIAPtFcpUyoJSOiMBgIAQAaCWQAnS91gLha3CPH6L6Et9QFBSAA/tGUCNZzSY755fQKnqxWdOce8bv76yKK6bni8PQfwDCbFIJD3HBEUfANcHvs9ycYPo+fR8rs5e6fj+ZnOPs7TJjgiljuAAAA","source":"https://video.twimg.com/amplify_video/2100222428047884289/vid/avc1/1920x1080/LvpSn_LOniIQHXMa.mp4?tag=16","page":"https://x.com/azed_ai/status/2100222523535409655","credit":"Amira Zairi (@azed_ai)","rights":"creator-post","note":"AI 'gameplay capture' of a game that does not exist: health and stamina bars, a compass minimap and ability icons over a third-person hero who surfaces in flooded ruins and fights a colossal stone guardian with a boss health bar (21–29 s of 29 s; Seedance 2.5 on Runway)","bytes":579101,"addedAt":"2026-10-27"}},{"id":"francescoinweb3/want-data-story-explainer","slug":"want-data-story-explainer","name":"Sourced Data-Story Explainer","type":"wanted","status":"wanted","stream":"trends","category":"explainers","tags":["data-viz","charts","remotion","hyperframes","deterministic","review-loop"],"summary":"One point, one hero number, three beats: every figure sourced, every frame compiled in code.","description":"A short data video with one point, one hero number and three beats, where every figure on screen carries its source and every frame is code. Francesco's \"6 small jobs\" method splits the work into files an agent can check: a spec of a reference video, a data.json with sources, a story.md, a Remotion scene, plain-language timing notes, then rendered stills checked against the spec and the data before final.mp4. An agent follows the same contract with HyperFrames or Remotion, adds an optional ElevenLabs voiceover, and re-renders only the line that changed when the user gives a note.","publisher":{"name":"Francesco","handle":"francescoinweb3","kind":"community","url":"https://x.com/francescoinweb3","avatar":"https://unavatar.io/x/francescoinweb3"},"source":{"url":"https://x.com/francescoinweb3/status/2111393917899808880"},"agents":[],"models":["render","eleven_v4_turbo"],"cost":{"typicalCredits":"~6 credits / run (estimate)","note":"Render only (catalog of 2026-10-23); an ElevenLabs v4 Turbo voiceover adds ~0.0042 credits per character."},"preview":{"kind":"kinetic","hue":260,"text":"one point, three beats"},"trend":{"sourceUrl":"https://x.com/francescoinweb3/status/2111393917899808880","author":"Francesco (@francescoinweb3)","date":"2026-10-17","views":160042,"likes":2072,"bookmarks":3772,"pipeline":"Reference spec → sourced data.json → story.md (one point, one hero number, three beats) → code scene (Remotion / HyperFrames) → plain-language timing notes → stills checked against spec and data → final.mp4","wave":1,"demand":"1.82 bookmark/like on 160K views; translated and reposted in Japanese (34K views); deterministic, so there are no re-rolls to pay for."},"legal":"Every figure needs a cited source and a data license that allows reuse; no third-party logos in charts without rights.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e8c1f0ecfb67/want-data-story-explainer.mp4","w":448,"h":560,"duration":8,"blur":"data:image/webp;base64,UklGRvYAAABXRUJQVlA4IOoAAAAQBQCdASogACgAPrVGnEunI6KhurzIAOAWiWkA0UQsNHWngCFaHUCfYMz8wfktUIeAAP7wDjPkRvRWrBcik6scEqVff4vG8BA7GMO6fVGrIirvmL5m/rF08gWW1VafXFYgqUJ/zd4dsexaAalQ9WQz2vPDXDV8Z2E/oVvQ6jjB0hCOE/5nyopDz2qtAFWwNNAHT5iJYKFdtrfY3B9T5H4lLqVdgEcYtsdMV/PmOBdxUt7UR3cr9XexZbSnKN4qgSPeCMj7TDbJH95rmHQdEM8C/8bYJG2gguwMF1z56bcgxn5Q+MyykOmAAAA=","source":"https://video.twimg.com/amplify_video/2111393587887849472/vid/avc1/1080x1350/zmJbUstHa4fSUwOg.mp4","page":"https://x.com/francescoinweb3/status/2111393917899808880","credit":"Francesco (@francescoinweb3)","rights":"creator-post","note":"His code-drawn 'Claude / Agent Lab' data visual: counters (references, rooms, skills, scenes, re-rolls), a radial chart and labeled panels step through DATA and STORY ('one point, one hero number'). It shows the six-job method, not a finished data story (4.5–12.5 s of 24 s)","bytes":386823,"addedAt":"2026-10-27"}},{"id":"pounddz/want-previs-animated-story-ad","slug":"want-previs-animated-story-ad","name":"3D Previs to Animated Story Ad","type":"wanted","status":"wanted","stream":"trends","category":"3d-scenes","tags":["animation","previs","blender","3d-to-video","storytelling","seedance","ads"],"summary":"Block the shots in Blender, then render them as a polished 3D-animated story ad that ends on the product.","description":"A character-driven 3D-animated short (here, a noir detective scene with expressive cartoon characters) that turns into a product reveal at the end. Pounds blocks every shot in Blender first (camera, staging, timing) and renders with Seedance 2.5, which he says cut regenerations and made it three times cheaper. An agent writes the script and shot list, builds a rough previs (Blender over MCP, or three.js), turns each previs clip into styled footage with MiniMax H3 Max 3D to Video or Seedance 2.5 video references, keeps characters consistent with reference stills, and cuts to the packshot.","publisher":{"name":"Pounds","handle":"pounddz","kind":"community","url":"https://x.com/pounddz","avatar":"https://unavatar.io/x/pounddz"},"source":{"url":"https://x.com/pounddz/status/2104298509566693635"},"agents":[],"models":["nano_banana_2_1","minimax_h3_max_3d_to_video","seedance_2_5"],"cost":{"typicalCredits":"~1,000–1,500 credits / 30 s spot (estimate)","note":"30 s of Seedance 2.5 at 720p, 33–50 credits/s (catalog of 2026-10-23); the 3D-to-video route is priced separately."},"preview":{"kind":"film","hue":280,"text":"Blocked in previs"},"trend":{"sourceUrl":"https://x.com/pounddz/status/2104298509566693635","author":"Pounds (@pounddz)","date":"2026-09-27","views":193669,"likes":1787,"bookmarks":2917,"pipeline":"Script + shot list → character sheets (Nano Banana 2.1) → previs blocking (Blender over MCP / three.js) → styled render per shot (MiniMax H3 Max 3D to Video, or Seedance 2.5 with video references) → edit + packshot","wave":2,"demand":"1.63 bookmark/like and 571 replies to a reply-to-get-the-workflow call; previs cuts regeneration cost, which is why varg lists a 3D-to-video model."},"legal":"Describe the look generically (\"stylized 3D animation\") and never name animation studios in prompts or marketing. Product claims must be true.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e081e952e950/want-previs-animated-story-ad.mp4","w":404,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRkwBAABXRUJQVlA4IEABAABQCACdASogADoAPtFiqU+oJaOiJAtpABoJZACl35NKqTJFVKlvN8SrWVxDouM2Dqj87XCPdnNy6TQPm3I8RUS39MM3dwva9AiwrqAA/tA7DmwpjotuyTsmUVlbx+mHof7v1u95+j9oGC47KbPCpORtT/y0CTCPxLZAQoq0KpBWoHCKSDHro5xeYJsIt15S2KNLnf6DRJSG+DE9JXuQEjOWJGACyWUtS8yUlY6tYvelllQHTNR0hA0Grd2w2laMCRxrvLBwURCsPNtBN8x7agK6E1FMEewJi7cYIihhqmRdijroEeYUXn3mr5UsyrCmiu2swIm70Jkf1GmYjoF/LFzK05tEJMBldh076jyIZxPiOhzDklh6sGJsD5eneaQtEhZZcMXj35j4v+d0m1H6YcUaTLtfaCP4PztbOiyWOQAAAA==","source":"https://video.twimg.com/amplify_video/2104297083788210176/vid/avc1/720x1280/64dcAxEsyscpLC-R.mp4?tag=29","page":"https://x.com/pounddz/status/2104298509566693635","credit":"Pounds (@pounddz)","rights":"creator-post","note":"End of a 4-minute 3D-animated noir detective story (Blender-blocked shots, Seedance 2.5): an angry detective close-up, the suspect walks out and the 'Primal Queen' pouch is left lit on the interrogation table, the product reveal (219–227 s of 238 s; 720p variant)","bytes":230230,"addedAt":"2026-10-27"}},{"id":"tassyomah_/want-transcript-cut-podcast","slug":"want-transcript-cut-podcast","name":"Transcript-Cut Multicam Podcast","type":"wanted","status":"wanted","stream":"trends","category":"editing","tags":["podcast","editing","multicam","transcript","captions","remotion","talking-head"],"summary":"Sync three cameras, cut the episode from its transcript, and add question cards and pull-quotes in code.","description":"A long podcast edited from its transcript: three camera angles synced, cuts chosen from the text, and graphics added in code (a \"Tech sales, explained\" lower third, question cards such as \"Which one pays better?\", pull-quote cards over the speakers). Omah edited a 40-minute episode this way with Claude and Remotion and was surprised how few tokens it used. An agent transcribes with Whisper, aligns the angles by audio, switches cameras by speaker and cuts by story, renders cards and captions in HyperFrames or Remotion, and exports the long form plus vertical clips.","publisher":{"name":"Omah","handle":"TassyOmah_","kind":"community","url":"https://x.com/TassyOmah_","avatar":"https://unavatar.io/x/TassyOmah_"},"source":{"url":"https://x.com/TassyOmah_/status/2105312463172358590"},"agents":[],"models":["whisper","render"],"cost":{"typicalCredits":"~12 credits / run (estimate)","note":"Whisper ~6 + render ~6 (catalog of 2026-10-23); the editing itself runs locally."},"preview":{"kind":"timeline","hue":155},"trend":{"sourceUrl":"https://x.com/TassyOmah_/status/2105312463172358590","author":"Omah (@TassyOmah_)","date":"2026-09-30","views":364674,"likes":872,"bookmarks":2252,"pipeline":"Multicam footage → Whisper transcript → audio sync → speaker-based angle switching + text-driven cuts → lower thirds, question and quote cards in code → long-form + 9:16 clips","wave":2,"demand":"2.58 bookmark/like on 365K views, the highest save ratio in this pool; HyperFrames Studio shipped script-based editing on 2026-10-23 (1M-view launch), so the format is moving into tools."},"legal":"Get a release from every guest; music beds and B-roll must be licensed.","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d678d58f1d95/want-transcript-cut-podcast.mp4","w":404,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRuwBAABXRUJQVlA4IOABAABQCQCdASogADoAPtFWoEwoJKMiMBgMAQAaCWwArDPZQkxPqNKV+OBffuXV7SL3v1Y48PcU3ozzu3QImNZGJgqraKtLr0Xw87ivYv38+aThbdeQAAD+ojrBCQy3/4Wrk1f2Oe0Wvl3shN1K9XdtxjPZ1Xqz4e1wPw1fr6bqERt5QasEvp/ZPNaVvvjFi7kW4AoCj31SNpQ+HQobd9hSA05f7N9AVZ+YE+CqkZHm8WDHFThJwQ3MV/C57R+WUcCZn/Az7w8w8zW1o4HX/PZspeCpsH/u5a8JPmiTJUJlmQuEeyoYHzzHhFJaTE6tdOJ+R/UnPn91FaQWplCeiH46M+EiipCZSk0ZbVmevCqX4a9JscE7VQxKN7a4Pvl35jZsTocO/MBuDjPeWdY8nwbT/RG2mBgF1V3L+GVb7uvm2ySdIBL2ZKIjduWRNf6Z74EM9q4KVzWg6Tde9q7rY7OEE//4ZjgqXA/Z3xJo8sdeW6qy9Suy7tJbAGaSMPTLc0ONSQPJ5SXOizsaupDgvMIiaAtb27lsnAFRQC32FZygccQbmld5eIzm1YyCSMYbjOQ9HUufm0plbrPn1kglOl1nWvvW0P6RA8rNNj2ME8cgySJvBQAQsfPMlKFZmVQr4OqoAAA=","source":"https://video.twimg.com/amplify_video/2105131707544276992/vid/avc1/720x1280/DRMa_v8lC1QOF1iz.mp4?tag=29","page":"https://x.com/TassyOmah_/status/2105312463172358590","credit":"Omah (@TassyOmah_)","rights":"creator-post","note":"Phone video of her monitor playing the podcast Claude edited from the transcript: cuts between a two-shot and close angles, a 'Which one pays better?' question card and a pull-quote banner (11.5–19.5 s of 29 s)","bytes":138906,"addedAt":"2026-10-27"}},{"id":"scenario_gg/want-multi-angle-reshoot","slug":"want-multi-angle-reshoot","name":"Multi-Angle Reshoot from One Take","type":"wanted","status":"wanted","stream":"trends","category":"cinematic","tags":["editing","multi-angle","coverage","seedance","video-to-video","continuity"],"summary":"Feed in one clip and get new camera angles of the same performance: coverage that was never filmed.","description":"One existing clip becomes a multi-angle sequence: close-ups, reverses and wides of the same performance that were never shot, cut together like real coverage. Seedance 2.5's video references made it practical in September 2026; Scenario's prompt post drew 3.1K bookmarks and an Artlist affiliate post selling the feature reached 582K views. An agent uploads the take, asks Seedance 2.5 for each new angle with the original as a video reference, checks continuity (wardrobe, props, eyelines), and cuts the angles to the original audio.","publisher":{"name":"Scenario","handle":"Scenario_gg","kind":"vendor","url":"https://x.com/Scenario_gg","avatar":"https://unavatar.io/x/Scenario_gg"},"source":{"url":"https://x.com/Scenario_gg/status/2102365054389899695"},"agents":[],"models":["seedance_2_5"],"preview":{"kind":"film","hue":185,"text":"New angle, same take"},"trend":{"sourceUrl":"https://x.com/Scenario_gg/status/2102365054389899695","author":"Scenario (@Scenario_gg), an AI tools company","date":"2026-09-22","views":291322,"likes":3286,"bookmarks":3117,"pipeline":"Original take → one Seedance 2.5 generation per new angle with the take as a video reference → continuity check (wardrobe, props, eyelines) → cut to the original audio","wave":2,"demand":"0.95 bookmark/like on 291K views; paid tools now sell the capability (Artlist), and Scenario and others ship Claude skills for Seedance 2.5 video edits."},"legal":"Only footage the user owns or has rights to. Re-staging or swapping real performers needs their consent (likeness laws such as Tennessee's ELVIS Act).","addedAt":"2026-10-26","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/16f7bedb27c4/want-multi-angle-reshoot.mp4","w":640,"h":720,"duration":8,"blur":"data:image/webp;base64,UklGRmgBAABXRUJQVlA4IFwBAACwBwCdASogACQAPtFgp0+oJSMiJWsxABoJQBdgZhQRU0Uk1cAw2bs/cNrWEvPMeEC43lFTNNNOtnMgPQ3rZvma1K5mgJMAAP7Dkc/Dm7N22KVPR9uFVR2THK7+nLWvVjegsnAre2vUkq8OGyTFL38MXCEXPTkzkfYWl3NLLGfgVYS+LQ3+5sgDovfaC+z8bhhzvFtpZ5UHdt0eQRZD7lR9YqORR0bwQB46eQDYzJh/xFIDfP86f42AeH0tvDcPI57tN9ML9z/gMr80zIyucA5VEtiXl7DGdJ8JlM0ZzVSty7jYkPGkTSnk5BnGHKz8b8Xoa9jkChOj+W797bxErErugqH0biU5UtYJQuosZTRUrf1WCguMHJyq8Yk8zXOp/zVCQB514+imurD7ZOwsedlYQ+B0bUoty9e9pRWA8QZYkRGRU+VAyTkHkPOtZeeEZhPCc1ucd6BOkDwEUAA=","source":"https://video.twimg.com/amplify_video/2102364937355923456/vid/avc1/720x810/DtmI38y6VcqLzGAy.mp4?tag=29","page":"https://x.com/Scenario_gg/status/2102365054389899695","credit":"Scenario (@Scenario_gg)","rights":"creator-post","note":"Split screen: the original locked-off take of a man at a cafe table (bottom) and the same moment re-shot by Seedance 2.5 from new angles (top): high-angle MCU, keyboard macro, top-down, mug POV (first 8 s of 18.7 s)","bytes":256500,"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-cinematic-grammar","slug":"craft-cinematic-grammar","name":"Cinematic Grammar","skillName":"cinematic-grammar","type":"skill","status":"draft","stream":"craft","category":"cinematic","tags":["camera","lighting","color","editing","prompting","shot-spec","compiler","multi-model","veo","kling","seedance","hailuo","luma","runway"],"summary":"Write one shot spec, get the exact prompt for Veo, Kling, Seedance, Hailuo, Luma or Runway.","description":"The flagship craft skill: a canonical shot spec (size, angle, lens, one camera move, light, color, cut) compiled into each video model's documented syntax — camera-first for Veo, Luma and Runway, subject-first for Kling and Seedance, `[Push in]`-style brackets for Hailuo, positive-only phrasing where the guides ask for it. It bundles 274 original technique cards whose aliases cover the vocabulary users bring from other tools (Higgsfield preset names, Hailuo bracket commands, Luma concept names and keys, Seedance terms such as 希区柯克变焦), so every request lands on one card. Adapters resolve against the live varg catalog at run time and fail closed for retired models — the Sora 2 API closed on 2026-09-24 and Veo 3.1 Preview left the Gemini API on 2026-10-22, while varg keeps routing `veo_3_1` through fal. References stay pointers: humans get deep links to shot.cafe, film-grab and eyecannndy, and the agent never fetches a frame.","useWhen":["User asks for a cinematic shot, a specific camera move, or 'make it look like a film'","User names a technique (dolly zoom, rack focus, Dutch angle) or a preset from another app ('Crash Zoom In', '[Push in]', 'Lazy Susan')","Rewriting one prompt for several video models, or picking the model whose syntax fits the shot","Planning a multi-shot sequence with labeled shots, cuts and an end frame for every move"],"notFor":["Fetching, downloading or embedding film stills (craft-reference-finder returns links only)","Grading finished footage (craft-color-looks)","Motion-graphics backgrounds and overlays (craft-paper-shaders)","'In the style of' a living director, cinematographer or actor"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills","repo":"vargHQ/skills","path":"cinematic-grammar","license":"MIT"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli","openclaw","mcp","varg-studio"],"models":["veo_3_1","veo_3_1_fast","veo_3_1_lite","omni_flash_1_1","kling_v3","kling_v3_standard","seedance_2_5","seedance_2","minimax_h3_max","wan_3"],"requires":["varg API key or varg MCP sign-in (only to render)"],"cost":{"note":"Compiling prompts is free; every render is billed in varg credits — the skill runs estimate_cost and waits for approval before generating."},"runtime":"Seconds to compile; about 1–5 min per rendered shot","refs":[{"role":"technique","label":"274 technique cards: shot size, angle, lens, camera move, lighting, color, editing, composition","kind":"text","license":"original","note":"Ships as references/taxonomy.json; varg's own wording — no third-party card text, no stills"},{"role":"link","label":"varg model catalog (llms.txt)","kind":"link","url":"https://varg.ai/models/llms.txt","license":"link-only","note":"Source for references/models/<id>.md; adapters fail closed for models missing from the catalog"},{"role":"link","label":"Hailuo camera bracket commands (MiniMax API)","kind":"link","url":"https://platform.minimax.io/docs/api-reference/video-generation-t2v","license":"link-only","note":"15 commands, up to 3 per bracket; set prompt_optimizer to false for exact moves"},{"role":"link","label":"Google video prompt guide (Veo, Gemini Omni)","kind":"link","url":"https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/video/video-gen-prompt-guide","license":"link-only","note":"Camera first; describe exclusions without 'no' or 'don't'; updated 2026-10-22"}],"files":["SKILL.md","references/taxonomy.json","references/shot-spec.schema.json","references/models/veo_3_1.md","references/models/omni_flash_1_1.md","references/models/kling_v3.md","references/models/seedance_2_5.md","references/models/seedance_2.md","references/models/minimax_h3_max.md","references/models/wan_3.md","references/external/hailuo-2.3.md","references/external/luma-ray.md","references/external/runway-gen-4.5.md","references/reference-roles.md","references/review-rubric.md","references/old-patterns.md","assets/refs.manifest.json","scripts/compile-shot.ts","scripts/validate-brief.ts","scripts/contact-sheet.ts","evals/evals.json","evals/trigger_eval.json","evals/mocks/varg/estimate_cost.md","agents/openai.yaml"],"version":"0.1.0","addedAt":"2026-10-26","preview":{"kind":"film","hue":28,"text":"DOLLY IN → CU"},"legal":"Pointers only — no film stills or clips bundled. Card text is varg's own; technique and preset names are used as vocabulary only.","techniques":["extreme-wide-shot","wide-shot","full-shot","medium-shot","medium-close-up","close-up","extreme-close-up","insert-shot","eye-level","low-angle","high-angle","overhead-shot","worms-eye","dutch-angle","over-the-shoulder","pov-shot","aerial-view","wide-angle-lens","telephoto-compression","macro-lens","fisheye-lens","anamorphic-lens","shallow-depth-of-field","deep-focus","rack-focus","tilt-shift","split-diopter","static-shot","pan","tilt","dolly-in","dolly-out","truck","pedestal","zoom-in","crash-zoom","dolly-zoom","crane-up","orbit","arc-shot","tracking-shot","handheld","whip-pan","drone-flyover","fpv-drone","bullet-time","snorricam","push-through","turntable","golden-hour","blue-hour","low-key","high-key","rembrandt-lighting","hard-side-light","rim-light","silhouette","window-light","practical-lighting","volumetric-light","teal-and-orange","bleach-bypass","day-for-night","black-and-white","print-film-emulation","film-grain","halation","limited-palette","faded-film","hard-cut","match-cut","jump-cut","smash-cut","shot-reverse-shot","cross-dissolve","whip-transition","j-l-cut","speed-ramp","slow-motion","one-take","rule-of-thirds","center-symmetry","leading-lines","frame-within-frame","negative-space","foreground-layering","two-shot","lead-room","widescreen-letterbox","cowboy-shot","medium-wide-shot","choker-shot","master-shot","profile-shot","three-quarter-angle","hip-level","shoulder-level","trunk-shot","fourth-wall","head-on-shot","masked-pov","ultra-wide-lens","normal-lens","vintage-lens","lens-flare","chromatic-aberration","vignette","magnifier-shot","kaleidoscope-lens","refraction-shot","omnidirectional-camera","steadicam","walk-and-talk","side-tracking","low-tracking","vehicle-tracking","chase-shot","follow-from-behind","slider-shot","pass-by","aerial-push-in","earth-zoom","infinite-zoom","hyperlapse","whip-tilt","camera-roll","double-dolly","locked-on","car-mount","cabin-mount","road-rush","falling-camera","parallax-move","wandering-camera","found-footage","hero-cam","three-point-lighting","kicker-light","hair-light","eye-light","butterfly-lighting","loop-lighting","short-lighting","broad-lighting","chiaroscuro","motivated-lighting","available-light","bounce-light","soft-light","top-light","under-lighting","cross-lighting","firelight","neon-lighting","dappled-light","gobo-lighting","cameo-lighting","epiphany-light","spotlight","glam-lighting","frontal-lighting","night-for-night","moonlight","underwater-light","fluorescent-light","sodium-vapor","flashlight-beam","strobe-flash","projected-light","colored-gels","film-noir-lighting","expressionist-shadows","rain","fog","snow","wet-down","dust-motes","sparks-embers","smoke","steam","dust-storm","sepia-tone","desaturated-grade","hyper-saturated","cool-blue-grade","warm-amber-grade","cross-processing","tungsten-balance","natural-grade","color-shift","vhs-camcorder","overexposed-look","light-leak","bloom-glow","technicolor-look","mixed-color-temperature","infrared","thermal-vision","night-vision","x-ray-look","cross-cutting","montage","rhythmic-montage","intellectual-montage","fade-to-black","wipe","iris-transition","split-screen","match-split","axial-cut","invisible-cut","flash-cut","quick-cuts","set-transition","conveyor-transition","mask-transition","object-portal","morph-transition","datamosh","double-exposure","cinemagraph","wigglegram","echo-print","slit-scan","step-printing","low-shutter-blur","time-lapse","fast-motion","reverse-motion","freeze-frame","stutter","boomerang","seamless-loop","stop-motion","eyeline-match","180-degree-rule","30-degree-rule","reaction-shot","flashback","voiceover","diegetic-sound","non-diegetic-score","ambient-sound","foley","dramatic-silence","stinger","walla","mickey-mousing","acousmatic-sound","three-shot","group-shot","clean-single","interview-framing","video-portrait","duplication","screen-in-screen","shadow-box","forced-perspective","scale-shift","reflection-shot","tableau","void-space","voyeur-framing","headroom","golden-ratio","asymmetrical-balance","diagonal-composition","triangular-composition","repetition-pattern","figure-ground","tonal-contrast","aspect-ratio-switch","academy-ratio","imax-frame"],"featured":true,"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/c88b0f7dadbc/craft-cinematic-grammar.mp4","w":720,"h":450,"duration":7.2,"blur":"data:image/webp;base64,UklGRiABAABXRUJQVlA4IBQBAABwBgCdASogABQAPtFco0yoJSMiMBgIAQAaCWQAqSOwvn9fyHdCAayUZL9h8nMVFSKrINQmQsW3/OA55sAA/uN7wTmn5mz15d3tH/HyGSja7WoeUUglssAsBERqwJJqCH1xUXw6GVcZoaT75q4HrtdOKXh5rk57TEht9V4LYwZUcidlFC8NjPTnJtA34/ySrVaYBuCW+Az8+DKwWrx6fZIVtrULPY/8RlJYt0PL+hVoV6areJmFY6uQfM6OW2JLf0gxC7XR+LkjGhmxS9EjZrZ8rG6E183MTuCrwKfWaiaJk5rwsWvmO0+uFfLDqvXLOb1UDrfgyDoKd/c1/exBYbcBSBwmqiqi1JrKUDqUwILMgrzAAAA=","source":"https://archive.org/details/Sintel","page":"https://archive.org/details/Sintel","credit":"Sintel (CC BY 3.0) — © copyright Blender Foundation | durian.blender.org","rights":"cc-by","note":"DOLLY IN -> CU in one shot: the camera pushes in on Sintel from a medium shot to an extreme close-up of her eyes and holds there as the end frame. Sintel (2010) 05:42.4-05:49.6, from the 2048-px release on archive.org (sintel-2048-stereo.mp4), center-cropped by varg from 2.35:1 to 16:10, no audio.","bytes":257653,"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-camera-moves","slug":"craft-camera-moves","name":"Camera Moves","type":"ref-pack","status":"beta","stream":"craft","category":"camera","tags":["camera-moves","dolly","orbit","crane","fpv","bullet-time","higgsfield-presets","hailuo","prompting"],"summary":"47 camera moves with direction, speed and an end frame — dolly in to car mount — in six models' syntax.","description":"47 original camera-move cards, from dolly in and bullet time to Steadicam glides, vehicle and car mounts, hyperlapse and found-footage handheld. Every clause names one move, its direction and speed, what it moves relative to, and the frame it settles on — the pattern that stops the drifting, never-settling camera. Aliases map other tools' vocabulary onto each card (Higgsfield's 'Super Dolly In' and 'Lazy Susan', Hailuo's `[Truck left]`, Luma's 'Orbit Right', Seedance's 环绕 and 希区柯克变焦), and adapters cover Veo, Kling, Seedance, Hailuo, Luma and Runway. Moves Hailuo has no single command for are composed from up to three simultaneous commands — an orbit becomes `[Truck left,Pan right]`, a crane becomes `[Pedestal up,Tilt down]`.","useWhen":["Choosing or naming a camera move for a shot","Translating a preset name from another app into a move any model understands","A generated clip drifts or never settles — rewrite the move with an explicit end frame"],"notFor":["Lens and focus effects (craft-lens-optics)","Several moves stacked in one clip — split them into shots"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills","repo":"vargHQ/skills","path":"packs/camera-moves","license":"MIT"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli","openclaw","mcp","varg-studio"],"models":["veo_3_1","veo_3_1_fast","veo_3_1_lite","omni_flash_1_1","kling_v3","kling_v3_standard","seedance_2_5","seedance_2","minimax_h3_max"],"refs":[{"role":"motion","label":"Hailuo camera commands (official list of 15)","kind":"link","url":"https://platform.minimax.io/docs/api-reference/video-generation-t2v","license":"link-only","note":"Used verbatim in the hailuo adapters; at most 3 per bracket"},{"role":"motion","label":"Luma camera motion concepts","kind":"link","url":"https://lumalabs.ai/changelog/camera-motion-concepts-launch","license":"link-only","note":"Motion names used as aliases; invoked through plain prompt text"},{"role":"link","label":"Higgsfield camera presets","kind":"link","url":"https://higgsfield.ai/camera-controls","license":"link-only","note":"Preset names mapped as aliases only — models outside Higgsfield do not know them"},{"role":"link","label":"Kling camera control guide (2026-08-13)","kind":"link","url":"https://kling.ai/blog/kling-ai-camera-control-video-guide","license":"link-only","note":"One main move per shot; speed and stability words"}],"files":["README.md","refs.manifest.json","techniques.json"],"version":"0.1.0","addedAt":"2026-10-26","preview":{"kind":"film","hue":205,"text":"Arc right · slow"},"legal":"Pointers only — no film stills or clips bundled. Preset names belong to their owners and are used as aliases only.","techniques":["static-shot","pan","tilt","dolly-in","dolly-out","truck","pedestal","zoom-in","crash-zoom","dolly-zoom","crane-up","orbit","arc-shot","tracking-shot","handheld","whip-pan","drone-flyover","fpv-drone","bullet-time","snorricam","push-through","turntable","steadicam","walk-and-talk","side-tracking","low-tracking","vehicle-tracking","chase-shot","follow-from-behind","slider-shot","pass-by","aerial-push-in","earth-zoom","infinite-zoom","hyperlapse","whip-tilt","camera-roll","double-dolly","locked-on","car-mount","cabin-mount","road-rush","falling-camera","parallax-move","wandering-camera","found-footage","hero-cam"],"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b6912b876f91/craft-camera-moves.mp4","w":720,"h":450,"duration":8,"blur":"data:image/webp;base64,UklGRvIAAABXRUJQVlA4IOYAAACwBQCdASogABQAPtFYo0uoJSMhsAgBABoJQBadgQOwHNz4GWIEkYxV6VfImovVWoySzh8QPaAA/qJLfq1oU3BwfY4e/Qm4yf37TlGe/bJv8MbR2tEQT/k8q1DxETtnEgaN74HQbkAmZ2oUfjfPpSrhYTTB3iRY7vtW38znj6T45agAMf/dH3TW5ZGxh9qfQYs/gD7STN8n1BSLQHc59UlCUjLBDVfqKgKYhP71+U/vjSv3bM7TSrklcwbgUjWiM2lWZ2sAASyEY2aExkS2jZv/QaYMO3VvUB9926cQjmZLhNbU8jgAAA==","source":"https://mango.blender.org/","page":"https://mango.blender.org/","credit":"Tears of Steel (CC BY 3.0) — (CC) Blender Foundation | mango.blender.org","rights":"cc-by","note":"A live-action arc: the camera orbits Thom as he walks onto a canal bridge and stops, swinging from a 3/4-front view through profile to 3/4-back while the background wheels from the church to the canal. Tears of Steel (2012) 04:30.5-04:38.5, 720p release from the Blender mirror (download.blender.org/demo/movies/ToS), center-cropped by varg from 2.40:1 to 16:10, no audio.","bytes":513082,"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-shot-sizes-angles","slug":"craft-shot-sizes-angles","name":"Shot Sizes & Angles","type":"ref-pack","status":"beta","stream":"craft","category":"camera","tags":["shot-size","angles","framing","close-up","low-angle","overhead","pov","shot-spec"],"summary":"29 framing cards — extreme wide to insert, cowboy to master shot, eye level to worm's-eye — with model-ready clauses.","description":"12 shot sizes and 17 camera angles as original cards: what each framing shows, when a director reaches for it, and the near-miss that reads differently (a high angle is not an overhead; a worm's-eye is not a low angle). Aliases cover crew shorthand (EWS, MCU, OTS), Kling's shot labels ('Medium Close up', 'Full Body Shot'), Luma's nine angle concepts and Seedance's 特写 / 近景 / 中景 / 全景 / 大全景. Deep links send humans to shot.cafe tag pages and eyecannndy technique pages; the agent never fetches them.","useWhen":["Deciding how tight to frame a subject or where to put the camera","Writing shot labels for a multi-shot prompt","Matching framing across clips from different models"],"notFor":["Camera movement (craft-camera-moves)","Lens choice and depth of field (craft-lens-optics)"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills","repo":"vargHQ/skills","path":"packs/shot-sizes-angles","license":"MIT"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli","openclaw","mcp","varg-studio"],"models":["veo_3_1","veo_3_1_fast","veo_3_1_lite","omni_flash_1_1","kling_v3","kling_v3_standard","seedance_2_5","seedance_2","minimax_h3_max","nano_banana_2_1","flux_3_image"],"refs":[{"role":"link","label":"shot.cafe tag pages (human lookup)","kind":"link","url":"https://shot.cafe/tag/low-angle","license":"link-only","note":"Personal, non-commercial terms; robots.txt disallows ClaudeBot — the agent never fetches"},{"role":"link","label":"Luma camera angle concepts (9)","kind":"link","url":"https://lumalabs.ai/news/camera-angle-concepts","license":"link-only","note":"Angle names used as aliases"},{"role":"link","label":"Kling prompt guide (shot sizes)","kind":"link","url":"https://kling.ai/blog/kling-ai-prompt-guide","license":"link-only","note":"Shot-size labels used in kling adapters"}],"files":["README.md","refs.manifest.json","techniques.json"],"version":"0.1.0","addedAt":"2026-10-26","preview":{"kind":"film","hue":160,"text":"Low angle · MCU"},"legal":"Pointers only — no film stills or clips bundled.","techniques":["extreme-wide-shot","wide-shot","full-shot","medium-shot","medium-close-up","close-up","extreme-close-up","insert-shot","eye-level","low-angle","high-angle","overhead-shot","worms-eye","dutch-angle","over-the-shoulder","pov-shot","aerial-view","cowboy-shot","medium-wide-shot","choker-shot","master-shot","profile-shot","three-quarter-angle","hip-level","shoulder-level","trunk-shot","fourth-wall","head-on-shot","masked-pov"],"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/6c9ff2fd073f/craft-shot-sizes-angles.mp4","w":720,"h":404,"duration":6.8,"blur":"data:image/webp;base64,UklGRrIAAABXRUJQVlA4IKYAAABQBQCdASogABIAPtFWpk2oJCOiMBgIAQAaCUATplAANSvNa2twhLUsvG/IqUtIdSqM6EoA/cx9SGThBCGUHAheuH5RHHevbubaKznXPGDSqZwpb4DsR9bLMo3Xw7y5XLwvuBk12fvvSCsNOSZymQsedKEyl6upvVfst2egCbQmkZd9n3SeHwIhmdHALc3f+f0VOgRwVf+8NOLVZxf+ckAC3Ix0AAAA","source":"https://commons.wikimedia.org/wiki/File:Big_Buck_Bunny_4K.webm","page":"https://commons.wikimedia.org/wiki/File:Big_Buck_Bunny_4K.webm","credit":"Big Buck Bunny (CC BY 3.0) — (c) copyright 2008, Blender Foundation | bigbuckbunny.org","rights":"cc-by","note":"Two low-angle shots as cut in the film: a worm's-eye view from the grass as the rabbit stretches up into the sky, then a low-angle medium close-up (MCU) of him smiling against the sky. Big Buck Bunny 4K release (Wikimedia Commons 1080p transcode) 01:01.4-01:08.2 (00:57.0-01:03.8 in the 2008 cut), no audio.","bytes":109586,"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-lens-optics","slug":"craft-lens-optics","name":"Lens & Optics","type":"ref-pack","status":"beta","stream":"craft","category":"camera","tags":["lens","focus","depth-of-field","anamorphic","rack-focus","optics","telephoto"],"summary":"20 lens and focus cards — anamorphic, rack focus, lens flare, chromatic aberration — written as visible effects.","description":"Lens language written as effects first, with millimeters optional: most video-model guides document qualitative words (wide-angle, telephoto, shallow depth of field), and of the current guides only Runway's uses focal lengths. The cards cover wide-angle, telephoto compression, macro, fisheye, anamorphic, shallow and deep focus, rack focus (Seedance: 移焦 plus a plain description), tilt-shift and split diopter. Misuse notes flag the classic confusions: a digital crop does not compress, and blur everywhere is not shallow focus. Newer cards add ultra-wide and normal lenses, vintage cine glass, lens flare, chromatic aberration, vignette, refraction, kaleidoscope and 360 cameras.","useWhen":["User asks for a lens look ('85mm', 'anamorphic', 'bokeh', 'everything sharp')","Separating a subject from a busy background, or keeping two planes in focus"],"notFor":["Color and film-stock looks (craft-color-looks)","Camera moves such as zoom or dolly zoom (craft-camera-moves)"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills","repo":"vargHQ/skills","path":"packs/lens-optics","license":"MIT"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli","openclaw","mcp","varg-studio"],"models":["veo_3_1","veo_3_1_fast","veo_3_1_lite","omni_flash_1_1","kling_v3","kling_v3_standard","seedance_2_5","seedance_2","minimax_h3_max","nano_banana_2_1","flux_3_image"],"refs":[{"role":"link","label":"film-grab search (camera and lens notes, human lookup)","kind":"link","url":"https://film-grab.com/?s=anamorphic","license":"link-only","note":"Fair-dealing gallery whose operator rejects bots — humans only"},{"role":"link","label":"Runway AI camera prompts (lens terms)","kind":"link","url":"https://runway.com/resources/ai-camera-prompts","license":"link-only","note":"Documents '35mm lens' and 'macro lens'; 'cinematic' and '4k' add nothing"}],"files":["README.md","refs.manifest.json","techniques.json"],"version":"0.1.0","addedAt":"2026-10-26","preview":{"kind":"film","hue":265,"text":"85mm · f/1.4"},"legal":"Pointers only — no film stills or clips bundled.","techniques":["wide-angle-lens","telephoto-compression","macro-lens","fisheye-lens","anamorphic-lens","shallow-depth-of-field","deep-focus","rack-focus","tilt-shift","split-diopter","ultra-wide-lens","normal-lens","vintage-lens","lens-flare","chromatic-aberration","vignette","magnifier-shot","kaleidoscope-lens","refraction-shot","omnidirectional-camera"],"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b3bc9499ee00/craft-lens-optics.mp4","w":720,"h":300,"duration":6.6,"blur":"data:image/webp;base64,UklGRtoAAABXRUJQVlA4IM4AAABQBQCdASogAA4APtFYpEuoJSOhsAgBABoJYgC7AywYYJpMYBtZGvPOjdebWPILMcE7qsAA/mEF5XY4I7uMDM8StWb8K+WGrOx3d3t/eQ3SkFXoBot9mHaqeDMqAY8v6T6krrl0r+wRfyTshmgG6NPW+U4R7PHBXtBxvBuJt1c9nWYgjiuxgSfh/OmBjftANZhrWe6dZQZ0ojRxvyRjhs2m8jCgjs1jHFxa2TXc929RbcPGdWNOV041wVN6CPqAFTTDrisfm2EsVLUYU3gAAA==","source":"https://mango.blender.org/","page":"https://mango.blender.org/","credit":"Tears of Steel (CC BY 3.0) — (CC) Blender Foundation | mango.blender.org","rights":"cc-by","note":"Long-lens shallow focus on real glass: two live-action close-ups (Thom, then Celia) with the canal houses and trees behind them melted into soft bokeh so only the face is sharp, the look the '85mm, f/1.4' card describes. Tears of Steel (2012) 05:15.5-05:22.1, 720p release from the Blender mirror (download.blender.org/demo/movies/ToS), full 2.40:1 frame, no audio.","bytes":82167,"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-lighting-setups","slug":"craft-lighting-setups","name":"Lighting Setups","type":"ref-pack","status":"beta","stream":"craft","category":"lighting","tags":["lighting","golden-hour","low-key","rim-light","practicals","volumetric","portrait"],"summary":"56 lighting setups — golden hour to chiaroscuro, rain and fog — each with a named source, direction and quality.","description":"56 lighting cards that always name a source and a direction instead of a mood word: golden hour, blue hour, low-key, high-key, Rembrandt, hard side light, rim light, silhouette, soft window light, practicals and volumetric light. Aliases include Higgsfield Cinema Studio presets (Silhouette, Contre-jour, Practicals, Window) and the terms Google, Kling and Wan document ('rembrandt lighting', 'subtle god rays', 'rim light'). Light belongs in the generation prompt; pair with craft-color-looks for the grade. Newer cards add portrait setups (three-point, butterfly, loop, short and broad, kicker, hair and eye light), motivated and available light, neon, firelight, gels and film-noir shadows, and weather and atmosphere: rain, fog, snow, smoke, steam, dust and sparks.","useWhen":["Setting the mood of a shot through light","A generated face looks flat or the subject merges with the background"],"notFor":["Relighting an existing clip (use a relight model)","Color grading after generation (craft-color-looks)"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills","repo":"vargHQ/skills","path":"packs/lighting-setups","license":"MIT"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli","openclaw","mcp","varg-studio"],"models":["veo_3_1","veo_3_1_fast","veo_3_1_lite","omni_flash_1_1","kling_v3","kling_v3_standard","seedance_2_5","seedance_2","minimax_h3_max","nano_banana_2_1","flux_3_image"],"refs":[{"role":"link","label":"shot.cafe — practical lamp tag (human lookup)","kind":"link","url":"https://shot.cafe/tag/practical%20lamp","license":"link-only","note":"Human browsing only; never fetched by the agent"},{"role":"link","label":"Higgsfield Cinema Studio 4.0 lighting presets","kind":"link","url":"https://higgsfield.ai/blog/cinema-studio-4-0","license":"link-only","note":"Preset names used as aliases"}],"files":["README.md","refs.manifest.json","techniques.json"],"version":"0.1.0","addedAt":"2026-10-26","preview":{"kind":"film","hue":40,"text":"Rim light"},"legal":"Pointers only — no film stills or clips bundled.","techniques":["golden-hour","blue-hour","low-key","high-key","rembrandt-lighting","hard-side-light","rim-light","silhouette","window-light","practical-lighting","volumetric-light","three-point-lighting","kicker-light","hair-light","eye-light","butterfly-lighting","loop-lighting","short-lighting","broad-lighting","chiaroscuro","motivated-lighting","available-light","bounce-light","soft-light","top-light","under-lighting","cross-lighting","firelight","neon-lighting","dappled-light","gobo-lighting","cameo-lighting","epiphany-light","spotlight","glam-lighting","frontal-lighting","night-for-night","moonlight","underwater-light","fluorescent-light","sodium-vapor","flashlight-beam","strobe-flash","projected-light","colored-gels","film-noir-lighting","expressionist-shadows","rain","fog","snow","wet-down","dust-motes","sparks-embers","smoke","steam","dust-storm"],"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b612fefdcb9d/craft-lighting-setups.mp4","w":720,"h":404,"duration":8,"blur":"data:image/webp;base64,UklGRsYAAABXRUJQVlA4ILoAAADwBACdASogABIAPtFcpk6oJSMiKAqpABoJZwAD5S5jnzhcm0cR2ZoUFL+TsI8+I2AA/v3bjT9Wf/F1va+7QpaNe5bP7ClPLj0jymbHpvnBfC3jsdezz3mKsf1Rns6Yih6nEznrrJdJX+hhAzq88WEg81p7DR1qzePIP5ANDBgV2wRFqBhJOFjese26+ZgFF/3W3KjsRXlrcLDNY3/UoIuBz/CFb2AvlbazhD3s62YjLbfVUGhlfxQgAAA=","source":"https://commons.wikimedia.org/wiki/File:Elephants_Dream_(2006).webm","page":"https://commons.wikimedia.org/wiki/File:Elephants_Dream_(2006).webm","credit":"Elephants Dream (CC BY 2.5) — © 2006 Blender Foundation / Netherlands Media Art Institute | elephantsdream.org","rights":"cc-by","note":"Rim light from a hard backlight: Proog steps into a blown-out doorway and the light behind him wraps his head, shoulders and hands in a glowing edge against the dark curtains, with only a soft fill on his face. Elephants Dream (2006) 01:10.6-01:18.6, Wikimedia Commons 1080p transcode, no audio.","bytes":163618,"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-composition-framing","slug":"craft-composition-framing","name":"Composition & Framing","type":"ref-pack","status":"beta","stream":"craft","category":"camera","tags":["composition","framing","rule-of-thirds","symmetry","negative-space","copy-space","image","thumbnails"],"summary":"34 composition cards — thirds, symmetry, leading lines, forced perspective, 2.39:1 to IMAX — for stills and video.","description":"Composition written as placements a model can follow: where the subject sits, where it looks, and what fills the rest of the frame. Covers rule of thirds, centered symmetry, leading lines, frame within a frame, negative space (copy space for ad titles), foreground layering, two-shots, lead room and widescreen 2.39:1. The same clauses drive image models, so a Nano Banana or FLUX first frame can be composed before any video credits are spent. Newer cards add group and interview framings, headroom, golden ratio, diagonal and triangular layouts, forced perspective, reflections, tableau, figure-ground and aspect-ratio switches.","useWhen":["Composing a first frame, a thumbnail or a product hero","Leaving room for titles and captions"],"notFor":["Camera angle and height (craft-shot-sizes-angles)"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills","repo":"vargHQ/skills","path":"packs/composition-framing","license":"MIT"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli","openclaw","mcp","varg-studio"],"models":["veo_3_1","veo_3_1_fast","veo_3_1_lite","omni_flash_1_1","kling_v3","kling_v3_standard","seedance_2_5","seedance_2","minimax_h3_max","nano_banana_2_1","flux_3_image","gpt_image_2_5"],"refs":[{"role":"link","label":"Kling prompt guide (composition terms)","kind":"link","url":"https://kling.ai/blog/kling-ai-prompt-guide","license":"link-only","note":"Documents 'centered' and 'rule of thirds'"},{"role":"link","label":"Wan prompt guide (composition vocabulary)","kind":"link","url":"https://www.alibabacloud.com/help/en/model-studio/text-to-video-prompt","license":"link-only","note":"Center, symmetrical and short-side composition terms"}],"files":["README.md","refs.manifest.json","techniques.json"],"version":"0.1.0","addedAt":"2026-10-26","preview":{"kind":"grid","hue":300,"text":"Rule of thirds"},"legal":"Pointers only — no film stills or clips bundled.","techniques":["rule-of-thirds","center-symmetry","leading-lines","frame-within-frame","negative-space","foreground-layering","two-shot","lead-room","widescreen-letterbox","three-shot","group-shot","clean-single","interview-framing","video-portrait","duplication","screen-in-screen","shadow-box","forced-perspective","scale-shift","reflection-shot","tableau","void-space","voyeur-framing","headroom","golden-ratio","asymmetrical-balance","diagonal-composition","triangular-composition","repetition-pattern","figure-ground","tonal-contrast","aspect-ratio-switch","academy-ratio","imax-frame"],"adds":"visual","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/154762caf94b/craft-composition-framing.webp","w":960,"h":410,"blur":"data:image/webp;base64,UklGRpYAAABXRUJQVlA4IIoAAADQAwCdASogAA4APtFYpkwoJSOiMAgBABoJQBOgA+ftRCZ2dr3HGsAA/CKIm15muWyB/MaVE2EI8xqpavoX6RUbWqpq5JoVo3p/QL5fCgVIqHXYXjCSZ/6QJihcokqtaCEs5ontEcemGQvuJbX8RdBrLmajCatXk0TNMpbLj3xgFCffxXAXw9e0qAA=","source":"https://archive.org/details/Sintel","page":"https://archive.org/details/Sintel","credit":"Sintel (CC BY 3.0) — © copyright Blender Foundation | durian.blender.org","rights":"cc-by","note":"Rule of thirds in a real frame: Sintel sits on the right-third line with her head near the upper-right intersection, the cliff fills the lower two thirds and the haze leaves negative space for a title. The thin thirds grid was drawn on by varg. Sintel (2010) frame at 11:34, 2048-px release on archive.org, full 2.35:1 frame.","bytes":27988,"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-color-looks","slug":"craft-color-looks","name":"Color Looks & LUTs","skillName":"color-looks","type":"skill","status":"draft","stream":"craft","category":"color","tags":["color","grading","lut","ffmpeg","film-look","grain","halation","post"],"summary":"Name a look, get prompt words plus an ffmpeg grade: LUT at partial strength, then moving grain.","description":"Nine color cards (teal and orange, bleach bypass, day for night, black and white, print film, grain, halation, limited palette, faded film), each with prompt language for generation and a deterministic recipe for post. The recipe follows the common practice for AI clips — normalize, apply a print-style LUT at 50–80% through ffmpeg `lut3d` + `blend`, then add moving grain with `noise` — and runs as a varg ffmpeg step or locally. LUTs come only from clearly licensed sources: varg-baked originals (built from `haldclutsrc` + `curves`/`colorbalance`/`eq`), BSD-licensed ACES transforms, or link-only vendor pages; packs with unknown provenance are refused.","useWhen":["User asks for a film look, a named grade or a LUT","Clips from different models need one consistent look","AI footage looks too clean or plastic"],"notFor":["Relighting a scene (lighting belongs in the prompt or a relight model)","Bundling third-party LUT packs without a license"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills","repo":"vargHQ/skills","path":"color-looks","license":"MIT"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli","openclaw","mcp","varg-studio"],"models":["ffmpeg","seedance_2_5","kling_v3","veo_3_1","omni_flash_1_1"],"requires":["ffmpeg (local) or a varg API key for the ffmpeg tool"],"cost":{"note":"Free locally with ffmpeg; run as a varg ffmpeg step it is billed in credits — estimate_cost shows the price first."},"runtime":"Seconds per clip","refs":[{"role":"lut","label":"Recipe: LUT at 60% strength + moving grain (ffmpeg)","kind":"text","license":"original","note":"ffmpeg -i in.mp4 -filter_complex \"[0:v]split[a][b];[b]lut3d=file=look.cube:interp=tetrahedral[g];[g][a]blend=all_mode=normal:all_opacity=0.6,noise=alls=8:allf=t+u[v]\" -map \"[v]\" -map 0:a? -c:a copy out.mp4"},{"role":"lut","label":"Recipe: bake an original look as a Hald CLUT (ffmpeg)","kind":"text","license":"original","note":"ffmpeg -f lavfi -i haldclutsrc=8 -vf \"curves=preset=cross_process,eq=saturation=0.9\" -frames:v 1 look.png; apply with -filter_complex \"[0:v][1:v]haldclut\" or convert to .cube with scripts/hald-to-cube.ts"},{"role":"lut","label":"varg Original LUT Pack (craft-lut-pack)","kind":"lut","license":"original","note":"Five starter looks baked by varg, one license record per file; draft until hosted on s3.varg.ai"},{"role":"link","label":"ffmpeg lut3d filter","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#lut3d-1","license":"link-only","note":"Reads .cube, .3dl, .dat, .m3d, .csp; tetrahedral interpolation available"}],"files":["SKILL.md","references/looks.md","references/recipes/teal-and-orange.md","references/recipes/bleach-bypass.md","references/recipes/day-for-night.md","references/recipes/print-film.md","references/recipes/grain-and-halation.md","references/lut-licensing.md","assets/luts/README.md","scripts/grade.ts","scripts/hald-to-cube.ts","evals/evals.json"],"version":"0.1.0","addedAt":"2026-10-26","preview":{"kind":"lut","hue":190,"text":"Teal & orange"},"legal":"Pointers only — no film stills or clips bundled. Every LUT carries a per-file license (original, BSD-3-Clause or link-only); unlicensed LUT packs are not accepted.","techniques":["teal-and-orange","bleach-bypass","day-for-night","black-and-white","print-film-emulation","film-grain","halation","limited-palette","faded-film","sepia-tone","desaturated-grade","hyper-saturated","cool-blue-grade","warm-amber-grade","cross-processing","tungsten-balance","natural-grade","color-shift","vhs-camcorder","overexposed-look","light-leak","bloom-glow","technicolor-look","mixed-color-temperature","infrared","thermal-vision","night-vision","x-ray-look"],"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ab14fd5718b2/craft-color-looks.mp4","w":720,"h":450,"duration":8,"blur":"data:image/webp;base64,UklGRh4BAABXRUJQVlA4IBIBAACQBQCdASogABQAPtFSoUuoJKMhsAgBABoJZgCuIrbLQOZWKg3SjXe0LnhRIZgiOfP1JsyaiAD4suHFn+TopZB8JSLCvlGGD9MzQNuP7OgimJsgxFfn3yajqfWmAsPR2Y1V+2xxVXWCbZdP526D9Jb8ZfPQgtUvwoKPXl6KUebVSbWSQrJ8ZSRg8wbnweSTCwMIOJtDm2zAw7zQ1iisARoxgXJbrlQx50uX2S2qcpGqkwDmkyjvzZFsHEYT2dYE45r2KXdxnAHn/1HkZ9zft9/lBXE28G3aKAYKpkwuhvD3Nh6tnGtku5tMWTdD5j+Y5aXiFPIreJw+Yktcrt09S3XYIS7ObFBY+EMbB/BpoDPJyAAA","source":"https://mango.blender.org/","page":"https://mango.blender.org/","credit":"varg grade on Tears of Steel (CC BY 3.0, (CC) Blender Foundation | mango.blender.org)","rights":"generated","note":"Before/after wipe of the skill's own post recipe, no model run. Footage: Tears of Steel 720p (CC BY 3.0, (CC) Blender Foundation | mango.blender.org, via the official Blender mirror download.blender.org/demo/movies/ToS), 00:29-00:37, cropped to 16:10. Right of the line: a varg-baked teal-and-orange .cube (haldclutsrc=level=8 -> selectivecolor -> colorbalance -> curves -> huesaturation -> Hald CLUT -> .cube) applied with lut3d at 80% through blend, then moving grain noise=alls=8:allf=t+u. Left: the untouched film.","bytes":312973,"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-lut-pack","slug":"craft-lut-pack","name":"Original LUT Pack","type":"ref-pack","status":"draft","stream":"craft","category":"color","tags":["lut","cube","color","grading","ffmpeg","aces"],"summary":"varg-baked .cube looks plus link-only vendor LUT pages — every file with its license on record.","description":"A ref pack for color finishing. The creative looks are baked by varg from documented ffmpeg filter chains (`haldclutsrc` → `curves` / `colorbalance` / `eq` → Hald CLUT → .cube), so they are original and carry a license record per file; technical transforms point to the BSD-3-Clause ACES OpenColorIO config, and camera-vendor conversion LUTs stay link-only. Draft until the five starter looks are baked, hashed (sha256) and hosted on s3.varg.ai.","useWhen":["A grade needs a LUT file rather than prompt words","Applying one look across clips from several models"],"notFor":["Redistributing camera-vendor or paid LUTs","LUT packs whose license or provenance is unclear"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills","repo":"vargHQ/skills","path":"packs/lut-pack","license":"MIT"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli","openclaw","mcp","varg-studio"],"models":["ffmpeg"],"refs":[{"role":"lut","label":"varg print-film v1 (.cube, planned)","kind":"lut","license":"original","note":"Baked from an ffmpeg chain; apply at 50–80%"},{"role":"lut","label":"varg teal-orange v1 (.cube, planned)","kind":"lut","license":"original","note":"Keeps skin warm; apply at 40–70%"},{"role":"lut","label":"varg bleach-bypass v1 (.cube, planned)","kind":"lut","license":"original","note":"Pair with grain; avoid on beauty shots"},{"role":"lut","label":"varg day-for-night v1 (.cube, planned)","kind":"lut","license":"original","note":"Expects daylight footage about one stop under"},{"role":"lut","label":"varg faded-film v1 (.cube, planned)","kind":"lut","license":"original","note":"Lifted blacks, clean highlights"},{"role":"lut","label":"OpenColorIO-Config-ACES","kind":"link","url":"https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES","license":"BSD-3-Clause","note":"Technical color management, not a creative look; keep LICENSE when vendoring"},{"role":"link","label":"ARRI LUT Generator","kind":"link","url":"https://www.arri.com/en/software/postproduction-software/legacy/lut-generator","license":"link-only","note":"Official camera conversion LUTs for footage the user shot; never redistributed"},{"role":"link","label":"ffmpeg curves presets","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#curves-1","license":"link-only","note":"Built-in presets (vintage, cross_process, strong_contrast …) used as bake inputs"}],"files":["README.md","refs.manifest.json","LICENSES.md","luts/varg-print-film-v1.cube","luts/varg-teal-orange-v1.cube","luts/varg-bleach-bypass-v1.cube","luts/varg-day-for-night-v1.cube","luts/varg-faded-film-v1.cube","scripts/bake-luts.ts"],"version":"0.0.1","addedAt":"2026-10-26","preview":{"kind":"lut","hue":15,"text":"print-film v1"},"legal":"Pointers only — no film stills or clips bundled. LUT files are varg originals; third-party LUTs are linked, never copied.","techniques":["print-film-emulation","teal-and-orange","bleach-bypass","day-for-night","faded-film"],"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/c172925c3658/craft-lut-pack.mp4","w":720,"h":450,"duration":8,"blur":"data:image/webp;base64,UklGRtIAAABXRUJQVlA4IMYAAADwBQCdASogABQAPtFYpE0oJSMiMBgIAQAaCWUAuzMYTgA5MSvMGfhusyqxj7ulFim5J/XAiHWReAD+7NH+igIedozwXOWZB+v/AMYvOwtC73C71TUYqZHeo+0fpKYvN1SrXANPdF6xiA7Y7KcQEqRZwhS+c+uL+oB6ciknEgpULnO10ySSlA+GoiJM7S+iEOHpWgXD9fLMnF4ZK2TIRcZ92Py5nX1uXbk4st3QoTx9Vu7uurfbLWf0t4Db4opCUwTc5bOAAAA=","source":"https://mango.blender.org/","page":"https://mango.blender.org/","credit":"varg LUT on Tears of Steel (CC BY 3.0, (CC) Blender Foundation | mango.blender.org)","rights":"generated","note":"Split screen, no model run: left the untouched film, right the varg-baked print-film v1 .cube at 100% (ffmpeg lut3d, tetrahedral). The LUT is original: haldclutsrc=level=8 -> curves (lifted blacks 0->0.10, highlights rolled to 0.91, warm red/blue mids) -> colorbalance (teal-leaning shadows, warm mids and highlights) -> eq=saturation=0.8 -> Hald CLUT -> 64^3 .cube (sha256 9f7725eb...). Footage: Tears of Steel 720p (CC BY 3.0, (CC) Blender Foundation | mango.blender.org, from the official Blender mirror download.blender.org/demo/movies/ToS), 02:06.5-02:14.5, cropped to 16:10.","bytes":234152,"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-editing-transitions","slug":"craft-editing-transitions","name":"Editing & Transitions","skillName":"editing-transitions","type":"skill","status":"draft","stream":"craft","category":"editing","tags":["editing","cuts","transitions","multi-shot","match-cut","speed-ramp","ffmpeg","xfade"],"summary":"Cuts, match cuts, J/L cuts, whips and speed ramps — multi-shot prompt syntax per model, ffmpeg when needed.","description":"60 editing and sound cards with two routes each: ask a multi-shot model for the cut inside one generation (Veo timestamps `[00:00-00:03]`, Kling `[Shot 1: Wide shot]` labels, Seedance 镜头1 / 镜头切至 and 2.5 timing such as `第3s 快速向右横移转场`), or build it in post when the model cannot (Luma and Hailuo render separate clips; ffmpeg `xfade` for dissolves and wipes, matched blur for whip transitions). Covers hard, match, jump and smash cuts, shot-reverse-shot on one side of the 180-degree line, dissolves, whip transitions, J/L cuts, speed ramps, slow motion and the one-take. Native-audio models also get the sound bridge (`SFX:` on Veo, `<…>` on Seedance). Newer cards add montage and cross-cutting, iris, wipe, split screen and morph transitions, freeze frame, time-lapse, stop motion and slit-scan, continuity rules (180° and 30°, eyeline match), and sound grammar: diegetic sound, score, Foley, walla, stingers and dramatic silence.","useWhen":["Planning a sequence of 2–15 shots","Joining clips from different generations so the cut feels intentional","User asks for a match cut, whip transition, J-cut or speed ramp"],"notFor":["Single-shot camera moves (craft-camera-moves)","Beat-synced music edits (use a music-video skill)"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills","repo":"vargHQ/skills","path":"editing-transitions","license":"MIT"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli","openclaw","mcp","varg-studio"],"models":["veo_3_1","omni_flash_1_1","kling_v3","seedance_2_5","seedance_2","wan_3","ffmpeg"],"requires":["ffmpeg (local) or a varg API key"],"cost":{"note":"Prompt writing is free; generations and varg ffmpeg or render steps are billed in credits — estimate first."},"refs":[{"role":"link","label":"Kling multi-shot guide","kind":"link","url":"https://kling.ai/blog/kling-video-3-multi-shot-guide","license":"link-only","note":"Up to 6 shots and 3–15 s; '[Shot 1: Wide shot]' labels"},{"role":"link","label":"Seedance 2.5 prompt guide (Volcano Engine)","kind":"link","url":"https://docs.volcengine.com/docs/ark/seedance-2-5-prompt-guide?lang=zh","license":"link-only","note":"镜头 N or timestamps; transitions stated with time and method"},{"role":"link","label":"Veo 3.1 prompting guide (timestamps, SFX)","kind":"link","url":"https://cloud.google.com/blog/products/ai-machine-learning/ultimate-prompting-guide-for-veo-3-1","license":"link-only","note":"'[00:00-00:02]' blocks; SFX: and Ambient noise: lines"},{"role":"link","label":"ffmpeg xfade transitions","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only","note":"fade, dissolve, wipeleft, slideleft …; both inputs need the same size and frame rate"}],"files":["SKILL.md","references/multi-shot-syntax.md","references/cuts.md","references/transitions-ffmpeg.md","references/sound-bridges.md","scripts/join.ts","evals/evals.json"],"version":"0.1.0","addedAt":"2026-10-26","preview":{"kind":"timeline","hue":330,"text":"Match cut"},"legal":"Pointers only — no film stills or clips bundled.","techniques":["hard-cut","match-cut","jump-cut","smash-cut","shot-reverse-shot","cross-dissolve","whip-transition","j-l-cut","speed-ramp","slow-motion","one-take","cross-cutting","montage","rhythmic-montage","intellectual-montage","fade-to-black","wipe","iris-transition","split-screen","match-split","axial-cut","invisible-cut","flash-cut","quick-cuts","set-transition","conveyor-transition","mask-transition","object-portal","morph-transition","datamosh","double-exposure","cinemagraph","wigglegram","echo-print","slit-scan","step-printing","low-shutter-blur","time-lapse","fast-motion","reverse-motion","freeze-frame","stutter","boomerang","seamless-loop","stop-motion","eyeline-match","180-degree-rule","30-degree-rule","reaction-shot","flashback","voiceover","diegetic-sound","non-diegetic-score","ambient-sound","foley","dramatic-silence","stinger","walla","mickey-mousing","acousmatic-sound"],"adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/061cde0f9ca7/craft-editing-transitions.mp4","w":720,"h":450,"duration":8,"blur":"data:image/webp;base64,UklGRpYAAABXRUJQVlA4IIoAAADwBACdASogABQAPtFYpk0oJSOiMBgIAQAaCWMAqPQM0vydfvpgVIkeg2/DaWo82QAA9vZgmYXhDauo1dgGkq8qj6uyyY16/Do4w7xTvZO9L3uWiiFp/OgcgO9PGowrH7vCqZYmKgN21T1TreJKGQFZzC3fzZtwVh8hEmT6Tbl+TqW7/HRFnpc9pAA=","source":"https://mango.blender.org/","page":"https://mango.blender.org/","credit":"varg edit of Tears of Steel shots (CC BY 3.0, (CC) Blender Foundation | mango.blender.org)","rights":"generated","note":"The skill's post route, built with ffmpeg xfade and no model: four Tears of Steel shots (CC BY 3.0, (CC) Blender Foundation | mango.blender.org; 01:10.3, 00:22.2, 02:56.3, 03:36.0, 2.4 s each, cropped to 16:10) joined by a 0.8 s cross-dissolve (xfade=fade, at 1.6 s), a 0.5 s wipe (xfade=wipeleft, at 3.5 s) and a 0.35 s whip (xfade=slideleft at 5.55 s with matched horizontal gblur, sigma 10 then 45, on the outgoing tail and incoming head). Labels name each transition.","bytes":289034,"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-paper-shaders","slug":"craft-paper-shaders","name":"Paper Shaders Backgrounds","skillName":"paper-shaders","type":"skill","status":"draft","stream":"craft","category":"shaders","tags":["shaders","backgrounds","overlays","logo-sting","hyperframes","remotion","webgl","brand","deterministic"],"summary":"Frame-exact shader backgrounds and logo stings: 9 varg presets plus all 124 of Paper's own, rendered locally.","description":"Turns the 30 Paper Shaders (mesh gradient, grain gradient, god rays, liquid metal, halftone, paper texture, dithering …) into frame-exact motion design for HyperFrames or Remotion: set `speed={0}` and drive `frame={(currentFrame / fps) * 1000 * k}`, so every exported frame is a pure function of time and parallel renders never flicker. Presets ship as JSON refs (shader + props + brand-color mapping), not video files, and spend no generation credits. Paper Shaders switched from PolyForm Shield to Apache-2.0 on 2026-06-27 and allows commercial video use without visible attribution; pin an exact 0.0.x release (0.0.82 shipped 2026-10-21) and keep LICENSE and NOTICE when vendoring. The skill is in review as vargHQ/skills PR #26 (version 0.1.0, MIT, Paper Shaders pinned to 0.0.82). Since commit b48987f the PR also ships all 124 of Paper's built-in presets (30 shaders, 4–6 each, Apache-2.0, Paper's own colors and speeds) and a full-frame gallery example; `paperSequenceSource` in templates/paper-preset.js drives any number of presets from one WebGL context.","useWhen":["A branded motion background, texture or loader behind text or product cards","Finishing AI clips with paper, halftone, dithering or grain overlays","A logo sting with liquid metal, gem smoke or heatmap"],"notFor":["Photoreal footage (generate it with a video model)","Paper Shaders 0.0.47–0.0.76 (PolyForm Shield, published 2025-08-22 → 2026-06-27); 0.0.10–0.0.46 were MIT and 0.0.77+ are Apache-2.0 — check the LICENSE of any pinned version"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/pull/26","repo":"vargHQ/skills","path":"paper-shaders","license":"MIT"},"agents":["claude-code","codex","cursor","gemini-cli","openclaw","varg-studio"],"models":["render"],"requires":["HyperFrames or Remotion","Headless Chrome with WebGL (Remotion: --gl=angle)","@paper-design/shaders-react pinned to an exact version","Node 22 and ffmpeg (for HyperFrames)"],"cost":{"note":"Free — renders locally in HyperFrames or Remotion; no varg credits."},"runtime":"Seconds to minutes (local render)","refs":[{"role":"shader","label":"Brand mesh background","kind":"shader","url":"https://shaders.paper.design/mesh-gradient","license":"Apache-2.0","note":"MeshGradient — colors: 4 brand colors; distortion 0.8; swirl 0.1; grainOverlay 0.15; speed 0; frame = t·1000·0.3"},{"role":"shader","label":"Grain blob backdrop","kind":"shader","url":"https://shaders.paper.design/grain-gradient","license":"Apache-2.0","note":"GrainGradient — shape 'blob'; softness 0.7; intensity 0.3; noise 0.25; colorBack = brand dark"},{"role":"shader","label":"God-rays logo reveal","kind":"shader","url":"https://shaders.paper.design/god-rays","license":"Apache-2.0","note":"GodRays — intensity 0.8; density 0.3; bloom 0.4; midSize 0.2; midIntensity 0.6"},{"role":"shader","label":"Liquid metal logo sting","kind":"shader","url":"https://shaders.paper.design/liquid-metal","license":"Apache-2.0","note":"LiquidMetal — image: transparent logo PNG; repetition 4; softness 0.4; shiftRed 0.3; shiftBlue -0.3; distortion 0.1; white chrome tint"},{"role":"shader","label":"Paper texture finish","kind":"shader","url":"https://shaders.paper.design/paper-texture","license":"Apache-2.0","note":"PaperTexture over a frame — roughness 0.4; fiber 0.3; folds 0.2; blending 0.5"},{"role":"shader","label":"Halftone print overlay","kind":"shader","url":"https://shaders.paper.design/halftone-dots","license":"Apache-2.0","note":"HalftoneDots — type 'classic'; grid 'hex'; size 0.3; radius 1.2; contrast 0.6; originalColors true"},{"role":"shader","label":"Retro dither texture","kind":"shader","url":"https://shaders.paper.design/dithering","license":"Apache-2.0","note":"Dithering — shape 'warp'; type '4x4'; size 2; colorBack and colorFront from the brand kit"},{"role":"shader","label":"Warp transition mask","kind":"shader","url":"https://shaders.paper.design/warp","license":"Apache-2.0","note":"Warp — frame driven by transition progress; shape 'stripes'; distortion 0.4; swirl 0.6; swirlIterations 10"},{"role":"shader","label":"Smoke ring loader","kind":"shader","url":"https://shaders.paper.design/smoke-ring","license":"Apache-2.0","note":"SmokeRing — radius 0.25; thickness 0.6; noiseIterations 5; noiseScale 2"},{"role":"link","label":"Paper Shaders license","kind":"link","url":"https://github.com/paper-design/shaders/blob/main/LICENSE","license":"Apache-2.0","note":"Apache-2.0 since 2026-06-27; Copyright Lost Coast Labs, Inc."},{"role":"link","label":"HyperFrames frame sources","kind":"link","url":"https://hyperframes.heygen.com/guides/frame-sources.md","license":"link-only","note":"Repeated or out-of-order times must return the same frame"},{"role":"link","label":"Remotion shaders guide","kind":"link","url":"https://www.remotion.dev/docs/shaders","license":"link-only","note":"Render with --gl=angle; Remotion needs a company license above three employees"},{"role":"link","label":"Paper Shaders llms.txt","kind":"link","url":"https://shaders.paper.design/llms.txt","license":"link-only","note":"Paper’s own agent docs for the shader catalogue"}],"files":["SKILL.md","LICENSE-paper-shaders","NOTICE","assets/paper-shaders.params.json","assets/presets/brand-mesh.json","assets/presets/god-rays-reveal.json","assets/presets/grain-blob.json","assets/presets/halftone-overlay.json","assets/presets/liquid-metal-sting.json","assets/presets/paper-finish.json","assets/presets/retro-dither.json","assets/presets/smoke-ring-loader.json","assets/presets/warp-transition.json","assets/previews/preset-reel.webp","assets/refs.manifest.json","evals/trigger_eval.json","examples/preset-reel/index.html","references/brand-mapping.md","references/determinism.md","references/licensing.md","references/shaders.md","scripts/apply-brand.mjs","scripts/build-manifest.mjs","scripts/check-determinism.mjs","scripts/new-project.mjs","scripts/refresh-params.mjs","scripts/validate-presets.mjs","templates/hyperframes/shader-background.html","templates/paper-preset.d.ts","templates/paper-preset.js","templates/remotion/ShaderBackground.tsx","assets/presets/paper/124 Paper presets (*.json)","examples/paper-gallery/index.html","assets/previews/paper-gallery.webp"],"version":"0.1.0","addedAt":"2026-10-26","preview":{"kind":"shader","hue":250,"text":"mesh-gradient"},"legal":"Pointers only — no film stills or clips bundled. Paper Shaders code is Apache-2.0 (Lost Coast Labs, Inc.); keep LICENSE and NOTICE when vendoring and pin versions released after 2026-06-27.","techniques":["limited-palette","negative-space"],"updatedAt":"2026-10-27","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/11019611acab/craft-paper-shaders.mp4","w":720,"h":404,"duration":9,"blur":"data:image/webp;base64,UklGRpwAAABXRUJQVlA4IJAAAACwBACdASogABIAPtFcp04oJSOiKAqpABoJQAAR/rjSUw7SkCcSgi6CBX3/hDMAAP766O42i+nprK+7eoApJ24Qq1E/na2N33JHC6pokLIA24GyEYOPlcrTDKvBNr3Yo3ONo7Fzn72wll8HHRakuoCX/p6xSnPI0/u2/+btm4E/Qtv813Yu8se0NEBqBDCKQAA=","source":"https://github.com/vargHQ/skills/pull/26","page":"https://github.com/vargHQ/skills/pull/26","credit":"varg — paper-shaders skill (Paper Shaders, Apache-2.0)","rights":"generated","note":"One second of each of the 9 presets, rendered by the skill's own examples/preset-reel with HyperFrames 0.8.206 and @paper-design/shaders 0.0.82 — no generation credits","bytes":350345,"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-reference-finder","slug":"craft-reference-finder","name":"Reference Finder","skillName":"reference-finder","type":"skill","status":"draft","stream":"craft","category":"style-refs","tags":["references","moodboard","research","shot.cafe","film-grab","eyecannndy","deep-links","prompting","cinematic"],"summary":"Pointer-only reference search: deep links to shot.cafe, film-grab and eyecannndy — never the frames.","description":"Given a shot spec or a technique card, returns human deep links (shot.cafe tag pages, film-grab searches, eyecannndy technique pages; ShotDeck and Film Vibes for subscribers) together with the card's own words — metadata and links, never image bytes. It follows the FrameThrower MCP contract, 'a discovery and reference tool, not an image-delivery pipe': URLs are built from patterns verified on 2026-10-26, and the agent never fetches or crawls the galleries, whose terms forbid scraping and commercial reuse and whose robots rules shut out AI crawlers (shot.cafe disallows ClaudeBot). Users who keep their own boards can connect Savee or Eagle over MCP instead.","useWhen":["User wants to see real examples of a technique before prompting","Building a link moodboard for a client deck","Checking what a named framing usually looks like"],"notFor":["Downloading, embedding or feeding film stills to a model","Training or style-cloning from gallery images","'In the style of' a living filmmaker"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills","repo":"vargHQ/skills","path":"reference-finder","license":"MIT"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli","openclaw","mcp","varg-studio"],"cost":{"note":"Free — returns links only; no varg calls."},"runtime":"Seconds","refs":[{"role":"link","label":"shot.cafe tag pages","kind":"link","url":"https://shot.cafe/tag/low-angle","license":"link-only","note":"Pattern https://shot.cafe/tag/<tag> (spaces as %20). Personal, non-commercial terms; robots.txt disallows ClaudeBot — humans click, the agent never fetches"},{"role":"link","label":"film-grab search","kind":"link","url":"https://film-grab.com/?s=anamorphic","license":"link-only","note":"Pattern https://film-grab.com/?s=<query>. Fair-dealing gallery; the operator rejects AI and bots"},{"role":"link","label":"eyecannndy technique pages","kind":"link","url":"https://eyecannndy.com/technique/dolly-zoom","license":"link-only","note":"Pattern https://eyecannndy.com/technique/<slug>; Cloudflare blocks automated requests (403)"},{"role":"link","label":"ShotDeck","kind":"link","url":"https://shotdeck.com","license":"link-only","note":"Subscription; images for reference and internal use only; no public search URL verified — link the site and let the user search"},{"role":"link","label":"Film Vibes","kind":"link","url":"https://filmvibes.io","license":"link-only","note":"Search runs in-app with no shareable search URL; non-commercial reference use only"},{"role":"link","label":"FrameThrower MCP (third-party)","kind":"link","url":"https://mcpservers.org/servers/framethrower-ai-mcp","license":"link-only","note":"Returns metadata, a thumbnail URL and a deep link; runs on the user's own account and credits"},{"role":"link","label":"Savee","kind":"link","url":"https://savee.com","license":"link-only","note":"Savee MCP reads the user's own boards (Pro and Team plans)"},{"role":"link","label":"Eagle","kind":"link","url":"https://en.eagle.cool/","license":"link-only","note":"Local asset library with an MCP and skill; the user's own files"}],"files":["SKILL.md","references/url-patterns.md","references/site-rules.md","references/frame-contract.md","scripts/build-links.ts","evals/evals.json"],"version":"0.1.0","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":120,"text":"refs low-angle → 3 links"},"legal":"Pointers only — no film stills or clips bundled. Links are for humans; the agent never crawls, scrapes or hotlinks gallery images.","techniques":["extreme-wide-shot","wide-shot","full-shot","medium-shot","medium-close-up","close-up","extreme-close-up","insert-shot","eye-level","low-angle","high-angle","overhead-shot","worms-eye","dutch-angle","over-the-shoulder","pov-shot","aerial-view","wide-angle-lens","telephoto-compression","macro-lens","fisheye-lens","anamorphic-lens","shallow-depth-of-field","deep-focus","rack-focus","tilt-shift","split-diopter","static-shot","pan","tilt","dolly-in","dolly-out","truck","pedestal","zoom-in","crash-zoom","dolly-zoom","crane-up","orbit","arc-shot","tracking-shot","handheld","whip-pan","drone-flyover","fpv-drone","bullet-time","snorricam","push-through","turntable","golden-hour","blue-hour","low-key","high-key","rembrandt-lighting","hard-side-light","rim-light","silhouette","window-light","practical-lighting","volumetric-light","teal-and-orange","bleach-bypass","day-for-night","black-and-white","print-film-emulation","film-grain","halation","limited-palette","faded-film","hard-cut","match-cut","jump-cut","smash-cut","shot-reverse-shot","cross-dissolve","whip-transition","j-l-cut","speed-ramp","slow-motion","one-take","rule-of-thirds","center-symmetry","leading-lines","frame-within-frame","negative-space","foreground-layering","two-shot","lead-room","widescreen-letterbox","cowboy-shot","medium-wide-shot","choker-shot","master-shot","profile-shot","three-quarter-angle","hip-level","shoulder-level","trunk-shot","fourth-wall","head-on-shot","masked-pov","ultra-wide-lens","normal-lens","vintage-lens","lens-flare","chromatic-aberration","vignette","magnifier-shot","kaleidoscope-lens","refraction-shot","omnidirectional-camera","steadicam","walk-and-talk","side-tracking","low-tracking","vehicle-tracking","chase-shot","follow-from-behind","slider-shot","pass-by","aerial-push-in","earth-zoom","infinite-zoom","hyperlapse","whip-tilt","camera-roll","double-dolly","locked-on","car-mount","cabin-mount","road-rush","falling-camera","parallax-move","wandering-camera","found-footage","hero-cam","three-point-lighting","kicker-light","hair-light","eye-light","butterfly-lighting","loop-lighting","short-lighting","broad-lighting","chiaroscuro","motivated-lighting","available-light","bounce-light","soft-light","top-light","under-lighting","cross-lighting","firelight","neon-lighting","dappled-light","gobo-lighting","cameo-lighting","epiphany-light","spotlight","glam-lighting","frontal-lighting","night-for-night","moonlight","underwater-light","fluorescent-light","sodium-vapor","flashlight-beam","strobe-flash","projected-light","colored-gels","film-noir-lighting","expressionist-shadows","rain","fog","snow","wet-down","dust-motes","sparks-embers","smoke","steam","dust-storm","sepia-tone","desaturated-grade","hyper-saturated","cool-blue-grade","warm-amber-grade","cross-processing","tungsten-balance","natural-grade","color-shift","vhs-camcorder","overexposed-look","light-leak","bloom-glow","technicolor-look","mixed-color-temperature","infrared","thermal-vision","night-vision","x-ray-look","cross-cutting","montage","rhythmic-montage","intellectual-montage","fade-to-black","wipe","iris-transition","split-screen","match-split","axial-cut","invisible-cut","flash-cut","quick-cuts","set-transition","conveyor-transition","mask-transition","object-portal","morph-transition","datamosh","double-exposure","cinemagraph","wigglegram","echo-print","slit-scan","step-printing","low-shutter-blur","time-lapse","fast-motion","reverse-motion","freeze-frame","stutter","boomerang","seamless-loop","stop-motion","eyeline-match","180-degree-rule","30-degree-rule","reaction-shot","flashback","voiceover","diegetic-sound","non-diegetic-score","ambient-sound","foley","dramatic-silence","stinger","walla","mickey-mousing","acousmatic-sound","three-shot","group-shot","clean-single","interview-framing","video-portrait","duplication","screen-in-screen","shadow-box","forced-perspective","scale-shift","reflection-shot","tableau","void-space","voyeur-framing","headroom","golden-ratio","asymmetrical-balance","diagonal-composition","triangular-composition","repetition-pattern","figure-ground","tonal-contrast","aspect-ratio-switch","academy-ratio","imax-frame"],"adds":"tool","media":{"type":"none","reason":"Pointer-only skill: its output is deep links plus the card's own words, never frames. Any film still on the card would show something the skill does not deliver, and the galleries it links to (shot.cafe, film-grab, eyecannndy, ShotDeck) forbid scraping and reuse. The openly licensed shots that fit are already used on the vocabulary-pack cards, so the drawn mockup stays.","searched":["Blender open movies under CC BY: Tears of Steel, Sintel, Big Buck Bunny, Elephants Dream (Blender mirror of download.blender.org, archive.org, Wikimedia Commons)","the skill's description and output contract (links and metadata only)"],"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-model-adapters","slug":"craft-model-adapters","name":"Model Prompt Adapters","skillName":"model-adapters","type":"skill","status":"draft","stream":"craft","category":"prompting","tags":["prompting","adapters","veo","gemini-omni","kling","seedance","hailuo","luma","runway","wan","freshness"],"summary":"Dated syntax adapters for Veo / Gemini Omni, Kling 3, Seedance 2.x, Hailuo 2.3, Luma Ray and Runway Gen-4.5.","description":"The per-model layer behind Cinematic Grammar, also usable on its own to port a prompt: element order (camera first for Veo, Luma and Runway; subject first for Kling and Seedance), bracket meaning (camera on Hailuo, shot labels on Kling, timestamps on Veo, sound on Seedance), negatives (positive-only for Luma and Runway, no 'no'/'don't' on Veo, constraint sentences on Seedance) and the rewriters to switch off for exact camera work (`prompt_expansion_mode: \"disabled\"` on MiniMax H3 Max routes, `enable_prompt_expansion: false` on Wan 3). Hailuo's bracket commands are documented for Hailuo 2.3 and 02, while varg serves MiniMax H3, whose examples use plain-language camera, so on H3 the compiler falls back to Kling-style prose. Every adapter file is dated and regenerated from the varg catalog: the Sora 2 API closed on 2026-09-24, Veo 3.1 Preview left the Gemini API on 2026-10-22 (varg routes `veo_3_1` through fal; Google points to Gemini Omni Flash), Kling 4.0 was switched off on varg on 2026-10-22, and Luma and Runway adapters serve prompts users take to those tools, since neither is in the varg catalog.","useWhen":["Porting a prompt from one video model to another","A model ignores the camera direction — check element order, brackets and rewriter settings","A model was added to or removed from the varg catalog"],"notFor":["Inventing syntax a provider has not documented","Sora 2 (API shut down 2026-09-24)"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills","repo":"vargHQ/skills","path":"model-adapters","license":"MIT"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli","openclaw","mcp","varg-studio"],"models":["veo_3_1","veo_3_1_fast","veo_3_1_lite","omni_flash_1_1","kling_v3","kling_v3_standard","seedance_2_5","seedance_2","seedance_2_fast_preview","minimax_h3","minimax_h3_max","minimax_h3_max_turbo","wan_3"],"cost":{"note":"Free — text only."},"runtime":"Seconds","refs":[{"role":"link","label":"Google video prompt guide (updated 2026-10-22)","kind":"link","url":"https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/video/video-gen-prompt-guide","license":"link-only","note":"Veo and Gemini Omni vocabulary; describe exclusions without 'no'/'don't'"},{"role":"link","label":"Veo 3.1 prompting guide","kind":"link","url":"https://cloud.google.com/blog/products/ai-machine-learning/ultimate-prompting-guide-for-veo-3-1","license":"link-only","note":"Cinematography + subject + action + context + style; timestamps and SFX:"},{"role":"link","label":"Kling camera control guide (2026-08-13)","kind":"link","url":"https://kling.ai/blog/kling-ai-camera-control-video-guide","license":"link-only","note":"Subject + camera move + purpose; one main move per shot"},{"role":"link","label":"Kling multi-shot guide","kind":"link","url":"https://kling.ai/blog/kling-video-3-multi-shot-guide","license":"link-only","note":"'[Shot 1: Wide shot]' labels, up to 6 shots"},{"role":"link","label":"Seedance 2.5 prompt guide","kind":"link","url":"https://docs.volcengine.com/docs/ark/seedance-2-5-prompt-guide?lang=zh","license":"link-only","note":"推/拉/摇/移/跟/环绕 … usable directly; niche terms as term + description; timestamps allowed"},{"role":"link","label":"Seedance 2.0 prompt guide","kind":"link","url":"https://docs.volcengine.com/docs/ark/seedance-2-0-prompt-guide?lang=zh","license":"link-only","note":"One move per shot; 镜头 N labels without per-shot seconds; constraint sentences"},{"role":"link","label":"MiniMax video API: camera commands","kind":"link","url":"https://platform.minimax.io/docs/api-reference/video-generation-t2v","license":"link-only","note":"Hailuo 2.3 / 02 / T2V-01-Director only"},{"role":"link","label":"Luma camera movement prompts (2026-08-19)","kind":"link","url":"https://lumalabs.ai/news/ai-camera-movement-prompts","license":"link-only","note":"Camera movement first; slowly / smoothly / gradually"},{"role":"link","label":"Luma API: camera motions and concepts","kind":"link","url":"https://docs.lumalabs.ai/docs/video-generation","license":"link-only","note":"camera_motion/list strings; concepts [{\"key\": \"dolly_zoom\"}]"},{"role":"link","label":"Runway AI camera prompts (2026-08-21)","kind":"link","url":"https://runway.com/resources/ai-camera-prompts","license":"link-only","note":"Shot size → angle → move → subject → lens → light → reveal"},{"role":"link","label":"OpenAI video generation (Sora 2 shutdown notice)","kind":"link","url":"https://developers.openai.com/api/docs/guides/video-generation","license":"link-only","note":"Sora 2 models and Videos API shut down 2026-09-24"},{"role":"link","label":"Gemini API video docs (Veo 3.1 Preview shutdown)","kind":"link","url":"https://ai.google.dev/gemini-api/docs/video","license":"link-only","note":"Preview models shut down 2026-10-22; migrate to gemini-omni-1.1-flash"}],"files":["SKILL.md","references/models/veo_3_1.md","references/models/omni_flash_1_1.md","references/models/kling_v3.md","references/models/seedance_2_5.md","references/models/seedance_2.md","references/models/minimax_h3_max.md","references/models/wan_3.md","references/external/hailuo-2.3.md","references/external/luma-ray.md","references/external/runway-gen-4.5.md","references/old-patterns.md","scripts/sync-from-catalog.ts","evals/evals.json"],"version":"0.1.0","addedAt":"2026-10-26","preview":{"kind":"terminal","hue":90,"text":"[Push in] → push-in"},"legal":"Pointers only — no film stills or clips bundled.","adds":"tool","media":{"type":"none","reason":"Its output is per-model prompt text (element order, bracket meaning, negatives, rewriter switches), not footage. An openly licensed shot would only repeat the camera-move preview, and showing the same clause rendered by Veo, Kling or Seedance would need paid model runs, which are out of bounds here.","searched":["Blender open movies under CC BY: Tears of Steel, Sintel, Big Buck Bunny, Elephants Dream (Blender mirror of download.blender.org, archive.org, Wikimedia Commons)","the skill's description (adapter files are text)","craft stream rules (no model renders)"],"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-reference-breakdown","slug":"craft-reference-breakdown","name":"Reference Breakdown","skillName":"reference-breakdown","type":"skill","status":"draft","stream":"craft","category":"prompting","tags":["references","image-analysis","shot-spec","look-matching","prompting"],"summary":"Turn a frame you have rights to into a shot spec — size, angle, lens, light, palette — plus prompt variants.","description":"The popular 'still → reverse-engineer the lens, light, color temperature and composition → prompt variants' loop, done safely: the user supplies a frame they have rights to, and the skill describes it in technique-card ids and writes a shot spec plus variants per model. The image is analyzed in the session only — never stored in the skill and never sent to a generation provider by the skill — and the output is words and card ids, not a copy of the frame. Draft until the rights-attestation step and the evals are built.","useWhen":["User uploads their own photo or frame and asks how to get that look","Matching a new shot to a campaign frame the user owns"],"notFor":["Film stills the user does not own as image-to-video inputs","Recreating a specific film scene, character or actor"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills","repo":"vargHQ/skills","path":"reference-breakdown","license":"MIT"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli","openclaw","mcp","varg-studio"],"models":["seedance_2_5","kling_v3","veo_3_1","omni_flash_1_1","nano_banana_2_1"],"cost":{"note":"Free to analyze; any generation it proposes is billed in varg credits after estimate_cost."},"refs":[{"role":"style","label":"User-supplied reference frame","kind":"image","license":"user-supplied","note":"Analyzed in-session after a rights attestation; never stored and never auto-sent to a provider"}],"files":["SKILL.md","references/breakdown-checklist.md","references/rights-attestation.md","references/variant-strategy.md","evals/evals.json"],"version":"0.0.1","addedAt":"2026-10-26","preview":{"kind":"cards","hue":55,"text":"still → shot spec"},"legal":"Pointers only — no film stills or clips bundled. User frames are analyzed in-session under the user's rights warranty and never kept.","techniques":["extreme-wide-shot","wide-shot","full-shot","medium-shot","medium-close-up","close-up","extreme-close-up","insert-shot","eye-level","low-angle","high-angle","overhead-shot","worms-eye","dutch-angle","over-the-shoulder","pov-shot","aerial-view","wide-angle-lens","telephoto-compression","macro-lens","fisheye-lens","anamorphic-lens","shallow-depth-of-field","deep-focus","rack-focus","tilt-shift","split-diopter","static-shot","pan","tilt","dolly-in","dolly-out","truck","pedestal","zoom-in","crash-zoom","dolly-zoom","crane-up","orbit","arc-shot","tracking-shot","handheld","whip-pan","drone-flyover","fpv-drone","bullet-time","snorricam","push-through","turntable","golden-hour","blue-hour","low-key","high-key","rembrandt-lighting","hard-side-light","rim-light","silhouette","window-light","practical-lighting","volumetric-light","teal-and-orange","bleach-bypass","day-for-night","black-and-white","print-film-emulation","film-grain","halation","limited-palette","faded-film","hard-cut","match-cut","jump-cut","smash-cut","shot-reverse-shot","cross-dissolve","whip-transition","j-l-cut","speed-ramp","slow-motion","one-take","rule-of-thirds","center-symmetry","leading-lines","frame-within-frame","negative-space","foreground-layering","two-shot","lead-room","widescreen-letterbox","cowboy-shot","medium-wide-shot","choker-shot","master-shot","profile-shot","three-quarter-angle","hip-level","shoulder-level","trunk-shot","fourth-wall","head-on-shot","masked-pov","ultra-wide-lens","normal-lens","vintage-lens","lens-flare","chromatic-aberration","vignette","magnifier-shot","kaleidoscope-lens","refraction-shot","omnidirectional-camera","steadicam","walk-and-talk","side-tracking","low-tracking","vehicle-tracking","chase-shot","follow-from-behind","slider-shot","pass-by","aerial-push-in","earth-zoom","infinite-zoom","hyperlapse","whip-tilt","camera-roll","double-dolly","locked-on","car-mount","cabin-mount","road-rush","falling-camera","parallax-move","wandering-camera","found-footage","hero-cam","three-point-lighting","kicker-light","hair-light","eye-light","butterfly-lighting","loop-lighting","short-lighting","broad-lighting","chiaroscuro","motivated-lighting","available-light","bounce-light","soft-light","top-light","under-lighting","cross-lighting","firelight","neon-lighting","dappled-light","gobo-lighting","cameo-lighting","epiphany-light","spotlight","glam-lighting","frontal-lighting","night-for-night","moonlight","underwater-light","fluorescent-light","sodium-vapor","flashlight-beam","strobe-flash","projected-light","colored-gels","film-noir-lighting","expressionist-shadows","rain","fog","snow","wet-down","dust-motes","sparks-embers","smoke","steam","dust-storm","sepia-tone","desaturated-grade","hyper-saturated","cool-blue-grade","warm-amber-grade","cross-processing","tungsten-balance","natural-grade","color-shift","vhs-camcorder","overexposed-look","light-leak","bloom-glow","technicolor-look","mixed-color-temperature","infrared","thermal-vision","night-vision","x-ray-look","cross-cutting","montage","rhythmic-montage","intellectual-montage","fade-to-black","wipe","iris-transition","split-screen","match-split","axial-cut","invisible-cut","flash-cut","quick-cuts","set-transition","conveyor-transition","mask-transition","object-portal","morph-transition","datamosh","double-exposure","cinemagraph","wigglegram","echo-print","slit-scan","step-printing","low-shutter-blur","time-lapse","fast-motion","reverse-motion","freeze-frame","stutter","boomerang","seamless-loop","stop-motion","eyeline-match","180-degree-rule","30-degree-rule","reaction-shot","flashback","voiceover","diegetic-sound","non-diegetic-score","ambient-sound","foley","dramatic-silence","stinger","walla","mickey-mousing","acousmatic-sound","three-shot","group-shot","clean-single","interview-framing","video-portrait","duplication","screen-in-screen","shadow-box","forced-perspective","scale-shift","reflection-shot","tableau","void-space","voyeur-framing","headroom","golden-ratio","asymmetrical-balance","diagonal-composition","triangular-composition","repetition-pattern","figure-ground","tonal-contrast","aspect-ratio-switch","academy-ratio","imax-frame"],"adds":"tool","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/6893190ffb88/craft-reference-breakdown.webp","w":960,"h":401,"blur":"data:image/webp;base64,UklGRsAAAABXRUJQVlA4ILQAAAAwBACdASogAA4APtFUo0uoJKMhsAgBABoJQBdgMYtXRlgfG1SRANFRvAAA/vbrdYf3ZjSj4rU1UguAi75AY+vfeFD4w68DesUTgxYd07GTf9BZdhN4J+FqX4Fqc74xo5vn6dopWyW+wAlk+5zl6Cj6HkBgrLSfij3i2A35ywakLzigqarPLvv9id4ocgSQw3UoxM+i8Wxv6k73j4xwnMxpOlPHpRUrbM04PNAO7gE746oAAAA=","source":"https://mango.blender.org/","page":"https://mango.blender.org/","credit":"Tears of Steel (CC BY 3.0) — (CC) Blender Foundation | mango.blender.org","rights":"cc-by","note":"The kind of frame Reference Breakdown starts from, one you have rights to: an eye-level close-up on a long lens, warm backlight rimming the hair, a soft frontal key, a bokeh background and an out-of-focus foreground object in an amber-brown palette. The skill's own output is a shot spec in words and card ids, not this image. Tears of Steel (2012) frame at 09:15.4, 720p release from the Blender mirror (download.blender.org/demo/movies/ToS), full 2.40:1 frame.","bytes":19294,"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-shot-qa","slug":"craft-shot-qa","name":"Shot QA","skillName":"shot-qa","type":"skill","status":"draft","stream":"craft","category":"camera","tags":["qa","review","video-analyze","camera-moves","evals","contact-sheet"],"summary":"Check a generated clip against its shot spec — did it dolly in, hold the angle, end on the right frame?","description":"A review step after generation: the clip goes to varg `video-analyze` with a focus prompt built from the shot spec (move, direction, end frame, size, angle, light), and the skill grades each field pass or fail before anyone pays for more takes, plus a contact sheet for a human check. CameraBench's open camera-motion classifiers could make the move check automatic, but its license is listed as NOASSERTION, so the skill only links to it until that is cleared. Draft until the rubric and a gold set exist.","useWhen":["After a generation, before approving or re-rolling","Comparing the same shot spec across models"],"notFor":["Taste judgments without a shot spec","Clips over 100 MB (the video-analyze limit)"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills","repo":"vargHQ/skills","path":"shot-qa","license":"MIT"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli","openclaw","mcp","varg-studio"],"models":["video-analyze"],"requires":["varg API key or varg MCP sign-in","ffmpeg (contact sheet)"],"cost":{"note":"Each check is one varg video-analyze call, billed in credits — estimate first."},"refs":[{"role":"link","label":"varg video-analyze spec","kind":"link","url":"https://varg.ai/models/video-analyze.md","license":"link-only","note":"Public https video URL up to 100 MB; optional focus prompt"},{"role":"link","label":"CameraBench (camera-motion taxonomy and classifiers)","kind":"link","url":"https://linzhiqiu.github.io/papers/camerabench/","license":"link-only","note":"Repository license NOASSERTION — do not bundle weights until cleared"}],"files":["SKILL.md","references/rubric.md","references/focus-prompts.md","scripts/contact-sheet.ts","evals/gold-set.json","evals/evals.json"],"version":"0.0.1","addedAt":"2026-10-26","preview":{"kind":"grid","hue":140,"text":"dolly-in ✓ end frame ✓"},"legal":"Pointers only — no film stills or clips bundled.","techniques":["static-shot","pan","tilt","dolly-in","dolly-out","truck","pedestal","zoom-in","crash-zoom","dolly-zoom","crane-up","orbit","arc-shot","tracking-shot","handheld","whip-pan","drone-flyover","fpv-drone","bullet-time","snorricam","push-through","turntable","extreme-wide-shot","wide-shot","full-shot","medium-shot","medium-close-up","close-up","extreme-close-up","insert-shot","eye-level","low-angle","high-angle","overhead-shot","worms-eye","dutch-angle","over-the-shoulder","pov-shot","aerial-view","cowboy-shot","medium-wide-shot","choker-shot","master-shot","profile-shot","three-quarter-angle","hip-level","shoulder-level","trunk-shot","fourth-wall","head-on-shot","masked-pov","steadicam","walk-and-talk","side-tracking","low-tracking","vehicle-tracking","chase-shot","follow-from-behind","slider-shot","pass-by","aerial-push-in","earth-zoom","infinite-zoom","hyperlapse","whip-tilt","camera-roll","double-dolly","locked-on","car-mount","cabin-mount","road-rush","falling-camera","parallax-move","wandering-camera","found-footage","hero-cam"],"adds":"tool","media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/b6fd5dd15fb7/craft-shot-qa.webp","w":960,"h":600,"blur":"data:image/webp;base64,UklGRu4AAABXRUJQVlA4IOIAAAAQBgCdASogABQAPtFepU6oJSMiKAqpABoJZwDH5ywTqATkiH8OnTxvJ7+3lw2XUw+EYjuUvJHCCIAA/t2Q4v6zOGIUuGQmoCSAgeQSJfTWAs7riEK+NU61BANPIbV61ZQrLYVFOBJhNFPBLOP/2zuCIcgZTIhN82JBVmmN57stztXM34jLZMHONru/nK5x7VYce/a5zFSN6/WaFKF6XJyHDBvsjE/adbVMpHCBZZrVeop2iN0apy3DbyvbPHgTMU/jRbZazpQegEfQ3eImt/iGZH2ZzveDlAauG8FOnSkcAAAA","source":"https://mango.blender.org/","page":"https://mango.blender.org/","credit":"Tears of Steel (CC BY 3.0) — (CC) Blender Foundation | mango.blender.org","rights":"cc-by","note":"The human-check half of Shot QA: a 12-frame contact sheet (tiled by varg with ffmpeg + ImageMagick, clip-relative timestamps) of a real camera move, a crane-and-push across a pile of robots that ends on a medium shot of Barley, so the move and its end frame can be checked at a glance. No pass/fail grades are drawn: those come from the skill's video-analyze step. Tears of Steel (2012) 11:50.0-12:03.2, 720p release from the Blender mirror (download.blender.org/demo/movies/ToS).","bytes":104858,"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-caption-libraries","slug":"craft-caption-libraries","name":"Caption Pipeline Libraries","type":"ref-pack","status":"draft","stream":"craft","category":"captions","tags":["code-to-video","subtitles","whisper","forced-alignment","srt","libass"],"summary":"Open-source libraries for every caption step: word timing, alignment, SRT/VTT/ASS, in-page or ffmpeg rendering.","description":"A pointer pack for the caption half of a code-to-video pipeline, in the order a render runs: transcribe with word timestamps (whisper.cpp, faster-whisper, WhisperX), tighten timing against a known script (ctc-forced-aligner, Montreal Forced Aligner), read and write SRT, WebVTT and ASS (`@remotion/captions`, subtitle.js, subsrt-ts, ass-compiler, pysubs2), then render the captions in the page (HyperFrames caption components, ASS.js, JASSUB) or burn them in with ffmpeg's libass filters. Licenses, stars and last commits were checked on GitHub on 2026-10-26, and each note flags its trap: CC-BY-NC alignment weights, Remotion's company license on its whisper installer, LGPL/GPL native code inside JASSUB's npm package, FFmpeg build flags. Draft until the pack is published in vargHQ/skills with a manifest.","useWhen":["Picking a transcriber or aligner for word-timed captions","Parsing, converting or styling SRT, VTT or ASS files in code","Choosing between in-page caption rendering and an ffmpeg burn-in","Checking whether a caption library is safe to ship commercially"],"notFor":["Caption looks and motion (use the HyperFrames registry or Remotion Captions)","Hosted speech-to-text APIs (use ElevenLabs Speech to Text)"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills","repo":"vargHQ/skills","path":"packs/caption-libraries","license":"MIT"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli","openclaw","mcp","varg-studio"],"refs":[{"role":"link","label":"whisper.cpp","kind":"link","url":"https://github.com/ggml-org/whisper.cpp","license":"MIT","note":"Local Whisper on CPU, Metal or CUDA; writes SRT, VTT and JSON, `-ml 1` gives experimental word timestamps. Models download from Hugging Face"},{"role":"link","label":"faster-whisper","kind":"link","url":"https://github.com/SYSTRAN/faster-whisper","license":"MIT","note":"CTranslate2 Whisper with `word_timestamps=True` and Silero VAD; the engine under WhisperX and most caption skills"},{"role":"link","label":"WhisperX","kind":"link","url":"https://github.com/m-bain/whisperX","license":"BSD-2-Clause","note":"faster-whisper plus wav2vec2 forced alignment for accurate word times; diarization needs the gated pyannote model and a Hugging Face token. Pin the version"},{"role":"link","label":"openai/whisper","kind":"link","url":"https://github.com/openai/whisper","license":"MIT","note":"Reference implementation; `--word_timestamps True` uses cross-attention, so word times drift on music and long pauses"},{"role":"link","label":"ctc-forced-aligner","kind":"link","url":"https://github.com/MahmoudAshraf97/ctc-forced-aligner","license":"BSD-2-Clause","note":"Aligns a known script or lyrics to audio. Its default MMS-300M model is CC-BY-NC 4.0: choose another model for commercial work"},{"role":"link","label":"Montreal Forced Aligner","kind":"link","url":"https://github.com/MontrealCorpusTools/Montreal-Forced-Aligner","license":"MIT","note":"Kaldi word and phone alignment (TextGrid); for lip-sync-grade timing rather than quick captions"},{"role":"link","label":"@remotion/captions","kind":"link","url":"https://www.remotion.dev/docs/captions","license":"MIT","note":"Caption type, parseSrt, parseVtt, serializeSrt and createTikTokStyleCaptions() paging. The package is MIT; Remotion itself needs a company license above 3 employees"},{"role":"link","label":"@remotion/install-whisper-cpp","kind":"link","url":"https://www.remotion.dev/docs/install-whisper-cpp","license":"Remotion License","note":"installWhisperCpp(), transcribe() and toCaptions() from Node; covered by the Remotion company license, unlike @remotion/captions"},{"role":"link","label":"subtitle.js","kind":"link","url":"https://github.com/gsantiago/subtitle.js","license":"MIT","note":"Stream-based SRT and WebVTT parse, resync, filter and stringify for Node (npm `subtitle`)"},{"role":"link","label":"subsrt-ts","kind":"link","url":"https://github.com/rakuzen25/subsrt-ts","license":"MIT","note":"Dependency-free conversion between SRT, VTT, SBV, SUB, SSA/ASS, SAMI, LRC and JSON; last npm release 2024-04"},{"role":"link","label":"ass-compiler","kind":"link","url":"https://github.com/weizhenye/ass-compiler","license":"MIT","note":"Parses and compiles ASS, including karaoke `\\k` tags, into renderer-friendly data and back; render it with ASS.js, JASSUB or libass"},{"role":"link","label":"ASS.js","kind":"link","url":"https://github.com/weizhenye/ASS","license":"MIT","note":"DOM renderer for ASS over video; best-effort rather than pixel-identical to libass, fine for headless-browser renders"},{"role":"link","label":"JASSUB","kind":"link","url":"https://github.com/ThaUnknown/jassub","license":"MIT (repo); npm bundles LGPL-2.1+ and GPL-2.0+/FTL parts","note":"libass in WebAssembly with WebGL: full ASS rendering in the browser. Needs fallback fonts for CJK"},{"role":"link","label":"libass","kind":"link","url":"https://github.com/libass/libass","license":"ISC","note":"The reference ASS/SSA renderer behind ffmpeg's subtitles and ass filters (FreeType, FriBidi, HarfBuzz)"},{"role":"link","label":"pysubs2","kind":"link","url":"https://github.com/tkarabela/pysubs2","license":"MIT","note":"Python load, edit, retime and save for ASS, SRT, WebVTT, TTML and Whisper output; the easy way to write styled ASS for an ffmpeg burn-in"},{"role":"link","label":"ffsubsync","kind":"link","url":"https://github.com/smacke/ffsubsync","license":"MIT","note":"Re-syncs a subtitle file to the video's audio; fixes global offset and frame-rate drift, not per-word timing"},{"role":"link","label":"FFmpeg subtitles and ass filters","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#subtitles-1","license":"LGPL-2.1-or-later (GPL with --enable-gpl)","note":"Burn captions in with `subtitles=` (any format, force_style, fontsdir) or `ass=` (shaping option for complex scripts); needs a build with --enable-libass"},{"role":"link","label":"FFmpeg whisper filter","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#whisper-1","license":"LGPL-2.1-or-later (GPL with --enable-gpl)","note":"FFmpeg 8 runs whisper.cpp inside the filter graph and writes SRT or JSON; needs --enable-whisper and a ggml model, so most stock builds lack it"},{"role":"link","label":"HyperFrames caption components","kind":"link","url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components","license":"Apache-2.0","note":"17 caption components for GSAP compositions, e.g. caption-pill-karaoke, caption-highlight, caption-kinetic-slam, caption-camera-follow; `hyperframes transcribe` makes the word timings"}],"files":["README.md","refs.manifest.json","LICENSES.md","references/pipeline.md","references/license-traps.md"],"version":"0.0.1","addedAt":"2026-10-26","preview":{"kind":"karaoke","hue":345,"text":"every word on time"},"legal":"Pointers only — no code, models or media bundled. Checked on GitHub on 2026-10-26. Traps: MMS alignment weights (torchaudio MMS_FA, ctc-forced-aligner's default model) are CC-BY-NC 4.0; @remotion/install-whisper-cpp falls under the Remotion License; JASSUB's npm package bundles LGPL and GPL native code; FFmpeg is LGPL or GPL depending on its build. Left out on purpose: aeneas and whisper-timestamped (AGPL-3.0), stable-ts (archived), and JavascriptSubtitlesOctopus, media-captions and @plussub/srt-vtt-parser (unmaintained).","adds":"tool","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/4d8057353740/craft-caption-libraries.mp4","w":720,"h":450,"duration":9.7,"blur":"data:image/webp;base64,UklGRgABAABXRUJQVlA4IPQAAAAQBQCdASogABQAPtFUokuoJKMhsAgBABoJQBOl7/uwAYPgHs3hQ2tn6ojCOORig80YAP7mYuSbAkVTlNoV5MQMfqWylcTuzTPdbBj+RWToDor5gjRXFMEMfLyoOOsn6VJhrHloYOjIWyJhQjJUiOVTzMYPaQEoQT6ipEJPW9kkBWxmwjs0nJ3fai2i8DWuOzBr3t5jkOuiqecmZijDb/w0anMQ7zdg0WOoLjCkEH2meCrZdrjZAFDZC6ATv0yG+skoyD1wx5jibijBF1ZPgyZDXf1uWB8gt2gG1km+jLaX6xH7Mo7wwHgnwT2JQryd32FCC8AA","source":"https://mango.blender.org/","page":"https://mango.blender.org/","credit":"varg captions on Tears of Steel (CC BY 3.0, (CC) Blender Foundation | mango.blender.org)","rights":"generated","note":"Word-timed caption burn, the end of the pack's pipeline, no model run: the film's official English subtitles (TOS-en.srt, lines 17-20, from the Blender mirror) split into pages of up to four words, word onsets set by hand from the audio spectrogram (no ASR run), each page rendered to transparent PNGs in headless Chrome with Montserrat ExtraBold (OFL; active word in an orange box, next words dimmed) and composited with ffmpeg overlay=enable='between(t,a,b)' (this ffmpeg build has no libass). Footage: Tears of Steel 720p (CC BY 3.0, (CC) Blender Foundation | mango.blender.org), 03:16.9-03:26.6, cropped to 16:10; the preview is silent.","bytes":425552,"addedAt":"2026-10-27"}},{"id":"vargHQ/craft-caption-fonts","slug":"craft-caption-fonts","name":"Open Fonts for Captions","type":"ref-pack","status":"draft","stream":"craft","category":"captions","tags":["code-to-video","fonts","typography","ofl","google-fonts","font-loading"],"summary":"12 OFL caption and title families, plus the tools to load, fit, split and subset them so renders never use a fallback.","description":"A pointer pack for type in code-to-video. It names twelve caption-friendly families verified as OFL-1.1 on Google Fonts (Inter, Montserrat, Anton, Bebas Neue, Archivo Black, Poppins, Roboto Flex, JetBrains Mono, Noto Sans with its CJK and Arabic sisters, TikTok Sans, Atkinson Hyperlegible and Oswald), each with the job it does well and its script coverage. Around them sit the tools a render needs: self-hosting with Fontsource or `@remotion/fonts`, gating the first captured frame on `document.fonts.load()` for every face instead of trusting `document.fonts.ready` alone, fitting and trimming text (fitty, Capsize, Pretext), splitting it for kinetic type (GSAP SplitText, Splitting.js, harfbuzzjs for joined scripts) and subsetting with fontTools under the OFL's rules. Draft until the pack ships each font with its license text in vargHQ/skills.","useWhen":["Choosing a caption or title font that is safe to bundle and covers the script","A headless render captured a fallback font or shifted glyphs","Fitting, trimming or splitting text for kinetic type","Subsetting fonts without breaking their license"],"notFor":["Proprietary faces or Adobe Fonts, which cannot be bundled into a render pipeline","Typography direction and timing (use Title & Kinetic Typography or Kinetic Typography)"],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills","repo":"vargHQ/skills","path":"packs/caption-fonts","license":"MIT"},"agents":["claude-code","claude-ai","codex","cursor","gemini-cli","openclaw","mcp","varg-studio"],"refs":[{"role":"font","label":"Inter","kind":"font","url":"https://fonts.google.com/specimen/Inter","license":"OFL-1.1","note":"Neutral screen sans with a tall x-height and a full weight range; reads cleanly at small caption sizes in many languages"},{"role":"font","label":"Montserrat","kind":"font","url":"https://fonts.google.com/specimen/Montserrat","license":"OFL-1.1","note":"Wide geometric shapes and very heavy weights for the bold social-caption look; includes Cyrillic"},{"role":"font","label":"Anton","kind":"font","url":"https://fonts.google.com/specimen/Anton","license":"OFL-1.1","note":"Heavy condensed display face that fits more letters per 9:16 line and holds a stroke well; one weight, no Cyrillic"},{"role":"font","label":"Bebas Neue","kind":"font","url":"https://fonts.google.com/specimen/Bebas+Neue","license":"OFL-1.1","note":"All-caps condensed headline face for title cards and one-word beats; caps only, so not for sentence captions"},{"role":"font","label":"Archivo Black","kind":"font","url":"https://fonts.google.com/specimen/Archivo+Black","license":"OFL-1.1","note":"Very heavy grotesque with open counters that stays legible behind a stroke or shadow on busy footage"},{"role":"font","label":"Poppins","kind":"font","url":"https://fonts.google.com/specimen/Poppins","license":"OFL-1.1","note":"Round geometric sans common in social captions; covers Devanagari for bilingual Hindi videos"},{"role":"font","label":"Roboto Flex","kind":"font","url":"https://fonts.google.com/specimen/Roboto+Flex","license":"OFL-1.1","note":"Width axis squeezes long lines without shrinking them; the grade axis changes weight without changing width, so an active-word highlight never reflows the line"},{"role":"font","label":"JetBrains Mono","kind":"font","url":"https://fonts.google.com/specimen/JetBrains+Mono","license":"OFL-1.1","note":"Monospace for code, terminal and data captions; fixed advances keep typewriter reveals from jittering"},{"role":"font","label":"Noto Sans (+ JP, SC, KR, Arabic)","kind":"font","url":"https://fonts.google.com/specimen/Noto+Sans","license":"OFL-1.1","note":"Broadest script coverage: put the matching Noto family in the fallback stack so multilingual captions never show tofu. Noto CJK reserves the font name 'Source', so rename modified subsets"},{"role":"font","label":"TikTok Sans","kind":"font","url":"https://fonts.google.com/specimen/TikTok+Sans","license":"OFL-1.1","note":"Open-source typeface from TikTok with width and optical-size axes, on Google Fonts since 2025-07-09; the font is OFL, TikTok's trademarks are not"},{"role":"font","label":"Atkinson Hyperlegible","kind":"font","url":"https://fonts.google.com/specimen/Atkinson+Hyperlegible","license":"OFL-1.1","note":"Designed by the Braille Institute for low-vision readers with clearly distinct letterforms; for accessibility-first captions"},{"role":"font","label":"Oswald","kind":"font","url":"https://fonts.google.com/specimen/Oswald","license":"OFL-1.1","note":"Condensed variable sans with Cyrillic, for when Anton or Bebas Neue lack the Russian glyphs you need"},{"role":"link","label":"Google Fonts library (google/fonts)","kind":"link","url":"https://github.com/google/fonts","license":"per family: OFL-1.1, Apache-2.0 or UFL-1.0","note":"2,016 OFL, 44 Apache and 5 UFL families, each with its own license file; read METADATA.pb before bundling and ship the license text with the font"},{"role":"link","label":"Fontsource","kind":"link","url":"https://fontsource.org","license":"MIT code; each font keeps its own license","note":"Self-host open fonts as npm packages (@fontsource/<font>, @fontsource-variable/<font>) so renders never wait on a font CDN; docs at fontsource.org/llms.txt"},{"role":"link","label":"CSS Font Loading API","kind":"link","url":"https://developer.mozilla.org/en-US/docs/Web/API/CSS_Font_Loading_API","license":"W3C standard","note":"`document.fonts.ready` never fetches faces no element uses yet: `await document.fonts.load('700 64px \"Inter\"')` for each face before the first captured frame"},{"role":"link","label":"@remotion/fonts","kind":"link","url":"https://www.remotion.dev/docs/fonts-api/load-font","license":"MIT (runs inside Remotion, which has its own license)","note":"loadFont() with a self-hosted file; blocks rendering until the face is ready"},{"role":"link","label":"@remotion/google-fonts","kind":"link","url":"https://www.remotion.dev/docs/google-fonts/load-font","license":"Remotion License","note":"Typed loadFont() per Google family; pass explicit weights and subsets, since many requests or big files on slow networks can time out a render"},{"role":"link","label":"Capsize","kind":"link","url":"https://seek-oss.github.io/capsize/","license":"MIT","note":"Trims text boxes to cap height and baseline from font metrics so titles align exactly with shapes and grids"},{"role":"link","label":"fitty","kind":"link","url":"https://rikschennink.github.io/fitty/","license":"MIT","note":"Scales a single line to fill its container; run it after fonts load and before capture"},{"role":"link","label":"Pretext","kind":"link","url":"https://chenglou.me/pretext/","license":"MIT","note":"DOM-free text measurement and line layout for auto-fit and canvas or WebGL text; measure only after fonts load"},{"role":"link","label":"GSAP SplitText","kind":"link","url":"https://gsap.com/docs/v3/Plugins/SplitText/","license":"Standard 'No Charge' GSAP License (not OSI)","note":"Splits text into chars, words and lines with masks; free for commercial use, but barred in no-code visual animation builders that compete with Webflow"},{"role":"link","label":"Splitting.js","kind":"link","url":"https://splitting.js.org","license":"MIT","note":"Word and character spans with CSS index variables for CSS-only staggers; like every DOM splitter it breaks Arabic-script joining"},{"role":"link","label":"harfbuzzjs","kind":"link","url":"https://harfbuzz.github.io/harfbuzzjs/","license":"MIT","note":"HarfBuzz shaping in WebAssembly: shape Arabic, Indic and other complex scripts first, then animate the glyphs"},{"role":"link","label":"opentype.js","kind":"link","url":"https://opentype.js.org","license":"MIT","note":"Glyph outlines as paths for stroke-draw or morph titles; no complex-script shaping"},{"role":"link","label":"fontTools","kind":"link","url":"https://github.com/fonttools/fonttools","license":"MIT","note":"pyftsubset and varLib.instancer for subsets and pinned variable axes. Subsetting counts as modification under the OFL (FAQ 2.6): keep the license and respect Reserved Font Names"}],"files":["README.md","refs.manifest.json","LICENSES.md","fonts/README.md","references/font-loading.md","references/licensing.md"],"version":"0.0.1","addedAt":"2026-10-26","preview":{"kind":"kinetic","hue":75,"text":"Aa"},"legal":"Pointers only — no font files bundled yet. All twelve families were verified as OFL-1.1 on Google Fonts on 2026-10-26; when the pack bundles them, each ships with its OFL.txt, as the skill standard requires. Subsetting is modification under the OFL (FAQ 2.6): keep the license and respect Reserved Font Names such as Noto CJK's 'Source'. TikTok Sans is OFL, but TikTok's trademarks are not licensed with it. GSAP SplitText is free under Webflow's Standard 'No Charge' GSAP License, which is not an OSI license and bars use in no-code visual animation builders that compete with Webflow.","adds":"visual","media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a50bf55b7f37/craft-caption-fonts.mp4","w":720,"h":450,"duration":8,"blur":"data:image/webp;base64,UklGRu4AAABXRUJQVlA4IOIAAABwBQCdASogABQAPtFcqE4oJSQiKAqpABoJYgCdMw6FKC6Gt0cjs4/Qcsm1f+VTsnEYIZgAAP7pkrdlXBWtKRMxZIS3AmNvECqHU5Fwe9Q8wB3e1xby70D4EYx4tPTpWyjri84Pmn37htA1OSYsUfdPGICUJOy4a3MKH1eTz6xHlYSQCdl9rhBissh6j9LL06KKJqJ78U3mcC5A9A2+j/chd16hA3neMUdQTjU8exW/9ce8rPCzmlXIG5WzalbtVEHcBveGVGV6UjV+I0VANTrMzNsuKtT4cYrMNOEf+zv70AAA","source":"https://github.com/google/fonts/tree/main/ofl","page":"https://github.com/google/fonts/tree/main/ofl","credit":"OFL fonts (Google Fonts) set by varg over Tears of Steel (CC BY 3.0, (CC) Blender Foundation | mango.blender.org)","rights":"generated","note":"The pack's twelve families cycling as the same caption line, 0.67 s each: Inter, Montserrat, Anton, Bebas Neue, Archivo Black, Poppins, Roboto Flex (wdth 125), JetBrains Mono, Noto Sans, TikTok Sans, Atkinson Hyperlegible, Oswald, all OFL-1.1 files from github.com/google/fonts, self-hosted in headless Chrome with every face gated on document.fonts.load() before capture, then overlaid with ffmpeg. Backdrop: Tears of Steel 720p (CC BY 3.0, (CC) Blender Foundation | mango.blender.org), 02:43.6-02:51.6, cropped to 16:10. No model run.","bytes":390372,"addedAt":"2026-10-27"}},{"id":"vargHQ/hard-cut","slug":"hard-cut","name":"Hard Cut","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["basic","cut","continuity","ffmpeg","hyperframes","remotion","capcut","moviepy"],"summary":"One shot ends, the next begins on the very next frame. The default join: invisible when the content flows.","description":"Frame N is shot A, frame N+1 is shot B. No overlap, no effect.\n\n**When:** Most joins in any edit. Use it whenever the change of shot is motivated by story, speech or rhythm.\n\n**Watch out:** Two near-identical framings of the same subject cut together read as a mistake (a jump cut) unless you mean it.\n\n**Timing:** 0 frames\n\n**Also called:** straight cut, cut, butt cut\n\n### In FFmpeg\n\nRe-encode with the concat filter (any sources) or losslessly with the concat demuxer (identical codecs).\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]trim=2:5,setpts=PTS-STARTPTS[v0];[0:a]atrim=2:5,asetpts=PTS-STARTPTS[a0];\\\n [1:v]trim=0:3,setpts=PTS-STARTPTS[v1];[1:a]atrim=0:3,asetpts=PTS-STARTPTS[a1];\\\n [v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]\" -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\n```html\n<video id=\"a\" src=\"a.mp4\" data-start=\"0\" data-duration=\"3\" data-media-start=\"2\" data-track-index=\"0\" data-has-audio=\"true\"></video>\n<video id=\"b\" src=\"b.mp4\" data-start=\"a\" data-duration=\"3\" data-track-index=\"0\" data-has-audio=\"true\"></video>\n```\n`data-start=\"a\"` means \"start when clip a ends\".\n\n### In Remotion\n\n```tsx\nimport {Series} from 'remotion';\nimport {Video} from '@remotion/media';\n\n<Series>\n  <Series.Sequence durationInFrames={90}><Video src={staticFile('a.mp4')} trimBefore={60} /></Series.Sequence>\n  <Series.Sequence durationInFrames={90}><Video src={staticFile('b.mp4')} /></Series.Sequence>\n</Series>\n```\n`trimBefore` replaced `startFrom` in v4.0.319.\n\n### In CapCut\n\nPut the playhead on the cut point and Split (Ctrl/Cmd+B on desktop, Split in the bottom toolbar on mobile), delete the unwanted part; clips on the main track snap together.\n\n### In MoviePy\n\n```python\nfrom moviepy import VideoFileClip, concatenate_videoclips\na = VideoFileClip('a.mp4').subclipped(2, 5)\nb = VideoFileClip('b.mp4').subclipped(0, 3)\nconcatenate_videoclips([a, b]).write_videofile('out.mp4')\n```\n\n### Where this comes from\n\n- [FFmpeg filters: concat](https://ffmpeg.org/ffmpeg-filters.html#concat-filter)\n- [FFmpeg formats: concat demuxer](https://ffmpeg.org/ffmpeg-formats.html#concat)\n- [Remotion: <Series>](https://www.remotion.dev/docs/series)\n- [HyperFrames: data attributes](https://hyperframes.heygen.com/concepts/data-attributes)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)","useWhen":["Most joins in any edit. Use it whenever the change of shot is motivated by story, speech or rhythm."],"notFor":["Two near-identical framings of the same subject cut together read as a mistake (a jump cut) unless you mean it."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/cuts.md#hard-cut","repo":"vargHQ/skills","path":"varg-video-edit-library/references/cuts.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)","Python + MoviePy"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"FFmpeg filters: concat","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#concat-filter","license":"link-only"},{"role":"source","label":"FFmpeg formats: concat demuxer","kind":"link","url":"https://ffmpeg.org/ffmpeg-formats.html#concat","license":"link-only"},{"role":"source","label":"Remotion: <Series>","kind":"link","url":"https://www.remotion.dev/docs/series","license":"link-only"},{"role":"source","label":"HyperFrames: data attributes","kind":"link","url":"https://hyperframes.heygen.com/concepts/data-attributes","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Hard Cut"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut","moviepy"],"components":[],"aliases":["straight cut","cut","butt cut"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/5c397ed672a5/take-hard-cut.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAAD7UlEQVR4nBWTy28bVRTG59658/D4OX7FTmI7Tpw0IU5RpCBAtFHpDjYIgUAskArKBlGBhMSSBX8DbJAQEkgskLoAARIKokmaqhFBaSiNk0D8SpzYaezY45mxxzOeey+3m7O5R+c73/l9F3z1/eerq6tYdNvtjkNa6VQqGLUghLsPTABgNpZqnDdMUySUKsgTCAT03jnGmFf8g8HgrTdekCRp5MpppVJBgCdtrTk7saTCwScf3N7Z2fnp7reRSHg5NW1Z1rWl59fW1o4MgpCgqgE2zgHhnt0Pi9HbH3+4/JpVrVZq3e454lHR+PXmO2P5wGw8Hs+omalXpnwY/rm9nU6oxWLRw6Px2EijpzNlNssZOhIV48nYZ59+NLe4WO18vV96ZMNeJjuDwmqYmVqv/jE/n38m/CLg+OvPTU8kpPOT0/6l57h4lB5NdLFsGEaP8NilAA/efvPdufw07TZdIvM0GAxKzVYT2TbBGPTbA8dwJWjxADrAike8xAnXThUM/ZKixlRqdjtqKEYJBjbnlRHn2oBzk/JkP0Q7qNElHOqZjmPTPvXawHegq4SQOCcCn5QaHepTiYd7WnYi1D+uZzITicz05v37PSHS0MjfRei6Qh95e/1c2z7rowAydNeyhq44VbtUvvuLMlI3VO3q1QXFboyPRXUTZcdDnvhNdq/S0RF2HBBM7x1rBcfFrguAJIr+QJgi5ENmlwCgeJSoKIUxeIqWGq1h50mxeFGv12sdLpoiKKhedC1N15EkeWUaCiBxpMV2l3mD1aAvZJom4kFIFAXFZ4uwzdG7EPFuX6+VbKuLz9vOy6++zl7vbe0m41Ek+AuFgqrUfIIniH6hhAp0gDnCm9DnOOil+SELhyg8ZKY4YPGQRxcLJ9XTVPrG9bnFRDLSal2OxcNMU527InnkxpPdSvkM12s2w0RkTAjHMZoYHT6usRxTAodD12G+CM36JpOjGVFWNL0XI9ijyP+dVNmxjw7+yefzuVl1Y+MeEQVJQBzHQShIkmBZfQQlUUCIUCwjkQLCdFLZnNbp6FqbhbD87yH7CkMXbmxuzWcnHaOjqNLCzGyTLwEAvApg/YrXg10Z5aaDrBVwWBR5d6AkE7lUYP7Ln7849lfeu3WLuP3t/cJZTc/lZvxhtXRyVtuqr6ysuIHI+vp62ygwMcu2n1q786MTjcapkoCQF6iasTN39ssHrcmyDsCG5pWgbubG5FWViEb5QbNUwtaguMWPpUJpm5Ya3SHGPertaBr6/TdhafnZju8apRRxzmbZ5RGHRnMWgT88GrL4Cij5vvxYI5UE3YvGOQrkweE3xQLhET/F+HDcQEodnF38DxsTGhOUlZyUAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Big Buck Bunny (2008) + WING IT! (2023)","rights":"cc-by","note":"cut between two shots, with the timeline strip of the edit. Footage: Big Buck Bunny (2008), (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":154060,"addedAt":"2026-10-28"}},{"id":"vargHQ/jump-cut","slug":"jump-cut","name":"Jump Cut","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["talking-head","pace","shorts","vlog","ffmpeg","hyperframes","remotion","capcut"],"summary":"Cut out a stretch inside one continuous shot, so the subject visibly jumps. Removes pauses, adds pace.","description":"Same camera, same framing; the subject pops to a new position or expression and time skips forward.\n\n**When:** Talking heads, vlogs, tutorials and shorts where dead air or filler words must go and speed matters more than polish.\n\n**Watch out:** Tiny jumps (a few pixels of head movement) look like glitches; either jump far enough or hide the cut with a punch-in or B-roll.\n\n**Timing:** Cut on the gap: leave 2–4 frames of silence before the next word\n\n**Also called:** jumpcut, talking-head trim, pause removal\n\n### In FFmpeg\n\nKeep segments [0–3.2 s] and [4.1–8 s] of one take (times from silencedetect or a transcript):\n```bash\nffmpeg -i take.mp4 -af silencedetect=noise=-35dB:d=0.4 -f null - 2>&1 | grep silence_\nffmpeg -i take.mp4 -filter_complex \\\n\"[0:v]split[s1][s2];[0:a]asplit[t1][t2];\\\n [s1]trim=0:3.2,setpts=PTS-STARTPTS[v1];[t1]atrim=0:3.2,asetpts=PTS-STARTPTS[a1];\\\n [s2]trim=4.1:8,setpts=PTS-STARTPTS[v2];[t2]atrim=4.1:8,asetpts=PTS-STARTPTS[a2];\\\n [v1][a1][v2][a2]concat=n=2:v=1:a=1[v][a]\" -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\nSame source, two clips, independent `data-media-start`:\n```html\n<video id=\"p1\" src=\"take.mp4\" data-start=\"0\" data-duration=\"3.2\" data-media-start=\"0\" data-track-index=\"0\" data-has-audio=\"true\"></video>\n<video id=\"p2\" src=\"take.mp4\" data-start=\"p1\" data-duration=\"3.9\" data-media-start=\"4.1\" data-track-index=\"0\" data-has-audio=\"true\"></video>\n```\n\n### In Remotion\n\nTwo `<Series.Sequence>` of the same file with different `trimBefore` values (in frames).\n```tsx\n<Series>\n  <Series.Sequence durationInFrames={96}><Video src={take} /></Series.Sequence>\n  <Series.Sequence durationInFrames={117}><Video src={take} trimBefore={123} /></Series.Sequence>\n</Series>\n```\n\n### In CapCut\n\nSplit around each pause and delete it; on desktop the transcript-based editing tools can mark pauses and filler words for removal (names vary by version).\n\n### Where this comes from\n\n- [Wikipedia: jump cut](https://en.wikipedia.org/wiki/Jump_cut)\n- [FFmpeg filters: trim](https://ffmpeg.org/ffmpeg-filters.html#trim)\n- [HyperFrames: HTML schema](https://hyperframes.heygen.com/reference/html-schema)\n- [Remotion: <OffthreadVideo> (trimBefore)](https://www.remotion.dev/docs/offthreadvideo)","useWhen":["Talking heads, vlogs, tutorials and shorts where dead air or filler words must go and speed matters more than polish."],"notFor":["Tiny jumps (a few pixels of head movement) look like glitches; either jump far enough or hide the cut with a punch-in or B-roll."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/cuts.md#jump-cut","repo":"vargHQ/skills","path":"varg-video-edit-library/references/cuts.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"Wikipedia: jump cut","kind":"link","url":"https://en.wikipedia.org/wiki/Jump_cut","license":"link-only"},{"role":"source","label":"FFmpeg filters: trim","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#trim","license":"link-only"},{"role":"source","label":"HyperFrames: HTML schema","kind":"link","url":"https://hyperframes.heygen.com/reference/html-schema","license":"link-only"},{"role":"source","label":"Remotion: <OffthreadVideo> (trimBefore)","kind":"link","url":"https://www.remotion.dev/docs/offthreadvideo","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Jump Cut"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":[],"aliases":["jumpcut","talking-head trim","pause removal"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/c4027cc6cd21/take-jump-cut.mp4","w":640,"h":400,"duration":3.8,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADt0lEQVR4nB2T2W8bVRTG7zaLZ83YmdhObFJnaVHcpAJaUCkViEqFN8Qbygvin6tQaSQW8cATeaGooY4IDaIB27HHcrzFuz2e7d7LuOf56HfO933nwK+/3BdFERPFtm1D0+v1mnd9jhDuhfLFv45qrSmqoiB37s5T5qqmqViwCMGMgbgIBAIRAOa1Wo1EHCTNlY8//2ZrqzBoDWXzvFIae54Hp4uDnd2btx86jvP87AVEZH1NNYwUAzKCkKJEDMLUXfIg8ANKOsNwp1jYy2/Wy5f9aiUnScHG9qA/wFHn00ePbhQ+KJVePn/153Q25wwQLAaBhwiBb0AIiBBCL1jiyNDl23vvgWCBaaCL1PeGkmpvpfLnbunsVeWqOR+NRrHS5eCQ2aaFeBTvO2CYMx5DDcNwPRqLJfaq1ahf7ulKo/K622rEQmSVaJqGACMYTAZDwNjbdvIq9LGADFP3Per6XBAkzjmOBMC474UYCSSbL/z24uWddDqby2sE9Tu9ZrsaBMGKYfj+LG3mF+5iVdenYl8Hw3/++KUxQDs7u4KyNAclEuPx2IPSjGHyxf37x8fHDae1eWPz91JpPJm0hwHG2DaNcBFV5s5kMgEszNhmSko2nMbaCrWIy5R1SikPo+Kt4ocPPjp6dkTGvU5KV598f3R4eJi7dbt5cnJNcdbONK7agih60TT2QsU8aSSC3uKTdx66GohFBYaxTJaAlLXarlZsVSFPf/ypWCz6NHx69Mw25Wq1OpYsOpogLo46I2FxncvlTFmIgDCd9OMry2wXwzDiFhZlBcJIkiRL11Y0nfSx/ld7LNvZi//KnV6k67oACWNscN2Ns7iZzemKFkHgcTwHEfPdZKUmCOTc7cqybIj4SiR4pl01Lknh4P044GjSFxQ1wV1T0e7tHqiq9u0P36Us892D/dPTU4lF0+Egs7YRGzzxZ91G17Hw+sbGaeW1ba8aCMSWE83r9Fq1dDJ53WoBJHsMvGUookC++uxxvBfkNFj4BqPLN3IjVVWbzJ/LkgT436dnLQ5maDFp1zLpNEmAuQrnmrIW+u5cFgLPq9SrhUIhq2JKYbs7zOeyUUQjyvT1pOPUm922aZoK0YA/k2WBLgaKJMgiIT+f9FKpfHu2ybMyJYhj/Gt3VpYsg6TiXKYjAeEN3TCns+nFEE2Baefu9iAcRTNz/17CZ5RGggjavk8qDrC374zUB7IGEPTffBBpRpEDMVPZ3cSTTMZO83IM5QhBBAHzOGcQIs6vCeRxPyNauVz7H/Dl8i5aDlCJAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Tears of Steel (2012)","rights":"cc-by","note":"jump between two shots, with the timeline strip of the edit. Footage: Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0.","bytes":195017,"addedAt":"2026-10-28"}},{"id":"heygen-com/jump-zoom-punch-in","slug":"jump-zoom-punch-in","name":"Jump-Zoom Punch-In","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["talking-head","punch-in","zoom","shorts","youtube","ffmpeg","hyperframes","remotion","capcut"],"summary":"Hide a jump cut by scaling the next segment 110–130%. Reads as a second camera angle in talking heads.","description":"Built on [Camera Punch-In](https://github.com/heygen-com/hyperframes/tree/main/registry/components/yt-camera-move) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nAfter the cut the same shot is suddenly tighter (or wider), so the jump feels like a deliberate camera change.\n\n**When:** Every 2–3 jump cuts in a talking head, on emphasis words, punchlines or a change of point.\n\n**Watch out:** Punching past ~130% on 1080p footage shows softness; alternate in and out rather than zooming tighter every time.\n\n**Timing:** Instant (0 frames) or a 3–6 frame ease into the new scale\n\n**Also called:** punch-in, zoom cut, digital zoom cut, punch in on a jump cut\n\n### In FFmpeg\n\nStatic 125% punch-in on the second segment (crop keeps the centre, scale restores the size):\n```bash\nffmpeg -i take.mp4 -filter_complex \\\n\"[0:v]split[p][q];\\\n [p]trim=0:2.5,setpts=PTS-STARTPTS[w];\\\n [q]trim=2.5,setpts=PTS-STARTPTS,crop=iw/1.25:ih/1.25,scale=1920:1080,setsar=1[t];\\\n [w][t]concat=n=2:v=1:a=0[v]\" -map \"[v]\" -map 0:a out.mp4\n```\n`crop` evaluates w/h only once, so for an animated push use `scale=w='...t...':h=-2:eval=frame,crop=1920:1080` or `zoompan=...:d=1`.\n\n### In HyperFrames\n\nTween the inner wrapper, never the timed clip:\n```js\ntl.set(\"#seg2 .inner\", { scale: 1.25 }, 2.5);           // instant punch\n// or eased: tl.fromTo(\"#seg2 .inner\", {scale:1.1}, {scale:1.25, duration:0.15, ease:\"power2.out\"}, 2.5);\n```\n\n### In Remotion\n\n```tsx\n<Series.Sequence durationInFrames={75}>\n  <AbsoluteFill style={{transform: 'scale(1.25)'}}><Video src={take} trimBefore={75} /></AbsoluteFill>\n</Series.Sequence>\n```\n`pushCut()` from `@remotion/transitions/push-cut` (v4.0.500+) is a ready hard cut with a short punch-in and a 2-frame flash.\n\n### In CapCut\n\nSelect the segment after the split → Basic → Scale (e.g. 125%), or add Position/Scale keyframes for an eased push.\n\n### Ready-made components\n\n- [Camera Punch-In](https://skills.varg.ai/component/hf.yt-camera-move/) (hyperframes): npx hyperframes add yt-camera-move\n- [Push In](https://skills.varg.ai/component/hf.push-in/) (hyperframes): npx hyperframes add push-in\n- [Lens Zoom](https://skills.varg.ai/component/remocn.lens-zoom/) (remocn): npx shadcn@latest add @remocn/lens-zoom\n- [Drift](https://skills.varg.ai/component/remocn.drift/) (remocn): npx shadcn@latest add @remocn/drift\n\n### Where this comes from\n\n- [FFmpeg filters: crop](https://ffmpeg.org/ffmpeg-filters.html#crop)\n- [FFmpeg filters: zoompan](https://ffmpeg.org/ffmpeg-filters.html#zoompan)\n- [Remotion: pushCut](https://www.remotion.dev/docs/transitions/presentations/push-cut)\n- [HyperFrames: HTML schema](https://hyperframes.heygen.com/reference/html-schema)","useWhen":["Every 2–3 jump cuts in a talking head, on emphasis words, punchlines or a change of point."],"notFor":["Punching past ~130% on 1080p footage shows softness; alternate in and out rather than zooming tighter every time."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/yt-camera-move","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Camera Punch-In · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.yt-camera-move/","license":"Apache-2.0","note":"Dynamic zoom, slide, and 3D tilt-pan helpers for any wrapper (video, include, card) with cubic-easing defaults and an edge-defocus pulse overlay"},{"role":"component","label":"Push In · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.push-in/","license":"Apache-2.0","note":"A centered headline gains focus through one slow, continuous camera push and a gentle fade out."},{"role":"component","label":"Lens Zoom · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.lens-zoom/","license":"MIT","note":"A hard cut disguised as a lens punch-in: barrel distortion, zoom blur, chromatic split and camera shake around the splice."},{"role":"component","label":"Drift · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.drift/","license":"MIT","note":"A slow linear camera push-in wrapper that scales its scene from 1 to 1+grow across the sequence so no frame is ever static."},{"role":"source","label":"FFmpeg filters: crop","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#crop","license":"link-only"},{"role":"source","label":"FFmpeg filters: zoompan","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#zoompan","license":"link-only"},{"role":"source","label":"Remotion: pushCut","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations/push-cut","license":"link-only"},{"role":"source","label":"HyperFrames: HTML schema","kind":"link","url":"https://hyperframes.heygen.com/reference/html-schema","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Jump-Zoom Punch-In"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.yt-camera-move","hf.push-in","remocn.lens-zoom","remocn.drift"],"aliases":["punch-in","zoom cut","digital zoom cut","punch in on a jump cut"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/7121432ced16/take-jump-zoom-punch-in.mp4","w":640,"h":400,"duration":3.8,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADS0lEQVR4nD1T2W7kRBStsqvs9t6rp7uVTDKJ4CEZ8oAQEiDxBo98JL8AEn+AgIdhxJKRJttMJt3pzWmv7aVcVVy70dyHq7Jsn3vqnHOxf3yAEDo6edHr9ZGK1uu1goiqEsfp2LZNKE3SdJemuq5vNht4izFGH0s2Z9lW8w88BE+b85dnUuL7d/dFnhuGIaRVMSYxNS3TNJ0oioQQhBDoiqJAb4DwvmEpEUENDtI0bTwezz7MozBEXLKy4mkgHbs/Hj/N5t7wwLYtzqtOp5MkCaAABaCmtLUn9/8EzjlgbbdBmsQaRsDok5Op7/uHE3+1Ml89xJ7nqYQ4rnt6fOK6bpxlq9VqvV42jNoiz58fMMaKoiqKwqQa2+U9U+9qdPe4Tpisun0s1G6vx6oKpNM16h1NgUq8WpY129PBSGmAno0GABEE4S8//4Q5sm3H6ygD1/7ui7OnIDg9PIg9969fX4PqtmuC2MXE/ezi4s/f/lgulxbRKSW4QZNkNV9QSk1Dj1l5c3MHcqqjvuqY/4RxmKTR1bWm0cl0MBwM+p6Fz0+Vqv5K05/98H0Yhq9vZ5eXlzlSFbDs6y/P0iT5/dV1XddwebB8MOoORyMhUcVQKZjRscadUVmWURaByOnb93gZOJIXUahjxVTxjiMJYvtdb+DYiu4CP0cjYHWZJVma2d1RR9PB/PVTxGoWbkPL0sE1U9NMy6rSGJzeQcLKEhFDSkFub+/TLC1VAyJ3fX93/OJ4OX+E+QM/n88fpaayuhYYZ1lmULWhzCp5e/Xm8mY2mxvTQ6FQSGRj/8NiE8dxWDVRCpfzIMo6qmJZ1iII7x7mSCGUEKlKwcUO8TjOSF6tt7t1mCCq7yrWpIk0mSRX72YQoryoAZXXLMnWlq7VfGO4Xl5UHJUQH6wqTQIlojXSSl5v07QU4JDvDyEWaV40oV/MFoDKUa0oanPgdVUg8C6rMtFuUF0WYItoF6quCaKGoinD6RC+uTj/FC7+95u3Da1c9CfTKdOn+3TJdm3gTGkbNqFatoUw3bTrChqZrmNZJkwVgv+74rs8dw+nYA4RxunRy29j5xsuhIrZx8XmkgLo5/WPvm9O8E3FqhqrUsay5bYfqbb7Ial9HV39B6gP3D1uMG6RAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Charge (2022)","rights":"cc-by","note":"punch-in between two shots, with the timeline strip of the edit. Footage: Charge (2022), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":167509,"addedAt":"2026-10-28"}},{"id":"vargHQ/j-cut","slug":"j-cut","name":"J-Cut","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["audio","split-edit","interview","documentary","ffmpeg","hyperframes","remotion","capcut"],"summary":"Shot B's sound starts before its picture. The ear arrives first and pulls the viewer into the next scene.","description":"We still see A while B's voice or ambience fades in; then the picture cuts to B. On a timeline the audio forms a J.\n\n**When:** Scene changes, interview answers (hear the reply, then see the speaker), and pulling into a location by its sound.\n\n**Watch out:** A lead longer than 1–2 s without a visual cue confuses who is speaking.\n\n**Timing:** Audio leads by 0.3–2 s; short fade-in on B's audio\n\n**Also called:** J cut, audio lead, sound advance, split edit\n\n### In FFmpeg\n\nVideo cuts at 4 s; B's audio starts 1 s earlier. B's picture uses source 1–4 s, its audio source 0–4 s placed at 3 s:\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]trim=0:4,setpts=PTS-STARTPTS[va];[1:v]trim=1:4,setpts=PTS-STARTPTS[vb];\\\n [va][vb]concat=n=2:v=1:a=0[v];\\\n [0:a]atrim=0:4,asetpts=PTS-STARTPTS,afade=t=out:st=3.4:d=0.6[aa];\\\n [1:a]atrim=0:4,asetpts=PTS-STARTPTS,afade=t=in:d=0.3,adelay=3000:all=1[ab];\\\n [aa][ab]amix=inputs=2:normalize=0:duration=longest[a]\" -map \"[v]\" -map \"[a]\" out.mp4\n```\n`normalize=0` stops amix from halving the level.\n\n### In HyperFrames\n\nMute B's video and add its sound as an `<audio>` clip that starts earlier, with the matching source offset:\n```html\n<video id=\"b\" src=\"b.mp4\" data-start=\"4\" data-duration=\"3\" data-media-start=\"1\" muted data-track-index=\"0\"></video>\n<audio id=\"b-snd\" src=\"b.mp4\" data-start=\"3\" data-duration=\"4\" data-media-start=\"0\" data-fade-in=\"0.3\" data-track-index=\"2\"></audio>\n```\n\n### In Remotion\n\nPicture and sound in separate sequences: B's `<Audio>` starts 30 frames before B's picture.\n```tsx\n<Sequence durationInFrames={120}><Video src={a} /></Sequence>\n<Sequence from={120}><Video src={b} trimBefore={30} muted /></Sequence>\n<Sequence from={90}><Audio src={b} /></Sequence>\n```\n\n### In CapCut\n\nRight-click the clip → Separate audio (mobile: Extract audio), then drag B's audio clip left under the end of A and add a fade-in.\n\n### Where this comes from\n\n- [Wikipedia: J cut / L cut](https://en.wikipedia.org/wiki/J_cut)\n- [FFmpeg filters: adelay](https://ffmpeg.org/ffmpeg-filters.html#adelay)\n- [FFmpeg filters: amix](https://ffmpeg.org/ffmpeg-filters.html#amix)\n- [HyperFrames: HTML schema](https://hyperframes.heygen.com/reference/html-schema)","useWhen":["Scene changes, interview answers (hear the reply, then see the speaker), and pulling into a location by its sound."],"notFor":["A lead longer than 1–2 s without a visual cue confuses who is speaking."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/cuts.md#j-cut","repo":"vargHQ/skills","path":"varg-video-edit-library/references/cuts.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"Wikipedia: J cut / L cut","kind":"link","url":"https://en.wikipedia.org/wiki/J_cut","license":"link-only"},{"role":"source","label":"FFmpeg filters: adelay","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#adelay","license":"link-only"},{"role":"source","label":"FFmpeg filters: amix","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#amix","license":"link-only"},{"role":"source","label":"HyperFrames: HTML schema","kind":"link","url":"https://hyperframes.heygen.com/reference/html-schema","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"J-Cut"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":[],"aliases":["J cut","audio lead","sound advance","split edit"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/3a392c7a64e3/take-j-cut.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADuklEQVR4nBVSSW8cZRD9uvvrfZvp2bzMYmw8AzEKxqcoElJQDkhwQ/jOmd+FEBcgRuKAuGByANnIRCTeHWcy+/TM9L59vX10Xkl1eCqV6tV7xDdfPaRpmuXL7XZbkeWr62tv8i9JkouYvr0dkCynKEpVpk3LqlU2JEkkoUJDOgMEAADmOU1DTOK3gwHMMFkpVb74+ttms7kYrwT1g1fPLdf1cOBRAOw9eCyKwpvJSPeTtQYvyZWMYEmCoCkW55jMULGOpDCKYzg1ot7D7VapNLg4zyxnSxL897rjyVg3nd2tzpePHhuGqRtW4Ab6yq5vtCgUQghzkscEpgBVIEBesRqaAd7q7YM45imIyMwxZpyo7fZqo/GgELW7selI8o0+e5XnxmKpCJIqi1EUrvLiXJymqSiKfnE7ScNatXz/+rYncHcXF65pTCcTkg4ZhmY4yfHQ73/+UXyBCNxNVaaYTJMFkBFZnDOQK0TlKQI5RigpngzXmlt/nZx90mjudB/M7q6SIHx5f+d7niKJNABZFDEEr9D0plYOvJub098mDtPrdRmBzHHOCrxt24gUIxDBw8+eHB8fj2ZTgoZn5+dJkg5WKIqyrUZ7NpuanBkl4Wy1cny3rrY9O95UCY1BuSgVkyBLutvvP3n6+dHREUS2W1dK3/304+HhYWdv//Tk1Eq4ne6esdIBhl7kL62l6ZgEBE1pTZbl6uZamqWBIiOEqASvN9b1fr8uSfD7n5/t7+/7kf/Lr0fbmtp/+xZxtWUYOxSXQMp5fSsKggKBqqo4SubGaK1zQJK5myYM5AmQMawgi0JZkaGOuRdjY33nw6urq9hzylo1DbCPosly4ftePQxVrSLQrCprM9NxYtT857RWq9llJgwDQaQXIkuH7nTQh9sHj5wCsyFg+KKSnKDeJZ1LQ49IE4UX1qv16WDIEGThkLpey7zMsuyRaRXGn7y8bE9aZUjoug4VtHBX41pJXU4nKc2nGCDXiihCZACRJIik/v7vxccsG9sGV240ZC0Ame2ZhjcfhWE/QSFjOeO7VrsFeeBLZJSwSpKEPmILIOSHIWXO51pZazfqw+EQ15u+aVUqbUau3VtvFsuFXK1iMmCdeRJGOZQwlOGz58N6vR6zzbzCIZGLCaLUwYU4Cn/kQ1qvbviUyfEn7ZrWqVppsuRgf7tN8zDgG3wzBmlmZ51yEOrw+j5WWzu28imnEjmO3+UVUyjPn1Z/EHheiM+4Bt9jzYLncr3o3YMi0wjjCGOXJNKCQYx2eTn/H4oSBkuYvE94AAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Tears of Steel (2012) + Charge (2022)","rights":"cc-by","note":"cut between two shots, with the timeline strip of the edit. Footage: Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0; Charge (2022), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":196909,"addedAt":"2026-10-28"}},{"id":"vargHQ/l-cut","slug":"l-cut","name":"L-Cut","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["audio","split-edit","dialogue","b-roll","ffmpeg","hyperframes","remotion","capcut"],"summary":"Shot A's sound keeps playing after the picture cuts to B. Carries a line or a mood across the edit.","description":"Picture changes to B (a reaction, B-roll, the next place) while A's voice or music continues underneath. On a timeline the audio forms an L.\n\n**When:** Reactions during dialogue, narration over B-roll, letting a moment breathe as you leave a scene.\n\n**Watch out:** Carrying speech too long over unrelated images makes the speaker feel disembodied.\n\n**Timing:** Audio tail 0.5–2 s past the cut; fade the tail out\n\n**Also called:** L cut, audio overlap, sound carry-over, split edit\n\n### In FFmpeg\n\nPicture cuts at 3 s; A's audio runs to 4 s; B's audio joins at 4 s in sync (source 1 s):\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]trim=0:3,setpts=PTS-STARTPTS[va];[1:v]trim=0:3,setpts=PTS-STARTPTS[vb];\\\n [va][vb]concat=n=2:v=1:a=0[v];\\\n [0:a]atrim=0:4,asetpts=PTS-STARTPTS,afade=t=out:st=3.4:d=0.6[aa];\\\n [1:a]atrim=1:3,asetpts=PTS-STARTPTS,afade=t=in:d=0.3,adelay=4000:all=1[ab];\\\n [aa][ab]amix=inputs=2:normalize=0:duration=longest[a]\" -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\nKeep A's sound as its own `<audio>` clip longer than A's muted picture; use `data-fade-out` for the tail:\n```html\n<video id=\"a\" src=\"a.mp4\" data-start=\"0\" data-duration=\"3\" muted data-track-index=\"0\"></video>\n<audio id=\"a-snd\" src=\"a.mp4\" data-start=\"0\" data-duration=\"4\" data-fade-out=\"0.6\" data-track-index=\"2\"></audio>\n<video id=\"b\" src=\"b.mp4\" data-start=\"3\" data-duration=\"3\" data-track-index=\"1\" data-has-audio=\"true\"></video>\n```\n\n### In Remotion\n\n```tsx\n<Sequence durationInFrames={90}><Video src={a} muted /></Sequence>\n<Sequence durationInFrames={120}><Audio src={a} /></Sequence>  {/* audio runs 30 frames longer */}\n<Sequence from={90}><Video src={b} /></Sequence>\n```\nUse `useCurrentFrame()` + `interpolate()` for the tail fade (the volume callback is no longer recommended).\n\n### In CapCut\n\nSeparate audio from clip A, trim A's video shorter, then extend A's audio clip under B and fade it out.\n\n### Where this comes from\n\n- [Wikipedia: J cut / L cut](https://en.wikipedia.org/wiki/J_cut)\n- [FFmpeg filters: adelay](https://ffmpeg.org/ffmpeg-filters.html#adelay)\n- [FFmpeg filters: amix](https://ffmpeg.org/ffmpeg-filters.html#amix)\n- [Remotion: <OffthreadVideo> (trimBefore)](https://www.remotion.dev/docs/offthreadvideo)\n- [HyperFrames: HTML schema](https://hyperframes.heygen.com/reference/html-schema)","useWhen":["Reactions during dialogue, narration over B-roll, letting a moment breathe as you leave a scene."],"notFor":["Carrying speech too long over unrelated images makes the speaker feel disembodied."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/cuts.md#l-cut","repo":"vargHQ/skills","path":"varg-video-edit-library/references/cuts.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"Wikipedia: J cut / L cut","kind":"link","url":"https://en.wikipedia.org/wiki/J_cut","license":"link-only"},{"role":"source","label":"FFmpeg filters: adelay","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#adelay","license":"link-only"},{"role":"source","label":"FFmpeg filters: amix","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#amix","license":"link-only"},{"role":"source","label":"Remotion: <OffthreadVideo> (trimBefore)","kind":"link","url":"https://www.remotion.dev/docs/offthreadvideo","license":"link-only"},{"role":"source","label":"HyperFrames: HTML schema","kind":"link","url":"https://hyperframes.heygen.com/reference/html-schema","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"L-Cut"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":[],"aliases":["L cut","audio overlap","sound carry-over","split edit"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f1d2f569de6f/take-l-cut.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADaklEQVR4nCVTy27bRhSdIYdvckQ9bMd6VBbkpGgXbQoUrYEuuuiHFmg3/Yeuimz6SoG4cRoHiRxLjCxZlkhJfA5nhr1U7oKc9z3nnntwZ9hTFRVjrOu6Q13TtHTDcF3HMLTpdMpLYcDUttebdTD7QCkVUhKN7B5ChJDboFVVwQC+5PCTQlYyF/1PBljBTKKMcU3Tzs+fbDYP+/1eJWq42XjU1TQi8syxvMJIpZSYKHAZQMC4fkhRVAXVkWYpoLtbziFzkbmarhuWbbmeRgjggmnJmO+5OlGEEKZpAhMApKoq5xWBm1IKrKofX9vH+2KfphL1Pfz4rBds0l1W6I5LG01W5JIQ1zE5F4ZjqhpRFAUfAgbE9px2ux3HMVBIdnEYhUQwajRIyQhnw0fHN1kqEGp1OlkWD4dDy7Imk0kmcFEUWAE2dXoARZ5+9WX39PTdZHJ9fe06liiZTKImUUa0OXSoOTqfvb1hoqDUWvBYNF379NFfv/3aLjFQq+uMMZIII4W8fnV1dfmClQwW7xdLzsuGRyvdmIlqNQ1GpmNQa3TUhPyXq7w/6n978d2PP/9kIA3DM0rNqqoEwhXhZQmKSiZXqxVI4Dhuf9AH2rNgfjYc7ncRL4u/n79cr9fFSRNk5qhSdc1S7DzPMSSXsjoESXYpiLpebVjOXIt0j1uWLi3LPj4a+77/Plgslov3bwPGyhKjJErevHzFs0JoOiCq6gaqAAaISFDFV/cPzWbHMI4bHnEcBwteJOnNQxL88UJg2el0BuPRcrlkZfXmz38un/2uhkni1DIjAiWC43VXkrNep/H5+LTbBdmC+XKzCXNF22633KElIZJlcZr8cHExm81ul4vjdqsoys3RUcP1gFa4jQCLYAJKTD52we18HgTBNsqAOTkE24awRakPF57/ewUaeW4jCOZN3x/0+wAcLEUWSwCTpGlZlgRQ3EwDz3OzNFN1pU19RdVb7VZ3cApKxdsESrDLqrwEQ+iaZvJKCxbzPL2D3d5ZfzweQ38BCLLlnZOTE2n1R1/0VKN2bxRFSNM+pDhNEjANrHymP7Nt21dCMFPBVWqFwqgrrLH7k2jutQdHfkSi2P/06ddb95s7MGF26FSnlrWSFW5huwXmISYZSYQSFIK5v9d/oU9alM8O7gT136V6/l95+z9x0fIExsSyjwAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Charge (2022) + Tears of Steel (2012)","rights":"cc-by","note":"cut between two shots, with the timeline strip of the edit. Footage: Charge (2022), Blender Studio | studio.blender.org, CC BY 4.0; Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0.","bytes":197687,"addedAt":"2026-10-28"}},{"id":"heygen-com/graphic-match-cut","slug":"graphic-match-cut","name":"Graphic Match Cut","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["match-cut","graphic","storytelling","reveal","ffmpeg","hyperframes","remotion","capcut"],"summary":"Cut between two shots that share a shape, colour or position on screen, so the eye slides from one to the other.","description":"Built on [Match Cut](https://github.com/heygen-com/hyperframes/tree/main/registry/components/match-cut) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA round clock face becomes a round moon; a spinning wheel becomes a spinning record. The shape stays put, the world changes.\n\n**When:** Time jumps, before/after, product reveals, and linking two ideas without words.\n\n**Watch out:** If the shapes are not in the same place and size the match is lost; align them first.\n\n**Timing:** Hard cut, or 2–6 frames of crossfade for a softer match\n\n**Also called:** match cut, shape match, visual match, form cut\n\n### In FFmpeg\n\nAlign B to A (scale/position) and cut on the frame where the shapes coincide; a very short fade can soften it:\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[1:v]scale=iw*1.08:-2,crop=1920:1080:x=40:y=10[b2];\\\n [0:v]trim=0:3,setpts=PTS-STARTPTS[a2];[b2]trim=0:3,setpts=PTS-STARTPTS[b3];\\\n [a2][b3]concat=n=2:v=1:a=0[v]\" -map \"[v]\" out.mp4\n```\n\n### In HyperFrames\n\nReady primitives: `npx hyperframes add match-cut` (a circle that hard-swaps scenes and matches the incoming circle), `text-match-cut`, `type-match-cut`, `morph-swap`.\n\n### In Remotion\n\nWrap B in a transform that lines its subject up with A's, then cut with `<Series>`; for a soft match use `fade()` with `linearTiming({durationInFrames: 4})`.\n\n### In CapCut\n\nAlign the shapes with Basic → Position/Scale (use the overlay track at reduced opacity as a guide), then cut. CapCut also publishes AI camera transitions for match cuts.\n\n### Ready-made components\n\n- [Match Cut](https://skills.varg.ai/component/hf.match-cut/) (hyperframes): npx hyperframes add match-cut\n- [Text Match Cut](https://skills.varg.ai/component/hf.text-match-cut/) (hyperframes): npx hyperframes add text-match-cut\n- [Type Match Cut](https://skills.varg.ai/component/hf.type-match-cut/) (hyperframes): npx hyperframes add type-match-cut\n- [Morph Swap](https://skills.varg.ai/component/hf.morph-swap/) (hyperframes): npx hyperframes add morph-swap\n\n### Where this comes from\n\n- [Wikipedia: match cut](https://en.wikipedia.org/wiki/Match_cut)\n- [CapCut: whip pan and match cut transitions](https://www.capcut.com/resource/ai-camera-transitions-whip-pan-match-cut)\n- [HyperFrames: compositions](https://hyperframes.heygen.com/concepts/compositions)","useWhen":["Time jumps, before/after, product reveals, and linking two ideas without words."],"notFor":["If the shapes are not in the same place and size the match is lost; align them first."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/match-cut","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Match Cut · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.match-cut/","license":"Apache-2.0","note":"A circle accelerates into a hard single-frame scene swap, matches the incoming circle exactly, and continues into a smaller resting pose."},{"role":"component","label":"Text Match Cut · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.text-match-cut/","license":"Apache-2.0","note":"One line of text becomes another mid-move: both ride a single 85 % easy-ease curve and hard-swap at the speed peak, as scale, tracking, or a same-direction slide."},{"role":"component","label":"Type Match Cut · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.type-match-cut/","license":"Apache-2.0","note":"A headline splits vertically around an incoming panel, which grows from the negative space and takes the frame as the words exit through opposite edges."},{"role":"component","label":"Morph Swap · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.morph-swap/","license":"Apache-2.0","note":"Two slotted siblings stacked at one shared center: A holds, then condenses or reshapes into B on a shared 50% 50% transform origin…"},{"role":"source","label":"Wikipedia: match cut","kind":"link","url":"https://en.wikipedia.org/wiki/Match_cut","license":"link-only"},{"role":"source","label":"CapCut: whip pan and match cut transitions","kind":"link","url":"https://www.capcut.com/resource/ai-camera-transitions-whip-pan-match-cut","license":"link-only"},{"role":"source","label":"HyperFrames: compositions","kind":"link","url":"https://hyperframes.heygen.com/concepts/compositions","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Graphic Match Cut"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.match-cut","hf.text-match-cut","hf.type-match-cut","hf.morph-swap"],"aliases":["match cut","shape match","visual match","form cut"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0566c854af08/take-graphic-match-cut.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADe0lEQVR4nD2Ty28bVRTGz33Nw/b4IT9ip6ZOmoZAJUi7QgiJHbAAZREQG5asygqJBQskxD/BH8Cuq25QBZUQSKgUQhSBApRUpE6KXKVJ7ST2PDxz5z44UwQzuznnft/5fucOef2tdwGAEsM4dx0WBEGn08myLJpNOePduofVOJlpYx6OnkgpjQWtNVBLCVEycxyn5jPs5xRyz/OIJUKwkifqFa9f561W99HhQbfX3dnZ2drasoQtDQbPLi+fTiZhhpasGviLvd70bIw2a/3ywXDImbUOJWXfR7mKJ3zPafvy6mrnaPjHzRtf3LpzzxijLWzt/rW+0tvc3DyPzqy11648s7q6CiqaJ3Owah6dcs4JpSCYdQQELtQCJ7fuRx9/+t32PsbBySmluZSE0P2/j2/cvPX+e28mSXwyfoI4XrvW8/ut0SQzayvc5KlhIEkqqKHcNEpBFMXb2/cILwtCjFLoj4oAKOref3B4tP/rxsZGEo4qFUt1rJO04arl9UXuQyqMdgwVGirEBDS+uHJpbany86EiOIY1YKgBiyxSBE34V9/e+eDD68tVUwRpV/E7KLAI+40Xa57v9au22WzVL7JudyH0BtW2UfuaMQ4oYTUjFElZApSy4eP8t+HjS28v6ShmZQ2EwImKTkN+GDII80eRW09gkGWhtI1u1ig1wB6BefqiGCn0MCfG9HxotReAL7L6DMbH87OzeCyimPBmrekIh9OcGXP/SHx99+7uw2/29nDHOIVGFQyI5/+VM9Y2AxBmvvXl7dFoFJCqcBwsGa357R9+SdP0PJYqzyNJkiRRhAnu4bLw4v2v8vQpkCsof/LZ5/uj4zAMg4pbr9c71bTkl/hPu0NkQSmyowVdSl08qWQzCHKlZklsCjyAcoKSUqX8wnqXkPjK81rwqjbAWU4ZeiTc93A6xyqFO57LvJiCFnEqriNcnuWSUcoF9TxfT8cvv3R1Gk4PDg9YOe/3+9qcYVWDZazoQftU6aTAYYp9C8ut0S534jhWeZZbqyRKmjzn3//+4EKb9AaL1JlxR8uUIoY0MzpVPLSNdqedCRyYFD+DKa4fBgkxTc3ULxRsLtMfhRBVMuZiVvaJ50nPxeZQljLBtbSlyWTGT2XrucuvnldfQRQc8v+4grasQAYKCb7j7gVBZUGfWJNKcJEIOpGirKzJpNv4cy/9ByZS5BEuG/X8AAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Cosmos Laundromat (2015) + Spring (2019)","rights":"cc-by","note":"cut between two shots, with the timeline strip of the edit. Footage: Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0; Spring (2019), Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0.","bytes":236326,"addedAt":"2026-10-28"}},{"id":"heygen-com/action-match-cut","slug":"action-match-cut","name":"Action Match Cut","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["match-cut","action","transformation","dance","ffmpeg","hyperframes","remotion","capcut"],"summary":"A movement started in shot A finishes in shot B: a jump, a throw, a door swing carried across two angles.","description":"Built on [Cut the Curve](https://github.com/heygen-com/hyperframes/tree/main/registry/components/cut-the-curve) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nThe motion is continuous even though the angle or location changes, so the cut disappears into the action.\n\n**When:** Action, sports, dance and transformation edits (outfit changes, location jumps on a jump or spin).\n\n**Watch out:** If speed or direction differs between the two halves the jump becomes visible; match velocity, not just pose.\n\n**Timing:** Cut at peak velocity, usually 2–4 frames into the move\n\n**Also called:** match on action, movement match, kinetic match\n\n### In FFmpeg\n\nFind the frame pair by eye (or with `ffmpeg -vf select` thumbnails), then trim both so the move continues:\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]trim=end_frame=73,setpts=PTS-STARTPTS[a];[1:v]trim=start_frame=12,setpts=PTS-STARTPTS[b];\\\n [a][b]concat=n=2:v=1:a=0[v]\" -map \"[v]\" out.mp4\n```\n\n### In HyperFrames\n\n`npx hyperframes add cut-the-curve`: the outgoing subject accelerates (power4.in), swaps at peak speed, the incoming one continues on the same curve.\n\n### In Remotion\n\nSame as a hard cut; tune `trimBefore` on B frame by frame in the Studio until the motion lines up.\n\n### In CapCut\n\nStep frame by frame with the arrow keys, split both clips at the matching moment of the move, and butt them together.\n\n### Ready-made components\n\n- [Cut the Curve](https://skills.varg.ai/component/hf.cut-the-curve/) (hyperframes): npx hyperframes add cut-the-curve\n- [Match Cut](https://skills.varg.ai/component/hf.match-cut/) (hyperframes): npx hyperframes add match-cut\n\n### Where this comes from\n\n- [Wikipedia: match cut](https://en.wikipedia.org/wiki/Match_cut)\n- [Wikipedia: cutting on action](https://en.wikipedia.org/wiki/Cutting_on_action)\n- [FFmpeg filters: trim](https://ffmpeg.org/ffmpeg-filters.html#trim)","useWhen":["Action, sports, dance and transformation edits (outfit changes, location jumps on a jump or spin)."],"notFor":["If speed or direction differs between the two halves the jump becomes visible; match velocity, not just pose."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cut-the-curve","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Cut the Curve · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cut-the-curve/","license":"Apache-2.0","note":"A velocity-matched directional hard cut: the outgoing subject accelerates with power4.in, swaps at peak velocity, and the incoming subject continues in the same direction with power4.out."},{"role":"component","label":"Match Cut · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.match-cut/","license":"Apache-2.0","note":"A circle accelerates into a hard single-frame scene swap, matches the incoming circle exactly, and continues into a smaller resting pose."},{"role":"source","label":"Wikipedia: match cut","kind":"link","url":"https://en.wikipedia.org/wiki/Match_cut","license":"link-only"},{"role":"source","label":"Wikipedia: cutting on action","kind":"link","url":"https://en.wikipedia.org/wiki/Cutting_on_action","license":"link-only"},{"role":"source","label":"FFmpeg filters: trim","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#trim","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Action Match Cut"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.cut-the-curve","hf.match-cut"],"aliases":["match on action","movement match","kinetic match"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/291b2465e5fb/take-action-match-cut.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADbUlEQVR4nDVTS2/cVBS+T78ynmfGk5l0QkNopoggFkEVQhHKhjU/oH+CP8KGH8GGfXZ9LAiiEipVSwmLJil0HDeeTMb2PGzfJ9cDHMnX1vW53/3O950Dv/3u+6AXtHc/7Ha7ccLSNN3vB6AKZB6lFEJIAwARiudJWZZBs0kp0YCavxJWeRpUL3KnDB5sPYjbGGpcFyJLVqxZeK6rtAFRy3xZr9eRhBjAXFvvb2ctv0UtC2pdHa4WIOD6uyOFvo4wbG9seKswqc9VUVRAktpxHKfLjNR8H2gtVZ3iBQEWQUBLvIYA0ABqrKEJ8th/+Wx1MXqzTyjdEEHTq2dlFUshZ4u5gqCU0kfYnMryXGMqy8LCLgFESpkbeKUYl67rkVebMykmz9nYIc4R+6LjbNqgLbH1+tHJVn+LdwIjFVTVpaXUhZBMCQfBSc4N35UUtVpt07EZZ8SHXqnKm9pc68WJ/cRm9keT0YAOSk49L8gEkAUXjoWhkbviZZTHAL2f5+F0Di07KRYLONvdvUt8v7vhKZaHQvDMXmm9FMvnXKZHR8eA0iL1Lm9y0uBGcgyRY9nEwGllpKkktyyMEFEcIyP823an02ZuoW015ZXBh9bew68eyhyc/nR6UbZa7ZbWzTxniyJHlC7KgriO0AoSQ1BVfhGCESYvnoyHQ9jd2wmCgPq/53jVwI10ls7I6vTy2blXNkFz2Pym43ZwgoAEDAGlMQZiwyaYYGOxAargIhZGb8b98M69e3ZrFNQt67Xz7u/fHqXiNnKWghZxlv2Q/NhngwNwbFELKHozybSSDd93LZmCggJTLSTGDtMOURFGL8f9y8H90f3gk12YoiWImo1NwudM8im5nkRRCCbtduvY/9qUj8tUaRev/LrAxCGmzQn4r7PWcPOr6Ner3nlw8OnB9v6B67qh+DOHK6wJUyxDYXL7bjoLTf7WJN8fjbbVEWO8sKiSkkCClJDGiDVetVzfXl0/DXtnvcPDz7ujHQ5YDaeGRSxizvkMliYn7eGLxVsFd4ybjg6Wc0nUZdQf9Etr28wWWruwnlZQxvr05MUHf2wPh8Md8rMU4mMw5kIsZImxGT5ldmL1yxSToXs444KAv9K9u58l9S+lVBhyiCpWplH+LZkl4jyRx85Tc3MgX633LPB/QChNQxUkOjsb/wNr1uTwJZ5xagAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Coffee Run (2020)","rights":"cc-by","note":"cut between two shots, with the timeline strip of the edit. Footage: Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":207971,"addedAt":"2026-10-28"}},{"id":"vargHQ/sound-match-cut","slug":"sound-match-cut","name":"Sound Match Cut","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["match-cut","audio","sound-design","ffmpeg","hyperframes","remotion","capcut"],"summary":"Two different sounds that rhyme (a scream and a train whistle) bridge the cut and link the two scenes.","description":"The sound of A morphs into a similar sound in B at the cut point; the picture change rides on the sound.\n\n**When:** Scene transitions with a twist, comedic links, trailers.\n\n**Watch out:** If the two sounds do not share pitch or rhythm the link reads as noise.\n\n**Timing:** Hard cut on the sound peak; 50–200 ms audio crossfade\n\n**Also called:** sound bridge match, audio match cut, sonic match\n\n### In FFmpeg\n\nHard-cut picture; crossfade the two rhyming sounds over 0.15 s:\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v][1:v]concat=n=2:v=1:a=0[v];[0:a][1:a]acrossfade=d=0.15:c1=qsin:c2=qsin[a]\" \\\n  -map \"[v]\" -map \"[a]\" out.mp4\n```\nNote: acrossfade overlaps the audio (o=1), so audio ends 0.15 s before video; pad with `apad` if needed.\n\n### In HyperFrames\n\nTwo `<audio>` clips overlapping by 0.15 s with `data-fade-out` / `data-fade-in`, picture cut on the same second.\n\n### In Remotion\n\nPlace the two sound effects as `<Audio>` in overlapping `<Sequence>`s around the cut frame; interpolate their volume over 4–6 frames.\n\n### In CapCut\n\nSeparate audio, drag the second sound under the cut and use Fade in/out on both audio clips.\n\n### Where this comes from\n\n- [Wikipedia: match cut](https://en.wikipedia.org/wiki/Match_cut)\n- [FFmpeg filters: acrossfade](https://ffmpeg.org/ffmpeg-filters.html#acrossfade)","useWhen":["Scene transitions with a twist, comedic links, trailers."],"notFor":["If the two sounds do not share pitch or rhythm the link reads as noise."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/cuts.md#sound-match-cut","repo":"vargHQ/skills","path":"varg-video-edit-library/references/cuts.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"Wikipedia: match cut","kind":"link","url":"https://en.wikipedia.org/wiki/Match_cut","license":"link-only"},{"role":"source","label":"FFmpeg filters: acrossfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#acrossfade","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Sound Match Cut"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":[],"aliases":["sound bridge match","audio match cut","sonic match"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/70698557752e/take-sound-match-cut.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADMklEQVR4nBWTWW7lRBSGT80uT/fmDgnphguRWhENG0DihW2wJfYBzyyBd4SQkBohQiJCS5k6g9tzzRyX/GC7pr++8xXZHMHbt8erNb26uqvrHAC6fs501r+MRZl3zVgWst6Fw+Hw26/XbRvLihvjuxFSAq0gRmg7kJLwqoBxMIybs7PN3cPcdyNn5cNdz4F4b0wP3lieg9bZ5mjVNC9d6xmj61q+vMzzDFUlVzJOo+dKsRD85T/zJydCcBX9iPOVYPMUowkUwBjgBEiIgvvNGtqeWoM5bJYRANr3FhglCbhzkdJgZnh6GlcbzSX31ld1YfoeAiRYjmBGeHzopITdTkqtPnzocA3GGKYAGCMQ/OBkJna2goOz4WMzIaMyZwAelqFQKpwCU5su/rzZnpZtY5Wmr0/kNCRjnAv+eF/2XXp+Hvib7Xocx6YgPvgqc6tVdVImnWXda55SykSijGIWKWQ/kScxnJ7k3oemi/0QfKRchEr4fU35V/vd5eWl3tfW2dL5isP3u68JIT92FyGEnjhJhaCeCC5j2GyL1iRrES3ZFrXDZu0R7u88//nd31IKf9HEmFYMlJq9aeq6NkNs2y5uoaTcD046KAtBsZT9JDOWZV5rwZJ0nljPrA38YwTmHBLFfWUVSUF+sO+H61EVpNwXmvpVUXTT2eX17fF+llKVeVRKJSQ6+zEgRzFObskoFHBO6jrVdVYpL6Wkym6ZZoGGGFjkeEzTMDLnv/8x1HUB/FFKc1SKhR2LWJbZUh8o//I8SymWGdN5VucRXVpKSdAbbGiYSGk4nI2fHqR5x1Lqykqs10fJDzFgNO28o5wGZ3kiTCodyIzSUGRAkvfo9BIN9egszLMBuEabD58vugiaUWZTyIZxtHa5TF8c9nf391xwXGGmzE9T935MS46UlJIWI2Mhw8Iuz5QgBHXHrtYxO1iULAZaagI83dw+tu3A/709fvXqtCGnAUUmSB4WUwPYyICD0BEP8Ib+goBr8oxm4X+/oAFKSK4QRYxE3/vIr24+Oz7/rq++TTFRCIQuKuP7N/CTzvUq/CelP18CJZ0CLH04AJ/l8uANTFg/ufnrMfwPvjvgoq2E0kUAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Sprite Fright (2021) + WING IT! (2023)","rights":"cc-by","note":"cut between two shots, with the timeline strip of the edit. Footage: Sprite Fright (2021), Blender Studio | studio.blender.org, CC BY 4.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":244332,"addedAt":"2026-10-28"}},{"id":"heygen-com/cut-on-action","slug":"cut-on-action","name":"Cut on Action","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["continuity","coverage","invisible","ffmpeg","hyperframes","remotion","capcut"],"summary":"Change angle while the subject moves. The movement hides the cut and keeps continuity.","description":"Built on [Cut the Curve](https://github.com/heygen-com/hyperframes/tree/main/registry/components/cut-the-curve) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nWide to close-up as a hand reaches, a person sits or a head turns; viewers watch the motion, not the edit.\n\n**When:** Any coverage of the same action from two angles: interviews, cooking, product handling, sport.\n\n**Watch out:** Cutting before the movement starts or after it ends loses the cover; cut in the first third of the motion.\n\n**Timing:** Cut 2–4 frames after movement begins; overlap a frame or two of action\n\n**Also called:** cutting on action, continuity cut, movement cut\n\n### In FFmpeg\n\nSame as a hard cut: pick the out-frame on A and in-frame on B inside the motion (`trim=end_frame=` / `trim=start_frame=`).\n\n### In HyperFrames\n\nTwo `<video>` clips with `data-media-start` chosen so the move continues; `data-start=\"a\"` keeps them butted.\n\n### In Remotion\n\nUse `<Series>`; preview at full speed, the cut must be judged in motion.\n\n### In CapCut\n\nSplit both angles at the motion point; multi-camera clips can also be lined up on stacked tracks and cut between.\n\n### Ready-made components\n\n- [Cut the Curve](https://skills.varg.ai/component/hf.cut-the-curve/) (hyperframes): npx hyperframes add cut-the-curve\n\n### Where this comes from\n\n- [Wikipedia: cutting on action](https://en.wikipedia.org/wiki/Cutting_on_action)\n- [Walter Murch, In the Blink of an Eye (rule of six)](https://en.wikipedia.org/wiki/In_the_Blink_of_an_Eye_(Murch_book))\n- [FFmpeg filters: trim](https://ffmpeg.org/ffmpeg-filters.html#trim)","useWhen":["Any coverage of the same action from two angles: interviews, cooking, product handling, sport."],"notFor":["Cutting before the movement starts or after it ends loses the cover; cut in the first third of the motion."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cut-the-curve","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Cut the Curve · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cut-the-curve/","license":"Apache-2.0","note":"A velocity-matched directional hard cut: the outgoing subject accelerates with power4.in, swaps at peak velocity, and the incoming subject continues in the same direction with power4.out."},{"role":"source","label":"Wikipedia: cutting on action","kind":"link","url":"https://en.wikipedia.org/wiki/Cutting_on_action","license":"link-only"},{"role":"source","label":"Walter Murch, In the Blink of an Eye (rule of six)","kind":"link","url":"https://en.wikipedia.org/wiki/In_the_Blink_of_an_Eye_(Murch_book)","license":"link-only"},{"role":"source","label":"FFmpeg filters: trim","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#trim","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Cut on Action"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.cut-the-curve"],"aliases":["cutting on action","continuity cut","movement cut"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/43ae2bd422fc/take-cut-on-action.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADjUlEQVR4nDVTW28bRRSe2+7srr27Xq9jO65JUqeNm0JQ4QkJnkA8IcFPKH8HpP4HfgQC0UpIIMFDK9qHEKcNscBxUuz6tt713ufCuBJnNPNwRuc753znfPDRN99KKTEiRVEyCfI8//HpRRiGjAtliMtSfaQbSqlbqQMAkODdbvfWF1/5vh8DHUKIgVB+AgAWnE8nE8MwCmBnGaQl8zQ91mGSpghIgOA2XplQL9QoPTg4eLfXVlFCyref20sk0F9eDMD1SmV+dXmuMusW0QHI9EYNowBBgVROQtXBmuDCb7knH9yvE5axLBHaFgZjlYDcvFn9OwvyaD4ej7kpfd8Alu3WXJtUl6tVvBEcQAGhpmnUwLZd+/jzT5sHezFjAlLV1LZQXrCck9+fD1hZTidjWqW+56mAUuC7/ZOsc2QsFpPHPzEIMNwW75i01fCqVWO9Xmi6joSoUy3eRPPnz9brNUniuCwZKFmr3Qk/+rJzeGgVyd9pyqhfufMO+uVXnpeaogaTDIAcwtPBaLFcdNvNXq/X3zWuZmPj7LwIQyKFKMsC6dSwnSMtOP3+u7ZbPz6+N15hRTiGAEquQVQxzJbrNZ1apdZq1dsFixQV09EiWsxlmTiWRoDqL48R0jzPH/z8wx8vnlV0Y3LRDzfZw68fThtespxJJI2q0bD1PJy5Jmg0GvvT8zhOiiyoCl5/rxpGIWFQx4adhvFyvdbSuIm1ik1vLgeThP85OAsCRTSGpEzzKLI6YZham6nfMCvLsSXlX3rebDYLHJqeRnJuzOZRIWrRq/Vx1dk/+vDe8XFRFL8N52dX7C0tW0MII5ae9A9vNay6V5f4wWg0yuf/qKUlpTmfz9WQL0mZhf6DKIpeLB3O+Hk0VNu0o0YbhHqNFLyAkJjUUnPuH95GREiESLu3ul7RjbG5ya0uxFQnIQH27o5j4CTNS2YijXCJAK7YbZxlWbGVCTIQNihNChFE6U7TiZPEcT3r4PaQ7hFNA1oBbUiwu8N0XciSMwVkqb1LpUFJ7e77+6rg6fAlkiwXZHh1s9v0R1dTp0Ihh9cJYW53FW31yJWAICKbVLZdryQdBzWMUldUcIBVa8MbZpm7vMqQKe6QpwSTjjHCr4cr1rAsc5UIJe8mI1sg7K6CgLyZZb37e8z5hCpgkIP/LWAwUJ5OnxD8GX1i23adnQoBxAaJSFa3VUAlRBVTaJ3z+ev/AAUk4G+pivPeAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023)","rights":"cc-by","note":"cut between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":167809,"addedAt":"2026-10-28"}},{"id":"vargHQ/smash-cut","slug":"smash-cut","name":"Smash Cut","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["comedy","hook","contrast","horror","ffmpeg","hyperframes","remotion","capcut"],"summary":"An abrupt cut from one extreme to its opposite (calm to chaos, loud to silent) at the most surprising moment.","description":"Mid-sentence or mid-scream the picture and the sound slam into something completely different.\n\n**When:** Comedy beats, horror, waking from a dream, hooks that reverse expectation.\n\n**Watch out:** Cushioning it with a transition or a fade kills the shock.\n\n**Timing:** 0 frames; cut sound and picture on the same frame\n\n**Also called:** shock cut, hard contrast cut\n\n### In FFmpeg\n\nCut both streams on the same frame, no fades; drop audio of B in hard (no afade):\n```bash\nffmpeg -i calm.mp4 -i loud.mp4 -filter_complex \\\n\"[0:v]trim=0:4.5,setpts=PTS-STARTPTS[v0];[0:a]atrim=0:4.5,asetpts=PTS-STARTPTS[a0];\\\n [v0][a0][1:v][1:a]concat=n=2:v=1:a=1[v][a]\" -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\nTwo clips butted with `data-start=\"a\"`, no `data-fade-in` on B.\n\n### In Remotion\n\n`<Series>` with no transition; make sure B's audio starts at full volume on its first frame.\n\n### In CapCut\n\nSplit mid-action and butt the next clip; leave Transitions empty and no audio fade.\n\n### Where this comes from\n\n- [Wikipedia: smash cut](https://en.wikipedia.org/wiki/Smash_cut)\n- [FFmpeg filters: concat](https://ffmpeg.org/ffmpeg-filters.html#concat-filter)","useWhen":["Comedy beats, horror, waking from a dream, hooks that reverse expectation."],"notFor":["Cushioning it with a transition or a fade kills the shock."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/cuts.md#smash-cut","repo":"vargHQ/skills","path":"varg-video-edit-library/references/cuts.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"Wikipedia: smash cut","kind":"link","url":"https://en.wikipedia.org/wiki/Smash_cut","license":"link-only"},{"role":"source","label":"FFmpeg filters: concat","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#concat-filter","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Smash Cut"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":[],"aliases":["shock cut","hard contrast cut"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ea68225cff3c/take-smash-cut.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADfElEQVR4nDWSy28bVRTGz33Nwx6P7TR2bMeQpGko7aK03SCExAohIZAiRRUblqxghcSCBZv+E/wB7LrqBhWJSoCEwsNFEVUpEJpgh2IIecf2zNgzc+89HCdwV6N7z3znfL/zsdfefAsAOLNCStcRpVKpXq+naRoNB1LIRsWj1zgZGmv/6B9kWWYRjDHAkTOms9RxnLIvqF5yyD3PY8iUEgVPVQKvXZGzs42/dnqNZmNjY6PT6SATiwsLzy0tHR8djVJqKcKS32o2ByeH1OZyu9jrdqVAdDgr+j7JBZ7yPafmZ9dX6rvdn+/e+eTe+i/WWoPQebT1wnJzbW3tNDpBxBtXn1lZWQEdjZMxoB5Hx1JK5NwqgY6CkgthoHL0Pvjw9lc/PNHGuK7LOc+zjDG+/XTvzt1777z9RpLE+4cHhOPVm/Nee/bvo9ReXpY2z6zgGcsUt1zamWIpiqIHDx4LFXCBlnAAECAA6zjub7/v7G4/XF1djYd/BgEKPcIkqbpm8VpL+jBR1igDUmPAsMTjZ5cXr1wsdnqa0RhIxsACklyaIzL52Rfr773/7lJoGOdQq9A9aIsE+/VrFc/3moGpz9XDNp+bq8feUjiDessIIYEk0AjGiRR9cS56e/lP3X8u3lowUSQK0wZwgPFJJLsDgadZv+TOpNAep8MUL7QmlaCMuIcIFskUIJvqMasJs+dDrd4A0RLlEezvjgeD+FBFMcgL1RkplSM0s/ikL++vf/vw6Zebm0xKfrYuIIP0/7mcRayFIE3S+fR+v98vsZCWRR4Jpfz8mx8pTidRqvM8yliSJJo5Svr0nhEe/p/K2ZkiT03ho9sfb/f3RqNRUHAq1cpcOS34Bfn9oy6x4Jx0KatM0LEatK6GpVzrYRLbczyIirNCULx5o0VRv3rFKBnSgFJSMmjqsfQ9pZTU2iDaNMsp/uzsUDiVK9M8E5xLxT3PN4PDl168PhgNejs9Uczb7baF46llmHanGjB5pvOYrpjltG/FJC3dlSqOY51Pl64zkrR5zr9+vDVfE82FFnci6WCSMqnUZAJmouUIq7V6LVUNmmJK1yLFj4yMyE3ZVuanbC7x72jsIjtUKir5zPMy16PiVBdzwW1eLh4dDeVxNvv8pVdOw5cJhYT8f65gUEwDCZqmvuVuhmFY1/toJxm4AMn5BriYNs6c2V/N5F9fgehxTkhMGQAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Cosmos Laundromat (2015) + WING IT! (2023)","rights":"cc-by","note":"smash between two shots, with the timeline strip of the edit. Footage: Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":227069,"addedAt":"2026-10-28"}},{"id":"vargHQ/cutaway-insert","slug":"cutaway-insert","name":"Cutaway / Insert","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["b-roll","explainer","interview","cover","ffmpeg","hyperframes","remotion","capcut"],"summary":"Briefly leave the main shot for a detail or related shot, then come back. Shows what is talked about and hides edits.","description":"Main speaker, then 1–3 s of the object, screen or place mentioned, then back to the speaker.\n\n**When:** Explainers, interviews, product demos, and to cover a cut in the main shot.\n\n**Watch out:** Inserts unrelated to what is being said feel like filler.\n\n**Timing:** 1–3 s per insert\n\n**Also called:** insert shot, cutaway, cut-in, detail shot\n\n### In FFmpeg\n\nOverlay the insert on top of the continuous main shot between 3 and 5 s (main audio continues):\n```bash\nffmpeg -i main.mp4 -i insert.mp4 -filter_complex \\\n\"[1:v]trim=0:2,setpts=PTS-STARTPTS+3/TB,scale=1920:1080[ins];\\\n [0:v][ins]overlay=eof_action=pass[v]\" -map \"[v]\" -map 0:a out.mp4\n```\n\n### In HyperFrames\n\nPut the insert on a higher z-index over the main clip:\n```html\n<video id=\"ins\" class=\"clip\" src=\"insert.mp4\" data-start=\"3\" data-duration=\"2\" muted data-track-index=\"1\" style=\"z-index:2\"></video>\n```\n\n### In Remotion\n\n```tsx\n<AbsoluteFill><Video src={main} /></AbsoluteFill>\n<Sequence from={90} durationInFrames={60}><Video src={insert} muted /></Sequence>\n```\n\n### In CapCut\n\nDrag the insert onto the track above the main track (Overlay on mobile), stretch it to full frame, mute it.\n\n### Where this comes from\n\n- [Wikipedia: cutaway](https://en.wikipedia.org/wiki/Cutaway_(filmmaking))\n- [FFmpeg filters: overlay](https://ffmpeg.org/ffmpeg-filters.html#overlay)\n- [HyperFrames: data attributes](https://hyperframes.heygen.com/concepts/data-attributes)","useWhen":["Explainers, interviews, product demos, and to cover a cut in the main shot."],"notFor":["Inserts unrelated to what is being said feel like filler."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/cuts.md#cutaway-insert","repo":"vargHQ/skills","path":"varg-video-edit-library/references/cuts.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"Wikipedia: cutaway","kind":"link","url":"https://en.wikipedia.org/wiki/Cutaway_(filmmaking)","license":"link-only"},{"role":"source","label":"FFmpeg filters: overlay","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#overlay","license":"link-only"},{"role":"source","label":"HyperFrames: data attributes","kind":"link","url":"https://hyperframes.heygen.com/concepts/data-attributes","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Cutaway / Insert"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":[],"aliases":["insert shot","cutaway","cut-in","detail shot"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/84c67c11caa8/take-cutaway-insert.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADMUlEQVR4nDWT227kRBCGq7v6YHtszzFZNgmR0HKQAC3ijgukfQXekUvueAUkHgAhuOAQCXaJkkk04xm73e4jZST6wmp1t6vq//4q9vEnylqnhRqMSw5yBpbn71dvloj4zzv3+NiPllubiornnFPk0xQTA1pK4bxHSAmE1noYnGywADbYHOmIz48OT6ZtW6ny7kKcT7KDMSdAjqoEqTltrfXWZB9AI1QaRXc2THDBOKRMaSSClBAj/PGbX1SH3a5wJr7cqItWHbvsnI+CVVW1fxgKBtWWeQerCTbbWnx0xZTSq5qlVNkxUS2FZiShqlAIcTz5FPVuW1lrzxsYTQKGKburpaKXLoi+N4cRH1wnYOI5sochRFKPIKT0DOq66XwsZdksjynC/tyjwLrN623jvQshiFya0eg9V0nmWhpjxLs+kBbkUVFh0opCFCAu2tXLYb2slt///sN6tSrKgxBQIGec0CJjRDMEzgYZZhZBU5Xi9nbmXYk5kIkipfTZQ3jF1Oeby+7YfRdf/PTL42ITikIsVI4hNE11Pp8zFoZkokgxLcArCeKD6wWpzRlTikIpO9od06uI6a7r3r69uHK7myXszhzRT0BmT9O03W5D5pBjZDz4VB36sizE3b2PIbL/PJ9SGEd36Ifbvv2GyT0MOA3E687kECYWQSBetjKlwQ4ZouOgeErPTT30gziO4MPcgpwxLcamLIqdPKrTt+gfL54GVXrzPE0IwFZVUGVZMYgAy/Wi68L9E5BDcW4bcjgwCHxV57LQqNLMokDn3KiFTLgwCQt9HDzjrC6xbaRWo0BRSRmpg9Y6BC9M5vTb9BQktTqQqlwttUySDFaSEvsFceWMoDSaSykXOpJD0WNwiROOAFcNAdH74dw2rVgX5FQgjEQ6m+ysA85MsNQRKWebWhogmgNeyYEHw+jeUtDNyn1Y1z/f+6fnbgzFw3kQf56219fXvXxBOTgHzglfQokieu/Dp8WP779Xq3QCGH51r4MP+8UrqvHunHAUkd5uqMx0Op0o0M3ll29Ozdc0FiwH+H9xFujkiF8Q3wrNaG0fXhO7Hm/oNsI8TAlmrxt+PP7917/QxuafzgXglAAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Tears of Steel (2012) + Sprite Fright (2021)","rights":"cc-by","note":"insert between two shots, with the timeline strip of the edit. Footage: Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0; Sprite Fright (2021), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":240047,"addedAt":"2026-10-28"}},{"id":"vargHQ/cross-cutting","slug":"cross-cutting","name":"Cross-Cutting","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["storytelling","tension","pacing","ffmpeg","hyperframes","remotion","capcut"],"summary":"Alternate between two or more scenes happening at the same time, building tension or comparison.","description":"A, B, A, B… with shots getting shorter as the two lines converge.\n\n**When:** Chases, countdowns, before/after stories, two people preparing for the same moment.\n\n**Watch out:** Alternating without escalation (same lengths throughout) flattens the tension.\n\n**Timing:** Shorten each pair: e.g. 3 s, 2 s, 1.2 s, 0.8 s\n\n**Also called:** parallel editing, intercutting, parallel action\n\n### In FFmpeg\n\nGenerate segments from two sources with shrinking lengths, then concat:\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]split=2[a1][a2];[1:v]split=2[b1][b2];\\\n [a1]trim=0:3,setpts=PTS-STARTPTS[s1];[b1]trim=0:2,setpts=PTS-STARTPTS[s2];\\\n [a2]trim=3:4.2,setpts=PTS-STARTPTS[s3];[b2]trim=2:2.8,setpts=PTS-STARTPTS[s4];\\\n [s1][s2][s3][s4]concat=n=4:v=1:a=0[v]\" -map \"[v]\" out.mp4\n```\n\n### In HyperFrames\n\nAlternate `<video>` clips with relative starts (`data-start=\"s1\"`, `data-start=\"s2\"` …) and source offsets that keep each storyline moving forward.\n\n### In Remotion\n\nBuild the list of `{src, trimBefore, frames}` in code and map it to `<Series.Sequence>`; shrink `frames` each round.\n\n### In CapCut\n\nLay storyline A on the main track, cut it into pieces and drop pieces of B between them.\n\n### Where this comes from\n\n- [Wikipedia: cross-cutting](https://en.wikipedia.org/wiki/Cross-cutting)\n- [FFmpeg filters: trim](https://ffmpeg.org/ffmpeg-filters.html#trim)","useWhen":["Chases, countdowns, before/after stories, two people preparing for the same moment."],"notFor":["Alternating without escalation (same lengths throughout) flattens the tension."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/cuts.md#cross-cutting","repo":"vargHQ/skills","path":"varg-video-edit-library/references/cuts.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"Wikipedia: cross-cutting","kind":"link","url":"https://en.wikipedia.org/wiki/Cross-cutting","license":"link-only"},{"role":"source","label":"FFmpeg filters: trim","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#trim","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Cross-Cutting"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":[],"aliases":["parallel editing","intercutting","parallel action"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/8b29dbdf43a4/take-cross-cutting.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADcklEQVR4nD2TS28cRRCA+1E9z519ZXe9jp0Y20RxJKxERJZywBwjzgj+BX+G/wASNw4oHCAXDoAUZJRYIiY2Dl7Wzq699szszuzOTPd0Nz22lJZ6WlXdU4+vqvD3B2cIIYxuljRbaZ0kSb3ua62BOEa8uTOH0RSEcs4xxgCgrvUKE/MFiql5SrV4by7BeBRGg+RX83qj+VEQBKpoUEolRkZDlJD5wrZtqo0IRnPtAoEUEQBNElTzaxSVlSXQQvKJmAEwdvHPB/46yj3PBUqq27nUg8llO/B6vSV2E+S1eziePGu32+PwThu11oNO5ZMwx/GLK0x9e8Hi0/DYyfOu0/VRWyvtMotVkQFCBEuNSZVGJZ+OsmgaeZ1kGM9d+sCyLJSskDTUqT0eRVlHLDLRCZSr85rsmJ9UKYEQhxLQCiNFMK3QlgJazbthFL25mEhZFrPTRqPRSVj87uLe/Z3hcHh5+Kq5FkRSt9q+wVARLOS8lA7ngUFK6Cydp7wwBOF3dhaxOHG4UmoYH7fpra1QKUstQePx9u24dOte/S3JkOxjkBVaArI6idnnaTEYvCsIGPZwMBtiIDioSsmFnqrx7uZmt9t9OfiDCfYxbtc00fTW+ZVsBMYzyS4XLWKTquKqEGVZoSal1EC5uO6FinyPdBzL3d165HneN//+HI6ifrxtZ3a92HIcSWUQT684QY1mE+MCl0JIaQpLTGIVsrwASmtQYwANCEDB87d/er6XZ5nW8rv+X4SSDxdjW9ifnez4FMJeLZdKZNwJkDBVpNi0ITGtu7v0uRAln6FwcsV03SS1V740+dctHySJdWwaZd86NGwUyUyv3cG71LKA2HkuFBc2ZY4HZVnCD9/+Ml8sOM9RWRpqvV5v+8H9zc3Nif3KlgugYAZCKW7M/c1GmOOj6axFmjuNp4u84Dl3XTeAglgMoiRGSiGsEaMK5ePzk/H5xd7B4eMnD5f7y57/JssygiZccJOqWUfsSCd6lhVL/f6a80mGqZMXZjAB/Xe+fHs5h951o1ON9R39wkkm8NOP3tpasPYoiuITdc+AuDt/7npe152laTqQ7REdrbd+s2xbC+csTQENw42N7bD2xIBTiBljT+Wz1dXVbb4v+f6LI0knkz33SxPXp+rrlZUVlqLReDyVX5gJfTj9ihDM2dLr1+P/AUuP2D2HqGc7AAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Coffee Run (2020) + WING IT! (2023)","rights":"cc-by","note":"crosscut between two shots, with the timeline strip of the edit. Footage: Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":213151,"addedAt":"2026-10-28"}},{"id":"heygen-com/invisible-cut","slug":"invisible-cut","name":"Invisible Cut","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["seamless","one-shot","travel","reveal","ffmpeg","hyperframes","remotion","capcut"],"summary":"Hide a cut inside a frame that is fully covered (a passing object, a dark wall, a blur) to fake one continuous shot.","description":"Built on [Whip Pan Cut](https://github.com/heygen-com/hyperframes/tree/main/registry/components/whip-pan-cut) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nThe camera passes behind a pillar or into darkness; when it comes out we are somewhere else, with no visible edit.\n\n**When:** One-take illusions, travel and transformation reels, product reveals through an object.\n\n**Watch out:** If the cover does not fill the whole frame for at least one frame, the edge of the cut flashes.\n\n**Timing:** Cut on a fully covered frame; optionally a 2–4 frame crossfade inside the cover\n\n**Also called:** hidden cut, seamless cut, stitch cut, one-shot illusion, wipe-by\n\n### In FFmpeg\n\nCut on the fully covered frame and smooth it with a very short fade inside the cover (offset = A length - T):\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB[a];[1:v]fps=30,settb=AVTB[b];\\\n [a][b]xfade=transition=fade:duration=0.1:offset=3.9[v]\" -map \"[v]\" out.mp4\n```\n\n### In HyperFrames\n\nCover-and-cut overlays: `hw-scribble-transition` and `mk-clone-wall-transition` fill the frame, the host cuts beneath, then they clear. Camera versions: `whip-pan-cut`, `zoom-through-transition`.\n\n### In Remotion\n\nUse `fade()` with `linearTiming({durationInFrames: 3})` placed exactly on the covered frames, or `TransitionSeries.Overlay` to drop a cover element over the cut without changing timing.\n\n### In CapCut\n\nCut on the dark/covered frame; add a short Mix (0.1–0.2 s) or a mask that follows the passing object if the cover is not perfect.\n\n### Ready-made components\n\n- [Whip Pan Cut](https://skills.varg.ai/component/hf.whip-pan-cut/) (hyperframes): npx hyperframes add whip-pan-cut\n- [Zoom Through Transition](https://skills.varg.ai/component/hf.zoom-through-transition/) (hyperframes): npx hyperframes add zoom-through-transition\n- [Scribble Transition](https://skills.varg.ai/component/hf.hw-scribble-transition/) (hyperframes): npx hyperframes add hw-scribble-transition\n- [Text Clone Wall Transition](https://skills.varg.ai/component/hf.mk-clone-wall-transition/) (hyperframes): npx hyperframes add mk-clone-wall-transition\n- [Push Through](https://skills.varg.ai/component/remocn.push-through/) (remocn): npx shadcn@latest add @remocn/push-through\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [Remotion: <TransitionSeries>](https://www.remotion.dev/docs/transitions/transitionseries)\n- [HyperFrames: compositions](https://hyperframes.heygen.com/concepts/compositions)","useWhen":["One-take illusions, travel and transformation reels, product reveals through an object."],"notFor":["If the cover does not fill the whole frame for at least one frame, the edge of the cut flashes."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/whip-pan-cut","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Whip Pan Cut · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.whip-pan-cut/","license":"Apache-2.0","note":"A full-frame whip pan: scene A whips off laterally with capped directional motion blur while scene B enters in the same direction at matched velocity, on a speed-ramp profile with a decelerating catch…"},{"role":"component","label":"Zoom Through Transition · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.zoom-through-transition/","license":"Apache-2.0","note":"A transition that zooms through a focal card into the next scene."},{"role":"component","label":"Scribble Transition · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.hw-scribble-transition/","license":"Apache-2.0","note":"Overlay transition: scribble bands accumulate to cover the frame with a solid backstop, the host cuts beneath, and the scribble clears"},{"role":"component","label":"Text Clone Wall Transition · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.mk-clone-wall-transition/","license":"Apache-2.0","note":"Overlay transition: a tiled word wall covers the frame, inverts via difference blending, and clears — hard-cut the content beneath while covered"},{"role":"component","label":"Push Through · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.push-through/","license":"MIT","note":"A dolly transition that blows the outgoing scene past the camera while the next one approaches from the depth."},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"Remotion: <TransitionSeries>","kind":"link","url":"https://www.remotion.dev/docs/transitions/transitionseries","license":"link-only"},{"role":"source","label":"HyperFrames: compositions","kind":"link","url":"https://hyperframes.heygen.com/concepts/compositions","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Invisible Cut"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.whip-pan-cut","hf.zoom-through-transition","hf.hw-scribble-transition","hf.mk-clone-wall-transition","remocn.push-through"],"aliases":["hidden cut","seamless cut","stitch cut","one-shot illusion","wipe-by"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/69c8fae4041c/take-invisible-cut.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAAC9UlEQVR4nF1TyYocRxDNyLWqe2qsFuOeltUy+GCjs5Gu0gfoH3UZ/AO+6GIExvhq8MmDYbwiWeNeprq2rFwi01HdSAgHVRCZGRn54kU8ePnNz5eXl1opdrScM/vInB+urq5+/OEV7WN0p00AEFJgRPLJOR6hFIIhuqxgyoL8FBpiUHryMTKWBMsc2P+MThPd+PC2PPTB+sMXn6mUcwxBSJkYb5pmtTzPR8OEp1AuRE756EPOAFzmRGsBQBiZ9B5yYhEjBaEbRdYuy0PTPVwVnHPEKUtZnkshyzkXnKdEWbIdIl2hTWMM4Z4Q0Z9SciEpokmq1o4OOUVBCkaXgFQ0Xz38tCiKaqalUpgFnfYDhhCVFJQIjiYJIuHzHpUyAiQGu7urp+d8ULM5A2SQKMtyufQhaWOcA2L1wXpp7dB1HVdy6IcJneQTqTGkGAme4tzUdVtVZ6Oni4k4pk8IuVo9aAdelmXfT1Q//urpdrt9888NPXB9/VPbtpLqEkJgmixE4QM/1P15dd+NuWunZDnzcqaoiSYpqYV0RFM6EUJkKam4oOqlJPBcEvOQEGMqBuI+SymLBOKuGa0PkeWiUFVVUmtoVvahtYOth33n25w84phTBMgyohcJzgpqNrrA2t5zM7/dNUUx11qHQC+L3e5wc/OnMdQPud9s+65f3LvnvAuu3dz+7VwUhOjQtEra5aIitJ44x1jqMnrcbjrimCoIHt5thm39m+BIc/zJfA6Ab9/8SvGDZbe7WwUFFShpaBN1S8HUqRioiZyFi/vncWxort9td4N1trc0MjkHzgUNBHCwdouYYprINdwRdlmVVDwYzrTig9RRm4EL2w9d3SwWC6M1jfuhPhxlMXG83+/fS4Ql5BzgpDj56vW36/X6j82XtLYjjYmztqfUzg0z62O0rSm+/vxfrfSM7Sb1Mfgg75MyUZzVd7X8/rvXT54/228eUTsV1ADv5cnLPEbIQl88fvGoq6rqAn8/ojIfCXcSh9PrX67/+g9W1OiYZIJ0IQAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Coffee Run (2020)","rights":"cc-by","note":"blur between two shots, with the timeline strip of the edit. Footage: Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":199087,"addedAt":"2026-10-28"}},{"id":"heygen-com/in-camera-whip-cut","slug":"in-camera-whip-cut","name":"In-Camera Whip Pan Cut","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["whip-pan","camera","travel","energy","ffmpeg","hyperframes","remotion","capcut"],"summary":"End shot A and start shot B with real fast pans in the same direction, and cut inside the motion blur.","description":"Built on [Whip Pan Cut](https://github.com/heygen-com/hyperframes/tree/main/registry/components/whip-pan-cut) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nThe image streaks sideways into a blur and comes out of the same blur in a new place.\n\n**When:** Travel, energy reels, time jumps, \"meanwhile\" moments; shoot both whips at the same speed and direction.\n\n**Watch out:** Pans in opposite directions or at different speeds break the illusion.\n\n**Timing:** Cut in the 2–4 blurriest frames; whole whip 6–10 frames at 30 fps\n\n**Also called:** whip pan cut, swish pan, flash pan, whip transition (shot)\n\n### In FFmpeg\n\nCut on the blurriest frames; add synthetic horizontal blur around the cut to merge the two whips:\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v][1:v]concat=n=2:v=1:a=0,gblur=sigma=30:sigmaV=0:enable='between(t,3.9,4.1)'[v]\" -map \"[v]\" out.mp4\n```\n(`sigmaV=0` blurs horizontally only; A is 4 s long here.)\n\n### In HyperFrames\n\n`whip-pan-cut` primitive (matched velocity, capped directional motion blur) or the `whip-pan` shader block.\n\n### In Remotion\n\nHard cut in `<Series>`; for footage without real whips use remocn `whipPan()` as a presentation.\n\n### In CapCut\n\nCut both clips at the blurriest frames; add a Blur effect for 2–3 frames over the cut, or use a whip-style transition (see the Whip Swipe card).\n\n### Ready-made components\n\n- [Whip Pan Cut](https://skills.varg.ai/component/hf.whip-pan-cut/) (hyperframes): npx hyperframes add whip-pan-cut\n- [Whip Pan](https://skills.varg.ai/component/hf.whip-pan/) (hyperframes): npx hyperframes add whip-pan\n- [Whip Pan](https://skills.varg.ai/component/remocn.whip-pan/) (remocn): npx shadcn@latest add @remocn/whip-pan\n\n### Where this comes from\n\n- [Wikipedia: whip pan](https://en.wikipedia.org/wiki/Whip_pan)\n- [FFmpeg filters: gblur](https://ffmpeg.org/ffmpeg-filters.html#gblur)\n- [remocn: Whip Pan](https://remocn.dev/docs/transitions/whip-pan)","useWhen":["Travel, energy reels, time jumps, \"meanwhile\" moments; shoot both whips at the same speed and direction."],"notFor":["Pans in opposite directions or at different speeds break the illusion."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/whip-pan-cut","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Whip Pan Cut · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.whip-pan-cut/","license":"Apache-2.0","note":"A full-frame whip pan: scene A whips off laterally with capped directional motion blur while scene B enters in the same direction at matched velocity, on a speed-ramp profile with a decelerating catch…"},{"role":"component","label":"Whip Pan · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.whip-pan/","license":"Apache-2.0","note":"Shader transition simulating a fast camera whip pan"},{"role":"component","label":"Whip Pan · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.whip-pan/","license":"MIT","note":"A whip-pan transition that flies both scenes through the frame in one move with velocity-based motion blur."},{"role":"source","label":"Wikipedia: whip pan","kind":"link","url":"https://en.wikipedia.org/wiki/Whip_pan","license":"link-only"},{"role":"source","label":"FFmpeg filters: gblur","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#gblur","license":"link-only"},{"role":"source","label":"remocn: Whip Pan","kind":"link","url":"https://remocn.dev/docs/transitions/whip-pan","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"In-Camera Whip Pan Cut"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.whip-pan-cut","hf.whip-pan","remocn.whip-pan"],"aliases":["whip pan cut","swish pan","flash pan","whip transition (shot)"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2767af908738/take-in-camera-whip-cut.mp4","w":640,"h":400,"duration":4.3,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAAC8UlEQVR4nE1U22ocRxDtrr5Mz2h3vJLMOoklQohjJw/GT/nIfIO/wd9gQggJWOQlIAeC0MsiW/J6V7ujufWlytUjG1y7DD3dzalTdU6NfPXvpRDCC+m976PntVHgnLPK8TpKIaXEcTg/P7/864+zs7P3/58jEh8RER+JL6Fv26YoCmMc74UEvAUSiJQUmI9JMBQ/DD8l8JYUWlCiHIKE+AqoG2agFxAVYaUykJruKspcIl8mQiJOdnh89N3pqUmZC+ZITO1+wTuaGfCfX2KKXcgsnAaDGMknTJ5xkNRUizWmns3ocJbZoMxA9CWQtBEJkFuTO5ImrhFFO/oPAduuHWKw1h5rascu9k3o9n3XSJCEXD5lSjlyp7RHgCiNQhSg5ITEGzGzawe/H5MJUOjgY9IWqpnrDirJTUSZmyR4QVwKl6d7NNEzpAcpFcip2QyK+VVpY5XRWlrF+baj3QXnZVG6kvmP4xhjYHaaFBijV+Pl3M5dWrKUQWSqdsoWKcumJGrF0NIaPXfV3JXSVVwsYFRJcf9yQzID0P9sXy/EQqhfq4OqZjjWCvLP6QhO2cS8mGGTcC9w64ebYbNtQpQIRhuwmtUUwFBSb2C92a33sj8YqyfqeVmWy/CADwohK1CRJaU4+I8+bGW4LuR2YWzrQxRcEftujIH4jjVW1+ZBSmmD1+uGbugKN/QTHlZV9Qs9retay2NQapTgfdi38O4Wh7s7ngG2zr1/ssUxZdUelssYYhP3IYZetmyJi4iGGkiLOg0nqnZauaGm1rQ33c3lh+31O6LPI5IbNKFkoKr/1lhbzleswp6QtWz1ONLwBt6oXv9AV2Uqf15/PzSDbxA5VR+Yi5yCPruIBVH6z5e/P3v2VDz8ZkpyINgR1GFKo6AgxFW4rcrxhb0oVqsf1cXRye3d0cA2BLgfV8xToua73U6v/754UpzsPj7OtqdHmSTLmQdHZZezyYvi0fK3Q+dPHr9VpyCg+GpUY/5ymOXb/1afAND49sSAtnqFAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Coffee Run (2020)","rights":"cc-by","note":"whip between two shots, with the timeline strip of the edit. Footage: Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":228885,"addedAt":"2026-10-28"}},{"id":"heygen-com/speed-ramp","slug":"speed-ramp","name":"Speed Ramp","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["speed","slow-motion","velocity","music","sport","ffmpeg","hyperframes","remotion","capcut"],"summary":"Change playback speed within a shot (fast into a moment, slow on it, fast out) to stress the beat.","description":"Built on [Beat Freeze Cut](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/beat-freeze-cut) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nMotion races, suddenly drops into slow motion on the key moment, then snaps back to speed.\n\n**When:** Sport, action, product hero shots, music edits; shoot at 60/120 fps for clean slow parts.\n\n**Watch out:** Slowing 24/30 fps footage below ~0.5× stutters; ramps on talking heads distort speech.\n\n**Timing:** Ramp transitions of 4–8 frames between speeds; slow section 0.3–0.5×\n\n**Also called:** time ramp, speed curve, velocity ramp, ramping\n\n### In FFmpeg\n\nFFmpeg has no speed curve; approximate with constant-speed segments (1× → 2× → 0.5×):\n```bash\nffmpeg -i in.mp4 -filter_complex \\\n\"[0:v]split=3[s1][s2][s3];[0:a]asplit=3[t1][t2][t3];\\\n [s1]trim=0:2,setpts=PTS-STARTPTS[v1];[t1]atrim=0:2,asetpts=PTS-STARTPTS[a1];\\\n [s2]trim=2:4,setpts=(PTS-STARTPTS)/2[v2];[t2]atrim=2:4,asetpts=PTS-STARTPTS,atempo=2[a2];\\\n [s3]trim=4:5,setpts=(PTS-STARTPTS)*2[v3];[t3]atrim=4:5,asetpts=PTS-STARTPTS,atempo=0.5[a3];\\\n [v1][a1][v2][a2][v3][a3]concat=n=3:v=1:a=1[v][a]\" -map \"[v]\" -map \"[a]\" -r 30 out.mp4\n```\natempo accepts 0.5–100; chain it for more. Add `minterpolate=fps=60` for smoother slow motion.\n\n### In HyperFrames\n\nA `rate` lane in `data-automation` (0.1–10, log-scale interpolation):\n```html\n<video src=\"clip.mp4\" data-start=\"0\" data-duration=\"4\" data-track-index=\"0\"\n  data-automation='{\"version\":1,\"lanes\":[{\"target\":\"rate\",\"points\":[{\"t\":0,\"v\":1},{\"t\":2,\"v\":4},{\"t\":4,\"v\":0.5}]}]}'></video>\n```\n\n### In Remotion\n\n`playbackRate` cannot be interpolated directly. Accumulate the rate per frame and pass it as `trimBefore`, as in Remotion's accelerated-video snippet (each frame wraps the video in `<Sequence from={frame}>`).\n\n### In CapCut\n\nSelect clip → Speed → Curve → a preset (Montage, Hero, Bullet, Jump Cut, Flash In, Flash Out) or Custom and drag the points.\n\n### Ready-made components\n\n- [Beat Freeze Cut](https://skills.varg.ai/component/hf.beat-freeze-cut/) (hyperframes): npx hyperframes add beat-freeze-cut\n\n### Where this comes from\n\n- [Wikipedia: speed ramping](https://en.wikipedia.org/wiki/Speed_ramping)\n- [FFmpeg filters: setpts](https://ffmpeg.org/ffmpeg-filters.html#setpts)\n- [FFmpeg filters: atempo](https://ffmpeg.org/ffmpeg-filters.html#atempo)\n- [Remotion: speed ramp snippet](https://www.remotion.dev/docs/miscellaneous/snippets/accelerated-video)\n- [HyperFrames: speed ramps](https://hyperframes.heygen.com/reference/speed-ramps)\n- [CapCut: speed curve tool](https://www.capcut.com/tools/speed-ramp)","useWhen":["Sport, action, product hero shots, music edits; shoot at 60/120 fps for clean slow parts."],"notFor":["Slowing 24/30 fps footage below ~0.5× stutters; ramps on talking heads distort speech."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/beat-freeze-cut","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Beat Freeze Cut · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.beat-freeze-cut/","license":"Apache-2.0","note":"A beat-driven speed ramp, freeze-frame hit, and hard-cut sequence for music-led promos and montages."},{"role":"source","label":"Wikipedia: speed ramping","kind":"link","url":"https://en.wikipedia.org/wiki/Speed_ramping","license":"link-only"},{"role":"source","label":"FFmpeg filters: setpts","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#setpts","license":"link-only"},{"role":"source","label":"FFmpeg filters: atempo","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#atempo","license":"link-only"},{"role":"source","label":"Remotion: speed ramp snippet","kind":"link","url":"https://www.remotion.dev/docs/miscellaneous/snippets/accelerated-video","license":"link-only"},{"role":"source","label":"HyperFrames: speed ramps","kind":"link","url":"https://hyperframes.heygen.com/reference/speed-ramps","license":"link-only"},{"role":"source","label":"CapCut: speed curve tool","kind":"link","url":"https://www.capcut.com/tools/speed-ramp","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Speed Ramp"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.beat-freeze-cut"],"aliases":["time ramp","speed curve","velocity ramp","ramping"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/58326a2880d1/take-speed-ramp.mp4","w":640,"h":400,"duration":4.2,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADYElEQVR4nC1TyW4bRxDt6nVmOAtXUZSsjRakKAriREByMAxEQH4w35FzgOQDjBycQw5CAEeKY1kmZTESSZGc4XB6TVNwoS/d1f1e1etX8MNxTDBZLazSmpEQAL6nk97m5jfNTwihVRKVq9WvV93pdHqJe/5Ez4ZpmkbCnJ2dpY2wXJa//PbGWkvRU1DOKlVZZAjGbys2KcmuRUlcq+YwHdsAuRD8JWqNWRL04uvT4y7lnEtVcQbHX+zleb4GMtZQSjFG2FpnbRGkg9L8PojjWvzVfJQ4ZJwiFAeEVFof7+9ExJ8gpQ1CjhD84vTw+v37zxUBOA8klU9QT46dvShbUEFeCc4YwZIjzQBZQN1WKrDVSlGPAdga6/Ric6NO/c4DYYSEYBpQEFJrPZtamO7e7u5NGQ6Ht/2QAOVgKmwlo6zVbjM0t1YB9nU4vzhndFw4L7CAVRAEYWA5x0ZSWRTYLNp1/uN5/+Ki+DiAh4eH/3KXZdlsKfWn+xpedLtdBGsYBL4ySmeFI5RIrNJ2PQLrZdNO0pBFOL0eDn4ejJ4/P8zJ2yW3WQwMypsxnv07+PZwo9EV3Ja+QS5Cxij15RitEWdZ1vFCjB5mThZZVnf4rhk3onFp7gYn+52iU/t7WIwnk0aSPevvJYHmYJ0DxoXXQSpJa5xoo5mpVo8PhVkksZc6pgxeodF3p417uhVFtUe39tdBc/r69e3Y2m6n02s8/bZzUqrPBtppe8FotUAgcxFowRBefxTdk6hWVCckv7282OeZd827nd35DvtDqvnjNVFhGEXWSOdckmAftJZyIUT7qOUfE+aMNnmFfHo5i+8qeyRcjPB9cytOYtVJjs5f4kk5Ho8FhyjEnPvWeMiBeNdcDleEqgOJ+/2DrQ3jmeeFLpbLeX1bR+EbsDZtLBpNT7aqRSxLTzt+HnpKVUWRe20ZYw6TdWtSSmzwuw92cHd1+Iwd7O/Xo0W7JqgIgOAPBFPmWYUlFBkjjVHgngJElGAFXmakYD1rI9Xa7myZaLsE+HNp/vqHd+uq1+tt0BIsBiOYo63yqixXTfzxaQioh0HW14GNclVVlVZMJ1M61Xtf9s8nyUufxsh69W5MdSd5mq9fSSy8RV6tfiI4PSFXHkF6M8F6GJyfJ2T8TvKdcjD6H0aIvia/Bp42AAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023)","rights":"cc-by","note":"ramp between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":188084,"addedAt":"2026-10-28"}},{"id":"heygen-com/freeze-frame","slug":"freeze-frame","name":"Freeze Frame","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["freeze","character-intro","highlight","comedy","ffmpeg","hyperframes","remotion","capcut"],"summary":"Stop on a single frame for a beat, to introduce a character, land a joke or add a caption.","description":"Built on [Beat Freeze Cut](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/beat-freeze-cut) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nMotion halts on one frame (often with a flash, a zoom or a name card), then resumes or cuts away.\n\n**When:** Character intros, \"record scratch\" moments, highlights in sport, the end of a short.\n\n**Watch out:** Freezing on a blurred frame; pick a sharp frame with a clear expression.\n\n**Timing:** 0.5–2 s hold; often a 2-frame white flash on entry\n\n**Also called:** freeze, hold frame, still frame, frame hold\n\n### In FFmpeg\n\nFreeze at 2 s for 1 s and resume (tpad clones the last frame; apad keeps audio in sync):\n```bash\nffmpeg -i in.mp4 -filter_complex \\\n\"[0:v]split[v1][v2];[v1]trim=0:2,setpts=PTS-STARTPTS,tpad=stop_mode=clone:stop_duration=1[f];\\\n [v2]trim=2,setpts=PTS-STARTPTS[r];[f][r]concat=n=2:v=1:a=0[v];\\\n [0:a]asplit[a1][a2];[a1]atrim=0:2,asetpts=PTS-STARTPTS,apad=pad_dur=1[fa];\\\n [a2]atrim=2,asetpts=PTS-STARTPTS[ra];[fa][ra]concat=n=2:v=0:a=1[a]\" -map \"[v]\" -map \"[a]\" out.mp4\n```\nAlternative: `loop=loop=29:size=1:start=60,setpts=N/FRAME_RATE/TB` repeats frame 60.\n\n### In HyperFrames\n\nInsert the held frame as an image clip (extract it first with ffmpeg), then resume the video with `data-media-start`:\n```html\n<img class=\"clip\" src=\"held.png\" data-start=\"2\" data-duration=\"1\" data-track-index=\"0\" />\n```\nArbitrary mid-source freezes need that pre-extracted still.\n\n### In Remotion\n\n`<Sequence freeze={60}>` (v4.0.476+) or `<Freeze frame={60} active={(f) => f >= 60 && f < 90}>`; videos pause while frozen.\n\n### In CapCut\n\nPlayhead on the frame → Freeze in the toolbar (desktop, inserts a ~3 s still) or Edit → Freeze (mobile); drag its edges to set the hold.\n\n### Ready-made components\n\n- [Beat Freeze Cut](https://skills.varg.ai/component/hf.beat-freeze-cut/) (hyperframes): npx hyperframes add beat-freeze-cut\n- [Freeze-Frame Dressing](https://skills.varg.ai/component/hf.freeze-frame-dressing/) (hyperframes): npx hyperframes add freeze-frame-dressing\n\n### Where this comes from\n\n- [Wikipedia: freeze frame shot](https://en.wikipedia.org/wiki/Freeze_frame_shot)\n- [FFmpeg filters: tpad](https://ffmpeg.org/ffmpeg-filters.html#tpad)\n- [FFmpeg filters: loop](https://ffmpeg.org/ffmpeg-filters.html#loop)\n- [Remotion: <Freeze>](https://www.remotion.dev/docs/freeze)\n- [Remotion: <Sequence>](https://www.remotion.dev/docs/sequence)\n- [CapCut: freeze frame (resource article)](https://www.capcut.com/resource/davinci-resolve-freeze-frame)","useWhen":["Character intros, \"record scratch\" moments, highlights in sport, the end of a short."],"notFor":["Freezing on a blurred frame; pick a sharp frame with a clear expression."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/beat-freeze-cut","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Beat Freeze Cut · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.beat-freeze-cut/","license":"Apache-2.0","note":"A beat-driven speed ramp, freeze-frame hit, and hard-cut sequence for music-led promos and montages."},{"role":"component","label":"Freeze-Frame Dressing · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.freeze-frame-dressing/","license":"Apache-2.0","note":"Timeline-driven paper, tape, and flash dressing for a freeze-frame or background-removed subject"},{"role":"source","label":"Wikipedia: freeze frame shot","kind":"link","url":"https://en.wikipedia.org/wiki/Freeze_frame_shot","license":"link-only"},{"role":"source","label":"FFmpeg filters: tpad","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#tpad","license":"link-only"},{"role":"source","label":"FFmpeg filters: loop","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#loop","license":"link-only"},{"role":"source","label":"Remotion: <Freeze>","kind":"link","url":"https://www.remotion.dev/docs/freeze","license":"link-only"},{"role":"source","label":"Remotion: <Sequence>","kind":"link","url":"https://www.remotion.dev/docs/sequence","license":"link-only"},{"role":"source","label":"CapCut: freeze frame (resource article)","kind":"link","url":"https://www.capcut.com/resource/davinci-resolve-freeze-frame","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Freeze Frame"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.beat-freeze-cut","hf.freeze-frame-dressing"],"aliases":["freeze","hold frame","still frame","frame hold"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/bc8c60f39222/take-freeze-frame.mp4","w":640,"h":400,"duration":5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAAD60lEQVR4nBVUS28bVRSeO3PnzmRsjz1+O7HjOM6zcSJFtCAUhYC66qpCQiAhobLIBlGBhMSSBX+BrpCQQEisgEUluglS0yYiESmJAm0dQvys48RJ/BiPx2PP497L5CzO6tP5zvm+cw749qevNzY2MHLa7Y5FmuOplD88YFn2cNdgGGYinGxcNHQdEUolOCLLstZvYIw5yTccDt9/9w1BEOI3TkulEgQcabYv5zM3lbD5xSf39/f3Hz7+PhQKrSYDLnTl1uubm5vHOuERH/QH3HIWsPqmEUTh+59/+tbdQaVSrnW1c8jDQu/R7Q9HF/0z0WgsraSzd7JezP65t5eKK4VCwQPReDxxYXR5hCDkLNsSKIomIl99+dn88nKl812++LfJ9tOZGRhUgu5QT6pPcrnFeeVNwMDVW9OZxMhZpTrseCrHx+OxuGoLmqb1CYcdCvDwg/c+ms9N0+6VQ0SO+v1+8ap5BU2TYAyM9tDUbJEzOWBbYBALSdgM1s9Fh/EhTyCiEL3bUQIyJRiYjEeEjIuiOCFOGgHageddQmFftyyTGtRjAu+RphBCogwCHiE1anXbsYMXambCb1TrqVQqnp75Y2enh0JnXXJYBI4DDSj1jWzbrBtQhj3NGQxsB2VrLenHZxQA9m1FXVpalMyzVDKsG1wmKYuRd4rXUbAtk5PHX1bUvOlgx2EY1zRZDlKEfFDvEgAkyRNFQhCDa2txv2mqF4XCVd0NFYSTDJSVy+6go7qSC74RJiBDFGu6vYtcz81+b0DXdciBAEK85BnwTAvRxyzknJ5aL5iDLr7o2Gt37rqkT3cOYpEQ5H35fF4Wql5e9MPfKKE8HVJAgQ68lgVXFmx3OXh04A4FQB9CiM6XatUXydTa6vxyYizabLZG4yG9rwdjE7woXFwelkt1fFYzXZuIiAlhGNdNDP99XnP3mBLWsmybEJcn482OjaWRKKlaP4IdQUT/VcqZiczJ8fNcLjc9p2xtbRPECzxkGMyyvNvyYGBAFok85AljiTKigLg8qfS0qnY0te0iCkd5y7IcBzzd3l3ITJpaSwgICzNzLa4IAPBIwMVLnhHsiHBq5vpqWIbjed62+Hgsm5ZvPHjwTVUufXzvnm0NnuX3GrWr2akpWQmWX51Wdxvr6+uWT9ne2mprRy6ZMRwSTOAvD81wOMJIo65GPA2lhxO/viweNSfLPQZsddIhYI7M+VJJ2xs6fbVTKJxArVjcYcYysZQJyo2u7Th9KrU7bfj7I/Hm2msd3wqlFDLWdglzXAQmZlss+fkfKyBhyaNAwavX9NvDv6bi4dnwqXn0w0kecJDLAPdBMLYwnj9t/g/wGRVFm9dVjwAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Big Buck Bunny (2008) + Charge (2022)","rights":"cc-by","note":"freeze between two shots, with the timeline strip of the edit. Footage: Big Buck Bunny (2008), (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Charge (2022), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":204630,"addedAt":"2026-10-28"}},{"id":"heygen-com/beat-synced-cut","slug":"beat-synced-cut","name":"Beat-Synced Cut","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["music","beat","montage","reels","ffmpeg","hyperframes","remotion","capcut"],"summary":"Place cuts on the beats of the music so the edit feels driven by the track.","description":"Built on [Beat Timeline](https://github.com/heygen-com/hyperframes/tree/main/registry/components/beat-timeline) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nEvery cut lands on a kick, snare or downbeat; bigger changes on the bar or the drop.\n\n**When:** Montages, music videos, reels, ads with a music bed.\n\n**Watch out:** Cutting on every single beat for a whole piece gets monotonous; vary between beats, half-bars and bars.\n\n**Timing:** Cut 1–2 frames before the transient so the change lands with the sound\n\n**Also called:** cut to the beat, beat sync, music sync, auto beat\n\n### In FFmpeg\n\nFFmpeg has no beat tracker. Get beat times elsewhere (e.g. `aubio beat song.wav`, librosa, or `npx hyperframes beats`), then trim each shot to the gap between beats:\n```bash\n# beats.txt: 0.00 0.52 1.04 1.56 ...\nffmpeg -i s1.mp4 -i s2.mp4 -i s3.mp4 -i song.wav -filter_complex \\\n\"[0:v]trim=0:0.52,setpts=PTS-STARTPTS[a];[1:v]trim=0:0.52,setpts=PTS-STARTPTS[b];\\\n [2:v]trim=0:1.04,setpts=PTS-STARTPTS[c];[a][b][c]concat=n=3:v=1:a=0[v]\" \\\n  -map \"[v]\" -map 3:a -shortest out.mp4\n```\n\n### In HyperFrames\n\n`npx hyperframes beats` writes a Studio beat grid for the music `<audio>` (`data-timeline-role=\"music\"`); for a full beat-cut video use the music-to-video workflow. Blocks: `beat-timeline`, `beat-accent`, `beat-freeze-cut`.\n\n### In Remotion\n\nConvert beat seconds to frames (`Math.round(t * fps)`), compute each `durationInFrames` as the difference, map to `<Series.Sequence>`, and add `<Audio>` for the track.\n\n### In CapCut\n\nSelect the music → Beats (auto beat markers) → cut clips to the markers; templates also auto-sync clips to beats.\n\n### Ready-made components\n\n- [Beat Timeline](https://skills.varg.ai/component/hf.beat-timeline/) (hyperframes): npx hyperframes add beat-timeline\n- [Beat Accent](https://skills.varg.ai/component/hf.beat-accent/) (hyperframes): npx hyperframes add beat-accent\n- [Beat Freeze Cut](https://skills.varg.ai/component/hf.beat-freeze-cut/) (hyperframes): npx hyperframes add beat-freeze-cut\n- [varg Music Video](https://skills.varg.ai/component/varg.music-video/) (varg): git clone https://github.com/vargHQ/code2video-templates && python3 code2video-templates/varg-music-video/scripts/songmap.py song.mp3 --lyrics lyrics.txt --out songmap.json\n- [Anime Triple Split](https://skills.varg.ai/component/varg.anime-triple-split/) (varg): git clone https://github.com/vargHQ/code2video-templates && cd code2video-templates/anime-triple-split && bash make.command\n\n### Where this comes from\n\n- [FFmpeg filters: concat](https://ffmpeg.org/ffmpeg-filters.html#concat-filter)\n- [FFmpeg filters: trim](https://ffmpeg.org/ffmpeg-filters.html#trim)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)","useWhen":["Montages, music videos, reels, ads with a music bed."],"notFor":["Cutting on every single beat for a whole piece gets monotonous; vary between beats, half-bars and bars."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/beat-timeline","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Beat Timeline · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.beat-timeline/","license":"Apache-2.0","note":"A paused master-timeline orchestration spine that pins titled beat rows to evenly spaced named labels. Each row enters on its label, holds with the sequence, then exits with the group."},{"role":"component","label":"Beat Accent · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.beat-accent/","license":"Apache-2.0","note":"A single music-hit sting: impact flash, micro scale-pulse on the subject, immediate decay."},{"role":"component","label":"Beat Freeze Cut · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.beat-freeze-cut/","license":"Apache-2.0","note":"A beat-driven speed ramp, freeze-frame hit, and hard-cut sequence for music-led promos and montages."},{"role":"component","label":"varg Music Video · varg","kind":"link","url":"https://skills.varg.ai/component/varg.music-video/","license":"MIT","note":"An AI music video from a song: song map with beats and word timings, a beat-grid storyboard, Seedance scenes with QA, a frame-exact cut on the song, lyrics and graphics in HyperFrames."},{"role":"component","label":"Anime Triple Split · varg","kind":"link","url":"https://skills.varg.ai/component/varg.anime-triple-split/","license":"MIT","note":"Three live video panels slam onto screentone paper one per beat — ink borders, slanted gutters, an impact flash and a katakana SFX stamp — then the page tears away."},{"role":"source","label":"FFmpeg filters: concat","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#concat-filter","license":"link-only"},{"role":"source","label":"FFmpeg filters: trim","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#trim","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Beat-Synced Cut"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.beat-timeline","hf.beat-accent","hf.beat-freeze-cut","varg.music-video","varg.anime-triple-split"],"aliases":["cut to the beat","beat sync","music sync","auto beat"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/9f0cdccc8f5e/take-beat-synced-cut.mp4","w":640,"h":400,"duration":3.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADB0lEQVR4nCWTTY8bRRCG+6O6xzP+xBsvrDf2siEhRAkrokBETog/wZ0D/zAXTkiEAyiHKMoPSHJKsL3ZtVl7ZvqjmrftkSx5uqreeuqtHvnT/a5WardJIQRNZUrpB3k9Pzu5+OyDEKIpTV3739+fLBaL9a2v7t67OxkkY+x6c2WMqUrjvXv+/B9UkRJKJGWM8L6JoR2Px2F25uezZT9qrajeXa9Whbm8PT3+/tkFimNyZadzMp2gzeXqXwh9/WC+vdmSD15pJY1VRj349v75+R1jCR0WURhFpe3R9PjeFyLG8GnXNk1TWM3EQTu0GQ5HWuuLh9W7d+/p/PzL5XJZ1+3Tp4+PPj9hDt4xknbo2EYnkpSSun2rlQ1rPMPBpKp6WkvkRJtGRWe9/Hh8a0TT+Z3j6cy7pt/vhxgGg4EiAqMWMkaud1tmLmOUzMPRoOpV1uqESASj0Jos0Wg4buqWXvz9enx09OzJIxQUhUH/xIk5ssJf2ev3vQ8iBSGk0rprOzfbGwS1hK1G7B9TVUWvT6vLT7P5WadbwBdXt5BDTClUKdRGJTtVySHgQChgsXPRO0dGJXVIE1KqyWRCv/36C8JwEX18Em3bWghhNIURTaF1Qn9r9piM2U2e2yIIRqzsAEWk84KaphZCG2sN6aospZKIJe8i8wFQ7KXlQVxbDwHfSGRJ2QYHw7A7utnurLFwBymAjBwPlbrTzXIpYYAY8qHcP4KUoUKaTMDOi8QtuLwgQ3DNoHPbZiOMwSXhvYTPxRgtRZQcsFJ+gVcSbDnaJayCtwB0hB/uZEbI5AGp2Eh2zQe8F6rIBWmvs5eD43s6Al2ITBhqMCxihGcoFoIzPusCfmtps7OpyUtREbz6oJMYB14UnAdGmiQT87BJalL0x5v/Tk9PG3OK8O34stfrTtIrSCyvf4T2Vsww/Mcq4GY5lcG+K/6EGVYk59zy6mcAMaXNZkN/vXr7TdNpigEaLnnb68pxgrVxtd7krcUViBZlRFmkfAOuaZP3y4zdXa0/oKUkfL2r/wEnD7zuACSCNAAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Big Buck Bunny (2008) + Coffee Run (2020)","rights":"cc-by","note":"montage between two shots, with the timeline strip of the edit. Footage: Big Buck Bunny (2008), (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":233018,"addedAt":"2026-10-28"}},{"id":"heygen-com/split-screen","slug":"split-screen","name":"Split Screen","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["layout","comparison","reaction","duet","ffmpeg","hyperframes","remotion","capcut"],"summary":"Show two or more shots at once in separate panels: comparison, reaction or simultaneous action.","description":"Built on [Comparison Split](https://github.com/heygen-com/hyperframes/tree/main/registry/components/comparison-split) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nThe frame divides into halves, thirds or a grid, each panel playing its own clip.\n\n**When:** Before/after, reaction videos, duets, comparisons, phone calls.\n\n**Watch out:** Panels with the important subject cropped off at the divider; reframe each clip for its panel.\n\n**Timing:** Panels can slide in over 8–12 frames, then hold\n\n**Also called:** split-screen, side by side, multi-screen, picture grid, triptych\n\n### In FFmpeg\n\nLeft/right halves at 1920×1080 (each clip cropped to its centre half):\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]crop=iw/2:ih,scale=960:1080[l];[1:v]crop=iw/2:ih,scale=960:1080[r];\\\n [l][r]hstack=inputs=2[v]\" -map \"[v]\" -map 0:a -shortest out.mp4\n```\nFor grids use `xstack=inputs=4:layout=0_0|w0_0|0_h0|w0_h0`.\n\n### In HyperFrames\n\nTwo clips on separate tracks clipped with CSS (`clip-path` or half-width wrappers); animated dividers: `comparison-split`, `before-after-wipe`.\n\n### In Remotion\n\n```tsx\n<AbsoluteFill style={{flexDirection: 'row'}}>\n  <div style={{flex: 1, overflow: 'hidden'}}><Video src={a} style={{height: '100%', objectFit: 'cover'}} /></div>\n  <div style={{flex: 1, overflow: 'hidden'}}><Video src={b} muted style={{height: '100%', objectFit: 'cover'}} /></div>\n</AbsoluteFill>\n```\n\n### In CapCut\n\nStack clips on overlay tracks and set Position/Scale per panel, or use a split-screen layout/template.\n\n### Ready-made components\n\n- [Comparison Split](https://skills.varg.ai/component/hf.comparison-split/) (hyperframes): npx hyperframes add comparison-split\n- [Before After Wipe](https://skills.varg.ai/component/hf.before-after-wipe/) (hyperframes): npx hyperframes add before-after-wipe\n- [Anime Triple Split](https://skills.varg.ai/component/varg.anime-triple-split/) (varg): git clone https://github.com/vargHQ/code2video-templates && cd code2video-templates/anime-triple-split && bash make.command\n- [Comic Panels](https://skills.varg.ai/component/remocn.comic-panels/) (remocn): npx shadcn@latest add @remocn/comic-panels\n\n### Where this comes from\n\n- [Wikipedia: split screen](https://en.wikipedia.org/wiki/Split_screen_(video_production))\n- [FFmpeg filters: xstack](https://ffmpeg.org/ffmpeg-filters.html#xstack)","useWhen":["Before/after, reaction videos, duets, comparisons, phone calls."],"notFor":["Panels with the important subject cropped off at the divider; reframe each clip for its panel."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/comparison-split","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Comparison Split · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.comparison-split/","license":"Apache-2.0","note":"Two full-bleed panels compare before and after states as a persistent divider wipes the vivid after layer over the muted before layer and rests at a configurable split."},{"role":"component","label":"Before After Wipe · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.before-after-wipe/","license":"Apache-2.0","note":"Two full-bleed content slots compare before and after states as a persistent divider wipes the after layer over the before layer and rests at a configurable split…"},{"role":"component","label":"Anime Triple Split · varg","kind":"link","url":"https://skills.varg.ai/component/varg.anime-triple-split/","license":"MIT","note":"Three live video panels slam onto screentone paper one per beat — ink borders, slanted gutters, an impact flash and a katakana SFX stamp — then the page tears away."},{"role":"component","label":"Comic Panels · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.comic-panels/","license":"MIT","note":"The frame cracks into a three-panel comic page with speed lines, red halftone and a starburst, then the action panel bursts into a full-frame POW."},{"role":"source","label":"Wikipedia: split screen","kind":"link","url":"https://en.wikipedia.org/wiki/Split_screen_(video_production)","license":"link-only"},{"role":"source","label":"FFmpeg filters: xstack","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xstack","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Split Screen"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.comparison-split","hf.before-after-wipe","varg.anime-triple-split","remocn.comic-panels"],"aliases":["split-screen","side by side","multi-screen","picture grid","triptych"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/4a4d7640e342/take-split-screen.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADpUlEQVR4nBWTW2/bNhiGKYqULOto+RDbiWPHadOhGLKbAmvQ3u6qv2M/a3f9EwMGDCiGYUHabm0CbE6axPEpcm1Jli2Jog7U2A8ESIIE+T3vi1f4+U1bEIQVlW9uxqJcMQyjYWLP9xt2R9M0QbL56SgAiqJIkvQwmbCs4AtdVV3PfZzMdd3IYIF41RrD7XbLSAgheP78lVqtjheTVZi19xTdsAtBZYxBIaNJKmH55MmJ6635fVFEvrupmpqIUZZklaqMhoNns/ls5Y1O+v03L19ugmC18aPw9qu7a3X7YkZByR7nC4wxIQRjSVYVVTcQRljBMpayNK3pmiRhJCnG02ens/mYQx21O5FujJzHK8bcryujqhlYCIKA7LZUFPct6elxb+7utoRKqmYYtZwmDCFVVfM8R3f//sOZpYoW7Mjvf7zjbwOy61o6woWtVyHAuR9hxjiylKa8gUGnfUfiVAB2s0FJ1B8MqpXK7e0tmi8XURiavD0AyoSIEFpY6tl2tBtdX/y6iJT+YV8psxqGw5re11W5Pxhfj0BOTa1yXURtU6l3Oh/f/YamLqG0GOx1l8ulVwlITh3XDcJtyzwMg7RbK00YSlWtRHiclc7DbCgriqUeN2qU0is37Q8OX5y9/uXtW7TJ1eOTU2+1KBkMk2i9Wfs7D0pCT+9ynFa/yz063AdJksymi0G/H+52eZq9/3DleT7dswBgJQCQ20+RvIqpj9UcSLsvN5qqGkgwDTMnxPH8zvGLilJDbGFrRrPZtCxrMnEc5/H2bpamWS4UURCOLj8DSlEOyjAhW88No7AZE822FVnSjbrD3UmSzsWfpmkiAaZxMvOj6fmnXGCNRuNweMSlSFNwff73Z3ou+jHCcoWPlOxgkVuqut9qO5OHEIgUFEannsVgs40cN3A9LzGtFIplnkVxdHb2ajqdjp15q26nae43G4hsXBkwQxLiLMsgPP/08QdZSTcbpdbsaDYBZUqi+3UAgEgCX0SwWuW6gA+Xl9+Copnz+aNlmr2DAxTTGCc4WC5rltXba/F/cLsVbja2fSDpzS/bydpbi3Xbrtvdg30uebQjZckITUjBeFBKVMlLvFg6qGB7ujmIDr+LRXFV7xHo38sJ1OGP7f8YC1R8Uz+qHNcUnq0CeDGLE4GUoAQVgBGSsMgjnbNqQe+R4+vD0+/13uuCsWmRCSqkLIIi/Ku8EKCAn/wUIwShkJCEbwUZghrgM6fLyzIH3wpDAZDx/x5c+zR58RkDAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Tears of Steel (2012) + Charge (2022)","rights":"cc-by","note":"split between two shots, with the timeline strip of the edit. Footage: Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0; Charge (2022), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":235010,"addedAt":"2026-10-28"}},{"id":"vargHQ/montage-sequence","slug":"montage-sequence","name":"Montage Sequence","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["montage","music","recap","pacing","ffmpeg","hyperframes","remotion","capcut"],"summary":"A run of short shots, usually on music, that compresses time or builds one feeling.","description":"Built on [varg Music Video](https://github.com/vargHQ/code2video-templates/tree/main/varg-music-video) by varg (varg), MIT. The write-up and recipes below are varg's.\n\nMany 0.5–2 s shots in a row with a common rhythm, often with one recurring visual motif.\n\n**When:** Passage of time, progress, travel recaps, product feature runs, brand films.\n\n**Watch out:** Shots that are all the same size and motion; vary wide, medium and close and the direction of movement.\n\n**Timing:** 0.5–2 s per shot, on beats or half-bars\n\n**Also called:** montage, sequence of shots, training montage, time-compression montage\n\n### In FFmpeg\n\nConcat many normalized shots (the concat filter accepts mixed sources after scaling):\n```bash\nffmpeg -i s1.mp4 -i s2.mp4 -i s3.mp4 -i song.mp3 -filter_complex \\\n\"[0:v]trim=0:1.2,setpts=PTS-STARTPTS,scale=1080:1920,setsar=1,fps=30[a];\\\n [1:v]trim=0:0.8,setpts=PTS-STARTPTS,scale=1080:1920,setsar=1,fps=30[b];\\\n [2:v]trim=0:1.6,setpts=PTS-STARTPTS,scale=1080:1920,setsar=1,fps=30[c];\\\n [a][b][c]concat=n=3:v=1:a=0[v]\" -map \"[v]\" -map 3:a -shortest out.mp4\n```\n\n### In HyperFrames\n\nChain clips with relative `data-start` values; keep music on its own `<audio>` track; see `beat-timeline`.\n\n### In Remotion\n\nMap an array of shots to `<Series.Sequence>`; put the music in a single `<Audio>` outside the series.\n\n### In CapCut\n\nImport all shots, use AutoCut or a template, or cut manually to Beats markers.\n\n### Ready-made components\n\n- [varg Music Video](https://skills.varg.ai/component/varg.music-video/) (varg): git clone https://github.com/vargHQ/code2video-templates && python3 code2video-templates/varg-music-video/scripts/songmap.py song.mp3 --lyrics lyrics.txt --out songmap.json\n- [Beat Timeline](https://skills.varg.ai/component/hf.beat-timeline/) (hyperframes): npx hyperframes add beat-timeline\n\n### Where this comes from\n\n- [Wikipedia: montage (filmmaking)](https://en.wikipedia.org/wiki/Montage_(filmmaking))\n- [FFmpeg filters: concat](https://ffmpeg.org/ffmpeg-filters.html#concat-filter)","useWhen":["Passage of time, progress, travel recaps, product feature runs, brand films."],"notFor":["Shots that are all the same size and motion; vary wide, medium and close and the direction of movement."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/code2video-templates/tree/main/varg-music-video","repo":"vargHQ/code2video-templates","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"varg Music Video · varg","kind":"link","url":"https://skills.varg.ai/component/varg.music-video/","license":"MIT","note":"An AI music video from a song: song map with beats and word timings, a beat-grid storyboard, Seedance scenes with QA, a frame-exact cut on the song, lyrics and graphics in HyperFrames."},{"role":"component","label":"Beat Timeline · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.beat-timeline/","license":"Apache-2.0","note":"A paused master-timeline orchestration spine that pins titled beat rows to evenly spaced named labels. Each row enters on its label, holds with the sequence, then exits with the group."},{"role":"source","label":"Wikipedia: montage (filmmaking)","kind":"link","url":"https://en.wikipedia.org/wiki/Montage_(filmmaking)","license":"link-only"},{"role":"source","label":"FFmpeg filters: concat","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#concat-filter","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Montage Sequence"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["varg.music-video","hf.beat-timeline"],"aliases":["montage","sequence of shots","training montage","time-compression montage"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ca79a7f74db5/take-montage-sequence.mp4","w":640,"h":400,"duration":3.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADCUlEQVR4nDVTSY8bRRit5auqbreXGU/iYWzsyWgSJZqgIBTWE/wMzkj8w1w4cQgH4ITCHSUnEruT8dpLrbz2hJJdququet9bvubfPy6kENU2ee8l5Smlr/h6cXnx7PRfxliTq7p2v7y5WC6Xm3vXDx89PBslRbTdrLXWvVw5Z1+8+AO3SDDBkiDNWt8w347HYz+/covFamClFFTv1mVp1Ho+O//y22dKqZCsMWZ6cZ9zsSlXe+ee3Fzudnty3glQIk0knj59fH19zbVEhWVUmnSmhzSdPfokhuBvD21bNyYjRglblClGwyT5Zzf569dv6OrqwWq1OjTt82++OD+f2uiEDThUMVbVbY9DH6Oi0DLf+2q73Q5Ph3lRkOA4E3Q6Mdlm9XZy74SmiweT6cxZOxgM2uAwK1LgKBn3PtR1hbkIicc4GvV7RaaNYCyEgD8TRJLk8HRctY5e/v73+Ozsu+c3MUaI7wjEFGOIAibw/mDgnGfJp8SkkYUxh90ewjnn8IuwSMpkvbxX0PsPt/PFZVZ0edm6BRygcA7FGBeR8SzLgCtAUYBWrEOw1hqiJLrBjmMymdDPP/0YfGiaBiQA0rYtUgThEEBcSdkZj1VHNDIfYqaUFhKV8ATZH3F0JzF4V9WV4KS0zojyPL87FCNuhZCi5EyI7glHN8BkIu+dbxvGEl603sIw1KNDVWvIzDOA4jou/29Bfkcba1A+LjrfGHKAWxL+pGgdS7GFic6TRkhKetfiByPgIKBQLSV3ZKFSN+IxBOwFZkDLO3dy6UOIB2edpaax1nkk1KUkkA5aTMAt5wIuGHMUxT4OICaE2mlS2CJOArfhyIRAXEBLQKuiXpTGxiSk6SikBkBCBsQs00cUUHYpA1JAIPgcVFeMJS5J0K+v9rPZrFKfonnm6c9+v7gfXyHX1eZrWHNgc1L0ro9PwjvqBH6uXiIWxZCFL8sfAB0p7XY7+u2vf560pjEDFCx91e+Lk2Qhs9xs0A/Jl2C0LCLawh/tuhVb9C26wzm33r7jXcvF92X5H/L5xts5y0ThAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Cosmos Laundromat (2015) + Spring (2019)","rights":"cc-by","note":"montage between two shots, with the timeline strip of the edit. Footage: Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0; Spring (2019), Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0.","bytes":213675,"addedAt":"2026-10-28"}},{"id":"heygen-com/rhythmic-cutting-3-2-1","slug":"rhythmic-cutting-3-2-1","name":"Rhythmic Cutting (3-2-1)","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["pacing","build-up","reveal","music","ffmpeg","hyperframes","remotion","capcut"],"summary":"Shorten shot lengths step by step (3 s, 2 s, 1 s, half a second) to build momentum into a payoff.","description":"Built on [Beat Timeline](https://github.com/heygen-com/hyperframes/tree/main/registry/components/beat-timeline) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nEach shot is shorter than the last until the edit lands on a longer hero shot or a drop.\n\n**When:** Before a reveal, a drop in the music, a punchline or the product hero shot.\n\n**Watch out:** Accelerating with no payoff shot at the end; the rhythm needs a landing.\n\n**Timing:** e.g. 90, 60, 30, 15, 15 frames at 30 fps, then a 2–3 s hold\n\n**Also called:** accelerating cuts, shrinking shot lengths, 3-2-1 rhythm, build-up cutting\n\n### In FFmpeg\n\nGenerate trims from a list of durations and concat (bash loop builds the filter):\n```bash\nd=(3 2 1 0.5 0.5); f=\"\"; i=0\nfor x in \"${d[@]}\"; do f+=\"[$i:v]trim=0:$x,setpts=PTS-STARTPTS,fps=30[v$i];\"; i=$((i+1)); done\nfor j in $(seq 0 $((i-1))); do f+=\"[v$j]\"; done\nffmpeg -i s1.mp4 -i s2.mp4 -i s3.mp4 -i s4.mp4 -i s5.mp4 -filter_complex \"${f}concat=n=$i:v=1:a=0[v]\" -map \"[v]\" out.mp4\n```\n\n### In HyperFrames\n\nSet `data-duration` per clip to 3, 2, 1, 0.5, 0.5 with `data-start` chained to the previous id.\n\n### In Remotion\n\n```tsx\nconst lengths = [90, 60, 30, 15, 15, 75];\n<Series>{shots.map((s, i) => <Series.Sequence key={i} durationInFrames={lengths[i]}><Video src={s} /></Series.Sequence>)}</Series>\n```\n\n### In CapCut\n\nTrim clips to shrinking lengths on the main track; use Beats markers for the half-bar and bar positions.\n\n### Ready-made components\n\n- [Beat Timeline](https://skills.varg.ai/component/hf.beat-timeline/) (hyperframes): npx hyperframes add beat-timeline\n\n### Where this comes from\n\n- [Walter Murch, In the Blink of an Eye (rule of six)](https://en.wikipedia.org/wiki/In_the_Blink_of_an_Eye_(Murch_book))\n- [FFmpeg filters: concat](https://ffmpeg.org/ffmpeg-filters.html#concat-filter)","useWhen":["Before a reveal, a drop in the music, a punchline or the product hero shot."],"notFor":["Accelerating with no payoff shot at the end; the rhythm needs a landing."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/beat-timeline","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Beat Timeline · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.beat-timeline/","license":"Apache-2.0","note":"A paused master-timeline orchestration spine that pins titled beat rows to evenly spaced named labels. Each row enters on its label, holds with the sequence, then exits with the group."},{"role":"source","label":"Walter Murch, In the Blink of an Eye (rule of six)","kind":"link","url":"https://en.wikipedia.org/wiki/In_the_Blink_of_an_Eye_(Murch_book)","license":"link-only"},{"role":"source","label":"FFmpeg filters: concat","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#concat-filter","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Rhythmic Cutting (3-2-1)"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.beat-timeline"],"aliases":["accelerating cuts","shrinking shot lengths","3-2-1 rhythm","build-up cutting"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0a22ee481dbf/take-rhythmic-cutting-3-2-1.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADrUlEQVR4nBVTXW8bRRSdz539jHdtrxPbSiBJ66IE0YoHRBHiBQoSD0gVP6L9K0jwG3gG8cILSCgSQqpABZGitFVT4oQ6Tuw4rh1vd727M7szw1b36UpX5557zrnwm6++BgAoAIqiBIjkef7TH0+W6VKWoJQSSy0KIZYxY6zm1KtJhEC323nzsy9czwvmR1eLxdvx4YvBgAAAkziZno5M04xyxjl34thSKrX8ZZpKVOhqAkKEEFG4ArJtY73dfefvHymhdnrSM4yssSaEILxEj5/17Wk6jKKDo33f972wwQwjiVIX41fEUQVEGpvUApQord7fbu1sNt0nz0UiZJMByyrzpWcS8vTofBoVSTQZX4wb25vMcRQhjW53I+xMLibJ6YwAqCDECNkOadQbOw3KFqctAuKc9wVaMant5U1ikaf/HleEX76c+HVfNzdoEBCIwhu78dqm35P6h+9yzs0KCKNKpur85XxoNhpmmVmWEQkiRgnZ9ni6JLIsK5mRBvWar29/vtruOIoP5lda0qAeAow0RFURTJDSWRIvanm77ll8mudZr1gpID7sS1i4RMqC5yk0LObWusO/9r7dazXDO5/c6c/PVtrtwGLZvKyEth3nZgM0m260MKbLsueYpS4sXhgUbSG8EAnRqqzcr3wJ6vU/Hz4YjU8uxiejs+dxnN+7fy/0vEspFQLQICGLt8JwSFbPz8exSZXyIORaa0dyTACRyC0AEjzp/zfeIBR69dYbnSxNH4n5Qf84ymyACQRlzrMC2UmBejaaLvVjwSil7xbjigGgTEpA9FLEl/MlbV0NZWS5qLXL2h0GQMfmZ1NmM4E1gAiYjEyBS5TzgRj3fPqgVovjGHx0t398XJyfK2oQlvQ3XBgH12ez2Sn3pRDDg6Fj2+sGx4pg6iAlqiA5pjEndSnMQYSazWZHvLLrzigI1z6+9vveb68DubA9z3MphhqVSDJETUANaLr+W7X5bKaE0JgyoiEAPHuVYX0gnNXSo9iczsTJ0ajdAUN7W7KSeH779QdIDsu8KCxiGEVhZmolCDrMDMZHB1qpkvPBcb+zsW5b7LB1Y2BZqSbIRiByzqJYoWoLJbNF2mq1cmPNaTewsqvIrIP9lZVkPXpYWW6GrBL+FN8WonDkvik4v5xkCL1At6rvu8l+rkgoyBaLBbmc5td2t0rvQ6MKOICVnZ/KX7tdd4f/U/V+eHdykZ/ZX+o0u65+aQeEgIvxePRI38IYvmd8DwEs6Oqz6eh/yubds4uF+BkAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023) + Coffee Run (2020)","rights":"cc-by","note":"crosscut between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":216757,"addedAt":"2026-10-28"}},{"id":"heygen-com/pattern-interrupt","slug":"pattern-interrupt","name":"Pattern Interrupt","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["shorts","retention","hook","tiktok","reels","ffmpeg","hyperframes","remotion","capcut"],"summary":"Every few seconds of a short, break the visual pattern: angle, zoom, graphic, sound hit, so attention resets.","description":"Built on [Beat Accent](https://github.com/heygen-com/hyperframes/tree/main/registry/components/beat-accent) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA sudden zoom, a cut to B-roll, an on-screen graphic, a flash or a sound effect at regular intervals.\n\n**When:** Shorts, reels, TikToks and YouTube intros where viewers decide in seconds whether to stay.\n\n**Watch out:** Interrupts that do not relate to the words feel random; tie each one to a beat of the script.\n\n**Timing:** Every 2–4 s; each interrupt 3–10 frames\n\n**Also called:** visual reset, retention cut, scroll stopper, hook reset\n\n### In FFmpeg\n\nCombine a punch-in segment, a 2-frame flash and a whoosh SFX at 3 s:\n```bash\nffmpeg -i talk.mp4 -i whoosh.wav -filter_complex \\\n\"[0:v]split[p][q];[p]trim=0:3,setpts=PTS-STARTPTS[w];\\\n [q]trim=3,setpts=PTS-STARTPTS,crop=iw/1.2:ih/1.2,scale=1080:1920,setsar=1[t];\\\n [w][t]concat=n=2:v=1:a=0,eq=brightness=0.6:enable='between(t,3,3.066)'[v];\\\n [1:a]adelay=2950:all=1[s];[0:a][s]amix=inputs=2:normalize=0:duration=first[a]\" \\\n  -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\n`beat-accent` (impact flash + micro scale pulse), `editorial-flash-overlay`, a punch-in tween on `.inner`, plus an SFX `<audio>` clip.\n\n### In Remotion\n\nSchedule interrupts as an array of frames; render a `<Sequence>` per interrupt holding a scale change, a flash `<AbsoluteFill>` or an `<Audio>` SFX.\n\n### In CapCut\n\nSplit every few seconds and alternate Scale, add a Flash/Shake effect or a sticker, and drop a whoosh from Audio → Sound effects.\n\n### Ready-made components\n\n- [Beat Accent](https://skills.varg.ai/component/hf.beat-accent/) (hyperframes): npx hyperframes add beat-accent\n- [Editorial Flash Overlay](https://skills.varg.ai/component/hf.editorial-flash-overlay/) (hyperframes): npx hyperframes add editorial-flash-overlay\n- [Impact Shake](https://skills.varg.ai/component/remocn.impact-shake/) (remocn): npx shadcn@latest add @remocn/impact-shake\n- [Camera Shake](https://skills.varg.ai/component/hf.camera-shake/) (hyperframes): npx hyperframes add camera-shake\n\n### Where this comes from\n\n- [FFmpeg filters: crop](https://ffmpeg.org/ffmpeg-filters.html#crop)\n- [FFmpeg filters: amix](https://ffmpeg.org/ffmpeg-filters.html#amix)\n- [HyperFrames: HTML schema](https://hyperframes.heygen.com/reference/html-schema)","useWhen":["Shorts, reels, TikToks and YouTube intros where viewers decide in seconds whether to stay."],"notFor":["Interrupts that do not relate to the words feel random; tie each one to a beat of the script."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/beat-accent","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Beat Accent · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.beat-accent/","license":"Apache-2.0","note":"A single music-hit sting: impact flash, micro scale-pulse on the subject, immediate decay."},{"role":"component","label":"Editorial Flash Overlay · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.editorial-flash-overlay/","license":"Apache-2.0","note":"Finite neutral-warm light layers for a seek-safe camera-flash cut or social reveal"},{"role":"component","label":"Impact Shake · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.impact-shake/","license":"MIT","note":"Heavy content slams in from above with squash, a damped camera jolt, a two-frame RGB split and dust puffs kicking out sideways."},{"role":"component","label":"Camera Shake · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.camera-shake/","license":"Apache-2.0","note":"Procedural handheld, telephoto and rig camera shake for any wrapper: nine measured profiles with per-lens projection, closed-form and seek-safe"},{"role":"source","label":"FFmpeg filters: crop","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#crop","license":"link-only"},{"role":"source","label":"FFmpeg filters: amix","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#amix","license":"link-only"},{"role":"source","label":"HyperFrames: HTML schema","kind":"link","url":"https://hyperframes.heygen.com/reference/html-schema","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Pattern Interrupt"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.beat-accent","hf.editorial-flash-overlay","remocn.impact-shake","hf.camera-shake"],"aliases":["visual reset","retention cut","scroll stopper","hook reset"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/1abd07c1d4ef/take-pattern-interrupt.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADT0lEQVR4nB1TyXIcRRCtfeltFs2oZ7QaAUGIJeBEcODAN/AB/CK/wQFOhpCQw2GHjY1GI2m6e3qp6qquJoc61CGjKvNtiX/5+VuMMcWIMUapIgQjTAihQgguuGvquqnHvvDej6EPIcCdZdljR/6+ez0yDn8ZIwghhv4/I6GEw1cF/6Nkmh8fz5ennPNi++92uy0e3ha7nTfPCA+YUkbJCCcgP1CYGSwCCAwq0AgASR4dH5+fX5wv158sl0sukq5roSijoySObXhd+2Z0juEAIMjoAIIdEDSaJGmapGwYgRehVCTp5PLzL66vv9R6PgxhHHxvDB6Q5iqki+XCjLZo24ajEgYHDywQRWQxXXx6eaWUYr0PjGHFeJRN8uOTSCfOmf1+75uurmvmfMq4J3KWTN0sx6RE1nLCMe2BRSSi09Xp5frMWssa65H1Qg5Kp5KJfVmNnWurypSV804lEZigJZtkSVnqSHvKU5CcEyYYiWJolF+s1l3bsX1nAWou4uX6XEcJSCboIBn1FFEQFpHeWDQOUtA4zkLAM03KspCi1UpO4mQ5P5pPZnS+YLUJYGeer+azIxD/ILzzUiqSJAezB+echct2nVSJkHHKdm3rwHHJSRRF4IOg9BACqJ6egS9J0zZdUwvOR2sb0Kht2rYtiue2aZgUves7Z9I0DeA9OtgvpQzjWJZlJVMIDaNMGNNvNhsgnAQym83acnd7e+vbFgbe3d2A8KuTVaT1x80HwHt2EoN2BPM0ntStffP2XfPwDP6z7775GuQEbNAr9gjmSMo0Fygh+Wr18HBvjImVguT1toVYanUET7ztbWcwEkfTtKvqstqxdDoznamaZvv8zPtwcXWVKHl2eSEh+pyd5DkMATeBOADZt029F9B0DKa3++k8zyLtRjL4gbkwNLbryyfX9zZNetMoxQdOrGk+wHrcv0fj2HTjrij/2RSPj3tKnUcME015UlTtX7evMh4BdvbyrlosFp36bODDqz4qXoaJNkNAtsNPT6Su1lpH1/w3TPoX83IdByVtSh51xpcKWVNiXIloUTzes9//2H7/01dl9iMY8TD0f34Mh3U8pAA4XdH4sM4/yF+zZZav94flQAq8gscgK0YOKobrm5s3/wFI7ciaaOemVAAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Tears of Steel (2012) + WING IT! (2023)","rights":"cc-by","note":"zoom-in between two shots, with the timeline strip of the edit. Footage: Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":162810,"addedAt":"2026-10-28"}},{"id":"vargHQ/b-roll-overlay","slug":"b-roll-overlay","name":"B-Roll Overlay Cut","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["b-roll","interview","ugc","explainer","ffmpeg","hyperframes","remotion","capcut"],"summary":"Keep the A-roll voice running and lay B-roll pictures over it; edits in the A-roll disappear under the cover.","description":"We hear the speaker continuously while seeing what they describe, returning to their face for key lines.\n\n**When:** Interviews, explainers, UGC ads, documentaries; whenever the speaker's face is not the information.\n\n**Watch out:** Covering emotional or key lines; let the face carry those.\n\n**Timing:** B-roll shots 1.5–4 s; enter and leave on phrase boundaries\n\n**Also called:** B-roll, cover footage, overlay cut, A-roll/B-roll\n\n### In FFmpeg\n\nOverlay B-roll from 1.5 s for 2 s; A-roll audio continues:\n```bash\nffmpeg -i aroll.mp4 -i broll.mp4 -filter_complex \\\n\"[1:v]trim=0:2,setpts=PTS-STARTPTS+1.5/TB,scale=1920:1080,setsar=1[b];\\\n [0:v][b]overlay=eof_action=pass[v]\" -map \"[v]\" -map 0:a -c:a copy out.mp4\n```\n`setpts=...+1.5/TB` shifts the B-roll to start at 1.5 s; `eof_action=pass` returns to A-roll after it ends.\n\n### In HyperFrames\n\nB-roll `<video muted>` clip on a higher track/z-index over the A-roll clip; A-roll keeps `data-has-audio=\"true\"`.\n\n### In Remotion\n\n```tsx\n<AbsoluteFill><Video src={aroll} /></AbsoluteFill>\n<Sequence from={45} durationInFrames={60}><Video src={broll} muted /></Sequence>\n```\n\n### In CapCut\n\nDrag B-roll onto the overlay track above the A-roll (mobile: Overlay → Add overlay), resize to full frame, mute it.\n\n### Where this comes from\n\n- [Wikipedia: B-roll](https://en.wikipedia.org/wiki/B-roll)\n- [FFmpeg filters: overlay](https://ffmpeg.org/ffmpeg-filters.html#overlay)\n- [HyperFrames: data attributes](https://hyperframes.heygen.com/concepts/data-attributes)","useWhen":["Interviews, explainers, UGC ads, documentaries; whenever the speaker's face is not the information."],"notFor":["Covering emotional or key lines; let the face carry those."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/cuts.md#b-roll-overlay","repo":"vargHQ/skills","path":"varg-video-edit-library/references/cuts.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"Wikipedia: B-roll","kind":"link","url":"https://en.wikipedia.org/wiki/B-roll","license":"link-only"},{"role":"source","label":"FFmpeg filters: overlay","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#overlay","license":"link-only"},{"role":"source","label":"HyperFrames: data attributes","kind":"link","url":"https://hyperframes.heygen.com/concepts/data-attributes","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"B-Roll Overlay Cut"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":[],"aliases":["B-roll","cover footage","overlay cut","A-roll/B-roll"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b17d6559b411/take-b-roll-overlay.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADTklEQVR4nIVTS28bVRQ+9zEvj2NPiMePNontWkkIIFCgEkgIBSSWXfIT2XXFKmyQeAmqqK2qUhPS2HnYMcZO7IztiWfmzn1wJ7BA3XCkuYt7zvnmO/d8H3r8ew8AMEiMMVFCCAk4pYRwmVNKnQ0vqpWqa1hKSVBEVyrIIgGssylG+hQou6EgOcKIAMYKIsLO++dhctio18vm5ynnYcTDmBcJ0Q0KKakUEIjjuHP9xDAMv/ih/r1BCzpJMQ8Nakic04SCYNnpXFyxP4XlpflfS6USQlbKpYkMoUSqiSSJVSTjwWC86FuWBYmzvr5OVFHTpSASrGnJKGap2XPWbqr18iN5Jl8VnlbiKrawxIXruGzb9mDsSimaBQ8DYglYppmwxe0y8NxNPTadzOYa9fuX33a73b3Kp84GiaOK4ziosHoxvYlCHscXtVW73qjfBPc9z5NC6glG/RDVVnBx/Nfs1qK+ZkdvgoAL0e4OkgS1R4dv7+yAMxWWlZbRsD89Aa4sNR0CWjNKxLGpC5z4XmXHf3hy9DraiHzfXNgTO+fTr5c/sIDFfkQI6Un5Yn64RV0s8MYJdSZTt2bxlJ+usPP5L+8vx9v+dlO+Y5q5z7Y+tgIcqCs3XS2490BYdCLG2MQYUQ5cb5HxJRs9IITSyAmOY6sgVSygKBTCL0j75dnRCbRbrdY+eUht8563XW80IkRP+yPqr9xfLBYMFoRgLAlBtLN2zAXfbzz68qv9J8v2wcEBM5heMJaghfITfvrzq2fj+fNisfjF9CNjPui1SmEo6PzQ3t3dm7z1x2w2k8YtQljLkzHkecbug42r0bK5tumV84ZBV6RLKEGIZsTT5AqgP0+Knk2ntzUzR89+6w86163ddSVLKbgaiADVsv2m1//u+eNIwCJcTYdGglCYzc6VihFCWt+a4zG0NWh+qWWvKKJaFNHRs9eAENzlAWea78pTyOyisvv/Dc0TaW9IAVi82aBHpPqzMmgg/zosqxFvomS+IVSeDiu1Kreamt5/i7TktbPeNX90tKhVKKQ8ZnuMsRlt6iyR2YrlXaWJeLgIKVwGW60Pgvwnug3fKeCfIJBqaJ+inOPYJNIuK7P30jTN481slLtKBdnDu2R6eXv5N/yKwisV+MV+AAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Charge (2022) + Coffee Run (2020)","rights":"cc-by","note":"insert between two shots, with the timeline strip of the edit. Footage: Charge (2022), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":199869,"addedAt":"2026-10-28"}},{"id":"heygen-com/mix-dissolve","slug":"mix-dissolve","name":"Mix (Cross Dissolve)","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["basic","calm","dissolve","time","ffmpeg","hyperframes","remotion","capcut"],"summary":"The two shots blend through each other. The quietest transition: \"time passes\" or \"this continues\".","description":"Built on [Fade Through](https://github.com/heygen-com/hyperframes/tree/main/registry/components/fade-through) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA fades out while B fades in over the same frames; halfway both are at 50%.\n\n**When:** Time passing, calm brand and wellness pieces, slideshow photos, soft scene changes.\n\n**Watch out:** Mixing between two busy shots makes mud; never use it to hide a weak cut in fast edits.\n\n**Timing:** 0.4–1.0 s (CapCut Mix default 1.0 s, a short Mix 0.47 s), linear or ease-in-out\n\n**Also called:** Mix, Dissolve, crossfade, cross dissolve, fade\n\n### In FFmpeg\n\nSame size/fps/pixel format on both inputs (see the Normalize card). offset = duration(A) - T = 5.0 - 0.5 = 4.5.\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n[a][b]xfade=transition=fade:duration=0.5:offset=4.5[v];\\\n[0:a][1:a]acrossfade=d=0.5[au]\" \\\n  -map \"[v]\" -map \"[au]\" -c:v libx264 -crf 18 -c:a aac out.mp4\n```\n`dissolve` is a different, dithered (noisy) dissolve; `fadefast`/`fadeslow` change the curve.\n\n### In HyperFrames\n\nShader `cross-warp-morph` from `@hyperframes/shader-transitions` placed at the cut (t = 4 s):\n```html\n<div id=\"s1\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"a.mp4\" muted playsinline></video></div>\n<div id=\"s2\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"b.mp4\" muted playsinline></video></div>\n<script src=\"https://cdn.jsdelivr.net/npm/@hyperframes/shader-transitions/dist/index.global.js\"></script>\n<script>\n  const tl = HyperShader.init({ bgColor: \"#0a0a0a\", scenes: [\"s1\", \"s2\"],\n    transitions: [{ time: 4, shader: \"cross-warp-morph\", duration: 0.8 }] });\n  window.__timelines = window.__timelines || {}; window.__timelines[\"main\"] = tl;\n</script>\n```\nEach `.scene` needs an explicit background-color equal to `bgColor`.\nPlain CSS crossfade: omit `shader` in that transition entry, or overlap two clips by 0.5 s and tween opacity (see the HyperFrames scene transition card).\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {fade} from '@remotion/transitions/fade';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><ShotA /></TransitionSeries.Sequence>\n  <TransitionSeries.Transition presentation={fade()} timing={linearTiming({durationInFrames: 15})} />\n  <TransitionSeries.Sequence durationInFrames={90}><ShotB /></TransitionSeries.Sequence>\n</TransitionSeries>\n```\nTotal = 90 + 90 - 15 frames: the transition overlaps the two shots.\n\n### In CapCut\n\nTransitions tab → Basic / Overlay → Mix, Dissolve, Dissolve II/III. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Fade Through](https://skills.varg.ai/component/hf.fade-through/) (hyperframes): npx hyperframes add fade-through\n- [Dissolve Transitions](https://skills.varg.ai/component/hf.transitions-dissolve/) (hyperframes): npx hyperframes add transitions-dissolve\n- [Cross Warp Morph](https://skills.varg.ai/component/hf.cross-warp-morph/) (hyperframes): npx hyperframes add cross-warp-morph\n- [Dreamy](https://skills.varg.ai/component/glt.dreamy/) (gl-transitions): npm install gl-transitions\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [Remotion: presentations](https://www.remotion.dev/docs/transitions/presentations)\n- [HyperFrames: @hyperframes/shader-transitions](https://hyperframes.heygen.com/packages/shader-transitions)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)","useWhen":["Time passing, calm brand and wellness pieces, slideshow photos, soft scene changes."],"notFor":["Mixing between two busy shots makes mud; never use it to hide a weak cut in fast edits."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/fade-through","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Fade Through · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.fade-through/","license":"Apache-2.0","note":"A calm transition primitive that fades one layer out, passes through a wash, and reveals the next layer"},{"role":"component","label":"Dissolve Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-dissolve/","license":"Apache-2.0","note":"Showcase of dissolve and fade transitions"},{"role":"component","label":"Cross Warp Morph · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cross-warp-morph/","license":"Apache-2.0","note":"Shader transition with cross-warped morphing"},{"role":"component","label":"Dreamy · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.dreamy/","license":"MIT","note":"A soft crossfade in which both shots ripple sideways in slow waves, like a dream sequence"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"Remotion: presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"},{"role":"source","label":"HyperFrames: @hyperframes/shader-transitions","kind":"link","url":"https://hyperframes.heygen.com/packages/shader-transitions","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Mix (Cross Dissolve)"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.fade-through","hf.transitions-dissolve","hf.cross-warp-morph","glt.dreamy"],"aliases":["Mix","Dissolve","crossfade","cross dissolve","fade"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/22b4c9523412/take-mix-dissolve.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADfElEQVR4nBVTy27bRhSdx+WQHFEUKUuWrNSqjKQBgsApukhj9JWs+gFd9Cv6I+039C+6D4ounCy6S4uiNhwUtmVbkimRovicV8eD2cydO/eee+Yc/MvPP11cXICPi7JoxS6OIsYFQmhxrRhjgyDeFbssKZIk6fcH+/v7ZbPVxlDmCSGOn88AaG+0TZI1OEDKIh/5U2DB6zc/zOfzD2fvOe887nJb7vGjmW1jXMcb8CiOicaO6UghOOl88+3XR8dinaw3pQBMYFH9dfR58Ekw6Abdvr83eDp0Jbq8vOyF/P4+QUaH3e62KYMg0AQLJYlGvSD8/s130+l0Ub5brq5bIuLBHrjMr+v6LDsfj8cHfGYMmU334hA2SdKUdHV7G4ZhFOKqKoWiSholxYvjl5PxsCoypSlRnudCUZZg7xAispSqUhgJggnFIuiAFt0i32rqWT44k01pocVpusFIA0VSNlor7vRCXzawa7EBIW0EScMU9pYNt0SG2CEuC3uqKLz5oh0OJ1ne7PWHxA2yJFHYX+fi49K+MhIcKfaqdquMC01rwUoFB1nF/ryy/OInfj2ZHPgiG0RdIep+yFj41LKWJEuENGLRYl3fSdvRYOw4js+5AWAgKnsGxw0x5UZntpJuc1HxfJnZVUqvUSRvq1ZrISUmhDFstxPslNYMWpvvO8xCAaRdsIJhNWCF0DmhRNf1NlFVbbJaP/viOaV09+/HKAgIZvPruefcuw749G9DDBj5MEJjmyuYjQ0hwnXm6CFmycZETtZJGsefDUeHnU7H4uLc6XQ4dQNC6XZzma6yVZYJYauAHRDZksbAapkBpXZiJS1YpI3us7rXix5A1pWWQst2kxeVUFlaTqef9ofe+fk5ohgIPLTGxHUcq3LAlBCrbqSY5yCspJRxb99qt6p2vu/fza/zPJcSXV3eHI6GWJbcpYej0RYnlgSXEZvpukxpgMHA1VpTbCgxSkHQiSJveHp6GnP+6stXWsn7xe1u0x4eTDzfv75Z5lV9cnJSYc9ap1ApBWraB2/Cb2/zycHE8AnGGCnHGipN0O36yE/p/QcW4E23+2T8qGzbVt68q9OUtvn2IumEblwsi+bOGC1QN01T+OM9vHz9LG2/sjSBEWZjhY5o8EIZcnYlAxxax/8Y/eppFcvfj3rUkiKWF3JJRtYCyH40atjhP6v//geOuQVI1O9l2wAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Big Buck Bunny (2008) + WING IT! (2023)","rights":"cc-by","note":"fade between two shots, with the timeline strip of the edit. Footage: Big Buck Bunny (2008), (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":182994,"addedAt":"2026-10-28"}},{"id":"heygen-com/black-fade","slug":"black-fade","name":"Dip to Black","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["basic","ending","chapter","calm","ffmpeg","hyperframes","remotion","capcut"],"summary":"A fades to black, then B fades up. Marks the end of a section or a bigger jump in time.","description":"Built on [Fade Through](https://github.com/heygen-com/hyperframes/tree/main/registry/components/fade-through) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nPicture darkens fully for a few frames, then the next shot rises out of black.\n\n**When:** Chapter breaks, endings, before a title card, emotional pauses.\n\n**Watch out:** Using it between every shot makes the piece feel like it keeps ending.\n\n**Timing:** 0.5–1.2 s total, hold black 2–6 frames; CapCut default 0.47 s\n\n**Also called:** Black Fade, fade through black, fade to black, dip to black\n\n### In FFmpeg\n\nSame size/fps/pixel format on both inputs (see the Normalize card). offset = duration(A) - T = 5.0 - 0.8 = 4.2.\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n[a][b]xfade=transition=fadeblack:duration=0.8:offset=4.2[v];\\\n[0:a][1:a]acrossfade=d=0.8[au]\" \\\n  -map \"[v]\" -map \"[au]\" -c:v libx264 -crf 18 -c:a aac out.mp4\n```\n\n### In HyperFrames\n\nCSS colour dip: tween `#s1` opacity 1→0 (power1.in, 0.4 s) and `#s2` 0→1 (power1.out, 0.4 s) starting 0.4 s later, over a black root. Block: `npx hyperframes add fade-through`.\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {fade} from '@remotion/transitions/fade';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><ShotA /></TransitionSeries.Sequence>\n  <TransitionSeries.Transition presentation={fade({shouldFadeOutExitingScene: true})} timing={linearTiming({durationInFrames: 24})} />\n  <TransitionSeries.Sequence durationInFrames={90}><ShotB /></TransitionSeries.Sequence>\n</TransitionSeries>\n```\nTotal = 90 + 90 - 24 frames: the transition overlaps the two shots.\nPut a black `<AbsoluteFill>` behind the series so the dip goes through black, not the background.\n\n### In CapCut\n\nTransitions tab → Basic / Overlay → Black Fade. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Fade Through](https://skills.varg.ai/component/hf.fade-through/) (hyperframes): npx hyperframes add fade-through\n- [Dissolve Transitions](https://skills.varg.ai/component/hf.transitions-dissolve/) (hyperframes): npx hyperframes add transitions-dissolve\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [Remotion: presentations](https://www.remotion.dev/docs/transitions/presentations)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)","useWhen":["Chapter breaks, endings, before a title card, emotional pauses."],"notFor":["Using it between every shot makes the piece feel like it keeps ending."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/fade-through","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Fade Through · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.fade-through/","license":"Apache-2.0","note":"A calm transition primitive that fades one layer out, passes through a wash, and reveals the next layer"},{"role":"component","label":"Dissolve Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-dissolve/","license":"Apache-2.0","note":"Showcase of dissolve and fade transitions"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"Remotion: presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Dip to Black"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.fade-through","hf.transitions-dissolve"],"aliases":["Black Fade","fade through black","fade to black","dip to black"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0e809e151e60/take-black-fade.mp4","w":640,"h":400,"duration":4.8,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAABoklEQVR4nK1TS04DMQyNncynIEFLFxXlCLBlCzvOyXlYI3XFDSpRWkEnk9jBTqa/BQukWlPXTuznb8Ccidz5gBD0P6XM/zKDgYMImPkxsbg7cE3G4QGrUJHFYRBwB4jDYQoHuGzjEocT5xO4nYpu588G0RAZJmMRK+0ME5sQJSObOJ1g6SUPagkrqgjWqqBwagbW1lUtQoBIMTrnmhgjgN6x9+KAdc0hqLUEF64oqFw+wYLcqSR2Dkp/wRqruUlwkuxBY1biCcW0fMyXk0nvfeg6NSzpyDlq1wirpmmS7SmSCz/ecJRLbFtB5kRpX5EEk7Q4hW2fh7UvyrWjynsvnasAvWZNzgIyOJkasiFIiQKaBlFOY9JZ4ma10sGXMo2xIG1i6tmaFLvN+vuL8jI6olD2J/bbkgVtu7wbgzbMj2nQQ+F0tEfR5M3+cwv/RWd8Iu5mPJ97OzPaT+lDnlomkW9Hn9PpFECLtcs3Ym5yIRYPED2063XnzPj+4fF5ffWkw+L+OIiczC5W4/HkpX1tR+318j3pmyovAfJPO+Xru8Xi4xfmLe2DFWlY3AAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Coffee Run (2020)","rights":"cc-by","note":"dip-black between two shots, with the timeline strip of the edit. Footage: Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":265926,"addedAt":"2026-10-28"}},{"id":"heygen-com/white-flash","slug":"white-flash","name":"White Flash","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["flash","energy","beat","light","ffmpeg","hyperframes","remotion","capcut"],"summary":"The frame blows out to white for a moment and opens on the next shot. Energy, memory or a camera snap.","description":"Built on [Flash Through White](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/flash-through-white) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nOverexposed white flash peaking on the cut, then B fades back from white.\n\n**When:** Beat drops, memories, photo-shoot vibes, hype reels, transitions into a freeze frame.\n\n**Watch out:** Long white holds are tiring and an accessibility risk; keep it short and avoid repeated strobing.\n\n**Timing:** 0.2–0.4 s (CapCut White Flash 0.40–0.47 s); peak on the beat\n\n**Also called:** White Flash, Flash, Blanch, flash transition, fade through white, camera flash\n\n### In FFmpeg\n\nSame size/fps/pixel format on both inputs (see the Normalize card). offset = duration(A) - T = 5.0 - 0.3 = 4.7.\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n[a][b]xfade=transition=fadewhite:duration=0.3:offset=4.7[v];\\\n[0:a][1:a]acrossfade=d=0.3[au]\" \\\n  -map \"[v]\" -map \"[au]\" -c:v libx264 -crf 18 -c:a aac out.mp4\n```\nFlash on a hard cut instead: `eq=brightness=0.6:enable='between(t,4.0,4.066)'` (eq supports timeline `enable`).\n\n### In HyperFrames\n\nShader `flash-through-white` from `@hyperframes/shader-transitions` placed at the cut (t = 4 s):\n```html\n<div id=\"s1\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"a.mp4\" muted playsinline></video></div>\n<div id=\"s2\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"b.mp4\" muted playsinline></video></div>\n<script src=\"https://cdn.jsdelivr.net/npm/@hyperframes/shader-transitions/dist/index.global.js\"></script>\n<script>\n  const tl = HyperShader.init({ bgColor: \"#0a0a0a\", scenes: [\"s1\", \"s2\"],\n    transitions: [{ time: 4, shader: \"flash-through-white\", duration: 0.4 }] });\n  window.__timelines = window.__timelines || {}; window.__timelines[\"main\"] = tl;\n</script>\n```\nEach `.scene` needs an explicit background-color equal to `bgColor`. Or install the ready block: `npx hyperframes add flash-through-white`.\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {pushCut} from '@remotion/transitions/push-cut';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><ShotA /></TransitionSeries.Sequence>\n  <TransitionSeries.Transition presentation={pushCut({flashColor: '#ffffff', flashFrames: 3})} timing={linearTiming({durationInFrames: 11})} />\n  <TransitionSeries.Sequence durationInFrames={90}><ShotB /></TransitionSeries.Sequence>\n</TransitionSeries>\n```\nTotal = 90 + 90 - 11 frames: the transition overlaps the two shots.\n`pushCut` (v4.0.500+) is a hard cut with a short punch-in and a flash; for a pure flash place a white `<AbsoluteFill>` in `<TransitionSeries.Overlay durationInFrames={8}>`.\n\n### In CapCut\n\nTransitions tab → Light Effect / Basic → White Flash, Flash, Blanch, B&W Flash, Strobe. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Flash Through White](https://skills.varg.ai/component/hf.flash-through-white/) (hyperframes): npx hyperframes add flash-through-white\n- [Editorial Flash Overlay](https://skills.varg.ai/component/hf.editorial-flash-overlay/) (hyperframes): npx hyperframes add editorial-flash-overlay\n- [Light Transitions](https://skills.varg.ai/component/hf.transitions-light/) (hyperframes): npx hyperframes add transitions-light\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [Remotion: pushCut](https://www.remotion.dev/docs/transitions/presentations/push-cut)\n- [HyperFrames: @hyperframes/shader-transitions](https://hyperframes.heygen.com/packages/shader-transitions)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)","useWhen":["Beat drops, memories, photo-shoot vibes, hype reels, transitions into a freeze frame."],"notFor":["Long white holds are tiring and an accessibility risk; keep it short and avoid repeated strobing."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/flash-through-white","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Flash Through White · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.flash-through-white/","license":"Apache-2.0","note":"Shader transition with white flash crossfade"},{"role":"component","label":"Editorial Flash Overlay · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.editorial-flash-overlay/","license":"Apache-2.0","note":"Finite neutral-warm light layers for a seek-safe camera-flash cut or social reveal"},{"role":"component","label":"Light Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-light/","license":"Apache-2.0","note":"Showcase of light-based glow and flash transitions"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"Remotion: pushCut","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations/push-cut","license":"link-only"},{"role":"source","label":"HyperFrames: @hyperframes/shader-transitions","kind":"link","url":"https://hyperframes.heygen.com/packages/shader-transitions","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"White Flash"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.flash-through-white","hf.editorial-flash-overlay","hf.transitions-light"],"aliases":["White Flash","Flash","Blanch","flash transition","fade through white","camera flash"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a6324222749d/take-white-flash.mp4","w":640,"h":400,"duration":4.3,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAACfklEQVR4nD1TS24UMRB1Vdnt7k4GKSwiRXABdtwgx+E0rGAFd4CLRIIdbNnAJhJRkpnpj6vMK/cMrZHb067Pq/ee6e77XQiBiISFTXPOwUoUSZdX++fniRKOiCm0B1ustdb/G1+LYY1bRAqWRJhqlnoo9eJyPCqtQRi5gUJLw57bpqjWalvdrShWLxQl5qj4GyXhk3Q55n7el8DxhEQr4Prb7ATQwgmmnQBGqsahbvE18Fo0DRktgyoa4Y3mhAhFHiNZi24TUaUN1BkRi0cjDhS1ipHp8PxkBoA4iuRlgjkW73+CaIoVtFZ/cMQxd4OWQmGJ7CTgeCp6nNfSio6Dz25qzIJDZu+/LAsF8SwPB3fmtECVhKdaZAHNzLFK4lyjLp5k5oe1oEuXxAzJqQFDaau2dl1nDSA4qoLs1KNDijKMw1SMIrpEMALc8zxf9oyENq/Ny2FdVwDZ7XaL0VqMBeRRxIRqAC+BYIAVXy8ileIMiMQzr7p/epxWDAXdQDB0lqW4dKAJvnNmUYekslrfD6HjRh5qpLbBpISfalhA3HFlTAgjRDGSw7oMUXLK5jI2H9VmLyxZojulWWbDApzQ+3jY9103zVUVZEnwTOgTYk85J/cI9ihBbgcUcIHxO5vVRQWpyKkhPT4dYIg2rKJcJUldAszDce7ENY3j0LWbokNOw4jRqFkE5VwVv4AwAuWYWEO3zQv5F+VKDFKM+8JNrvefvlxfX9fxVbNijTGG4mMiqDXYD8P45ur3/f39C/uFBK2yLCv6wa6Y2286vfj78BA/fPz69vb2YffSqbXFNQoSzh5mnS5GfXfzeZqOr/Vb+366fx7Jzs6cbn78/PMPBtWeVctRCa0AAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Cosmos Laundromat (2015) + Spring (2019)","rights":"cc-by","note":"flash between two shots, with the timeline strip of the edit. Footage: Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0; Spring (2019), Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0.","bytes":245377,"addedAt":"2026-10-28"}},{"id":"heygen-com/pull-in-zoom","slug":"pull-in-zoom","name":"Pull In (Zoom In)","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["zoom","camera","energy","shorts","trending","ffmpeg","hyperframes","remotion","capcut"],"summary":"The camera rushes into shot A and lands, still moving forward, in shot B. The signature short-form transition.","description":"Built on [Zoom Through Transition](https://github.com/heygen-com/hyperframes/tree/main/registry/components/zoom-through-transition) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA scales up fast with motion blur; B starts enlarged and settles to 100%, so the zoom feels continuous.\n\n**When:** Hooks, travel and fashion reels, going \"into\" a detail, on a beat.\n\n**Watch out:** On slow, emotional pieces; and stacking it on every cut.\n\n**Timing:** 0.3–0.5 s (CapCut Pull in 0.47 s), ease-in into the cut, ease-out after\n\n**Also called:** Pull in, Zoom in transition, zoom transition, punch zoom, Snap Zoom, Zoom to Change\n\n### In FFmpeg\n\nReal two-sided zoom: last 0.3 s of A scales 1→1.5 with blur, first 0.3 s of B scales 1.5→1 (720p example):\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]trim=0:5,setpts=PTS-STARTPTS,scale=w='trunc(1280*(1+if(gte(t,4.7),(t-4.7)/0.3*0.5,0))/2)*2':h=-2:eval=frame,\\\ncrop=1280:720,gblur=sigma=12:enable='gte(t,4.8)'[a];\\\n [1:v]trim=0:4,setpts=PTS-STARTPTS,scale=w='trunc(1280*(1+if(lt(t,0.3),(0.3-t)/0.3*0.5,0))/2)*2':h=-2:eval=frame,\\\ncrop=1280:720,gblur=sigma=12:enable='lt(t,0.2)'[b];\\\n [a][b]concat=n=2:v=1:a=0[v]\" -map \"[v]\" out.mp4\n```\nQuick version: `xfade=transition=zoomin:duration=0.4:offset=<A-0.4>` (zooms into A while fading to B).\n\n### In HyperFrames\n\nCSS zoom-through on the two scene wrappers:\n```js\ntl.to(\"#s1\", { scale: 2.5, opacity: 0, filter: \"blur(8px)\", duration: 0.4, ease: \"power3.in\" }, T);\ntl.fromTo(\"#s2\", { scale: 0.5, opacity: 0, filter: \"blur(8px)\" }, { scale: 1, opacity: 1, filter: \"blur(0px)\", duration: 0.4, ease: \"power3.out\" }, T);\n```\nOr `npx hyperframes add zoom-through-transition`; shader: `cinematic-zoom`.\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {zoomInOut} from '@remotion/transitions/zoom-in-out';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><ShotA /></TransitionSeries.Sequence>\n  <TransitionSeries.Transition presentation={zoomInOut({})} timing={linearTiming({durationInFrames: 12})} />\n  <TransitionSeries.Sequence durationInFrames={90}><ShotB /></TransitionSeries.Sequence>\n</TransitionSeries>\n```\nTotal = 90 + 90 - 12 frames: the transition overlaps the two shots.\nShader presentations are built on Remotion's HTML-in-canvas: renders work out of the box (`--gl=angle`, or `--gl=swangle` without a GPU); the Studio preview needs Chrome with `chrome://flags/#canvas-draw-element` enabled. remocn `lensZoom()` (28 frames) adds barrel distortion, zoom blur and shake around the splice.\n\n### In CapCut\n\nTransitions tab → Camera → Pull in, Snap Zoom, Zoom Transition, Zoom to Change, Twinkle Zoom. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions. Hand-made version: keyframe Scale 100→150% on A's last frames and 150→100% on B's first frames.\n\n### Ready-made components\n\n- [Zoom Through Transition](https://skills.varg.ai/component/hf.zoom-through-transition/) (hyperframes): npx hyperframes add zoom-through-transition\n- [Cinematic Zoom](https://skills.varg.ai/component/hf.cinematic-zoom/) (hyperframes): npx hyperframes add cinematic-zoom\n- [Scale Transitions](https://skills.varg.ai/component/hf.transitions-scale/) (hyperframes): npx hyperframes add transitions-scale\n- [Zoom Blur](https://skills.varg.ai/component/remocn.zoom-blur/) (remocn): npx shadcn@latest add @remocn/zoom-blur\n- [Lens Zoom](https://skills.varg.ai/component/remocn.lens-zoom/) (remocn): npx shadcn@latest add @remocn/lens-zoom\n- [Push Through](https://skills.varg.ai/component/remocn.push-through/) (remocn): npx shadcn@latest add @remocn/push-through\n- [CrossZoom](https://skills.varg.ai/component/glt.cross-zoom/) (gl-transitions): npm install gl-transitions\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg filters: zoompan](https://ffmpeg.org/ffmpeg-filters.html#zoompan)\n- [Remotion: presentations](https://www.remotion.dev/docs/transitions/presentations)\n- [remocn: Lens Zoom](https://remocn.dev/docs/transitions/lens-zoom)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Hooks, travel and fashion reels, going \"into\" a detail, on a beat."],"notFor":["On slow, emotional pieces; and stacking it on every cut."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/zoom-through-transition","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Zoom Through Transition · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.zoom-through-transition/","license":"Apache-2.0","note":"A transition that zooms through a focal card into the next scene."},{"role":"component","label":"Cinematic Zoom · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cinematic-zoom/","license":"Apache-2.0","note":"Shader transition with dramatic zoom blur"},{"role":"component","label":"Scale Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-scale/","license":"Apache-2.0","note":"Showcase of scale and zoom transitions"},{"role":"component","label":"Zoom Blur · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.zoom-blur/","license":"MIT","note":"A depth punch-in transition that pushes the outgoing scene through the viewer while the incoming one resolves out of blur."},{"role":"component","label":"Lens Zoom · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.lens-zoom/","license":"MIT","note":"A hard cut disguised as a lens punch-in: barrel distortion, zoom blur, chromatic split and camera shake around the splice."},{"role":"component","label":"Push Through · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.push-through/","license":"MIT","note":"A dolly transition that blows the outgoing scene past the camera while the next one approaches from the depth."},{"role":"component","label":"CrossZoom · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.cross-zoom/","license":"MIT","note":"The first shot rushes into a radial zoom blur that bursts open and resolves on the next shot"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg filters: zoompan","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#zoompan","license":"link-only"},{"role":"source","label":"Remotion: presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"},{"role":"source","label":"remocn: Lens Zoom","kind":"link","url":"https://remocn.dev/docs/transitions/lens-zoom","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Pull In (Zoom In)"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.zoom-through-transition","hf.cinematic-zoom","hf.transitions-scale","remocn.zoom-blur","remocn.lens-zoom","remocn.push-through","glt.cross-zoom"],"aliases":["Pull in","Zoom in transition","zoom transition","punch zoom","Snap Zoom","Zoom to Change"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/69331acb3a77/take-pull-in-zoom.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAAC/ElEQVR4nDVUyW4cNxDlzl5mHw0swQpgw4DOPueS/4sP/hh/jHMZRQEk2TOZUe/shWQxxZmYaPRafPXeq6qmX//8QgiBQEMIlMZzAOK9d3ghJAQWAN6M2+/3z+fW2skCwwgPEON9DL+EgbigXB/Jr7cB/kcJwSM0I5eFF0YZ4ww83sQIxggAuTBg4sKFXDbGV8676w0lHKPgF2gECkjGa84QYJwwvcegKxYuZESv3BBiMGNZllLKNE0ZU6hviBuCRQ4+KHAMQCES4wVMzoEN+JUgHCaO0jDpNIaiqLqyrcpyqdTAOSI0TfvWUSG40mE0PesNd44GorRWlCEbRwH1XgkLH5gDqDvz43j2Re3BpzIrT8X+5e9h6IOPpmC6uFFQ1Dq17Sh4yOa51pZIFEhoNF04C3jUrelMT62z1jas/fHz8HR4RlFCJ7ikSNI0yedrrTWg3n6YBjuOLqgFFhqtQbWiHcZ+GKqqts4DgW4axrY6FEevZJ7lSbZI0kRqxTkHgVpIPputtts5YVVV2YlbFOux1iBOZX06nauqcQ69DFXfV/++Ypr15h1aTpVGaQ6rTTkFwinLNxvkpaW6//jx2NjHx8ehNahP7J9eO9MF66Prtq+aZgJYLpc80cApegMkokA0iWRp+v79b8vl6tlGTUlGyVtDzAsAFWXVQGwkbAAYTNcO/SJLVaID51SoQWVSSSexG1hKXLLe6dkcOD/5dLVaMZGQooXDEcUJ58Kl/bDpoTcG80idESaTxXazXp+3H3a7XZ+uhJTr8c2Y3nI1udALvciXWIt0dzcqNXkvrt0sAhbMTX0nSEBPpPCb3c1ud9Pffkq2m1puqVKs+nmq/+k6QNf6LB/FbGLSgDITcUSK12Nxd3dn9S0Ootb3cW4TOUlRk3djrUvbmYO9p9/m8/mte1k05bL1GPOQrhbtAn3Vh8OwPpZFgVVzD58/lfPfcahn1F1nGCPOOEJAWOM843+obzmZ3cBfXJMJZxDHypFwjn8GJol9+PD9+9N/hNYdJVWqxuIAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023)","rights":"cc-by","note":"zoom-in between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":165373,"addedAt":"2026-10-28"}},{"id":"heygen-com/pull-out-zoom","slug":"pull-out-zoom","name":"Pull Out (Zoom Out)","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["zoom","camera","reveal","ffmpeg","hyperframes","remotion","capcut"],"summary":"The camera jerks backwards out of shot A and keeps pulling back as shot B settles in.","description":"Built on [Parallax Unzoom](https://github.com/heygen-com/hyperframes/tree/main/registry/components/parallax-unzoom) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA shrinks away (over a blurred copy or black), B starts slightly enlarged and eases out to full frame.\n\n**When:** Reveals, \"zoom out to see the bigger picture\", endings of a sequence.\n\n**Watch out:** Low-resolution sources: the enlarged start of B shows softness.\n\n**Timing:** 0.3–0.5 s (CapCut Pull Out 0.47 s), ease-in then ease-out\n\n**Also called:** Pull Out, zoom out transition, pull back, Shrink\n\n### In FFmpeg\n\nA shrinks to 60% over a blurred copy of itself; B starts at 140% and settles:\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]trim=0:5,setpts=PTS-STARTPTS,split[bg][fg];[bg]gblur=sigma=30[bgb];\\\n [fg]scale=w='trunc(1280*(1-if(gte(t,4.7),(t-4.7)/0.3*0.4,0))/2)*2':h=-2:eval=frame[fgs];\\\n [bgb][fgs]overlay=x=(W-w)/2:y=(H-h)/2:eval=frame[a];\\\n [1:v]trim=0:4,setpts=PTS-STARTPTS,scale=w='trunc(1280*(1+if(lt(t,0.3),(0.3-t)/0.3*0.4,0))/2)*2':h=-2:eval=frame,crop=1280:720[b];\\\n [a][b]concat=n=2:v=1:a=0[v]\" -map \"[v]\" out.mp4\n```\n\n### In HyperFrames\n\n```js\ntl.to(\"#s1\", { scale: 0.6, opacity: 0, duration: 0.4, ease: \"power3.in\" }, T);\ntl.fromTo(\"#s2\", { scale: 1.4, opacity: 0 }, { scale: 1, opacity: 1, duration: 0.4, ease: \"power3.out\" }, T);\n```\nBlocks: `parallax-unzoom`, `pull-back-reveal`.\n\n### In Remotion\n\nCustom presentation: exiting scene `scale = 1 - 0.4 * presentationProgress`, entering scene `scale = 1.4 - 0.4 * presentationProgress` (see the Remotion custom presentation card).\n\n### In CapCut\n\nTransitions tab → Camera → Pull Out, Shrink. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Parallax Unzoom](https://skills.varg.ai/component/hf.parallax-unzoom/) (hyperframes): npx hyperframes add parallax-unzoom\n- [Pull Back Reveal](https://skills.varg.ai/component/hf.pull-back-reveal/) (hyperframes): npx hyperframes add pull-back-reveal\n- [Scale Transitions](https://skills.varg.ai/component/hf.transitions-scale/) (hyperframes): npx hyperframes add transitions-scale\n\n### Where this comes from\n\n- [FFmpeg filters: overlay](https://ffmpeg.org/ffmpeg-filters.html#overlay)\n- [Remotion: custom presentations](https://www.remotion.dev/docs/transitions/presentations/custom)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Reveals, \"zoom out to see the bigger picture\", endings of a sequence."],"notFor":["Low-resolution sources: the enlarged start of B shows softness."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/parallax-unzoom","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Parallax Unzoom · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.parallax-unzoom/","license":"Apache-2.0","note":"Reveal transition — focus card scales down from full frame as siblings parallax in to form a grid (reverse of parallax-zoom)"},{"role":"component","label":"Pull Back Reveal · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.pull-back-reveal/","license":"Apache-2.0","note":"A tight stat detail holds, then one decelerating camera pull-back reveals the headline and supporting cards that recontextualize it."},{"role":"component","label":"Scale Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-scale/","license":"Apache-2.0","note":"Showcase of scale and zoom transitions"},{"role":"source","label":"FFmpeg filters: overlay","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#overlay","license":"link-only"},{"role":"source","label":"Remotion: custom presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations/custom","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Pull Out (Zoom Out)"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.parallax-unzoom","hf.pull-back-reveal","hf.transitions-scale"],"aliases":["Pull Out","zoom out transition","pull back","Shrink"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/93472f4ec687/take-pull-out-zoom.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAAC8UlEQVR4nC1TyZIjNRBVKlMq1WJ32WMX7eieiYYD0cxcuHHgwBfzF5wIiCDgPAQcGHoi2mOPd5c2XlWjWqVUPmW+fEk/fH2jlIpX1fe9U9oY82gOi+XybbuxxkQ2x+Ppp4+z9Xr9Jy9iiP5ybJpm0dqHLx9uZs1ut/vlt/f7w17UOEhrRZQU+ZSfvYrneFsJrnzyu31QKRlmUZSzsqW9e3P3uqvqpqasnC3e3C+3W/M/EHAUtmdSOX1W7npO7jk7F2ax915iCJqI9bB5OmuaSVUWxsCFAjv9cNetHYsww5xVFqEYYFOebYzqrwPpc1impFmiyoQPYQ+306a0kscBPwxj8qt5I4vuC0xOx1PIGXExc1Iq5BQi4TnEhKMLRtYSUxQWkFhVlSuStVZRjCkF73VRyNNmz5pL0ZObNl7OiC4Ein0ftCTkygknaubgk79e2dAYiCIkglqwwTRYCyx5evqktZ5Pq9VqlYTP53OOqJVm0jGGhGxZcQ0wt0wFgamCT9eT0aLFghD4GlvgFucczN77ELyz5eF49uFkjTUSDQjLVsTUTdWgRnaCWExRvgQVY8xIXIymqMHgN49fGSPPHz70l2OgXmvfVGIHd2UEx9Tz+ayZzFnrSFgAgxwCBOEzYGIGDRQzyimzaVXX9auJ+bRex2QHLaQj3JyzMEym7Xw2N0WjSUOtKecUaYzeXy6XRCiFGGHkJKfTHtjdsl10C8pXQOx3z9hU1VXbtqZwqBRQgKB0FiIFmeDHkFgsZh7IhPiS/PNxXVdnltx1XeNcVZY3bX29Xq0onJXTqFToAVILeOMvYoV5YHkoH6BHOcnrVceDZun4eScQB0tdI4ZCKT8gjJIDp4MUiMBOiInQUENH4UPjwFTL7//q29tVjPd0IduT7CC5sfXG04CC9yP/jBZo8kYDZagYlE4wIzrNOlGz3Wzl1/fmu/t32/L7FJEG+lXlkEd/fokZ3fpt+ePETbr4h9IqjOsvg0cdXOz9dvP3f737iBeDrsirAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023) + Coffee Run (2020)","rights":"cc-by","note":"zoom-out between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":193088,"addedAt":"2026-10-28"}},{"id":"gl-transitions/zoom-blur","slug":"zoom-blur","name":"Zoom Blur","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["zoom","blur","energy","shader","ffmpeg","hyperframes","remotion","capcut"],"summary":"Both shots smear into a radial zoom blur that bursts open on the next shot.","description":"Built on [CrossZoom](https://github.com/gl-transitions/gl-transitions/blob/master/transitions/CrossZoom.glsl) by rectalogic (gl-transitions), MIT. The write-up and recipes below are varg's.\n\nStreaks radiate from the centre, peak at the cut, then resolve sharply on B.\n\n**When:** Energetic promos, gaming, sport, speed-themed edits.\n\n**Watch out:** Overuse; and on faces where the radial smear distorts features.\n\n**Timing:** 0.4–0.7 s, ease-in-out\n\n**Also called:** radial zoom blur, Radial Blur, Twinkle Zoom, cross zoom, warp zoom\n\n### In FFmpeg\n\nxfade has no radial blur. Use a GL transition via editly (`CrossZoom`) or approximate with `zoomin` plus a strong blur at the peak:\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n [a][b]xfade=transition=zoomin:duration=0.5:offset=4.5,gblur=sigma=18:enable='between(t,4.6,4.9)'[v]\" -map \"[v]\" out.mp4\n```\n\n### In HyperFrames\n\nShader `cinematic-zoom` from `@hyperframes/shader-transitions` placed at the cut (t = 4 s):\n```html\n<div id=\"s1\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"a.mp4\" muted playsinline></video></div>\n<div id=\"s2\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"b.mp4\" muted playsinline></video></div>\n<script src=\"https://cdn.jsdelivr.net/npm/@hyperframes/shader-transitions/dist/index.global.js\"></script>\n<script>\n  const tl = HyperShader.init({ bgColor: \"#0a0a0a\", scenes: [\"s1\", \"s2\"],\n    transitions: [{ time: 4, shader: \"cinematic-zoom\", duration: 0.6 }] });\n  window.__timelines = window.__timelines || {}; window.__timelines[\"main\"] = tl;\n</script>\n```\nEach `.scene` needs an explicit background-color equal to `bgColor`. Or install the ready block: `npx hyperframes add cinematic-zoom`.\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {crossZoom} from '@remotion/transitions/cross-zoom';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><ShotA /></TransitionSeries.Sequence>\n  <TransitionSeries.Transition presentation={crossZoom({strength: 0.4})} timing={linearTiming({durationInFrames: 18})} />\n  <TransitionSeries.Sequence durationInFrames={90}><ShotB /></TransitionSeries.Sequence>\n</TransitionSeries>\n```\nTotal = 90 + 90 - 18 frames: the transition overlaps the two shots.\nShader presentations are built on Remotion's HTML-in-canvas: renders work out of the box (`--gl=angle`, or `--gl=swangle` without a GPU); the Studio preview needs Chrome with `chrome://flags/#canvas-draw-element` enabled. Also `zoomBlur({})` from `@remotion/transitions/zoom-blur`.\n\n### In CapCut\n\nTransitions tab → Blur / Camera → Radial Blur, Twinkle Zoom. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [CrossZoom](https://skills.varg.ai/component/glt.cross-zoom/) (gl-transitions): npm install gl-transitions\n- [DreamyZoom](https://skills.varg.ai/component/glt.dreamy-zoom/) (gl-transitions): npm install gl-transitions\n- [Cinematic Zoom](https://skills.varg.ai/component/hf.cinematic-zoom/) (hyperframes): npx hyperframes add cinematic-zoom\n- [Zoom Blur](https://skills.varg.ai/component/remocn.zoom-blur/) (remocn): npx shadcn@latest add @remocn/zoom-blur\n- [Lens Zoom](https://skills.varg.ai/component/remocn.lens-zoom/) (remocn): npx shadcn@latest add @remocn/lens-zoom\n\n### Where this comes from\n\n- [Remotion: crossZoom (HTML-in-canvas)](https://www.remotion.dev/docs/transitions/presentations/cross-zoom)\n- [HyperFrames: @hyperframes/shader-transitions](https://hyperframes.heygen.com/packages/shader-transitions)\n- [GL Transitions gallery](https://gl-transitions.com)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)","useWhen":["Energetic promos, gaming, sport, speed-themed edits."],"notFor":["Overuse; and on faces where the radial smear distorts features."],"publisher":{"name":"rectalogic · GL Transitions","handle":"gl-transitions","kind":"community","verified":false,"url":"https://github.com/gl-transitions","avatar":"https://github.com/gl-transitions.png"},"source":{"url":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/CrossZoom.glsl","repo":"gl-transitions/gl-transitions","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"CrossZoom · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.cross-zoom/","license":"MIT","note":"The first shot rushes into a radial zoom blur that bursts open and resolves on the next shot"},{"role":"component","label":"DreamyZoom · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.dreamy-zoom/","license":"MIT","note":"Zooms and twists into a white flash, then spins back out onto the next shot"},{"role":"component","label":"Cinematic Zoom · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cinematic-zoom/","license":"Apache-2.0","note":"Shader transition with dramatic zoom blur"},{"role":"component","label":"Zoom Blur · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.zoom-blur/","license":"MIT","note":"A depth punch-in transition that pushes the outgoing scene through the viewer while the incoming one resolves out of blur."},{"role":"component","label":"Lens Zoom · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.lens-zoom/","license":"MIT","note":"A hard cut disguised as a lens punch-in: barrel distortion, zoom blur, chromatic split and camera shake around the splice."},{"role":"source","label":"Remotion: crossZoom (HTML-in-canvas)","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations/cross-zoom","license":"link-only"},{"role":"source","label":"HyperFrames: @hyperframes/shader-transitions","kind":"link","url":"https://hyperframes.heygen.com/packages/shader-transitions","license":"link-only"},{"role":"source","label":"GL Transitions gallery","kind":"link","url":"https://gl-transitions.com","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Zoom Blur"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["glt.cross-zoom","glt.dreamy-zoom","hf.cinematic-zoom","remocn.zoom-blur","remocn.lens-zoom"],"aliases":["radial zoom blur","Radial Blur","Twinkle Zoom","cross zoom","warp zoom"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/4aaf6a92fce1/take-zoom-blur.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAACZ0lEQVR4nH1TPXPUMBCVdiXZjp0rDsgE0vEbqOHP8JPoqSgoYYaCoeEHUEPJDA0zQC655GzL+thlZR/hYAIe22PJu2/f7nvSz55/qKrq9M5a3lpr9d+LmW/bBiY2StF87+P+wro1U9JuIJYNeQzMmayS0ma/x/iPzJJGnMqXXiBkuQc1tTPOSSalFGtrhUL+o+Zh5ZI2+h4AVm2dU05c3fw1iiFM+Xy6ksXJ3VXXdikIDiGXviRTKBMsrCFn2g19U9d1VXuOMbrfrW2uClUJRoDueGqPV5qDIoopEAkOGWuVbpfwEKIfvTW2cQTMKSUplrjAGQYnC+CYCaTE0jNRpuglrkRo+d3MfelxHIfeO1sjhKNG7wbOJFgL0KwUayMAKeVZJsFJmhIualJSiTToSNCPqZ9CW0Kis85aHedic70DvWOSIcyaaNRgoEwpUc4MBAqIlHxqLUJL1QjGVKgmjmmZ0S+g8s5SOxKSbBkwR0XBsBtHn6kXu8ZsEpHBYg4Zj2TWlRqG7CPNqs0cJEUQZbo5ZyEzm0BmrABtjEMft8RtICxDJJ6mEKWlnI0FhL2VzKF3ZVyiA1gt7kQu7tAAVrjsttutvw7Bey9FBE3qyQMqIWZcgJqmKjLTJF4FGbrKFVZyeBQX0yNb03XBwPn55vI6oqkcVoRt1p7xCHXjqk4NtUhhXr15eXb2ILhToWZ0bD5/d87lMtjCCFWQoIf6/eh9N14hojaorP2yyd9qMUFxzOV0b7PZmHdvXz968vjieC28jBIfeT44tpqVRD+tX6xXq5P8sQgyn7L8Q+JKoOhi3f2LT19/AmjEpY5rkN5rAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Coffee Run (2020) + Cosmos Laundromat (2015)","rights":"cc-by","note":"zoom-in between two shots, with the timeline strip of the edit. Footage: Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0; Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0.","bytes":203596,"addedAt":"2026-10-28"}},{"id":"heygen-com/whip-swipe","slug":"whip-swipe","name":"Whip Swipe","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["whip-pan","camera","motion-blur","travel","trending","ffmpeg","hyperframes","remotion","capcut"],"summary":"A fast synthetic pan with heavy motion blur pushes A off and B in. Fakes a whip pan between any two shots.","description":"Built on [Whip Pan](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/whip-pan) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nBoth images streak sideways at high speed and the next shot snaps into place.\n\n**When:** Travel, lifestyle, energetic product edits, on a whoosh SFX; matches footage that already moves sideways.\n\n**Watch out:** Direction changes between consecutive whips, and whips longer than 0.4 s (they read as slides).\n\n**Timing:** 0.2–0.35 s (6–10 frames at 30 fps), ease-in-out with the blur peaking mid-way\n\n**Also called:** Swipe Left, Whip Tear, Woosh, whip pan transition, swish, swipe transition\n\n### In FFmpeg\n\nPush with horizontal motion blur over the transition window (A is 5 s, T = 0.25 s):\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n [a][b]xfade=transition=slideleft:duration=0.25:offset=4.75,\\\ngblur=sigma=40:sigmaV=0:steps=2:enable='between(t,4.75,5.0)'[v]\" -map \"[v]\" out.mp4\n```\nAdd a whoosh: `[2:a]adelay=4700:all=1` mixed in with amix.\n\n### In HyperFrames\n\nShader `whip-pan` from `@hyperframes/shader-transitions` placed at the cut (t = 4 s):\n```html\n<div id=\"s1\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"a.mp4\" muted playsinline></video></div>\n<div id=\"s2\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"b.mp4\" muted playsinline></video></div>\n<script src=\"https://cdn.jsdelivr.net/npm/@hyperframes/shader-transitions/dist/index.global.js\"></script>\n<script>\n  const tl = HyperShader.init({ bgColor: \"#0a0a0a\", scenes: [\"s1\", \"s2\"],\n    transitions: [{ time: 4, shader: \"whip-pan\", duration: 0.35 }] });\n  window.__timelines = window.__timelines || {}; window.__timelines[\"main\"] = tl;\n</script>\n```\nEach `.scene` needs an explicit background-color equal to `bgColor`. Or install the ready block: `npx hyperframes add whip-pan`. DOM version with matched velocity and capped motion blur: `npx hyperframes add whip-pan-cut`.\n\n### In Remotion\n\nremocn `whipPan()` presentation (direction left/right/up/down, blur 24 px, ~26 frames):\n```tsx\nimport {whipPan} from '@/components/remocn/whip-pan';\n<TransitionSeries.Transition timing={linearTiming({durationInFrames: 26})} presentation={whipPan()} />\n```\nWithout it: `slide({direction: 'from-right'})` with `linearTiming({durationInFrames: 8})`.\n\n### In CapCut\n\nTransitions tab → Camera / Slide → Swipe Left, Whip Tear, Woosh, 2-Screen Swipe. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Whip Pan](https://skills.varg.ai/component/hf.whip-pan/) (hyperframes): npx hyperframes add whip-pan\n- [Whip Pan Cut](https://skills.varg.ai/component/hf.whip-pan-cut/) (hyperframes): npx hyperframes add whip-pan-cut\n- [Whip Pan](https://skills.varg.ai/component/remocn.whip-pan/) (remocn): npx shadcn@latest add @remocn/whip-pan\n- [Motion Blur](https://skills.varg.ai/component/hf.motion-blur/) (hyperframes): npx hyperframes add motion-blur\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg filters: gblur](https://ffmpeg.org/ffmpeg-filters.html#gblur)\n- [remocn: Whip Pan](https://remocn.dev/docs/transitions/whip-pan)\n- [HyperFrames: @hyperframes/shader-transitions](https://hyperframes.heygen.com/packages/shader-transitions)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Travel, lifestyle, energetic product edits, on a whoosh SFX; matches footage that already moves sideways."],"notFor":["Direction changes between consecutive whips, and whips longer than 0.4 s (they read as slides)."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/whip-pan","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Whip Pan · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.whip-pan/","license":"Apache-2.0","note":"Shader transition simulating a fast camera whip pan"},{"role":"component","label":"Whip Pan Cut · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.whip-pan-cut/","license":"Apache-2.0","note":"A full-frame whip pan: scene A whips off laterally with capped directional motion blur while scene B enters in the same direction at matched velocity, on a speed-ramp profile with a decelerating catch…"},{"role":"component","label":"Whip Pan · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.whip-pan/","license":"MIT","note":"A whip-pan transition that flies both scenes through the frame in one move with velocity-based motion blur."},{"role":"component","label":"Motion Blur · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.motion-blur/","license":"Apache-2.0","note":"After Effects-style motion blur — integrates each element over a shutter window (shutter angle, phase, samples per frame) by sampling the GSAP timeline at sub-frame times and averaging equal-weight additive copies of…"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg filters: gblur","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#gblur","license":"link-only"},{"role":"source","label":"remocn: Whip Pan","kind":"link","url":"https://remocn.dev/docs/transitions/whip-pan","license":"link-only"},{"role":"source","label":"HyperFrames: @hyperframes/shader-transitions","kind":"link","url":"https://hyperframes.heygen.com/packages/shader-transitions","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Whip Swipe"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.whip-pan","hf.whip-pan-cut","remocn.whip-pan","hf.motion-blur"],"aliases":["Swipe Left","Whip Tear","Woosh","whip pan transition","swish","swipe transition"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2767af908738/take-whip-swipe.mp4","w":640,"h":400,"duration":4.3,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAAC8UlEQVR4nE1U22ocRxDtrr5Mz2h3vJLMOoklQohjJw/GT/nIfIO/wd9gQggJWOQlIAeC0MsiW/J6V7ujufWlytUjG1y7DD3dzalTdU6NfPXvpRDCC+m976PntVHgnLPK8TpKIaXEcTg/P7/864+zs7P3/58jEh8RER+JL6Fv26YoCmMc74UEvAUSiJQUmI9JMBQ/DD8l8JYUWlCiHIKE+AqoG2agFxAVYaUykJruKspcIl8mQiJOdnh89N3pqUmZC+ZITO1+wTuaGfCfX2KKXcgsnAaDGMknTJ5xkNRUizWmns3ocJbZoMxA9CWQtBEJkFuTO5ImrhFFO/oPAduuHWKw1h5rascu9k3o9n3XSJCEXD5lSjlyp7RHgCiNQhSg5ITEGzGzawe/H5MJUOjgY9IWqpnrDirJTUSZmyR4QVwKl6d7NNEzpAcpFcip2QyK+VVpY5XRWlrF+baj3QXnZVG6kvmP4xhjYHaaFBijV+Pl3M5dWrKUQWSqdsoWKcumJGrF0NIaPXfV3JXSVVwsYFRJcf9yQzID0P9sXy/EQqhfq4OqZjjWCvLP6QhO2cS8mGGTcC9w64ebYbNtQpQIRhuwmtUUwFBSb2C92a33sj8YqyfqeVmWy/CADwohK1CRJaU4+I8+bGW4LuR2YWzrQxRcEftujIH4jjVW1+ZBSmmD1+uGbugKN/QTHlZV9Qs9retay2NQapTgfdi38O4Wh7s7ngG2zr1/ssUxZdUelssYYhP3IYZetmyJi4iGGkiLOg0nqnZauaGm1rQ33c3lh+31O6LPI5IbNKFkoKr/1lhbzleswp6QtWz1ONLwBt6oXv9AV2Uqf15/PzSDbxA5VR+Yi5yCPruIBVH6z5e/P3v2VDz8ZkpyINgR1GFKo6AgxFW4rcrxhb0oVqsf1cXRye3d0cA2BLgfV8xToua73U6v/754UpzsPj7OtqdHmSTLmQdHZZezyYvi0fK3Q+dPHr9VpyCg+GpUY/5ymOXb/1afAND49sSAtnqFAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Coffee Run (2020)","rights":"cc-by","note":"whip between two shots, with the timeline strip of the edit. Footage: Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":228885,"addedAt":"2026-10-28"}},{"id":"gl-transitions/spin-rotate","slug":"spin-rotate","name":"Spin","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["spin","rotate","camera","playful","ffmpeg","hyperframes","remotion","capcut"],"summary":"The frame rotates fast around its centre (with blur) and comes out of the spin on the next shot.","description":"Built on [Revolve](https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Revolve.glsl) by bread (gl-transitions), MIT. The write-up and recipes below are varg's.\n\nA spins 90–360° and blurs; B spins in from the same direction and stops upright.\n\n**When:** Party, music, playful and transformation edits; matches footage with rotating motion.\n\n**Watch out:** Long slow spins (nausea) and spinning text-heavy shots.\n\n**Timing:** 0.3–0.8 s (CapCut Rotate CW II 0.8 s), ease-in-out\n\n**Also called:** Rotate CW II, Rotate CCW II, Center Rotate, Axis Rotation, CW Swirl, spin transition, roll transition\n\n### In FFmpeg\n\nSpin out of A in its last 0.3 s, spin into B in its first 0.3 s (rotate's angle is a per-frame expression):\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]trim=0:5,setpts=PTS-STARTPTS,rotate=a='if(gte(t,4.7),PI*((t-4.7)/0.3)^2,0)',gblur=sigma=10:enable='gte(t,4.85)'[a];\\\n [1:v]trim=0:4,setpts=PTS-STARTPTS,rotate=a='if(lt(t,0.3),-PI*(1-t/0.3)^2,0)',gblur=sigma=10:enable='lt(t,0.15)'[b];\\\n [a][b]concat=n=2:v=1:a=0[v]\" -map \"[v]\" out.mp4\n```\nCorners show `fillcolor` (black); scale both by 1.5 before rotating to hide them.\n\n### In HyperFrames\n\n```js\ntl.to(\"#s1\", { rotation: 180, scale: 1.4, filter: \"blur(10px)\", opacity: 0, duration: 0.35, ease: \"power3.in\" }, T);\ntl.fromTo(\"#s2\", { rotation: -180, scale: 1.4, filter: \"blur(10px)\", opacity: 0 }, { rotation: 0, scale: 1, filter: \"blur(0px)\", opacity: 1, duration: 0.35, ease: \"power3.out\" }, T);\n```\n\n### In Remotion\n\nCustom presentation: `transform: rotate(${presentationProgress * 180}deg) scale(...)` on the exiting side, the reverse on the entering side; or `glTransition({name: 'Revolve_Left'})` (1.x name, see notes).\n\n### In CapCut\n\nTransitions tab → Camera → Rotate CW II, Rotate CCW II, Center Rotate, Axis Rotation, CW Swirl. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Revolve](https://skills.varg.ai/component/glt.revolve/) (gl-transitions): npm install gl-transitions\n- [DreamyZoom](https://skills.varg.ai/component/glt.dreamy-zoom/) (gl-transitions): npm install gl-transitions\n- [3D Transitions](https://skills.varg.ai/component/hf.transitions-3d/) (hyperframes): npx hyperframes add transitions-3d\n\n### Where this comes from\n\n- [FFmpeg filters: rotate](https://ffmpeg.org/ffmpeg-filters.html#rotate)\n- [Remotion: custom presentations](https://www.remotion.dev/docs/transitions/presentations/custom)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Party, music, playful and transformation edits; matches footage with rotating motion."],"notFor":["Long slow spins (nausea) and spinning text-heavy shots."],"publisher":{"name":"bread · GL Transitions","handle":"gl-transitions","kind":"community","verified":false,"url":"https://github.com/gl-transitions","avatar":"https://github.com/gl-transitions.png"},"source":{"url":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Revolve.glsl","repo":"gl-transitions/gl-transitions","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Revolve · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.revolve/","license":"MIT","note":"The first shot spins into a zooming, motion-blurred vortex that unwinds into the next"},{"role":"component","label":"DreamyZoom · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.dreamy-zoom/","license":"MIT","note":"Zooms and twists into a white flash, then spins back out onto the next shot"},{"role":"component","label":"3D Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-3d/","license":"Apache-2.0","note":"Showcase of 3D perspective flip and rotate transitions"},{"role":"source","label":"FFmpeg filters: rotate","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#rotate","license":"link-only"},{"role":"source","label":"Remotion: custom presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations/custom","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Spin"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["glt.revolve","glt.dreamy-zoom","hf.transitions-3d"],"aliases":["Rotate CW II","Rotate CCW II","Center Rotate","Axis Rotation","CW Swirl","spin transition","roll transition"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/be5145756b9f/take-spin-rotate.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAH3AAAB+ADuJQWlAAADYklEQVR4nDWTSW8jVRDH+y29t92LtzibZEcJw4xGM7khBHwAznxGDgMnLtyBS4QCB6R4YEYDyAlZnXZv7rc35SDeu3VV1/vXr/6FrP9PEATPP3o5n8/rUtdNTW2bUIK6bch1cBInWR8nSfL69JPj42MnSvtwPANRYyylNP2vSppMIHywN2tbUbcbC2OEsVYGasG1EFYauZQM0yR2TYBY6OPQMd3TEcrS2lCE7NFo9PGL0yzNONNNzZRUfuA7tqONdhwHIQSPGqOR2dbqkdrr1iEduFbHdCCVFpoKaWgUplk6DrzI6K00TLBFEAYZroO08oKg64xoStbqskDXV1cxX1rNCnXYG404IVKpWj+1NsgmWqKqqKIworZLCEjgCBqz7Q0X1qaxbRs4aK3jIE57kayuirs7wc7Q0VETyXy9VskBAKXDwRDeBC3QCAAjGEMtsiWzxcOksogdAxJCptPR4eFu/vvl8vI68W9t0aycv98uFruffrW/v0+DMAQKlFLXdcPAk0pqS2MMPZIwiqSUUM/veWEYPBT1h5/O9jwF+T0kFKstxncCgkXbrh+o2+tBKu4salMAhA12bRtmAaWBtE1t+I0xluePd6KI43jnZL5cLm9WD35/gDE/HGbvLxerdy0dDIdbLyhLCMEF2IYSbDjnomnH4zGJEbTclrqq9P4ge/3qFe4290VJsPPhssjcTrVayBwBlulsyFhLTb9pNqqpgH+nCUgTbFMVeZaEANql+Gh2MAic64dc5recd7dSO6ytsMw49ZIgLwrKqB7P96f+rCiKx3cXoIWzwlDMHMo3jyW/hw9Ny5I4Zv20qetQVYDCpmo6Ge+l0Wq1+uHX387Pz+nu3svJZDLz07JfXvxx5mHdBV3bth4lhWDagLk7bOn7u2uQDFthISKkquoq3/x5lYSLxeLHt3+10qLPDl+kafq8L+uG/uObm5ubNIl6lK6ZsHvkvmzBnkGv37D7h7LVxEVSr1aPvG3K8vp2vSo2tXlaMvrNm29PTk5+6Y1hNO/Xk1VDXWnDvLiSsBcN4kabE/tnPxOuudqa08F7ruKSPeb5fMSNQRJH63VF33z93ekXn+f9z2DkDn2GfGR1uJPddsXATaEBY37pfg9NTdUSchR62j4LFhkR9GQOd+fiovoXgVnjUOWIMLUAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Big Buck Bunny (2008) + WING IT! (2023)","rights":"cc-by","note":"spin between two shots, with the timeline strip of the edit. Footage: Big Buck Bunny (2008), (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":171536,"addedAt":"2026-10-28"}},{"id":"heygen-com/camera-shake","slug":"camera-shake","name":"Camera Shake","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["shake","impact","camera","beat","ffmpeg","hyperframes","remotion","capcut"],"summary":"A short violent shake (often with a zoom) hits on the cut, like an impact or a bass hit.","description":"Built on [Camera Shake](https://github.com/heygen-com/hyperframes/tree/main/registry/components/camera-shake) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nThe image jolts in x/y and slightly in scale for a few frames around the cut, then calms.\n\n**When:** Drops, punches, slams, gaming and hype edits.\n\n**Watch out:** Shaking calm or informational content; long shakes.\n\n**Timing:** 0.2–0.8 s (CapCut Shake 3 0.8 s); strongest on the first 3–4 frames\n\n**Also called:** Shake 3, Jerky Camera, Zoom Shake 2, Shake down, impact shake, shake transition\n\n### In FFmpeg\n\nShake the first 0.4 s of B with crop offsets driven by sin/cos (crop x/y are evaluated per frame):\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[1:v]crop=w=iw-48:h=ih-48:x='24+24*sin(t*61)*max(0,1-t/0.4)':y='24+24*cos(t*47)*max(0,1-t/0.4)',scale=1280:720,setsar=1[b];\\\n [0:v][b]concat=n=2:v=1:a=0[v]\" -map \"[v]\" out.mp4\n```\n\n### In HyperFrames\n\n`npx hyperframes add camera-shake` (nine measured handheld/telephoto/rig profiles for any wrapper).\n\n### In Remotion\n\nWrap B in `<AbsoluteFill style={{transform: `translate(${dx}px, ${dy}px)`}}>` where dx/dy come from `noise2D` (@remotion/noise) times a decaying envelope from `interpolate(frame, [0, 12], [1, 0])`. remocn `impact-shake`, `lens-zoom` include shake.\n\n### In CapCut\n\nTransitions tab → Camera → Shake 3, Jerky Camera, Zoom Shake 2, Shake down. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions. Or Effects → Video effects → a Shake effect over the first frames of B.\n\n### Ready-made components\n\n- [Camera Shake](https://skills.varg.ai/component/hf.camera-shake/) (hyperframes): npx hyperframes add camera-shake\n- [Impact Shake](https://skills.varg.ai/component/remocn.impact-shake/) (remocn): npx shadcn@latest add @remocn/impact-shake\n- [Lens Zoom](https://skills.varg.ai/component/remocn.lens-zoom/) (remocn): npx shadcn@latest add @remocn/lens-zoom\n\n### Where this comes from\n\n- [FFmpeg filters: crop](https://ffmpeg.org/ffmpeg-filters.html#crop)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Drops, punches, slams, gaming and hype edits."],"notFor":["Shaking calm or informational content; long shakes."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/camera-shake","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Camera Shake · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.camera-shake/","license":"Apache-2.0","note":"Procedural handheld, telephoto and rig camera shake for any wrapper: nine measured profiles with per-lens projection, closed-form and seek-safe"},{"role":"component","label":"Impact Shake · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.impact-shake/","license":"MIT","note":"Heavy content slams in from above with squash, a damped camera jolt, a two-frame RGB split and dust puffs kicking out sideways."},{"role":"component","label":"Lens Zoom · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.lens-zoom/","license":"MIT","note":"A hard cut disguised as a lens punch-in: barrel distortion, zoom blur, chromatic split and camera shake around the splice."},{"role":"source","label":"FFmpeg filters: crop","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#crop","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Camera Shake"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.camera-shake","remocn.impact-shake","remocn.lens-zoom"],"aliases":["Shake 3","Jerky Camera","Zoom Shake 2","Shake down","impact shake","shake transition"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/206d3f5ddbda/take-camera-shake.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADdElEQVR4nDWTyWtkVRTGzx3eVOOrrkoNSTVJ7MQ40HTolSi4EumFEAjixqU7cSUuXAjiH+Ef4K5XvZGANNKrqFQkYhvUaEwq3Ul3zFCpJG+oevfde4+njF7e6g7nfOf3fY+9/c57AMCZFVJ6riiXy81mM8uy+OpSCtkOfTpN0itj7ZPDU6WURTDGAEfOmFaZ67rVQNB9ySH3fZ8hcxxR8J2w5HdD2Wi0n+3325325uZmr9dDJuZmZ1+cnz8fDKKMWopKOZjudC6HZ9RmqVvs7+1JgehyVgwCKlfyncB3pwK1vNg82vv1wf2v1tZ/s9YahN4vO3dudVZXVy/iIe3cffXm4uIi6HiUjgD1KD6XDmeCgeTWdaDsQaXk5Oh/8ukXjzb+oHFIOec8V4ox/tfT4/sP1j54/16apidnp4TjrbszfrfxfJDhSwvSmMTkNh8LLVA40ChVojTe2NgSssQRLeEA0MYwZn3X29nd/3vn8crKSpo8LxRQ6AjTtOaZudsdGUDuWHCspa8IUGTxzVvzS3OFH5+oiQkI1gAyQMBRjobJtUfff/jxR3NVYIxBI4RJH4sE+97tKtFphZbMqs3wVqs5Cl6o1kHvAueCbgEawThxoVq0s3uSP947ml+dNXEiihO9cIrxeST7sYA4P0y9MMXZNIsU1NqjsFRDewSAFizdvFbErEbEQgBTjRbIjggjODseDYfJmRMnTNardSkdlxBZ++ehfLj+3c8H325vk8ekYtKQRqD31+UsYr1MHEa9rx8ePD2oiKqUkgka38pv1n+iOA2jzBgdK0aOaCYc6ZNZZsL4vyr/LlJHT4qfff7lzrPjKIpKBRnWwlY1p+zI3lZfUMIEn6AlBrSIhlY3KuVc6yhJ7DUeRApKoVS8s9xmLHnlZePIiqWkcjshCWNZ8KTneUprup+p8bUKWhRO15X0TwjOKWy+H6jL09dfWyYh/f2+KGXdbtfYIZ2Sq6RDSsGUGmuTItW3nKN1mERKg+OkSaLzLEfUypOZzXOxvrUzMyWn56eZcyFdozJgUozHYMZaxnCj0WwotzNhgBNfCDGpS2iaig2nJ2wW+A9Ut8LOpBMXA+b7meczayNdzGm0vFocDK7kIKsvLbx5UXmDHkvI/+cKBgUNyEETwXe97XK51DInaMcKPID02gEuDM2h3MbvZvwPsq/lNalGmqgAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Cosmos Laundromat (2015) + Sprite Fright (2021)","rights":"cc-by","note":"shake between two shots, with the timeline strip of the edit. Footage: Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0; Sprite Fright (2021), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":263667,"addedAt":"2026-10-28"}},{"id":"heygen-com/glitch-transition","slug":"glitch-transition","name":"Glitch","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["glitch","tech","rgb-split","edgy","ffmpeg","hyperframes","remotion","capcut"],"summary":"The frame tears into displaced slices, colour channels split and noise flickers as A breaks into B.","description":"Built on [Glitch](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/glitch) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nHorizontal slice offsets, RGB fringes, block noise and a flicker for a few frames around the cut.\n\n**When:** Tech, gaming, cyber, music and edgy fashion pieces; \"signal lost\" moments.\n\n**Watch out:** Corporate or calm content; long glitches stop reading as an artefact.\n\n**Timing:** 0.2–0.5 s (CapCut Glitch 0.47 s, RGB Glitch 1.0 s); keep under ~20 frames\n\n**Also called:** Glitch, RGB Glitch, Color Glitch, Urban Glitch, Signal Glitch 2, TV Flickers, digital glitch, datamosh\n\n### In FFmpeg\n\nHard cut with RGB split + temporal noise for 0.3 s around it (both filters support `enable`):\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]trim=0:4,setpts=PTS-STARTPTS[x];[1:v]trim=0:4,setpts=PTS-STARTPTS[y];\\\n [x][y]concat=n=2:v=1:a=0,\\\nrgbashift=rh=-24:bh=24:enable='between(t,3.85,4.15)',\\\nnoise=alls=60:allf=t:enable='between(t,3.85,4.15)'[v]\" -map \"[v]\" out.mp4\n```\nAdd `xfade=transition=pixelize` or `hlslice` for blockier tearing.\n\n### In HyperFrames\n\nShader `glitch` from `@hyperframes/shader-transitions` placed at the cut (t = 4 s):\n```html\n<div id=\"s1\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"a.mp4\" muted playsinline></video></div>\n<div id=\"s2\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"b.mp4\" muted playsinline></video></div>\n<script src=\"https://cdn.jsdelivr.net/npm/@hyperframes/shader-transitions/dist/index.global.js\"></script>\n<script>\n  const tl = HyperShader.init({ bgColor: \"#0a0a0a\", scenes: [\"s1\", \"s2\"],\n    transitions: [{ time: 4, shader: \"glitch\", duration: 0.5 }] });\n  window.__timelines = window.__timelines || {}; window.__timelines[\"main\"] = tl;\n</script>\n```\nEach `.scene` needs an explicit background-color equal to `bgColor`. Or install the ready block: `npx hyperframes add glitch`.\n\n### In Remotion\n\nremocn `glitchCut()` presentation, 12 frames recommended:\n```tsx\nimport {glitchCut} from '@/components/remocn/glitch-cut';\n<TransitionSeries.Transition timing={linearTiming({durationInFrames: 12})} presentation={glitchCut()} />\n```\nIt needs HTML-in-canvas for the full effect (CSS fallback elsewhere); render with `--gl=angle`. GL: `GlitchMemories`, `GlitchDisplace`, `StripDatamoshGlitch`.\n\n### In CapCut\n\nTransitions tab → Glitch → Glitch, RGB Glitch, Color Glitch, Urban Glitch, Signal Glitch 2, TV Flickers. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Glitch](https://skills.varg.ai/component/hf.glitch/) (hyperframes): npx hyperframes add glitch\n- [Glitch Cut](https://skills.varg.ai/component/remocn.glitch-cut/) (remocn): npx shadcn@latest add @remocn/glitch-cut\n- [GlitchMemories](https://skills.varg.ai/component/glt.glitch-memories/) (gl-transitions): npm install gl-transitions\n- [GlitchDisplace](https://skills.varg.ai/component/glt.glitch-displace/) (gl-transitions): npm install gl-transitions\n- [StripDatamoshGlitch](https://skills.varg.ai/component/glt.strip-datamosh-glitch/) (gl-transitions): npm install gl-transitions\n- [Pixel Sort](https://skills.varg.ai/component/remocn.pixel-sort/) (remocn): npx shadcn@latest add @remocn/pixel-sort\n- [Displacement](https://skills.varg.ai/component/remocn.displacement/) (remocn): npx shadcn@latest add @remocn/displacement\n\n### Where this comes from\n\n- [FFmpeg filters: rgbashift](https://ffmpeg.org/ffmpeg-filters.html#rgbashift)\n- [remocn: Glitch Cut](https://remocn.dev/docs/transitions/glitch-cut)\n- [HyperFrames: @hyperframes/shader-transitions](https://hyperframes.heygen.com/packages/shader-transitions)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Tech, gaming, cyber, music and edgy fashion pieces; \"signal lost\" moments."],"notFor":["Corporate or calm content; long glitches stop reading as an artefact."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/glitch","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Glitch · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.glitch/","license":"Apache-2.0","note":"Shader transition with digital glitch artifacts"},{"role":"component","label":"Glitch Cut · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.glitch-cut/","license":"MIT","note":"A broadcast-glitch hard cut: the frame tears into displaced slices with channel split and corrupted blocks, and the incoming scene takes over slice by slice at the peak."},{"role":"component","label":"GlitchMemories · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.glitch-memories/","license":"MIT","note":"A crossfade broken into offset, color-split blocks, like a corrupted video file"},{"role":"component","label":"GlitchDisplace · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.glitch-displace/","license":"MIT","note":"The frame liquefies into a washed-out displacement glitch and snaps onto the next shot"},{"role":"component","label":"StripDatamoshGlitch · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.strip-datamosh-glitch/","license":"MIT","note":"Datamosh: torn horizontal strips, chroma shift and scan noise drag the first shot into the next"},{"role":"component","label":"Pixel Sort · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.pixel-sort/","license":"MIT","note":"The scene melts into seeded vertical streaks like glitch-art pixel sorting, then the next scene's columns fall in and snap into place."},{"role":"component","label":"Displacement · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.displacement/","license":"MIT","note":"The frame breaks into a grid of cells that shear apart into offset, colour-fringed tiles under film grain, then settle back carrying the next scene."},{"role":"source","label":"FFmpeg filters: rgbashift","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#rgbashift","license":"link-only"},{"role":"source","label":"remocn: Glitch Cut","kind":"link","url":"https://remocn.dev/docs/transitions/glitch-cut","license":"link-only"},{"role":"source","label":"HyperFrames: @hyperframes/shader-transitions","kind":"link","url":"https://hyperframes.heygen.com/packages/shader-transitions","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Glitch"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.glitch","remocn.glitch-cut","glt.glitch-memories","glt.glitch-displace","glt.strip-datamosh-glitch","remocn.pixel-sort","remocn.displacement"],"aliases":["Glitch","RGB Glitch","Color Glitch","Urban Glitch","Signal Glitch 2","TV Flickers","digital glitch","datamosh"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/11b70bf77fd5/take-glitch-transition.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADq0lEQVR4nBWTy2/cRBzHx56xZ7z2rL3rzT672TyUJjSCHnhUKuKC6Bm4cEOIPw9F4sKtcADURkJJaUpFadKm2SSbTbIvP9bPsT1mKs3pp58+mt/3If347T2McZWgfr8fqZvD8/N4fIAgeu2y6XRqFnm9VieEhFFUN1VKKcd1BGHJlbIssVRCCOfQGJ6doWrqrbYGD77+rtfrHU23QON4xIDv+5g9N2Ww88EnYvXtTeYmbr+dUb3CoC5JciETAYK8AADIEsqyEnm+0+191qAbZ8djGLjbuMwHO/JkEoz+3Flv3f/0geM4x97s9kqg4m69w4pERkgGWJIlCSkCBJahiaEYsfXVNgcKRBXEI8/1qlSp0l782uo3e3c7HV/Xfx/p7M1Vvnjb3N1WtVoUxzHXijwHaarrBgChqiKkmxunF2GTjIQ6k0tHHAXym0qlklWsoRPyp/tCETMB65Vcp8SgxJUMngIVqSVSikzmJQBprCMJMeujx0eLH9rD+339WWZG+ej0+KUkSdVyoQIM0xYmpEk13yIs15/89W8Eks3NjVLtiJtSTBzXC1V75s/QF19+c3BwcDFhZqq9ODlJkmS2cBVF6bcHQp2ZFslxOndneehTarGUteuAlmGsa5zzO4nz+e5Aefj93t4eWhRyiMivv/z86NFXK1vrh4eHXKVWq+WHy4xrTpxEURwtJiICG7RKqQ3bXYGARq0o8irGBl1ZjM5XDQ3tP/6p0bBfOkXwxwuNPpu/e1fSOkx9B9pLvpRPzzStUlXLqklYmM7DtNu5JytyIFSC4mUqUWwi36kb6DbwMzFpbxyNr7b8sIorY1nLUxC7Y2HOWrSoVRWpUlOofXkdir+Y/xyZpnnT6OV5rmrhHGMWk+nVObJ3Pw6Wy7yMZWQgAljGhB1AUaXIxbmItV6zjFs3mxcBUVLDMDirThZsGF6KPpzcvOqNbwF4LkKDNJb73lKnwPHSGKpJxrnvwbLAKOcyn/qpG43vQjWOYmKTpqHNSilImOM7nuc6KLkuJ8p83Gq1EOYehbGvKIyxMJNzABjLgyAG02G327GonWVZoOoJVpsrA0jrf89uwjBqNKw8TgMJJhGXFVIoBP22f9HutGO4Ahq1BHGRDmq/tzaVtheGXtbMOEnW1KcYm82GEO1NpzJRLVVTb7dqcF7wjDGs1YLAQcOzuD0YpPShZgEuZQL0HgYA6qKkLK95ptjKGn5CKbLZoaRJHzaI6IRorNiB0vvSJth69d/kf+NM/EI1cRGvAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Tears of Steel (2012) + Coffee Run (2020)","rights":"cc-by","note":"glitch between two shots, with the timeline strip of the edit. Footage: Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":448215,"addedAt":"2026-10-28"}},{"id":"heygen-com/blur-transition","slug":"blur-transition","name":"Blur Through","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["blur","calm","premium","focus","ffmpeg","hyperframes","remotion","capcut"],"summary":"A blurs out of focus, the shots swap at peak blur, and B pulls back into focus.","description":"Built on [Blur Transitions](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-blur) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nSoft defocus (or a directional smear) hides the swap; like a lens racking between two scenes.\n\n**When:** Calm, premium and lifestyle pieces; when two shots have very different colours.\n\n**Watch out:** Very short blurs read as a focus mistake; give the peak a few frames.\n\n**Timing:** 0.5–1.0 s (CapCut Blur 0.47 s); calm 20–30 px blur, high energy 3–6 px\n\n**Also called:** Blur, Horizontal Blur, Vertical Blur, Blurred Highlight, focus pull, defocus transition\n\n### In FFmpeg\n\nCrossfade with a symmetrical Gaussian blur peak (A 5 s, T 0.6 s):\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n [a][b]xfade=transition=fade:duration=0.6:offset=4.4,gblur=sigma=20:enable='between(t,4.5,4.9)'[v]\" -map \"[v]\" out.mp4\n```\n`xfade=transition=hblur` is a built-in horizontal-blur crossfade.\n\n### In HyperFrames\n\nCSS blur crossfade:\n```js\ntl.to(\"#s1\", { filter: \"blur(10px)\", scale: 1.03, opacity: 0, duration: 0.6, ease: \"power2.inOut\" }, T);\ntl.fromTo(\"#s2\", { filter: \"blur(10px)\", scale: 0.97, opacity: 0 }, { filter: \"blur(0px)\", scale: 1, opacity: 1, duration: 0.6, ease: \"power2.inOut\" }, T);\n```\nBlock: `transitions-blur`; rack focus: `rack-focus`.\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {linearBlur} from '@remotion/transitions/linear-blur';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><ShotA /></TransitionSeries.Sequence>\n  <TransitionSeries.Transition presentation={linearBlur({intensity: 0.1})} timing={linearTiming({durationInFrames: 20})} />\n  <TransitionSeries.Sequence durationInFrames={90}><ShotB /></TransitionSeries.Sequence>\n</TransitionSeries>\n```\nTotal = 90 + 90 - 20 frames: the transition overlaps the two shots.\nShader presentations are built on Remotion's HTML-in-canvas: renders work out of the box (`--gl=angle`, or `--gl=swangle` without a GPU); the Studio preview needs Chrome with `chrome://flags/#canvas-draw-element` enabled. CSS-only alternative: custom presentation with `filter: blur(${p*20}px)`; `blurSlide({})` adds motion.\n\n### In CapCut\n\nTransitions tab → Blur → Blur, Horizontal Blur, Vertical Blur, Vertical Blur II, Blurred Highlight. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Blur Transitions](https://skills.varg.ai/component/hf.transitions-blur/) (hyperframes): npx hyperframes add transitions-blur\n- [LinearBlur](https://skills.varg.ai/component/glt.linear-blur/) (gl-transitions): npm install gl-transitions\n- [Focus Pull](https://skills.varg.ai/component/remocn.focus-pull/) (remocn): npx shadcn@latest add @remocn/focus-pull\n- [Rack Focus](https://skills.varg.ai/component/hf.rack-focus/) (hyperframes): npx hyperframes add rack-focus\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg filters: gblur](https://ffmpeg.org/ffmpeg-filters.html#gblur)\n- [Remotion: presentations](https://www.remotion.dev/docs/transitions/presentations)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)","useWhen":["Calm, premium and lifestyle pieces; when two shots have very different colours."],"notFor":["Very short blurs read as a focus mistake; give the peak a few frames."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-blur","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Blur Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-blur/","license":"Apache-2.0","note":"Showcase of blur-based transitions between scenes"},{"role":"component","label":"LinearBlur · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.linear-blur/","license":"MIT","note":"Both shots soften into a heavy blur, crossfade, then pull back into focus on the next"},{"role":"component","label":"Focus Pull · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.focus-pull/","license":"MIT","note":"A rack-focus transition that defocuses the outgoing scene into a bright blur and resolves the next one into focus."},{"role":"component","label":"Rack Focus · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.rack-focus/","license":"Apache-2.0","note":"A focus pull with real aperture bokeh: the focal plane travels from a near subject to a far one, so one resolves as the other blows into hard-edged polygon discs that clip to a cat's eye toward the corners…"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg filters: gblur","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#gblur","license":"link-only"},{"role":"source","label":"Remotion: presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Blur Through"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.transitions-blur","glt.linear-blur","remocn.focus-pull","hf.rack-focus"],"aliases":["Blur","Horizontal Blur","Vertical Blur","Blurred Highlight","focus pull","defocus transition"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b83900ef91bc/take-blur-transition.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADNElEQVR4nC2Ua2/cRBSG53Jm7PFtd70XkiYtIS2BCvGRD0j8Yn5OgaqlBYFIsttssrv2em3PeC4cF0aWZY2t95z3mfeYQlKGEOjQMcZelsnN1zf3cvnhw+81XQCIADKKomT1Ii8KRrnznhC8xuW989YNw+D69tSegIqY+BA7E6v4+uLZd69evv3t0ThBBerbiMlUctBVZFAAOCEsjCqBoKYPznFrtW6UM4C7lNFcQK5iFUXODk1vAhcqUpxxIUWRZhSk1zqEnlLqAvbi8WH0QQkQzyIpgYG0nVLqOkcHdPD06XA8diGdfCEgEkJgGdNrCgMa54Rx4NYFRqnBdkLgdFzYo3MBCtpczCfnMQOAj7sqni2ySAZnsVw/9CiE+5Km3jnCA3UUXzlCOBfkfwnfmQ5FIY9EIphnMKDFpNi1Rsb5WIhLP/IcgHPOAt4FA+cdSOjaVuuOMwYiGiU4WGdhWcQJc8y7LMmmVLT1NgGGjRy1AvwEWTg3GM2VsmG04ztNg5ecjw2NmGggAWmC7rrVYlHGRAj2sNkjqshWiJ9JrrWu+lEUWPAeMQnGuTHGWfufBJefP7cWqcF9Y8+TMr0o379/p0MqID7Wujk2seon04lVMYqODu2A3WBtMUJnndZIDQLp+z5iVqgYfHH+x66PsnBwmbHkaXcKEBHKq8OWEvvNTYb+TscDIi/koNCuym5vb7nMnLNNO56GkpiME6zSibB0/bDJZhPImB0szM7v7u5lAypJsTeZ57PZbL1eG7fP8/yMdMtIt0MzGHP4++7y8iLNlnVdQ97pcp424ZRy8uUcz4X9VbfzFDTDHJHBuO32KY5lJOQijSYT9esvb8pZefs4bLfbcrWU+WK/2zPOwJhm/zR8+/p5czrxol/N58slqSrMyrQoCuSNdKueIovrsrxfrzFDu311X0k1uXBq8eeDXSQUpwP+senl2eXb/kU2zU+iP9jEOoyDs4RuOsapg5g/W9SJSpTgNSuv2Me2a6/PKkwP5z2eQJZNnx4/wYaurl79+Jj/9Ml7wED3OJTjKI3jifEOHvO4C1YY+MH9/P3r51dfvanrY0oblKCf/wStEO/85l9HxNNDXfHEqgAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Spring (2019) + Big Buck Bunny (2008)","rights":"cc-by","note":"hblur between two shots, with the timeline strip of the edit. Footage: Spring (2019), Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0; Big Buck Bunny (2008), (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0.","bytes":176406,"addedAt":"2026-10-28"}},{"id":"heygen-com/light-leak","slug":"light-leak","name":"Light Leak","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["light-leak","warm","film","retro","ffmpeg","hyperframes","remotion","capcut"],"summary":"A warm wash of orange/red light drifts across and blows out the frame at the cut, then fades on B.","description":"Built on [Light Leak](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/light-leak) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nSoft, organic colour flares (like film exposed to light) cover the cut and recede.\n\n**When:** Memories, travel, weddings, retro or film-look edits, warm brand stories.\n\n**Watch out:** Cold, clinical or tech content; leaks that are visibly shaped blobs.\n\n**Timing:** 0.7–1.2 s (CapCut Light Leaks 1.0 s)\n\n**Also called:** Light Leaks, Camera Glow, Light Beam, light leak transition, analog leak\n\n### In FFmpeg\n\nOverlay a light-leak clip (stock or generated) in screen mode over a short crossfade:\n```bash\nffmpeg -i a.mp4 -i b.mp4 -i leak.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n [a][b]xfade=transition=fade:duration=0.4:offset=4.6[x];\\\n [2:v]fps=30,settb=AVTB,format=yuv420p,scale=1280:720,setpts=PTS-STARTPTS+4.2/TB[l];\\\n [x][l]blend=all_mode=screen:shortest=0:eof_action=pass[v]\" -map \"[v]\" out.mp4\n```\n(`blend` needs equal sizes and formats; a 1 s leak clip on black starts at 4.2 s.)\n\n### In HyperFrames\n\nShader `light-leak` from `@hyperframes/shader-transitions` placed at the cut (t = 4 s):\n```html\n<div id=\"s1\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"a.mp4\" muted playsinline></video></div>\n<div id=\"s2\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"b.mp4\" muted playsinline></video></div>\n<script src=\"https://cdn.jsdelivr.net/npm/@hyperframes/shader-transitions/dist/index.global.js\"></script>\n<script>\n  const tl = HyperShader.init({ bgColor: \"#0a0a0a\", scenes: [\"s1\", \"s2\"],\n    transitions: [{ time: 4, shader: \"light-leak\", duration: 0.7 }] });\n  window.__timelines = window.__timelines || {}; window.__timelines[\"main\"] = tl;\n</script>\n```\nEach `.scene` needs an explicit background-color equal to `bgColor`. Or install the ready block: `npx hyperframes add light-leak`. CSS overlay: `organic-light-leak-overlay`.\n\n### In Remotion\n\nLight leak on the cut without shortening the timeline:\n```tsx\nimport {lightLeak} from '@remotion/effects/light-leak';\n<TransitionSeries.Overlay durationInFrames={30}>\n  <Solid width={1920} height={1080} effects={[lightLeak({seed: 3, hueShift: 0, progress: interpolate(useCurrentFrame(), [0, 30], [0, 1])})]} />\n</TransitionSeries.Overlay>\n```\n(`<LightLeak>` from `@remotion/light-leaks` is deprecated in favour of this effect; it reveals in the first half of progress and retracts in the second.)\n\n### In CapCut\n\nTransitions tab → Light Effect → Light Leaks, Camera Glow, Light Beam. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Light Leak](https://skills.varg.ai/component/hf.light-leak/) (hyperframes): npx hyperframes add light-leak\n- [Organic Light Leak Overlay](https://skills.varg.ai/component/hf.organic-light-leak-overlay/) (hyperframes): npx hyperframes add organic-light-leak-overlay\n- [Light Leak](https://skills.varg.ai/component/remocn.light-leak/) (remocn): npx shadcn@latest add @remocn/light-leak\n- [Light Transitions](https://skills.varg.ai/component/hf.transitions-light/) (hyperframes): npx hyperframes add transitions-light\n\n### Where this comes from\n\n- [Remotion: lightLeak() effect](https://www.remotion.dev/docs/effects/light-leak)\n- [Remotion: <TransitionSeries>](https://www.remotion.dev/docs/transitions/transitionseries)\n- [HyperFrames: @hyperframes/shader-transitions](https://hyperframes.heygen.com/packages/shader-transitions)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Memories, travel, weddings, retro or film-look edits, warm brand stories."],"notFor":["Cold, clinical or tech content; leaks that are visibly shaped blobs."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/light-leak","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Light Leak · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.light-leak/","license":"Apache-2.0","note":"Shader transition with cinematic light leak overlay"},{"role":"component","label":"Organic Light Leak Overlay · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.organic-light-leak-overlay/","license":"Apache-2.0","note":"Finite CSS light-leak overlay for memory beats and motivated transitions"},{"role":"component","label":"Light Leak · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.light-leak/","license":"MIT","note":"A warm analog light leak drifts in from an edge and blows the frame out to near-white at the cut, then cools off to reveal the next scene."},{"role":"component","label":"Light Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-light/","license":"Apache-2.0","note":"Showcase of light-based glow and flash transitions"},{"role":"source","label":"Remotion: lightLeak() effect","kind":"link","url":"https://www.remotion.dev/docs/effects/light-leak","license":"link-only"},{"role":"source","label":"Remotion: <TransitionSeries>","kind":"link","url":"https://www.remotion.dev/docs/transitions/transitionseries","license":"link-only"},{"role":"source","label":"HyperFrames: @hyperframes/shader-transitions","kind":"link","url":"https://hyperframes.heygen.com/packages/shader-transitions","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Light Leak"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.light-leak","hf.organic-light-leak-overlay","remocn.light-leak","hf.transitions-light"],"aliases":["Light Leaks","Camera Glow","Light Beam","light leak transition","analog leak"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ac46538b4fe9/take-light-leak.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAAC1klEQVR4nD1Tu44dRRCtV3fPzN65axt5sRcskMmJyP0xfAgZn2E5JCW0nBCREiAZRLRCstCaRbv3fXemq4rqa8wErVF3PU6dcwo3r1+5OVkCAMPCwliWpuaHGjfUZXenY43TbyczozmZKbi0+NkJkRLHo/gkRORG0PISQnLJZcgH3pdS6Or25uYmzzIMA3zyoN7foxEy1JIWZ4uDHiO3X8putxWYGIhQ+rgyyYCkCWU5nP21eX99dfb7ulNlywfdbC8Pz778YjNURORnvSyXnSzUFKtBVwVrQSYHAWaTQJfGFb/75dflH9tOzaAggEYrQVlPu6vr9M2nQUWdp3m3hc8XmZNOSj2IH80ZPEoxGLkIw4r2f64Xc8eINSERO9Xgru949sNOVxeXl/s8gSDC7FYtw7DoJWIgaG21zIuhAzwa5PEIs5IIFA80zjE1QQYmWu/vLs6/kocEFDRnjBPYVIUeD/Fce+r73p8QB6nHsV6TbcwTQbGWkBNE+5iSmElhOsriPBQEguiLCvEvfmClkIIVIxlCWeb5bBxg3EGgKAE2BnYW0RxcAZ4PsAhahyiA9RBYXAEdxR91kpKzVsKyge3ft7I+liPgg6CGvIAzQw57oGc2om6ZQareva+qhu1r/QDEblYTortqU6d99wXyWKrWQIolBiNPgZit8cVlgP32eiKNEp5CcMLIRxI9HoVZe4qrGKR5JDuSYxDZQmMchqRRybtozjJkJ06h8snBp7NhEH8YVm6hjTl2ZGzbwgB9CuFjI4jFszFLmCOVEqQEWAjPBFJv5jzVAhkvStua5M3ZORqjldPSdA1d0wxhgr6FemgUM6Twl2F7dT+x5G1M+e6HN08vn+67J60st0UNgdrrh0bQQp/jz2HU3v8JjID54zj/fUrDanUn37/86esXL+7G5xYbrHPs8ccA/hAWdb/tfhzH8UJ/a4WB/48J2zRx8mdv3777F3lxZOBdUs49AAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Cosmos Laundromat (2015) + Spring (2019)","rights":"cc-by","note":"light-leak between two shots, with the timeline strip of the edit. Footage: Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0; Spring (2019), Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0.","bytes":246537,"addedAt":"2026-10-28"}},{"id":"gl-transitions/film-burn","slug":"film-burn","name":"Film Burn","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["film","vintage","burn","light","ffmpeg","hyperframes","remotion","capcut"],"summary":"Hot glowing holes or a flare burn across A like overheated film and reveal B.","description":"Built on [FilmBurn](https://github.com/gl-transitions/gl-transitions/blob/master/transitions/FilmBurn.glsl) by anastasia-dunbar (gl-transitions), MIT. The write-up and recipes below are varg's.\n\nBright orange-white burn edges eat the frame; the next shot shows through the burnt areas.\n\n**When:** Vintage, music video, documentary archive, dramatic chapter changes.\n\n**Watch out:** Mixing it with clean modern UI footage; it reads as a theme clash.\n\n**Timing:** 0.5–1.0 s (CapCut Film Burn 0.7 s, Burn 0.47 s)\n\n**Also called:** Film Burn, Burn, film burn transition, burn through, ember burn\n\n### In FFmpeg\n\nNo built-in burn. Screen-blend a film-burn overlay clip over a crossfade (same pattern as the Light Leak card), or run GL `FilmBurn`/`BurnThrough` via editly (1.x names `FilmBurn`, `burn0`).\n\n### In HyperFrames\n\nShader `ridged-burn` from `@hyperframes/shader-transitions` placed at the cut (t = 4 s):\n```html\n<div id=\"s1\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"a.mp4\" muted playsinline></video></div>\n<div id=\"s2\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"b.mp4\" muted playsinline></video></div>\n<script src=\"https://cdn.jsdelivr.net/npm/@hyperframes/shader-transitions/dist/index.global.js\"></script>\n<script>\n  const tl = HyperShader.init({ bgColor: \"#0a0a0a\", scenes: [\"s1\", \"s2\"],\n    transitions: [{ time: 4, shader: \"ridged-burn\", duration: 0.7 }] });\n  window.__timelines = window.__timelines || {}; window.__timelines[\"main\"] = tl;\n</script>\n```\nEach `.scene` needs an explicit background-color equal to `bgColor`. Or install the ready block: `npx hyperframes add ridged-burn`.\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {filmBurn} from '@remotion/transitions/film-burn';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><ShotA /></TransitionSeries.Sequence>\n  <TransitionSeries.Transition presentation={filmBurn({seed: 1})} timing={linearTiming({durationInFrames: 24})} />\n  <TransitionSeries.Sequence durationInFrames={90}><ShotB /></TransitionSeries.Sequence>\n</TransitionSeries>\n```\nTotal = 90 + 90 - 24 frames: the transition overlaps the two shots.\nShader presentations are built on Remotion's HTML-in-canvas: renders work out of the box (`--gl=angle`, or `--gl=swangle` without a GPU); the Studio preview needs Chrome with `chrome://flags/#canvas-draw-element` enabled.\n\n### In CapCut\n\nTransitions tab → Light Effect → Film Burn, Burn. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [FilmBurn](https://skills.varg.ai/component/glt.film-burn/) (gl-transitions): npm install gl-transitions\n- [BurnThrough](https://skills.varg.ai/component/glt.burn-through/) (gl-transitions): npm install gl-transitions\n- [Ridged Burn](https://skills.varg.ai/component/hf.ridged-burn/) (hyperframes): npx hyperframes add ridged-burn\n- [Ember Burn](https://skills.varg.ai/component/remocn.ember-burn/) (remocn): npx shadcn@latest add @remocn/ember-burn\n\n### Where this comes from\n\n- [Remotion: presentations](https://www.remotion.dev/docs/transitions/presentations)\n- [HyperFrames: @hyperframes/shader-transitions](https://hyperframes.heygen.com/packages/shader-transitions)\n- [GL Transitions gallery](https://gl-transitions.com)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Vintage, music video, documentary archive, dramatic chapter changes."],"notFor":["Mixing it with clean modern UI footage; it reads as a theme clash."],"publisher":{"name":"anastasia-dunbar · GL Transitions","handle":"gl-transitions","kind":"community","verified":false,"url":"https://github.com/gl-transitions","avatar":"https://github.com/gl-transitions.png"},"source":{"url":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/FilmBurn.glsl","repo":"gl-transitions/gl-transitions","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"FilmBurn · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.film-burn/","license":"MIT","note":"Warm, glowing film-burn light leaks wash over the shot and fade out on the next"},{"role":"component","label":"BurnThrough · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.burn-through/","license":"MIT","note":"Noisy holes burn through the first shot with glowing orange edges, revealing the next"},{"role":"component","label":"Ridged Burn · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.ridged-burn/","license":"Apache-2.0","note":"Shader transition with ridged turbulence burn effect"},{"role":"component","label":"Ember Burn · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.ember-burn/","license":"MIT","note":"The outgoing frame catches fire where it is brightest, boils in the heat, chars at the rim, and blows away as sparks carrying its own colour."},{"role":"source","label":"Remotion: presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"},{"role":"source","label":"HyperFrames: @hyperframes/shader-transitions","kind":"link","url":"https://hyperframes.heygen.com/packages/shader-transitions","license":"link-only"},{"role":"source","label":"GL Transitions gallery","kind":"link","url":"https://gl-transitions.com","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Film Burn"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["glt.film-burn","glt.burn-through","hf.ridged-burn","remocn.ember-burn"],"aliases":["Film Burn","Burn","film burn transition","burn through","ember burn"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/c082171f2290/take-film-burn.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADJklEQVR4nE1Ty27jRhDsmenhkBxSEmVL8hrQOru5BDkEue4pP5PPyAfkP/I3uQUINkDgwEhsrb22JEqkRHLIeaTpvWyDhwHYXeiqrmLlT9eMMysYShnyuUQ0WR5TAWy3W5/Ccrnafr/Os8zNQ9/3yf2/59Mp/vtj13Uq0vBa3gcUgtOLheD6XmYThiICDr1rdDJZ3zRgOhkjMucHztXrDDCGwJBx6QUPITDGPPNoYXwBk9TEu4a6mnKn09R2OaDw11c8ywAjJhXn3HsvUXbQOe8FCk4Q4xiDEZjRNgG4p4eA0DYNP1V+MHauZ8vLTjLPPaiYEVfuXeBf+rmUhOVHBAaCQALavNBau65p2japD6E5M28VJq11YbDJdQGMey4wTnpUajaVLh3MJkk/DcaI4Al45Mtp++9+iIvC3d+Wj49CAHPOdy2xgHxKX7p4U+73jAeMxEkAlxHouDqWWXOKOLcMiQgPjrAQb/84eseGPg+hawxtASSQUpFp2+cnWC/jmLlcg8LOitlkBklxgo+kAu0BXxV62wfnorarqoq7oJSKL5ekf/P8OVsuCU1K2bxslJmE5JI7CyDpr8CoH3pgXwOdzog4HI5ysL2O04tZI9VYFwuYTofjlkWRJaFT5ofIG4S6U0NFQtOwoKUCeBKffBR5e9of1LSIpRQTTaTQOdc0ybasbu9O3xZvb26a6drGeTbU5nOd3v2XHR5t14+3xzAu4wIEj2a9JiPj8soYo57u6/qQWd40Z5Uko1UF0fVy8Q6UYrvN6N50gnlBFx8h2so7h9ZZa5GcSZbim4e2LNVhx/vBAMYoz+c601rqjJxn6m3CpxGDU12lg9MUgDjjZOtqB+TB/gwENHt6INlEFk+MCVLScK/SJMuSN1cCMawyOS+SJOUoUcRSeBHKgeB2n0iAfvVufjH3xtCh8Jeni6vVqpLvZ4tZn0RjcKoaOfrn0bqmFDrVbze/Z5lOzQPRT8tjXVVxeySJ+/agX7QtvqF446/3xY/vPxz0B9953tkvIQRKIIjX9Fm2Zz+//Jbn+cL/OSrLKXccxmhSyPY7vzNV+Oufu/8B+9e68c36dLYAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Charge (2022) + Tears of Steel (2012)","rights":"cc-by","note":"film-burn between two shots, with the timeline strip of the edit. Footage: Charge (2022), Blender Studio | studio.blender.org, CC BY 4.0; Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0.","bytes":229106,"addedAt":"2026-10-28"}},{"id":"heygen-com/light-sweep","slug":"light-sweep","name":"Light Sweep","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["light","product","luxury","flare","ffmpeg","hyperframes","remotion","capcut"],"summary":"A bright band or lens flare sweeps across the frame and the shot changes behind it.","description":"Built on [Light Transitions](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-light) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA diagonal streak of light crosses the image; at its brightest point A becomes B.\n\n**When:** Product shots, luxury, beauty and logo reveals.\n\n**Watch out:** Fake-looking hard-edged flares; keep the band soft and the colour matched to the scene.\n\n**Timing:** 0.5–0.8 s (CapCut Light Sweep II 0.8 s, Lumin Flash 0.8 s)\n\n**Also called:** Light Sweep II, Lumin Flash, Lightflow Scan, lens flare transition, shine sweep\n\n### In FFmpeg\n\nMoving soft white band (generated with geq) screen-blended over a fade:\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];[a][b]xfade=transition=fade:duration=0.3:offset=4.7[x];\\\n [x]geq=lum='min(255,lum(X,Y)+180*exp(-pow((X+Y*0.5-(T-4.5)*3000)/120,2)))':cb='cb(X,Y)':cr='cr(X,Y)'[v]\" -map \"[v]\" out.mp4\n```\n(geq is slow; for long clips trim the window first.)\n\n### In HyperFrames\n\nLight family blocks: `transitions-light`, overlay `editorial-flash-overlay`; or tween a wide (2400px+) soft gradient bar across with `mix-blend-mode: screen` while swapping scenes at its peak.\n\n### In Remotion\n\n`<TransitionSeries.Overlay durationInFrames={20}>` containing a rotated white gradient `<div>` whose `translateX` is interpolated from -100% to 100%, with `mixBlendMode: 'screen'`.\n\n### In CapCut\n\nTransitions tab → Light Effect → Light Sweep II, Lumin Flash, Lightflow Scan. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Light Transitions](https://skills.varg.ai/component/hf.transitions-light/) (hyperframes): npx hyperframes add transitions-light\n- [Editorial Flash Overlay](https://skills.varg.ai/component/hf.editorial-flash-overlay/) (hyperframes): npx hyperframes add editorial-flash-overlay\n- [Light Leak](https://skills.varg.ai/component/hf.light-leak/) (hyperframes): npx hyperframes add light-leak\n\n### Where this comes from\n\n- [Remotion: <TransitionSeries>](https://www.remotion.dev/docs/transitions/transitionseries)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Product shots, luxury, beauty and logo reveals."],"notFor":["Fake-looking hard-edged flares; keep the band soft and the colour matched to the scene."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-light","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Light Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-light/","license":"Apache-2.0","note":"Showcase of light-based glow and flash transitions"},{"role":"component","label":"Editorial Flash Overlay · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.editorial-flash-overlay/","license":"Apache-2.0","note":"Finite neutral-warm light layers for a seek-safe camera-flash cut or social reveal"},{"role":"component","label":"Light Leak · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.light-leak/","license":"Apache-2.0","note":"Shader transition with cinematic light leak overlay"},{"role":"source","label":"Remotion: <TransitionSeries>","kind":"link","url":"https://www.remotion.dev/docs/transitions/transitionseries","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Light Sweep"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.transitions-light","hf.editorial-flash-overlay","hf.light-leak"],"aliases":["Light Sweep II","Lumin Flash","Lightflow Scan","lens flare transition","shine sweep"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f46b2c13dda1/take-light-sweep.mp4","w":640,"h":400,"duration":4.3,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAACgklEQVR4nFVTyY4TMRCtsstO2sMsApGMYCTEnQN/MB/Idbhz5M6PcENILAekIEGUZLJ0Ol557s4EqI4sp+x6VfXqmT9//6aUogcTEa21gXFKORulcs6JKKfsg8dKpEpvXK0gBMHGiAxew1T9ijWT4WxVOXPNfD5frLfeeyI9Ho8vr1wRwKchpbHiGpdyCr7DqWjKmpiIlcZHClhCYvh+vZ39/FVY91HxsNmE1E4nUysmxpgpWSONIW3PiBylKAM8qhmKlFpUwRrigTixOl6gTId9nP9evLiZJE0+cUl537YObRhFHNFa5ULVzlUS4lzG4IkJmVFpzAX9llzbT8Tr7X6z20ymN0Rb0Ib86KSmUUqcqdQIkJi0sBF2I1K2tG2LcDQNlKFkYGGzvF9Mpi9BUQ04GjZaLh9Z3EByzM6OWI0AY4hsBgLVyCH+ZMY4hBGdUz099D7QH6X1/QjryGiflTqg0eD9KsWi2KT/UQDqzs8H+h98qf9lCT6hBVARQsQ9iOYQCNpxY2vtuO26YQ4DCqrudu0sfFlvd/A4ayE7q2syWW67GE7wx/Fh8b5zrkF1iA+9dJqRGY1GOcfdzoupwakccuQuEkqRWsyDRiHXEyOFctvua8cKUkeNSXTSHKFPrWVQV6hE1iRaemX3TjVshulktFj/5d5ZKehnU0eoNRuj4qDvlJAEUMlHubwYhxhyiiciejjdvxwAaYCG3EAimVUoKuToq1OO3CUUW9PLm7v319fXXp6DYMZlxisNIPXYZjo0zr16MlsuF1f5R69w/S+bNZ1yy9VK3t59eH17u7p4ivS6hL+T7l+ZKqCcH0/e7buuSR9rBScZ1tO6evvs66fZH5a4k0cGvGJLAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023) + Cosmos Laundromat (2015)","rights":"cc-by","note":"light between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0.","bytes":217479,"addedAt":"2026-10-28"}},{"id":"heygen-com/chromatic-split","slug":"chromatic-split","name":"Chromatic Split","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["rgb-split","chromatic","fashion","music","ffmpeg","hyperframes","remotion","capcut"],"summary":"Red, green and blue channels pull apart around the cut, then snap back together on the new shot.","description":"Built on [Chromatic Aberration Wipe](https://github.com/heygen-com/hyperframes/tree/main/registry/components/chromatic-aberration-wipe) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nColour ghosts offset horizontally or radially for a few frames, with a slight zoom.\n\n**When:** Fashion, music, tech promos; as a lighter alternative to a full glitch.\n\n**Watch out:** Large offsets on text; keep the split brief.\n\n**Timing:** 0.2–0.5 s; peak offset on the cut\n\n**Also called:** RGB split, chromatic aberration transition, colour fringe, Rainbow Warp\n\n### In FFmpeg\n\nChannel split ramping around a cut (rgbashift supports runtime `enable`; offsets are fixed per window, so stack 2 windows for a ramp):\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v][1:v]concat=n=2:v=1:a=0,\\\nrgbashift=rh=-10:bh=10:enable='between(t,3.8,3.9)+between(t,4.1,4.2)',\\\nrgbashift=rh=-30:bh=30:gv=6:enable='between(t,3.9,4.1)'[v]\" -map \"[v]\" out.mp4\n```\n\n### In HyperFrames\n\nShader `chromatic-split` from `@hyperframes/shader-transitions` placed at the cut (t = 4 s):\n```html\n<div id=\"s1\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"a.mp4\" muted playsinline></video></div>\n<div id=\"s2\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"b.mp4\" muted playsinline></video></div>\n<script src=\"https://cdn.jsdelivr.net/npm/@hyperframes/shader-transitions/dist/index.global.js\"></script>\n<script>\n  const tl = HyperShader.init({ bgColor: \"#0a0a0a\", scenes: [\"s1\", \"s2\"],\n    transitions: [{ time: 4, shader: \"chromatic-split\", duration: 0.5 }] });\n  window.__timelines = window.__timelines || {}; window.__timelines[\"main\"] = tl;\n</script>\n```\nEach `.scene` needs an explicit background-color equal to `bgColor`. Or install the ready block: `npx hyperframes add chromatic-radial-split`. Slide variant: `npx hyperframes add chromatic-aberration-wipe`.\n\n### In Remotion\n\nCustom presentation rendering three copies of `children` with `mixBlendMode: 'screen'`, tinted R/G/B via CSS filters and offset by `presentationProgress`; or `@remotion/effects/chromatic-aberration` on a canvas-based `<Video>`.\n\n### In CapCut\n\nTransitions tab → Glitch / Distortion → RGB Glitch, Rainbow Warp. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions. Or Effects → Video effects → an RGB split effect for a few frames.\n\n### Ready-made components\n\n- [Chromatic Aberration Wipe](https://skills.varg.ai/component/hf.chromatic-aberration-wipe/) (hyperframes): npx hyperframes add chromatic-aberration-wipe\n- [Chromatic Radial Split](https://skills.varg.ai/component/hf.chromatic-radial-split/) (hyperframes): npx hyperframes add chromatic-radial-split\n- [Gravitational Lens](https://skills.varg.ai/component/hf.gravitational-lens/) (hyperframes): npx hyperframes add gravitational-lens\n\n### Where this comes from\n\n- [FFmpeg filters: rgbashift](https://ffmpeg.org/ffmpeg-filters.html#rgbashift)\n- [HyperFrames: @hyperframes/shader-transitions](https://hyperframes.heygen.com/packages/shader-transitions)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)","useWhen":["Fashion, music, tech promos; as a lighter alternative to a full glitch."],"notFor":["Large offsets on text; keep the split brief."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/chromatic-aberration-wipe","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Chromatic Aberration Wipe · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.chromatic-aberration-wipe/","license":"Apache-2.0","note":"A fast slide wipe with RGB channel split on peak frames."},{"role":"component","label":"Chromatic Radial Split · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.chromatic-radial-split/","license":"Apache-2.0","note":"Shader transition with chromatic aberration radial split"},{"role":"component","label":"Gravitational Lens · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.gravitational-lens/","license":"Apache-2.0","note":"Shader transition with gravitational lensing distortion"},{"role":"source","label":"FFmpeg filters: rgbashift","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#rgbashift","license":"link-only"},{"role":"source","label":"HyperFrames: @hyperframes/shader-transitions","kind":"link","url":"https://hyperframes.heygen.com/packages/shader-transitions","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Chromatic Split"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.chromatic-aberration-wipe","hf.chromatic-radial-split","hf.gravitational-lens"],"aliases":["RGB split","chromatic aberration transition","colour fringe","Rainbow Warp"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/bb797e0e7e35/take-chromatic-split.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADh0lEQVR4nB1TW28bRRid+959v9tNQtKIqAU1EggU0QcQfeKfgcS/QUK8ISQQqBItTS+pSEjiRE7s9dpre+3d2bmx7jx+OnPmfOfMgT9+/4MxBkIicjGm/iya/fVikiSJK0OltNRICME2c9u2PTuAENbQptft2t992Wq1luZRMcFAAQAINxbnPItDy7JWgKYbFUBJiBHEUZwjiQHQBa64QADECNUs8fijZrC3jzDKFUAQaAO2RGvpXlzdsbt1FA3D0XvGqO9zR+k7GriMcVyBCFKELEotCDAED3ru8acPJjTI89zoFG4lwS3RVbgeTjdqOrm5uWn4M6tSpmWvXioB1JjPZyCBYIvEBKKOI6rV2uGzL/B+PzeBJhoKhRHEUhTmkDenr4rVZHhWr9huuWUIqaD8ycPB7/2nKl6sf7kUJmFg4hDjebTR8DGrxCvN6KpQgVl5tVqFL95PpxHhSVIQeWbTKZeGn+0dHX3cQSevw3BMaOVwQH/LxHKCkCbITDHFBo5fLdabuyfts929vYPe8U00uzx9nSdropVURS5I1Mu2r9tXP79s1t4e9vvX8wMsMwSXGK9sA0ou63her1ye1eqVVhso9t+tLo+eT4bDHTUFDiBYCMh5blvSc5//cXF7+ndsX+/stJELT559G5Z3ZbSgQJdcu+qX8iSto8tOt3sUitl8dp+cBZYVfGLP45hIjIxFJXcWc1XP48SGKa2cDlcW3Oz03khOXbjWmKRSj5jhfP1NZg8USmfnIMtyL2/2mwLOgzolESez2bIqqkuuj/10Z7+jjz7PsuziBryMPAQzS28/EcaoA5aDg0G5s6uDQNknl+fnTrIQHCjoRFFEGush48tlczferKJ5q8jC+/OWMTZwPB3PeZXBQqIxDsE+04e77dhppoTQeml9F7sjZyMVGEhjISLwot53BPU3WaYh+VAXx7I81PHTJIEaYoMKJwElWSoLCPWByDNeb+Rd/x35ihBiYwNcQECpIxnDAhqpc8kJY0CgslN78PhwfD+eXo+kUUtp/XsbO0JMR6HrNpXWY6byoBqm24exVgghstywbqlred0a6YDCeYwsJVLPHd8biNoqoMjVO+hXStZVFs1vZ1y+JZhw5VHOBxwURAoH29Smk+Tho74qPfUBQECAD0cbM9lWGuCusQj+2v7Jdb2GvtLayMU/xbwKDNrWuAgCZLT3bjr6H6F+5AFcO7OdAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023) + Coffee Run (2020)","rights":"cc-by","note":"rgb-split between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":256286,"addedAt":"2026-10-28"}},{"id":"heygen-com/slide-push","slug":"slide-push","name":"Slide / Push","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["slide","push","editorial","steps","ffmpeg","hyperframes","remotion","capcut"],"summary":"B pushes A out of frame (push), slides over it (cover) or A slides away to reveal B (reveal).","description":"Built on [Directional Wipe](https://github.com/heygen-com/hyperframes/tree/main/registry/components/directional-wipe) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nHard-edged panels move in one direction; reads like swiping between cards or pages.\n\n**When:** Lists, steps, app demos, editorial and corporate explainers; \"next point\".\n\n**Watch out:** Mixing directions randomly; keep one direction for \"forward\".\n\n**Timing:** 0.3–0.5 s (CapCut Slide/Left/Right 0.47 s), power3.inOut\n\n**Also called:** Slide, Left, Right, Up, Push Away 2, push transition, cover, reveal\n\n### In FFmpeg\n\nSame size/fps/pixel format on both inputs (see the Normalize card). offset = duration(A) - T = 5.0 - 0.4 = 4.6.\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n[a][b]xfade=transition=slideleft:duration=0.4:offset=4.6[v];\\\n[0:a][1:a]acrossfade=d=0.4[au]\" \\\n  -map \"[v]\" -map \"[au]\" -c:v libx264 -crf 18 -c:a aac out.mp4\n```\nPush = `slideleft|slideright|slideup|slidedown`; cover = `coverleft…coverdown`; reveal = `revealleft…revealdown`; soft-edged wipe = `smoothleft…`.\n\n### In HyperFrames\n\n```js\ntl.to(\"#s1\", { x: -1920, duration: 0.5, ease: \"power3.inOut\" }, T);\ntl.fromTo(\"#s2\", { x: 1920, opacity: 1 }, { x: 0, duration: 0.5, ease: \"power3.inOut\" }, T);\n```\nBlocks: `directional-wipe`, `transitions-push`, `transitions-cover`; elastic: `rubber-band-bumper`.\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {slide} from '@remotion/transitions/slide';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><ShotA /></TransitionSeries.Sequence>\n  <TransitionSeries.Transition presentation={slide({direction: 'from-right'})} timing={springTiming({config: {damping: 200}, durationInFrames: 15})} />\n  <TransitionSeries.Sequence durationInFrames={90}><ShotB /></TransitionSeries.Sequence>\n</TransitionSeries>\n```\nTotal = 90 + 90 - 15 frames: the transition overlaps the two shots.\n`slide()` is also the default presentation; directions: from-left, from-right, from-top, from-bottom.\n\n### In CapCut\n\nTransitions tab → Slide → Slide, Left, Right, Up, Push Away 2, Corner Slide. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Directional Wipe](https://skills.varg.ai/component/hf.directional-wipe/) (hyperframes): npx hyperframes add directional-wipe\n- [Push Transitions](https://skills.varg.ai/component/hf.transitions-push/) (hyperframes): npx hyperframes add transitions-push\n- [Cover Transitions](https://skills.varg.ai/component/hf.transitions-cover/) (hyperframes): npx hyperframes add transitions-cover\n- [Slide Swap](https://skills.varg.ai/component/remocn.slide-swap/) (remocn): npx shadcn@latest add @remocn/slide-swap\n- [Rubber Band Bumper](https://skills.varg.ai/component/hf.rubber-band-bumper/) (hyperframes): npx hyperframes add rubber-band-bumper\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [Remotion: presentations](https://www.remotion.dev/docs/transitions/presentations)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Lists, steps, app demos, editorial and corporate explainers; \"next point\"."],"notFor":["Mixing directions randomly; keep one direction for \"forward\"."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/directional-wipe","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Directional Wipe · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.directional-wipe/","license":"Apache-2.0","note":"A directional scene push that slides one panel over another."},{"role":"component","label":"Push Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-push/","license":"Apache-2.0","note":"Showcase of push and slide transitions"},{"role":"component","label":"Cover Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-cover/","license":"Apache-2.0","note":"Showcase of cover/uncover slide transitions"},{"role":"component","label":"Slide Swap · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.slide-swap/","license":"MIT","note":"A scene sequencer where the outgoing content is shoved off on an accelerating curve and the next springs in from the opposite edge, on one canvas, with no overlap."},{"role":"component","label":"Rubber Band Bumper · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.rubber-band-bumper/","license":"Apache-2.0","note":"An outgoing panel pulls against increasing resistance, holds at tension, then snaps past an edge with overshoot as the incoming panel settles behind it."},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"Remotion: presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Slide / Push"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.directional-wipe","hf.transitions-push","hf.transitions-cover","remocn.slide-swap","hf.rubber-band-bumper"],"aliases":["Slide","Left","Right","Up","Push Away 2","push transition","cover","reveal"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e1d627a4ff17/take-slide-push.mp4","w":640,"h":400,"duration":4.4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADWElEQVR4nEVTTW/bRhCd/SJFiqIlWR+2LNt1EqPtwUCRFmiCXnLon+uhPbU/oPfe2h/gW4EChZsciiRW4xq2Yym2REmUSC65u9OxjaADYjngzA7fzLzHdva/tsbCgzEmlarKkt07lgLGSiU5l4Lz4V4zCEKlAB1y4XzfbwR+t9uNozBNU2ktGocPdQRnzjkGjFKttc7SGxDB2spaKMtCSlFT3A98KZTnec1ARh48+7T39nQu2+1hPawjGkKhNeZ5DsCDIPA88VB8nWW6qCjq89RjoDhSrTgMwiCIA9aKa5fj2Xff/ygPDntRFHG86y7X3mq1diipBS4Yp9uwkWV5pTPrnMK/lLSCSY4OoBTCjzzWaah3Vx+SZSWjqF2WZVjfnCfzCkV9o6cLWOWFUjLPCN2UhrXZCaip2Xll0GpEjlo6rqDyQq8h29utKPZBPv/qxeXl5fDR05OTE+3C/f1PJuMP0+n02dO94+PjLDRxe2N/F2io54Vy1sU1rjzWrNtmE/b67GAg/rmaaw1S64zGkRUrzxfOCmDUIxdCSWU63WixrR4dHqr5BSjvxed9rbVShsa8s+X1+73uYdB4vP/L7xcLB3JvO75yq2SdTpOpJISSMKPPWdjEL59/dtqooMZgFlZanc1sVbpK+fSTq0LWxjm8SheL09H5Kq6BBMyikE0m1+8vXrXau1UecnPT8E2E0aATDzKLKfa9htPu1+maEFUM5vNkmRvyL6bVYrHY7bV6g8fyh59/Q0Qfsm6vvUqvR28L1K7ZakbLvOXV9WTR6XTaTw7O/j374814NBohrU1K51AIjox5Hk+T8dHRkVzcpLTaRsDCGpiST29SNJDn+Cf/ezgc+mBmN0uW1W5vb5fLhOiFDInlhvhqSm0dMURweD16J9fJe2JQseCTq2tiDt6znJyXLw2dnPuCC7inK+jsjlmMiG4fcnwUVLFAyJJUAiydtQwto6AFOh1wRg+/0xRajylFOyG58Zpf5jkpxxijaHkOtDWEjiZDCpJz7ba2BlYN7gXhPoqXO1IconTLwfb2k43ZZDLu84S+FIW7TyDdEsMrmleJ9fF4Kddl2D/4Iom/ubsGFXw0B3daU2bubW5+2/1ptaO3yiW1RujgfzOklcrrvH5j/wPdK86g0rwjhAAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Coffee Run (2020) + Cosmos Laundromat (2015)","rights":"cc-by","note":"slideleft between two shots, with the timeline strip of the edit. Footage: Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0; Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0.","bytes":227392,"addedAt":"2026-10-28"}},{"id":"heygen-com/wipe","slug":"wipe","name":"Wipe","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["wipe","classic","comparison","ffmpeg","hyperframes","remotion","capcut"],"summary":"A moving edge replaces A with B across the frame while both images stay still.","description":"Built on [Directional Wipe](https://github.com/heygen-com/hyperframes/tree/main/registry/components/directional-wipe) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA straight (or soft) line travels across; on one side A, on the other B.\n\n**When:** Classic \"meanwhile\", retro TV, comparisons and before/after.\n\n**Watch out:** Diagonal and corner wipes in serious content can look dated.\n\n**Timing:** 0.4–0.8 s (CapCut Wipe Left/Right 0.47 s), linear or ease-in-out\n\n**Also called:** Wipe Left, Wipe Right, Wipe Up, linear wipe, edge wipe\n\n### In FFmpeg\n\nSame size/fps/pixel format on both inputs (see the Normalize card). offset = duration(A) - T = 5.0 - 0.5 = 4.5.\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n[a][b]xfade=transition=wipeleft:duration=0.5:offset=4.5[v];\\\n[0:a][1:a]acrossfade=d=0.5[au]\" \\\n  -map \"[v]\" -map \"[au]\" -c:v libx264 -crf 18 -c:a aac out.mp4\n```\nOthers: wiperight, wipeup, wipedown, wipetl/wipetr/wipebl/wipebr, diagtl…diagbr, smoothleft… (soft edge).\n\n### In HyperFrames\n\nClip-path wipe on the incoming wrapper:\n```js\ntl.fromTo(\"#s2\", { clipPath: \"polygon(0 0,0 0,0 100%,0 100%)\", opacity: 1 },\n  { clipPath: \"polygon(0 0,100% 0,100% 100%,0 100%)\", duration: 0.5, ease: \"power2.inOut\" }, T);\n```\nComparison divider: `before-after-wipe`.\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {wipe} from '@remotion/transitions/wipe';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><ShotA /></TransitionSeries.Sequence>\n  <TransitionSeries.Transition presentation={wipe({direction: 'from-left'})} timing={linearTiming({durationInFrames: 20})} />\n  <TransitionSeries.Sequence durationInFrames={90}><ShotB /></TransitionSeries.Sequence>\n</TransitionSeries>\n```\nTotal = 90 + 90 - 20 frames: the transition overlaps the two shots.\nwipe() directions include diagonals: from-top-left, from-top-right, from-bottom-left, from-bottom-right.\n\n### In CapCut\n\nTransitions tab → Slide / Basic → Wipe Left, Wipe Right, Wipe Up. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Directional Wipe](https://skills.varg.ai/component/hf.directional-wipe/) (hyperframes): npx hyperframes add directional-wipe\n- [Before After Wipe](https://skills.varg.ai/component/hf.before-after-wipe/) (hyperframes): npx hyperframes add before-after-wipe\n- [DirectionalWarp](https://skills.varg.ai/component/glt.directional-warp/) (gl-transitions): npm install gl-transitions\n- [Wind](https://skills.varg.ai/component/glt.wind/) (gl-transitions): npm install gl-transitions\n- [Caret Wipe](https://skills.varg.ai/component/remocn.caret-wipe/) (remocn): npx shadcn@latest add @remocn/caret-wipe\n- [Wave Wipe](https://skills.varg.ai/component/remocn.wave-wipe/) (remocn): npx shadcn@latest add @remocn/wave-wipe\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [Remotion: presentations](https://www.remotion.dev/docs/transitions/presentations)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)","useWhen":["Classic \"meanwhile\", retro TV, comparisons and before/after."],"notFor":["Diagonal and corner wipes in serious content can look dated."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/directional-wipe","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Directional Wipe · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.directional-wipe/","license":"Apache-2.0","note":"A directional scene push that slides one panel over another."},{"role":"component","label":"Before After Wipe · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.before-after-wipe/","license":"Apache-2.0","note":"Two full-bleed content slots compare before and after states as a persistent divider wipes the after layer over the before layer and rests at a configurable split…"},{"role":"component","label":"DirectionalWarp · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.directional-warp/","license":"MIT","note":"A diagonal wipe whose leading edge smears and stretches the pixels it passes over"},{"role":"component","label":"Wind · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.wind/","license":"MIT","note":"A ragged left-to-right wipe that blows the first shot away in horizontal streaks"},{"role":"component","label":"Caret Wipe · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.caret-wipe/","license":"MIT","note":"Sweep a typing caret across the frame, wiping the outgoing scene into the next."},{"role":"component","label":"Wave Wipe · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.wave-wipe/","license":"MIT","note":"A grain-gradient wave that sweeps up across the frame, covering the outgoing scene and revealing the next one from below."},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"Remotion: presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Wipe"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.directional-wipe","hf.before-after-wipe","glt.directional-warp","glt.wind","remocn.caret-wipe","remocn.wave-wipe"],"aliases":["Wipe Left","Wipe Right","Wipe Up","linear wipe","edge wipe"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b4ef8eee849e/take-wipe.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADsElEQVR4nG1TS28bVRi9r3nYHntsZ/yI43GebtO8UNogIaBKEAu66A5WsIzULio2/AH+BSpdsEDAAhYICQmkpqSREGqTNhYE1CgPhSR2Gj8y9ow9Hs+dx+VmgSohzuIsrj6d+53v+w68/9WnDx+uMZm1Wi0atkq6nkgNAAA7zxzO41qhXq+fGPG7d+/MvfOh67oAhPydQsjZCy85QIgxRjDBrYvmzORSPJ395N7HlUrlh7UvhoaGbhaTg8Hg7aUb6+vrnbYQB3ECmM8uVTgYMmu1Wt+rZrNZJbLIACP73R/f/ag4r05nMpnx1Fj5vSnFg083N0v51MHBQRQLo8Mjez1HlkXIAHVcSZIQRl3aemkcIblDW9bVfFkQRZJOJQ2j/fj40dzc/Ez6DQjIzdfLY3np7OTUMZXjvcPRXGEqOPdptdo7bbab07lr3AgCAnVDUebuQjroRCSVuG4YBLBvDFzLk7GLoUehk9eUkA6dnckAqkhWUkPRau0A6EVBEPzAF7EYIYme4Xp2V8tkjsPfcihL7B6lLuuzmAuVF1YqDMMsEGFM0gvUNLJ//GnOXJ157jl12+7X+uVyWSYIhL4kKFfGZ7c3nzQaA/+aB7oWsS2/73i+OHl6Ef1yi0GIVlKdhYX5GH2pFzW3L5UKiRsLyxsbG0/Izp55plCWz+djIJNUcq8Vr/OFBMzJiCPEMkMIo5GoJkrpAJ4HQcC6La9d399vVKvVLlUtT7SMrj8I+oTapv1Z81vVUpejy0QgwySiZdKx8fyFYRAMk6IoRBVXABci+wUR7Pet6hG1O/654d3+4JYsy2fbjyEL/F4XQmgHll1vfQ2O5UhktTGd1HX6O4I9m7w16zFGBfEZL4KAEo7zuZOjWklfWZm+ruU13peWTIoITcQKXDQBEpgQAUq8vJYGDQFMuTDUomR35xTx0wwRpR7fJQvZRKxUKBQjSrTDbXu2T3vN44FpOk6geRjb7PJjGNj8CDzIiW2wE74igiRRICRkgZwQGQx5CEb0Sc6m2VZVtfJ8u9FouG58a6tScVSAMY8E+D+QqbLKJ48A4DfiUaxppdHE7IPPH+jqwerqqufIh7u7TctLqhqgwqXQvyl5BRgCjMh337vZbI5F8whh4iu6Xvr5sPZXY+zQROGjVho2sTR1ZdgT3e5y96nIoxB4/9HxcaTT7pC1n+Sl5UUz8WbAfQL/15MQ45CMTHQD8s02jQE3l8u/H7+/mMC39ApGCDD4qhV4aXMg6i/6f/8DobLn5alk51kAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Big Buck Bunny (2008) + Coffee Run (2020)","rights":"cc-by","note":"wipeleft between two shots, with the timeline strip of the edit. Footage: Big Buck Bunny (2008), (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":241368,"addedAt":"2026-10-28"}},{"id":"heygen-com/circle-iris","slug":"circle-iris","name":"Circle Iris","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["mask","iris","circle","retro","playful","ffmpeg","hyperframes","remotion","capcut"],"summary":"B opens from (or A closes into) a growing circle, like an old-cartoon iris or a lens opening.","description":"Built on [SDF Iris](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/sdf-iris) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA circular window expands from the subject or the centre until B fills the frame.\n\n**When:** Spotlighting a subject, playful and retro edits, focus on a product.\n\n**Watch out:** Off-centre irises that cut through faces; centre the circle on the subject.\n\n**Timing:** 0.5–0.8 s, ease-in-out (hold 2–6 frames as a dot for the cartoon iris)\n\n**Also called:** circle mask, iris wipe, iris in, iris out, circle open, Circular Slices II\n\n### In FFmpeg\n\nSame size/fps/pixel format on both inputs (see the Normalize card). offset = duration(A) - T = 5.0 - 0.6 = 4.4.\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n[a][b]xfade=transition=circleopen:duration=0.6:offset=4.4[v];\\\n[0:a][1:a]acrossfade=d=0.6[au]\" \\\n  -map \"[v]\" -map \"[au]\" -c:v libx264 -crf 18 -c:a aac out.mp4\n```\n`circleclose` shrinks a circle; `circlecrop` irises out to black and back in. Off-centre: `transition=custom:expr='if(lt(hypot(X-800,Y-400),(1-P)*1600),B,A)'` (P runs 1→0 during xfade).\n\n### In HyperFrames\n\nShader `sdf-iris` from `@hyperframes/shader-transitions` placed at the cut (t = 4 s):\n```html\n<div id=\"s1\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"a.mp4\" muted playsinline></video></div>\n<div id=\"s2\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"b.mp4\" muted playsinline></video></div>\n<script src=\"https://cdn.jsdelivr.net/npm/@hyperframes/shader-transitions/dist/index.global.js\"></script>\n<script>\n  const tl = HyperShader.init({ bgColor: \"#0a0a0a\", scenes: [\"s1\", \"s2\"],\n    transitions: [{ time: 4, shader: \"sdf-iris\", duration: 0.7 }] });\n  window.__timelines = window.__timelines || {}; window.__timelines[\"main\"] = tl;\n</script>\n```\nEach `.scene` needs an explicit background-color equal to `bgColor`. Or install the ready block: `npx hyperframes add sdf-iris`. CSS: `npx hyperframes add iris-reveal` (clip-path circle from an authored origin).\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {iris} from '@remotion/transitions/iris';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><ShotA /></TransitionSeries.Sequence>\n  <TransitionSeries.Transition presentation={iris({width: 1920, height: 1080})} timing={linearTiming({durationInFrames: 20})} />\n  <TransitionSeries.Sequence durationInFrames={90}><ShotB /></TransitionSeries.Sequence>\n</TransitionSeries>\n```\nTotal = 90 + 90 - 20 frames: the transition overlaps the two shots.\n`iris()` requires `width` and `height` (the composition size).\n\n### In CapCut\n\nTransitions tab → Mask → circle-shaped mask transitions (e.g. Circular Slices II). Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions. Hand-made: add a Mask → Circle on B and keyframe its size from 0 to full.\n\n### Ready-made components\n\n- [SDF Iris](https://skills.varg.ai/component/hf.sdf-iris/) (hyperframes): npx hyperframes add sdf-iris\n- [Iris Reveal](https://skills.varg.ai/component/hf.iris-reveal/) (hyperframes): npx hyperframes add iris-reveal\n- [Iris Wipe](https://skills.varg.ai/component/remocn.iris-wipe/) (remocn): npx shadcn@latest add @remocn/iris-wipe\n- [Radial Transitions](https://skills.varg.ai/component/hf.transitions-radial/) (hyperframes): npx hyperframes add transitions-radial\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [Remotion: presentations](https://www.remotion.dev/docs/transitions/presentations)\n- [HyperFrames: @hyperframes/shader-transitions](https://hyperframes.heygen.com/packages/shader-transitions)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)","useWhen":["Spotlighting a subject, playful and retro edits, focus on a product."],"notFor":["Off-centre irises that cut through faces; centre the circle on the subject."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/sdf-iris","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"SDF Iris · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.sdf-iris/","license":"Apache-2.0","note":"Shader transition with signed distance field iris reveal"},{"role":"component","label":"Iris Reveal · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.iris-reveal/","license":"Apache-2.0","note":"A circle clip-path opens from an authored origin revealing state B over state A in one confident pass, then holds on B. Classic register dims and desaturates the before state so the after state lands in full color; a…"},{"role":"component","label":"Iris Wipe · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.iris-wipe/","license":"MIT","note":"An old-cartoon iris closes on the subject, holds a beat as a dot, then opens on the next scene."},{"role":"component","label":"Radial Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-radial/","license":"Apache-2.0","note":"Showcase of radial wipe and reveal transitions"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"Remotion: presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"},{"role":"source","label":"HyperFrames: @hyperframes/shader-transitions","kind":"link","url":"https://hyperframes.heygen.com/packages/shader-transitions","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Circle Iris"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.sdf-iris","hf.iris-reveal","remocn.iris-wipe","hf.transitions-radial"],"aliases":["circle mask","iris wipe","iris in","iris out","circle open","Circular Slices II"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/07c5ad2e6741/take-circle-iris.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADRUlEQVR4nBVUSW8bNxjl8pEccoYjjRZLjuu0LoqgvSW9FQX6M/uzcikKH5IUdZ1KtS1pNKPZuZUGiA8k+A5vIzEhgDEmSRonAq6z7G691FofrA4+7AcX90FoQoiQHCg16TrCz4Np29a7QAhlKnXOARbSO4/NBIxdKbjeLr652TSXhvYtJXTNPHN18MCASUwpRghQkogMSINN13bGDv54HJsGqMix89x0WZK+//7u/YcP948758ibOTPWzIhGCDW2RT1i4DnhYNsZBQQWhyHYhlnXT2OKPZCoiJKMssVMb9fLVACyY6FlJJzn+cPBCCFoeez7nocRTxPhCXPATZjKA8MsqiWCG4LBG8MYbBVczQSXKeFyef1dVVXgLXhSlxeV+vV6/fDwAG6ITuGpKZ+af0vjjMFSI4eQsyiC89Bsi81PK5bnop8sorDIFLETRma9nuencRgGh4rbu3fnw94jDM545zgJiaRIib7rzDhYZyGDaZFiwklcF+cu40TTNAlhtzt++fhJFKsobbCTlMoQHaLtyGJMkW3zYt7GszWEksgLVlolxHuPCGGz2eJ0OvMsRCim7HiuSO+VlDrP2/oiOQ6B9JZGdDpfcZWe6wERGrUBBRAUSyAJRSknj1VZFIu+fOn6vhshy7IJydO5GUYjldoUoKT6Wg6HQ+mSVdlW7Wh88GPXxmRhf2yuv32nZmx/LL+0wy0KVdUOQ49JGq0lDAkRO8TqurZj2G5iJaON6HR+ctZNHk3TxLGL8qERy386HHTyWL60Hu+fn51h0+SQP3MexSKlYLKlBFuoFE1nDXjEl2zOvXfjOL5ywb1zNWR6Xp5qTqyerTQkMZFsc/P09J/rOkqJmYYAr10LztfHp2jFcqkE6sNQRxZ/7T5nWZpt37zWZevRTOuyeV7r7VybGHY/Hq80vgTEGXLe9U0jZMo55Z6lWXb/x59Syc6S3f6TSFR+df38UsXg4O8O3W0W2c0vX6uqRgJLTCi31lAlMGNi2G2LRcGaqGI+fCTkuPqhA5gOjf9xRRPFCd155OIDhl1Yvb39+TH9FWl08VMIIcrGIiYdHyjS2QkXV7/J3+PfML98prHZ1+QVQF5vsaviHPjb+/vD/3ivxRNjsME5AAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Spring (2019) + Big Buck Bunny (2008)","rights":"cc-by","note":"circleopen between two shots, with the timeline strip of the edit. Footage: Spring (2019), Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0; Big Buck Bunny (2008), (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0.","bytes":184507,"addedAt":"2026-10-28"}},{"id":"vargHQ/heart-mask","slug":"heart-mask","name":"Heart Mask","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["mask","heart","social","romantic","ffmpeg","hyperframes","remotion","capcut"],"summary":"B appears through a heart shape that grows to fill the frame. Social, playful and romantic.","description":"A heart-shaped window opens from the centre and expands until B covers everything.\n\n**When:** Couples, weddings, Valentine's, \"favourite\" moments, social posts.\n\n**Watch out:** Anything serious or corporate.\n\n**Timing:** 0.5–0.8 s, ease-out\n\n**Also called:** heart wipe, heart transition, love transition\n\n### In FFmpeg\n\nxfade custom expression with an implicit heart curve (P runs 1→0, so the heart grows as P falls):\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n [a][b]xfade=transition=custom:duration=0.7:offset=4.3:\\\nexpr='if(lte(pow(pow((X-W/2)/(W*(1-P)+1),2)+pow((H/2-Y)/(W*(1-P)+1),2)-0.09,3)-pow((X-W/2)/(W*(1-P)+1),2)*pow((H/2-Y)/(W*(1-P)+1),3),0),B,A)'[v]\" -map \"[v]\" out.mp4\n```\n\n### In HyperFrames\n\nTween an SVG heart `clipPath` (or a CSS `mask-image` of a heart) on the incoming scene from scale 0 to 4, transform-origin centre.\n\n### In Remotion\n\n`glTransition({name: 'heart'})` with @gl-transitions/remotion 0.1.0 (1.x name; `HeartWipe` in gl-transitions 2.0).\n\n### In CapCut\n\nTransitions tab → Mask / Social media → heart-shaped transitions (names vary by version). Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions. Hand-made: Mask → Heart on B, keyframe its size.\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [@gl-transitions/remotion (README)](https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion)\n- [gl-transitions 2.0 changelog (renames)](https://github.com/gl-transitions/gl-transitions/blob/master/packages/gl-transitions/CHANGELOG.md)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)","useWhen":["Couples, weddings, Valentine's, \"favourite\" moments, social posts."],"notFor":["Anything serious or corporate."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/transitions.md#heart-mask","repo":"vargHQ/skills","path":"varg-video-edit-library/references/transitions.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"@gl-transitions/remotion (README)","kind":"link","url":"https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion","license":"link-only"},{"role":"source","label":"gl-transitions 2.0 changelog (renames)","kind":"link","url":"https://github.com/gl-transitions/gl-transitions/blob/master/packages/gl-transitions/CHANGELOG.md","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Heart Mask"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":[],"aliases":["heart wipe","heart transition","love transition"]}},{"id":"heygen-com/ink-brush","slug":"ink-brush","name":"Ink and Brush Reveal","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["mask","ink","brush","organic","art","ffmpeg","hyperframes","remotion","capcut"],"summary":"An organic ink blot, brush stroke or smoke plume spreads over A and B shows through the painted area.","description":"Built on [Scribble Transition](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/hw-scribble-transition) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nIrregular, hand-made edges bloom across the frame, unlike geometric wipes.\n\n**When:** Art, travel, food, Asian-inspired themes, creative portfolios.\n\n**Watch out:** Tech and data content; low-resolution matte assets with visible pixel edges.\n\n**Timing:** 0.5–2.0 s (CapCut White Ink 0.47 s, Reveal Brush 2.0 s)\n\n**Also called:** White Ink, Reveal Brush, ink transition, brush stroke transition, paint reveal, Black smoke, White smoke\n\n### In FFmpeg\n\nUse an ink/brush matte video (white paint on black) as the mask:\n```bash\nffmpeg -i a.mp4 -i b.mp4 -i ink_matte.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p,scale=1280:720[a];[1:v]fps=30,settb=AVTB,format=yuv420p,scale=1280:720[b];\\\n [2:v]fps=30,settb=AVTB,format=yuv420p,scale=1280:720,format=gray,format=yuv420p[m];\\\n [a][b][m]maskedmerge[v]\" -map \"[v]\" out.mp4\n```\n(maskedmerge shows B where the matte is white; align the matte's start with `setpts=PTS-STARTPTS+<cut>/TB` and pad with black.)\n\n### In HyperFrames\n\n`npx hyperframes add hw-scribble-transition` (scribble bands cover the frame, the host cuts beneath, then clear); smoke-like organic: `domain-warp-dissolve`.\n\n### In Remotion\n\n`glTransition({name: 'luma', textures: {luma: staticFile('brush.png')}})` animates a luma matte image (1.x name `luma`, 2.0 `LumaWipe`); or a custom presentation using a matte `<Video>` as CSS `mask-image`.\n\n### In CapCut\n\nTransitions tab → Mask / Overlay → White Ink, Reveal Brush, Black smoke, White smoke. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Scribble Transition](https://skills.varg.ai/component/hf.hw-scribble-transition/) (hyperframes): npx hyperframes add hw-scribble-transition\n- [Domain Warp Dissolve](https://skills.varg.ai/component/hf.domain-warp-dissolve/) (hyperframes): npx hyperframes add domain-warp-dissolve\n- [Smoke Dissolve](https://skills.varg.ai/component/remocn.smoke-dissolve/) (remocn): npx shadcn@latest add @remocn/smoke-dissolve\n- [Paper Tear](https://skills.varg.ai/component/remocn.paper-tear/) (remocn): npx shadcn@latest add @remocn/paper-tear\n\n### Where this comes from\n\n- [@gl-transitions/remotion (README)](https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Art, travel, food, Asian-inspired themes, creative portfolios."],"notFor":["Tech and data content; low-resolution matte assets with visible pixel edges."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/hw-scribble-transition","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Scribble Transition · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.hw-scribble-transition/","license":"Apache-2.0","note":"Overlay transition: scribble bands accumulate to cover the frame with a solid backstop, the host cuts beneath, and the scribble clears"},{"role":"component","label":"Domain Warp Dissolve · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.domain-warp-dissolve/","license":"Apache-2.0","note":"Shader transition with fractal noise domain warping"},{"role":"component","label":"Smoke Dissolve · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.smoke-dissolve/","license":"MIT","note":"A smoke-ring shader transition that expands the ring outward to reveal the next scene."},{"role":"component","label":"Paper Tear · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.paper-tear/","license":"MIT","note":"A jagged rip runs down the frame, then both halves peel apart on a spring with white fibrous torn edges, revealing the scene underneath."},{"role":"source","label":"@gl-transitions/remotion (README)","kind":"link","url":"https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Ink and Brush Reveal"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.hw-scribble-transition","hf.domain-warp-dissolve","remocn.smoke-dissolve","remocn.paper-tear"],"aliases":["White Ink","Reveal Brush","ink transition","brush stroke transition","paint reveal","Black smoke","White smoke"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/domain-warp-dissolve.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/domain-warp-dissolve.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/domain-warp-dissolve.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/domain-warp-dissolve","credit":"Domain Warp Dissolve · hyperframes","rights":"publisher-site","note":"Preview of the Domain Warp Dissolve component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/luma-gradient-wipe","slug":"luma-gradient-wipe","name":"Gradient (Luma) Wipe","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["luma","gradient","dissolve","organic","ffmpeg","hyperframes","remotion","capcut"],"summary":"B appears in the order of a grayscale map (gradient, noise or the image's own brightness).","description":"Built on [Domain Warp Dissolve](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/domain-warp-dissolve) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nDark-to-light areas switch first, giving soft, organic or shaped reveals instead of one straight edge.\n\n**When:** Elegant scene changes, nature, dreamy edits; custom shapes from any grayscale matte.\n\n**Watch out:** Noisy mattes on noisy footage look like compression artefacts.\n\n**Timing:** 0.6–1.2 s (CapCut Gradient Wipe 0.47 s)\n\n**Also called:** Gradient Wipe, luma wipe, luma fade, noise dissolve, Dissolve II\n\n### In FFmpeg\n\nSoft diagonal luma wipe with an xfade custom expression (0.15 softness band):\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n [a][b]xfade=transition=custom:duration=0.8:offset=4.2:\\\nexpr='A*clip(((X/W+Y/H)/2-(1-P)*1.15+0.15)/0.15,0,1)+B*(1-clip(((X/W+Y/H)/2-(1-P)*1.15+0.15)/0.15,0,1))'[v]\" -map \"[v]\" out.mp4\n```\nFor an arbitrary matte use `maskedmerge` with a thresholded matte video, or GL `LumaWipe` via editly (1.x `luma`).\n\n### In HyperFrames\n\nShader `domain-warp` from `@hyperframes/shader-transitions` placed at the cut (t = 4 s):\n```html\n<div id=\"s1\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"a.mp4\" muted playsinline></video></div>\n<div id=\"s2\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"b.mp4\" muted playsinline></video></div>\n<script src=\"https://cdn.jsdelivr.net/npm/@hyperframes/shader-transitions/dist/index.global.js\"></script>\n<script>\n  const tl = HyperShader.init({ bgColor: \"#0a0a0a\", scenes: [\"s1\", \"s2\"],\n    transitions: [{ time: 4, shader: \"domain-warp\", duration: 0.8 }] });\n  window.__timelines = window.__timelines || {}; window.__timelines[\"main\"] = tl;\n</script>\n```\nEach `.scene` needs an explicit background-color equal to `bgColor`. Or install the ready block: `npx hyperframes add domain-warp-dissolve`.\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {dissolve} from '@remotion/transitions/dissolve';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><ShotA /></TransitionSeries.Sequence>\n  <TransitionSeries.Transition presentation={dissolve({})} timing={linearTiming({durationInFrames: 24})} />\n  <TransitionSeries.Sequence durationInFrames={90}><ShotB /></TransitionSeries.Sequence>\n</TransitionSeries>\n```\nTotal = 90 + 90 - 24 frames: the transition overlaps the two shots.\nShader presentations are built on Remotion's HTML-in-canvas: renders work out of the box (`--gl=angle`, or `--gl=swangle` without a GPU); the Studio preview needs Chrome with `chrome://flags/#canvas-draw-element` enabled. Remotion's `dissolve` is a shader dissolve with a glowing edge (lineWidth, spreadColor, hotColor), not a plain crossfade.\n\n### In CapCut\n\nTransitions tab → Basic / Mask → Gradient Wipe, Dissolve II, Dissolve III. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Domain Warp Dissolve](https://skills.varg.ai/component/hf.domain-warp-dissolve/) (hyperframes): npx hyperframes add domain-warp-dissolve\n- [Perlin Dissolve](https://skills.varg.ai/component/remocn.perlin-dissolve/) (remocn): npx shadcn@latest add @remocn/perlin-dissolve\n- [Warp Dissolve](https://skills.varg.ai/component/remocn.warp-dissolve/) (remocn): npx shadcn@latest add @remocn/warp-dissolve\n- [Grain Dissolve](https://skills.varg.ai/component/remocn.grain-dissolve/) (remocn): npx shadcn@latest add @remocn/grain-dissolve\n- [LuminanceMelt](https://skills.varg.ai/component/glt.luminance-melt/) (gl-transitions): npm install gl-transitions\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [Remotion: presentations](https://www.remotion.dev/docs/transitions/presentations)\n- [HyperFrames: @hyperframes/shader-transitions](https://hyperframes.heygen.com/packages/shader-transitions)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)","useWhen":["Elegant scene changes, nature, dreamy edits; custom shapes from any grayscale matte."],"notFor":["Noisy mattes on noisy footage look like compression artefacts."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/domain-warp-dissolve","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Domain Warp Dissolve · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.domain-warp-dissolve/","license":"Apache-2.0","note":"Shader transition with fractal noise domain warping"},{"role":"component","label":"Perlin Dissolve · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.perlin-dissolve/","license":"MIT","note":"A perlin-noise shader transition that sweeps its noise threshold to dissolve one scene into the next."},{"role":"component","label":"Warp Dissolve · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.warp-dissolve/","license":"MIT","note":"A domain-warp shader transition that melts the outgoing scene into a folding color field and straightens back out into the next."},{"role":"component","label":"Grain Dissolve · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.grain-dissolve/","license":"MIT","note":"A grain-gradient shader transition that disintegrates the outgoing scene into soft grainy shapes and condenses the next scene out of the noise."},{"role":"component","label":"LuminanceMelt · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.luminance-melt/","license":"MIT","note":"The first shot drips away in noisy vertical streaks, tone by tone, revealing the next"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"Remotion: presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"},{"role":"source","label":"HyperFrames: @hyperframes/shader-transitions","kind":"link","url":"https://hyperframes.heygen.com/packages/shader-transitions","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Gradient (Luma) Wipe"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.domain-warp-dissolve","remocn.perlin-dissolve","remocn.warp-dissolve","remocn.grain-dissolve","glt.luminance-melt"],"aliases":["Gradient Wipe","luma wipe","luma fade","noise dissolve","Dissolve II"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f64f6fef6608/take-luma-gradient-wipe.mp4","w":640,"h":400,"duration":4.9,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADYElEQVR4nDWTu3PkRBDG5ynNSCvtand9dWv7sIG6vau6gIKQhIzCERl/FwRk5BQJARdAwiMhw3C4OK6Oonw2tcjel/eh54xmRrSuCpU0wainp/v7fo3PPv4EIdSihjEeCD5IksEgrqoyy3JrjLPKOVdXNcSky3ld18L3i6IoGwP7xnRr27bOWoatloFklDDOQ9+XBB9FdnRyeHk9E0Jc/zNL00VDKaTv5SyJkuOT06ur68VmY4yta22aBu6Aj3GKOcE9KWQQSO44x7GPhj2eovb5+S/fnb+AOCElJH1jMnz08GFdq+1yoZWWUhLJK2wdwqY1UEqLkUVOIUuFQEkcpjf7Tz/7Yl22wySBOxhlmFCtm8V82e+ngfR8n66zshdJYzBj1DgEK1NV3hqNmxY7RTlL5PDrb36eLXdhPKAed1nuCxn1Qq112TQ3y827T04mkzHymHXWYEShDEctaPTkPvM8OpYo7HmjMT6cuPfemf7x7CJXVigbhoJz2ugStW1V6cvLq9vi9uyjs83Fr6vVipGQMeY6lRB7fNyjlE3GFPyKJvzgYLh5+rumaCBlp2Jjs+wOHOz3+9j3rbHpvkhOTkebxc1+67WUdK5ZjDH7e8sh0W3D5LYdz8HOf3/68Tf4tS+ybbaTsjvcOLfLc9nl1VXhyqzkXDDiIWXbxjpngQCWBD50qLJsv1qd79HLl38td6WlvlNAieGMQBAlyPe5j1vf44ai3Xy1Xux2m9K3FKoG2CCSff7VD4BZ0zpKKCEMigxlkCTJ+m6VZRmYBU299fabN2maawWWJ774/um3SimINKRzzdqOSVYrQ5nArxUjGGF4OTCBjw/vvXpVGIoRI8n4AIpwqg3DQTwQcCUm0LHNCwVugg5K6Y4jRl3T9elqBaxbgKpqVCS8OI5LbXWlnz3/k1E6HA08n4dBBIe1w4dHD9bbOxAorw1sMI9BvsraGhOMLfYwzErXYDwIYQhM1XSjRDABJqFkZ4vGFWVdlPnybiOiaDqd3udiNpuxnemP7o2MOOpgwC0szjqMSQFTaM2jBwVMDmMEeGHZBeQM8FWBSiRcB0c7H203o6PTYbxmd3r8ePrBJnq/Ewy9Zuv/BzQMwjIIgw/DL4X0++s5jChHCupzhHSagmMurRl6Mbv+D/vaBqrKxAmGAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Cosmos Laundromat (2015) + Charge (2022)","rights":"cc-by","note":"smoothleft between two shots, with the timeline strip of the edit. Footage: Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0; Charge (2022), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":278458,"addedAt":"2026-10-28"}},{"id":"gl-transitions/cube-3d","slug":"cube-3d","name":"3D Cube","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["3d","cube","slideshow","playful","ffmpeg","hyperframes","remotion","capcut"],"summary":"Both shots sit on faces of a cube that turns, carrying A away and B into view.","description":"Built on [Cube](https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Cube.glsl) by gre (gl-transitions), MIT. The write-up and recipes below are varg's.\n\nPerspective rotation around a vertical (or horizontal) edge with the two shots as adjacent faces.\n\n**When:** Slideshows, social carousels, playful product feature runs.\n\n**Watch out:** Cinematic or emotional content; it reads as a template effect.\n\n**Timing:** 0.5–1.0 s (CapCut Cube 0.47 s, Cube Rotate 1.0 s), ease-in-out\n\n**Also called:** Cube, Cube Rotate, Cubic Flip, cube spin, box rotate\n\n### In FFmpeg\n\nNo cube in xfade. Use editly with gl-transitions (1.x name `cube`):\n```js\nimport editly from 'editly';\nawait editly({ outPath: 'out.mp4', clips: [\n  { layers: [{ type: 'video', path: 'a.mp4' }], transition: { name: 'cube', duration: 0.8 } },\n  { layers: [{ type: 'video', path: 'b.mp4' }] },\n]});\n```\n\n### In HyperFrames\n\nBlock `transitions-3d` (perspective flip/rotate); or a parent with `perspective: 1200px` and tween `rotationY` -90 → 0 on B while A goes 0 → 90 around a shared edge (`transformOrigin`).\n\n### In Remotion\n\n```tsx\nimport {glTransition} from '@gl-transitions/remotion';\n<TransitionSeries.Transition presentation={glTransition({name: 'cube', params: {persp: 0.7, unzoom: 0.3}})} timing={linearTiming({durationInFrames: 24})} />\n```\n@remotion/transitions has no cube presentation; `swap({})` is a related 3D swap (HTML-in-canvas).\n\n### In CapCut\n\nTransitions tab → 3D → Cube, Cube Rotate, Cubic Flip. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Cube](https://skills.varg.ai/component/glt.cube/) (gl-transitions): npm install gl-transitions\n- [3D Transitions](https://skills.varg.ai/component/hf.transitions-3d/) (hyperframes): npx hyperframes add transitions-3d\n- [Swap](https://skills.varg.ai/component/glt.swap/) (gl-transitions): npm install gl-transitions\n\n### Where this comes from\n\n- [@gl-transitions/remotion (README)](https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion)\n- [editly](https://github.com/mifi/editly)\n- [GL Transitions gallery](https://gl-transitions.com)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Slideshows, social carousels, playful product feature runs."],"notFor":["Cinematic or emotional content; it reads as a template effect."],"publisher":{"name":"gre · GL Transitions","handle":"gl-transitions","kind":"community","verified":false,"url":"https://github.com/gl-transitions","avatar":"https://github.com/gl-transitions.png"},"source":{"url":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Cube.glsl","repo":"gl-transitions/gl-transitions","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Cube · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.cube/","license":"MIT","note":"Both shots sit on the faces of a 3D cube that turns over a glossy floor reflection"},{"role":"component","label":"3D Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-3d/","license":"Apache-2.0","note":"Showcase of 3D perspective flip and rotate transitions"},{"role":"component","label":"Swap · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.swap/","license":"MIT","note":"The two shots slide past each other in 3D, trading places over a reflective floor"},{"role":"source","label":"@gl-transitions/remotion (README)","kind":"link","url":"https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion","license":"link-only"},{"role":"source","label":"editly","kind":"link","url":"https://github.com/mifi/editly","license":"link-only"},{"role":"source","label":"GL Transitions gallery","kind":"link","url":"https://gl-transitions.com","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"3D Cube"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["glt.cube","hf.transitions-3d","glt.swap"],"aliases":["Cube","Cube Rotate","Cubic Flip","cube spin","box rotate"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/c62b6d8fdbea/lib-gl-transitions-cube.mp4","blur":"https://s3.varg.ai/how-to/previews/8b26b3e3e1e1/lib-gl-transitions-cube.webp","source":"https://s3.varg.ai/how-to/previews/c62b6d8fdbea/lib-gl-transitions-cube.mp4","page":"https://gl-transitions.com/editor/Cube","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","rights":"publisher-site","note":"Preview of the Cube component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/flip-3d","slug":"flip-3d","name":"3D Flip","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["3d","flip","reveal","ffmpeg","hyperframes","remotion","capcut"],"summary":"The frame flips over like a card; its back side is the next shot.","description":"Built on [3D Transitions](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-3d) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA rotates 180° in perspective around the centre axis and B is revealed on the reverse.\n\n**When:** Before/after, two sides of a story, playful reveals.\n\n**Watch out:** Long flips; and flipping footage that contains text (it mirrors mid-way).\n\n**Timing:** 0.4–1.0 s (CapCut Flip 1.0 s, Flip II 0.47 s), ease-in-out\n\n**Also called:** Flip, Flip II, Cutout Flip, Paper Flip, card flip, Flip & Zoom\n\n### In FFmpeg\n\nApproximate with a horizontal squeeze (A narrows to a line, B opens from it):\nSame size/fps/pixel format on both inputs (see the Normalize card). offset = duration(A) - T = 5.0 - 0.5 = 4.5.\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n[a][b]xfade=transition=squeezeh:duration=0.5:offset=4.5[v];\\\n[0:a][1:a]acrossfade=d=0.5[au]\" \\\n  -map \"[v]\" -map \"[au]\" -c:v libx264 -crf 18 -c:a aac out.mp4\n```\n\n### In HyperFrames\n\nBlock `transitions-3d`; manual: `perspective` on the root, tween `#s1` `rotationY: 0→90` (power2.in, 0.3 s), then `#s2` `rotationY: -90→0` (power2.out, 0.3 s).\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {flip} from '@remotion/transitions/flip';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><ShotA /></TransitionSeries.Sequence>\n  <TransitionSeries.Transition presentation={flip({direction: 'from-left', perspective: 1000})} timing={linearTiming({durationInFrames: 20})} />\n  <TransitionSeries.Sequence durationInFrames={90}><ShotB /></TransitionSeries.Sequence>\n</TransitionSeries>\n```\nTotal = 90 + 90 - 20 frames: the transition overlaps the two shots.\n\n### In CapCut\n\nTransitions tab → 3D → Flip, Flip II, Cutout Flip, Paper Flip, Flip & Zoom. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [3D Transitions](https://skills.varg.ai/component/hf.transitions-3d/) (hyperframes): npx hyperframes add transitions-3d\n- [GridFlip](https://skills.varg.ai/component/glt.grid-flip/) (gl-transitions): npm install gl-transitions\n\n### Where this comes from\n\n- [Remotion: presentations](https://www.remotion.dev/docs/transitions/presentations)\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Before/after, two sides of a story, playful reveals."],"notFor":["Long flips; and flipping footage that contains text (it mirrors mid-way)."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-3d","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"3D Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-3d/","license":"Apache-2.0","note":"Showcase of 3D perspective flip and rotate transitions"},{"role":"component","label":"GridFlip · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.grid-flip/","license":"MIT","note":"The frame splits into a 4×4 grid of tiles that flip one by one to the next shot"},{"role":"source","label":"Remotion: presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"3D Flip"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.transitions-3d","glt.grid-flip"],"aliases":["Flip","Flip II","Cutout Flip","Paper Flip","card flip","Flip & Zoom"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-3d.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-3d.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-3d.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/transitions-3d","credit":"3D Transitions · hyperframes","rights":"publisher-site","note":"Preview of the 3D Transitions component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"gl-transitions/page-turn","slug":"page-turn","name":"Page Turn","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["page","paper","storytelling","ffmpeg","hyperframes","remotion","capcut"],"summary":"Shot A peels or turns like a page and the next shot lies underneath.","description":"Built on [InvertedPageCurl](https://github.com/gl-transitions/gl-transitions/blob/master/transitions/InvertedPageCurl.glsl) by hewlett-packard (gl-transitions), MIT. The write-up and recipes below are varg's.\n\nA corner curls up (or the page swings around its spine), casting a light shadow on B.\n\n**When:** Storytelling, scrapbooks, recipes, children's content, magazine looks.\n\n**Watch out:** Fast-paced action edits; the metaphor slows things down.\n\n**Timing:** 0.5–1.0 s (CapCut Page Turning 0.47 s, Fold Over 1.0 s)\n\n**Also called:** Page Turning, Flip Page, Fold Over, page curl, book flip\n\n### In FFmpeg\n\nNo page curl in xfade; use editly + GL `InvertedPageCurl` or `BookFlip` (names identical in 1.x).\n\n### In HyperFrames\n\n`transitions-3d` block, or `rotationY` around `transformOrigin: \"left center\"` on `#s1` (0 → -180) with `backface-visibility: hidden`.\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {bookFlip} from '@remotion/transitions/book-flip';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><ShotA /></TransitionSeries.Sequence>\n  <TransitionSeries.Transition presentation={bookFlip({direction: 'from-right'})} timing={linearTiming({durationInFrames: 24})} />\n  <TransitionSeries.Sequence durationInFrames={90}><ShotB /></TransitionSeries.Sequence>\n</TransitionSeries>\n```\nTotal = 90 + 90 - 24 frames: the transition overlaps the two shots.\nShader presentations are built on Remotion's HTML-in-canvas: renders work out of the box (`--gl=angle`, or `--gl=swangle` without a GPU); the Studio preview needs Chrome with `chrome://flags/#canvas-draw-element` enabled. Curl: `glTransition({name: 'InvertedPageCurl'})`.\n\n### In CapCut\n\nTransitions tab → 3D / Slide → Page Turning, Flip Page, Fold Over. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [InvertedPageCurl](https://skills.varg.ai/component/glt.inverted-page-curl/) (gl-transitions): npm install gl-transitions\n- [BookFlip](https://skills.varg.ai/component/glt.book-flip/) (gl-transitions): npm install gl-transitions\n- [Page Turn](https://skills.varg.ai/component/remocn.page-turn/) (remocn): npx shadcn@latest add @remocn/page-turn\n- [Paper Tear](https://skills.varg.ai/component/remocn.paper-tear/) (remocn): npx shadcn@latest add @remocn/paper-tear\n- [Torn Paper Rip](https://skills.varg.ai/component/hf.torn-paper-rip/) (hyperframes): npx hyperframes add torn-paper-rip\n\n### Where this comes from\n\n- [Remotion: presentations](https://www.remotion.dev/docs/transitions/presentations)\n- [@gl-transitions/remotion (README)](https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion)\n- [GL Transitions gallery](https://gl-transitions.com)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Storytelling, scrapbooks, recipes, children's content, magazine looks."],"notFor":["Fast-paced action edits; the metaphor slows things down."],"publisher":{"name":"hewlett-packard · GL Transitions","handle":"gl-transitions","kind":"community","verified":false,"url":"https://github.com/gl-transitions","avatar":"https://github.com/gl-transitions.png"},"source":{"url":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/InvertedPageCurl.glsl","repo":"gl-transitions/gl-transitions","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"InvertedPageCurl · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.inverted-page-curl/","license":"MIT","note":"The first shot peels back from the corner like a curling page, revealing the next beneath"},{"role":"component","label":"BookFlip · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.book-flip/","license":"MIT","note":"The first shot turns over like a book page, right to left, and lands on the next"},{"role":"component","label":"Page Turn · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.page-turn/","license":"MIT","note":"The exiting scene swings up and away like a notebook page in stop-motion poses, staying above the scene it reveals."},{"role":"component","label":"Paper Tear · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.paper-tear/","license":"MIT","note":"A jagged rip runs down the frame, then both halves peel apart on a spring with white fibrous torn edges, revealing the scene underneath."},{"role":"component","label":"Torn Paper Rip · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.torn-paper-rip/","license":"Apache-2.0","note":"A fibrous paper tear runs across the frame: the torn sheet shows its white paper core along the edge and lifts away on a soft shadow, leaving the next scene standing."},{"role":"source","label":"Remotion: presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"},{"role":"source","label":"@gl-transitions/remotion (README)","kind":"link","url":"https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion","license":"link-only"},{"role":"source","label":"GL Transitions gallery","kind":"link","url":"https://gl-transitions.com","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Page Turn"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["glt.inverted-page-curl","glt.book-flip","remocn.page-turn","remocn.paper-tear","hf.torn-paper-rip"],"aliases":["Page Turning","Flip Page","Fold Over","page curl","book flip"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/5d95936f9b3c/lib-gl-transitions-inverted-page-curl.mp4","blur":"https://s3.varg.ai/how-to/previews/a87ec70d7fc2/lib-gl-transitions-inverted-page-curl.webp","source":"https://s3.varg.ai/how-to/previews/5d95936f9b3c/lib-gl-transitions-inverted-page-curl.mp4","page":"https://gl-transitions.com/editor/InvertedPageCurl","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","rights":"publisher-site","note":"Preview of the InvertedPageCurl component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"gl-transitions/split-slices","slug":"split-slices","name":"Split and Slices","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["split","slices","doors","editorial","ffmpeg","hyperframes","remotion","capcut"],"summary":"The frame breaks into bars that slide apart or open like doors, revealing the next shot.","description":"Built on [Doorway](https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Doorway.glsl) by gre (gl-transitions), MIT. The write-up and recipes below are varg's.\n\nTwo or more panels (horizontal, vertical or diagonal) move away from each other with B behind.\n\n**When:** Tech, sport and editorial pieces; section openers.\n\n**Watch out:** Many thin slices on detailed footage turn into visual noise.\n\n**Timing:** 0.4–0.6 s (CapCut Split/Slices 0.47 s), power3.inOut\n\n**Also called:** Split, Split III, Split IV, Horizontal Slice, Vertical Slices, Diagonal Slices, Open Horizontally, Open Vertically\n\n### In FFmpeg\n\nSame size/fps/pixel format on both inputs (see the Normalize card). offset = duration(A) - T = 5.0 - 0.5 = 4.5.\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n[a][b]xfade=transition=vertopen:duration=0.5:offset=4.5[v];\\\n[0:a][1:a]acrossfade=d=0.5[au]\" \\\n  -map \"[v]\" -map \"[au]\" -c:v libx264 -crf 18 -c:a aac out.mp4\n```\nDoors: vertopen/vertclose/horzopen/horzclose. Staggered slices: hlslice, hrslice, vuslice, vdslice.\n\n### In HyperFrames\n\nBlock `transitions-mechanical` / `transitions-grid`; GL: `Doorway` (splits and swings open).\n\n### In Remotion\n\nCustom presentation: render `children` twice, each clipped to half (`clipPath: inset(0 50% 0 0)` / `inset(0 0 0 50%)`), translating ±50% by `presentationProgress` on the exiting side.\n\n### In CapCut\n\nTransitions tab → Split → Split, Split III, Split IV, Horizontal Slice, Vertical Slices, Diagonal Slices, Open Horizontally, Open Vertically. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Doorway](https://skills.varg.ai/component/glt.doorway/) (gl-transitions): npm install gl-transitions\n- [Mechanical Transitions](https://skills.varg.ai/component/hf.transitions-mechanical/) (hyperframes): npx hyperframes add transitions-mechanical\n- [Grid Transitions](https://skills.varg.ai/component/hf.transitions-grid/) (hyperframes): npx hyperframes add transitions-grid\n- [Mondrian Split](https://skills.varg.ai/component/remocn.mondrian-split/) (remocn): npx shadcn@latest add @remocn/mondrian-split\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [Remotion: custom presentations](https://www.remotion.dev/docs/transitions/presentations/custom)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)","useWhen":["Tech, sport and editorial pieces; section openers."],"notFor":["Many thin slices on detailed footage turn into visual noise."],"publisher":{"name":"gre · GL Transitions","handle":"gl-transitions","kind":"community","verified":false,"url":"https://github.com/gl-transitions","avatar":"https://github.com/gl-transitions.png"},"source":{"url":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Doorway.glsl","repo":"gl-transitions/gl-transitions","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Doorway · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.doorway/","license":"MIT","note":"The first shot splits and swings open like double doors as the next shot comes forward"},{"role":"component","label":"Mechanical Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-mechanical/","license":"Apache-2.0","note":"Showcase of mechanical shutter and iris transitions"},{"role":"component","label":"Grid Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-grid/","license":"Apache-2.0","note":"Showcase of grid-based tile transitions"},{"role":"component","label":"Mondrian Split · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.mondrian-split/","license":"MIT","note":"Black lines cut the frame into a seeded De Stijl grid, primaries wipe into its cells, the grid reflows like rubber, and one cell pushes its own lines out past the edges to become a clean color field or the next scene."},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"Remotion: custom presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations/custom","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Split and Slices"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["glt.doorway","hf.transitions-mechanical","hf.transitions-grid","remocn.mondrian-split"],"aliases":["Split","Split III","Split IV","Horizontal Slice","Vertical Slices","Diagonal Slices","Open Horizontally","Open Vertically"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d368426264f8/take-split-slices.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADR0lEQVR4nDWT227kRBCGqw+2e8brOSSOciDJsklACDZohcQl78ljIK64gwvuAhIiEBHYZJQsO8lmJsnEHo/7VN2UI9GWbKtcXf77q7/Y9z+fK6Uek3A/n68e3w8Gg7SaLZeNbOcxxh4uQwg37yaTy8v1g+Pj169tsaVUz+ZllmbYHwkhUKYAIBGCzBJuWxGhdSitzyBwwNZY7zGVaK0dDNdeHcqk3HQBWEAeUYaQQGS0FzjQC2Pyu3c/7MbdN4Ov1AuVzLjXloSEGBtHy/fQBYwsUYN1pRmjkMQAMQoeOQRr0QL2igwiyJ/sCVyenCUXe3t7L9WmMYbKCMrkAlEbb0i2j5HuRqapQ4XeOndfLRlbZUPe7+doLMGRuVTe+d/16Z8XZ1/Hz4nRjh0hYvSehYgYPPrAgMRH5iN6B0zXzQQhTVOhWd7XR3sbS93Ksr9OKhpTOe/emlNhRBkO6f9pU2eMG3REijMmpIDnFRCcxwgUk8CUddzAYnI9kaoejHvKjZ+qqor+iSicryYYwl6djscj7nnoIAHvgDKKs2eELHEUyNSvdIL7BTSrqbz9Md3f3y2OUyVGrndtuFENjsajMZIYw5wOkTYL4oshEgSgRwSVaIi6am4Cq40j/ShPP/z192Ly6e3O/v5+f7stsmQnX2yX233eXF1dtW7VeSTyGE0ED2qo76s875f9jFBM2/zJsw//Ns85ArVrzq7fTmbvjzfLlx9vLlV9MZ1vYFtFrTj5JpAMOtQKW3QyS13KgjNSqeKT8yATecTEcDiUjAwBwCQabC+ml9PHmy9GeVmWaU9HkXLuOlNRguCN8K1+avg/ucu/rN64h+VymB0eHvQ+GrRtK+H/RW3gDLx3tw93lV7yghVFIaHzEdIVo+wSWCUWtX4Cbb1zeq2o472YJcu6lkxyskqIjgENCVK9zolB14sWTZtlXbeoFPFO0kHXc2Gp9C8vas65lo9/zKqDZC2hE4bJzdb2VsxedjZHmh2hES3yG0DuuBZ32zs7ZVrTxA3vfpNC9hWSATYfPP1gJZCKJnZ9Np9JuH44enW8KL4hGQK6D0TExThn1Km4io+V3fhMfMsStg4n3YS1zxxWHVn5nL9Kd8+nV/8B6Rsabk5LOZoAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Coffee Run (2020) + WING IT! (2023)","rights":"cc-by","note":"vertopen between two shots, with the timeline strip of the edit. Footage: Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":236045,"addedAt":"2026-10-28"}},{"id":"Remocn/shutter-blinds","slug":"shutter-blinds","name":"Shutter and Blinds","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["blinds","shutter","mechanical","retro","ffmpeg","hyperframes","remotion","capcut"],"summary":"Stripes close over A like blinds or a shutter, then open on B.","description":"Built on [Venetian Blinds](https://remocn.dev/r/venetian-blinds.json) by Kapish Dima (remocn), MIT. The write-up and recipes below are varg's.\n\nRepeated horizontal or vertical bars rotate or slide closed, then reopen on the new image.\n\n**When:** Mechanical, clinical or retro tech looks; photo slideshows.\n\n**Watch out:** Too few slats looks crude, too many shimmers; 6–16 bars depending on energy.\n\n**Timing:** 0.5–0.6 s (CapCut Shutter 0.47 s, Shutter II 0.6 s)\n\n**Also called:** Shutter, Shutter II, venetian blinds, window blinds, Blinds\n\n### In FFmpeg\n\n10 horizontal blinds via a custom xfade expression (tested; P runs 1→0):\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n [a][b]xfade=transition=custom:duration=0.6:offset=4.4:expr='if(gt(mod(Y*10/H,1),P),B,A)'[v]\" -map \"[v]\" out.mp4\n```\n\n### In HyperFrames\n\nBlock `transitions-cover` (horizontal and vertical blinds), `transitions-mechanical` (shutter).\n\n### In Remotion\n\n`glTransition({name: 'windowblinds'})` (1.x name; `WindowBlinds` in 2.0).\n\n### In CapCut\n\nTransitions tab → Basic / Split → Shutter, Shutter II. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Venetian Blinds](https://skills.varg.ai/component/remocn.venetian-blinds/) (remocn): npx shadcn@latest add @remocn/venetian-blinds\n- [Cover Transitions](https://skills.varg.ai/component/hf.transitions-cover/) (hyperframes): npx hyperframes add transitions-cover\n- [Mechanical Transitions](https://skills.varg.ai/component/hf.transitions-mechanical/) (hyperframes): npx hyperframes add transitions-mechanical\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [@gl-transitions/remotion (README)](https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)","useWhen":["Mechanical, clinical or retro tech looks; photo slideshows."],"notFor":["Too few slats looks crude, too many shimmers; 6–16 bars depending on energy."],"publisher":{"name":"Kapish Dima · remocn","handle":"Remocn","kind":"community","verified":false,"url":"https://remocn.dev","avatar":"https://github.com/Remocn.png"},"source":{"url":"https://remocn.dev/r/venetian-blinds.json","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Venetian Blinds · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.venetian-blinds/","license":"MIT","note":"The outgoing scene splits into horizontal slats that turn edge-on in a staggered ripple, revealing the next scene behind them."},{"role":"component","label":"Cover Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-cover/","license":"Apache-2.0","note":"Showcase of cover/uncover slide transitions"},{"role":"component","label":"Mechanical Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-mechanical/","license":"Apache-2.0","note":"Showcase of mechanical shutter and iris transitions"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"@gl-transitions/remotion (README)","kind":"link","url":"https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Shutter and Blinds"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["remocn.venetian-blinds","hf.transitions-cover","hf.transitions-mechanical"],"aliases":["Shutter","Shutter II","venetian blinds","window blinds","Blinds"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e185f31de241/take-shutter-blinds.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADqElEQVR4nBWTS2/cNhDHKZESSa2kfXq9ttPs2knrGLHT9OCiQXPooeixaIHce8p36jdob4GL9lSgMJpL3R6K9BHDhnfj1669D692JepBiSLLzmUIgvhxZv7/Mb75es/WQWpra+ueW+n3+8nNGwjhJMcnp+e42qCEjC5HGxtNxvO7u2h9ffPi/IJLCaHJCwV0CGXbBhLKbNWan3/5stftToZT6p+e5EsWM5nEjaq7s/ssTpLxNAhTpaSyLNOrEeJCHpkZF1IAjdvEkFKKxgHf3utttVfOj/+Nhzddp5J3H45vx8HybGdr64v9p4yxeTgcDAbABBWHeKaoGAX0IMYO51yWsm4TjUNBonqPPjLynJomwDAO72yn8eDR6nB8TWzoQCgMw6HQNESzbtXr3r12aQM3z6GmzBKcZdmVYMiAaLVVv3rX36nQ/vE/y9n06uoKO4XjVKBFF2H686+/EEp8U22u1P2WrNWIU9OVYMJkWBRNk5aEDJUshUDte73Xv/3xuL3affj+HKEoWPZv/k7T1CPEUsqzdSK3SmHbZimzSTk6HSEEeSFjaUgbSVmCTAkh0VfPPz08PLwejjdt+vubv5Ikvg54UchuoxOG4SJmRpLcLTS5dClO0lx3CZSa8hJiF6WiBPIJLGrrDcSXUcv1vzt49eLFi97jp0dHR3e53et9MBmPtLKJuRCirDjSodgkhub1HmxfXF4aRqZHipBRJDlLtfgQfX/wand3N0qiH3486Db8d4NBSpoTli1MqhHLwannuT4FjWaz4As9VCOLHVBWMU7TJJVYYXLNBcoZGktcXM9b97fOzs6S5cyv+jKVWZbeLKZCiLoCvutFcdhx6qhI9Q0IJ/drhEcgZZHBTT1oxyBpnKH39vYZi5P5FNgVaGuXIm0yiCnIcsswWp7bcj3AFsHFeW2jWFmp8WgBLUVJ0ek4uKAsihzLCeYc1WQQTi9bVX86GkobpwrkWZRnyMOmUiqH8M+T493V1jwIPM9nnFeEINDwgZUrFTAzWMicllzr5ylWkZFdWy+LOOYKYyx5Wqb2fD4hhHy8/aQv1BLYVnPtluUiKBomHIeZ3yKTSTiKtR5kESTad+ino0m12lGsBzpUYKvUPiai3m5H6LKQcgxQd/9DH86KQoDpa12jtrKWTCRRu4o2mqIsZWlRxpbo+Ex88tne0n1OPcNQhf7CBGAqJd2x9HmkZqLRfuZ+q1e2WY1MExr6lZL/Lz2QBih1ynHn7dvZfzFEFa37LxdkAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Tears of Steel (2012) + Sprite Fright (2021)","rights":"cc-by","note":"hlslice between two shots, with the timeline strip of the edit. Footage: Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0; Sprite Fright (2021), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":268227,"addedAt":"2026-10-28"}},{"id":"gl-transitions/pixelate-mosaic","slug":"pixelate-mosaic","name":"Pixelate","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["pixel","retro","gaming","digital","ffmpeg","hyperframes","remotion","capcut"],"summary":"A breaks into ever larger pixels, swaps at the coarsest point, and B sharpens back.","description":"Built on [Pixelize](https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Pixelize.glsl) by gre (gl-transitions), MIT. The write-up and recipes below are varg's.\n\nBlocky mosaic grows then shrinks; reads as digital or retro gaming.\n\n**When:** Gaming, retro, tech, censorship gags.\n\n**Watch out:** Serious brand films; very large blocks on vertical video lose the subject.\n\n**Timing:** 0.4–0.8 s (CapCut Mosaic 0.47 s)\n\n**Also called:** Mosaic, pixelize, 8-bit transition, pixel dissolve\n\n### In FFmpeg\n\nSame size/fps/pixel format on both inputs (see the Normalize card). offset = duration(A) - T = 5.0 - 0.6 = 4.4.\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n[a][b]xfade=transition=pixelize:duration=0.6:offset=4.4[v];\\\n[0:a][1:a]acrossfade=d=0.6[au]\" \\\n  -map \"[v]\" -map \"[au]\" -c:v libx264 -crf 18 -c:a aac out.mp4\n```\n\n### In HyperFrames\n\n`npx hyperframes add grid-pixelate-wipe`; dithered: `ordered-dither-pass`.\n\n### In Remotion\n\n`glTransition({name: 'pixelize'})` (1.x name; `Pixelize` in 2.0) or `@remotion/effects/pixelate` driven by `interpolate()` on a canvas-based `<Video>`.\n\n### In CapCut\n\nTransitions tab → Glitch / Basic → Mosaic, Blocks. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Pixelize](https://skills.varg.ai/component/glt.pixelize/) (gl-transitions): npm install gl-transitions\n- [Mosaic](https://skills.varg.ai/component/glt.mosaic/) (gl-transitions): npm install gl-transitions\n- [Grid Pixelate Wipe](https://skills.varg.ai/component/hf.grid-pixelate-wipe/) (hyperframes): npx hyperframes add grid-pixelate-wipe\n- [Ordered Dither Pass](https://skills.varg.ai/component/hf.ordered-dither-pass/) (hyperframes): npx hyperframes add ordered-dither-pass\n- [Dither Dissolve](https://skills.varg.ai/component/remocn.dither-dissolve/) (remocn): npx shadcn@latest add @remocn/dither-dissolve\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [@gl-transitions/remotion (README)](https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)","useWhen":["Gaming, retro, tech, censorship gags."],"notFor":["Serious brand films; very large blocks on vertical video lose the subject."],"publisher":{"name":"gre · GL Transitions","handle":"gl-transitions","kind":"community","verified":false,"url":"https://github.com/gl-transitions","avatar":"https://github.com/gl-transitions.png"},"source":{"url":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Pixelize.glsl","repo":"gl-transitions/gl-transitions","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Pixelize · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.pixelize/","license":"MIT","note":"Both shots break into chunky 8-bit pixels, crossfade, then sharpen back into the next"},{"role":"component","label":"Mosaic · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.mosaic/","license":"MIT","note":"The camera pulls back over a wall of rotated tiles from both shots, pans, and settles on the next"},{"role":"component","label":"Grid Pixelate Wipe · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.grid-pixelate-wipe/","license":"Apache-2.0","note":"Transition effect where the screen dissolves into a grid of squares that fade out with staggered timing — use between scenes"},{"role":"component","label":"Ordered Dither Pass · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.ordered-dither-pass/","license":"Apache-2.0","note":"Bayer-matrix ordered dithering quantizes a slotted scene (rasterized once at mount): the image emerges from pure 2-tone noise to clean, or dissolves the reverse. Stateless per frame, never error diffusion."},{"role":"component","label":"Dither Dissolve · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.dither-dissolve/","license":"MIT","note":"A dithering shader transition that dissolves one scene into the next."},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"@gl-transitions/remotion (README)","kind":"link","url":"https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Pixelate"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["glt.pixelize","glt.mosaic","hf.grid-pixelate-wipe","hf.ordered-dither-pass","remocn.dither-dissolve"],"aliases":["Mosaic","pixelize","8-bit transition","pixel dissolve"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ad57a1e97506/take-pixelate-mosaic.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADkUlEQVR4nB2TS28bVRTH73Pmztgez9hjx0mcNnHIq0UFdQOLblghsWDBJ6AfByS+AhLfAakS7IpUiQgioRCStEnbxGkS16/JeMbzuC+uc1ZX5+g87v/8Dvzphx+11hiRsuRCg6IoXuy/juNYSGUMSc1NIEts2647IQAAAd7tdle/+S4MmwnAEEIMlPETALCScnB7yxgrQS3Poc2LgJLUsubZHCgBEFzkI0SQNg9K7fX19UebLSkl0HoRRPeFlKYnr8/wh4mZ5eTs1HS2q9RSOqMNn5CYmjamJ7GJbWqZGcNO8OTpYw/zQhS5oqYEBBghSK6H0c0wKuJxv9+Xjm42GXBrfhDUsDuZTtNEEQAVhAQT26a1Wu3Z11+1NlbSUgNom09hjLXkPBfk1cF/gvPBbd+psabvU0q5wts7n6ar23Q0Gvz2u4D3SiDoOfZSGLiOczeNqGWZ8ZqMJrN4dPDXNIrIPE05F4CLVqcRf/ntyuamW6bnWSZoo7LZhdZLkWUUQYpJDkAB4eHx5Wg8WuuEvV5vZ9m9HF6xo2P3LiJaKc5LZNms5u3i6N9ff2kHjd2dnf6UWKmFoUJAUYgqzFmqB23Pd71Wu97mKun3P9y+H8XjkebzesUmQBSySBGiQdA8evli/+99l1o3e3txkn///PkgbM4nY400q7KWR4t4UHd0GIYPb06SJOXFpCpl8LiWJDMioIVZLYvTyd0dSZM2pm7NvnpzNMjU4dFhFCmzd0h4VsxiZyWOc3d2G4asMrl2tX5j5e12W5CI+ZCUkg1Hs0L5s9O7var3cPvp1qOdsiz3z6OjS2FkWSz4fmtIlJ/tbncarNloKpy9v7goRlMDBOGV4XBIKpMzzPNp8/NkNjuYeiZw/Oc7A1MbaRTFyMdYldBwZDlY863eA2TIM0J0elF/zOZWcp2xVQhsTO6w9pZbAcNFVkjhIKSlNguvVDs4z3OgDC+IIsxsOy1kNMuWWl46nxf1oLKxec56hFJCC+1qQvy2sCypSikKLlxzAZlmzGpsPVkzA398e4q04FK8uzhvt5uX/b5X+URLeDUnot4dJ4t71BpgQ0eag2o9ULjrow4TkBDMtYHYfnslXGdFViVy1FojN57VwMriweifV5VqJc5lnuUdQUwhiWsLIAcfs429B8J75i8ueyGtMdMlkiAyMi/vGdbd+sjo/YX3s0mrTP6AKfTh/SVDtcih3ePR1f+SK+g5ZNXeZQAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023) + Big Buck Bunny (2008)","rights":"cc-by","note":"pixelize between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; Big Buck Bunny (2008), (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0.","bytes":283895,"addedAt":"2026-10-28"}},{"id":"heygen-com/clock-wipe","slug":"clock-wipe","name":"Clock Wipe","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["clock","radial","retro","time","ffmpeg","hyperframes","remotion","capcut"],"summary":"A hand sweeps around the centre like a clock, replacing A with B.","description":"Built on [Radial Transitions](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-radial) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA radial edge rotates 360° from 12 o'clock; Windmill uses several blades.\n\n**When:** Countdowns, time-based stories, playful retro edits.\n\n**Watch out:** Modern minimalist brands; it is a strongly retro look.\n\n**Timing:** 0.5–1.0 s (CapCut Clock wipe 0.47 s)\n\n**Also called:** Clock wipe, radial wipe, Windmill, angular wipe\n\n### In FFmpeg\n\nSame size/fps/pixel format on both inputs (see the Normalize card). offset = duration(A) - T = 5.0 - 0.8 = 4.2.\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n[a][b]xfade=transition=radial:duration=0.8:offset=4.2[v];\\\n[0:a][1:a]acrossfade=d=0.8[au]\" \\\n  -map \"[v]\" -map \"[au]\" -c:v libx264 -crf 18 -c:a aac out.mp4\n```\n\n### In HyperFrames\n\nBlock `transitions-radial`; CSS clock wipe: a 9-point polygon stepped through 4 quadrants (see the HyperFrames mechanical transitions reference).\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {clockWipe} from '@remotion/transitions/clock-wipe';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><ShotA /></TransitionSeries.Sequence>\n  <TransitionSeries.Transition presentation={clockWipe({width: 1920, height: 1080})} timing={linearTiming({durationInFrames: 24})} />\n  <TransitionSeries.Sequence durationInFrames={90}><ShotB /></TransitionSeries.Sequence>\n</TransitionSeries>\n```\nTotal = 90 + 90 - 24 frames: the transition overlaps the two shots.\n`clockWipe()` requires `width` and `height`.\n\n### In CapCut\n\nTransitions tab → Basic / Wipe → Clock wipe, Windmill. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Radial Transitions](https://skills.varg.ai/component/hf.transitions-radial/) (hyperframes): npx hyperframes add transitions-radial\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [Remotion: presentations](https://www.remotion.dev/docs/transitions/presentations)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)","useWhen":["Countdowns, time-based stories, playful retro edits."],"notFor":["Modern minimalist brands; it is a strongly retro look."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-radial","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Radial Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-radial/","license":"Apache-2.0","note":"Showcase of radial wipe and reveal transitions"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"Remotion: presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Clock Wipe"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.transitions-radial"],"aliases":["Clock wipe","radial wipe","Windmill","angular wipe"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/39c62ab3e8fa/take-clock-wipe.mp4","w":640,"h":400,"duration":4.9,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADK0lEQVR4nC1TyXIbRwztBd09MxxySIomlViJSpt9ziWXHPwB+aL8UP4il1ydgw9xSnEqrnJElReKy4icpTd0QJUxa3WjHx6AB/7qZSmF7PfoQ1Ay55z/CJtvTk9/mH5kjNXVpK7rX/6Ye++DyBIZi7TOkuBPRh8BDBGBPRloZb1FFqUQt1ZtOnmJbDDI94/q82eUdKXkuEosca7pdMLE6M0Yck6okT0BRYwAIAQTiAmxyUbLLv6+LMtBedE8ToOePL8WXFg1PlIgk1Jw+UQA6eHJkX1lxHkiIBeilJSeFIm9bY2wuGEaZL44GZFPK/URgSMdI+cjKKaIhIWDTAJtkZNgTGvwXOS5QYw++BAjj/G1Z8ZAiMfILrZEHFja77YMw3wxL4s8hLharfq+h3VDafNCunxQanRai+iEbxshgAosFTcZ3+4eq6oC0DGgFMy7WGiYjWejYRFD7Drbtj3UTSJaEfzkdCrcoW3akJQwuabVoHzfyIQvrq+Wy+W+bWezmYiBcjGmBAkJDPKYDYemaYDoROInZJ5XpijXm/fRbqtqDNCDwJx6y+xU12Iab1domz2AHFcjKhH1RVSL0+l0170JD4+QK069UtH2u4cWD4MBg7LQmikjFBhDP0qtH9575zSf8+iVMufn34l08KEudSGRmhaS83D+TJPK3IFxd9CZN4prLekmDCnBADVBF8CtZXbH+n4/GpTb9YeqLKhHd3/+Zq1tYlGVBgYjbYyZvdRKgVSJimf7SNAmkyezk+FQFXkeue66Lt1n9/f13af1fr93mJGy2FdbU5rw7r6X4C+cuLy8eL44JtK7QFyUFnlRgDwqUFEsjd/2KfWpDZ3w+03b295aLyikIBHTiBzVFcW/H3D56Z/rM3Vzc7OoLJWZRIRN58AQEHqXQgSpixwmlWZR9Qk4c8gUpeaQY+TwpZ+dnZ35fEEKedPGt3+pZxM5noy1tET6ZtqOqyoTWRAR7OuSd9f5ys7s1VASAxtkCMHy4Xa7gw37/sXVq3r4k0MkrVlMd4n/51P0jGh/rA+DUP48+jVTai7exTJkw/5ppCQ/jitpink9uv27/h+1kMfm5lEAgAAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023) + Coffee Run (2020)","rights":"cc-by","note":"radial between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":216845,"addedAt":"2026-10-28"}},{"id":"gl-transitions/swirl-vortex","slug":"swirl-vortex","name":"Swirl Vortex","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["swirl","distortion","dream","playful","ffmpeg","hyperframes","remotion","capcut"],"summary":"A twists into a spiral at the centre and unwinds as B.","description":"Built on [Swirl](https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Swirl.glsl) by sergey-kosarevsky (gl-transitions), MIT. The write-up and recipes below are varg's.\n\nPixels spin around the centre with increasing strength, then release onto the new shot.\n\n**When:** Dream sequences, flashbacks, magic, playful kids' content.\n\n**Watch out:** Faces at the centre of the swirl.\n\n**Timing:** 0.5–1.8 s (CapCut Whirlpool 0.47 s, Swirl 1.8 s)\n\n**Also called:** Whirlpool, Color Swirl, Swirl, Cartoon Swirl, Whirl, vortex\n\n### In FFmpeg\n\nNo swirl in xfade; use editly + GL `Swirl` (same name in 1.x), or render the swirl in Remotion/HyperFrames.\n\n### In HyperFrames\n\nShader `swirl-vortex` from `@hyperframes/shader-transitions` placed at the cut (t = 4 s):\n```html\n<div id=\"s1\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"a.mp4\" muted playsinline></video></div>\n<div id=\"s2\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"b.mp4\" muted playsinline></video></div>\n<script src=\"https://cdn.jsdelivr.net/npm/@hyperframes/shader-transitions/dist/index.global.js\"></script>\n<script>\n  const tl = HyperShader.init({ bgColor: \"#0a0a0a\", scenes: [\"s1\", \"s2\"],\n    transitions: [{ time: 4, shader: \"swirl-vortex\", duration: 0.8 }] });\n  window.__timelines = window.__timelines || {}; window.__timelines[\"main\"] = tl;\n</script>\n```\nEach `.scene` needs an explicit background-color equal to `bgColor`. Or install the ready block: `npx hyperframes add swirl-vortex`.\n\n### In Remotion\n\n`glTransition({name: 'Swirl'})`, or remocn `swirl-dissolve` presentation.\n\n### In CapCut\n\nTransitions tab → Distortion → Whirlpool, Color Swirl, Cartoon Swirl, Swirl, Whirl. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Swirl](https://skills.varg.ai/component/glt.swirl/) (gl-transitions): npm install gl-transitions\n- [Swirl Vortex](https://skills.varg.ai/component/hf.swirl-vortex/) (hyperframes): npx hyperframes add swirl-vortex\n- [Swirl Dissolve](https://skills.varg.ai/component/remocn.swirl-dissolve/) (remocn): npx shadcn@latest add @remocn/swirl-dissolve\n- [Kaleidoscope](https://skills.varg.ai/component/glt.kaleidoscope/) (gl-transitions): npm install gl-transitions\n\n### Where this comes from\n\n- [@gl-transitions/remotion (README)](https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion)\n- [HyperFrames: @hyperframes/shader-transitions](https://hyperframes.heygen.com/packages/shader-transitions)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Dream sequences, flashbacks, magic, playful kids' content."],"notFor":["Faces at the centre of the swirl."],"publisher":{"name":"sergey-kosarevsky · GL Transitions","handle":"gl-transitions","kind":"community","verified":false,"url":"https://github.com/gl-transitions","avatar":"https://github.com/gl-transitions.png"},"source":{"url":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Swirl.glsl","repo":"gl-transitions/gl-transitions","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Swirl · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.swirl/","license":"MIT","note":"Both shots twist into a spinning vortex at the center, then unwind onto the next"},{"role":"component","label":"Swirl Vortex · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.swirl-vortex/","license":"Apache-2.0","note":"Shader transition with swirling vortex distortion"},{"role":"component","label":"Swirl Dissolve · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.swirl-dissolve/","license":"MIT","note":"A swirl shader transition that unwinds open and winds shut to reveal the next scene."},{"role":"component","label":"Kaleidoscope · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.kaleidoscope/","license":"MIT","note":"The shots fold into a spinning kaleidoscope of mirrored wedges and open onto the next"},{"role":"source","label":"@gl-transitions/remotion (README)","kind":"link","url":"https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion","license":"link-only"},{"role":"source","label":"HyperFrames: @hyperframes/shader-transitions","kind":"link","url":"https://hyperframes.heygen.com/packages/shader-transitions","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Swirl Vortex"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["glt.swirl","hf.swirl-vortex","remocn.swirl-dissolve","glt.kaleidoscope"],"aliases":["Whirlpool","Color Swirl","Swirl","Cartoon Swirl","Whirl","vortex"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/87ae65e0cee3/lib-gl-transitions-swirl.mp4","blur":"https://s3.varg.ai/how-to/previews/28054c933273/lib-gl-transitions-swirl.webp","source":"https://s3.varg.ai/how-to/previews/87ae65e0cee3/lib-gl-transitions-swirl.mp4","page":"https://gl-transitions.com/editor/Swirl","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","rights":"publisher-site","note":"Preview of the Swirl component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/squeeze-stretch","slug":"squeeze-stretch","name":"Squeeze and Stretch","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["squeeze","stretch","elastic","playful","ffmpeg","hyperframes","remotion","capcut"],"summary":"A is squashed or stretched toward an edge or the centre and B springs out the same way.","description":"Built on [Rubber Band Bumper](https://github.com/heygen-com/hyperframes/tree/main/registry/components/rubber-band-bumper) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nRubbery scaling along one axis, like the image being sucked in or pulled like elastic.\n\n**When:** Playful, cartoonish and meme edits; app UI demos.\n\n**Watch out:** Live-action people in serious contexts; the distortion is comic.\n\n**Timing:** 0.4–1.2 s (CapCut Squeeze 0.47 s, Stretch 1.2 s, Inhale 0.6 s)\n\n**Also called:** Squeeze, Stretch, Stretch Left, Stretch Right, Inhale, Shaky Inhale, elastic transition\n\n### In FFmpeg\n\nSame size/fps/pixel format on both inputs (see the Normalize card). offset = duration(A) - T = 5.0 - 0.5 = 4.5.\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n[a][b]xfade=transition=squeezev:duration=0.5:offset=4.5[v];\\\n[0:a][1:a]acrossfade=d=0.5[au]\" \\\n  -map \"[v]\" -map \"[au]\" -c:v libx264 -crf 18 -c:a aac out.mp4\n```\n`squeezeh` squeezes horizontally.\n\n### In HyperFrames\n\nSqueeze from the push family: tween `#s1` `scaleX: 1→0` (transformOrigin left) and `#s2` `scaleX: 0→1` (transformOrigin right); elastic: `rubber-band-bumper`.\n\n### In Remotion\n\nCustom presentation: exiting `transform: scaleX(${1 - p})` with `transformOrigin: 'left'`; entering `scaleX(${p})` from the right edge, eased with `Easing.bezier`.\n\n### In CapCut\n\nTransitions tab → Distortion / Basic → Squeeze, Stretch, Stretch Left, Stretch Right, Inhale. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [Rubber Band Bumper](https://skills.varg.ai/component/hf.rubber-band-bumper/) (hyperframes): npx hyperframes add rubber-band-bumper\n- [Push Transitions](https://skills.varg.ai/component/hf.transitions-push/) (hyperframes): npx hyperframes add transitions-push\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [Remotion: custom presentations](https://www.remotion.dev/docs/transitions/presentations/custom)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Playful, cartoonish and meme edits; app UI demos."],"notFor":["Live-action people in serious contexts; the distortion is comic."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/rubber-band-bumper","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Rubber Band Bumper · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.rubber-band-bumper/","license":"Apache-2.0","note":"An outgoing panel pulls against increasing resistance, holds at tension, then snaps past an edge with overshoot as the incoming panel settles behind it."},{"role":"component","label":"Push Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-push/","license":"Apache-2.0","note":"Showcase of push and slide transitions"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"Remotion: custom presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations/custom","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Squeeze and Stretch"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.rubber-band-bumper","hf.transitions-push"],"aliases":["Squeeze","Stretch","Stretch Left","Stretch Right","Inhale","Shaky Inhale","elastic transition"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ce75e94695fd/take-squeeze-stretch.mp4","w":640,"h":400,"duration":4.4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADmklEQVR4nC2Ty24cRRSGq+vat+nuufV4HGzHMmAU2xKsiYQCREJs4A0i3idsWJEHYMeCBQLJEigLhLAECguwiR1fiDNjj3sunp7u6a7uulAgflVJZ1E6Ov9f37EefbpHjexofX3djTpPnnzZ7pPb21vHdYuiAJU2Wl2Pr65HixSVpeQKGGEJ3v/gQQghghBgNRwOsZLAcbyHn3y2/db2xcVzbDeAtfB8Op0JzhWsAK90p19FUXg1mHs+5pmg1KKUUcYIwkophERVVfh6Xq1s9rfi3s3p2c35SUPr4dWi3WlKnqlK1yUQAkClGMWUAc4FxkBKDRCAZhxMEAB1LWqp8eC2eLjxJsYWtDQmwLJklgKGOSLAIWRR1FoDKWrHsdsdP0kymzmlcSgVspAoyiAIUsExorgfx8lodHPx4vr6apbO55OFEiDPK2JDqZSUgBDw98VyZYUyqFsNa5oWoe9oYwhDG9tK62VRmKjw1hs7fx6d3mt1dnd3s2e/RbaTwRIBvRaoOI7TlcS2bcaMHZODpv1gmOTGDc+prThl4WQ6UTiYFwl+9PFH+/v7g9G4GY/nl8PXgiZjnDF2v22mDg6snFLiNKBpk3MTR93tMlPbrdD3BBLww/cevL699/jzx/j8+dFKK/rq2+9mZXl/Y+OXg4PLyxzBfCvRMmans3mj4YdaeK5rvl4o2WrZVW1ic5jLAh0Ri1y9PL/TbeOvv9/f3d0zIf/49OmLrnM4OEsECEO6jzJ1k0Y+8HsNreplgUKvtG3XgooRmC8hJsRFjYYXOszqhgHOnfbJrGyubV4dHp4MRktgBU0dRrTXLHzPr2sDihwn7fF4HHQ0pdJllWVZosrpq0QxQ4X0GZmPb/DavbezxWJyeaEhi5o4iFrInvR6ngO1QcYwrHXlr3WzRZJMijhucFljjCqlcl798PtP7dMOltxkhztyskxe9rudZDjgQEfNyCZzz9atwDOzCIENNVwe99fKVcuzbck5Mci5yPnj2a8L3k6qWT57tbl5FwOxsFRGGKvqZV2X5thEZvltnivDroJsMl1Qgj3P0xbKhGlUuK7rEKb+W7qqrvyoaxEPf/PzdcfsUtWzYkewZUrpEi51rcW/fZDi026vu9MepWnaqM5ELVATESytYnD3ne40VcJg7Xam0yE+Pi6aq1uL4F3WBBqoUmnwv6C5VKVmX3fCL0qK7sjSxKw11VpqKAAocV+aN5y2/jqa/ANXdfsmqvJovgAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Sprite Fright (2021) + Tears of Steel (2012)","rights":"cc-by","note":"squeezev between two shots, with the timeline strip of the edit. Footage: Sprite Fright (2021), Blender Studio | studio.blender.org, CC BY 4.0; Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0.","bytes":284554,"addedAt":"2026-10-28"}},{"id":"gl-transitions/ripple-wave","slug":"ripple-wave","name":"Ripple and Wave","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["ripple","water","dream","distortion","ffmpeg","hyperframes","remotion","capcut"],"summary":"Rings or waves distort the frame like water while the shots crossfade.","description":"Built on [WaterDrop](https://github.com/gl-transitions/gl-transitions/blob/master/transitions/WaterDrop.glsl) by pawel-plociennik (gl-transitions), MIT. The write-up and recipes below are varg's.\n\nConcentric ripples or sideways waves bend the image; the swap happens inside the distortion.\n\n**When:** Dream and memory, water and summer themes, calm transitions with motion.\n\n**Watch out:** Text-heavy shots; strong ripples on faces.\n\n**Timing:** 0.5–2.0 s (CapCut Wave Right 0.47 s, Wide Ripple 2.0 s)\n\n**Also called:** Wave Right, Wave Left, Curling Wave, Wide Ripple, Big Wave, water ripple, water drop\n\n### In FFmpeg\n\nNo ripple in xfade; editly + GL `WaterDrop` / `ripple` (1.x names), or `xfade=transition=hlwind` for a wind-blown wave.\n\n### In HyperFrames\n\nShader `ripple-waves` from `@hyperframes/shader-transitions` placed at the cut (t = 4 s):\n```html\n<div id=\"s1\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"a.mp4\" muted playsinline></video></div>\n<div id=\"s2\" class=\"scene\" style=\"background:#0a0a0a\"><video src=\"b.mp4\" muted playsinline></video></div>\n<script src=\"https://cdn.jsdelivr.net/npm/@hyperframes/shader-transitions/dist/index.global.js\"></script>\n<script>\n  const tl = HyperShader.init({ bgColor: \"#0a0a0a\", scenes: [\"s1\", \"s2\"],\n    transitions: [{ time: 4, shader: \"ripple-waves\", duration: 0.8 }] });\n  window.__timelines = window.__timelines || {}; window.__timelines[\"main\"] = tl;\n</script>\n```\nEach `.scene` needs an explicit background-color equal to `bgColor`. Or install the ready block: `npx hyperframes add ripple-waves`.\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {ripple} from '@remotion/transitions/ripple';\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><ShotA /></TransitionSeries.Sequence>\n  <TransitionSeries.Transition presentation={ripple({amplitude: 100, speed: 50})} timing={linearTiming({durationInFrames: 24})} />\n  <TransitionSeries.Sequence durationInFrames={90}><ShotB /></TransitionSeries.Sequence>\n</TransitionSeries>\n```\nTotal = 90 + 90 - 24 frames: the transition overlaps the two shots.\nShader presentations are built on Remotion's HTML-in-canvas: renders work out of the box (`--gl=angle`, or `--gl=swangle` without a GPU); the Studio preview needs Chrome with `chrome://flags/#canvas-draw-element` enabled. amplitude 100 and speed 50 are the defaults.\n\n### In CapCut\n\nTransitions tab → Distortion → Wave Right, Wave Left, Curling Wave, Wide Ripple, Big Wave. Desktop: drag the tile onto the cut between two clips and set Duration in the right panel (\"Apply to all\" reuses it on every cut). Mobile: tap the small white square between clips, pick the transition, drag the duration slider, tap ✓. Tab labels and placement change between versions and regions.\n\n### Ready-made components\n\n- [WaterDrop](https://skills.varg.ai/component/glt.water-drop/) (gl-transitions): npm install gl-transitions\n- [Dreamy](https://skills.varg.ai/component/glt.dreamy/) (gl-transitions): npm install gl-transitions\n- [Ripple Waves](https://skills.varg.ai/component/hf.ripple-waves/) (hyperframes): npx hyperframes add ripple-waves\n- [Ripple Zoom](https://skills.varg.ai/component/remocn.ripple-zoom/) (remocn): npx shadcn@latest add @remocn/ripple-zoom\n- [ButterflyWaveScrawler](https://skills.varg.ai/component/glt.butterfly-wave-scrawler/) (gl-transitions): npm install gl-transitions\n\n### Where this comes from\n\n- [Remotion: presentations](https://www.remotion.dev/docs/transitions/presentations)\n- [HyperFrames: @hyperframes/shader-transitions](https://hyperframes.heygen.com/packages/shader-transitions)\n- [GL Transitions gallery](https://gl-transitions.com)\n- [CapCut Help: transitions](https://www.capcut.com/help/transitions-in-capcut)\n- [CapCut: transition categories](https://capcut.com/resource/add-video-transition-online)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Dream and memory, water and summer themes, calm transitions with motion."],"notFor":["Text-heavy shots; strong ripples on faces."],"publisher":{"name":"pawel-plociennik · GL Transitions","handle":"gl-transitions","kind":"community","verified":false,"url":"https://github.com/gl-transitions","avatar":"https://github.com/gl-transitions.png"},"source":{"url":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/WaterDrop.glsl","repo":"gl-transitions/gl-transitions","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"WaterDrop · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.water-drop/","license":"MIT","note":"Rings ripple out from the center like a drop hitting water while the shots crossfade"},{"role":"component","label":"Dreamy · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.dreamy/","license":"MIT","note":"A soft crossfade in which both shots ripple sideways in slow waves, like a dream sequence"},{"role":"component","label":"Ripple Waves · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.ripple-waves/","license":"Apache-2.0","note":"Shader transition with concentric ripple wave distortion"},{"role":"component","label":"Ripple Zoom · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.ripple-zoom/","license":"MIT","note":"A grain-gradient ripple transition that flies the camera through the center of the rings while the next scene approaches from the depth."},{"role":"component","label":"ButterflyWaveScrawler · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.butterfly-wave-scrawler/","license":"MIT","note":"Wavy, color-split ripples scramble the frame into psychedelic bands before the next shot settles"},{"role":"source","label":"Remotion: presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"},{"role":"source","label":"HyperFrames: @hyperframes/shader-transitions","kind":"link","url":"https://hyperframes.heygen.com/packages/shader-transitions","license":"link-only"},{"role":"source","label":"GL Transitions gallery","kind":"link","url":"https://gl-transitions.com","license":"link-only"},{"role":"source","label":"CapCut Help: transitions","kind":"link","url":"https://www.capcut.com/help/transitions-in-capcut","license":"link-only"},{"role":"source","label":"CapCut: transition categories","kind":"link","url":"https://capcut.com/resource/add-video-transition-online","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Ripple and Wave"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["glt.water-drop","glt.dreamy","hf.ripple-waves","remocn.ripple-zoom","glt.butterfly-wave-scrawler"],"aliases":["Wave Right","Wave Left","Curling Wave","Wide Ripple","Big Wave","water ripple","water drop"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0ce4ed7b8440/lib-gl-transitions-water-drop.mp4","blur":"https://s3.varg.ai/how-to/previews/202d6157d5de/lib-gl-transitions-water-drop.webp","source":"https://s3.varg.ai/how-to/previews/0ce4ed7b8440/lib-gl-transitions-water-drop.mp4","page":"https://gl-transitions.com/editor/WaterDrop","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","rights":"publisher-site","note":"Preview of the WaterDrop component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/freeze-transition","slug":"freeze-transition","name":"Freeze Transition","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["freeze","trend","tiktok","intro","beat","ffmpeg","hyperframes","remotion","capcut"],"summary":"Trend: freeze on a frame with a flash, cut out or zoom the subject, add a label, then cut to the next shot.","description":"Built on [Beat Freeze Cut](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/beat-freeze-cut) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nMotion stops with a white flash, the subject pops (outline, cut-out, zoom or paper texture), a beat later the edit moves on.\n\n**When:** Friend-group intros, sports highlights, outfit reveals, \"that's me\" memes, on a beat hit.\n\n**Watch out:** Freezing on motion-blurred frames; using it on every cut.\n\n**Timing:** Flash 2–3 frames, hold 0.5–1.5 s, then hard cut on the next beat\n\n**Also called:** freeze frame transition, freeze cutout, freeze + flash, character freeze, photo freeze\n\n### In FFmpeg\n\nFreeze 1 s at 2.0 s with a 2-frame flash and a slow 1.0→1.15 zoom on the held frame:\n```bash\nffmpeg -i in.mp4 -filter_complex \\\n\"[0:v]split[v1][v2];[v1]trim=0:2,setpts=PTS-STARTPTS,tpad=stop_mode=clone:stop_duration=1[f];\\\n [v2]trim=2,setpts=PTS-STARTPTS[r];[f][r]concat=n=2:v=1:a=0,\\\nscale=w='trunc(1280*(1+if(between(t,2,3),(t-2)*0.15,0))/2)*2':h=-2:eval=frame,crop=1280:720,\\\neq=brightness=0.7:enable='between(t,2,2.066)'[v]\" -map \"[v]\" out.mp4\n```\nSubject cut-out needs a matte (background removal) composited over the frozen frame.\n\n### In HyperFrames\n\n`npx hyperframes add beat-freeze-cut` (speed ramp, freeze hit and hard cut) plus `freeze-frame-dressing` (paper, tape and flash dressing for a frozen or background-removed subject).\n\n### In Remotion\n\n`<Sequence freeze={60}>` around the shot for the hold, a white `<AbsoluteFill>` flash for 2 frames, `scale` interpolated on the frozen layer; cut-out via an alpha video/PNG above it.\n\n### In CapCut\n\nFreeze (toolbar) → on the frozen clip add Effects (Flash, Shake) and Remove background / Cutout on a duplicated layer; add a text label; cut on the next beat.\n\n### Ready-made components\n\n- [Beat Freeze Cut](https://skills.varg.ai/component/hf.beat-freeze-cut/) (hyperframes): npx hyperframes add beat-freeze-cut\n- [Freeze-Frame Dressing](https://skills.varg.ai/component/hf.freeze-frame-dressing/) (hyperframes): npx hyperframes add freeze-frame-dressing\n- [Editorial Flash Overlay](https://skills.varg.ai/component/hf.editorial-flash-overlay/) (hyperframes): npx hyperframes add editorial-flash-overlay\n\n### Where this comes from\n\n- [FFmpeg filters: tpad](https://ffmpeg.org/ffmpeg-filters.html#tpad)\n- [Remotion: <Sequence>](https://www.remotion.dev/docs/sequence)\n- [CapCut: freeze frame (resource article)](https://www.capcut.com/resource/davinci-resolve-freeze-frame)","useWhen":["Friend-group intros, sports highlights, outfit reveals, \"that's me\" memes, on a beat hit."],"notFor":["Freezing on motion-blurred frames; using it on every cut."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/beat-freeze-cut","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Beat Freeze Cut · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.beat-freeze-cut/","license":"Apache-2.0","note":"A beat-driven speed ramp, freeze-frame hit, and hard-cut sequence for music-led promos and montages."},{"role":"component","label":"Freeze-Frame Dressing · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.freeze-frame-dressing/","license":"Apache-2.0","note":"Timeline-driven paper, tape, and flash dressing for a freeze-frame or background-removed subject"},{"role":"component","label":"Editorial Flash Overlay · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.editorial-flash-overlay/","license":"Apache-2.0","note":"Finite neutral-warm light layers for a seek-safe camera-flash cut or social reveal"},{"role":"source","label":"FFmpeg filters: tpad","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#tpad","license":"link-only"},{"role":"source","label":"Remotion: <Sequence>","kind":"link","url":"https://www.remotion.dev/docs/sequence","license":"link-only"},{"role":"source","label":"CapCut: freeze frame (resource article)","kind":"link","url":"https://www.capcut.com/resource/davinci-resolve-freeze-frame","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Freeze Transition"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.beat-freeze-cut","hf.freeze-frame-dressing","hf.editorial-flash-overlay"],"aliases":["freeze frame transition","freeze cutout","freeze + flash","character freeze","photo freeze"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a4c51ef9c413/take-freeze-transition.mp4","w":640,"h":400,"duration":5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADkklEQVR4nB1Ty24jRRStZ3d1t7v9aNtx7IzixFGCZxgELBCLkRArFizgD4bvgQU/gzQS7KIBQSTCIhPPTCZDEmziJH50u9/t7qqiTJVqc2/VuXXuPQf++P0PXAiMyHpdlBLkef7i5CIIglJFhUBcFiqRRrquO8yFECJQ7Ozs9L7+ptlsRpKqCIGllJIIiXgpHhb3zGC5qGQZ1Iu8Tkms4SRNEZAAQQAAQggDhQKprvf7/Sf7HSkF5/L/JFZHAdG37y7BxFOVX1+OGGO6RTUhU9qoEeIjKBDEgOhqEyy4aHbqTz953CBllmWJoAoCYowQJLczfzrz83A+Ho+5IV2XQdOu1esWNj3PiyPBARQQUkp1hmzbefbVl+39XlRIjnWw6QlCvCiykvx2OuJleXc3Nmzm1mrqQSHwweGTpHeoLxYPP/9SQoDhhoBtsq2WaxrGyvOppimUNqNRGCz+OvV9jyRxXBQlKMpWpxF8/m13MDDy8CrLSs21Bo+gdsyznCp2CBUCcAnPRjfz+bzXa/X3+l9sm//Mbtj5yFitiBSiKNZI0/VK5TO8fPXTcavqDIfDsYc11XBFS5YUogozm1XHrTpWbatd2ypENB1P767n4XIh1rFjUgLKnOcxQrTRaJ0fvzj588Sk2t3FMIiy5989v2+6yXLBoTBsY8vWy9WMGFANfnf6JoriIl9anFc/dIIwICXUMLPTIF6q78VRG1PT1v+9HN0l/Oz8le9LhAimRZqHK6sbBLke3jebprW8NaV8p2Xtdptj36pBknM2m4c5r4ZvV8OKs3v46QfDo/V6/fLaP5twLPPNgJUOEUZl+vRo0HUtt+EKlF7f3OQLT4mWFNZsNiOV5SUpMs/9OArDU89RidEffys1tbAkqwA7GIu1AjIYw1IcDfbQRsKIbvf9yYwlWnSbsh4GOiUBAVanWTdwFmdcmBAKAdTALbuDleSEgAASiiXT9Thf+2HcatfiJHGqdWtv8J7tE0oJzaUpCa62hKZxsRZCmc2i1EglYFrj4KNH6sMP79+AMiskurq+2u60J5OpYxmQw0lCCqe3iNTMhVQuIogEKdyuNjnsVLttxqlqBQdYWfRqUlrmTrWXuxsHsKIs2+QimPzuly8VTS+Byt49TrjgJbZ93yfzWXLwuFc4z6rKeGDTWrVUFZ8DHwC3s4cNE2nmOk13419tO+uujqUHKggi5Xsg1OWMdF/Pbv8DmkDvGpJmKasAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023) + Cosmos Laundromat (2015)","rights":"cc-by","note":"freeze between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0.","bytes":241197,"addedAt":"2026-10-28"}},{"id":"heygen-com/velocity-edit","slug":"velocity-edit","name":"Velocity Edit","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["velocity","speed","trend","tiktok","beat","ffmpeg","hyperframes","remotion","capcut"],"summary":"Trend: speed curves on every clip (fast-slow-fast) synced to the beat, often with shake and flash on hits.","description":"Built on [Beat Freeze Cut](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/beat-freeze-cut) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nEach clip rushes in, drops into slow motion on the beat and rushes out; transitions are hidden in the fast parts.\n\n**When:** Dance, car, sport, gaming and fan edits on TikTok/Reels.\n\n**Watch out:** Footage below 60 fps for the slow parts; curves that ignore the beat.\n\n**Timing:** Fast parts 2–5×, slow parts 0.2–0.5×, slow point exactly on the beat\n\n**Also called:** velocity, velocity transition, speed curve edit, Montage curve, Hero curve, Bullet curve\n\n### In FFmpeg\n\nPer clip: 3× in, 0.4× on the beat, 3× out, then concat clips (pitch kept by atempo; often the music replaces clip audio):\n```bash\nffmpeg -i clip.mp4 -filter_complex \\\n\"[0:v]split=3[s1][s2][s3];\\\n [s1]trim=0:1.2,setpts=(PTS-STARTPTS)/3[v1];\\\n [s2]trim=1.2:1.6,setpts=(PTS-STARTPTS)/0.4,minterpolate=fps=60[v2];\\\n [s3]trim=1.6:3,setpts=(PTS-STARTPTS)/3[v3];\\\n [v1][v2][v3]concat=n=3:v=1:a=0,fps=30[v]\" -map \"[v]\" -an part.mp4\n```\n\n### In HyperFrames\n\n`rate` lane in `data-automation` with points like `{t:0,v:3},{t:0.4,v:0.4},{t:0.8,v:3}`; Studio speed presets include Montage, Hero, Bullet, Jump cut, Flash in, Flash out.\n\n### In Remotion\n\nPer-frame speed function → accumulated `trimBefore` (Remotion speed-ramp snippet), with the slow point at the beat frame; add shake/flash overlays on the beat.\n\n### In CapCut\n\nSpeed → Curve → Montage / Hero / Bullet / Jump Cut / Flash In / Flash Out (or Custom), align the slow point to Beats markers, then add Shake/Flash effects on hits.\n\n### Ready-made components\n\n- [Beat Freeze Cut](https://skills.varg.ai/component/hf.beat-freeze-cut/) (hyperframes): npx hyperframes add beat-freeze-cut\n- [Beat Accent](https://skills.varg.ai/component/hf.beat-accent/) (hyperframes): npx hyperframes add beat-accent\n- [Camera Shake](https://skills.varg.ai/component/hf.camera-shake/) (hyperframes): npx hyperframes add camera-shake\n- [Motion Blur](https://skills.varg.ai/component/hf.motion-blur/) (hyperframes): npx hyperframes add motion-blur\n\n### Where this comes from\n\n- [FFmpeg filters: setpts](https://ffmpeg.org/ffmpeg-filters.html#setpts)\n- [Remotion: speed ramp snippet](https://www.remotion.dev/docs/miscellaneous/snippets/accelerated-video)\n- [HyperFrames: speed ramps](https://hyperframes.heygen.com/reference/speed-ramps)\n- [CapCut: speed curve tool](https://www.capcut.com/tools/speed-ramp)","useWhen":["Dance, car, sport, gaming and fan edits on TikTok/Reels."],"notFor":["Footage below 60 fps for the slow parts; curves that ignore the beat."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/beat-freeze-cut","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Beat Freeze Cut · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.beat-freeze-cut/","license":"Apache-2.0","note":"A beat-driven speed ramp, freeze-frame hit, and hard-cut sequence for music-led promos and montages."},{"role":"component","label":"Beat Accent · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.beat-accent/","license":"Apache-2.0","note":"A single music-hit sting: impact flash, micro scale-pulse on the subject, immediate decay."},{"role":"component","label":"Camera Shake · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.camera-shake/","license":"Apache-2.0","note":"Procedural handheld, telephoto and rig camera shake for any wrapper: nine measured profiles with per-lens projection, closed-form and seek-safe"},{"role":"component","label":"Motion Blur · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.motion-blur/","license":"Apache-2.0","note":"After Effects-style motion blur — integrates each element over a shutter window (shutter angle, phase, samples per frame) by sampling the GSAP timeline at sub-frame times and averaging equal-weight additive copies of…"},{"role":"source","label":"FFmpeg filters: setpts","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#setpts","license":"link-only"},{"role":"source","label":"Remotion: speed ramp snippet","kind":"link","url":"https://www.remotion.dev/docs/miscellaneous/snippets/accelerated-video","license":"link-only"},{"role":"source","label":"HyperFrames: speed ramps","kind":"link","url":"https://hyperframes.heygen.com/reference/speed-ramps","license":"link-only"},{"role":"source","label":"CapCut: speed curve tool","kind":"link","url":"https://www.capcut.com/tools/speed-ramp","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Velocity Edit"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.beat-freeze-cut","hf.beat-accent","hf.camera-shake","hf.motion-blur"],"aliases":["velocity","velocity transition","speed curve edit","Montage curve","Hero curve","Bullet curve"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/311cc9adf898/take-velocity-edit.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADOklEQVR4nD1U224cRRCt7q7unst6xl4TZ23ZyhIsEifCDpYIkYjE5YEf5RMQ4geIooB4QSJYikjWWkvGIbv2erw703dq/MBoRnPprlN1Tp0a9vWDgeCia6LzXoqcMfYU59uj0ZPhOQB0a1nbdT+92Z5fXv7Nt2nVXZ1VVVXocHx8XG3kXdv9+POrGCNyxigAlbTeRQiC8xMj5624l2BQlu01m8+ggGRpF2IIocV0dHjw4K6iwzojEfYP7jVNgzElSAERGYs8RkiwzKqzNryY1gT0+Pq8JHhwAnkmhAvh0/E4FzwkcD5QgZyLzw8+OZ1MMBEQQEpBCG4dIfKcI0vw50pyE9pA4VzFkGJSjLKk0WaV8eido9op0AfHwY221nF/f5/Yfbj44JwB4HkuQ/TB0xVY8C8cEoU94iULCIZFS/HDzc0MOxQCGCdlvTVKSXwzveS0Vur6ozvtcqEUBCtcazhH5xzDJDVbMW6Med/M67peGRcSA4G6KBlnOiYqb9W2eHr2L1G9ruTR0eHinykFOMFEViiUgqiahqfA6jJnxf11UtfioDi/mm2VSmCGrG8Oal1pjXmWkUxt65rG1MPRdDptr+fUYMZXTEXOialTmIbDjV1dERFVrVPLqd+OXlIg4sk5lBK/evbZYDD4/ZeXq9nFirUQbVUrrYkRR0EPuL2zMyjuUjJjE+101OaqcKaD6GNM1toYEJLAkseNXH737Rd/nZwAiHptEONKayGVLPKi3tghIK5yajNjggrxrtcrKdXcNKSPRKk0WQdwaY2fz+5/fOf5N8+8dWVRnE5eL2+WVV3v7u4yVCkGllbJpcQzUjPTObkAKFoLAhLUO/JAiPjH63d5UfjQjcfjUich08PHh+TUTJOQ4L0BDhF6HcE7YKy1vQ8FeU0hUP8ZuQmDiPjlkwOBKGmGLt7HSiuRaQmFzmK0VANhpBTJeCwxG5FMY6wniwoi2tuakKkoJDz8dWJHo02nRv3EeYkL+p565lQy0HD09tWCZDGH+hUphZFIUgp+OxBAZu5wbbFY4G9v8eneo8XgeQyRqNxSgP68PXxiKHBLnrdt+335Q58g3vyfQNCd/hBq72o2+Q++Nr6NRdhGAAAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023) + Coffee Run (2020)","rights":"cc-by","note":"stutter between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":216712,"addedAt":"2026-10-28"}},{"id":"vargHQ/ffmpeg-concat-demuxer","slug":"ffmpeg-concat-demuxer","name":"FFmpeg Concat Demuxer (Lossless)","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["ffmpeg","lossless","concat","join"],"summary":"Join files that share codec, resolution, fps and audio format without re-encoding, from a text list.","description":"Plain hard cuts; output quality identical to the inputs.\n\n**When:** Joining segments rendered by the same pipeline (same encoder settings), chunked renders, camera files from one device.\n\n**Watch out:** Mixed sources: different codecs, sizes, fps or audio sample rates give glitches, wrong durations or no audio.\n\n**Timing:** Hard cuts only; inpoint/outpoint snap to packets\n\n**Also called:** concat demuxer, -f concat, ffconcat, lossless join, stream copy join\n\n### In FFmpeg\n\n```bash\ncat > list.txt <<'EOF'\nffconcat version 1.0\nfile 'part1.mp4'\nfile 'part2.mp4'\ninpoint 1.0\noutpoint 3.0\nEOF\nffmpeg -f concat -safe 0 -i list.txt -c copy out.mp4\n```\n`inpoint`/`outpoint` work best with intra-frame codecs; with H.264 the first packets before the in-point leak in (a 2 s outpoint test gave 2.09 s). For frame-accurate trims, re-encode with the concat filter. `-safe 0` allows absolute/odd paths.\n\n### Where this comes from\n\n- [FFmpeg formats: concat demuxer](https://ffmpeg.org/ffmpeg-formats.html#concat)","useWhen":["Joining segments rendered by the same pipeline (same encoder settings), chunked renders, camera files from one device."],"notFor":["Mixed sources: different codecs, sizes, fps or audio sample rates give glitches, wrong durations or no audio."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/cuts.md#ffmpeg-concat-demuxer","repo":"vargHQ/skills","path":"varg-video-edit-library/references/cuts.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"FFmpeg formats: concat demuxer","kind":"link","url":"https://ffmpeg.org/ffmpeg-formats.html#concat","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"FFmpeg Concat Demuxer (Lossless)"},"take":{"engines":["ffmpeg"],"components":[],"aliases":["concat demuxer","-f concat","ffconcat","lossless join","stream copy join"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/90be7063a905/take-ffmpeg-concat-demuxer.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAAD7UlEQVR4nBWT3U8jVRjG55w589FpaTv9ogXaUlpYkLKGBKPGXbLund4Yo9F44Q3hxrjRxMRLL/wX9MrEmGjihcleqNHEoC6wbFjFsIhSYKVfUGhZKO10pp3pTOec49mb9+a8eZ/3eX/PAV98++nKygoW3Var7ZBmKpkMRCwI4c5mFwCYiSYb541uVySUKsjj9/v13jnGmFeG+v3+W2+8IEnS8LXTSqWCAE9a2uX0+IIK+x+9d2d7e/uHe1+Hw6HF5KRlWTcWnl9dXT0yCEKCqvrZOAeEerYZEiN3Pnx/8TWrWq3UOp1zxKOi8fPtd0bz/ulYLJZW09lXsj4M/9zaSsXVYrHo4dFYdLjR05kym+UMHImKsUT0k48/mJmfr7a/3C/t2rCXzkyhkBpiptaqv8/O5p8JvQg4/uZzk+Nx6fzk1LzyHBePUiPxDpYNw+gRHrsU4P7bb747k5+knUuXyDwNBALSZfMS2TbBGJitvmO4ErR4AB1gxcJe4oRqpwqGQ5KiRlXa7bTVYJQSDGzOKyPOtQHnJuQJM0jbqNEhHOp1HcemJvXawHegq4SQGCcCn5QcGejZ+KM9LTMeNI/r6fR4PD258eBBTwg3NPJ3EbquYCJvz8y17DMT+ZGhu5Y1cMVs7Ur55i/KSN1StevX5xS7MTYa0bsoMxb0xG6ze5WOjrDjgEBq71grOC52XQAkURzyhyhCPtTtEAAUjxIRpRAGT9FSozloPykWL+r1eq3NRZIEBdSLjqXpOpIkr0yDfiQON9nuMm+wGvAFu90u4kFQFAXFZ4uwxdF7EPGuqddKttXB5y3n5VdfZ6/3H+4kYhEkDBUKBVWp+QRPAP1ECRVoH3OE70Kf46CXZgcsHKLwiJnigMVDHl3MnVRPk6lbN2fm44lws3k1GgsxTXXmmuSRG092KuUzXK/ZDBORMSEcx2hidPhvjeWYEjgYuA7zRWjGN5EYSYuyoum9KMEeRf7vpMqOfXTwTz6fz02r6+v3iShIAuI4DkJBkgTLMhGURAEhQrGMRAoI00lmclq7rWstFsLy40P2FQYuXN94OJuZcIy2okpzU9OXfAkA4FUA61e8HuzKKDcZYK2Aw6LIu30lEc8l/bOf//hZ1VdaWloirrm1Xzir6bnc1FBILdfqx5uny8vLOBBeW1trGQUmZtn2U2t3v3cikRhV4hDyAlXTdvrufvngKlsxAFzXvBLUu7kxz28qOTHKmxelErH6pT/QaDKYsmmp0Rlg3KPetqahX38RFhafbftuUEoR52yUXR5xaCRnEfjd7oDFV0CJJXlXw6U43YvEOArk/uFXxQLhEZ9lfDiuLyUPzi7+B3dUGvRaLQwzAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Big Buck Bunny (2008) + Cosmos Laundromat (2015)","rights":"cc-by","note":"concat between two shots, with the timeline strip of the edit. Footage: Big Buck Bunny (2008), (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0.","bytes":212963,"addedAt":"2026-10-28"}},{"id":"vargHQ/ffmpeg-concat-filter","slug":"ffmpeg-concat-filter","name":"FFmpeg Concat Filter (Re-encode)","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["ffmpeg","concat","normalize","join"],"summary":"Join any sources frame-accurately by decoding, normalizing and re-encoding them in one filter graph.","description":"Plain hard cuts at exact frames, from mixed cameras, phones and AI generations.\n\n**When:** Mixed resolutions, fps or codecs; whenever trims must be frame-accurate.\n\n**Watch out:** Forgetting to normalize: concat needs matching size, SAR and pixel format per stream, and the same stream count per segment.\n\n**Timing:** Hard cuts\n\n**Also called:** concat filter, filter_complex concat, re-encode join\n\n### In FFmpeg\n\nThree segments with video + audio each, normalized to 1080×1920 at 30 fps:\n```bash\nffmpeg -i a.mp4 -i b.mp4 -i c.mp4 -filter_complex \\\n\"[0:v]scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:-1:-1,setsar=1,fps=30[v0];[0:a]aresample=48000[a0];\\\n [1:v]scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:-1:-1,setsar=1,fps=30[v1];[1:a]aresample=48000[a1];\\\n [2:v]scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:-1:-1,setsar=1,fps=30[v2];[2:a]aresample=48000[a2];\\\n [v0][a0][v1][a1][v2][a2]concat=n=3:v=1:a=1[v][a]\" -map \"[v]\" -map \"[a]\" -c:v libx264 -crf 18 -c:a aac out.mp4\n```\nInput order is segment by segment: v,a of segment 1, then v,a of segment 2. A clip without audio needs a silent stream (`anullsrc` + `atrim`) so every segment has the same streams.\n\n### Where this comes from\n\n- [FFmpeg filters: concat](https://ffmpeg.org/ffmpeg-filters.html#concat-filter)\n- [FFmpeg filters: trim](https://ffmpeg.org/ffmpeg-filters.html#trim)","useWhen":["Mixed resolutions, fps or codecs; whenever trims must be frame-accurate."],"notFor":["Forgetting to normalize: concat needs matching size, SAR and pixel format per stream, and the same stream count per segment."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/cuts.md#ffmpeg-concat-filter","repo":"vargHQ/skills","path":"varg-video-edit-library/references/cuts.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"FFmpeg filters: concat","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#concat-filter","license":"link-only"},{"role":"source","label":"FFmpeg filters: trim","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#trim","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"FFmpeg Concat Filter (Re-encode)"},"take":{"engines":["ffmpeg"],"components":[],"aliases":["concat filter","filter_complex concat","re-encode join"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/c993e5c5b3cf/take-ffmpeg-concat-filter.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADKklEQVR4nB1S23LbNhDFZQmAN5GmLkksu2nU1E2m753pTL+6X9Hnjts4nbbTumNLlmzLlEQSJG5dBg8YYLE4e87ZpZDMQgjUNIyxb6rkw3cf7vn0j8+fa5gDRF5IIUQ2/yrLc0o5ISQE92X3+IsYZ3D1bdM2QCNBfJBOSylXy/OPq3e/Xu90iCjFTKuISICJvlYyeIpBRr1HIB8sPnvngjVuaBQxgND4mgPLE6WUtM60vSEglFDIUQpVZAUF8MMQwkAZsyRY54BQ5x1nTFDPpbScIXsdy3iVRUoR7ch2fzh2IS1eCaGAAxYfdEcBMRknjAJHEpQQ5OO9C4xTSlEncR5KelpOi3PFAODP50NeLdIIiLPW9H3fIVAEoGiKKggP1KEyi0GE5ZwRgldv+g53yAQkEfOUW0JZkj81WiYTrEO5wGfnDfLnLAB+pBydhgi6ttVu1MVBoDNI3BILiyJVdPQvieOSiKbeJQK5k2OfAqag51iza3kcezZ2ync9hhAXjcc09BexOGI27Wk+n1YqcAjbzV7FSg4tEmIi0lof+rHlwEY0xiIOgIKtMSPESBpbLa21jFLYNvZCFfnF9ObTp95lgspj152OJ6FOZ2elY/GXqQnGGmSDHRuFco5w6BoEggdBDUgJfnL+13OvJq4m2eDZ474JID1hx/qRU3f1LVofdc0e/2e8T9IUsuz29j8QuXUWzUJpSWScb2CRFpFj64ddOimXKbfGwtmbu7v7/sTiJB6ak8zzoijW6421tdXpgnSv5aDtA3JZ/3t3cbFMyzkqgKTrqyrRpMsievkK55P/sz/Mcq5ZAkDN4Ha7JykjAbJKRFmmv11fl2V5/4TxXbWYi3y2r2v0C6w+Hp7N1cfLpmlgoqvpdF7RunaMFXme970ZhqHuBdZfTd9s1htK5ctLuz5IVVy6uPp7a2dJYDiqtz5bVhc3+uuszNuoPbrUWOq4w7ECjTNnQfH36hds44S9dOT2bemwU+9eGw4aeIsdyLJyt9vAli5W7398zn56dJ4R7zuHo0PGxYLBg+eB/yB/zrN85n+/+p4RKgnpCdFjShinvBdw4x/+B0bkykyhJCHsAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Spring (2019) + Coffee Run (2020)","rights":"cc-by","note":"concat between two shots, with the timeline strip of the edit. Footage: Spring (2019), Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":233393,"addedAt":"2026-10-28"}},{"id":"vargHQ/ffmpeg-xfade-chain","slug":"ffmpeg-xfade-chain","name":"FFmpeg xfade Chain for N Clips","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["ffmpeg","xfade","batch","script","slideshow"],"summary":"Chain xfade + acrossfade across N clips; offset of the k-th transition = d1+…+dk − k·T.","description":"Every join gets the same transition; total length = sum of clip durations − (N−1)·T.\n\n**When:** Batch slideshows, AI-shot sequences and reels where an agent must join many clips with transitions in one render.\n\n**Watch out:** Offsets computed from the source clips instead of the running output; and clips shorter than T.\n\n**Timing:** T usually 0.3–1.0 s; same T for every join keeps the math simple\n\n**Also called:** xfade offset math, chained xfade, acrossfade chain, slideshow transitions\n\n### In FFmpeg\n\nEach xfade's offset is measured on its first input, which is the output of the previous xfade (already shortened by (k−1)·T). So offset_k = (d1 + … + dk) − k·T. `acrossfade` overlaps audio by the same T, keeping it in sync.\n```bash\n#!/usr/bin/env bash\n# xfade-chain.sh <transition> <T> out.mp4 clip1 clip2 [clip3 ...]   (tested with ffmpeg 8.1)\nset -euo pipefail\nTR=$1; T=$2; OUT=$3; shift 3\nW=1080; H=1920; FPS=30; n=$#; i=0; off=0; f=\"\"; inputs=()\nfor c in \"$@\"; do\n  inputs+=(-i \"$c\")\n  f+=\"[$i:v]fps=$FPS,scale=$W:$H:force_original_aspect_ratio=decrease,pad=$W:$H:(ow-iw)/2:(oh-ih)/2,setsar=1,format=yuv420p,settb=AVTB,setpts=PTS-STARTPTS[v$i];\"\n  f+=\"[$i:a]aresample=48000,aformat=channel_layouts=stereo,asetpts=PTS-STARTPTS[a$i];\"\n  i=$((i+1))\ndone\nvp=v0; ap=a0; i=1\nfor c in \"${@:1:$((n-1))}\"; do\n  d=$(ffprobe -v error -show_entries format=duration -of csv=p=0 \"$c\")\n  off=$(echo \"$off + $d - $T\" | bc -l)            # offset_k = d1+..+dk - k*T\n  f+=\"[$vp][v$i]xfade=transition=$TR:duration=$T:offset=$off[vx$i];\"\n  f+=\"[$ap][a$i]acrossfade=d=$T[ax$i];\"\n  vp=vx$i; ap=ax$i; i=$((i+1))\ndone\nffmpeg -y \"${inputs[@]}\" -filter_complex \"${f%;}\" -map \"[$vp]\" -map \"[$ap]\" \\\n  -c:v libx264 -crf 18 -pix_fmt yuv420p -c:a aac -movflags +faststart \"$OUT\"\n```\nTested: 5 s + 4 s + 6 s with T = 0.5 → 14.0 s output.\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg filters: acrossfade](https://ffmpeg.org/ffmpeg-filters.html#acrossfade)\n- [FFmpeg filters: settb](https://ffmpeg.org/ffmpeg-filters.html#settb_002c-asettb)","useWhen":["Batch slideshows, AI-shot sequences and reels where an agent must join many clips with transitions in one render."],"notFor":["Offsets computed from the source clips instead of the running output; and clips shorter than T."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/transitions.md#ffmpeg-xfade-chain","repo":"vargHQ/skills","path":"varg-video-edit-library/references/transitions.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg filters: acrossfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#acrossfade","license":"link-only"},{"role":"source","label":"FFmpeg filters: settb","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#settb_002c-asettb","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"FFmpeg xfade Chain for N Clips"},"take":{"engines":["ffmpeg"],"components":[],"aliases":["xfade offset math","chained xfade","acrossfade chain","slideshow transitions"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/4f24964231a8/take-ffmpeg-xfade-chain.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADI0lEQVR4nE1T247bRgyd++hi2fKttpssNi2CBfKQPvahP9Q/6Af0L/oz/YguWqRoimQTebNZey1bsizNaIZTetMmpQBqQB2RHJ5D+uNPPyulWsmb5mRtOxrlIpDPxh694byqKuPMOM8jIjES2BeMf/QCKKGSEx9oIA6IcV4yjh+Ofe+9y+P4DKJUcWGtlVwhEiOU0hD+PfAQ0Isb2IxF/nTwNB0M6P6olU5ihqCy7oArEWnGGaGR6zFZEicjRTlj598xi3WAxrU6FyvkumjWu+4wm82y4RxDilMheBqEdy6KFefcEEWtEXghrVJBwUPZGe99pKVgTBEn0JgDzP/O3RQf3n/Nn2VZlocnfQ9gDQlAPAsk4JuBJ8ET73quq+Ox2NcAfqgk4pNUWtOKPB1jF7VrsckP/nbbiKF0WmvWEKVkdeJJoqTgOBICTHAZgHqc5SMNWqdxnEVDty3uhDul0+kkghJn2YVTXdd/dm+01aLMLi8vuWfGAT7YN3J1rI+DLKFIB8dJBxWtddzUXTBQivAuEiZjcxuxRApBexZ14dnigmbM+8Oe6HE6mYj80LR4u+AcsUB7iDV0XduZg+kZjUc8S8RddV+Ut5O/B5PpJL5M51GeUXv11XMhyW/X1381v189uXJleVvdzhgbTGd24yMl1XTAxqOHzZ70sjmRQ+lx6oF4v60OD8fqAlbTyXCj6j+KYpCZvd/FEZJ6c6hOOKHWJnVrlyHmUiPzQonlIeONJ67L1UjU3QmJRKWif/X2NXv/ZpRm1Vaq2anvuWXBO2PBorKKUBW76i1UiYtf0su2PYHj09lYZKKyVhz2O6T/k9jD2eC4P9zf381nk8ViITOrGfMEUOUeWg+wo+uHKnDzEQNU6bLJhaHGoMrO2vCc/bdgAHiyPSnWzf3mbjKdrpYrNeh66BOV9H3fQIMVX0cdlpc9FFW74CmKXfidXa5WVi0fdwf+t6pnk6dt4qMX+TfIkd3+eu5dOFS84/AJGCDILt9utwJ27NvvXuyyHzCRIP2XnYZzugErs9n8e/qL1zBLrxnDIMVVgxA+b76JLl6VN/8Ao+HeWBfOlB4AAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Coffee Run (2020)","rights":"cc-by","note":"fade between two shots, with the timeline strip of the edit. Footage: Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":286338,"addedAt":"2026-10-28"}},{"id":"vargHQ/ffmpeg-xfade-reference","slug":"ffmpeg-xfade-reference","name":"FFmpeg xfade Transition Reference","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["ffmpeg","xfade","reference","custom-expression"],"summary":"All 58 built-in xfade transitions plus custom expressions, grouped by look, with the options that matter.","description":"Fades, wipes, slides, covers/reveals, shape opens, slices, wind, squeeze, zoom, pixelize, blur.\n\n**When:** Pick a transition name for any ffmpeg join; check here before writing a custom expression.\n\n**Watch out:** Expecting camera-style effects (whip, spin, shake, glitch, light leak, 3D) from xfade; those need filter chains or GL/HTML engines.\n\n**Timing:** duration 0–60 s (default 1); offset in seconds from the first input's start (default 0)\n\n**Also called:** xfade list, xfade transitions, xfade names, xfade custom expr\n\n### In FFmpeg\n\nOptions: `transition`, `duration`, `offset`, `expr`. Both inputs must be constant frame rate with the same resolution, pixel format, frame rate and timebase.\n\nFades: fade, fadefast, fadeslow, fadeblack, fadewhite, fadegrays, dissolve (dithered), distance.\nWipes: wipeleft/right/up/down, wipetl/tr/bl/br, diagtl/tr/bl/br, smoothleft/right/up/down (soft edge).\nMoves: slideleft/right/up/down (push), coverleft/right/up/down (B over A), revealleft/right/up/down (A off B).\nShapes: circleopen, circleclose, circlecrop, rectcrop, vertopen, vertclose, horzopen, horzclose, radial (clock).\nSlices and wind: hlslice, hrslice, vuslice, vdslice, hlwind, hrwind, vuwind, vdwind.\nOther: squeezeh, squeezev, zoomin, pixelize, hblur, custom.\n\nCustom: variables X, Y, W, H, P, PLANE, A, B and a0..a3(x,y), b0..b3(x,y). P runs from 1 at the start of the transition to 0 at the end (verified), so `if(gt(X/W,P),B,A)` reveals B from the right:\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n\"[0:v]fps=30,settb=AVTB,format=yuv420p[a];[1:v]fps=30,settb=AVTB,format=yuv420p[b];\\\n [a][b]xfade=transition=custom:duration=0.6:offset=4.4:expr='if(gt(mod(Y*10/H,1),P),B,A)'[v]\" -map \"[v]\" blinds.mp4\n```\nGPU variants exist (`xfade_opencl`, `xfade_vulkan`) with a smaller set.\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)","useWhen":["Pick a transition name for any ffmpeg join; check here before writing a custom expression."],"notFor":["Expecting camera-style effects (whip, spin, shake, glitch, light leak, 3D) from xfade; those need filter chains or GL/HTML engines."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/transitions.md#ffmpeg-xfade-reference","repo":"vargHQ/skills","path":"varg-video-edit-library/references/transitions.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"FFmpeg xfade Transition Reference"},"take":{"engines":["ffmpeg"],"components":[],"aliases":["xfade list","xfade transitions","xfade names","xfade custom expr"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/4040c86aea42/take-ffmpeg-xfade-reference.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADnklEQVR4nCVTS28bVRS+r5nx2NcezzhxHnbSkDaVoFUlKkFVFizYQBEbhIrEErHMr2DHGlGxYtVNhFggULOgIIQoSKASREPVNMTNO3HleJgZe173yXX4dHR0n9895zvnwk+++ivLcpknjDFbREKI+byXZ/lwlBZ5USpZr9fTNC3OAQCg7ZXW1FTpsOHZ2eDJIy54Zbke+D6hiBMiJBFMCUuznBdVEN149erm1j4h+DSMNjY2xhmbmZnptlt5ngPMqpaYa7W6nvew/2Rh4aKzXO/1npGmpTOuFJECagsjF6C6VS3LnGD+6y8/ffvgaRRFAiII0fWLs2/fugVsUENZh84zzq6sdFdWLsl2bXB0TDysCVYCayYlATmC5SDK7q7d2dyPwzCUgCDLspSWSj5+dpTe++6j22/5LkwGJ/sHB5124+rSpYNk/MEb75GGVWowzmQieI7kqDPdWv9z8NvfOyWoGRatFcG2BFJLrXFlZ/dk448fVldX+3vb1Y5cvry8OOs1mjMTjbyKQhxUIS8tWRE8oOzm9RfXv9b9TCKMOJcGyphSBSsxJvd/3nrndvTKS9NJkly4tkQ92xFUyJwEDeRaNiodgqtVyluBR+eCugdORkBppYA2ZoqFMZYaKCWjDKzf//3mx+8u0prnUaU4KjjknESlHY/yMrWkFOQUuG7+tHecJARCqJWEAEguDJE2AGYGFARnYVStNL1GkA1AUZQZMwcg6Z0MzbbIRF4Ukqnd3c0fHzwMSxcAro3EQBvGCdFkYOJCtgY2se6tb4XDkNld02XKKWzbJp9/+ZkQnGfANCQ2/afUaBhbtosw5iMOzjGJxjwKoUnQxpU0Z1+sfTOJLkC+70+1bEop6R8dTZZMrpxTYNE6LQk0QgUBPTk+Ph5E/1MYjxAyjLTmOBYCauw3m8ELiFKtK6ltc/Lh+4tciDhUwzAUWXf7n22LOAjhYZhQr+UVynwXgZRpSBehhYUFU+7nh89HUiHg2HHeanq4ERtucqNL4jgdMDTI2eOB7PdO5zpL9SkvTmNTI8dxyrIkiGBCFHaGGR/+e+h5Xr3mVip204HdVruzMmo2Kfn07pkf+GN4QarLh6ml5920Qc19VisMRbsZXpme9nBSFLkzfoRwAThznIRWLN+HOBnrQ54UWT/bI2vfg5dfvxY3XjP52z4jLTTWeqQ1NJ8DAAtGzszsm+4dANypZGgqoAHSKj+XtQ+NS3bTdHFna+8/6DkPo/ee2/gAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Cosmos Laundromat (2015) + Big Buck Bunny (2008)","rights":"cc-by","note":"circleclose between two shots, with the timeline strip of the edit. Footage: Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0; Big Buck Bunny (2008), (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0.","bytes":211094,"addedAt":"2026-10-28"}},{"id":"vargHQ/ffmpeg-normalize-before-xfade","slug":"ffmpeg-normalize-before-xfade","name":"Normalize Clips Before xfade","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["ffmpeg","xfade","debugging","normalize"],"summary":"The #1 xfade failure: inputs differ in size, fps or timebase. Normalize every input first.","description":"No visual change; it makes the filter graph valid.\n\n**When:** Every time clips come from different sources (phone + screen recording + AI video).\n\n**Watch out:** Fixing only fps: `fps=30` alone still leaves a different timebase (1/30 vs 1/15360) and xfade still fails.\n\n**Timing:** Applies before any transition\n\n**Also called:** timebase mismatch, xfade error, do not match, settb AVTB, fps normalize\n\n### In FFmpeg\n\nErrors you will see (reproduced with ffmpeg 8.1):\n- `First input link main parameters (size 1280x720) do not match the corresponding second input link xfade parameters (size 1920x1080)`\n- `First input link main timebase (1/15360) do not match the corresponding second input link xfade timebase (1/12800)`\n\nNormalize each input (video and audio):\n```bash\n[i:v]fps=30,scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,\\\nsetsar=1,format=yuv420p,settb=AVTB,setpts=PTS-STARTPTS[vi];\n[i:a]aresample=48000,aformat=channel_layouts=stereo,asetpts=PTS-STARTPTS[ai];\n```\nAlso: variable-frame-rate phone video needs `fps=` first; still images need `-loop 1 -t <dur>` (or `loop`) to become video; clips without audio need `anullsrc` for acrossfade.\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg filters: settb](https://ffmpeg.org/ffmpeg-filters.html#settb_002c-asettb)","useWhen":["Every time clips come from different sources (phone + screen recording + AI video)."],"notFor":["Fixing only fps: `fps=30` alone still leaves a different timebase (1/30 vs 1/15360) and xfade still fails."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/transitions.md#ffmpeg-normalize-before-xfade","repo":"vargHQ/skills","path":"varg-video-edit-library/references/transitions.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg filters: settb","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#settb_002c-asettb","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Normalize Clips Before xfade"},"take":{"engines":["ffmpeg"],"components":[],"aliases":["timebase mismatch","xfade error","do not match","settb AVTB","fps normalize"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/147026e355ac/take-ffmpeg-normalize-before-xfade.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADVElEQVR4nB1T627bNhjlnbpYlq3YieMgzbq26IAN3c/t14A9wl5gb7Dn2bPsIToUS9d2LbYswXKtZMu6UiRF7nMoAiQI4vDoXPAvP//IGJNRPEtTRmieF2N1hwmuHdtuNyKYxJOJaYqbm9v1+snqeOWIJIS60SGEMEGwJxRtioJZj5J48vKb77NsXhcV4w93ph3taIdecHl68tza8b61QYLT6YxTYTHHGFMuAQh5gx4X5xzrWn14GM1lmF9du7bNhDDzw6Zpm2bIDo5erE7gorW+2vXaYUcEtooSgjiHc1gAQ1uAI6zVaLE6Q6Mjfo+t2obReLFIt2VBKWJ+/wuMYe+N7rpotWKMAN8eIec8siYIAjMY7BGLg7AsNqsgKDf3Q9tuthsuPGecEFnX/fuPf0VRzJ2ZBZIgLDm3lmmjRocx8EJmBDw9SiJYkmV/X10dTZJ5tuwwVl23qe+N1iyQzhlCZqCIwCQWkrjdzcWf5UCXy6Xgfq8U40qpwWOY7Ouzp/9cXFRNzQT/7+ZOa131zhp/Gk929a5nnXa6a9tBq8N0Udd1ErrAaSRmYJxz40GWffnFs/Pzt8zrIQnk6z/Ov331Kj0+ubq8bCyZzY/KsgQJDZjXt1r3UkoxkuUkSw6XYOnIhcGGjTQQ4W5bRIFgv5+/PV6vgeH7Dx/SkBR5rnlSqwFTaY0xn/MwjFIhKRPaj11dy/BAylA7SBDH3oJUYImEr/HkeltHi+weIFoiRAju6dFqNQBQ4sg0iLz3jEel6nvvs4c7Ppn0NgJaTGLBBTVmW+QsXZ+NkJNcIc8xR0RwbJAQfKgqhnEUhZwx2CtjHKNZOrW1q1WX90UcRZcP26RMQopbCE04QvbqOBJtTRwVnfGq1wTzSBBw1lh7c3t7Gk5U1YooDiUdBVXWUESrsimVsVhf1/lslgI7pXzHgmT0yjoPzXFOeUebpqKUPj15kue5kXIE7HThw2hbfK6qKohivOdPQQR4HrGA/fa6gFw4e1rRhcQUI+xjj+Ko1DuQJtR6+eyrhGwhWbF6440PfZUeCIJzaOt8ikEpNJvW9SV789F8d/x8J39AS9RAQB5HAWVZQT38J1SUcvlT8iu0fLb5xCiDa4+D7NuP9qUdBH337t//AZyl96H9HugWAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Tears of Steel (2012) + WING IT! (2023)","rights":"cc-by","note":"dissolve between two shots, with the timeline strip of the edit. Footage: Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":400814,"addedAt":"2026-10-28"}},{"id":"vargHQ/ffmpeg-audio-crossfade-jl","slug":"ffmpeg-audio-crossfade-jl","name":"Audio Crossfades, J and L in FFmpeg","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["ffmpeg","audio","j-cut","l-cut","crossfade"],"summary":"Crossfade audio with acrossfade, or build J/L-cuts by delaying one track with adelay and mixing with amix.","description":"Sound changes smoothly or leads/trails the picture cut.\n\n**When:** Every join with dialogue or music; J/L-cuts for interviews and scene changes.\n\n**Watch out:** amix's default normalization halves levels per input; set `normalize=0` and control gain yourself.\n\n**Timing:** Crossfade 0.05–1 s; J/L lead or tail 0.3–2 s\n\n**Also called:** acrossfade, afade, adelay amix, audio split edit, audio overlap\n\n### In FFmpeg\n\nCrossfade (overlap by d, curves from afade: tri, qsin, hsin, esin, log, exp…):\n```bash\n[0:a][1:a]acrossfade=d=0.5:c1=tri:c2=tri[a]\n```\nJ-cut (B's audio 1 s before B's picture, cut at 4 s):\n```bash\n[0:a]atrim=0:4,asetpts=PTS-STARTPTS,afade=t=out:st=3.4:d=0.6[aa];\n[1:a]atrim=0:4,asetpts=PTS-STARTPTS,afade=t=in:d=0.3,adelay=3000:all=1[ab];\n[aa][ab]amix=inputs=2:normalize=0:duration=longest[a]\n```\n`adelay` takes milliseconds per channel (`1500|500`), `S` suffix for samples, `s` for seconds; `all=1` applies one delay to all channels.\n\n### Where this comes from\n\n- [FFmpeg filters: acrossfade](https://ffmpeg.org/ffmpeg-filters.html#acrossfade)\n- [FFmpeg filters: adelay](https://ffmpeg.org/ffmpeg-filters.html#adelay)\n- [FFmpeg filters: amix](https://ffmpeg.org/ffmpeg-filters.html#amix)","useWhen":["Every join with dialogue or music; J/L-cuts for interviews and scene changes."],"notFor":["amix's default normalization halves levels per input; set `normalize=0` and control gain yourself."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/cuts.md#ffmpeg-audio-crossfade-jl","repo":"vargHQ/skills","path":"varg-video-edit-library/references/cuts.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"FFmpeg filters: acrossfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#acrossfade","license":"link-only"},{"role":"source","label":"FFmpeg filters: adelay","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#adelay","license":"link-only"},{"role":"source","label":"FFmpeg filters: amix","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#amix","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Audio Crossfades, J and L in FFmpeg"},"take":{"engines":["ffmpeg"],"components":[],"aliases":["acrossfade","afade","adelay amix","audio split edit","audio overlap"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/96126c63b093/take-ffmpeg-audio-crossfade-jl.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADwklEQVR4nBVUyW4jVRR99erVPLg8pOw4juMknZjuSCGwaKFeNQIJCXaI7Fn3d7FASCCCxAKxIfQClKi7kboTMrdjx7Nd8/Tq1UBxV3dxdXTOufdc6tuv9xmG4YRyu91WFeXi8tIbvYEQzmPm+roPOV5V1ZrCmJa1Um3KsgSRyiAmBRQAAGUZw6Ac5vf9PkpzWNWqX37zotVqzYdLsfTBu5eW63p54NEA7D15Jkni+9HDzCeNuiAr1ZTiIEUxNJdnOUxxAQfpHMcxGhtRd39rXdP652ep5XRk0d/cHY6GM9PZ6Wx89ckzwzBnhhW4wWxp6811GocIoQwKOZXTgC4qwF4Bjcwg73QPQBwLNMIwdYwJL1V2uisPw34haqe55sjK1WzyLsuM+UIV5ZIiRVG4zAq6eZIkkiT5BXfIoJVa+e72uivyN+fnrmmMRyPIhCzLsLzsePj3P/8oXKACd62k0GxaUUSQUmmcsYgvRGUJBlmOMSlMRo1W56+T1x/VW9u7TyY3FyQI397d+J6nyhIDQBpFLCWoDLNWKQfe1dXpbyOH7XZ3WRFmecaJgm3bGEoRiNDhp8+Pj48fJmOKQa/PzghJ+kscRWmn3p5MxiZvRiScLJeO7+qltmfHTRVUWJxJcjEJUrK79ej5Z18cHR0hbLu6qn3304+Hh4cbewenJ6cW4bd394zlDOTIi/yFtTAdk0KgJTcURamtNZI0CVQFY0yTfLW+Ouv1dFlG3x8d7e9/6Ef+L78ebVVKvft7zK8swtiheYJo5/ZaEkUVgVKplEdkajw0Nj6GMHMTwiKBAinLiYokllUFTTP+n6Gxuv344uIi9pxypZYEuY+j0XLhem49DNVKVWQ5RSmPDMeLcfPkpF7X7TIbhoEoMXOJY0J33O+hzsFT13WdySBneFbgkhxSxTI5PglcOiGqKDbr9VGvz1IwzhKtsZL46dIyB4Yty/LJ239bD60qC6fTKSrFC2851MvafDQkiE8yCns2ZpHEAoqQmKL+fvPqgBexZQiVVb3ERXnqebbpTYf3vR7BIWu/Gt4UqUAC8GUYEU5NkigkUnFBJA6CAJnTaVnT2g19MBjkeiuwrEq5ySr1O+v9fDFXajVAR8geEYwzJANWRT+/HOi6Tvj1fEXwBS6gKG3joIgxnXdDhl1U1zBtCcKJpmubmk2SJY/ut9qMgAKhLrQITFI73aj5/gJd3sbq6qbNP+U2YQ5AYVBGUUUWpVoRAjBIY07jxvSjoh+nRgqzzx//UPwAifQBMCnq/x9A2Mr5+fg/Itr/vpJHruAAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Tears of Steel (2012) + Charge (2022)","rights":"cc-by","note":"cut between two shots, with the timeline strip of the edit. Footage: Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0; Charge (2022), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":196540,"addedAt":"2026-10-28"}},{"id":"gl-transitions/gl-transitions-ffmpeg-editly","slug":"gl-transitions-ffmpeg-editly","name":"GL Transitions via editly or FFmpeg","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["glsl","gl-transitions","editly","ffmpeg","server"],"summary":"Run any of the ~125 GLSL gl-transitions between clips: editly (no custom build) or a patched FFmpeg.","description":"Built on [Cube](https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Cube.glsl) by gre (gl-transitions), MIT. The write-up and recipes below are varg's.\n\nCube, page curl, doorway, morph, burn, glitch and other shader transitions xfade cannot do.\n\n**When:** Server-side batch renders that need 3D or organic transitions without a browser.\n\n**Watch out:** Mixing name sets: editly depends on gl-transitions 1.x (`crosswarp`, `cube`), the 2.0 catalog uses PascalCase (`CrossWarp`, `Cube`).\n\n**Timing:** 0.5–1.0 s typical\n\n**Also called:** gltransition filter, ffmpeg-gl-transition, editly, ffmpeg-concat, GLSL transitions\n\n### In FFmpeg\n\nFFmpeg itself has no GL transitions. Option 1, editly (Node, standard ffmpeg):\n```js\nimport editly from 'editly';\nawait editly({\n  outPath: 'out.mp4',\n  defaults: { transition: { name: 'crosswarp', duration: 0.5 } },\n  clips: [\n    { layers: [{ type: 'video', path: 'a.mp4' }] },\n    { transition: { name: 'cube', duration: 1, params: { persp: 0.5 } }, layers: [{ type: 'video', path: 'b.mp4' }] },\n    { layers: [{ type: 'video', path: 'c.mp4' }] },\n  ],\n});\n```\n`transition` on a clip applies between it and the next; also `random`, `dummy`, `directional-left|right|up|down`.\nOption 2, the third-party `gltransition` filter (rebuild FFmpeg with the patch, needs an OpenGL/EGL context):\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \"gltransition=duration=1:offset=2:source=CrossWarp.glsl\" out.mp4\n```\nThe filter sets only `progress` and `ratio`; bake parameter uniforms into constants, and transitions that need extra textures do not work.\n\n### Ready-made components\n\n- [Cube](https://skills.varg.ai/component/glt.cube/) (gl-transitions): npm install gl-transitions\n- [CrossZoom](https://skills.varg.ai/component/glt.cross-zoom/) (gl-transitions): npm install gl-transitions\n- [DirectionalWarp](https://skills.varg.ai/component/glt.directional-warp/) (gl-transitions): npm install gl-transitions\n- [Doorway](https://skills.varg.ai/component/glt.doorway/) (gl-transitions): npm install gl-transitions\n- [InvertedPageCurl](https://skills.varg.ai/component/glt.inverted-page-curl/) (gl-transitions): npm install gl-transitions\n- [FilmBurn](https://skills.varg.ai/component/glt.film-burn/) (gl-transitions): npm install gl-transitions\n\n### Where this comes from\n\n- [editly](https://github.com/mifi/editly)\n- [ffmpeg-gl-transition (third-party filter)](https://github.com/transitive-bullshit/ffmpeg-gl-transition)\n- [GL Transitions gallery](https://gl-transitions.com)\n- [gl-transitions 2.0 changelog (renames)](https://github.com/gl-transitions/gl-transitions/blob/master/packages/gl-transitions/CHANGELOG.md)","useWhen":["Server-side batch renders that need 3D or organic transitions without a browser."],"notFor":["Mixing name sets: editly depends on gl-transitions 1.x (`crosswarp`, `cube`), the 2.0 catalog uses PascalCase (`CrossWarp`, `Cube`)."],"publisher":{"name":"gre · GL Transitions","handle":"gl-transitions","kind":"community","verified":false,"url":"https://github.com/gl-transitions","avatar":"https://github.com/gl-transitions.png"},"source":{"url":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Cube.glsl","repo":"gl-transitions/gl-transitions","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Cube · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.cube/","license":"MIT","note":"Both shots sit on the faces of a 3D cube that turns over a glossy floor reflection"},{"role":"component","label":"CrossZoom · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.cross-zoom/","license":"MIT","note":"The first shot rushes into a radial zoom blur that bursts open and resolves on the next shot"},{"role":"component","label":"DirectionalWarp · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.directional-warp/","license":"MIT","note":"A diagonal wipe whose leading edge smears and stretches the pixels it passes over"},{"role":"component","label":"Doorway · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.doorway/","license":"MIT","note":"The first shot splits and swings open like double doors as the next shot comes forward"},{"role":"component","label":"InvertedPageCurl · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.inverted-page-curl/","license":"MIT","note":"The first shot peels back from the corner like a curling page, revealing the next beneath"},{"role":"component","label":"FilmBurn · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.film-burn/","license":"MIT","note":"Warm, glowing film-burn light leaks wash over the shot and fade out on the next"},{"role":"source","label":"editly","kind":"link","url":"https://github.com/mifi/editly","license":"link-only"},{"role":"source","label":"ffmpeg-gl-transition (third-party filter)","kind":"link","url":"https://github.com/transitive-bullshit/ffmpeg-gl-transition","license":"link-only"},{"role":"source","label":"GL Transitions gallery","kind":"link","url":"https://gl-transitions.com","license":"link-only"},{"role":"source","label":"gl-transitions 2.0 changelog (renames)","kind":"link","url":"https://github.com/gl-transitions/gl-transitions/blob/master/packages/gl-transitions/CHANGELOG.md","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"GL Transitions via editly or FFmpeg"},"take":{"engines":["ffmpeg"],"components":["glt.cube","glt.cross-zoom","glt.directional-warp","glt.doorway","glt.inverted-page-curl","glt.film-burn"],"aliases":["gltransition filter","ffmpeg-gl-transition","editly","ffmpeg-concat","GLSL transitions"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/c62b6d8fdbea/lib-gl-transitions-cube.mp4","blur":"https://s3.varg.ai/how-to/previews/8b26b3e3e1e1/lib-gl-transitions-cube.webp","source":"https://s3.varg.ai/how-to/previews/c62b6d8fdbea/lib-gl-transitions-cube.mp4","page":"https://gl-transitions.com/editor/Cube","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","rights":"publisher-site","note":"Preview of the Cube component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"vargHQ/moviepy-crossfade","slug":"moviepy-crossfade","name":"MoviePy Crossfade and Slide","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["python","moviepy","crossfade"],"summary":"In MoviePy v2, crossfade with vfx.CrossFadeIn plus negative padding (or with_start in a CompositeVideoClip).","description":"Crossfades and simple slide-ins from Python.\n\n**When:** Python pipelines that already use MoviePy; quick prototypes.\n\n**Watch out:** v1 syntax (`crossfadein`, `set_start`, `subclip`) on MoviePy 2.x; and slow renders of long timelines.\n\n**Timing:** Any; T = 0.5 s in the example\n\n**Also called:** moviepy, CrossFadeIn, concatenate_videoclips padding, CompositeVideoClip\n\n### In MoviePy\n\nTested with MoviePy 2.2.1 (5 s + 4 s, T = 0.5 → 8.5 s):\n```python\nfrom moviepy import VideoFileClip, CompositeVideoClip, concatenate_videoclips, vfx, afx\nT = 0.5\na = VideoFileClip('a.mp4').subclipped(0, 5).with_effects([afx.AudioFadeOut(T)])\nb = VideoFileClip('b.mp4').subclipped(0, 4).with_effects([vfx.CrossFadeIn(T), afx.AudioFadeIn(T)])\nout = concatenate_videoclips([a, b], method='compose', padding=-T)\n# same thing explicitly:\n# out = CompositeVideoClip([a, b.with_start(a.duration - T)])\nout.write_videofile('out.mp4', fps=30)\n```\n`CrossFadeIn` only works inside a composite (it fades the clip's mask). Other effects: `vfx.SlideIn(duration, side)`, `vfx.SlideOut`, `vfx.FadeIn/FadeOut` (through black), `vfx.Freeze`, `vfx.MultiplySpeed`.\n\n### Where this comes from\n\n- [MoviePy v2 video effects (CrossFadeIn, SlideIn)](https://github.com/Zulko/moviepy/tree/master/moviepy/video/fx)","useWhen":["Python pipelines that already use MoviePy; quick prototypes."],"notFor":["v1 syntax (`crossfadein`, `set_start`, `subclip`) on MoviePy 2.x; and slow renders of long timelines."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/transitions.md#moviepy-crossfade","repo":"vargHQ/skills","path":"varg-video-edit-library/references/transitions.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["Python + MoviePy"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"MoviePy v2 video effects (CrossFadeIn, SlideIn)","kind":"link","url":"https://github.com/Zulko/moviepy/tree/master/moviepy/video/fx","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"MoviePy Crossfade and Slide"},"take":{"engines":["moviepy"],"components":[],"aliases":["moviepy","CrossFadeIn","concatenate_videoclips padding","CompositeVideoClip"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/4f0134d407bb/take-moviepy-crossfade.mp4","w":640,"h":400,"duration":4.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADRElEQVR4nDVT224jRRTs07e5ZnxJ7MRxvNGyCwgipAjxiEQekfiz5Zv4AhBCQtogIbGLRLLeOB6PxzPj6TtnHrZnHrpb3XWqquvA9avvi6KIiCCE8MXi7u6ue/W1994BDSGs7PrnN2/GT7/c3l79+7Due7tYTPfVXtD42B05l1rrQPzics4po4CfB87Z9Wr2zVcvtxwRiAVEhlPHT6WPMtL3/XgSG2MfPlRSykONUyxujPFGEw4dF1ziD94vri5+vPs2Y20IWkjpPXPWCVCFdF1gf//zPJ5y5B6CaxpFPdfKu0CtJSSQuj5yxihyWc7Obm9vltfLpm1sT8AEwghhlDrPOaGUKuUe/rNmrrMk2rZmOsu2ZWVbjygU6feOC2ARE0mSAbBdeUjTLIpJCN5bh9oiJr1y1cYAEC5JU3c8ZkyCsVZr4gwZynDiPRkYCcGbwEyU/fm+jRNHeSiKk/LjJo7j00JNgPt0sK3E8wFSYdIivnkxfZ76WukoimLpAYAnUl6en9P50rKo6fSht6ipqnRvA1dKbtZcTs+zKaq7XCocX2QEL/8we/2+Zb9PS9yXENBpTqUXKZTlY1tvQpSvVi+cTHXfO8qMtuHYzPJka02521U9HR5S+/k8LQ/rbl3/JVrG+UlhszTj2mvrDef5fr9PpzEar6ymlBHn8VqVJL8+Pmy2O5yz2qeZWI/IWpV/PNc22Az8eJLMCh7HYiCFh07ns3xUVK0aagIMeQSBE0xb3fVoe5ZBnIY0YaOTgN7lKTIWqjeEqL5D0mfoUcQIeBbNlxfPb99i8FicY1gQEQ0O0Fytpg2gL3BxFqdZymhPKQjMMWV5RAGoVs6GmnsgbX+cqJbrOI9Yu38eJSfk07DE4m5xiU8iBVVpysZ5jBCYD4w2pQnaD8IaW/GnzUYZcx2Bq959NlodDvtaPCVJ7FnKUTWQoZs0ZjQEwavWdIo4h4oxpRgcOBxMd9SMMf5h10dF/NvxYrDTRlKebN/t0iQFEdCjUdhdzG/OF03XdtnxnhAd3KBYcOqD61uVEydGeYcNvN2zzycvH8V33nnAyppQNt9rEvqhazfw5Ww2+6m4Vyq6VBqhQ2CfdOMKO40oOb6/L/8H9hvFeFmfiowAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Sprite Fright (2021) + WING IT! (2023)","rights":"cc-by","note":"slideright between two shots, with the timeline strip of the edit. Footage: Sprite Fright (2021), Blender Studio | studio.blender.org, CC BY 4.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":273028,"addedAt":"2026-10-28"}},{"id":"vargHQ/remotion-transitionseries","slug":"remotion-transitionseries","name":"Remotion TransitionSeries","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["remotion","react","transitionseries"],"summary":"Sequence scenes with <TransitionSeries>; each transition overlaps its neighbours, so the video gets shorter.","description":"Any built-in or custom presentation between React scenes.\n\n**When:** Remotion projects; data-driven videos where scenes are components.\n\n**Watch out:** Forgetting that 40 + 60 frames with a 30-frame transition is 70 frames, not 100; and placing two transitions next to each other.\n\n**Timing:** linearTiming({durationInFrames}) or springTiming({config:{damping:200}}) (~23 frames at 30 fps)\n\n**Also called:** @remotion/transitions, TransitionSeries, linearTiming, springTiming, presentations\n\n### In Remotion\n\n```tsx\nimport {TransitionSeries, linearTiming, springTiming} from '@remotion/transitions';\nimport {fade} from '@remotion/transitions/fade';\nimport {slide} from '@remotion/transitions/slide';\n\nexport const Edit = () => (\n  <TransitionSeries>\n    <TransitionSeries.Sequence durationInFrames={40}><A /></TransitionSeries.Sequence>\n    <TransitionSeries.Transition presentation={fade()} timing={linearTiming({durationInFrames: 30})} />\n    <TransitionSeries.Sequence durationInFrames={60}><B /></TransitionSeries.Sequence>\n    <TransitionSeries.Transition presentation={slide({direction: 'from-right'})} timing={springTiming({config: {damping: 200}})} />\n    <TransitionSeries.Sequence durationInFrames={90}><C /></TransitionSeries.Sequence>\n  </TransitionSeries>\n);\n// total = 40 + 60 + 90 - 30 - 23 = 137 frames; compute with timing.getDurationInFrames({fps})\n```\nRules: a transition may not be longer than either neighbour; no two transitions (or overlays) adjacent; a transition can be first/last to animate an entrance/exit; default presentation is `slide()`.\n\nBuilt-ins in @remotion/transitions 4.0.539: CSS (work everywhere) `fade`, `slide`, `wipe`, `flip`, `clockWipe`, `iris`, `none`, `pushCut`; shader/HTML-in-canvas `blurSlide`, `bookFlip`, `crossZoom`, `crosswarp`, `dissolve`, `dreamyZoom`, `filmBurn`, `linearBlur`, `ripple`, `swap`, `zoomBlur`, `zoomInOut`. Each imports from `@remotion/transitions/<kebab-name>`. Shader presentations are built on Remotion's HTML-in-canvas: renders work out of the box (`--gl=angle`, or `--gl=swangle` without a GPU); the Studio preview needs Chrome with `chrome://flags/#canvas-draw-element` enabled.\nThere is no `cube` presentation; use `@gl-transitions/remotion`.\n\n### Where this comes from\n\n- [Remotion: <TransitionSeries>](https://www.remotion.dev/docs/transitions/transitionseries)\n- [Remotion: presentations](https://www.remotion.dev/docs/transitions/presentations)\n- [Remotion: timings](https://www.remotion.dev/docs/transitions/timings)\n- [Remotion: crossZoom (HTML-in-canvas)](https://www.remotion.dev/docs/transitions/presentations/cross-zoom)","useWhen":["Remotion projects; data-driven videos where scenes are components."],"notFor":["Forgetting that 40 + 60 frames with a 30-frame transition is 70 frames, not 100; and placing two transitions next to each other."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/transitions.md#remotion-transitionseries","repo":"vargHQ/skills","path":"varg-video-edit-library/references/transitions.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["Remotion"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"Remotion: <TransitionSeries>","kind":"link","url":"https://www.remotion.dev/docs/transitions/transitionseries","license":"link-only"},{"role":"source","label":"Remotion: presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"},{"role":"source","label":"Remotion: timings","kind":"link","url":"https://www.remotion.dev/docs/transitions/timings","license":"link-only"},{"role":"source","label":"Remotion: crossZoom (HTML-in-canvas)","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations/cross-zoom","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Remotion TransitionSeries"},"take":{"engines":["remotion"],"components":[],"aliases":["@remotion/transitions","TransitionSeries","linearTiming","springTiming","presentations"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a67890842875/take-remotion-transitionseries.mp4","w":640,"h":400,"duration":4.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADkklEQVR4nDVSS3MbRRCe5+5qJUtaW7IelpCt2FYoKpBQ4Ua5cuTCnQO/hDv/gB/BkcoJClIhVBkqlXLhxE6MhWUrsvWwvKvVrqTdHe3ODGMDc+jpmp7++uuvG37z7UkYRV88XEAIAVkbDAavhtrh68MH98bNraYM1wAAHoMX3YvV0iOMyeDvV63dVqHFbdtxatbEcT6egGqlShIBMKFhAnVdv5kldgjmIUNE/3CzfL9VN0Sp0zk/eX91edWt1h8hJKwUsNJwq1VHhliB6TyNd3SM3IhQDDlECBjj6+mz39/VarVMJsMYe3k2/+umXdC719ej65E7mw0vu88Nw7C0oJALy+MgGgcFAQhOpVK03x8QJH0rn2NzbeHCqnU/BcwZm4KQHRy2E84zAEop9z5rpWkczKZxRLIZosqCqV+kuhTx5k5j6UcL7hPGKOdGz/Er1d3EdLPZFfvYZlN/4d1ghKcCKo3+2H+rOKryyu9TcNqxcyZQUkiAwY8vCNY4F0Q3Fpquk2T9/GxiT2W1amazhpQsDoaCYABugfpDAdGto85EQDEUiVSzgToxlVWUlSVUkxDFAHvN7TVjPKrVxNHREnEJAQfy31xw28vdkUKqyWiICgmE4IauNEJSKBxEGp/XCMaa4FQD27wYL+cPP9ho7n0Vx1+q+MBzKaWrqZSQCvUWT95RS+6YckSVFXftk3ReUxdW36DEkC78kKffz7hTztWVXuFlDiG8Xckr/hyo4v/BMZLM5/Oh+8Y0zYL1qXonOLQpoQJmVTimcGg7/evRxfnFR5vtRqMRsG0EYRKk1Yaowkpy9VnptQTe5aAzYW0yp4Rb+bxFsGBQJAKZKiEF9Aym4M/VXVqSQfvseCrzb4UQk9inVEv4mu3YjfVdJBCUSCaAxQIRFIRTy0qTnuNUyhUdCIzx8dVv7c5pa+NxFEWh2BRLtmAXnPOfX+8rperrJbWQnG8hQijQkSD9nt9oWC44kfaIeF5acLlVHUdBsn904DhOtDbf2dmJIpgprMws1O32rpihJHkQZFutOtZVm1hgWCjfM0+vOod+aTdOsCS/fP9sfb30splz3UnPxwiVD/y4bQ8LWCoWGvU20pW8PvaZnx78sJiuTlZ+VdNMIGJR9Ik/97ypbPPwTUSe//T08ZMn7mQPAFODVX63L95ITiQWQprSLRaLX+e+i5OkGLwALlj+v1xZCCgCCjSc1d+d9P4BYBXjsz7APGcAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Coffee Run (2020)","rights":"cc-by","note":"slideup between two shots, with the timeline strip of the edit. Footage: Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":275942,"addedAt":"2026-10-28"}},{"id":"Remocn/remotion-overlay-cut","slug":"remotion-overlay-cut","name":"Remotion Overlay on a Cut","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cuts","tags":["remotion","overlay","light-leak","flash"],"summary":"Keep a hard cut but draw something over it (flash, light leak, SFX graphic) without shortening the video.","description":"Built on [Light Leak](https://remocn.dev/r/light-leak.json) by Kapish Dima (remocn), MIT. The write-up and recipes below are varg's.\n\nA hard cut hidden under a short overlay centred on the cut point.\n\n**When:** Light leaks, flashes, whoosh graphics and stickers on cuts where the timing must not change.\n\n**Watch out:** Putting an overlay next to a transition or another overlay (not allowed).\n\n**Timing:** Overlay 8–30 frames, centred on the cut; shift with offset\n\n**Also called:** TransitionSeries.Overlay, cut overlay, light leak overlay, flash on cut\n\n### In Remotion\n\nRequires v4.0.415+:\n```tsx\nimport {TransitionSeries} from '@remotion/transitions';\nimport {lightLeak} from '@remotion/effects/light-leak';\nimport {Solid, interpolate, useCurrentFrame} from 'remotion';\n\nconst Leak = () => {\n  const f = useCurrentFrame();\n  return <Solid width={1920} height={1080} effects={[lightLeak({seed: 3, progress: interpolate(f, [0, 30], [0, 1], {extrapolateRight: 'clamp'})})]} />;\n};\n\n<TransitionSeries>\n  <TransitionSeries.Sequence durationInFrames={90}><A /></TransitionSeries.Sequence>\n  <TransitionSeries.Overlay durationInFrames={30}><Leak /></TransitionSeries.Overlay>\n  <TransitionSeries.Sequence durationInFrames={90}><B /></TransitionSeries.Sequence>\n</TransitionSeries>\n// total stays 180 frames\n```\n`offset` (default 0) moves the overlay earlier (negative) or later. `lightLeak()` uses WebGL2.\n\n### Ready-made components\n\n- [Light Leak](https://skills.varg.ai/component/remocn.light-leak/) (remocn): npx shadcn@latest add @remocn/light-leak\n- [Editorial Flash Overlay](https://skills.varg.ai/component/hf.editorial-flash-overlay/) (hyperframes): npx hyperframes add editorial-flash-overlay\n\n### Where this comes from\n\n- [Remotion: <TransitionSeries>](https://www.remotion.dev/docs/transitions/transitionseries)\n- [Remotion: lightLeak() effect](https://www.remotion.dev/docs/effects/light-leak)","useWhen":["Light leaks, flashes, whoosh graphics and stickers on cuts where the timing must not change."],"notFor":["Putting an overlay next to a transition or another overlay (not allowed)."],"publisher":{"name":"Kapish Dima · remocn","handle":"Remocn","kind":"community","verified":false,"url":"https://remocn.dev","avatar":"https://github.com/Remocn.png"},"source":{"url":"https://remocn.dev/r/light-leak.json","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["Remotion"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Light Leak · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.light-leak/","license":"MIT","note":"A warm analog light leak drifts in from an edge and blows the frame out to near-white at the cut, then cools off to reveal the next scene."},{"role":"component","label":"Editorial Flash Overlay · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.editorial-flash-overlay/","license":"Apache-2.0","note":"Finite neutral-warm light layers for a seek-safe camera-flash cut or social reveal"},{"role":"source","label":"Remotion: <TransitionSeries>","kind":"link","url":"https://www.remotion.dev/docs/transitions/transitionseries","license":"link-only"},{"role":"source","label":"Remotion: lightLeak() effect","kind":"link","url":"https://www.remotion.dev/docs/effects/light-leak","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":20,"text":"Remotion Overlay on a Cut"},"take":{"engines":["remotion"],"components":["remocn.light-leak","hf.editorial-flash-overlay"],"aliases":["TransitionSeries.Overlay","cut overlay","light leak overlay","flash on cut"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a163ea7bc613/take-remotion-overlay-cut.mp4","w":640,"h":400,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAAC60lEQVR4nE1TTW8jRRCtqq7xfNmRnQjZiROzQQKtxIXdGxckfgy/gisnfgY3DvwLJCTEhgOrwK520cISJUDirMfxZNrT3UX12I7oQ8su1bx679VrtN98VVWVvTwZjfarz/YmR4eL1Lm2NUIAEIBRD+XGGI8Iu2MEQpDNb5FWRLgurrmAPbbz+Xlz9jE0J/5Rw5wIeG1Cku7zoJ8hRGgi2vzvQIJCgDhtYUXXgn3vKjvwg1rWf72oLnqz2WzxQdcqyshsR0PYQoqio94GMXTT9GIRp0OCCdwj7P/j9To/qa4valceHU2rvZWIB9F+2smiSFE8Rj6wUxdYyJseAfeQ8N7dDMpB//37xeLS/Dxt33DzFEejYc3roPOQH3j9/yiVyAg7MzfQhjLXYlveZiXkRTK//cP+tJ/MhuGxJJyopIf5GzhElh1ZtZW1INFEZiOtv4fOXjt8m/bd4Gp0c/5rXQ1np48Wh3edtRu4rdJIImIBO+ezLAGjxqGza0PkwUYBBkjLB5eYrYo3fHf1qn6Sj8eTKl8qHInvdka4ywS3QhmnJu/X9Up3TZSEtvXOo/EJs81XnEORrufzv8OPkzBO3SdS9vsN1XFrUefWKWYu1JckQfKsidAobo1oa4GEBhmRafhtMQJz2yztS/dykhyk7lTLFEL7YD/HXYix1kaHOIuWmzRYi+4OyAQHxGi4pw1YvqY87C8Gq39v6lV5OJ2+G67UCoQsJhvFqz0xFYSURMG+DcjqJQetBBvWViPHCL5nkyQJ9jdAm56d3j1f2U+H46PpIl3qCrhktc3n+TAED7w2vZ5S9T4ADYxydDHH1iV6F720ae59+Y5LKL1dLq/lbA8uHT0ldY2//PbF8fFxm+8bYmExhr1QEKO+dxvR12o+pB9U+MBdKVCwrSZF8FmUs3z2y+s1/D5x3vPX3108+fyjavhYaSTgYii6bazjSwQUZ5i/KL4vynLsn0fh3dvsXhgCOp3V/Dk9P7/4D8vfk0JvXG1NAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Spring (2019) + Cosmos Laundromat (2015)","rights":"cc-by","note":"light-leak between two shots, with the timeline strip of the edit. Footage: Spring (2019), Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0; Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0.","bytes":257610,"addedAt":"2026-10-28"}},{"id":"vargHQ/remotion-custom-presentation","slug":"remotion-custom-presentation","name":"Remotion Custom Presentation","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["remotion","custom","react","shader"],"summary":"Write your own transition as a component that receives progress (0→1) and whether it is entering or exiting.","description":"Anything CSS can do (scale, rotate, clip-path, blur), or a WebGL shader via HTML-in-canvas.\n\n**When:** Pull-out zooms, spins, splits, brand-specific moves missing from the built-ins.\n\n**Watch out:** Non-absolute layouts inside scenes; both scenes are stacked during the overlap and must stay absolutely positioned.\n\n**Timing:** Whatever timing you pass to the Transition\n\n**Also called:** TransitionPresentation, presentationProgress, makeHtmlInCanvasPresentation, custom transition\n\n### In Remotion\n\n```tsx\nimport type {TransitionPresentation, TransitionPresentationComponentProps} from '@remotion/transitions';\nimport {AbsoluteFill} from 'remotion';\n\ntype P = {maxScale: number};\nconst PullOut: React.FC<TransitionPresentationComponentProps<P>> = ({children, presentationDirection, presentationProgress: p, passedProps}) => {\n  const s = presentationDirection === 'exiting'\n    ? 1 - (1 - 1 / passedProps.maxScale) * p          // A shrinks\n    : passedProps.maxScale - (passedProps.maxScale - 1) * p; // B settles from big\n  return <AbsoluteFill style={{transform: `scale(${s})`, opacity: presentationDirection === 'entering' ? p : 1}}>{children}</AbsoluteFill>;\n};\nexport const pullOut = (props: P): TransitionPresentation<P> => ({component: PullOut, props});\n// <TransitionSeries.Transition presentation={pullOut({maxScale: 1.4})} timing={linearTiming({durationInFrames: 12})} />\n```\nFor a GPU shader, `makeHtmlInCanvasPresentation(shader)` (exported from @remotion/transitions) wraps a function that receives `prevImage`, `nextImage`, `width`, `height`, `time` and `passedProps` on an OffscreenCanvas.\n\n### Where this comes from\n\n- [Remotion: custom presentations](https://www.remotion.dev/docs/transitions/presentations/custom)\n- [Remotion: presentations](https://www.remotion.dev/docs/transitions/presentations)","useWhen":["Pull-out zooms, spins, splits, brand-specific moves missing from the built-ins."],"notFor":["Non-absolute layouts inside scenes; both scenes are stacked during the overlap and must stay absolutely positioned."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/transitions.md#remotion-custom-presentation","repo":"vargHQ/skills","path":"varg-video-edit-library/references/transitions.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["Remotion"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"Remotion: custom presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations/custom","license":"link-only"},{"role":"source","label":"Remotion: presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Remotion Custom Presentation"},"take":{"engines":["remotion"],"components":[],"aliases":["TransitionPresentation","presentationProgress","makeHtmlInCanvasPresentation","custom transition"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ed7bb25f25f2/take-remotion-custom-presentation.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAAD1ElEQVR4nBWTy28bVRTG7517587Ynkw8duz62SZxkkIeBQkFtYoKFV2woRKplBX/AY8N7GDBf4EQi4oKdiwACQmkBoUCQiWIBLWiSW2TJnXt2PFzxuN53rmXm83Zne9853e+Az//+tN797a5yvv9vh91L5bLuuFBCT7cdQAAszOldqdt24RxHscxXdeHTpMxRuK667pbm9cURSksn9ZqNYww6vbOVhbWp4zsh+99tr+///32nXQ6fb2U9DxvY/3VnZ2d2phhLBtGUsgFIJi4joEzn3zw7o23vePjpw3TVpGMa+Mfbr5TupJ8IZPJzBmzi28uaCH8c3e3nDPq9XoMSZfyuY47kgnBGAVhoHCSzWc+/uj91ZdfOurfefzfQ19y5iqXccpIDgbDX579vLq6tpy6CgG+vr44m1NazxqeqR1X6+VcYRTGTNO0qRRRLnF/a/Ot1ZV5anZoGJMCXU+pvV4P+z6LIugMPN8KVeQjGIaSn00nIj91ehpjMIkVzdBDz7aSuUKz1fQCoBLInQkLgpRcKunUBF3CIJ7YQeBzhyd8qB1YhgCZ4QgmkuVCYA5m/nlsLy4uN3pmpVJBWrr9/IQr6faIPqiHEWUuxI5btHDboSqeWNRxQ0oqjX78q78YhPC15OjK2lrcbxYKhu0pxXxcyd3c+3vv+OkRlIA8Xaw2R3VvQimVIJXlmK75hMSwZYrmeDyRJUqKwxaLGHB6odmu1s5azdYgmCr6uG+PAwpCSolM5BjXFIb1lhBSgc1YlODxYBxgBJOEyPGEK4M+5PclcZrxqFH3xwPWGbLXb71BCNm7/0dmZpoDfHj4RFPaqqwkogeURYhxgYJ5MqQR3lgJRThksgdFCoGLJCR3VhsnrVJx4+rCi0ZqutlsTk8pmhYDKAYg6w+qZ6ed8GxAwxCBmAgt4pGo+PBRQ5IkzqQgCEMmRvC5+MVcrkDU2Mgapzzbd8etbj/huL22OT8/PzODhC+MZCTMMyKYIkgixrBEVBnLDASqTjhkvu/nCxVRLcsS5A4e/dvtdmnIqtWjS7ls4JoIg3w64wCbcy4DHIYhhuq50MLSlHgFCYhXwZSKfJYuJhbvfnk3bxi3N29PxrBerQ169myxKGC1Tttj17m8tKRS2G53Ah7AcxUk9sPffOtnMlmQyEsSkiKtUCz+VD970q3ULGT/OtF5W1HnL5SHfhQFrd89y0KR5z5vCl+aY7HIEyioNDUaDvH2j+r6jVdGU9fO7QEanTCEGMpVTCZ/dxhoEGazF7amvxCLGPQ3WcccgGhSA0BKieOgECDgk/LB8fH/oKMblj5ZujcAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Big Buck Bunny (2008) + WING IT! (2023)","rights":"cc-by","note":"diagtl between two shots, with the timeline strip of the edit. Footage: Big Buck Bunny (2008), (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":179960,"addedAt":"2026-10-28"}},{"id":"gl-transitions/remotion-gl-transitions","slug":"remotion-gl-transitions","name":"GL Transitions in Remotion","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["remotion","glsl","gl-transitions"],"summary":"glTransition({name}) turns any gl-transitions shader into a TransitionSeries presentation.","description":"Built on [Cube](https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Cube.glsl) by gre (gl-transitions), MIT. The write-up and recipes below are varg's.\n\nCube, page curl, doorway, morph, burn, kaleidoscope… between any React scenes.\n\n**When:** Remotion projects needing transitions beyond @remotion/transitions.\n\n**Watch out:** Mixing name sets: npm 0.1.0 peer-depends on gl-transitions ^1.76.1 (1.x names: `cube`, `crosswarp`, `burn0`); adapter 1.0.0 moves to 2.0 names (`Cube`, `CrossWarp`, `BurnThrough`).\n\n**Timing:** linearTiming({durationInFrames: 24–30})\n\n**Also called:** @gl-transitions/remotion, glTransition(), gl-transitions presentation\n\n### In Remotion\n\nRemotion ≥ 4.0.500:\n```bash\nnpm install gl-transitions @gl-transitions/remotion @remotion/transitions\n```\n```tsx\nimport {linearTiming, TransitionSeries} from '@remotion/transitions';\nimport {glTransition} from '@gl-transitions/remotion';\n\n<TransitionSeries.Transition\n  presentation={glTransition({name: 'cube', params: {persp: 0.7, unzoom: 0.3}})}\n  timing={linearTiming({durationInFrames: 30})} />\n// textures: glTransition({name: 'luma', textures: {luma: staticFile('spiral.png')}})\n```\nRenders work out of the box (`--gl=angle`, or `--gl=swangle` without a GPU); the Studio needs Chrome 149+ with `chrome://flags/#canvas-draw-element`. Transparent pixels show a captured scene or black, not layers under the series.\n\n### Ready-made components\n\n- [Cube](https://skills.varg.ai/component/glt.cube/) (gl-transitions): npm install gl-transitions\n- [CrossZoom](https://skills.varg.ai/component/glt.cross-zoom/) (gl-transitions): npm install gl-transitions\n- [DreamyZoom](https://skills.varg.ai/component/glt.dreamy-zoom/) (gl-transitions): npm install gl-transitions\n- [DirectionalWarp](https://skills.varg.ai/component/glt.directional-warp/) (gl-transitions): npm install gl-transitions\n- [Doorway](https://skills.varg.ai/component/glt.doorway/) (gl-transitions): npm install gl-transitions\n- [InvertedPageCurl](https://skills.varg.ai/component/glt.inverted-page-curl/) (gl-transitions): npm install gl-transitions\n- [BookFlip](https://skills.varg.ai/component/glt.book-flip/) (gl-transitions): npm install gl-transitions\n- [Swirl](https://skills.varg.ai/component/glt.swirl/) (gl-transitions): npm install gl-transitions\n- [Morph](https://skills.varg.ai/component/glt.morph/) (gl-transitions): npm install gl-transitions\n- [FilmBurn](https://skills.varg.ai/component/glt.film-burn/) (gl-transitions): npm install gl-transitions\n- [Kaleidoscope](https://skills.varg.ai/component/glt.kaleidoscope/) (gl-transitions): npm install gl-transitions\n- [WaterDrop](https://skills.varg.ai/component/glt.water-drop/) (gl-transitions): npm install gl-transitions\n\n### Where this comes from\n\n- [@gl-transitions/remotion (README)](https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion)\n- [gl-transitions 2.0 changelog (renames)](https://github.com/gl-transitions/gl-transitions/blob/master/packages/gl-transitions/CHANGELOG.md)\n- [GL Transitions gallery](https://gl-transitions.com)","useWhen":["Remotion projects needing transitions beyond @remotion/transitions."],"notFor":["Mixing name sets: npm 0.1.0 peer-depends on gl-transitions ^1.76.1 (1.x names: `cube`, `crosswarp`, `burn0`); adapter 1.0.0 moves to 2.0 names (`Cube`, `CrossWarp`, `BurnThrough`)."],"publisher":{"name":"gre · GL Transitions","handle":"gl-transitions","kind":"community","verified":false,"url":"https://github.com/gl-transitions","avatar":"https://github.com/gl-transitions.png"},"source":{"url":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Cube.glsl","repo":"gl-transitions/gl-transitions","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["Remotion"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Cube · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.cube/","license":"MIT","note":"Both shots sit on the faces of a 3D cube that turns over a glossy floor reflection"},{"role":"component","label":"CrossZoom · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.cross-zoom/","license":"MIT","note":"The first shot rushes into a radial zoom blur that bursts open and resolves on the next shot"},{"role":"component","label":"DreamyZoom · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.dreamy-zoom/","license":"MIT","note":"Zooms and twists into a white flash, then spins back out onto the next shot"},{"role":"component","label":"DirectionalWarp · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.directional-warp/","license":"MIT","note":"A diagonal wipe whose leading edge smears and stretches the pixels it passes over"},{"role":"component","label":"Doorway · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.doorway/","license":"MIT","note":"The first shot splits and swings open like double doors as the next shot comes forward"},{"role":"component","label":"InvertedPageCurl · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.inverted-page-curl/","license":"MIT","note":"The first shot peels back from the corner like a curling page, revealing the next beneath"},{"role":"component","label":"BookFlip · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.book-flip/","license":"MIT","note":"The first shot turns over like a book page, right to left, and lands on the next"},{"role":"component","label":"Swirl · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.swirl/","license":"MIT","note":"Both shots twist into a spinning vortex at the center, then unwind onto the next"},{"role":"component","label":"Morph · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.morph/","license":"MIT","note":"Each shot warps along the other's colors, a liquid morph that melts one image into the next"},{"role":"component","label":"FilmBurn · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.film-burn/","license":"MIT","note":"Warm, glowing film-burn light leaks wash over the shot and fade out on the next"},{"role":"component","label":"Kaleidoscope · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.kaleidoscope/","license":"MIT","note":"The shots fold into a spinning kaleidoscope of mirrored wedges and open onto the next"},{"role":"component","label":"WaterDrop · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.water-drop/","license":"MIT","note":"Rings ripple out from the center like a drop hitting water while the shots crossfade"},{"role":"source","label":"@gl-transitions/remotion (README)","kind":"link","url":"https://github.com/gl-transitions/gl-transitions/tree/master/packages/remotion","license":"link-only"},{"role":"source","label":"gl-transitions 2.0 changelog (renames)","kind":"link","url":"https://github.com/gl-transitions/gl-transitions/blob/master/packages/gl-transitions/CHANGELOG.md","license":"link-only"},{"role":"source","label":"GL Transitions gallery","kind":"link","url":"https://gl-transitions.com","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"GL Transitions in Remotion"},"take":{"engines":["remotion"],"components":["glt.cube","glt.cross-zoom","glt.dreamy-zoom","glt.directional-warp","glt.doorway","glt.inverted-page-curl","glt.book-flip","glt.swirl","glt.morph","glt.film-burn","glt.kaleidoscope","glt.water-drop"],"aliases":["@gl-transitions/remotion","glTransition()","gl-transitions presentation"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d162efca1c14/lib-gl-transitions-cross-zoom.mp4","blur":"https://s3.varg.ai/how-to/previews/2150ba674cf9/lib-gl-transitions-cross-zoom.webp","source":"https://s3.varg.ai/how-to/previews/d162efca1c14/lib-gl-transitions-cross-zoom.mp4","page":"https://gl-transitions.com/editor/CrossZoom","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","rights":"publisher-site","note":"Preview of the CrossZoom component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/hyperframes-shader-transition","slug":"hyperframes-shader-transition","name":"HyperFrames Shader Transition","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["hyperframes","webgl","shader","gsap"],"summary":"Place a WebGL shader between two HyperFrames scenes with HyperShader.init({scenes, transitions}).","description":"Built on [Domain Warp Dissolve](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/domain-warp-dissolve) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\n14 shaders: domain-warp, ridged-burn, whip-pan, sdf-iris, ripple-waves, gravitational-lens, cinematic-zoom, chromatic-split, glitch, swirl-vortex, thermal-distortion, flash-through-white, cross-warp-morph, light-leak.\n\n**When:** HyperFrames compositions that need per-pixel transitions; mix freely with CSS transitions.\n\n**Watch out:** CSS that html2canvas cannot capture: `transparent` in gradients, `var()` on captured elements, missing scene background-color.\n\n**Timing:** Calm 0.5–0.8 s, medium 0.3–0.5 s, high energy 0.15–0.3 s\n\n**Also called:** @hyperframes/shader-transitions, HyperShader.init, WebGL scene transition\n\n### In HyperFrames\n\n```html\n<div id=\"root\" data-composition-id=\"main\" data-start=\"0\" data-duration=\"12\" data-width=\"1920\" data-height=\"1080\">\n  <div id=\"s1\" class=\"scene\" style=\"background:#0a0a0a\">…</div>\n  <div id=\"s2\" class=\"scene\" style=\"background:#0a0a0a\">…</div>\n  <div id=\"s3\" class=\"scene\" style=\"background:#0a0a0a\">…</div>\n</div>\n<script src=\"https://cdn.jsdelivr.net/npm/@hyperframes/shader-transitions/dist/index.global.js\"></script>\n<script>\n  const tl = HyperShader.init({\n    bgColor: \"#0a0a0a\", accentColor: \"#ff6b2b\",\n    scenes: [\"s1\", \"s2\", \"s3\"],\n    transitions: [\n      { time: 4, shader: \"whip-pan\", duration: 0.4 },\n      { time: 8, duration: 0.6 }          // no shader -> CSS crossfade\n    ],\n  });\n  window.__timelines = window.__timelines || {}; window.__timelines[\"main\"] = tl;\n</script>\n```\nLet `init()` create the timeline and add your beat tweens to the returned `tl`. Without WebGL it falls back to normal playback. Ready blocks: `npx hyperframes add <slug>` (e.g. whip-pan, sdf-iris, domain-warp-dissolve).\n\n### Ready-made components\n\n- [Domain Warp Dissolve](https://skills.varg.ai/component/hf.domain-warp-dissolve/) (hyperframes): npx hyperframes add domain-warp-dissolve\n- [Ridged Burn](https://skills.varg.ai/component/hf.ridged-burn/) (hyperframes): npx hyperframes add ridged-burn\n- [Whip Pan](https://skills.varg.ai/component/hf.whip-pan/) (hyperframes): npx hyperframes add whip-pan\n- [SDF Iris](https://skills.varg.ai/component/hf.sdf-iris/) (hyperframes): npx hyperframes add sdf-iris\n- [Ripple Waves](https://skills.varg.ai/component/hf.ripple-waves/) (hyperframes): npx hyperframes add ripple-waves\n- [Gravitational Lens](https://skills.varg.ai/component/hf.gravitational-lens/) (hyperframes): npx hyperframes add gravitational-lens\n- [Cinematic Zoom](https://skills.varg.ai/component/hf.cinematic-zoom/) (hyperframes): npx hyperframes add cinematic-zoom\n- [Chromatic Radial Split](https://skills.varg.ai/component/hf.chromatic-radial-split/) (hyperframes): npx hyperframes add chromatic-radial-split\n- [Glitch](https://skills.varg.ai/component/hf.glitch/) (hyperframes): npx hyperframes add glitch\n- [Swirl Vortex](https://skills.varg.ai/component/hf.swirl-vortex/) (hyperframes): npx hyperframes add swirl-vortex\n- [Thermal Distortion](https://skills.varg.ai/component/hf.thermal-distortion/) (hyperframes): npx hyperframes add thermal-distortion\n- [Flash Through White](https://skills.varg.ai/component/hf.flash-through-white/) (hyperframes): npx hyperframes add flash-through-white\n- [Cross Warp Morph](https://skills.varg.ai/component/hf.cross-warp-morph/) (hyperframes): npx hyperframes add cross-warp-morph\n- [Light Leak](https://skills.varg.ai/component/hf.light-leak/) (hyperframes): npx hyperframes add light-leak\n\n### Where this comes from\n\n- [HyperFrames: @hyperframes/shader-transitions](https://hyperframes.heygen.com/packages/shader-transitions)\n- [HyperFrames: compositions](https://hyperframes.heygen.com/concepts/compositions)","useWhen":["HyperFrames compositions that need per-pixel transitions; mix freely with CSS transitions."],"notFor":["CSS that html2canvas cannot capture: `transparent` in gradients, `var()` on captured elements, missing scene background-color."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/domain-warp-dissolve","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Domain Warp Dissolve · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.domain-warp-dissolve/","license":"Apache-2.0","note":"Shader transition with fractal noise domain warping"},{"role":"component","label":"Ridged Burn · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.ridged-burn/","license":"Apache-2.0","note":"Shader transition with ridged turbulence burn effect"},{"role":"component","label":"Whip Pan · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.whip-pan/","license":"Apache-2.0","note":"Shader transition simulating a fast camera whip pan"},{"role":"component","label":"SDF Iris · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.sdf-iris/","license":"Apache-2.0","note":"Shader transition with signed distance field iris reveal"},{"role":"component","label":"Ripple Waves · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.ripple-waves/","license":"Apache-2.0","note":"Shader transition with concentric ripple wave distortion"},{"role":"component","label":"Gravitational Lens · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.gravitational-lens/","license":"Apache-2.0","note":"Shader transition with gravitational lensing distortion"},{"role":"component","label":"Cinematic Zoom · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cinematic-zoom/","license":"Apache-2.0","note":"Shader transition with dramatic zoom blur"},{"role":"component","label":"Chromatic Radial Split · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.chromatic-radial-split/","license":"Apache-2.0","note":"Shader transition with chromatic aberration radial split"},{"role":"component","label":"Glitch · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.glitch/","license":"Apache-2.0","note":"Shader transition with digital glitch artifacts"},{"role":"component","label":"Swirl Vortex · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.swirl-vortex/","license":"Apache-2.0","note":"Shader transition with swirling vortex distortion"},{"role":"component","label":"Thermal Distortion · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.thermal-distortion/","license":"Apache-2.0","note":"Shader transition with heat haze thermal distortion"},{"role":"component","label":"Flash Through White · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.flash-through-white/","license":"Apache-2.0","note":"Shader transition with white flash crossfade"},{"role":"component","label":"Cross Warp Morph · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cross-warp-morph/","license":"Apache-2.0","note":"Shader transition with cross-warped morphing"},{"role":"component","label":"Light Leak · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.light-leak/","license":"Apache-2.0","note":"Shader transition with cinematic light leak overlay"},{"role":"source","label":"HyperFrames: @hyperframes/shader-transitions","kind":"link","url":"https://hyperframes.heygen.com/packages/shader-transitions","license":"link-only"},{"role":"source","label":"HyperFrames: compositions","kind":"link","url":"https://hyperframes.heygen.com/concepts/compositions","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"HyperFrames Shader Transition"},"take":{"engines":["hyperframes"],"components":["hf.domain-warp-dissolve","hf.ridged-burn","hf.whip-pan","hf.sdf-iris","hf.ripple-waves","hf.gravitational-lens","hf.cinematic-zoom","hf.chromatic-radial-split","hf.glitch","hf.swirl-vortex","hf.thermal-distortion","hf.flash-through-white","hf.cross-warp-morph","hf.light-leak"],"aliases":["@hyperframes/shader-transitions","HyperShader.init","WebGL scene transition"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ridged-burn.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ridged-burn.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ridged-burn.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/ridged-burn","credit":"Ridged Burn · hyperframes","rights":"publisher-site","note":"Preview of the Ridged Burn component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/hyperframes-scene-transition","slug":"hyperframes-scene-transition","name":"HyperFrames Scene Transition (CSS)","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["hyperframes","gsap","css","sub-composition"],"summary":"Overlap two clips or sub-compositions on separate tracks and tween both wrappers at the same time T.","description":"Built on [Fade Through](https://github.com/heygen-com/hyperframes/tree/main/registry/components/fade-through) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nCrossfade, push, zoom-through, blur, iris or any CSS move between scenes or videos.\n\n**When:** Every multi-scene HyperFrames video; video clips need opacity plus matching volume envelopes.\n\n**Watch out:** Fading the outgoing scene out first and then animating the next one in: that is a dip, not a transition. Also don't animate the timed clip element itself.\n\n**Timing:** Presets: snappy 0.2 s power4.inOut, smooth 0.4 s power2.inOut, gentle 0.6 s sine.inOut\n\n**Also called:** clip overlap, sub-composition transition, GSAP transition, crossfade clips\n\n### In HyperFrames\n\nVideo crossfade (0.5 s overlap, sound follows each clip):\n```html\n<div id=\"a-visual\" class=\"inner\"><video id=\"a\" src=\"a.mp4\" data-start=\"0\" data-duration=\"3\" data-track-index=\"0\" data-has-audio=\"true\"\n  data-automation='{\"version\":1,\"lanes\":[{\"target\":\"volume\",\"points\":[{\"t\":0,\"v\":1},{\"t\":2.5,\"v\":1},{\"t\":3,\"v\":0}]}]}'></video></div>\n<div id=\"b-visual\" class=\"inner\"><video id=\"b\" src=\"b.mp4\" data-start=\"a - 0.5\" data-duration=\"3\" data-track-index=\"1\" data-has-audio=\"true\"\n  data-automation='{\"version\":1,\"lanes\":[{\"target\":\"volume\",\"points\":[{\"t\":0,\"v\":0},{\"t\":0.5,\"v\":1},{\"t\":3,\"v\":1}]}]}'></video></div>\n<script>\n  const tl = gsap.timeline({ paused: true });\n  tl.set(\"#b-visual\", { opacity: 0 }, 0)\n    .to(\"#a-visual\", { opacity: 0, duration: 0.5 }, 2.5)\n    .to(\"#b-visual\", { opacity: 1, duration: 0.5 }, 2.5);\n  window.__timelines[\"main\"] = tl;\n</script>\n```\nFor sub-compositions (`data-composition-src`), extend the outgoing host's `data-duration` by the overlap, pull the incoming host's `data-start` earlier by the same amount, put them on alternating tracks, and tween the host wrappers at T (e.g. push: `x: -1920` / `x: 1920 → 0`, power3.inOut). Tracks are editor rows; paint order is CSS z-index.\n\n### Ready-made components\n\n- [Fade Through](https://skills.varg.ai/component/hf.fade-through/) (hyperframes): npx hyperframes add fade-through\n- [Directional Wipe](https://skills.varg.ai/component/hf.directional-wipe/) (hyperframes): npx hyperframes add directional-wipe\n- [Zoom Through Transition](https://skills.varg.ai/component/hf.zoom-through-transition/) (hyperframes): npx hyperframes add zoom-through-transition\n- [Push Transitions](https://skills.varg.ai/component/hf.transitions-push/) (hyperframes): npx hyperframes add transitions-push\n- [Blur Transitions](https://skills.varg.ai/component/hf.transitions-blur/) (hyperframes): npx hyperframes add transitions-blur\n- [Dissolve Transitions](https://skills.varg.ai/component/hf.transitions-dissolve/) (hyperframes): npx hyperframes add transitions-dissolve\n\n### Where this comes from\n\n- [HyperFrames: data attributes](https://hyperframes.heygen.com/concepts/data-attributes)\n- [HyperFrames: compositions](https://hyperframes.heygen.com/concepts/compositions)\n- [HyperFrames: HTML schema](https://hyperframes.heygen.com/reference/html-schema)","useWhen":["Every multi-scene HyperFrames video; video clips need opacity plus matching volume envelopes."],"notFor":["Fading the outgoing scene out first and then animating the next one in: that is a dip, not a transition. Also don't animate the timed clip element itself."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/fade-through","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Fade Through · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.fade-through/","license":"Apache-2.0","note":"A calm transition primitive that fades one layer out, passes through a wash, and reveals the next layer"},{"role":"component","label":"Directional Wipe · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.directional-wipe/","license":"Apache-2.0","note":"A directional scene push that slides one panel over another."},{"role":"component","label":"Zoom Through Transition · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.zoom-through-transition/","license":"Apache-2.0","note":"A transition that zooms through a focal card into the next scene."},{"role":"component","label":"Push Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-push/","license":"Apache-2.0","note":"Showcase of push and slide transitions"},{"role":"component","label":"Blur Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-blur/","license":"Apache-2.0","note":"Showcase of blur-based transitions between scenes"},{"role":"component","label":"Dissolve Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-dissolve/","license":"Apache-2.0","note":"Showcase of dissolve and fade transitions"},{"role":"source","label":"HyperFrames: data attributes","kind":"link","url":"https://hyperframes.heygen.com/concepts/data-attributes","license":"link-only"},{"role":"source","label":"HyperFrames: compositions","kind":"link","url":"https://hyperframes.heygen.com/concepts/compositions","license":"link-only"},{"role":"source","label":"HyperFrames: HTML schema","kind":"link","url":"https://hyperframes.heygen.com/reference/html-schema","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"HyperFrames Scene Transition (CSS)"},"take":{"engines":["hyperframes"],"components":["hf.fade-through","hf.directional-wipe","hf.zoom-through-transition","hf.transitions-push","hf.transitions-blur","hf.transitions-dissolve"],"aliases":["clip overlap","sub-composition transition","GSAP transition","crossfade clips"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-blur.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-blur.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-blur.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/transitions-blur","credit":"Blur Transitions · hyperframes","rights":"publisher-site","note":"Preview of the Blur Transitions component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/hyperframes-whip-motion-blur","slug":"hyperframes-whip-motion-blur","name":"HyperFrames Whip with Motion Blur","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["hyperframes","whip-pan","motion-blur","gsap"],"summary":"Fly scene A out and scene B in at matched velocity with directional blur peaking at the swap.","description":"Built on [Whip Pan Cut](https://github.com/heygen-com/hyperframes/tree/main/registry/components/whip-pan-cut) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA camera-like whip: both scenes travel the same way, blur peaks mid-move, B lands sharp.\n\n**When:** Energetic HyperFrames edits; DOM content (UI, type, product shots) where a shader capture is unnecessary.\n\n**Watch out:** Different directions or eases for the two halves; blur that lingers after B lands.\n\n**Timing:** 0.3–0.45 s total; power4.in out of A, power4.out into B\n\n**Also called:** whip-pan-cut, GSAP whip, motion blur whip, velocity-matched whip\n\n### In HyperFrames\n\nReady primitive: `npx hyperframes add whip-pan-cut` (capped directional motion blur, same-direction entry at matched velocity, speed-ramped). Hand-written:\n```js\nconst T = 4, D = 0.18;\ntl.to(\"#s1\", { x: -1920, filter: \"blur(24px)\", duration: D, ease: \"power4.in\" }, T);\ntl.fromTo(\"#s2\", { x: 1920, filter: \"blur(24px)\" }, { x: 0, filter: \"blur(0px)\", duration: D * 1.4, ease: \"power4.out\" }, T + D);\n```\nCSS `blur()` is isotropic; for true directional blur use the `motion-blur` filter component (shutter-angle integration) or the `whip-pan` shader.\n\n### Ready-made components\n\n- [Whip Pan Cut](https://skills.varg.ai/component/hf.whip-pan-cut/) (hyperframes): npx hyperframes add whip-pan-cut\n- [Motion Blur](https://skills.varg.ai/component/hf.motion-blur/) (hyperframes): npx hyperframes add motion-blur\n- [Whip Pan](https://skills.varg.ai/component/hf.whip-pan/) (hyperframes): npx hyperframes add whip-pan\n- [Cut the Curve](https://skills.varg.ai/component/hf.cut-the-curve/) (hyperframes): npx hyperframes add cut-the-curve\n\n### Where this comes from\n\n- [HyperFrames: @hyperframes/shader-transitions](https://hyperframes.heygen.com/packages/shader-transitions)\n- [HyperFrames: motion prompting (transitions)](https://hyperframes.heygen.com/prompting/motion)","useWhen":["Energetic HyperFrames edits; DOM content (UI, type, product shots) where a shader capture is unnecessary."],"notFor":["Different directions or eases for the two halves; blur that lingers after B lands."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/whip-pan-cut","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Whip Pan Cut · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.whip-pan-cut/","license":"Apache-2.0","note":"A full-frame whip pan: scene A whips off laterally with capped directional motion blur while scene B enters in the same direction at matched velocity, on a speed-ramp profile with a decelerating catch…"},{"role":"component","label":"Motion Blur · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.motion-blur/","license":"Apache-2.0","note":"After Effects-style motion blur — integrates each element over a shutter window (shutter angle, phase, samples per frame) by sampling the GSAP timeline at sub-frame times and averaging equal-weight additive copies of…"},{"role":"component","label":"Whip Pan · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.whip-pan/","license":"Apache-2.0","note":"Shader transition simulating a fast camera whip pan"},{"role":"component","label":"Cut the Curve · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cut-the-curve/","license":"Apache-2.0","note":"A velocity-matched directional hard cut: the outgoing subject accelerates with power4.in, swaps at peak velocity, and the incoming subject continues in the same direction with power4.out."},{"role":"source","label":"HyperFrames: @hyperframes/shader-transitions","kind":"link","url":"https://hyperframes.heygen.com/packages/shader-transitions","license":"link-only"},{"role":"source","label":"HyperFrames: motion prompting (transitions)","kind":"link","url":"https://hyperframes.heygen.com/prompting/motion","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"HyperFrames Whip with Motion Blur"},"take":{"engines":["hyperframes"],"components":["hf.whip-pan-cut","hf.motion-blur","hf.whip-pan","hf.cut-the-curve"],"aliases":["whip-pan-cut","GSAP whip","motion blur whip","velocity-matched whip"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/690d58dcf00f/take-hyperframes-whip-motion-blur.mp4","w":640,"h":400,"duration":4.3,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAAC10lEQVR4nHWTTW/jNhCGSQ4pUbLlj8ReO0mdbZFtTwXaQ8+99dyf2F/UQ4ECPRQo0jZNmshxLEu2xK9hR/GugV2gI0igCPLhvO8M+Rff/OCcF8FxzrXUSqosHy4Wi/Tdl6vVKi5WAiAPTd3U548/73a7vPmLVkrgUikQgsYCmAQphaDfwJH3U5wDiDzXs9l0vhhfX0zZSDLG0gAvPiYpGObja7iI9A0EoicAEqsf96+iKRCQZflsNlksZsvZeJxJ4w2Ft1VoKtvuRQzEpSMZg4CMYCxEED1UpgowuD4tIbJMX14ur2/eXl5fTeZnIPlg83QoS3N32263BtcknAM7Be0nKBGZRzm6edc8PIjymWTqLIkYnh5L27lheT+fzz/HNj9UWVuxqtwmXcqw5cherTlSPrBQwtmF27YZf5Z0ACN5EnTB0wGYuH1Yr82d9yHxL8UAvRIxWtrIECMJFOIok1g0kGnXDFxHtmutz5U8T+QytOkBF7Fx1o7ZvVLyUBhdMBkk+cVDb/+RclR3xMmv55kosVRCSeFzMIoFsXfMDXyJERmnhIJpBWLorCePeSI++P1RyNu//91UexdtgBRFZIrL8TDPB7yLh7qG3SFgCIkBikSGQBUXxyxOcYTKu9//sM5y6JvobDRcLd9cXU6LosD9G19V65qRHAG0H8Dde1rpqk9A7z1KfCuCNyqjoyRZpVSkrkzSjqdcpG0+ag+UFHrnxmHTIdPh1EofS9syoJbSQAkJ69BYvzdWW49cefKUOxZNdD56F32gerH/CTmZFHVdu3198HYtfaahSC86JRCGtuv2baTG7mwMyDVKx1iCr2b3ncRPGns194/VdHq21185QRWS7bp4RpE9GssYXebW7dI0/Xby52bzMsJf+6uAh09yiWKw3b5Q1ZrlzXft6HtaZNB2MT41MdbvjwJmtNc/5j8tlbliv9BM4OqEEK8Zdclnv/1z+x+0Nql/GjGzCQAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023)","rights":"cc-by","note":"whip between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":179760,"addedAt":"2026-10-28"}},{"id":"vargHQ/otio-fcpxml-handoff","slug":"otio-fcpxml-handoff","name":"OTIO and XML Handoff to NLEs","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["otio","fcpxml","premiere","resolve","handoff","python"],"summary":"Write the edit (clips, cuts, dissolves) as OpenTimelineIO and convert to XML so an editor can finish it in an NLE.","description":"An editable timeline in Resolve, Premiere or Final Cut with real cuts and dissolves instead of a flat render.\n\n**When:** When a human editor will refine the agent's rough cut; agency and post-production handoffs.\n\n**Watch out:** Assuming effects survive: only basic cuts and dissolves translate; designed transitions (whip, glitch, shader) do not.\n\n**Timing:** Dissolves: in_offset/out_offset need handles in the source on both sides\n\n**Also called:** OpenTimelineIO, FCPXML, FCP7 XML, Premiere handoff, Resolve import, EDL\n\n### In Python\n\nPython with opentimelineio 0.18 (tested). Transitions sit between clips and do not change the track length; offsets need media beyond the cut:\n```python\nimport opentimelineio as otio\nRATE = 30\nrt = lambda s: otio.opentime.RationalTime(round(s * RATE), RATE)\ndef clip(path, src_in, dur, media_dur):\n    return otio.schema.Clip(name=path,\n        media_reference=otio.schema.ExternalReference(target_url=path,\n            available_range=otio.opentime.TimeRange(rt(0), rt(media_dur))),\n        source_range=otio.opentime.TimeRange(rt(src_in), rt(dur)))\ntl = otio.schema.Timeline(name='edit')\nv = otio.schema.Track(name='V1', kind=otio.schema.TrackKind.Video); tl.tracks.append(v)\nv.append(clip('a.mp4', 0, 5, 10))\nv.append(otio.schema.Transition(transition_type=otio.schema.TransitionTypes.SMPTE_Dissolve,\n                                in_offset=rt(0.25), out_offset=rt(0.25)))\nv.append(clip('b.mp4', 1, 4, 10))\notio.adapters.write_to_file(tl, 'edit.otio')                          # Resolve 18.5+, Premiere 25.6+\notio.adapters.write_to_file(tl, 'edit.xml', adapter_name='fcp_xml')   # pip install otio-fcp-adapter\n```\nIn the test the FCP7 XML kept the dissolve (`<transitionitem>` with `Cross Dissolve`), while `otio-fcpx-xml-adapter` (`fcpx_xml`) wrote the clips but dropped the transition. The FCP XML adapter also needs `available_range` on every media reference. CLI: `otioconvert -i edit.otio -o edit.xml -O fcp_xml`. Remotion projects can use the `remotion-opentimeline` agent skill (Remotion transitions are not exported as OTIO transitions).\n\n### Where this comes from\n\n- [OpenTimelineIO: timeline structure (Transition)](https://opentimelineio.readthedocs.io/en/latest/tutorials/otio-timeline-structure.html)\n- [Remotion: export to OpenTimelineIO](https://www.remotion.dev/docs/export-opentimeline)","useWhen":["When a human editor will refine the agent's rough cut; agency and post-production handoffs."],"notFor":["Assuming effects survive: only basic cuts and dissolves translate; designed transitions (whip, glitch, shader) do not."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/transitions.md#otio-fcpxml-handoff","repo":"vargHQ/skills","path":"varg-video-edit-library/references/transitions.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["Python"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"OpenTimelineIO: timeline structure (Transition)","kind":"link","url":"https://opentimelineio.readthedocs.io/en/latest/tutorials/otio-timeline-structure.html","license":"link-only"},{"role":"source","label":"Remotion: export to OpenTimelineIO","kind":"link","url":"https://www.remotion.dev/docs/export-opentimeline","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"OTIO and XML Handoff to NLEs"},"take":{"engines":["python"],"components":[],"aliases":["OpenTimelineIO","FCPXML","FCP7 XML","Premiere handoff","Resolve import","EDL"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/bba707dad9b3/take-otio-fcpxml-handoff.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADcklEQVR4nDVT23JbNRSVjm5HOjc7vqR2oDTtFJg0oc8MD/wZ/AA/wFfwAQw88VKm0IbpFJM2TWo7bRzbsX2u0jlHEsowaPSg2bO19157rQW//+E7jDFBLEkSTtlyuayLOYSwbP3Val0YE0ZRQolSKhABY8xi5nnIWAjcsdbzPA3gZrvF1lrf94+efN3tdvO0qu37K/kmTVMEO74AAT90RYtyW9ewk5C7QpC7Cg1qsiwz7Y4LzvDQtg0u8nw8HvfC8HaxUEXGdKltWEqJvev+YHAwPHDf5h/hfD6vlfbdNLB2U0itKpl5uLa1QaCCUONSmd5gZHSDEQBtY/M0luOD8Revpr+W21Z3r++AoI2yN7sCiIQPgkS3urDIOGRaU0q1rjEG2CFcrDdDKm6ms9O3v7uBR+K+araGJJmyr96cEUoLmUlVKJ5SPkKItq2inrANUrqhhG+qqdsPFng4eTnbD5FCFcHC6Gq+m1BCLQPQgzrgpcpcx53WQbZdfpju2rzf7zPu74Xx8mO5SysdW6MNjh7S8/PZLxe3YRi+K2c1aZabBfS8E7vnmEI60VrPmrzCVeLTs9X8cQAg4pT2uN8M43tC8AfHn11eXGJpSxKg314+/+rp03g0mk6nqcW9Tm/5NkcIRZLqtjUo63ABEaAYZx0wKT4MSWSZDZnYH+wzwwQU+Oefnp0cH7vg+8kVE6XTTotE0TRPPv/SyeKP2alsJfORwVAVlZSS4cRt7R9wRjA5aRPmRTQNgwphx8fzyblp0bJKR5+iLh/L1i2k9Sh2NxLQwbCMBUIYCQnRnYJEXrgDQiuz4EY1u0Pgb3SGu+PDuq7lKt+lBbogg0EITAy5+PPq0kmRQSaEkNd5iVtEWRBGWa7zdXqtb1z8RbaMougZBEWRO54KlW1dwyLLDUDXN+tMtb5f6irVRncQLcvyvqslJQmiOo5XrZNxk5paGzMrc0eRStfOXph4CoMSs1hrqTRGCButrPFqWbp3/17v9hYoHtaEsGigOb9d32R5xnkEIECobhpraQBYiCd/LXv9foM/4dEecQaAsENsEIZbb2eMRkgfHR0FcO3gd/JTY82IpTSiECw85EnoUgwg3Sx7hxeX5aMHD9Pom73Yab4G/5+9GN+Z066aaPBt+KMzSnfztxME9LA19r8cCNq7HIpev774F4O2+9rAwbPtAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Tears of Steel (2012) + Coffee Run (2020)","rights":"cc-by","note":"dissolve between two shots, with the timeline strip of the edit. Footage: Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":285948,"addedAt":"2026-10-28"}},{"id":"vargHQ/capcut-draft-automation","slug":"capcut-draft-automation","name":"CapCut Draft Automation","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["capcut","jianying","automation","python","draft"],"summary":"Generate CapCut/JianYing drafts from code, with real CapCut transitions on each cut, then export in the app.","description":"An editable CapCut project with Mix, Pull in, Glitch etc. already on the timeline.\n\n**When:** Mass-producing variants that creators finish in CapCut; teams living in CapCut.\n\n**Watch out:** Expecting headless export: these tools write drafts; rendering still happens in the CapCut app. Templates must have a plaintext draft_content.json (encrypted drafts are unsupported).\n\n**Timing:** Default per transition (e.g. Mix 1.0 s, Pull in 0.47 s) unless set\n\n**Also called:** pyCapCut, pyJianYingDraft, VectCut API, capcut-mate, JianYing draft, CapCut draft JSON\n\n### In CapCut\n\npyCapCut (English CapCut; preview 0.1.x API, pin 0.0.4 for the old one). The transition is added to the earlier segment:\n```python\nimport pycapcut as cc\nfrom pycapcut import trange_seconds\ndraft = cc.DraftFolder(r'<CapCut Drafts folder>').create_draft('auto', 1080, 1920, allow_replace=True)\ndraft.add_track(cc.TrackType.video)\na = cc.VideoSegment('a.mp4', trange_seconds(0, duration=4))\nb = cc.VideoSegment('b.mp4', trange_seconds(4, duration=4))\na.add_transition(cc.TransitionType.White_Flash, duration='0.4s')\ndraft.add_segment(a).add_segment(b)\ndraft.save()\n```\npyJianYingDraft is the JianYing (Chinese) sibling with Chinese enum names (e.g. `TransitionType.叠化` for Mix). VectCutAPI (HTTP/MCP) takes `transition` and `transition_duration` (seconds) on `add_video`, resolved against `CapCut_Transition_type` names such as `Mix`, `Black_Fade`, `Pull_in`, `Glitch`, `Cube`. capcut-mate's `add_videos` takes `transition` (JianYing display name, e.g. 叠化) and `transition_duration` in microseconds. Open the draft in CapCut desktop and export manually.\n\n### Where this comes from\n\n- [pyCapCut](https://github.com/GuanYixuan/pyCapCut)\n- [pyJianYingDraft](https://github.com/GuanYixuan/pyJianYingDraft)\n- [VectCutAPI](https://github.com/sun-guannan/VectCutAPI)\n- [capcut-mate (add_videos transition field)](https://github.com/Hommy-master/capcut-mate/blob/main/docs/add_videos.md)\n- [CapCut transition names + default durations (VectCut metadata)](https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py)\n- [CapCut transition names incl. Pro (pyCapCut metadata)](https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py)","useWhen":["Mass-producing variants that creators finish in CapCut; teams living in CapCut."],"notFor":["Expecting headless export: these tools write drafts; rendering still happens in the CapCut app. Templates must have a plaintext draft_content.json (encrypted drafts are unsupported)."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/transitions.md#capcut-draft-automation","repo":"vargHQ/skills","path":"varg-video-edit-library/references/transitions.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"pyCapCut","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut","license":"link-only"},{"role":"source","label":"pyJianYingDraft","kind":"link","url":"https://github.com/GuanYixuan/pyJianYingDraft","license":"link-only"},{"role":"source","label":"VectCutAPI","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI","license":"link-only"},{"role":"source","label":"capcut-mate (add_videos transition field)","kind":"link","url":"https://github.com/Hommy-master/capcut-mate/blob/main/docs/add_videos.md","license":"link-only"},{"role":"source","label":"CapCut transition names + default durations (VectCut metadata)","kind":"link","url":"https://github.com/sun-guannan/VectCutAPI/blob/main/pyJianYingDraft/metadata/capcut_transition_meta.py","license":"link-only"},{"role":"source","label":"CapCut transition names incl. Pro (pyCapCut metadata)","kind":"link","url":"https://github.com/GuanYixuan/pyCapCut/blob/main/pycapcut/metadata/transition_meta.py","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"CapCut Draft Automation"},"take":{"engines":["capcut"],"components":[],"aliases":["pyCapCut","pyJianYingDraft","VectCut API","capcut-mate","JianYing draft","CapCut draft JSON"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d06e0d5fd1d1/take-capcut-draft-automation.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADPUlEQVR4nB1TW2/bNhQ+vEuiJEdWkqYN1mHJMGBAsV+wYQ/dz9z/2cOAYkCBrluWBE3SuKmd2LUkWhRvOy4fSII8+Hi+C8nZ+fO2bY+fFavHFaOsrEpvx6qqOBUxhsnulFK5CoLzh+W4Wq2ULodhsCMwxqQiAGAGJwTe08RIDMHMZhkE6UYrRGZtqEuhZ/XHG/Ph+nJI2/Pz81yqWSmN9blQZcGmaarrqm3ny8c1IYTjiDE+LoemaQolhjBJxvACgL958/biahEjFBWsn7Zdt2nmTTtr3TQ5IJLndc5mhThpT8dx5IJ7wZwxsF0beqCklOCHw6OjnfF3dwsAirCCBJpCSunT4tPheaOrfLCOMYq81uu1jFnGGJ/G2PkdYSl46Duf5VmZJQBPKaMUCMF9Mhb+u1rWtfSBvL9+99vr1xWf+n5IQMqyVIXoh4F/V2sppKEjwpd51AWczMnJSfY4kIsWhsjRAUkQl0bKu25kESSzP746Wi7T1Htd8h1QilqfNhUXwktWlpXON4dt861iZ2cv/7jtaoUlHPWSfG+Lm4CBoNTrogA1mx0X0HYhBAUuRskpYaOxyy7IzkglbpbGUXn779Xbvhu24nOyGQ7hpEdfgCo2WidLjZQZJ5lg1nowdLez/N1mjaTs5FBLD5Yz/ucY0AVKU90c5ruFUp7RylirKUEdG83urv+5vXabzUZJVhRagEcEfnm/CcEnGIWUiqMBWZGFupIshjxPoJ8h6OiOVqv7IQ91PVPaX364BzIJLr4MTg6jDyHFyHPtY4hS8LLMM45tpZiA0Qg8ejLRGA8abTa+OXtxcfPZT+LhyWLNfI4PAWEw2dFNFE94pTmhRDJMYMpkQlUJoQEzGjie7FKw3TYSwylrDicpe61dXdcRrPeOgHTRaV30fc8LRZ1HgSzy9B7fQbkc7jFHOG8NfNWL4o8jFFtNxoFd92j4bucJJEzi0byA6Pj1sjo9PR35SQixSxg/YDyg3VME71xWPn3/w4vnpTFmUN1f+68TIQa/D2rGhEiUhtEbP675Yv3Ny59+ddXPyHPPGyBQ2C+wbykjK3Z8/Ev1ewzqYGP2bSaK3IF8LUn72anjv98//A/5O82/QxB58gAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Sprite Fright (2021) + Cosmos Laundromat (2015)","rights":"cc-by","note":"Mix between two shots, with the timeline strip of the edit. Footage: Sprite Fright (2021), Blender Studio | studio.blender.org, CC BY 4.0; Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0.","bytes":320807,"addedAt":"2026-10-28"}},{"id":"vargHQ/resolve-add-transition","slug":"resolve-add-transition","name":"DaVinci Resolve AddTransition API","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["resolve","davinci","scripting","api","python"],"summary":"Resolve 21.1 added TimelineItem.AddTransition; earlier versions cannot add transitions by script.","description":"Native Resolve transitions (Cross Dissolve, Fusion, OFX, audio) on a timeline built by script.\n\n**When:** Pipelines that assemble timelines in Resolve via Python/Lua and want dissolves without manual work.\n\n**Watch out:** Relying on it before 21.1; on older versions build the timeline as OTIO/FCP7 XML with transitions and import it.\n\n**Timing:** duration in frames (auto-calculated when omitted); needs handles on both clips\n\n**Also called:** Resolve scripting, TimelineItem.AddTransition, DaVinciResolveScript, Resolve API transitions\n\n### In Python\n\nResolve scripting (Python 3, run inside Resolve or with the scripting env):\n```python\nimport DaVinciResolveScript as dvr\nresolve = dvr.scriptapp('Resolve')\ntimeline = resolve.GetProjectManager().GetCurrentProject().GetCurrentTimeline()\nitems = timeline.GetItemListInTrack('video', 1)\n# Resolve 21.1+: attach a dissolve to the end of the first clip, centred on the cut\nitems[0].AddTransition({'type': 'Cross Dissolve', 'category': 'simple', 'position': 'end', 'alignment': 'center', 'duration': 15})\n```\nTransitionOptions: `type` (name, e.g. 'Cross Dissolve'), `category` ('simple' | 'fusion' | 'ofx' | 'audio'), `position` ('start' | 'end'), `alignment` ('left' | 'center' | 'right'), `duration` (frames). Returns the transition TimelineItem or None. Older versions: `MediaPool.ImportTimelineFromFile('edit.otio' or FCP7 XML)`; `Timeline.Export(path, resolve.EXPORT_OTIO)` writes OTIO back out (FCPXML 1.3–1.7 export is unsupported since 18.1; 1.8–1.10 remain).\n\n### Where this comes from\n\n- [DaVinci Resolve scripting API 21.1 README mirror](https://github.com/WheheoHu/bmd_doc/tree/main/_README_API/21_1_1)\n- [OpenTimelineIO: timeline structure (Transition)](https://opentimelineio.readthedocs.io/en/latest/tutorials/otio-timeline-structure.html)","useWhen":["Pipelines that assemble timelines in Resolve via Python/Lua and want dissolves without manual work."],"notFor":["Relying on it before 21.1; on older versions build the timeline as OTIO/FCP7 XML with transitions and import it."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/transitions.md#resolve-add-transition","repo":"vargHQ/skills","path":"varg-video-edit-library/references/transitions.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["Python"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"DaVinci Resolve scripting API 21.1 README mirror","kind":"link","url":"https://github.com/WheheoHu/bmd_doc/tree/main/_README_API/21_1_1","license":"link-only"},{"role":"source","label":"OpenTimelineIO: timeline structure (Transition)","kind":"link","url":"https://opentimelineio.readthedocs.io/en/latest/tutorials/otio-timeline-structure.html","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"DaVinci Resolve AddTransition API"},"take":{"engines":["python"],"components":[],"aliases":["Resolve scripting","TimelineItem.AddTransition","DaVinciResolveScript","Resolve API transitions"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ed4c06dba941/take-resolve-add-transition.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADMUlEQVR4nCVTyW4bRxDtvWcXOUMplEhLNmw48sEfEATId+aPshxzcQwdZCoULYriNpy119TIjRmgl+pXr+u9wkk+ooRQTqSUKWHjfGysGY1HZ2/e39/fHxrPGYcjIcR2t/XOw3DeIYRgMvyw1No5xzDGsBshH2I0GadxJNcnJ6J0e2zDJCfSt13LGIUggrEnEIudtgMKzF7vUsGRMYwiH0gZCUwIIrCiuO97IPW8WwMXwoMwCJ0z2ihGCRwRSinB3uNXIGKdHRJQygjy2DsL+QjClB/LmlNa7o8xwefjtLF8v9/RIPlxDVCctdoY9DqAESSDxxFCmEzSIAhDpODA6h4+iUh72AJhepZkWaZbWXuvtMYEX06nlLHVatXUjXOWcQ7cfzyT3f58q7RC5XetNfA0xihDjbY3o4yq/sNV/rXaRFiHk3hVlvmFzPPJf6uvaYig5kCNUy6pAmrs9LyBJNzZOJCLTWW0joopEvZovBDht7t/A4IvRqJrq5D1l5Pg/cc3f/7RR1b2vYojHkVCa6aUYqmEstle0VPbWded/1TUps+ymDjzsFxwyqIoelpXUOZKsno2XyzX39f7eTqGfU6w6ZW2dmB0MR3DCzcbYevm01V+fX3T9s1wrerylEvkrXMEJ4uHXefD3XZf9iCQcFjWvRPEAwR24C7HrII4Mj4TH95d1v3B6KasajwIbAFOSDYaZQgz9+BUpZb3y0YtcatbVEM101QURWFbsJFhy6fNoFfXncouGcuq7mrVD8Y1DmqvkHzaH9+9ffvp8+e//7mLZMA4bU4lQjoIeBrQJKAWAxBm28NRKS0ddhY7Gmmjwf/gC9CPUAK8APPL3bfHx5Vj4bFqppORmBZd7yijhpBagds5DyJWl0c8WM0jLIlXsaSthSAyOc8hgVWAC9ys4E4mMTiOi2C/Lx+3J1AtGxWzqKBUVl3PGj67ms1cNAuKvBfWc95WjTW2xYEmOpXr+Xx+xk5t0/rtX5xr6nbX0/Y2g6YxVD4nccOjycvLCzuYi9ubX47ZrxtriRv8jbOhj0BTFCBLyzC7+i3+3VpXpI+vXUoHpcgQQ4CsK1uBv3SL/wHXbOyDUarn+gAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Charge (2022) + Spring (2019)","rights":"cc-by","note":"Cross Dissolve between two shots, with the timeline strip of the edit. Footage: Charge (2022), Blender Studio | studio.blender.org, CC BY 4.0; Spring (2019), Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0.","bytes":234410,"addedAt":"2026-10-28"}},{"id":"heygen-com/xfade-cover-reveal","slug":"xfade-cover-reveal","name":"Cover and Reveal","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["xfade","ffmpeg","hyperframes","capcut"],"summary":"B slides in over a still A (cover), or A slides away to uncover B (reveal). Variants: cover*/reveal* in four directions.","description":"Built on [Cover Transitions](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-cover) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nOne shot stays put while the other moves over or off it, like a card sliding over a card.\n\n**When:** Stacking scenes in a product walkthrough, deck-style explainers, card-based layouts.\n\n**Watch out:** Covering with a shot whose edge has no shadow — the layers look flat; add a soft shadow in HTML engines.\n\n**Timing:** 0.4–0.6 s, ease-out on cover, ease-in on reveal.\n\n**Also called:** Cover (CapCut), Uncover, Slide over\n\n### In FFmpeg\n\nBoth inputs need the same size, frame rate, timebase, SAR and pixel format (`settb=AVTB` fixes the timebase error that `fps` alone leaves). `offset` is where the transition starts on the first clip's timeline (its length minus the overlap).\n\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n \"[0:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[a];[1:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[b];\\\n  [a][b]xfade=transition=coverleft:duration=0.5:offset=4.5[v];[0:a][1:a]acrossfade=d=0.5[a]\" \\\n -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\n`npx hyperframes add transitions-cover` shows the family; tween the top clip's x with a box-shadow on it.\n\n### In CapCut\n\nTransitions → Slide → **Cover** / **Uncover**.\n\n### Ready-made components\n\n- [Cover Transitions](https://skills.varg.ai/component/hf.transitions-cover/) (hyperframes): npx hyperframes add transitions-cover\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg xfade gallery (trac wiki)](https://trac.ffmpeg.org/wiki/Xfade)","useWhen":["Stacking scenes in a product walkthrough, deck-style explainers, card-based layouts."],"notFor":["Covering with a shot whose edge has no shadow — the layers look flat; add a soft shadow in HTML engines."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-cover","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Cover Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-cover/","license":"Apache-2.0","note":"Showcase of cover/uncover slide transitions"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg xfade gallery (trac wiki)","kind":"link","url":"https://trac.ffmpeg.org/wiki/Xfade","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Cover and Reveal"},"take":{"engines":["ffmpeg","hyperframes","capcut"],"components":["hf.transitions-cover"],"aliases":["Cover (CapCut)","Uncover","Slide over"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/023d8a23fd09/take-xfade-cover-reveal.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADb0lEQVR4nD1UW28bRRQ+c91dZ31LHMdRLrgJjSUuVR6qSn1AeUGChz7xJ1D+D+J38IhAPKalArUUCiYVKWnskMRxHK+9t7kzjhDzMDranfPNd77znUEHvZhgUs6t0pqRCCH0iE7WO5395QsAUHFYFuXXJ93Dw0P85EshROS0/46d9CeNkYQQh+PZbEbhblHOhBIWDMH4T8EmBXnPQby0VM7g5gYicIHVyhkEFhuHCb7OZ1LK6+n3rVar3fhM2GwBZKyhlGIM2FpwkIW1YWGOBnUP9CC5iK0/kiKdU53BAothhJJCnZy8PU+utkpu4ZlPo865O06WECyVR8QhItjB7znDwigT+vsDa7nRuVUeyGHwxNtpPLomH9JPG0nj5fy7drtNOWcYY+KoUsLXHkXMWqO00sYgo48kpoyJoNpPYaPIOOOSiaOnT68mx92dLr1+oCDg1bWkxHQmCKOswoBFFR5pzrGRWOUZxlwpTZniEctQnAhC3ky3t7b65Y+vz34iOnRn4/v3B+MsX1qxzhk6mpQIiVoFdnd3TZpkWS6NxUHEPaRUqFDYoqyRDfXg2/IHesou5VuzZR1R1k5PpgPfu4//YnEcUx95mZTy9YVxM5rOz0Q6rtcbBOWYWU/UyyedBArpSjmdXmpcIoosKCCgJC/y4vwXvre3QSOGrHXMiHI6zsycM11ZqXAOLMCMBjF3hBITdI9f/TEnO733P5k0fs3yfAZjfzNTsL//8PODRzc3Y3pvLTJGi7lDMg1CHTAIAsI5YZx57UKmgyBYrS1fjUZ/v3h31h+tdsK93kfV7qAocoSyVmv5YW/vt76kG1traZau9lo+jzBntOdmvB3q9WqtVosj7feV+IPseQoSjBKXp/l4+HNnt92od2ZF8uz28iz8xjuePn99gRDull7snc3Nim9wmt16pYOQLXZvPj8KCAwsfAkII2KN08Pj86EbAvI/Bt5cPqBKFIyx61sq3ozmM7q9vd2oWIqUk95N0qKqsTozUioAx/yEOOQDCxj+W5iAbwgm9FI097o9vrIjCT7W5lW/qC21m40mxosCG2S23lnnmm00Nw/US18+suUi35EFP2TuZqKaJAmdwD3oPP5n6bGzDjmN6njq7Dvp6RLnbBXfttP2F/qr9VXyhL/wI/0/kwUQLF4Cwbf7/dN/ASE713nLNcnaAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023) + Coffee Run (2020)","rights":"cc-by","note":"coverleft between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":228736,"addedAt":"2026-10-28"}},{"id":"heygen-com/xfade-smooth-wipe","slug":"xfade-smooth-wipe","name":"Soft-Edge Wipe","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["xfade","ffmpeg","hyperframes","capcut"],"summary":"A wipe with a wide, feathered edge so the two shots blend along a gradient. Variants: smoothleft/right/up/down.","description":"Built on [Colorama Wipe](https://github.com/heygen-com/hyperframes/tree/main/registry/components/colorama-wipe) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA blurred band moves across the frame, mixing A and B inside it.\n\n**When:** When a hard wipe is too graphic but a dissolve is too slow: travel, landscapes, lifestyle b-roll.\n\n**Watch out:** Using it between two busy shots: the blend band turns to mush.\n\n**Timing:** 0.6–1 s.\n\n**Also called:** Gradient wipe, Feather wipe\n\n### In FFmpeg\n\nBoth inputs need the same size, frame rate, timebase, SAR and pixel format (`settb=AVTB` fixes the timebase error that `fps` alone leaves). `offset` is where the transition starts on the first clip's timeline (its length minus the overlap).\n\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n \"[0:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[a];[1:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[b];\\\n  [a][b]xfade=transition=smoothleft:duration=0.5:offset=4.5[v];[0:a][1:a]acrossfade=d=0.5[a]\" \\\n -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\nMask the incoming clip with an animated linear-gradient: `maskImage: linear-gradient(90deg, #000 40%, transparent 60%)` and tween the mask position.\n\n### In CapCut\n\nTransitions → Basic → **Gradient wipe**.\n\n### Ready-made components\n\n- [Colorama Wipe](https://skills.varg.ai/component/hf.colorama-wipe/) (hyperframes): npx hyperframes add colorama-wipe\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg xfade gallery (trac wiki)](https://trac.ffmpeg.org/wiki/Xfade)","useWhen":["When a hard wipe is too graphic but a dissolve is too slow: travel, landscapes, lifestyle b-roll."],"notFor":["Using it between two busy shots: the blend band turns to mush."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/colorama-wipe","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Colorama Wipe · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.colorama-wipe/","license":"Apache-2.0","note":"Headline reveal through a feathered, leaning wipe front that is blurred and colour-mapped as it passes, then settles to clean type and wipes off again — the After Effects masked-text + Compound Blur + Colorama 'shiny…"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg xfade gallery (trac wiki)","kind":"link","url":"https://trac.ffmpeg.org/wiki/Xfade","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Soft-Edge Wipe"},"take":{"engines":["ffmpeg","hyperframes","capcut"],"components":["hf.colorama-wipe"],"aliases":["Gradient wipe","Feather wipe"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/4a6dc1e4a246/take-xfade-smooth-wipe.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADe0lEQVR4nCVT224bVRQ9t7mP7fE49iQxuEmpk7YCISH1FfUL+JPyO/wBFSC1SDy2ohJCoupDX4oSQkWci5P4Fl/GM55zZs6FHdgPRzpHe6+z9lp74x+e/47uQhOM3Xq3Vqv99OL5i5cvmw1ijKFEOhDYuJ4LOUIITAwhRCMNNa5NXNdVMg+CgFVcQCYBGIwJZUojYiysKcXIcd1KFPPpoigyKOh1W1GjxnluMQtjDdB7va1ud3d0c+F5Hnv3p+z39+8nQ6Uqo4hRWGvTaERxywFGAmHSYGE9StP04nL68LD1qN9WWslK2La9v9P4bH/76692tFIMWz6XmFEDl0rmjsGI6vb2VruNJpOJHTIqUVnJALlVaR0PBg+6j3eThG+W0MFquRpeDu/X67ZtMaOp4JoiwzAykmNJRKW0wWHg0ySZLng98sfjEaLEDUiZpr/98fbZt896jaCqKouVcdyI2wz0YmVJOUd3AmHMsNClzFXlt5phaHWSRKECVBD8A8Gp69WqajKbnW8UOXiyWxSFJ9IwdIK2QwlhQd3j1UYrDKCMhrez22UleocHvfoCdIkcgnimjUIYFAOnTOh4rXpE426IkEWuS61DO5dKMwxohJaKAqGz8eZmtJqvdYLDR/cILwKPGlBqMr0C1zD2CUVhaB/271leOJvNtn0mpTSjMssyBj1BGGSvVunxh3Mw0ib21cXVOyY9z8/L9WRxna2nWvs2EkSm7ch78+qXyY+zk79PYhc34zh2MsYs5lECMzO9xHluRc0vOS9s/fHy42D4z41lMVtkURR9/vjB6elpud7Eod8/2BsOB5v1ddMtuSnGi/RaL7UxTJTQuabJVlXN+p8kR0dHhKtssmAkLRDCOneoJ1TuUydfLxzHOz+bZXkWxQKcUrTM1xutYbA0Yw6RSo6v8WiksmLmOC3XUtlq7FrTu8XR6uh4rlUBtInmRVUs0jwMA7EswH5mGVgax3M2hWBBzUpT8JhB7HTbZ4OBFjBNFSIp2CQNupPTGPheKGkKngl5u84sW5eitF3wmjIGcJi9+vX71tbW2XAP/jeDcVmWtyTwew8p+xQ6b6FZ0umEdME5d9P3BOeACO/QM+RbFP+3Ru58nrM3r39+8vTpPOzAE0PV3WSG/eYXhxpRYBTiZdDpfON9B1Xt9ZJgotH/AVwQQRJOYcd/ndz8C0Kr9dhsYL0/AAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Coffee Run (2020) + Cosmos Laundromat (2015)","rights":"cc-by","note":"smoothleft between two shots, with the timeline strip of the edit. Footage: Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0; Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0.","bytes":251134,"addedAt":"2026-10-28"}},{"id":"Remocn/xfade-circle-crop","slug":"xfade-circle-crop","name":"Circle Crop Through Black","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["xfade","ffmpeg","hyperframes","capcut"],"summary":"A closes to a circle on black, then B opens from it — the cartoon “that’s all folks” beat.","description":"Built on [Iris Wipe](https://remocn.dev/r/iris-wipe.json) by Kapish Dima (remocn), MIT. The write-up and recipes below are varg's.\n\nThe frame shrinks to a circle, the screen goes black, and a circle grows into the next shot.\n\n**When:** A playful end of scene, comedic beats, retro edits.\n\n**Watch out:** Using it in a serious piece; it always reads as a gag.\n\n**Timing:** 0.8–1.2 s.\n\n**Also called:** Iris out / iris in, Circle close\n\n### In FFmpeg\n\nBoth inputs need the same size, frame rate, timebase, SAR and pixel format (`settb=AVTB` fixes the timebase error that `fps` alone leaves). `offset` is where the transition starts on the first clip's timeline (its length minus the overlap).\n\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n \"[0:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[a];[1:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[b];\\\n  [a][b]xfade=transition=circlecrop:duration=0.5:offset=4.5[v];[0:a][1:a]acrossfade=d=0.5[a]\" \\\n -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\nTwo clip-path tweens: `circle(75% at 50% 50%)` → `circle(0%)` on A, then the reverse on B.\n\n### In CapCut\n\nTransitions → Mask → **Circle** twice, through a black frame.\n\n### Ready-made components\n\n- [Iris Wipe](https://skills.varg.ai/component/remocn.iris-wipe/) (remocn): npx shadcn@latest add @remocn/iris-wipe\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg xfade gallery (trac wiki)](https://trac.ffmpeg.org/wiki/Xfade)","useWhen":["A playful end of scene, comedic beats, retro edits."],"notFor":["Using it in a serious piece; it always reads as a gag."],"publisher":{"name":"Kapish Dima · remocn","handle":"Remocn","kind":"community","verified":false,"url":"https://remocn.dev","avatar":"https://github.com/Remocn.png"},"source":{"url":"https://remocn.dev/r/iris-wipe.json","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Iris Wipe · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.iris-wipe/","license":"MIT","note":"An old-cartoon iris closes on the subject, holds a beat as a dot, then opens on the next scene."},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg xfade gallery (trac wiki)","kind":"link","url":"https://trac.ffmpeg.org/wiki/Xfade","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Circle Crop Through Black"},"take":{"engines":["ffmpeg","hyperframes","capcut"],"components":["remocn.iris-wipe"],"aliases":["Iris out / iris in","Circle close"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/8b9e2ae88080/take-xfade-circle-crop.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAAAfElEQVR4nGNkoBJgGTVo1KBRg+hlEC+vpNRvVnEgh5HhP1ziPwPjv3//+ZjfSkpI8jF//PbtG9vXa8xMDMz/0I34y8jy4eMfFgYxIwNr+w+81v///2Ni/AOX/vefCUjyMLwVFxP3454GZAt/usfMxIRsBMTiH+wy16/fBgCHayNZ5peTvAAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Charge (2022) + Tears of Steel (2012)","rights":"cc-by","note":"circlecrop between two shots, with the timeline strip of the edit. Footage: Charge (2022), Blender Studio | studio.blender.org, CC BY 4.0; Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0.","bytes":209025,"addedAt":"2026-10-28"}},{"id":"vargHQ/xfade-rect-crop","slug":"xfade-rect-crop","name":"Box Crop Through Black","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["xfade","ffmpeg","hyperframes","capcut"],"summary":"A shrinks into a rectangle on black, B grows out of one. A boxy cousin of the iris.","description":"The frame closes as a rectangle to black, then opens as a rectangle on the next shot.\n\n**When:** Tech or UI-flavoured edits, framing a screen inside a screen.\n\n**Watch out:** Leaving the black too long between the boxes.\n\n**Timing:** 0.6–1 s.\n\n**Also called:** Box in / box out, Rectangle mask\n\n### In FFmpeg\n\nBoth inputs need the same size, frame rate, timebase, SAR and pixel format (`settb=AVTB` fixes the timebase error that `fps` alone leaves). `offset` is where the transition starts on the first clip's timeline (its length minus the overlap).\n\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n \"[0:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[a];[1:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[b];\\\n  [a][b]xfade=transition=rectcrop:duration=0.5:offset=4.5[v];[0:a][1:a]acrossfade=d=0.5[a]\" \\\n -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\nTween `clipPath: inset(50% 50% 50% 50%)` to `inset(0)` on B after the same move closes A.\n\n### In CapCut\n\nTransitions → Mask → **Rectangle**.\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg xfade gallery (trac wiki)](https://trac.ffmpeg.org/wiki/Xfade)","useWhen":["Tech or UI-flavoured edits, framing a screen inside a screen."],"notFor":["Leaving the black too long between the boxes."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/transitions.md#xfade-rect-crop","repo":"vargHQ/skills","path":"varg-video-edit-library/references/transitions.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg xfade gallery (trac wiki)","kind":"link","url":"https://trac.ffmpeg.org/wiki/Xfade","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Box Crop Through Black"},"take":{"engines":["ffmpeg","hyperframes","capcut"],"components":[],"aliases":["Box in / box out","Rectangle mask"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2cce3deb076f/take-xfade-rect-crop.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAAAp0lEQVR4nGNkoBJgGTVo8BjEyKOmp//31++7t24x/P1AgUH/vzx9dPv//3/4TSHCIAaGr+9fEVRDlEFEguFtEDevhNRvNql///4zAWMHBv4xMgFJXqY3khKSfCyfvn//wfbxMgtQ+V90I/4zM73/8I+FQcRI39r+A5/dv///Wf7/RkiDDeJmeCMuJu7POZ2RiVHww21mZqAgI1wNI8N/IPmTTeb69VsAFkU4ovRUH+cAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023) + Sprite Fright (2021)","rights":"cc-by","note":"rectcrop between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; Sprite Fright (2021), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":251650,"addedAt":"2026-10-28"}},{"id":"heygen-com/xfade-distance","slug":"xfade-distance","name":"Color-Distance Blend","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["xfade","ffmpeg","hyperframes"],"summary":"A blend that swaps pixels by how different their colours are, so similar areas change first.","description":"Built on [Cross Warp Morph](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/cross-warp-morph) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nShapes of B emerge where A and B already share colours, then the rest follows: a soft, organic morph.\n\n**When:** Two shots with matching palettes or composition: sky to sky, face to face.\n\n**Watch out:** Using it on unrelated shots, where it looks like a muddy dissolve.\n\n**Timing:** 0.8–1.2 s.\n\n**Also called:** Morph blend\n\n### In FFmpeg\n\nBoth inputs need the same size, frame rate, timebase, SAR and pixel format (`settb=AVTB` fixes the timebase error that `fps` alone leaves). `offset` is where the transition starts on the first clip's timeline (its length minus the overlap).\n\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n \"[0:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[a];[1:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[b];\\\n  [a][b]xfade=transition=distance:duration=0.5:offset=4.5[v];[0:a][1:a]acrossfade=d=0.5[a]\" \\\n -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\nClosest: the `cross-warp-morph` or `domain-warp-dissolve` shader transitions.\n\n### Ready-made components\n\n- [Cross Warp Morph](https://skills.varg.ai/component/hf.cross-warp-morph/) (hyperframes): npx hyperframes add cross-warp-morph\n- [Morph](https://skills.varg.ai/component/glt.morph/) (gl-transitions): npm install gl-transitions\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg xfade gallery (trac wiki)](https://trac.ffmpeg.org/wiki/Xfade)","useWhen":["Two shots with matching palettes or composition: sky to sky, face to face."],"notFor":["Using it on unrelated shots, where it looks like a muddy dissolve."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/cross-warp-morph","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Cross Warp Morph · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cross-warp-morph/","license":"Apache-2.0","note":"Shader transition with cross-warped morphing"},{"role":"component","label":"Morph · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.morph/","license":"MIT","note":"Each shot warps along the other's colors, a liquid morph that melts one image into the next"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg xfade gallery (trac wiki)","kind":"link","url":"https://trac.ffmpeg.org/wiki/Xfade","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Color-Distance Blend"},"take":{"engines":["ffmpeg","hyperframes"],"components":["hf.cross-warp-morph","glt.morph"],"aliases":["Morph blend"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a5cbae824201/take-xfade-distance.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADUklEQVR4nB1Ty24cRRStd1e/PQ/GM1aCLDzBwogkmyy8QCz5R34BseEjgsSCIEDBkoPtKLLjGc/LPdNd3fXkjqukWtxbde49557Cp9+9IoRwjIQQMUbD4TDiLEtTExfz2VwTSQilGFlnO629gx28dwghzjgK+0AWQcQzZD2PeC9CseSSoJ5kIZjXZyc3G19X28Vss91tI4LSJC0PckpF642zOJHRYDDAwdV1M8zEer0CWBdzkmdcyqiIIsFxmpdxImYXV9f/ffi0rLuu8wgxSke9bDqd9tNEte1BIXuFvF90nWNY8P7hIVzwnAbkAwmIkBCQJSz++Zdf310vtdEeC2CBMAIO8+WqNRdvXp4cpBKbTm1WheDC2yItn6gholRXEGsxclRncXn18ePf7993pADVlIdeGHbOaMsEW6w2F5e348lEaUNIYzw1Wv91szXWsKNeFkIYClWWCeOEuzYrilZrjRQFyRJJadDGspgi5BjnRq2Iz19On9/d3v15U+d5/jx7GB+P2eko45wNOD487L+9aZb3i8H0OBtOXNVivKckIpGyPWugaGwjghE2j+i4Wt2eT8uzs2eumTMW2EPlhKCm6C9mftSXr75982Gumd1JIQHIWltVVREBEGmaGobdNObz7GI+W5+fn7/+KsY4oIOJ1oZlCTQESomus7X3m6vb67vHPC8zjDjn7sk5kiOAA82bWqnWnp5+PX3x5XqzfPuHT5KUEAXNst/eXUJlj1FRFEh4qIwIjhIJXttLyDCJGEW4qsEx2HqMKUWU/nP5ablcZmk0Go0kbfZAO60pAf/SYKzMY1AZHnIaFYnYbreVahHyAF+W5a5+7DqTpwwjHdxyPBLPxnIwEJDfA3kEZUUAt+JAsIFLMCNIrB4bKWXmPRiy2qnZ5wdK6OSwd3I0VEptKhpF7J6rXbeOONqrg0mwThPvrBcCB8A0DiKOE+Q7Bfw6tXWeFmXaGGoReahq0CXOjRBgJORVSEjsjWcbezCZHLlo0ko55zBBoY03xgRCvXP9bHP84osUr6CvsPhdSk6R4twabxkNOIBmGkm8WC7Y2h99M/1hnX/fetcFCx8Zg977tT9rtExHox/TnzDm/UdwVveUap+yHUYGzNyJ7N9u9T8SCd/z9VH9CAAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Cosmos Laundromat (2015) + Spring (2019)","rights":"cc-by","note":"distance between two shots, with the timeline strip of the edit. Footage: Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0; Spring (2019), Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0.","bytes":283409,"addedAt":"2026-10-28"}},{"id":"Remocn/xfade-pixel-dissolve","slug":"xfade-pixel-dissolve","name":"Pixel Dissolve","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["xfade","ffmpeg","retro","hyperframes"],"summary":"A dithered dissolve: B appears pixel by pixel in random noise instead of a smooth fade.","description":"Built on [Dither Dissolve](https://remocn.dev/r/dither-dissolve.json) by Kapish Dima (remocn), MIT. The write-up and recipes below are varg's.\n\nSpeckles of the new shot spread over the old one like digital noise until it is gone.\n\n**When:** Retro, glitchy or game-styled edits; a lo-fi alternative to a cross dissolve.\n\n**Watch out:** Small output sizes: below 720p the noise looks like a compression error.\n\n**Timing:** 0.5–0.8 s.\n\n**Also called:** Noise dissolve, Dither dissolve\n\n### In FFmpeg\n\nBoth inputs need the same size, frame rate, timebase, SAR and pixel format (`settb=AVTB` fixes the timebase error that `fps` alone leaves). `offset` is where the transition starts on the first clip's timeline (its length minus the overlap).\n\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n \"[0:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[a];[1:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[b];\\\n  [a][b]xfade=transition=dissolve:duration=0.5:offset=4.5[v];[0:a][1:a]acrossfade=d=0.5[a]\" \\\n -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\n`npx hyperframes add ordered-dither-pass` for a Bayer dither, or `halftone-dissolve`.\n\n### Ready-made components\n\n- [Dither Dissolve](https://skills.varg.ai/component/remocn.dither-dissolve/) (remocn): npx shadcn@latest add @remocn/dither-dissolve\n- [Ordered Dither Pass](https://skills.varg.ai/component/hf.ordered-dither-pass/) (hyperframes): npx hyperframes add ordered-dither-pass\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg xfade gallery (trac wiki)](https://trac.ffmpeg.org/wiki/Xfade)","useWhen":["Retro, glitchy or game-styled edits; a lo-fi alternative to a cross dissolve."],"notFor":["Small output sizes: below 720p the noise looks like a compression error."],"publisher":{"name":"Kapish Dima · remocn","handle":"Remocn","kind":"community","verified":false,"url":"https://remocn.dev","avatar":"https://github.com/Remocn.png"},"source":{"url":"https://remocn.dev/r/dither-dissolve.json","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Dither Dissolve · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.dither-dissolve/","license":"MIT","note":"A dithering shader transition that dissolves one scene into the next."},{"role":"component","label":"Ordered Dither Pass · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.ordered-dither-pass/","license":"Apache-2.0","note":"Bayer-matrix ordered dithering quantizes a slotted scene (rasterized once at mount): the image emerges from pure 2-tone noise to clean, or dissolves the reverse. Stateless per frame, never error diffusion."},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg xfade gallery (trac wiki)","kind":"link","url":"https://trac.ffmpeg.org/wiki/Xfade","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Pixel Dissolve"},"take":{"engines":["ffmpeg","hyperframes"],"components":["remocn.dither-dissolve","hf.ordered-dither-pass"],"aliases":["Noise dissolve","Dither dissolve"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/3b78844da138/take-xfade-pixel-dissolve.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADZElEQVR4nD1T2W7cNhTlTomaGWlGyiy2J5tTZ1IgSJ6D9qkf2T9qDRtuERg2DCO1XccIZpdGo50iWfql94EkCPLee849B/765T1CiHI+6A8owWmaeigVnvd929zd3QmvZ4NjYwOB5831eqpVCkB7BlojhJWRSZwQAIBwxezzl34Q7JbrMGx5/o1znhbrDsWTg3cYk2W8Mtr4HAZ9fzQ6TJI4Tsu2VQQp+x0zqI0h+6INh0EoxGY+15v1y+m0xaGt45H05Wjy8d1bQujFP/D+4V5QZxBGpm32SSylYZTZJBBBAxqMEakhGr9+QzHGz8nBarWgzERRANF3xunA8+yjsNf7gTAFCBtATdtltJQNoaRtKk6dusWWGxL1/CJJlONmm+Uu2ZRleTjyKINMCJ3nf5ydBkHgcDbucENAr+tKBUyauZraThFoEQZVIQFCBLr8682Nj5Af9nVTN1X9uFjcPT0J4VguCebxdiss39yp6s3lxelKwvezGYN1UWQuYWVRt4AoQMlsNHkom32RRcMXl/O57WiexEq1P786kq1sYGVvKllb3H0vWiwWooumo2CV6vKHRIYcjKLpdHp1dUVMqwTnf579rSE7fHtye3urSO0Fne02dRxHwsoSus9i3/dRZSI3gFHQYf1ClI7rcIXtmzJLe8Ihl9c34/G4rKuzi/PJoGubkAiVSiHmplJXeeIJwTWua1PBuiyLThHKvTYAUMQwMBBCA4GGgPQmE8X58clPWZZtdzv6HNwCicvcrq/CwezDh+18uVqtYlBLqPu79PHir41L7ahaBizjpBVFvCNABIBzmu+tdoZRlCSJBNqhTOfSSgJhJJuGY6IaCTh9MRmxAhmjZZFaVPfLpdi6LgBZlpM6XSVlaQtsk7h1hTRIy9zzhfVDK8s0w6fn569FwFvjOsy1RThvmgYqCwvVmCFI1/FKeIJ0mJF5YYyX57m2Yut2BdIEml7QIwQfBUMLSjuulo0Wge50kni33qyVpSbN86YIen06OrQwyeW/MozeKHrkn3zsdD1rYF3mxnWte21lbppoNvNhIqXsFl8hRCXdDscAqNbSfAwk54XjH2X7PXl8IgfHn5LuL5baTDfW01BACYDpEApAqtZOf/hb93ebYpA8WgPbef0fVtkANCVLr68f/gNIwdciP51oEQAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Tears of Steel (2012) + Charge (2022)","rights":"cc-by","note":"dissolve between two shots, with the timeline strip of the edit. Footage: Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0; Charge (2022), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":478559,"addedAt":"2026-10-28"}},{"id":"gl-transitions/xfade-diagonal-wipe","slug":"xfade-diagonal-wipe","name":"Diagonal Wipe","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["xfade","ffmpeg","hyperframes","remotion","capcut"],"summary":"A wipe that enters from a corner on a diagonal. Variants: diagtl, diagtr, diagbl, diagbr.","description":"Built on [DirectionalWarp](https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DirectionalWarp.glsl) by pschroen (gl-transitions), MIT. The write-up and recipes below are varg's.\n\nA slanted edge sweeps from one corner to the opposite one.\n\n**When:** Sports, energetic promos, splitting attention between two subjects.\n\n**Watch out:** Following a diagonal wipe with a horizontal one — pick one geometry per video.\n\n**Timing:** 0.4–0.6 s.\n\n**Also called:** Diagonal (CapCut), Slash wipe\n\n### In FFmpeg\n\nBoth inputs need the same size, frame rate, timebase, SAR and pixel format (`settb=AVTB` fixes the timebase error that `fps` alone leaves). `offset` is where the transition starts on the first clip's timeline (its length minus the overlap).\n\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n \"[0:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[a];[1:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[b];\\\n  [a][b]xfade=transition=diagtl:duration=0.5:offset=4.5[v];[0:a][1:a]acrossfade=d=0.5[a]\" \\\n -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\nClip-path polygon tween from a corner, or `glt.directional-warp` for a smeared diagonal.\n\n### In Remotion\n\n```tsx\n<TransitionSeries.Transition presentation={wipe({ direction: 'from-top-left' })} timing={linearTiming({ durationInFrames: 15 })} />\n```\n\n### In CapCut\n\nTransitions → Slide → **Diagonal wipe**.\n\n### Ready-made components\n\n- [DirectionalWarp](https://skills.varg.ai/component/glt.directional-warp/) (gl-transitions): npm install gl-transitions\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg xfade gallery (trac wiki)](https://trac.ffmpeg.org/wiki/Xfade)\n- [Remotion transition presentations](https://www.remotion.dev/docs/transitions/presentations)","useWhen":["Sports, energetic promos, splitting attention between two subjects."],"notFor":["Following a diagonal wipe with a horizontal one — pick one geometry per video."],"publisher":{"name":"pschroen · GL Transitions","handle":"gl-transitions","kind":"community","verified":false,"url":"https://github.com/gl-transitions","avatar":"https://github.com/gl-transitions.png"},"source":{"url":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DirectionalWarp.glsl","repo":"gl-transitions/gl-transitions","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"DirectionalWarp · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.directional-warp/","license":"MIT","note":"A diagonal wipe whose leading edge smears and stretches the pixels it passes over"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg xfade gallery (trac wiki)","kind":"link","url":"https://trac.ffmpeg.org/wiki/Xfade","license":"link-only"},{"role":"source","label":"Remotion transition presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Diagonal Wipe"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["glt.directional-warp"],"aliases":["Diagonal (CapCut)","Slash wipe"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/c942c135d952/take-xfade-diagonal-wipe.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADO0lEQVR4nCVTy3JbRRCdnumZuU/JUriK7CBsoxBTFAS8oQo2/AS/x1dQFD8Ai+zIAggFVFLB4FSwJdV9SHfetM0spqamX6dPn4avLirBxdhF570UOQB8jpvj5fKz+TVjbKyzwzh+9/vxZrv9kx/Tj91dTSaTKouXl5fTeTEexm+/fxZjRHZ/UEnjTGRBcP7CyM1BnCZWFoVp+faWFSxZYACcAoxk608/ulhqlNI7I5FdfHja9/1dohADInLOyDHFOGSTq0P44a9pWZZP2+s6sZCcQE6hxpgnZ2e54CEm8IHgcy6efvz41cuXmFK6xxSF4NYFIag9wRP7ZS+5CSZk9C+YVcxLYIGlxazUELxLhD0BxBi425+cNKiU5JQ2oXOGMZ7nmmzOOx8C+f/oqAP5Lo+AZYqGg5daL46Xgg3OOYb3DXFQSmFrhERZKlBlpaJVigdLNQbOKbUDDDpXe8y8c7ftfrFYeFH92zrkbnZ05IOjqqBF0grfbkYAMynYer0O/XYYBheB61xLJawzpiMixokInjV1LYS7akd7037yeMnLuRp7skJd1HWF9CCanKP+smq23HWvx24znR4h3wsVNeaIwkMUyIqc932nynq6qEIuUi5UmuV5nial9QFLCTQCGcy4u9nHXklXPCiUYrpQWZYFDTRQo7i19rY3qmCGm+ZBY6bptX1zFqaJQeqmgtg6fZiH4G3PwPY69wqZ0EJrrCqSUTHKIBFjSTnzE6jGcTQwFYhwVyXbzlQrRCNrFAIfrR72Q99caJoOJ32QjoyjWRTz+aSe8FwSeCPqO5WzCjhs+th13aFnB/LTEiD8Ia+JHHz2899E06nB8/fP16tCSbVtW4EiyJxUYbgajN0nQ6310XofukjEh50XJM7Oj1R5n3gMEd1oCMvmFrx7u29xtVrpLKQUrGNUZwBlrW8ZAYU2Aklnm6T30AflPbYBKekQ+R2iN2b2wXtPsFkfOPwW/PMXY1k9quuaZEbmkg9N0yy0Gfo+756nFJtEYdFHHlIwHCMGA/Vut8MNO4eTL/8pv0gxcRbZlO3o5WlvBPFSw83OvPO1/oZVbOZ/ogWC+4X6f60wBbpNtvp1ePUfKD/WBuFDEGMAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023) + Coffee Run (2020)","rights":"cc-by","note":"diagtl between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":242829,"addedAt":"2026-10-28"}},{"id":"vargHQ/xfade-fade-grays","slug":"xfade-fade-grays","name":"Fade Through Gray","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["xfade","ffmpeg","hyperframes"],"summary":"A drains to black-and-white, crossfades to B in gray, and B regains its colour.","description":"Colour leaves the frame, the two shots blend in monochrome, colour comes back on the new one.\n\n**When:** Flashbacks, memories, moving from past to present.\n\n**Watch out:** Using it between two shots that are already low-saturation; nobody sees it.\n\n**Timing:** 0.8–1.2 s.\n\n**Also called:** Desaturate fade, Memory fade\n\n### In FFmpeg\n\nBoth inputs need the same size, frame rate, timebase, SAR and pixel format (`settb=AVTB` fixes the timebase error that `fps` alone leaves). `offset` is where the transition starts on the first clip's timeline (its length minus the overlap).\n\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n \"[0:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[a];[1:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[b];\\\n  [a][b]xfade=transition=fadegrays:duration=0.5:offset=4.5[v];[0:a][1:a]acrossfade=d=0.5[a]\" \\\n -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\nTween `filter: saturate(1→0)` on A and `saturate(0→1)` on B across a short opacity overlap.\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg xfade gallery (trac wiki)](https://trac.ffmpeg.org/wiki/Xfade)","useWhen":["Flashbacks, memories, moving from past to present."],"notFor":["Using it between two shots that are already low-saturation; nobody sees it."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/transitions.md#xfade-fade-grays","repo":"vargHQ/skills","path":"varg-video-edit-library/references/transitions.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg xfade gallery (trac wiki)","kind":"link","url":"https://trac.ffmpeg.org/wiki/Xfade","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Fade Through Gray"},"take":{"engines":["ffmpeg","hyperframes"],"components":[],"aliases":["Desaturate fade","Memory fade"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/8ee597135394/take-xfade-fade-grays.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADV0lEQVR4nB1T2W7kRBStzVVe0vvenSbJMLQEEtKAEA888Zd8Eg+Qp5FmJhNAhCSTpW23u1xey1XFTWzJKl3Xucs55+Kff/qWUeZxMRoOR+NxnuelSoUQXJzc3t5WdQPnXuQjhApVUUoRJYRQY7FzjmCDMcEYqzxncIN57PxiB3l6vYFS6uH2uigLbYowCpfr87bVhZKtbgHgeR4iBCCEvACRNfChELCOVU3bH44HvV6lFGqafr93Z43pTF3X0Mub7amx9mEff/p0JTgKPOY6SwCKCXSEXtM51FmMWFmb6GQIfzDECUmTtCrrIAgpo+vVers5fXh4HA1gOE+bBuIMY93pWsN1h3Tr+0FrHYzLgBqP8043qpC28wGWZWkYhtwXqlBJkh4OqXHW50Ig9vbN14D59+bGoM5ZB93AvEZbQjz2/bsfClU0up3MpjI5MEa11lmW7XY7zvh8OpHZoWqazWp9f3+dp4/Yi9IkYdwHiQjzgAFEvbZzbBxGcr8/Nogy9vjwmB7SBmgwtmkazvn7D++tBQYoiECwCMPh22/O7m6uORfAjjF2u92Ox6M/Ly9ZXapB7+T3Py6Xi0XgcYdpJuvzi4ujLO++PE1GAwA8x/uqqrbL1Xy+WM1OB9GY+BH0whimlORHGfkBU007Gk+BqTiJN4vJYjXmg8gTPJdFZdBTnDCQHDlCsDoc8yRLp0XbYQEmovASCoNgAr0zi9mxKE/PtmDFOpdB2Ktr1ZlC5hIifY9t1htMoX7Vqerqr8/Pj4kp6qSpgWzI8WJDiosyZ0Wrq6N8/nILpERC2GMupfR9v67LTrfUZ2WVz+abyXT5z+eP4aDvOUyQ67QJguD+6b9UplZ3bduyMnne7/caoTiOmygAOXOl2rYC12JnuOcncdaVNZjUj8K6LCmxIHFnO9lUjgiDmCzyKIpYWUjdVJhRBy5rHbh5BmROJtCXtWYy7FNkbWfyXPUHC4x8ZfDTseyogQs8OvHDk8FoBuXZ3zGaz3dGrFdLcNXLQsLghHti2CVJbCJ98dWPI1FWVTlqP2AsizIL52XIA7OwGsW+r2gwAaHY/V6cfffu0PsFdqdBLXp9gEjnUzokEiViOvs1/A3UGWdXUAdqw8JbW72urnNW1px91Pf/A/I7/NW9dhYtAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Charge (2022) + Tears of Steel (2012)","rights":"cc-by","note":"fadegrays between two shots, with the timeline strip of the edit. Footage: Charge (2022), Blender Studio | studio.blender.org, CC BY 4.0; Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0.","bytes":243326,"addedAt":"2026-10-28"}},{"id":"vargHQ/xfade-corner-wipe","slug":"xfade-corner-wipe","name":"Corner Wipe","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["xfade","ffmpeg","hyperframes"],"summary":"A rectangle grows from one corner until B fills the frame. Variants: wipetl, wipetr, wipebl, wipebr.","description":"The new shot appears as a box anchored to a corner that expands to full screen.\n\n**When:** Picture-in-picture moments, reveals that start from a UI corner, retro TV edits.\n\n**Watch out:** Starting from a corner where nothing happens in shot B.\n\n**Timing:** 0.5–0.7 s.\n\n**Also called:** Corner reveal\n\n### In FFmpeg\n\nBoth inputs need the same size, frame rate, timebase, SAR and pixel format (`settb=AVTB` fixes the timebase error that `fps` alone leaves). `offset` is where the transition starts on the first clip's timeline (its length minus the overlap).\n\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n \"[0:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[a];[1:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[b];\\\n  [a][b]xfade=transition=wipetl:duration=0.5:offset=4.5[v];[0:a][1:a]acrossfade=d=0.5[a]\" \\\n -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\nClip-path `inset(0 100% 100% 0)` → `inset(0)` with ease-out.\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg xfade gallery (trac wiki)](https://trac.ffmpeg.org/wiki/Xfade)","useWhen":["Picture-in-picture moments, reveals that start from a UI corner, retro TV edits."],"notFor":["Starting from a corner where nothing happens in shot B."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/transitions.md#xfade-corner-wipe","repo":"vargHQ/skills","path":"varg-video-edit-library/references/transitions.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg xfade gallery (trac wiki)","kind":"link","url":"https://trac.ffmpeg.org/wiki/Xfade","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Corner Wipe"},"take":{"engines":["ffmpeg","hyperframes"],"components":[],"aliases":["Corner reveal"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a64189ff0ca0/take-xfade-corner-wipe.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADTklEQVR4nBWTu25kNRjHbX/2sX0uc81kJ8kiIiFRIUBCNFSIgoeDghfgAWhpoKCkokGLtEvQAlqSaLIkzCRn5lx8t/E0tgvr88//C/7mq69jShGR4EPE2Bjz4y9Xh8MhBuxDgICts0ldO+8gvIkRDQMCQBEhoEgbhDFCDjGGaUzEWbe9exti9HgxjEPVa+qSa6Zd1wcSEkKYgLWaJ8Q5kSdcaz0qbFQMHlGKLjkIIei+969e/T5pM4r59bfv6rqS80nJ+W47NgAtqyLBRfCraV0gnNF5SR9DKmgSotDGZsYlKzIj/fPm7mE/3Pftzc2NvDiF2SxxLheLDxbPntq23/QUEYztcjlfCZZScklfnJTYwziqx1FYa6+tAoLpH3/dIoR2929ZUzXLUyZkAnJ2+T5572MZw9/f/6C0q5OZNPydszJT25j5PBl4GMcTIIEXEWKWhXrn8hatWSwW9pMvL9695Iz8s9/TyM/Pz4ALhzAAyY+1nYsJOxutC8b5AZNUsBhDdsmGQENAWtnEK43gizLW6gFUwARfW0buRo5SkbIfzb5Pzpi6qq0NQGVvDCk46EzhPqR+vprTZ5M3iik0CfM5aXc/H57gwsJyufx05HkcLu7O+b+7aVc3CBK30ddVlXXJupMsMMtxcb0WuCfUo9eyPnLtu83m5QugsGdE3IvZdr3dbtXKn0nZ8r7XW+rjdDolaShInDCqRjWgIgp5ayyYA9UGcqhEgaQs15WVUqZksiY/rdzt7UGFUuun2GUn+aq0JYMlxULUmxjN0BObdQ6SllppWig/XywY64TIfy8yLeS4YtQhLSqy37osc1Oh+UyuGyIlhgCIZQ5/upYilH3XcajavadghG0To0CqghiDAbuCZxs5ictU8pwY50ASlmJ/ANW70+RZLaYJ2Zh2B/zUxrJMJhS05iQF5ZAZh4h0PML4vGDtFSHEhGP7Ci10MphK69yjjXUVl4syK7jpcizk039dVdf05W6+Xq8VXQNAQcPR6zw6JetzHdGc7tar1br2ucZifJELkRwOsXPqcDKl65nL7LGoh2GgN/3z8+efu/ozm0U+thqlXF6CI4J8ZmgnT1YfNd8iNJu1PSEQj/PzpcwSCfL5qIvm6urhf7VeBkIrc7dhAAAAAElFTkSuQmCC","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · WING IT! (2023) + Sprite Fright (2021)","rights":"cc-by","note":"wipetl between two shots, with the timeline strip of the edit. Footage: WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0; Sprite Fright (2021), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":273890,"addedAt":"2026-10-28"}},{"id":"heygen-com/xfade-zoom-in","slug":"xfade-zoom-in","name":"Zoom Into Next","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["xfade","ffmpeg","hyperframes","capcut"],"summary":"A scales up toward the viewer and fades, revealing B — the simple FFmpeg version of a zoom transition.","description":"Built on [Zoom Through Transition](https://github.com/heygen-com/hyperframes/tree/main/registry/components/zoom-through-transition) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nThe first shot grows past the frame while the second shows through.\n\n**When:** A quick push forward between scenes when you can’t add motion blur.\n\n**Watch out:** Expecting the CapCut Zoom look: xfade’s zoomin has no blur. For the punchy version scale and blur both shots yourself (see Pull In).\n\n**Timing:** 0.3–0.5 s.\n\n**Also called:** Zoom (xfade)\n\n### In FFmpeg\n\nBoth inputs need the same size, frame rate, timebase, SAR and pixel format (`settb=AVTB` fixes the timebase error that `fps` alone leaves). `offset` is where the transition starts on the first clip's timeline (its length minus the overlap).\n\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n \"[0:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[a];[1:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[b];\\\n  [a][b]xfade=transition=zoomin:duration=0.5:offset=4.5[v];[0:a][1:a]acrossfade=d=0.5[a]\" \\\n -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\n`npx hyperframes add zoom-through-transition` or `cinematic-zoom` for the blurred version.\n\n### In CapCut\n\nTransitions → Camera → **Zoom in** (adds blur).\n\n### Ready-made components\n\n- [Zoom Through Transition](https://skills.varg.ai/component/hf.zoom-through-transition/) (hyperframes): npx hyperframes add zoom-through-transition\n- [Cinematic Zoom](https://skills.varg.ai/component/hf.cinematic-zoom/) (hyperframes): npx hyperframes add cinematic-zoom\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg xfade gallery (trac wiki)](https://trac.ffmpeg.org/wiki/Xfade)","useWhen":["A quick push forward between scenes when you can’t add motion blur."],"notFor":["Expecting the CapCut Zoom look: xfade’s zoomin has no blur. For the punchy version scale and blur both shots yourself (see Pull In)."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/zoom-through-transition","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Zoom Through Transition · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.zoom-through-transition/","license":"Apache-2.0","note":"A transition that zooms through a focal card into the next scene."},{"role":"component","label":"Cinematic Zoom · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cinematic-zoom/","license":"Apache-2.0","note":"Shader transition with dramatic zoom blur"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg xfade gallery (trac wiki)","kind":"link","url":"https://trac.ffmpeg.org/wiki/Xfade","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Zoom Into Next"},"take":{"engines":["ffmpeg","hyperframes","capcut"],"components":["hf.zoom-through-transition","hf.cinematic-zoom"],"aliases":["Zoom (xfade)"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/55bb1d124948/take-xfade-zoom-in.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAACn0lEQVR4nG1TyY7TQBDtze7VS5IZicyIv+AM/8CvcQMhOIM4cOUfOPMJI5hs3u047qLcCQqCKVte2q7X71W9oh/ffLbW6CzVWk9GyFj2gnuAjlLG+MQ93inz5E9wIE+GkFJWVTXU7aC11EqlKTdaCgEq5oQdCcUY/wKa6NNwYvX8brffi0N9bLtxX552pciXSqsod7gHUYwQQBjG+UivadN/7IS8SVepkouu7/v6Z9H2vd9uGWO0tnmeiyxBOM4jCpRTCgCnADJR8k+IlpxIzMgyI5DaNIem6TdF3TTwa3Msa5tli+WS5VYpJQKBlrGQeBV7CqCihxPuM9AJyZvMMicTreJh8NuqrqrmUIxtF5UmcYnADwoLyTGNUYI9ONIZ+kxOAPVAYKIwwVQxAtzLlBPQxilojDgc67qedsWwL6WzSZIwo401zMxi8cD+nvgFCIB4hmCzftyKtoE71Sy2uUsob5x4LMqybIr5FEpmWRavUmudkSIQAsTDJxZe5hLyoN+TUAsKjEyxlpFOlTakzWh7LApU2m82G1nXxySRi9QYa1WEXhMQgvkZYiaKz2fRwYU18YjOnYwTpQfgufNlh+yGqu67jpeFc06lzho7A81ZdM6eYfxE5uZjMQEXgWAXSO89x9Ai0pl0abzM0HHIDq23f9ywonDWinMLMdNfEJkgoYYsuI17XPI8AkraIBkiQqXOjFE3i7GokV1bVXgVOGKnCR2ANaLT/CsNsNgCGqZMhKpxHLyJayTcnw2E9pTWpSs1jsjucDiID28/3a3XQ/TsIg3ClAYgfMn47u7+fqXatm3E/jvnjCNbfxmNKNwZt9vtTnx5//XFq5f7dIlplIxXz6MlABLe3d4Wr907zHaHbxdXzxW4zlor1w8/Hn4DQahoSUPASpUAAAAASUVORK5CYII=","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Coffee Run (2020)","rights":"cc-by","note":"zoomin between two shots, with the timeline strip of the edit. Footage: Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0; Coffee Run (2020), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":272450,"addedAt":"2026-10-28"}},{"id":"gl-transitions/xfade-wind","slug":"xfade-wind","name":"Wind Wipe","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["xfade","ffmpeg","hyperframes"],"summary":"A ragged, streaky wipe that blows A off the screen. Variants: hlwind, hrwind, vuwind, vdwind.","description":"Built on [Wind](https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Wind.glsl) by gre (gl-transitions), MIT. The write-up and recipes below are varg's.\n\nThe edge of the wipe is torn into horizontal streaks as if the wind took the frame.\n\n**When:** Travel, outdoor and action edits; a softer alternative to a whip pan.\n\n**Watch out:** Using it on text-heavy frames where the streaks tear the letters.\n\n**Timing:** 0.5–0.8 s.\n\n**Also called:** Streak wipe\n\n### In FFmpeg\n\nBoth inputs need the same size, frame rate, timebase, SAR and pixel format (`settb=AVTB` fixes the timebase error that `fps` alone leaves). `offset` is where the transition starts on the first clip's timeline (its length minus the overlap).\n\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n \"[0:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[a];[1:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[b];\\\n  [a][b]xfade=transition=hlwind:duration=0.5:offset=4.5[v];[0:a][1:a]acrossfade=d=0.5[a]\" \\\n -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In HyperFrames\n\nGLSL route: `glt.wind` in a WebGL harness, or HyperFrames `transitions-distortion`.\n\n### Ready-made components\n\n- [Wind](https://skills.varg.ai/component/glt.wind/) (gl-transitions): npm install gl-transitions\n- [Distortion Transitions](https://skills.varg.ai/component/hf.transitions-distortion/) (hyperframes): npx hyperframes add transitions-distortion\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg xfade gallery (trac wiki)](https://trac.ffmpeg.org/wiki/Xfade)","useWhen":["Travel, outdoor and action edits; a softer alternative to a whip pan."],"notFor":["Using it on text-heavy frames where the streaks tear the letters."],"publisher":{"name":"gre · GL Transitions","handle":"gl-transitions","kind":"community","verified":false,"url":"https://github.com/gl-transitions","avatar":"https://github.com/gl-transitions.png"},"source":{"url":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Wind.glsl","repo":"gl-transitions/gl-transitions","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Wind · gl-transitions","kind":"link","url":"https://skills.varg.ai/component/glt.wind/","license":"MIT","note":"A ragged left-to-right wipe that blows the first shot away in horizontal streaks"},{"role":"component","label":"Distortion Transitions · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.transitions-distortion/","license":"Apache-2.0","note":"Showcase of warp and distortion transitions"},{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg xfade gallery (trac wiki)","kind":"link","url":"https://trac.ffmpeg.org/wiki/Xfade","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Wind Wipe"},"take":{"engines":["ffmpeg","hyperframes"],"components":["glt.wind","hf.transitions-distortion"],"aliases":["Streak wipe"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/5d7511fb1720/take-xfade-wind.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADXklEQVR4nD2TPW8rRRSG5+PMzu56d+21E8e52IAgSNAFiQIhQYOgouaX0NDxA2ho4T/chgqELikiBBchmivl6tIgYohDsvZmvZ/zyXHDKabYmXn3nPd9hn78yacA3HvLGAulyLLs0fER51AU91obIQil9Oah3e/rXUO10b0VuDoqPZbz1lndt9Y5IKaTwSgQgjEeySALgyk05+fn6zUjhGzu7n95+rToIEmSWXbUdp7q0CrdmQ538Q7zHoSgxgCgAKORhFEcJ1EQRsFRRgPSWtVdXFx8e3nVNK2P82SULJdqkueEOA408AF2Spl31jrvURAEc5xYRg0lRnI3TUbN4D77/Ivna5ymDuNMysgzSq3++/auGQzEk7btrKPYEeUgpcRNgl5o1aIE95w57QiZLeePv/v5t+f/iGgko5iQg3fGmaE3jI/KchdbFoVhUQ3W2CiOWt1Yq4UQ8HLmw4imYJPELSbklfHw0ftvX/7wpLQOQ3Ba4b9RKoqiWNR5nk9mDoRa5tF9UTwMFjuahnvgAO++maPeUUQWi0W+tKtX5/Pt4suvyLYgGsOhJAjlOIU0TWZpAGAXqa7rnRXTjlaL6Wg2S7pB1nUDV3eoRmUgxp09+Vc/2rTP/vp9/4Cpe0I886RrWnDcKd9vDR7948V12zSL5eur1WokbbMvW2sYjrbIE9z2WvmmelHS73/68fLZzdYEjFi0EwOSEsYjwbgDKqqq2ivIsmMix3eVbgNDKVCiPHL09eMLZ13dKrzmCBwg8z4IIkbMMAzW4Uc8SLt9iy065xkXePlhV972m9dW47OzM9Vs+76Domw55wckPM5i0RRG3DiNVifTDdauQmWcMUmTctt0nQpDGPq6UxVldDaeLU8S27aEhMCZlwH3xnjie6uV0sQfWFvf3iZJmmnNKMNG9mXJucQH9MZqguFsdh3W9U1j6fVR4ieTCUhAgAal+gNgnnJvBQPnDBCu+xoJ0lpTIpB7EIEAEKHkwNu+6wdabQcf695Fm1bBgx3P53MKc4STuAPyBq1DJUZ7o09PqtPT00XSKKVk9WuWRTGvkZ2XYqvQuQBRXAfhtCgK2Onjt84+2KXvoUeUaPJ/eYFLRu/j4+MP028wlrxsKD28VQzknRN+mIAdHBwCf2X//A9f2uTE7mko4wAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Cosmos Laundromat (2015) + Spring (2019)","rights":"cc-by","note":"hlwind between two shots, with the timeline strip of the edit. Footage: Cosmos Laundromat (2015), (CC) Blender Foundation | gooseberry.blender.org, CC BY 4.0; Spring (2019), Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0.","bytes":267909,"addedAt":"2026-10-28"}},{"id":"vargHQ/xfade-fade-fast-slow","slug":"xfade-fade-fast-slow","name":"Fast and Slow Fades","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["xfade","ffmpeg","remotion"],"summary":"Dissolves with a curve: fadefast commits to B early, fadeslow lingers on A. Exist in FFmpeg 7+.","description":"Like a cross dissolve, but the mix is not linear — the new shot takes over sooner (fast) or later (slow).\n\n**When:** When a linear dissolve feels mushy in the middle: fadefast keeps the pace up, fadeslow holds an emotional beat.\n\n**Watch out:** Older FFmpeg builds (6.x and earlier) do not have these names; check `ffmpeg -h filter=xfade`.\n\n**Timing:** 0.5–1 s.\n\n**Also called:** Eased dissolve\n\n### In FFmpeg\n\nBoth inputs need the same size, frame rate, timebase, SAR and pixel format (`settb=AVTB` fixes the timebase error that `fps` alone leaves). `offset` is where the transition starts on the first clip's timeline (its length minus the overlap).\n\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n \"[0:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[a];[1:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[b];\\\n  [a][b]xfade=transition=fadefast:duration=0.5:offset=4.5[v];[0:a][1:a]acrossfade=d=0.5[a]\" \\\n -map \"[v]\" -map \"[a]\" out.mp4\n```\n\n### In Remotion\n\nPass an eased timing to `fade()`: `linearTiming({ durationInFrames: 20, easing: Easing.out(Easing.cubic) })`.\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg xfade gallery (trac wiki)](https://trac.ffmpeg.org/wiki/Xfade)\n- [Remotion transition presentations](https://www.remotion.dev/docs/transitions/presentations)","useWhen":["When a linear dissolve feels mushy in the middle: fadefast keeps the pace up, fadeslow holds an emotional beat."],"notFor":["Older FFmpeg builds (6.x and earlier) do not have these names; check `ffmpeg -h filter=xfade`."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/transitions.md#xfade-fade-fast-slow","repo":"vargHQ/skills","path":"varg-video-edit-library/references/transitions.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","Remotion"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg xfade gallery (trac wiki)","kind":"link","url":"https://trac.ffmpeg.org/wiki/Xfade","license":"link-only"},{"role":"source","label":"Remotion transition presentations","kind":"link","url":"https://www.remotion.dev/docs/transitions/presentations","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Fast and Slow Fades"},"take":{"engines":["ffmpeg","remotion"],"components":[],"aliases":["Eased dissolve"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/88a4238fa323/take-xfade-fade-fast-slow.mp4","w":640,"h":400,"duration":4.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADYUlEQVR4nB2SW2/kNBiGfYoPOc1k2rTbtGVbLoCyV3CF4AfwE/lBSKgLEhKHXVa0uyw97M40M5NJ4pkktmPjwReW/Fl+vs/v+8LvvvkUE0ICHkVxEOC+7ydkG0XR++X23bt/wmQWJ4kIHADAWuici8JUa63MvoKtgxA6CJqmIcBhRkVx8YIL3rXNNAtmdh7FUdUtOMHHRxeU0mW18M9CArLJ9KQo1qv1qt5aa5H9H4eBdY60Sqd5nArWtg1Yl6cXFwLOBOdpUBfZ4dX5qQjF79De3d/zhOX5ERyt3NR9pxlj0DMAGN3goCPK4cOT85Bz1fU6CKr1ugvBUZI5YKNYnGZThNAsTRcIU0z2f9ODoLjuNPYUZ/y8vSLYq3MwmXZS9gjW60Vdlv66OIk9gschaOoff76ezbKA0zzhDrko4tYAGDRJEuzVGa3frR33IIfRm5sb+sl5kiRayt1u9/Dh6e7hIxfMqxBAvlqUSZYJTDu1fvXry6WGV1dXQbuVrYwYN1obQLRD5GxysBiMUqooird/33jX1jvpj1+eFwCgre67rlN49J2z8GC+mBOBzop8USWy/xcDmEynL56d3d7eEqsGgfEfr2+8e8fnl/f393pQ0WxabRohwt4ZyIh3czKZgEGnLIwnE0FixgHbz4wjFu/aWlBC7j58jOO4V8Ofr19lKccIG0R21hGeSGM7uQnDkDog+4FBYJXGhpp2RBZyzLxjFoIAE0YoSYvCK38RAP+pbbXEBJMgRBDWuxYidHn8zCtSzsuHh4cnpEbonsvt2+uXa04RgpoBhAFRbNu0RFPB4pjKjYHoOD8qy3LENuBCtbWHepmGQcWMIeuHDPI8Jx00xli9o5w/zhdhKBiAUkpimvJp+cgBKct1JOjoc6+2SRY7CZXqN4386fqXszDxxjDOqcGABqMDHkYQ1YQrzFdVKYQgUQDHbhgR8IYayH0IhFYIgaOTfB9Fnq5WK8AY0BryzPKo7pplXRnrlptWWpOms4PjU59v8urO5vnlyE6zq6/jOPSPQdcBziu5D4Fzu8PPvpjAymiTbn/zt71q80MDjIIIDshR2vLJmWxb8jhnzz//qkq+9elvgfJsGEMPgDEhAHS26mf598kPCOGsutu3gb68Xx6EgbF26Gjz15v3/wHyfsvMRkhkEwAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Tears of Steel (2012) + Charge (2022)","rights":"cc-by","note":"fadefast between two shots, with the timeline strip of the edit. Footage: Tears of Steel (2012), (CC) Blender Foundation | mango.blender.org, CC BY 3.0; Charge (2022), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":240150,"addedAt":"2026-10-28"}},{"id":"vargHQ/xfade-custom-expr","slug":"xfade-custom-expr","name":"Custom xfade Expression","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"transitions","tags":["xfade","ffmpeg"],"summary":"Write your own transition as a per-pixel expression with xfade=transition=custom:expr=…","description":"Anything you can describe per pixel from A, B, X, Y and progress P: a checkerboard, a diagonal band, a noise threshold.\n\n**When:** When none of the 50+ named transitions fits and you still want a one-pass FFmpeg render.\n\n**Watch out:** Slow renders on long clips: the expression runs for every pixel of every frame of the overlap.\n\n**Timing:** As designed.\n\n**Also called:** xfade expr\n\n### In FFmpeg\n\nBoth inputs need the same size, frame rate, timebase, SAR and pixel format (`settb=AVTB` fixes the timebase error that `fps` alone leaves). `offset` is where the transition starts on the first clip's timeline (its length minus the overlap).\n\n```bash\nffmpeg -i a.mp4 -i b.mp4 -filter_complex \\\n \"[0:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[a];[1:v]fps=30,scale=1920:1080,setsar=1,settb=AVTB,format=yuv420p[b];\\\n  [a][b]xfade=transition=custom:duration=0.5:offset=4.5[v];[0:a][1:a]acrossfade=d=0.5[a]\" \\\n -map \"[v]\" -map \"[a]\" out.mp4\n```\n\nCustom: replace `transition=…` with an expression. P runs from 1 to 0 across the overlap; A and B are the two pixel values.\n```bash\n# vertical bands that flip at different times\nxfade=transition=custom:duration=0.8:offset=4.2:expr='if(gt(P, mod(floor(X/(W/8)),2)*0.5+0.25), A, B)'\n```\n\n### Where this comes from\n\n- [FFmpeg filters: xfade](https://ffmpeg.org/ffmpeg-filters.html#xfade)\n- [FFmpeg xfade gallery (trac wiki)](https://trac.ffmpeg.org/wiki/Xfade)","useWhen":["When none of the 50+ named transitions fits and you still want a one-pass FFmpeg render."],"notFor":["Slow renders on long clips: the expression runs for every pixel of every frame of the overlap."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/skills/blob/main/varg-video-edit-library/references/transitions.md#xfade-custom-expr","repo":"vargHQ/skills","path":"varg-video-edit-library/references/transitions.md","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"source","label":"FFmpeg filters: xfade","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html#xfade","license":"link-only"},{"role":"source","label":"FFmpeg xfade gallery (trac wiki)","kind":"link","url":"https://trac.ffmpeg.org/wiki/Xfade","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"film","hue":300,"text":"Custom xfade Expression"},"take":{"engines":["ffmpeg"],"components":[],"aliases":["xfade expr"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/45a4fa983b36/take-xfade-custom-expr.mp4","w":640,"h":400,"duration":4.8,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAPCAIAAABxxpiMAAAACXBIWXMAAAABAAAAAQBPJcTWAAADqUlEQVR4nB1Ty3LcRBRt9UPdUkuah0Zjz9hO7BiHOA5JKoSK2QCVJSuWfEf+gb9gzQZYwgooUqYgKQgJVILzYBI/Y3uMPJpImm5J3WoEZ3vvPXXvOedaLQ7CHr60sXHr1i1K35rNxLfffIYxmYghpTSvhsaYlfAehOjkeB5CSOjFXq/38MHnSgE5d+XOnTuTzntNDyYUtNqOD2C8s59KJ89yBYLJJCt0Zdu8YZRSnhynV6+tqYon08Sh9ury+YPX/dFojOSs7/OOD7Q2mDIgZHE8mpZn6PdHv3DOTZirXFa1gEELEmhqoyvAKbOQcjlZv7Jyc/OdH7cqZgNQSQ8ZUEtda+wy4DDy/GgMp3Hn4lo37O7vfheEvspgNAyPY2RBq9agAUVgfnGwuXkjDH0hJKXA63kQKYCg1hpnGShkDmoehh124/bS2trJlw+ysjwk4ce3Pzn9/s80n1kC3Pv52dzgso35i5c7QTf0HDeJhRBKlcC1aoQAPocJguiIsIAH7sJyRdx5rr1+kIIlt9cFLqtsfHkVE4IqYpVqth8XfHeyPLCpZaWQnh4dDuiS1grnEmACA2fo2/P98aOtr7c+jbCHbccPosO9EOm4Li8sedzjR0Wv0T6H7DQtuGeiiDl2V5bpkz1pTI0hRbKUk+nJ5Xc3/rh//+XT7aeVX9fin3rL6vhzvrerxdGbvGXhCiOE7VmW1qo0lmh3mW0zpVMpBcEET420OSyy8q+X2wMI17vhNk7KUs8gv3v06k3WIoQS4mepqtuq5TIzkSKf9NqwMYFgZmrZKKQBxKkEDNSGRjvHszGLaP/qav+u5/mFWokP9yp8iUBm2deePn6yGE4xDK+2PavIR1NLaS2QWFhwjVH/5ajdAcYA4jqNB6fSAxKsr2DsYFbMMh0rVCGrNrMi8lt/nwhvgHFbucwZn5VNIDCLb157+7cDmqYpXr5ALMsqQTgajZqkM8YWI5cxOq26cJbqHFZae8Fhr8/KVw29WOJkcjbuO1ZVqQKBNIlh5qA8xxo0giNQi7rOdaUNBVKqqpLaEucHc8mzUgmxM95v/i7wNvoRPXdlncfx6IyWmWJCP/zhJx4v8Ga70ev54XBY2tdxf7HbiTDGj998hBFGsIsQCvtZp9OdCzrNITB+ztNR8uIrWJs+VIFtOvDYyRJunyVJgg9OVhcufSj9970ItEHRDAiNwP+oa70QTU27fd35ghDsk9e1OYTjX5vSB1GTxwZTYxJh42R75182xtpqKg67owAAAABJRU5ErkJggg==","source":"Rendered by varg with FFmpeg (scripts/render-takes.ts)","credit":"Rendered by varg · Sprite Fright (2021) + WING IT! (2023)","rights":"cc-by","note":"custom between two shots, with the timeline strip of the edit. Footage: Sprite Fright (2021), Blender Studio | studio.blender.org, CC BY 4.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0.","bytes":287294,"addedAt":"2026-10-28"}},{"id":"heygen-com/kicker-headline-rise","slug":"kicker-headline-rise","name":"Kicker Over Rising Headline","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"titles","tags":["title","kicker","headline","blur","stagger","ffmpeg","hyperframes","remotion","capcut"],"summary":"A small mono kicker fades in, then the headline rises word by word from a soft blur.","description":"Built on [Titlecard Calm](https://github.com/heygen-com/hyperframes/tree/main/registry/components/titlecard-calm) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA tiny uppercase label (\"NEW · AGENTS\") sits above a large grotesque headline. Words lift 20–40 px and clear from blur in a short stagger.\n\n**When:** Open a chapter or name a feature before its demo. It works over a plain backdrop or over darkened footage.\n\n**Watch out:** Do not animate the kicker and the headline at the same moment; the eye needs the small label first.\n\n**Timing:** Kicker 0.3 s, then words 0.5 s each with an 80–120 ms stagger, power3.out. Hold ≥ 1 s plus ~0.4 s per word.\n\n**Also called:** eyebrow title, section title card, chapter card\n\n### In FFmpeg\n\n```bash\n-vf \"drawtext=text='NEW · AGENTS':x=(w-tw)/2:y=h*0.38:fontsize=28:fontcolor=white:alpha='min(1,max(0,(t-0.2)/0.3))',\\\ndrawtext=text='Ship in one prompt':x=(w-tw)/2:y=h*0.45:fontsize=96:fontcolor=white:alpha='min(1,max(0,(t-0.5)/0.5))'\"\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add soft-blur-in\n```\n```js\ntl.from(\".kicker\",{opacity:0,y:8,duration:0.3},0.2)\n  .from(\".hl .word\",{opacity:0,y:30,filter:\"blur(8px)\",stagger:0.1,duration:0.5,ease:\"power3.out\"},0.45);\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/staggered-fade-up\nconst s = spring({frame: frame - i*3, fps, config:{damping:200}});\nstyle={{opacity:s, transform:`translateY(${interpolate(s,[0,1],[30,0])}px)`}}\n```\n\n### In CapCut\n\nText → Add text twice (kicker small, headline large). Animation → In: \"Fade in\" 0.3 s on the kicker, \"Rise\"/\"Blur in\" 0.5 s on the headline, start the headline clip 0.25 s later.\n\n### Ready-made components\n\n- [Titlecard Calm](https://skills.varg.ai/component/hf.titlecard-calm/) (hyperframes): npx hyperframes add titlecard-calm\n- [Soft Blur In](https://skills.varg.ai/component/hf.soft-blur-in/) (hyperframes): npx hyperframes add soft-blur-in\n- [Staggered Fade Up](https://skills.varg.ai/component/remocn.staggered-fade-up/) (remocn): npx shadcn@latest add @remocn/staggered-fade-up\n- [Soft Blur In](https://skills.varg.ai/component/remocn.soft-blur-in/) (remocn): npx shadcn@latest add @remocn/soft-blur-in\n\n### Where this comes from\n\n- [Text animation for readability: kinetic type without overcomplication](https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication)\n- [GSAP docs: SplitText](https://gsap.com/docs/v3/Plugins/SplitText)\n- [Kinetic typography without After Effects (plan ~2 words per second)](https://oakgen.ai/blog/kinetic-typography-without-after-effects)","useWhen":["Open a chapter or name a feature before its demo. It works over a plain backdrop or over darkened footage."],"notFor":["Do not animate the kicker and the headline at the same moment; the eye needs the small label first."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/titlecard-calm","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Titlecard Calm · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.titlecard-calm/","license":"Apache-2.0","note":"A restrained title card where a mono kicker and generous grotesque headline fade upward, drift almost imperceptibly, and exit cleanly."},{"role":"component","label":"Soft Blur In · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.soft-blur-in/","license":"Apache-2.0","note":"A soft opacity, blur, and lift reveal for headlines, captions, and product UI callouts"},{"role":"component","label":"Staggered Fade Up · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.staggered-fade-up/","license":"MIT","note":"Words fade in and slide up one after another with a configurable delay."},{"role":"component","label":"Soft Blur In · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.soft-blur-in/","license":"MIT","note":"Per-character fade-in with a gentle blur and upward motion. Apple's signature hero-title reveal."},{"role":"source","label":"Text animation for readability: kinetic type without overcomplication","kind":"link","url":"https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication","license":"link-only"},{"role":"source","label":"GSAP docs: SplitText","kind":"link","url":"https://gsap.com/docs/v3/Plugins/SplitText","license":"link-only"},{"role":"source","label":"Kinetic typography without After Effects (plan ~2 words per second)","kind":"link","url":"https://oakgen.ai/blog/kinetic-typography-without-after-effects","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":30,"text":"Kicker Over Rising Headline"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.titlecard-calm","hf.soft-blur-in","remocn.staggered-fade-up","remocn.soft-blur-in"],"aliases":["eyebrow title","section title card","chapter card"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/41d453484114/take-kicker-headline-rise.mp4","w":640,"h":360,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAztJREFUeJxlU0lvHEUYrbV7epse98zYjsYTM0YjjAlIliBilYLgwCknfhkHTjlz5QcgFCJZAiXErAdii8SeBXv2pbfpro1vxJG6dJfq+96r771X+P7HnyNYWDNGbc5cz63VdkRZ5mlCCWmGFhxmea6kHI2XQgqDqVLKGIUxVqKwuOW5BOoZxtqyLKwlo9S1aNWx9wNare5NbmWz0by6vj4/PweeVqvVbu0ulgtRIkJsx7PrURSvF0B/2HCHwyGjRnLMPLcCcLZNbI4jWxx3mj9NhmePv3vy/FJKqRH+7UXvpLP36YMHs/UK7nhytN9utzebeLPZVLAu0jnjFDOCONE2R4FNfN8qJP3q60c//9ErRcm4xR1eliUM8qp3q5/8+MVn7+VZvlotoPP+cYNzf7xUZVkwLTeaGsE4V4SZYscPb8arp88vkFUBFGO0MdgYs5WRO5ev+h/e7p6enmbpzKVlkcwVpdyge91dho3UwlBLV1jFo8ij5l738I3Xwj97CSEEIKRSUm+llQXs9NnTZw+/fNi0EecwggcEdWWUEuyDzladvZBXQedqUa/LjAYGrerNO/P5gmIdhjVCyc3o1vf9IPAHo2FvNHv93SjLMmQbIGOJAaVYiViei8bdrndwcHTc8gPf8Vp3Dr852X/nqNNZJeuyFLZth2EIKK7rTUcv33z7I9OYkqKw4nEap/kSx7FgOXJ5haW5Foq++Gu6XF72ps+Yd/fy4iKOY0xZv98PggCA0jRljLXqxSfvv5VdXc1mc54zKVWhiQZ9s3UKKrz8u//947NZjiaTyaLAnPHV9Ab98iv634o4mt7kg9lyMZ9XPatWq0VuwS2LffvD74RghRDkmBCKMXMZ1OvQ9wpYEk7Qf64RiD8y++1wnc8wWdQibbTKhRolJfQym1PQXyuwWQvwDyH4hTbHtsGFJEm2xmFCKbVk3u12ox06GAyQVdSjutYpxnB/oMfADhBy67KGF0QhxwwjTLDjOBBIZQCD2RQ7lUoWlxup/rlNpalAeang0UElKjIlhGDgiBRCG0oJQ1oTxg2Gr16mGwg04SCnLJTJhYS5r8ejg4jUdgLHo1oViTScEMuGsOJ/AeXryevEfnc2AAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item titlecard-calm (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/titlecard-calm","credit":"Rendered by varg · HyperFrames Titlecard Calm","rights":"generated","note":"The Titlecard Calm component rendered as installed (npx hyperframes add titlecard-calm), defaults only","bytes":206466,"addedAt":"2026-10-28"}},{"id":"aceternity/rotating-benefit-word","slug":"rotating-benefit-word","name":"Rotating Benefit Word","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"titles","tags":["title","word swap","benefits","loop","hyperframes","remotion","capcut"],"summary":"A fixed phrase holds while one word in it cycles through benefits, uses or audiences.","description":"Built on [Flip Words](https://ui.aceternity.com/components/flip-words) by aceternity, Aceternity License (free components). The write-up and recipes below are varg's.\n\n\"Built for [designers]\" with the bracketed word flipping to developers, marketers, founders. The slot resizes so the line stays centered.\n\n**When:** Show that one product serves many people or jobs without cutting to new title cards.\n\n**Watch out:** Do not cycle more than 3–4 words or faster than one per ~1.2 s; the viewer must read each one.\n\n**Timing:** Swap every 1.2–2 s; each swap 0.35–0.5 s with the old word exiting up and the new word rising in.\n\n**Also called:** word rotate, flip words, swapping word headline\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add morph-text\n```\nPut the fixed prefix in its own span; in the timeline swap the slot: `tl.to(slot,{yPercent:-100,opacity:0,duration:0.35},t).set(slot,{textContent:next}).fromTo(slot,{yPercent:100},{yPercent:0,opacity:1,duration:0.4},\">\")`.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/inline-word-roll\nconst idx = Math.floor(frame / (fps*1.5)) % words.length;\nconst p = spring({frame: frame % (fps*1.5), fps, config:{damping:200}});\n```\n\n### In CapCut\n\nMake one text layer per word on top of the fixed phrase, butt them end to end (1.5 s each), and give each Animation → In: \"Slide up\" and Out: \"Slide up\" 0.35 s.\n\n### Ready-made components\n\n- [Flip Words](https://skills.varg.ai/component/aceternity.flip-words/) (aceternity): npx shadcn@latest add @aceternity/flip-words\n- [Word Rotate](https://skills.varg.ai/component/magicui.word-rotate/) (magic-ui): npx shadcn@latest add @magicui/word-rotate\n- [Inline Word Roll](https://skills.varg.ai/component/remocn.inline-word-roll/) (remocn): npx shadcn@latest add @remocn/inline-word-roll\n- [Container Text Flip](https://skills.varg.ai/component/aceternity.container-text-flip/) (aceternity): npx shadcn@latest add @aceternity/container-text-flip\n\n### Where this comes from\n\n- [Kinetic typography without After Effects (plan ~2 words per second)](https://oakgen.ai/blog/kinetic-typography-without-after-effects)\n- [Text animation for readability: kinetic type without overcomplication](https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication)","useWhen":["Show that one product serves many people or jobs without cutting to new title cards."],"notFor":["Do not cycle more than 3–4 words or faster than one per ~1.2 s; the viewer must read each one."],"publisher":{"name":"Aceternity UI","handle":"aceternity","kind":"community","verified":false,"url":"https://ui.aceternity.com","avatar":"https://github.com/aceternity.png"},"source":{"url":"https://ui.aceternity.com/components/flip-words","license":"Aceternity License (free components)"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Flip Words · aceternity","kind":"link","url":"https://skills.varg.ai/component/aceternity.flip-words/","license":"Aceternity License (free components)","note":"One word in a sentence swaps every few seconds, the new word blurring in letter by letter"},{"role":"component","label":"Word Rotate · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.word-rotate/","license":"MIT","note":"One word at a time drops in from above and slides out below, cycling through a short list"},{"role":"component","label":"Inline Word Roll · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.inline-word-roll/","license":"MIT","note":"Roll through words beside a fixed prefix with accelerating timing and smoothly centered width."},{"role":"component","label":"Container Text Flip · aceternity","kind":"link","url":"https://skills.varg.ai/component/aceternity.container-text-flip/","license":"Aceternity License (free components)","note":"A rounded pill resizes smoothly as the word inside flips to the next one in a list"},{"role":"source","label":"Kinetic typography without After Effects (plan ~2 words per second)","kind":"link","url":"https://oakgen.ai/blog/kinetic-typography-without-after-effects","license":"link-only"},{"role":"source","label":"Text animation for readability: kinetic type without overcomplication","kind":"link","url":"https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":30,"text":"Rotating Benefit Word"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["aceternity.flip-words","magicui.word-rotate","remocn.inline-word-roll","aceternity.container-text-flip"],"aliases":["word rotate","flip words","swapping word headline"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/148e4a557b2b/lib-aceternity-flip-words.mp4","blur":"https://s3.varg.ai/how-to/previews/9352ca8f06e0/lib-aceternity-flip-words.webp","source":"https://s3.varg.ai/how-to/previews/148e4a557b2b/lib-aceternity-flip-words.mp4","page":"https://ui.aceternity.com/components/flip-words","credit":"Rendered by varg from the library’s own code (Aceternity UI)","rights":"publisher-site","note":"Preview of the Flip Words component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"danielpetho/masked-line-reveal","slug":"masked-line-reveal","name":"Masked Line Reveal","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"titles","tags":["title","mask","editorial","lines","hyperframes","remotion","capcut"],"summary":"Each line slides up out of an invisible slot, so the type looks cut from the frame.","description":"Built on [Vertical Cut Reveal](https://github.com/danielpetho/fancy/blob/main/src/fancy/components/text/vertical-cut-reveal.tsx) by fancy, MIT. The write-up and recipes below are varg's.\n\nLines rise from behind a hard mask edge with no blur or fade, one after another, then exit upward the same way.\n\n**When:** Editorial statements, manifesto lines, or the one-sentence promise near the open.\n\n**Watch out:** Do not let the mask clip descenders; give the mask box ~0.15 em padding below the baseline.\n\n**Timing:** Per line 0.5–0.7 s, expo.out or power4.out, 0.08–0.12 s between lines.\n\n**Also called:** slot reveal, cut-out text, line mask up\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add line-by-line-slide\n```\n```js\n// SplitText with masks: lines wrap in overflow:hidden\ntl.from(split.lines,{yPercent:110,duration:0.6,stagger:0.1,ease:\"power4.out\"},0.3);\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/mask-reveal-up\n<div style={{overflow:'hidden'}}><div style={{transform:`translateY(${interpolate(spring({frame:frame-i*4,fps,config:{damping:200}}),[0,1],[110,0])}%)`}}>{line}</div></div>\n```\n\n### In CapCut\n\nText → Text templates: search \"slide up\" or use Animation → In: \"Wipe up\" per line; stack one text layer per line, offset 3–4 frames.\n\n### Ready-made components\n\n- [Vertical Cut Reveal](https://skills.varg.ai/component/fancy.vertical-cut-reveal/) (fancy): npx shadcn add @fancy/vertical-cut-reveal\n- [Line-by-Line Slide](https://skills.varg.ai/component/hf.line-by-line-slide/) (hyperframes): npx hyperframes add line-by-line-slide\n- [Mask Reveal Up](https://skills.varg.ai/component/remocn.mask-reveal-up/) (remocn): npx shadcn@latest add @remocn/mask-reveal-up\n\n### Where this comes from\n\n- [GSAP docs: SplitText](https://gsap.com/docs/v3/Plugins/SplitText)\n- [Codrops: 7 must-know GSAP animation tips](https://tympanus.net/codrops/2025/09/03/7-must-know-gsap-animation-tips-for-creative-developers/)\n- [Text animation for readability: kinetic type without overcomplication](https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication)","useWhen":["Editorial statements, manifesto lines, or the one-sentence promise near the open."],"notFor":["Do not let the mask clip descenders; give the mask box ~0.15 em padding below the baseline."],"publisher":{"name":"Daniel Petho","handle":"danielpetho","kind":"community","verified":false,"url":"https://github.com/danielpetho","avatar":"https://github.com/danielpetho.png"},"source":{"url":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/text/vertical-cut-reveal.tsx","repo":"danielpetho/fancy","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Vertical Cut Reveal · fancy","kind":"link","url":"https://skills.varg.ai/component/fancy.vertical-cut-reveal/","license":"MIT","note":"Letters slide up out of invisible slots line by line, emoji included, like type cut out of the frame"},{"role":"component","label":"Line-by-Line Slide · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.line-by-line-slide/","license":"Apache-2.0","note":"Each line enters from the left with staggered slide and exits to the right."},{"role":"component","label":"Mask Reveal Up · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.mask-reveal-up/","license":"MIT","note":"Lines reveal upward with a soft masked feel and compact stagger."},{"role":"source","label":"GSAP docs: SplitText","kind":"link","url":"https://gsap.com/docs/v3/Plugins/SplitText","license":"link-only"},{"role":"source","label":"Codrops: 7 must-know GSAP animation tips","kind":"link","url":"https://tympanus.net/codrops/2025/09/03/7-must-know-gsap-animation-tips-for-creative-developers/","license":"link-only"},{"role":"source","label":"Text animation for readability: kinetic type without overcomplication","kind":"link","url":"https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":30,"text":"Masked Line Reveal"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["fancy.vertical-cut-reveal","hf.line-by-line-slide","remocn.mask-reveal-up"],"aliases":["slot reveal","cut-out text","line mask up"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/9783f39c5aa3/lib-fancy-vertical-cut-reveal.mp4","blur":"https://s3.varg.ai/how-to/previews/6a44e64cf8cf/lib-fancy-vertical-cut-reveal.webp","source":"https://s3.varg.ai/how-to/previews/9783f39c5aa3/lib-fancy-vertical-cut-reveal.mp4","page":"https://www.fancycomponents.dev/docs/components/text/vertical-cut-reveal","credit":"Captured from the library’s own demo page (Fancy Components)","rights":"publisher-site","note":"Preview of the Vertical Cut Reveal component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/marker-highlight-phrase","slug":"marker-highlight-phrase","name":"Marker on the Key Phrase","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"titles","tags":["title","highlight","emphasis","callout","hyperframes","remotion","capcut"],"summary":"A marker band draws behind the one phrase that matters while the rest of the line stays calm.","description":"Built on [Inline Highlight](https://github.com/heygen-com/hyperframes/tree/main/registry/components/inline-highlight) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA sentence holds still; a flat or hand-drawn colored band sweeps left to right behind two or three words, and their color shifts to match.\n\n**When:** Point at the claim the voiceover stresses (\"in 30 seconds\", \"without code\").\n\n**Watch out:** Do not highlight more than one phrase per line; two bands cancel each other out.\n\n**Timing:** Line settles first; band sweeps 0.4–0.6 s, power2.inOut, starting on the spoken word.\n\n**Also called:** highlight sweep, highlighter, emphasis marker\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add inline-highlight\n```\n```js\ntl.fromTo(\".mark\",{\"--hl\":0},{\"--hl\":1,duration:0.5,ease:\"power2.inOut\"},wordTime);\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/marker-highlight\nconst w = interpolate(frame,[at,at+15],[0,100],{extrapolateLeft:'clamp',extrapolateRight:'clamp'});\n<span style={{background:`linear-gradient(#FDE047,#FDE047) 0 85%/${w}% 40% no-repeat`}}>{phrase}</span>\n```\n\n### In CapCut\n\nAdd a solid shape sticker behind the words (Stickers → Shapes), set its anchor left, keyframe Scale X from 0 to 100% over 0.5 s.\n\n### Ready-made components\n\n- [Inline Highlight](https://skills.varg.ai/component/hf.inline-highlight/) (hyperframes): npx hyperframes add inline-highlight\n- [Text Highlighter](https://skills.varg.ai/component/fancy.text-highlighter/) (fancy): npx shadcn add @fancy/text-highlighter\n- [Marker Highlight](https://skills.varg.ai/component/hf.marker-highlight/) (hyperframes): npx hyperframes add marker-highlight\n- [Marker Highlight](https://skills.varg.ai/component/remocn.marker-highlight/) (remocn): npx shadcn@latest add @remocn/marker-highlight\n\n### Where this comes from\n\n- [Text animation for readability: kinetic type without overcomplication](https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication)\n- [Bohdan Motion: Secureframe launch video, one pain per scene](https://x.com/bohdanmotion/status/2069369111231049803)","useWhen":["Point at the claim the voiceover stresses (\"in 30 seconds\", \"without code\")."],"notFor":["Do not highlight more than one phrase per line; two bands cancel each other out."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/inline-highlight","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Inline Highlight · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.inline-highlight/","license":"Apache-2.0","note":"A clean marker-style inline highlight that animates behind text using a CSS scale variable"},{"role":"component","label":"Text Highlighter · fancy","kind":"link","url":"https://skills.varg.ai/component/fancy.text-highlighter/","license":"MIT","note":"Marker-style highlight strokes sweeping behind key phrases in a paragraph, one phrase after another"},{"role":"component","label":"Marker Highlight · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.marker-highlight/","license":"Apache-2.0","note":"Display text settles in, then one hand-drawn marker stroke (highlight, circle, underline, or scribble) draws over the emphasized word on cue."},{"role":"component","label":"Marker Highlight · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.marker-highlight/","license":"MIT","note":"Colored marker block draws behind a phrase as the text color shifts."},{"role":"source","label":"Text animation for readability: kinetic type without overcomplication","kind":"link","url":"https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication","license":"link-only"},{"role":"source","label":"Bohdan Motion: Secureframe launch video, one pain per scene","kind":"link","url":"https://x.com/bohdanmotion/status/2069369111231049803","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":30,"text":"Marker on the Key Phrase"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.inline-highlight","fancy.text-highlighter","hf.marker-highlight","remocn.marker-highlight"],"aliases":["highlight sweep","highlighter","emphasis marker"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e90e479f86d8/lib-fancy-text-highlighter.mp4","blur":"https://s3.varg.ai/how-to/previews/893c8015496b/lib-fancy-text-highlighter.webp","source":"https://s3.varg.ai/how-to/previews/e90e479f86d8/lib-fancy-text-highlighter.mp4","page":"https://www.fancycomponents.dev/docs/components/text/text-highlighter","credit":"Captured from the library’s own demo page (Fancy Components)","rights":"publisher-site","note":"Preview of the Text Highlighter component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/strike-and-replace","slug":"strike-and-replace","name":"Strike Old, Write New","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"titles","tags":["title","before after","strike","contrast","hyperframes","remotion","capcut"],"summary":"A line strikes through the old way, then the new word takes its place.","description":"Built on [Strikethrough Replace](https://github.com/heygen-com/hyperframes/tree/main/registry/components/strikethrough-replace) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\n\"12 months\" gets a red line drawn across it and drops away; \"2 weeks\" lifts into the same spot in the accent color.\n\n**When:** Frame the before/after promise: old cost vs new cost, old workflow vs new.\n\n**Watch out:** Do not swap before the strike line finishes; the cross-out is the joke and needs ~0.3 s to land.\n\n**Timing:** Strike 0.3–0.4 s, hold 0.2 s, old word out 0.25 s, new word in 0.4 s with slight overshoot (back.out(1.4)).\n\n**Also called:** strikethrough replace, before/after words, correction\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add strikethrough-replace\n```\nSet the old/new strings in the block's variables: `data-variable-values='{\"from\":\"12 months\",\"to\":\"2 weeks\"}'`.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/strikethrough-replace\nconst strike = interpolate(frame,[0,10],[0,100],{extrapolateRight:'clamp'});\n```\n\n### In CapCut\n\nText 1 (old) + a thin red line sticker keyframed Scale X 0→100% over 0.3 s; cut to Text 2 (new) with Animation → In: \"Pop up\".\n\n### Ready-made components\n\n- [Strikethrough Replace](https://skills.varg.ai/component/hf.strikethrough-replace/) (hyperframes): npx hyperframes add strikethrough-replace\n- [Strikethrough Replace](https://skills.varg.ai/component/remocn.strikethrough-replace/) (remocn): npx shadcn@latest add @remocn/strikethrough-replace\n- [Value Swap](https://skills.varg.ai/component/remocn.value-swap/) (remocn): npx shadcn@latest add @remocn/value-swap\n\n### Where this comes from\n\n- [Bohdan Motion: Secureframe launch video, one pain per scene](https://x.com/bohdanmotion/status/2069369111231049803)\n- [Text animation for readability: kinetic type without overcomplication](https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication)","useWhen":["Frame the before/after promise: old cost vs new cost, old workflow vs new."],"notFor":["Do not swap before the strike line finishes; the cross-out is the joke and needs ~0.3 s to land."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/strikethrough-replace","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Strikethrough Replace · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.strikethrough-replace/","license":"Apache-2.0","note":"Draw a strike line across old text, then reveal the replacement."},{"role":"component","label":"Strikethrough Replace · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.strikethrough-replace/","license":"MIT","note":"Draws a strike line across old text then reveals new text in its place."},{"role":"component","label":"Value Swap · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.value-swap/","license":"MIT","note":"Swaps a value in place with a vertical slide — the old value exits up as the new one enters from below while an invisible sizer keeps the width stable."},{"role":"source","label":"Bohdan Motion: Secureframe launch video, one pain per scene","kind":"link","url":"https://x.com/bohdanmotion/status/2069369111231049803","license":"link-only"},{"role":"source","label":"Text animation for readability: kinetic type without overcomplication","kind":"link","url":"https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":30,"text":"Strike Old, Write New"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.strikethrough-replace","remocn.strikethrough-replace","remocn.value-swap"],"aliases":["strikethrough replace","before/after words","correction"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e45e42f54362/take-strike-and-replace.mp4","w":640,"h":360,"duration":4.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAtNJREFUeJxVk0uOHEUQhiMyIyvr2dXVxh6LWYGlkRAHYs0BOAxH4grAxguDhxncHgZPT3e98p1ESRiJkKoWVZFfRsT/B373/Q+SpJFojLHe7HY7lSGmlHJOMUoJOecgimkcQ3R9vy8lAUBGQoEJMnyO7StJQk4G8CEwDmE7PFkXvG8rzQlJJIzBW5988DGh4EiQEIVi3MZNmd6df+v7/oV+SQKST3Z1pDDFdF4mfpOIiJix8M5B9MEZkIoxcntkjnGrQ1eMo3fpDk5313C1NYW1t9YGEFy2j4GDgEEB8rosMWdjXK1SRpwzcO9aa5LMtEoR18FVx7vwJ9rjK3zN/6rQ8pnoN5I3gUERUrA+QHBOSdTOuSeblVKF9ZyvxNY9NUI7cBZtCO4h3gsnNF1z3fuiFmWZcmApeGRVUa8uVoUOge/YtEiJL8JtsC0+nz+RSEpL4h5ttA6ss/bt9J4V+7b/5nA4cBormIPtuk5TYKJdTbQWSWIWik6FKlYPq5vJHXXbNnJ3Fom6Nbx5c3PjpTFrvKw7P/4cghTyw9eNUmIdY11V3e6lW5b2w/PT6ST931KWy8pWyHR8POnLMsy6qgepDCLdfHXDOkqA29vbQowccNV4AN2irmuHUvf7PsDT+CmH0hppQmRDUCZvnHn4qLRe9kP/+x/ux7uf6qaplLy/v7/kkSdZ/PIrazQA0X6o/RURzR1eFwc/MgErtxmLDSlAsr3C6pz5ONf1stsVGHGtL7LVu4SeTQiBcReUU5peqLosywMMEKGApms6/WWz+eBfh0vBwBzzvFzmWdR1c3hdN2Vv4VSWaAKXzxL5CPGYH6QTnWOHOp6ZHppUmr/Gx88gxqAA4u1BiHkxk3m/7d3hqm/bNvujYiFl5qXxaHgl3sIjaizSdJ7HzhF77T/Q/3HssJyepxMvyjD4V9df8D6u8hIpOCR2kOfbACzgmtY4lmyRfwBz/s0xjaER6gAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item strikethrough-replace (Apache-2.0) in a host composition","page":"https://hyperframes.heygen.com/catalog/components/strikethrough-replace","credit":"Rendered by varg · HyperFrames Strikethrough Replace","rights":"generated","note":"The Strikethrough Replace component used as its header comment describes, with demo copy","bytes":181847,"addedAt":"2026-10-28"}},{"id":"heygen-com/clean-lower-third","slug":"clean-lower-third","name":"Clean Lower Third","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"titles","tags":["lower third","name","speaker","interview","ffmpeg","hyperframes","remotion","capcut"],"summary":"Name and role slide in at the lower left on a quiet bar, hold 3–5 s, then wipe out.","description":"Built on [Lower Third — Clean Bar](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lt-clean-bar) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA white or charcoal card with an accent tab; name in bold, role in a lighter weight at 60–80% size. Enters with a clip wipe, not a bounce.\n\n**When:** Introduce the founder, a customer or an engineer the first time they speak.\n\n**Watch out:** Do not place it inside the outer 10% of the frame or over the speaker's chin and hands.\n\n**Timing:** In 0.4–0.5 s, hold 3–5 s (about 4 s for a short name), out 0.3 s.\n\n**Also called:** name tag, speaker title, chyron\n\n### In FFmpeg\n\n```bash\n-vf \"drawbox=x=192:y=850:w=560:h=110:color=black@0.7:t=fill:enable='between(t,3,7.5)',\\\ndrawtext=text='Ada Park':x=220:y=868:fontsize=44:fontcolor=white:enable='between(t,3,7.5)'\"\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add lt-clean-bar\n```\n```html\n<div data-composition-id=\"lt-clean-bar\" data-composition-src=\"compositions/lt-clean-bar.html\"\n  data-variable-values='{\"name\":\"Ada Park\",\"role\":\"CTO, Acme\"}'\n  data-start=\"3\" data-duration=\"4.5\" data-track-index=\"3\"></div>\n```\n\n### In Remotion\n\n```tsx\nconst inP = spring({frame, fps, config:{damping:200}});\nconst clip = interpolate(inP,[0,1],[100,0]);\n<div style={{clipPath:`inset(0 ${clip}% 0 0)`, position:'absolute', left:'10%', bottom:'12%'}}>…</div>\n```\n\n### In CapCut\n\nText → Text templates → search \"lower third\" or \"name\"; set it at the lower left inside the guides, duration 4 s, Animation In \"Wipe right\".\n\n### Ready-made components\n\n- [Lower Third — Clean Bar](https://skills.varg.ai/component/hf.lt-clean-bar/) (hyperframes): npx hyperframes add lt-clean-bar\n- [Lower Third — Accent Underline](https://skills.varg.ai/component/hf.lt-accent-underline/) (hyperframes): npx hyperframes add lt-accent-underline\n- [Lower Third — Side Rule](https://skills.varg.ai/component/hf.lt-side-rule/) (hyperframes): npx hyperframes add lt-side-rule\n- [YouTube Lower Third](https://skills.varg.ai/component/hf.yt-lower-third/) (hyperframes): npx hyperframes add yt-lower-third\n\n### Where this comes from\n\n- [TechSmith: the complete guide to lower thirds](https://www.techsmith.com/blog/edit-videos-lower-thirds/)\n- [Fiveable: lower thirds and titles (3–5 s on screen)](https://fiveable.me/tv-studio-production/unit-7/thirds-titles/study-guide/kQd4R1XeWNW530P9)\n- [Frame.io: how to make lower third titles that don't suck](https://blog.frame.io/2017/12/04/create-lower-thirds-titles-that-dont-suck/)","useWhen":["Introduce the founder, a customer or an engineer the first time they speak."],"notFor":["Do not place it inside the outer 10% of the frame or over the speaker's chin and hands."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lt-clean-bar","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Lower Third — Clean Bar · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.lt-clean-bar/","license":"Apache-2.0","note":"Minimal white-card lower third for podcasts/interviews: accent tab, name + role, clip-wipe entrance"},{"role":"component","label":"Lower Third — Accent Underline · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.lt-accent-underline/","license":"Apache-2.0","note":"Cardless lower third for footage overlay: name rises, an accent rule draws left-to-right, role fades in; text-shadowed for legibility"},{"role":"component","label":"Lower Third — Side Rule · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.lt-side-rule/","license":"Apache-2.0","note":"Cardless lower third with a vertical accent bar; condensed display name + mono role, text-shadowed for footage"},{"role":"component","label":"YouTube Lower Third · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.yt-lower-third/","license":"Apache-2.0","note":"Animated YouTube subscribe lower third with avatar and channel info"},{"role":"source","label":"TechSmith: the complete guide to lower thirds","kind":"link","url":"https://www.techsmith.com/blog/edit-videos-lower-thirds/","license":"link-only"},{"role":"source","label":"Fiveable: lower thirds and titles (3–5 s on screen)","kind":"link","url":"https://fiveable.me/tv-studio-production/unit-7/thirds-titles/study-guide/kQd4R1XeWNW530P9","license":"link-only"},{"role":"source","label":"Frame.io: how to make lower third titles that don't suck","kind":"link","url":"https://blog.frame.io/2017/12/04/create-lower-thirds-titles-that-dont-suck/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":30,"text":"Clean Lower Third"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.lt-clean-bar","hf.lt-accent-underline","hf.lt-side-rule","hf.yt-lower-third"],"aliases":["name tag","speaker title","chyron"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0c3484606ca6/take-clean-lower-third.mp4","w":640,"h":360,"duration":4.8,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAztJREFUeJxFU01vG1UUfZ/zZsbj8UfsxjHBhSpAQd0gkMKCbpAqFpWABSv+AZuyYFU27LuDn4EqIRRVIFqREFoJVYWIVFZJ05IQJ9kQO87M83y+D+44SLzFlebd0bnnnXMuXr16DWNMsCGUCMHr9Xqn2VRKR1FkjPa4hW6aplma5XlurdUGQUUICSGMShjnnVDMpGTW5kK4DuEAVHNIwPCimw8Gg78OtO/5eSJHoxHK8xcXu3FaJEliECEYdzthr7c0Hf9TluWg641GBeMYc0wCQWGC50Flrovb7dp0KobD7bWftqZnMSU0qAVXV19bWVkZT6Zam35bXFwKLlxuZ1mWJGWRzZiDDUcKW0yQcQkKPQasb936avfoLIolA+qMG4TPpFzfeMh47Y1LXSkltPb3R4uvthZ8H2l66WKfqSIDCIpzQhUucMNtfP/zg9//PMKMUc6RRZxzow22xhL+w93Ntz99/63V12V07LmiHsIr81ZoX1gKWdOznOkaLz1Ouh7tBeblpe4WQpm1hBALgitlQGOtc8y1Rmv3fnz32nvLZQxdE7pgRV2Bhhl75xXfcZwFH7VAmC7q95uHqTUYJOVgDiCg6hgMlAxU/PCJ2vzt+QfXXwIrKS2rXqqTOGW7Y4qQ9nweRKo3MRNZ3n+wrSoIU9mMkQLYOTs9vwHnNzYeffzRZWQ5mYyjKE4ly3PCLrQbnDEBAmE7jsXj9e2t4b4lGCYh9B8LdM5qHh+CkMfxk1+f7e3tEc08z4NLwGf3H+3MkmQaS21MUlBIXZJI13V1qUqt0BzlPIHneAB0eiq//PrO0fGxRbQe1LsN43ou++Pp4fLy8pU3r1Q/VbpYitTfBwdWJTs7zzNt0f+HQBeIg7jtVtQMfWMqPwgF/TImdPbJh9c/v/nFyclJMTe701q48dmNte9uB/VAxxn4ZedksNWuwwe9djFTB4eTzkJHiBRX5gFvzAhlj4fDb25/C48qjQIg3/efPtt1GIcHykyBxpCWiguykH74lnLmua5wYKuK+fYR2EQmwsa9zV/u3F2njIK0RmuwCQJBHXp6OsWUUscBWyulCJmZXEVpreb3m6Tm2yTHsN6O4DDgX2L9xVHf/8z8AAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item lt-clean-bar (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/blocks/lt-clean-bar","credit":"Rendered by varg · HyperFrames Lower Third — Clean Bar","rights":"generated","note":"The Lower Third — Clean Bar component rendered as installed (npx hyperframes add lt-clean-bar), defaults only","bytes":212581,"addedAt":"2026-10-28"}},{"id":"heygen-com/hand-drawn-callout-arrow","slug":"hand-drawn-callout-arrow","name":"Hand-Drawn Callout Arrow","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"titles","tags":["annotation","arrow","hand-drawn","callout","hyperframes","remotion","capcut"],"summary":"A wobbly arrow draws itself from a short label to the exact button or number on screen.","description":"Built on [Hand-Drawn Arrow](https://github.com/heygen-com/hyperframes/tree/main/registry/components/hw-arrow) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA marker-style stroke with a slight boil travels from a two-word note in the margin to the UI target; the head lands last.\n\n**When:** Point at a small detail in a UI shot that the viewer would otherwise miss.\n\n**Watch out:** Do not let the arrow cross the product UI it points at; route it around and land on the edge of the target.\n\n**Timing:** Label 0.3 s, stroke draw 0.5–0.7 s power2.out, hold ≥ 1.5 s.\n\n**Also called:** annotation arrow, doodle callout, ink arrow\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add hw-arrow\n```\n```js\ntl.fromTo(\"#arrow path\",{strokeDashoffset:len},{strokeDashoffset:0,duration:0.6,ease:\"power2.out\"},2.1);\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/ink-arrow\nconst draw = interpolate(frame,[0,18],[len,0],{extrapolateRight:'clamp'});\n<path strokeDasharray={len} strokeDashoffset={draw}/>\n```\n\n### In CapCut\n\nStickers → search \"arrow\" (hand-drawn), place it, Animation In \"Wipe\" or keyframe Scale from the tail corner; add a Text label beside it.\n\n### Ready-made components\n\n- [Hand-Drawn Arrow](https://skills.varg.ai/component/hf.hw-arrow/) (hyperframes): npx hyperframes add hw-arrow\n- [Scribble Callout Circle](https://skills.varg.ai/component/hf.hw-callout-circle/) (hyperframes): npx hyperframes add hw-callout-circle\n- [Ink Arrow](https://skills.varg.ai/component/remocn.ink-arrow/) (remocn): npx shadcn@latest add @remocn/ink-arrow\n- [Arc Motion Path](https://skills.varg.ai/component/hf.arc-motion-path/) (hyperframes): npx hyperframes add arc-motion-path\n\n### Where this comes from\n\n- [Text animation for readability: kinetic type without overcomplication](https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication)\n- [Bohdan Motion: breakdown of the Claude Design launch video](https://x.com/bohdanmotion/status/2080610655237751033)","useWhen":["Point at a small detail in a UI shot that the viewer would otherwise miss."],"notFor":["Do not let the arrow cross the product UI it points at; route it around and land on the edge of the target."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/hw-arrow","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Hand-Drawn Arrow · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.hw-arrow/","license":"Apache-2.0","note":"Wobbled draw-on arrow with straight, gentle, and swoop curve poses, a four-way stroke texture matrix (plain/soft/sharp/spray), and a travel-aligned head-arrival stretch pulse with spring recovery; boils while on screen"},{"role":"component","label":"Scribble Callout Circle · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.hw-callout-circle/","license":"Apache-2.0","note":"Wobbled ellipse draws around a target with optional scribble fill and curved connector; the handwritten label pops in WITH momentum and the drawn shapes absorb the arrival with a volume-preserving contact squash;…"},{"role":"component","label":"Ink Arrow · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.ink-arrow/","license":"MIT","note":"A hand-drawn brush arrow that sweeps itself from one point to another, thickening into the head that pops on the final poses."},{"role":"component","label":"Arc Motion Path · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.arc-motion-path/","license":"Apache-2.0","note":"A GSAP MotionPath primitive that flies a callout along a curved arc with autorotation."},{"role":"source","label":"Text animation for readability: kinetic type without overcomplication","kind":"link","url":"https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication","license":"link-only"},{"role":"source","label":"Bohdan Motion: breakdown of the Claude Design launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2080610655237751033","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":30,"text":"Hand-Drawn Callout Arrow"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.hw-arrow","hf.hw-callout-circle","remocn.ink-arrow","hf.arc-motion-path"],"aliases":["annotation arrow","doodle callout","ink arrow"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b7b197845a90/take-hand-drawn-callout-arrow.mp4","w":640,"h":360,"duration":6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAVJJREFUeJyNklFOwzAMhm0nQ4VJIOAIXIObcP8n4IFpjKpdbH7HbdetHWLSVMd2Pv+xzS+vb0Rk9cdqsIsdw6NmYgU2G5kqjrCVC0LkJxsuqufkOCTc1yEwURztp4FiPNRDkE6UmgFQ3CxFV7VMFDcQJ9dyQRHyKjmNlFUtpfhDmNldtNSiU1tyUBTUCg4tiq+7LOfcNM3u++sPLaEgD/pNJy1CfHe7FdYkYsJd15VyjJavanEdKFkLn7TUMPV9L+jIJlNNe3y4x6dtu8P3IQrPtYSV51qmGbVti9Y+b5+amwQoQnigyM9+vxOWCy02glZmhO5SkvfPD4s5KL4KZ0ob1n5J8R7paJ1NuuKZvbxHhRL+uIjdW6M4KPm87GJ3iam6x+Q6o4TG1G1YUAoSMnx8roXqBp9T6oqsU6Kk5fmLrmlZzmiuJZYr/0fLFcqgJRJ+ASD3Vj5KWKZnAAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item hw-arrow (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/hw-arrow","credit":"Rendered by varg · HyperFrames Hand-Drawn Arrow","rights":"generated","note":"The Hand-Drawn Arrow component rendered as installed (npx hyperframes add hw-arrow), defaults only","bytes":99653,"addedAt":"2026-10-28"}},{"id":"heygen-com/dim-around-spotlight","slug":"dim-around-spotlight","name":"Dim Everything But the Target","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"titles","tags":["callout","spotlight","dim","focus","ffmpeg","hyperframes","remotion","capcut"],"summary":"The frame darkens except a soft ellipse around the element being talked about.","description":"Built on [Feathered Spotlight](https://github.com/heygen-com/hyperframes/tree/main/registry/components/yt-feather-highlight) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA feathered hole in a 50–70% black layer opens over one card, field or chart bar; optional thin ring and label beside it.\n\n**When:** Dense dashboards or settings screens where a zoom would lose context.\n\n**Watch out:** Do not leave the dim on for more than a beat or two; return to the full frame before the next point.\n\n**Timing:** Dim in 0.3 s, hold 1.5–3 s, release 0.3 s. Move the hole with power2.inOut.\n\n**Also called:** feathered spotlight, focus highlight, vignette callout\n\n### In FFmpeg\n\n```bash\n-vf \"vignette=angle=PI/4:x0=1190:y0=430:enable='between(t,4,7)'\"\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add yt-feather-highlight\n```\nAnimate the hole's CSS variables on the timeline: `tl.to(el,{\"--x\":\"62%\",\"--y\":\"40%\",\"--r\":\"180px\",duration:0.5,ease:\"power2.inOut\"},t)`.\n\n### In Remotion\n\n```tsx\nconst o = interpolate(frame,[0,9],[0,0.65],{extrapolateRight:'clamp'});\n<AbsoluteFill style={{background:`radial-gradient(circle 180px at 62% 40%, transparent 70%, rgba(0,0,0,${o}))`}}/>\n```\n\n### In CapCut\n\nDuplicate the clip on an overlay track, apply Mask → Circle (feather ~30) on the top copy, lower the bottom copy's brightness (Adjust → Brightness −40).\n\n### Ready-made components\n\n- [Feathered Spotlight](https://skills.varg.ai/component/hf.yt-feather-highlight/) (hyperframes): npx hyperframes add yt-feather-highlight\n- [True Focus](https://skills.varg.ai/component/reactbits.true-focus/) (react-bits): npx shadcn@latest add @react-bits/TrueFocus-JS-CSS\n- [Pointer Circle + Countdown](https://skills.varg.ai/component/hf.yt-circle-pointer/) (hyperframes): npx hyperframes add yt-circle-pointer\n\n### Where this comes from\n\n- [Trainn: how to add zoom effects to product demo videos](https://trainn.co/answers/how-to-add-zoom-effects-to-product-demo-videos/)\n- [Consensus: 5 tips to record the best product video](https://goconsensus.com/blog/5-crucial-tips-to-recording-the-best-product-video)","useWhen":["Dense dashboards or settings screens where a zoom would lose context."],"notFor":["Do not leave the dim on for more than a beat or two; return to the full frame before the next point."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/yt-feather-highlight","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Feathered Spotlight · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.yt-feather-highlight/","license":"Apache-2.0","note":"Dims the frame except a feathered ellipse; the hole's position and size are CSS variables, so helpers glide the spotlight between targets"},{"role":"component","label":"True Focus · react-bits","kind":"link","url":"https://skills.varg.ai/component/reactbits.true-focus/","license":"MIT + Commons Clause","note":"Corner brackets jump from word to word, sharpening the framed word while the rest stay blurred"},{"role":"component","label":"Pointer Circle + Countdown · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.yt-circle-pointer/","license":"Apache-2.0","note":"Draw-on annotation ellipse around a target plus a countdown chip that pulses each tick"},{"role":"source","label":"Trainn: how to add zoom effects to product demo videos","kind":"link","url":"https://trainn.co/answers/how-to-add-zoom-effects-to-product-demo-videos/","license":"link-only"},{"role":"source","label":"Consensus: 5 tips to record the best product video","kind":"link","url":"https://goconsensus.com/blog/5-crucial-tips-to-recording-the-best-product-video","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":30,"text":"Dim Everything But the Target"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.yt-feather-highlight","reactbits.true-focus","hf.yt-circle-pointer"],"aliases":["feathered spotlight","focus highlight","vignette callout"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/43e0b5cdc6cb/lib-react-bits-true-focus.mp4","blur":"https://s3.varg.ai/how-to/previews/c89ca9f8a802/lib-react-bits-true-focus.webp","source":"https://s3.varg.ai/how-to/previews/43e0b5cdc6cb/lib-react-bits-true-focus.mp4","page":"https://reactbits.dev/text-animations/true-focus","credit":"Captured from the library’s own demo page (React Bits)","rights":"publisher-site","note":"Preview of the True Focus component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/impact-headline-slam","slug":"impact-headline-slam","name":"Impact Headline Slam","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"titles","tags":["title","impact","beat","hype","hyperframes","remotion","capcut"],"summary":"A heavy headline scales down hard into frame and lands with a 2–3 frame shake.","description":"Built on [Headline Slam](https://github.com/heygen-com/hyperframes/tree/main/registry/components/headline-slam) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nCondensed black type arrives from 140% scale with motion blur, stops dead, the frame jolts once, then everything is still.\n\n**When:** The single loudest claim in a hype cut, or the product name on the music drop.\n\n**Watch out:** Do not slam more than once or twice per film; repeated impacts read as noise.\n\n**Timing:** Scale-in 0.18–0.25 s (power4.in), shake 3 frames, then a 1–1.5 s hold. Put it on the beat.\n\n**Also called:** title slam, punch title, shutter slam\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add headline-slam\n```\nPlace the block so its land frame sits on the downbeat (`data-start` = beatTime − 0.2).\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/impact-shake\nconst s = interpolate(frame,[0,6],[1.4,1],{extrapolateRight:'clamp',easing:Easing.in(Easing.exp)});\nconst shake = frame>=6&&frame<9 ? (frame%2?6:-6) : 0;\n```\n\n### In CapCut\n\nText → Animation In: \"Zoom in\"/\"Slam\" 0.2 s; add Effects → \"Shake\" for 3 frames on the land; add a whoosh/impact from Audio → Sound effects.\n\n### Ready-made components\n\n- [Headline Slam](https://skills.varg.ai/component/hf.headline-slam/) (hyperframes): npx hyperframes add headline-slam\n- [Shutter Slam](https://skills.varg.ai/component/hf.shutter-slam/) (hyperframes): npx hyperframes add shutter-slam\n- [Impact Shake](https://skills.varg.ai/component/remocn.impact-shake/) (remocn): npx shadcn@latest add @remocn/impact-shake\n\n### Where this comes from\n\n- [Jamie on X: SFX breakdown of a launch video](https://x.com/jamiesmotion/status/2110099791958982703)\n- [NewscastStudio: Apple brings its aesthetic to a sports graphics package](https://www.newscaststudio.com/2022/04/11/apple-tv-friday-night-baseball/)","useWhen":["The single loudest claim in a hype cut, or the product name on the music drop."],"notFor":["Do not slam more than once or twice per film; repeated impacts read as noise."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/headline-slam","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Headline Slam · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.headline-slam/","license":"Apache-2.0","note":"A heavyweight headline scales down into frame, lands with a deterministic three-frame shake, holds with subtle drift, and whips upward on exit."},{"role":"component","label":"Shutter Slam · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.shutter-slam/","license":"Apache-2.0","note":"One word thrown through six single-property beats under integrated shutter blur — two translate slams, a scale punch, then a full turn about each axis — on the measured easing of the After Effects export the shutter…"},{"role":"component","label":"Impact Shake · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.impact-shake/","license":"MIT","note":"Heavy content slams in from above with squash, a damped camera jolt, a two-frame RGB split and dust puffs kicking out sideways."},{"role":"source","label":"Jamie on X: SFX breakdown of a launch video","kind":"link","url":"https://x.com/jamiesmotion/status/2110099791958982703","license":"link-only"},{"role":"source","label":"NewscastStudio: Apple brings its aesthetic to a sports graphics package","kind":"link","url":"https://www.newscaststudio.com/2022/04/11/apple-tv-friday-night-baseball/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":30,"text":"Impact Headline Slam"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.headline-slam","hf.shutter-slam","remocn.impact-shake"],"aliases":["title slam","punch title","shutter slam"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/44808d2f1c67/take-impact-headline-slam.mp4","w":640,"h":360,"duration":3.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAxNJREFUeJxVk1tzGzUYhnXcXe3JW9tNa4c0NJ4CpS2Z4ZgLLvlp/B0OF9z2ttxloG7LlMYkTdvYsb1rvOvsanVELgOU70KjGUnP9+p9Jfjtdz8cHx9v5DRJ4jA1jLGb/r0kSaCh4G1ZayGEbmwh5JwjowPGgCEIQQ3Bv0WoxQ8+vHf6BC1PczOiDTdR0oZRFtjtsjLGaOV5nnFERNebQgh5w48i7JYttug/0FVda62/vns0fjy2YYoxrhXaSMDQlrQoKzcOqIcMwAiEnt+2LcYIQkcGTujfFCeZjNcnrutenEYxIyXcHQ5+5XMhRDWrsizLBaceva4UhAgZA7UNKEZWo+1Z+PbethHWySY/l48cUkzP3M6jzUetuUhZCOuWVw3N+hhAZKwBBkGgIa5bwbXmUsceUVIu6lZKFccBRJDseJlTOw6nDneOC4zIUfkAIdRRietJAbbSWm2sBcoqqbWU7lJYQu+yKE43HCGc1rXv+yQwceinAaxcIleUW8sn7W+Hnxx+1bvvsjtfc9eGIdLv90PMbqfhpMiBEQoEQltnN4ZEamGEJu3TZDgYoMGEegxLoZRMaRzT8Kw6uUa783rWNE0IdllqqFgllF6PwqIobJA4dzwfO6OwxZRg8vzk9eVys7tOu72e7lxYYu+ke6P+wUS9+fHh90+9pZNd0c8vYZXJfuHkBCSKo9RK7WI12/flilBKOKlm5Xo5jnZ2NvcPhlmnM/dynL+6IMvSU35ArFWPm19erjpfxN+YzGeSAAWUNM6djGFCcF3WBEACAAIIKdBcLE6LfHGt2x3eiuZNVEZTksQdC106nPB5OXtY/uTaHOIvYy/K87WzP6DaIxgHhEBD/nmZWxy3zXTxKs/D6n1043bWi4YBnRqsV7qQQlzBoi7z2tZ92DuAnyKCGddWGR85WZiAd2trHRaW//7Hs7Nztr9/a//jLmOhEK0NQmZDl+AaXf5ZzOZ21el07ug+L/kgytwP/T/oXZxpX0yev3zjj0aj9z7Ycx91JV+3tqWQONwGL6pqvlAv3PwzdXfAbv4Fqm+2C68telcAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item headline-slam (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/headline-slam","credit":"Rendered by varg · HyperFrames Headline Slam","rights":"generated","note":"The Headline Slam component rendered as installed (npx hyperframes add headline-slam), defaults only","bytes":189674,"addedAt":"2026-10-28"}},{"id":"heygen-com/center-build-phrase","slug":"center-build-phrase","name":"Phrase Builds From the Center","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"titles","tags":["kinetic type","tagline","voiceover","words","hyperframes","remotion","capcut"],"summary":"Words arrive one at a time and push the growing phrase so it always sits centered.","description":"Built on [Kinetic Center Build](https://github.com/heygen-com/hyperframes/tree/main/registry/components/kinetic-center-build) by Remocn (hyperframes), Apache-2.0. The write-up and recipes below are varg's.\n\nFirst word lands center; each next word drives in from the right and shoves the line left until the full phrase locks center.\n\n**When:** Say the tagline in sync with the voiceover, word for word.\n\n**Watch out:** Do not time words to a fixed interval; cue each one from the word timestamps of the voiceover.\n\n**Timing:** Each word 0.25–0.35 s, expo.out; final hold ≥ 1 s.\n\n**Also called:** kinetic center build, word push, voiceover words\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add kinetic-center-build\n```\nFeed word start times from the transcript JSON into the block variables so each push lands on its spoken word.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/kinetic-center-build\nconst shown = words.filter(w => frame >= w.startMs/1000*fps);\n```\n\n### In CapCut\n\nCaptions → Auto captions (word-level), then style each caption chunk as a single word in the center; Animation In \"Slide left\" 0.25 s.\n\n### Ready-made components\n\n- [Kinetic Center Build](https://skills.varg.ai/component/hf.kinetic-center-build/) (hyperframes): npx hyperframes add kinetic-center-build\n- [Kinetic Center Build](https://skills.varg.ai/component/animata.kinetic-center-build/) (animata): npx shadcn@latest add https://animata.design/r/text/kinetic-center-build.json\n- [Word Push](https://skills.varg.ai/component/remocn.word-push/) (remocn): npx shadcn@latest add @remocn/word-push\n\n### Where this comes from\n\n- [Kinetic typography without After Effects (plan ~2 words per second)](https://oakgen.ai/blog/kinetic-typography-without-after-effects)\n- [SVGator: kinetic typography, a guide to text in motion](https://www.svgator.com/blog/kinetic-typography-a-guide-to-text-in-motion/)","useWhen":["Say the tagline in sync with the voiceover, word for word."],"notFor":["Do not time words to a fixed interval; cue each one from the word timestamps of the voiceover."],"publisher":{"name":"Remocn · HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/kinetic-center-build","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Kinetic Center Build · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.kinetic-center-build/","license":"Apache-2.0","note":"Words enter from the right and push the growing phrase left until the final line locks centered."},{"role":"component","label":"Kinetic Center Build · animata","kind":"link","url":"https://skills.varg.ai/component/animata.kinetic-center-build/","license":"MIT","note":"Words arrive one at a time with a light blur, pushing the line along until the phrase sits centred"},{"role":"component","label":"Word Push · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.word-push/","license":"MIT","note":"A phrase builds from its first word centered: each next word drives in from the right and pushes the line left, easing into the new center."},{"role":"source","label":"Kinetic typography without After Effects (plan ~2 words per second)","kind":"link","url":"https://oakgen.ai/blog/kinetic-typography-without-after-effects","license":"link-only"},{"role":"source","label":"SVGator: kinetic typography, a guide to text in motion","kind":"link","url":"https://www.svgator.com/blog/kinetic-typography-a-guide-to-text-in-motion/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":30,"text":"Phrase Builds From the Center"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.kinetic-center-build","animata.kinetic-center-build","remocn.word-push"],"aliases":["kinetic center build","word push","voiceover words"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/9fadd38e2164/lib-animata-kinetic-center-build.mp4","blur":"https://s3.varg.ai/how-to/previews/630fa0c3a5f4/lib-animata-kinetic-center-build.webp","source":"https://s3.varg.ai/how-to/previews/9fadd38e2164/lib-animata-kinetic-center-build.mp4","page":"https://animata.design/docs/text/kinetic-center-build","credit":"Captured from the library’s own demo page (Animata)","rights":"publisher-site","note":"Preview of the Kinetic Center Build component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/specular-sweep-title","slug":"specular-sweep-title","name":"Specular Sweep Title","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"titles","tags":["title","shimmer","premium","logo","hyperframes","remotion","capcut"],"summary":"A static title receives one clean light sweep through its glyphs, then rests.","description":"Built on [Text Shimmer](https://github.com/heygen-com/hyperframes/tree/main/registry/components/text-shimmer) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA narrow white gradient band passes diagonally through the letters once, like light catching a metal logo.\n\n**When:** Mark a premium moment: price reveal, plan name, the product name in the end card.\n\n**Watch out:** Do not loop the sweep; one pass is polish, a loop is a loading state.\n\n**Timing:** One pass 0.8–1.2 s, power2.inOut, starting ~0.3 s after the title settles.\n\n**Also called:** shimmer title, shine sweep, metal glint\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add shimmer-sweep\n```\n```js\ntl.fromTo(\".title\",{\"--sweep\":\"-30%\"},{\"--sweep\":\"130%\",duration:1,ease:\"power2.inOut\"},1.2);\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/shimmer-sweep\nconst x = interpolate(frame,[30,60],[-30,130],{extrapolateLeft:'clamp',extrapolateRight:'clamp'});\nbackgroundImage:`linear-gradient(110deg,#999 ${x-10}%,#fff ${x}%,#999 ${x+10}%)`, WebkitBackgroundClip:'text'\n```\n\n### In CapCut\n\nEffects → search \"shine\"/\"light sweep\" and apply only to the text layer for 1 s.\n\n### Ready-made components\n\n- [Text Shimmer](https://skills.varg.ai/component/hf.text-shimmer/) (hyperframes): npx hyperframes add text-shimmer\n- [Shimmer Sweep](https://skills.varg.ai/component/hf.shimmer-sweep/) (hyperframes): npx hyperframes add shimmer-sweep\n- [Shimmering Text](https://skills.varg.ai/component/animateui.shimmering-text/) (animate-ui): npm install @animate-ui/react motion\n- [Shimmer Sweep](https://skills.varg.ai/component/remocn.shimmer-sweep/) (remocn): npx shadcn@latest add @remocn/shimmer-sweep\n\n### Where this comes from\n\n- [NewscastStudio: Apple brings its aesthetic to a sports graphics package](https://www.newscaststudio.com/2022/04/11/apple-tv-friday-night-baseball/)\n- [Codrops: 7 must-know GSAP animation tips](https://tympanus.net/codrops/2025/09/03/7-must-know-gsap-animation-tips-for-creative-developers/)","useWhen":["Mark a premium moment: price reveal, plan name, the product name in the end card."],"notFor":["Do not loop the sweep; one pass is polish, a loop is a loading state."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/text-shimmer","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Text Shimmer · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.text-shimmer/","license":"Apache-2.0","note":"A static headline receives one clean specular gradient sweep through its glyphs, then returns to its ordinary text color."},{"role":"component","label":"Shimmer Sweep · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.shimmer-sweep/","license":"Apache-2.0","note":"Animated light sweep across text or elements using a CSS gradient mask — ideal for AI accents and premium reveals"},{"role":"component","label":"Shimmering Text · animate-ui","kind":"link","url":"https://skills.varg.ai/component/animateui.shimmering-text/","license":"MIT + Commons Clause","note":"A glint of light running letter by letter across grey text, each letter brightening as it passes"},{"role":"component","label":"Shimmer Sweep · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.shimmer-sweep/","license":"MIT","note":"Light shine sweeps across muted text via background-clip:text."},{"role":"source","label":"NewscastStudio: Apple brings its aesthetic to a sports graphics package","kind":"link","url":"https://www.newscaststudio.com/2022/04/11/apple-tv-friday-night-baseball/","license":"link-only"},{"role":"source","label":"Codrops: 7 must-know GSAP animation tips","kind":"link","url":"https://tympanus.net/codrops/2025/09/03/7-must-know-gsap-animation-tips-for-creative-developers/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":30,"text":"Specular Sweep Title"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.text-shimmer","hf.shimmer-sweep","animateui.shimmering-text","remocn.shimmer-sweep"],"aliases":["shimmer title","shine sweep","metal glint"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/9c80da482e09/take-specular-sweep-title.mp4","w":640,"h":360,"duration":3,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAzVJREFUeJwlk8tvHEUQxvtRPb0zO7M73lkndizZllEkYik2ISBOSAgkECInbhw4Bok/DSmHcEDioQQJJRciAQfD+kEUEhnHltfr3dl59Ey/qMV96EN31e+r+rqavvf+h0EQOGc5h0RCkiQry3Gn05lejofZ8PCv0fHxcRx3b9xYnStdlaV1lBDCgA6yzDS1dXbzWjQej4E6I2gQhUgLOgGPJPSguXVza3RQPPn5+8e/HhGCmS5N+p9+9G62OrzIC874zfVsfX2jKHNEL0XAdAkSKKc24KwT0CTkYciiqPfw4Xff/vAUlcNAeu+sc0rVP/70+N69z9aypKqqRlWz6cXbby4Dz84vtdEtMNtwR5zDcAZedwMpAjYa7RlPgaM2scYteuG8rNtfnjz7+osPXB8ao0kzr88tmsCNvrU1AG0aQh3zDXWacCJ9lEZwbRD9+c/MWIsIY71FldZxGrz49/Tw6Nn9+1+VkyMpZZDG3vnUagyDd9ZDPFrqmF4v7qcsTaVcHXS7jjAKQjRK+SuTsEPSYsLT359/SYNeFlprvLAcy66hLCuQYYjXNpA07EJo+8PU9uGTzz/md+n29vbho9/atr2zu4tvd3Jy4r1Pk8LLZZoBNVbU4wbXpS9yDZNGgABTQ0XYrGAHL46P8v3r11dUUfy9P9q9/Vae50XV7Ny5u7n5BtY+7J2G0rjzs7osTUnqqlZGWMPR31Y19VlRofWTkqPsuPZSHuTj11jLN5RiFfRqJ4u1szXY2bm9//yVUmoli5MkjjsGBeDBoz8Wjv4fzRkwxqTXMchsbeXly1fKoUUEKbhzdJSzeBDtHe5ZhhNszvL6Us0CaDALcII4AI4Kuqmd9hahZjafLnWjbDiYTuedsJMXNYLWUrmxuVG307KoexmPu4HzLWctB7l4Neot9ahpkIQsYyxQRjnxhGkEOyIcA75orfbk9WQqwVIqMcRYzIKmMUpVQgjgQWANUvAKhw4odbi0dZN5obUmAoqmpgwlqdKNaFXSdf005MLVVUVFgCMirML/AEjBH3D1bxGBtjJGKMUGLQ480hkAjhGSsL66aU8vWiH0UtrJc2WJpgtlq9r2PwSd3T03/ZyIAAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item text-shimmer (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/text-shimmer","credit":"Rendered by varg · HyperFrames Text Shimmer","rights":"generated","note":"The Text Shimmer component rendered as installed (npx hyperframes add text-shimmer), defaults only","bytes":133084,"addedAt":"2026-10-28"}},{"id":"heygen-com/decode-in-tech-title","slug":"decode-in-tech-title","name":"Decode-In Tech Title","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"titles","tags":["title","scramble","developer","tech","hyperframes","remotion","capcut"],"summary":"Random glyphs churn and lock into the real word from left to right.","description":"Built on [Matrix Decode](https://github.com/heygen-com/hyperframes/tree/main/registry/components/matrix-decode) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nMonospace characters flicker through symbols and settle one by one into the product or feature name.\n\n**When:** Developer tools, security, AI or infra products; feature names that are code-like.\n\n**Watch out:** Do not scramble long sentences; keep it to 1–3 words or it becomes unreadable noise.\n\n**Timing:** 0.6–1.0 s total, each glyph locks 30–50 ms after the previous one. Use a fixed seed so renders match.\n\n**Also called:** scramble text, matrix decode, hacker reveal\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add matrix-decode\n```\nThe block is seek-safe: the glyph at any frame is derived from time + seed, so preview and render match.\n\n### In Remotion\n\n```tsx\nconst locked = Math.floor(interpolate(frame,[0,24],[0,text.length],{extrapolateRight:'clamp'}));\nconst out = text.split('').map((c,i)=> i<locked? c : GLYPHS[(i*7+frame*13)%GLYPHS.length]).join('');\n```\n\n### In CapCut\n\nText → Animation In: \"Typewriter\" or \"Glitch\" 0.6 s on a monospace font.\n\n### Ready-made components\n\n- [Matrix Decode](https://skills.varg.ai/component/hf.matrix-decode/) (hyperframes): npx hyperframes add matrix-decode\n- [Hyper Text](https://skills.varg.ai/component/magicui.hyper-text/) (magic-ui): npx shadcn@latest add @magicui/hyper-text\n- [Scramble Reveal](https://skills.varg.ai/component/hf.scramble-reveal/) (hyperframes): npx hyperframes add scramble-reveal\n- [Text Scramble](https://skills.varg.ai/component/motionprimitives.text-scramble/) (motion-primitives): npx motion-primitives@latest add text-scramble\n\n### Where this comes from\n\n- [SVGator: kinetic typography, a guide to text in motion](https://www.svgator.com/blog/kinetic-typography-a-guide-to-text-in-motion/)","useWhen":["Developer tools, security, AI or infra products; feature names that are code-like."],"notFor":["Do not scramble long sentences; keep it to 1–3 words or it becomes unreadable noise."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/matrix-decode","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Matrix Decode · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.matrix-decode/","license":"Apache-2.0","note":"Random scramble resolves left-to-right into the target text."},{"role":"component","label":"Hyper Text · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.hyper-text/","license":"MIT","note":"A monospace word scrambles through random letters and locks into the real text from left to right"},{"role":"component","label":"Scramble Reveal · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.scramble-reveal/","license":"Apache-2.0","note":"A deterministic hacker-style text reveal that cycles fixed glyph rows and locks the target string from left to right."},{"role":"component","label":"Text Scramble · motion-primitives","kind":"link","url":"https://skills.varg.ai/component/motionprimitives.text-scramble/","license":"MIT","note":"Monospace letters churn through random characters before settling into the final word"},{"role":"source","label":"SVGator: kinetic typography, a guide to text in motion","kind":"link","url":"https://www.svgator.com/blog/kinetic-typography-a-guide-to-text-in-motion/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":30,"text":"Decode-In Tech Title"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.matrix-decode","magicui.hyper-text","hf.scramble-reveal","motionprimitives.text-scramble"],"aliases":["scramble text","matrix decode","hacker reveal"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/732c8464e959/lib-magic-ui-hyper-text.mp4","blur":"https://s3.varg.ai/how-to/previews/8e31612c140c/lib-magic-ui-hyper-text.webp","source":"https://s3.varg.ai/how-to/previews/732c8464e959/lib-magic-ui-hyper-text.mp4","page":"https://magicui.design/docs/components/hyper-text","credit":"Captured from the library’s own demo page (Magic UI)","rights":"publisher-site","note":"Preview of the Hyper Text component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"magicuidesign/footage-inside-letters","slug":"footage-inside-letters","name":"Footage Inside the Letters","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"titles","tags":["title","video mask","knockout","hero","hyperframes","remotion","capcut"],"summary":"Huge block letters act as windows onto playing product footage or a demo clip.","description":"Built on [Video Text](https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/video-text.tsx) by magic-ui, MIT. The write-up and recipes below are varg's.\n\nFull-bleed heavy type on black or white; the product video plays only through the letterforms.\n\n**When:** Open a launch film with the product name, or bridge into a demo by expanding the letters.\n\n**Watch out:** Do not use thin fonts; strokes under ~12% of the cap height show too little footage.\n\n**Timing:** Hold 1.5–2.5 s; optionally scale the type up 4–8× over 0.6 s to fall into the footage.\n\n**Also called:** video text, knockout type, text mask video\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add texture-mask-text\n```\nPlace the `<video class=\"clip\">` inside the masked wrapper; animate the wrapper scale, not the video.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @magicui/video-text\n<div style={{WebkitMaskImage:'url(#word)', maskImage:'url(#word)'}}><OffthreadVideo src={demo}/></div>\n```\n\n### In CapCut\n\nPut white text on black as the lower layer and the footage above it, then set the footage Blend → \"Multiply\" so it only shows through the letters.\n\n### Ready-made components\n\n- [Video Text](https://skills.varg.ai/component/magicui.video-text/) (magic-ui): npx shadcn@latest add @magicui/video-text\n- [Texture Mask Text](https://skills.varg.ai/component/hf.texture-mask-text/) (hyperframes): npx hyperframes add texture-mask-text\n\n### Where this comes from\n\n- [Lago: we killed our motion design job (Linear-style films, Remotion)](https://getlago.com/blog/we-killed-our-motion-design-job)\n- [Bohdan Motion: breakdown of the Replit Design launch video](https://x.com/bohdanmotion/status/2083248851750728188)","useWhen":["Open a launch film with the product name, or bridge into a demo by expanding the letters."],"notFor":["Do not use thin fonts; strokes under ~12% of the cap height show too little footage."],"publisher":{"name":"Magic UI","handle":"magicuidesign","kind":"community","verified":false,"url":"https://magicui.design","avatar":"https://github.com/magicuidesign.png"},"source":{"url":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/video-text.tsx","repo":"magicuidesign/magicui","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Video Text · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.video-text/","license":"MIT","note":"Huge block letters cut out of a playing video, so the footage only shows through the type"},{"role":"component","label":"Texture Mask Text · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.texture-mask-text/","license":"Apache-2.0","note":"CSS luminance masks that cut holes through letterforms - 66 pre-built texture masks from ambientCG PBR color maps"},{"role":"source","label":"Lago: we killed our motion design job (Linear-style films, Remotion)","kind":"link","url":"https://getlago.com/blog/we-killed-our-motion-design-job","license":"link-only"},{"role":"source","label":"Bohdan Motion: breakdown of the Replit Design launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2083248851750728188","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":30,"text":"Footage Inside the Letters"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["magicui.video-text","hf.texture-mask-text"],"aliases":["video text","knockout type","text mask video"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/abc1ae7d7177/lib-magic-ui-video-text.mp4","blur":"https://s3.varg.ai/how-to/previews/1974da0006f2/lib-magic-ui-video-text.webp","source":"https://s3.varg.ai/how-to/previews/abc1ae7d7177/lib-magic-ui-video-text.mp4","page":"https://magicui.design/docs/components/video-text","credit":"Captured from the library’s own demo page (Magic UI)","rights":"publisher-site","note":"Preview of the Video Text component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/tracking-in-label","slug":"tracking-in-label","name":"Tracking-In Feature Label","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"titles","tags":["title","label","tracking","premium","hyperframes","remotion","capcut"],"summary":"Wide-spaced letters draw together into a tight, crisp label as the blur clears.","description":"Built on [Tracking In](https://github.com/heygen-com/hyperframes/tree/main/registry/components/tracking-in) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA short label starts with very wide tracking and soft blur, then closes to normal spacing with a tiny spring.\n\n**When:** Feature names, plan names and section labels over UI — quiet and premium.\n\n**Watch out:** Do not use it on paragraphs or long names; tracking changes reflow the whole line.\n\n**Timing:** 0.6–0.9 s, expo.out; letter-spacing from ~0.5 em to 0.\n\n**Also called:** letter-spacing reveal, tracking in, premium label\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add tracking-in\n```\n```js\ntl.from(\".label\",{letterSpacing:\"0.5em\",filter:\"blur(6px)\",opacity:0,duration:0.8,ease:\"expo.out\"},0.4);\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/tracking-in\nconst p = spring({frame,fps,config:{damping:18,stiffness:120}});\nletterSpacing:`${interpolate(p,[0,1],[0.5,0])}em`\n```\n\n### In CapCut\n\nText → Animation In: \"Spread in\"/\"Letter spacing\" 0.6–0.8 s.\n\n### Ready-made components\n\n- [Tracking In](https://skills.varg.ai/component/hf.tracking-in/) (hyperframes): npx hyperframes add tracking-in\n- [Tracking In](https://skills.varg.ai/component/remocn.tracking-in/) (remocn): npx shadcn@latest add @remocn/tracking-in\n- [Micro Scale Fade](https://skills.varg.ai/component/remocn.micro-scale-fade/) (remocn): npx shadcn@latest add @remocn/micro-scale-fade\n\n### Where this comes from\n\n- [Text animation for readability: kinetic type without overcomplication](https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication)\n- [Material Design: motion duration and easing](https://m1.material.io/motion/duration-easing.html)","useWhen":["Feature names, plan names and section labels over UI — quiet and premium."],"notFor":["Do not use it on paragraphs or long names; tracking changes reflow the whole line."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/tracking-in","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Tracking In · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.tracking-in/","license":"Apache-2.0","note":"A precise letter-spacing reveal for premium headings and interface labels"},{"role":"component","label":"Tracking In · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.tracking-in/","license":"MIT","note":"Letter-spacing collapses and blur clears with a springy motion."},{"role":"component","label":"Micro Scale Fade · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.micro-scale-fade/","license":"MIT","note":"A calm, tiny scale pop used as subtle premium polish for labels and headings."},{"role":"source","label":"Text animation for readability: kinetic type without overcomplication","kind":"link","url":"https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication","license":"link-only"},{"role":"source","label":"Material Design: motion duration and easing","kind":"link","url":"https://m1.material.io/motion/duration-easing.html","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":30,"text":"Tracking-In Feature Label"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.tracking-in","remocn.tracking-in","remocn.micro-scale-fade"],"aliases":["letter-spacing reveal","tracking in","premium label"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/fd09b8c05aa2/take-tracking-in-label.mp4","w":640,"h":360,"duration":4.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAwdJREFUeJxNU9uOG0UQ7equuXk8Y4/X9lobk4QHwhvJ/+UL8gX8DU8gJISEeGFBLFlQYu3Ga3vGc+vp6RtlhBAtdfdDq0/VuRS8ffd1GIYNQtd3veoXi0XimHXOWGusCQV67xQGp1OpjVqtVgkGANwLYJfFaXvGnPcInGEguLXCejWOXd8HjDvnSimVUqvpxBMSD9Dovpdu1FpbzoVHLuhCBADLQADgj/ufqc6z5KVA8IMeQaqQW2P2VUVwE2boh4VA9R0zRnedwMBzTsggxKANdRQnMZ3403jLdrevcLcoFhOYyV6F2l0aJmJa95xR5ZHbc9sZZ6IkFiGV5728kEqShGShJulEzoiWuZW/8RY+51+kaZrpwpBC4+joCoDqkwpMa2PMOCgJSS/bR2kCDKaRStPJ9QIcMMzDlLQYWGO0/cP8IqRA9hIR1WFw3klGjRbAg67xcpCxjAPOyRVtkXOmRu+Zviqap08VhobeoigS0vXKD+Ds6sWCoJ/P1rPZrO1d3dRvvnp1nGfH+rzdbuNocjgcvr//KMAG4SFOJrXk567E8S6bF3N79RAEcW9qRLFdbaSUQoFHN1ukx2pfV40Z7c1yQ7LT03Q6DfhwYW8/oJ3oNga0eP9hNzmWmzrNso1JDJn9zXffvnn9OuHs7v3v9/1pkqbVry0lJQ+i8KLqvKqq6Ry18a2NnOLkjxACNZpKlu19nWXt+iqfzwvIdh9Pn6IovKse9+zs1T5i6Jy99tl6vc46EYax4YBxkjwMQnCtgIRHTxFFQdaW7bFpqiyrF8toUAzyg5smqXfjOCo/AohHGA7q4cZjHuXXbM0cC2BZzIt4lcRxgv8knVEyvfCW4JryXIs8V589nxXTleA7H3vpJIVFM2WYec/vgzGYdy0VsPksvJ70qTpXf/0LdOkLgAGNB02EqZqyvm2Wy+WzF6s8y5/sny6yllNCtSRnAX4IdyITka0f67Low0uy2f/Wf3AgLnO4f3o6leVms9l+eUMqSDhSKEPRXcgKYxkzzNdjZc85Kfg3MpHgraItniwAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item tracking-in (Apache-2.0) in a host composition","page":"https://hyperframes.heygen.com/catalog/components/tracking-in","credit":"Rendered by varg · HyperFrames Tracking In","rights":"generated","note":"The Tracking In component used as its header comment describes, with demo copy","bytes":229105,"addedAt":"2026-10-28"}},{"id":"heygen-com/tweet-proof-card","slug":"tweet-proof-card","name":"Tweet as Proof Card","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"quotes","tags":["social proof","tweet","testimonial","card","hyperframes","remotion","capcut"],"summary":"A real post from a user animates in as a card: avatar, name, text, then counts tick up.","description":"Built on [X Post Card](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/x-post) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA clean X-style card floats over a blurred UI or gradient; text reveals at reading pace, likes and reposts count up last.\n\n**When:** Right after a feature demo, as proof that real people already use it.\n\n**Watch out:** Do not invent posts or edit the wording; use real posts with permission and keep the handle visible.\n\n**Timing:** Card in 0.4 s (back.out 1.2), text at ~3 words/s, counts 0.8 s ease-out, hold 1.5 s after.\n\n**Also called:** post card, X post overlay, social proof tweet\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add x-post\n```\n```html\n<div data-composition-id=\"x-post\" data-composition-src=\"compositions/x-post.html\"\n  data-variable-values='{\"name\":\"Ada\",\"handle\":\"@ada\",\"text\":\"This saved my week\",\"likes\":1240}'\n  data-start=\"12\" data-duration=\"5\" data-track-index=\"2\"></div>\n```\n\n### In Remotion\n\n```tsx\n// fetch once with react-tweet's getTweet(id), render the card yourself, animate:\nconst s = spring({frame, fps, config:{damping:14}});\n<div style={{transform:`scale(${interpolate(s,[0,1],[0.9,1])})`, opacity:s}}><EmbeddedTweet tweet={data}/></div>\n```\n\n### In CapCut\n\nScreenshot the post, add as Overlay, Mask → Rectangle with round corners, Animation In \"Zoom in\" 0.4 s; add a soft shadow in Video → Basic.\n\n### Ready-made components\n\n- [X Post Card](https://skills.varg.ai/component/hf.x-post/) (hyperframes): npx hyperframes add x-post\n- [X Follow Card](https://skills.varg.ai/component/hf.x-follow-card/) (hyperframes): npx hyperframes add x-follow-card\n- [X Follow Card](https://skills.varg.ai/component/remocn.x-follow-card/) (remocn): npx shadcn@latest add @remocn/x-follow-card\n\n### Where this comes from\n\n- [Vercel: introducing react-tweet](https://vercel.com/blog/introducing-react-tweet)\n- [Senja: what is a Wall of Love](https://support.senja.io/what-is-wall-of-love-3whg8)\n- [CapCut: turn testimonials into quote graphics for short-form](https://www.capcut.com/create/testimonial-quote-graphics-short-form-content)","useWhen":["Right after a feature demo, as proof that real people already use it."],"notFor":["Do not invent posts or edit the wording; use real posts with permission and keep the handle visible."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/x-post","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"X Post Card · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.x-post/","license":"Apache-2.0","note":"Animated X/Twitter post card overlay with engagement metrics"},{"role":"component","label":"X Follow Card · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.x-follow-card/","license":"Apache-2.0","note":"A social follow card with avatar, handle, and follower motion."},{"role":"component","label":"X Follow Card · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.x-follow-card/","license":"MIT","note":"Animated X profile follow card — spring bounce-in, staggered blur-in, a synthetic cursor that clicks Follow and flips it to Following. Light/dark, horizontal or vertical."},{"role":"source","label":"Vercel: introducing react-tweet","kind":"link","url":"https://vercel.com/blog/introducing-react-tweet","license":"link-only"},{"role":"source","label":"Senja: what is a Wall of Love","kind":"link","url":"https://support.senja.io/what-is-wall-of-love-3whg8","license":"link-only"},{"role":"source","label":"CapCut: turn testimonials into quote graphics for short-form","kind":"link","url":"https://www.capcut.com/create/testimonial-quote-graphics-short-form-content","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":152,"text":"Tweet as Proof Card"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.x-post","hf.x-follow-card","remocn.x-follow-card"],"aliases":["post card","X post overlay","social proof tweet"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/x-post.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/x-post.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/x-post.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/x-post","credit":"X Post Card · hyperframes","rights":"publisher-site","note":"Preview of the X Post Card component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/quote-at-reading-pace","slug":"quote-at-reading-pace","name":"Quote at Reading Pace","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"quotes","tags":["testimonial","quote","customer","proof","hyperframes","remotion","capcut"],"summary":"One strong customer sentence reveals word by word, then the name, role and avatar settle under it.","description":"Built on [Testimonial Card](https://github.com/heygen-com/hyperframes/tree/main/registry/components/testimonial-card) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nLarge serif or grotesque quote on a quiet card; quote marks in the accent color; author line smaller and lighter.\n\n**When:** Between demo beats, to let a customer say the claim instead of the brand.\n\n**Watch out:** Do not use a whole paragraph; pick the single strongest 1–2 sentence pull quote.\n\n**Timing:** Words at 3–4 words/s, author in 0.3 s after, hold = word count ÷ 3 + 1 s.\n\n**Also called:** testimonial card, customer quote, pull quote card\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add testimonial-card\n```\nPass the quote, author and handle through `data-variable-values`; size `data-duration` from the word count (words/3 + 2 s).\n\n### In Remotion\n\n```tsx\nconst words = quote.split(' ');\nwords.map((w,i)=>{const o=interpolate(frame,[i*8,i*8+8],[0,1],{extrapolateLeft:'clamp',extrapolateRight:'clamp'}); return <span style={{opacity:o, filter:`blur(${(1-o)*6}px)`}}>{w} </span>})\n```\n\n### In CapCut\n\nText → Text templates → \"quote\"; Animation In: \"Typewriter\" or \"Fade in by word\"; author line as a second text layer 0.3 s later.\n\n### Ready-made components\n\n- [Testimonial Card](https://skills.varg.ai/component/hf.testimonial-card/) (hyperframes): npx hyperframes add testimonial-card\n- [Testimonial Proof Card](https://skills.varg.ai/component/hf.testimonial-proof-card/) (hyperframes): npx hyperframes add testimonial-proof-card\n- [Text Generate Effect](https://skills.varg.ai/component/aceternity.text-generate-effect/) (aceternity): npx shadcn@latest add @aceternity/text-generate-effect\n\n### Where this comes from\n\n- [Morphic: how to make a customer testimonial video](https://morphic.com/resources/how-to/make-a-customer-testimonial-video)\n- [CapCut: turn testimonials into quote graphics for short-form](https://www.capcut.com/create/testimonial-quote-graphics-short-form-content)\n- [Text animation for readability: kinetic type without overcomplication](https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication)","useWhen":["Between demo beats, to let a customer say the claim instead of the brand."],"notFor":["Do not use a whole paragraph; pick the single strongest 1–2 sentence pull quote."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/testimonial-card","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Testimonial Card · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.testimonial-card/","license":"Apache-2.0","note":"Reveals a customer quote at reading pace, then settles its avatar, author name, and handle beneath as a clean proof beat."},{"role":"component","label":"Testimonial Proof Card · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.testimonial-proof-card/","license":"Apache-2.0","note":"A quote card whose testimonial reveals per-line through a soft mask, with an avatar disc (initials default, image slot), mono name and role, an optional company text mark…"},{"role":"component","label":"Text Generate Effect · aceternity","kind":"link","url":"https://skills.varg.ai/component/aceternity.text-generate-effect/","license":"Aceternity License (free components)","note":"A paragraph appears word by word, each word fading in from blur to crisp white"},{"role":"source","label":"Morphic: how to make a customer testimonial video","kind":"link","url":"https://morphic.com/resources/how-to/make-a-customer-testimonial-video","license":"link-only"},{"role":"source","label":"CapCut: turn testimonials into quote graphics for short-form","kind":"link","url":"https://www.capcut.com/create/testimonial-quote-graphics-short-form-content","license":"link-only"},{"role":"source","label":"Text animation for readability: kinetic type without overcomplication","kind":"link","url":"https://cursa.app/en/page/text-animation-for-readability-kinetic-type-without-overcomplication","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":152,"text":"Quote at Reading Pace"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.testimonial-card","hf.testimonial-proof-card","aceternity.text-generate-effect"],"aliases":["testimonial card","customer quote","pull quote card"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d939b220f16f/take-quote-at-reading-pace.mp4","w":640,"h":360,"duration":6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAOVJREFUeJzNkMFuwjAQRO11hBNyQpXKAfEJIH6b/A6ceoBDPoAKmdiJ7V0cQkUwFUg0h85tD/N2ZniSTdgQSgah/G8QpGk6knl3UCt87uQcbFMZYxjDGwiJhEg+PqcAgIhKqaaxiL5nC4I4BVnUGngvEb/EyDI5znMBMJ/PfMA457xPRHgx2m62UcaWi8QfqrUK7U5KVVpLKb8PR+fstTbAy6Y3EBKuFsuyLL92+7q2vs3j7v4/zgQifGHM96pxHuYtijUh/Uz2izOqZm0dfFEiNKYifQrE5/7X1bpc71Fi0F80GOgMh2tremUfHiAAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item testimonial-card (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/testimonial-card","credit":"Rendered by varg · HyperFrames Testimonial Card","rights":"generated","note":"The Testimonial Card component rendered as installed (npx hyperframes add testimonial-card), defaults only","bytes":17108,"addedAt":"2026-10-28"}},{"id":"heygen-com/star-rating-sweep","slug":"star-rating-sweep","name":"Star Rating Sweep","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"quotes","tags":["rating","stars","reviews","social proof","hyperframes","remotion","capcut"],"summary":"Five stars fill left to right to the real score while the number counts up beside them.","description":"Built on [Star Rating Fill](https://github.com/heygen-com/hyperframes/tree/main/registry/components/star-rating-fill) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA row of outline stars; the fill layer sweeps to 4.8 and keeps the partial last star; \"4.8 · 2,300 reviews\" beside it.\n\n**When:** App and marketplace products; end of a testimonial run; pricing scenes.\n\n**Watch out:** Do not round up to a perfect 5.0; buyers distrust it and purchase likelihood peaks around 4.2–4.5.\n\n**Timing:** Sweep 0.8–1.0 s, power2.out; number counts in the same window; hold 1.5 s.\n\n**Also called:** rating stars, review score, app store rating\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add star-rating-fill\n```\nSet `data-variable-values='{\"rating\":4.8,\"count\":\"2,300 reviews\"}'`; the fractional star is preserved.\n\n### In Remotion\n\n```tsx\nconst r = interpolate(frame,[0,24],[0,4.8],{extrapolateRight:'clamp',easing:Easing.out(Easing.cubic)});\n<div style={{width:`${r/5*100}%`, overflow:'hidden'}}>★★★★★</div>\n```\n\n### In CapCut\n\nStickers → search \"5 stars\"; reveal with Mask → Linear keyframed left to right; add a Text counter manually per frame or use a counter text template.\n\n### Ready-made components\n\n- [Star Rating Fill](https://skills.varg.ai/component/hf.star-rating-fill/) (hyperframes): npx hyperframes add star-rating-fill\n- [Social Proof Card](https://skills.varg.ai/component/hf.social-proof-card/) (hyperframes): npx hyperframes add social-proof-card\n- [Counter](https://skills.varg.ai/component/animata.counter/) (animata): npx shadcn@latest add https://animata.design/r/text/counter.json\n\n### Where this comes from\n\n- [PowerReviews / Spiegel Research Center: from reviews to revenue](https://www.powerreviews.com/from-reviews-to-revenue/)\n- [Retail TouchPoints: purchase likelihood peaks at 4.2–4.5 stars](https://www.retailtouchpoints.com/topics/customer-experience/purchase-likelihood-highest-for-products-rated-between-4-2-and-4-5-out-of-5-stars)","useWhen":["App and marketplace products; end of a testimonial run; pricing scenes."],"notFor":["Do not round up to a perfect 5.0; buyers distrust it and purchase likelihood peaks around 4.2–4.5."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/star-rating-fill","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Star Rating Fill · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.star-rating-fill/","license":"Apache-2.0","note":"A token-driven star row whose colored layer sweeps to a rating, preserves the fractional final star, and can count the value in sync."},{"role":"component","label":"Social Proof Card · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.social-proof-card/","license":"Apache-2.0","note":"The app-store close as one mountable scene: wordmark, five stars, a proof line, three feature icons and a CTA capsule build in a quiet stagger and hold - measured from reference ad footage…"},{"role":"component","label":"Counter · animata","kind":"link","url":"https://skills.varg.ai/component/animata.counter/","license":"MIT","note":"A bold number spins up from zero and slows to a stop on its target"},{"role":"source","label":"PowerReviews / Spiegel Research Center: from reviews to revenue","kind":"link","url":"https://www.powerreviews.com/from-reviews-to-revenue/","license":"link-only"},{"role":"source","label":"Retail TouchPoints: purchase likelihood peaks at 4.2–4.5 stars","kind":"link","url":"https://www.retailtouchpoints.com/topics/customer-experience/purchase-likelihood-highest-for-products-rated-between-4-2-and-4-5-out-of-5-stars","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":152,"text":"Star Rating Sweep"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.star-rating-fill","hf.social-proof-card","animata.counter"],"aliases":["rating stars","review score","app store rating"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/56bf7c1b5c82/take-star-rating-sweep.mp4","w":640,"h":360,"duration":6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAy5JREFUeJw9U1mLHFUYvWstXV3L9JLpiU16FIMN5m0gvvgk0n8gv8j3PPsHfAwYA6KiBJwxIUyMCURIhBlDbHqabqf37tru6leT4PdQXKg65zvn3FP4iy8HjuN4FMGzHpC9ZO+of+Pi4mK5KXzfP33+5/HxowJ5lBKX5Lc/u339WiOO416vm6a73XLabDZHo/FoNGIUa05trcY9zwld4nNSprObHx24fnD/2/sPT/6w1QpalqUx9vxseOtml2DF1Ozo049dsr9er7VoizxlyChktNWIIKfOUeQiq0uG9flw+uDHx6UiQGO1JMg6jGbpDsmSu246n6+CejvCtMw/OYw+vN5nSuSFVdwglxqv7sRu2IqixWT81d17ixSBI4KwEBLkUMdbbovd7Gxw5w7Dl2HIESaBoR44Mozd2ieuy1oRiSJnr0FbLRy097//5YfZYk0p8BuhJCIUISOVtNZGTb91EJfZ3KsTyQlSBu1MlqasnThRGFKWdrtJo1dXUtrIS7lFADUGY8BWZxg4aGvGOXL3D22Rlcb6QmyybLdAeSbZ2zRcjhanT5/1+/PPj/q/nZx4jSeQ7BVSI4T/J8IYdKHhm2G2yWKDFovVNw9edDoHZ69eDwYD1g49rv3ZSsyWm5dvFk9fT1Ix7fUO34EJIVpr9H4qdlraRz//urpcQUV+f/W2292W68v6i7/YvZ9Oi6KIkuZ4uh1OX7Kg1QwBTg4/6IwuJtxx4O17UmvjsP73BN/9+jtFqJSCEjPP/rmWkONnz9lym2OMCWGEYGbABYVCbFbLG50Y6WSyKjjnQgig9rjtHDTDYIsJ4wy+dIwhlDJKkRAlC1ymlRIWUoZwK/FIK2Pt+bDQWl2ZI4Hvua6LbZlnOeRaXQKRIUwgy7JAjDoOZ8pIYwGPIQKtJRQHBNY8r92IJ9Nprt7FjLdpBtnncuNzGoWRMXlZMK8GF0G0NHmRM+iSNgp6B/4wq/ZbYrVBl+uNhCvDSCrleR41RmOqoA5E+qGTBJIxYogDGsGC77sME8MrFvgroJ5ViUVVF2uFvRpQgwspYAvFVSWgGON/ZyrWyV5CYEspec3V2v4HlorPgpMLUxQAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item star-rating-fill (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/star-rating-fill","credit":"Rendered by varg · HyperFrames Star Rating Fill","rights":"generated","note":"The Star Rating Fill component rendered as installed (npx hyperframes add star-rating-fill), defaults only","bytes":283508,"addedAt":"2026-10-28"}},{"id":"magicuidesign/wall-of-love-marquee","slug":"wall-of-love-marquee","name":"Wall of Love Marquee","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"quotes","tags":["testimonials","marquee","wall of love","social proof","hyperframes","remotion","capcut"],"summary":"Two or three rows of review cards drift in opposite directions, fading at the edges.","description":"Built on [Marquee](https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/marquee.tsx) by magic-ui, MIT. The write-up and recipes below are varg's.\n\nSmall cards with avatar, name and one line each, in rows moving at slightly different speeds under a short headline.\n\n**When:** Show breadth of love fast: many voices, none read in full. Good behind a stat like \"10,000 teams\".\n\n**Watch out:** Do not expect anyone to read the cards; put the one quote you need read in its own scene.\n\n**Timing:** Each row loops in 20–40 s; rows at 1×, 0.8×, 1.2× speed. Edge fade 10–15% of width.\n\n**Also called:** testimonial marquee, review wall, love wall\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add perspective-marquee\n```\nDrive x from the timeline (`tl.to(row,{xPercent:-50,duration:30,ease:\"none\"},0)`) so it stays seek-safe; duplicate the row content for a seamless loop.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @magicui/marquee  (replace CSS animation with frame-driven x)\nconst x = -((frame * speed) % rowWidth);\n<div style={{transform:`translateX(${x}px)`, maskImage:'linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)'}}>\n```\n\n### In CapCut\n\nExport a long strip image of cards, add as Overlay, keyframe Position X from right to left over the clip; duplicate and reverse for the second row.\n\n### Ready-made components\n\n- [Marquee](https://skills.varg.ai/component/magicui.marquee/) (magic-ui): npx shadcn@latest add @magicui/marquee\n- [Perspective Marquee](https://skills.varg.ai/component/hf.perspective-marquee/) (hyperframes): npx hyperframes add perspective-marquee\n- [Perspective Marquee](https://skills.varg.ai/component/remocn.perspective-marquee/) (remocn): npx shadcn@latest add @remocn/perspective-marquee\n\n### Where this comes from\n\n- [Magic UI: Marquee](https://magicui.design/docs/components/marquee)\n- [Senja: what is a Wall of Love](https://support.senja.io/what-is-wall-of-love-3whg8)","useWhen":["Show breadth of love fast: many voices, none read in full. Good behind a stat like \"10,000 teams\"."],"notFor":["Do not expect anyone to read the cards; put the one quote you need read in its own scene."],"publisher":{"name":"Magic UI","handle":"magicuidesign","kind":"community","verified":false,"url":"https://magicui.design","avatar":"https://github.com/magicuidesign.png"},"source":{"url":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/marquee.tsx","repo":"magicuidesign/magicui","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Marquee · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.marquee/","license":"MIT","note":"Two rows of testimonial cards drifting sideways in opposite directions, fading out at the left and right edges"},{"role":"component","label":"Perspective Marquee · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.perspective-marquee/","license":"Apache-2.0","note":"A 3D tilted marquee with depth feel as items roll toward the horizon."},{"role":"component","label":"Perspective Marquee · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.perspective-marquee/","license":"MIT","note":"A 3D-tilted infinite marquee with depth-of-field blur on items rolling toward the horizon."},{"role":"source","label":"Magic UI: Marquee","kind":"link","url":"https://magicui.design/docs/components/marquee","license":"link-only"},{"role":"source","label":"Senja: what is a Wall of Love","kind":"link","url":"https://support.senja.io/what-is-wall-of-love-3whg8","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":152,"text":"Wall of Love Marquee"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["magicui.marquee","hf.perspective-marquee","remocn.perspective-marquee"],"aliases":["testimonial marquee","review wall","love wall"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/de8904a0ede1/lib-magic-ui-marquee.mp4","blur":"https://s3.varg.ai/how-to/previews/b5e4ca47e444/lib-magic-ui-marquee.webp","source":"https://s3.varg.ai/how-to/previews/de8904a0ede1/lib-magic-ui-marquee.mp4","page":"https://magicui.design/docs/components/marquee","credit":"Captured from the library’s own demo page (Magic UI)","rights":"publisher-site","note":"Preview of the Marquee component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/community-post-proof","slug":"community-post-proof","name":"Community Post as Proof","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"quotes","tags":["community","reddit","comments","proof","hyperframes","remotion","capcut"],"summary":"A real community post or comment card pops over the footage with its upvotes counting up.","description":"Built on [Reddit Post Card](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/reddit-post) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nReddit-style or YouTube-comment-style card, platform-faithful; the text types on, then the vote count rises.\n\n**When:** Developer and consumer products where community chatter is more believable than a logo.\n\n**Watch out:** Do not fake platform UI for posts that never existed; quote real ones and blur usernames if needed.\n\n**Timing:** Card pop 0.3 s, typing 30–40 ms/char, count-up 0.8 s.\n\n**Also called:** reddit post, forum thread proof, comment card\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add reddit-post\n```\nOr `npx hyperframes add yt-comment-card` for comment-style proof over footage.\n\n### In Remotion\n\n```tsx\nconst chars = Math.floor(interpolate(frame,[6,6+text.length*1.1],[0,text.length],{extrapolateLeft:'clamp',extrapolateRight:'clamp'}));\n<p>{text.slice(0,chars)}</p>\n```\n\n### In CapCut\n\nAdd the screenshot as Overlay, Animation In \"Pop up\"; place it in the upper third so captions stay clear.\n\n### Ready-made components\n\n- [Reddit Post Card](https://skills.varg.ai/component/hf.reddit-post/) (hyperframes): npx hyperframes add reddit-post\n- [Comment Cards](https://skills.varg.ai/component/hf.yt-comment-card/) (hyperframes): npx hyperframes add yt-comment-card\n\n### Where this comes from\n\n- [CapCut: turn testimonials into quote graphics for short-form](https://www.capcut.com/create/testimonial-quote-graphics-short-form-content)\n- [Morphic: how to make a customer testimonial video](https://morphic.com/resources/how-to/make-a-customer-testimonial-video)","useWhen":["Developer and consumer products where community chatter is more believable than a logo."],"notFor":["Do not fake platform UI for posts that never existed; quote real ones and blur usernames if needed."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/reddit-post","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Reddit Post Card · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.reddit-post/","license":"Apache-2.0","note":"Animated Reddit post card overlay with upvotes and comments"},{"role":"component","label":"Comment Cards · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.yt-comment-card/","license":"Apache-2.0","note":"Social comments typing on over footage: avatar pop, username and time, per-character typewriter, likes row; image avatars or initials chips"},{"role":"source","label":"CapCut: turn testimonials into quote graphics for short-form","kind":"link","url":"https://www.capcut.com/create/testimonial-quote-graphics-short-form-content","license":"link-only"},{"role":"source","label":"Morphic: how to make a customer testimonial video","kind":"link","url":"https://morphic.com/resources/how-to/make-a-customer-testimonial-video","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":152,"text":"Community Post as Proof"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.reddit-post","hf.yt-comment-card"],"aliases":["reddit post","forum thread proof","comment card"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/reddit-post.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/reddit-post.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/reddit-post.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/reddit-post","credit":"Reddit Post Card · hyperframes","rights":"publisher-site","note":"Preview of the Reddit Post Card component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"magicuidesign/reviews-as-notifications","slug":"reviews-as-notifications","name":"Reviews Arrive as Notifications","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"quotes","tags":["notifications","reviews","momentum","stack","hyperframes","remotion","capcut"],"summary":"Short reviews land as system notifications that stack and push each other down.","description":"Built on [Animated List](https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/animated-list.tsx) by magic-ui, MIT. The write-up and recipes below are varg's.\n\niOS/macOS-style banners with app icon, name and one line each; new ones spring in at the top, older ones slide down and dim.\n\n**When:** Show momentum: sign-ups, five-star reviews, payments or \"new message\" pings piling up.\n\n**Watch out:** Do not let the stack grow past 4–5 cards; older ones should leave the frame.\n\n**Timing:** One every 0.4–0.8 s, accelerating slightly; each card spring (damping ~14).\n\n**Also called:** notification stack, toast proof, incoming reviews\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add notification-cascade\n```\nOr `notification-stack` for 1–5 token-driven cards on cue times.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @magicui/animated-list (frame-driven)\nconst visible = items.filter((_,i)=> frame > i*15).slice(-4);\n```\n\n### In CapCut\n\nText → Text templates → search \"notification\"; stagger 3–4 copies 0.5 s apart with Animation In \"Slide down\".\n\n### Ready-made components\n\n- [Animated List](https://skills.varg.ai/component/magicui.animated-list/) (magic-ui): npx shadcn@latest add @magicui/animated-list\n- [Notification Cascade](https://skills.varg.ai/component/hf.notification-cascade/) (hyperframes): npx hyperframes add notification-cascade\n- [Notification Stack](https://skills.varg.ai/component/hf.notification-stack/) (hyperframes): npx hyperframes add notification-stack\n\n### Where this comes from\n\n- [Bohdan Motion: X launch video, 40% of runtime on real UI](https://x.com/bohdanmotion/status/2079611760894431568)\n- [CapCut: turn testimonials into quote graphics for short-form](https://www.capcut.com/create/testimonial-quote-graphics-short-form-content)","useWhen":["Show momentum: sign-ups, five-star reviews, payments or \"new message\" pings piling up."],"notFor":["Do not let the stack grow past 4–5 cards; older ones should leave the frame."],"publisher":{"name":"Magic UI","handle":"magicuidesign","kind":"community","verified":false,"url":"https://magicui.design","avatar":"https://github.com/magicuidesign.png"},"source":{"url":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/animated-list.tsx","repo":"magicuidesign/magicui","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Animated List · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.animated-list/","license":"MIT","note":"Notification cards pop in one at a time at the top of a stack, pushing older ones down with a springy settle"},{"role":"component","label":"Notification Cascade · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.notification-cascade/","license":"Apache-2.0","note":"Phone notifications land one after another and stack up the screen, each banner pushing the pile down as it arrives, before the whole stack lifts away into a closing card"},{"role":"component","label":"Notification Stack · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.notification-stack/","license":"Apache-2.0","note":"1 to 5 token notification cards slide-settle into a vertical stack on cues, newest on top; one card grows slightly and brightens as the focus while the rest dim by position."},{"role":"source","label":"Bohdan Motion: X launch video, 40% of runtime on real UI","kind":"link","url":"https://x.com/bohdanmotion/status/2079611760894431568","license":"link-only"},{"role":"source","label":"CapCut: turn testimonials into quote graphics for short-form","kind":"link","url":"https://www.capcut.com/create/testimonial-quote-graphics-short-form-content","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":152,"text":"Reviews Arrive as Notifications"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["magicui.animated-list","hf.notification-cascade","hf.notification-stack"],"aliases":["notification stack","toast proof","incoming reviews"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/52e51fc6e447/lib-magic-ui-animated-list.mp4","blur":"https://s3.varg.ai/how-to/previews/289534e8cea0/lib-magic-ui-animated-list.webp","source":"https://s3.varg.ai/how-to/previews/52e51fc6e447/lib-magic-ui-animated-list.mp4","page":"https://magicui.design/docs/components/animated-list","credit":"Captured from the library’s own demo page (Magic UI)","rights":"publisher-site","note":"Preview of the Animated List component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/pull-quote-beside-speaker","slug":"pull-quote-beside-speaker","name":"Pull Quote Beside the Speaker","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"quotes","tags":["testimonial","interview","pull quote","captions","ffmpeg","hyperframes","remotion","capcut"],"summary":"While a customer talks on camera, their key sentence appears as large type in the empty side of the frame.","description":"Built on [Lower Third — Dark Card](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lt-dark-card) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nSpeaker framed left or right third; the strongest line fades up per word on the open side, high contrast, no card needed.\n\n**When:** Video testimonials and interviews, so the claim survives sound-off viewing.\n\n**Watch out:** Do not cover the speaker's face or hands, and do not repeat every word they say — only the pull quote.\n\n**Timing:** Start with the spoken words; per-word fade 0.2–0.3 s; hold to the end of the sentence + 0.5 s.\n\n**Also called:** testimonial overlay, quote over interview, speaker quote\n\n### In FFmpeg\n\n```bash\n-vf \"drawtext=text='Cut our onboarding in half':x=w*0.55:y=h*0.4:fontsize=72:fontcolor=white:alpha='min(1,max(0,(t-8.2)/0.3))':enable='between(t,8.2,12)'\"\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add soft-blur-in\n```\nTime each word's `tl.from` to its transcript timestamp; keep the text inside the open half of the frame.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/per-word-crossfade\nconst o = interpolate(frame,[w.start*fps, w.start*fps+6],[0,1],{extrapolateLeft:'clamp',extrapolateRight:'clamp'});\n```\n\n### In CapCut\n\nCaptions → Auto captions, delete all but the pull-quote line, restyle it large on the open side; Animation In \"Fade in by word\".\n\n### Ready-made components\n\n- [Lower Third — Dark Card](https://skills.varg.ai/component/hf.lt-dark-card/) (hyperframes): npx hyperframes add lt-dark-card\n- [Per-Word Crossfade](https://skills.varg.ai/component/remocn.per-word-crossfade/) (remocn): npx shadcn@latest add @remocn/per-word-crossfade\n- [Soft Blur In](https://skills.varg.ai/component/animata.soft-blur-in/) (animata): npx shadcn@latest add https://animata.design/r/text/soft-blur-in.json\n\n### Where this comes from\n\n- [Morphic: how to make a customer testimonial video](https://morphic.com/resources/how-to/make-a-customer-testimonial-video)\n- [CapCut: turn testimonials into quote graphics for short-form](https://www.capcut.com/create/testimonial-quote-graphics-short-form-content)","useWhen":["Video testimonials and interviews, so the claim survives sound-off viewing."],"notFor":["Do not cover the speaker's face or hands, and do not repeat every word they say — only the pull quote."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lt-dark-card","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Lower Third — Dark Card · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.lt-dark-card/","license":"Apache-2.0","note":"Charcoal card lower third for bright footage: name, drawn accent underline, role; slide-up entrance"},{"role":"component","label":"Per-Word Crossfade · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.per-word-crossfade/","license":"MIT","note":"Words gently fade into place one after another, with a short vertical drift for a calm keynote rhythm."},{"role":"component","label":"Soft Blur In · animata","kind":"link","url":"https://skills.varg.ai/component/animata.soft-blur-in/","license":"MIT","note":"A phrase fades up character by character out of a soft blur, holds, then drifts up and blurs away"},{"role":"source","label":"Morphic: how to make a customer testimonial video","kind":"link","url":"https://morphic.com/resources/how-to/make-a-customer-testimonial-video","license":"link-only"},{"role":"source","label":"CapCut: turn testimonials into quote graphics for short-form","kind":"link","url":"https://www.capcut.com/create/testimonial-quote-graphics-short-form-content","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":152,"text":"Pull Quote Beside the Speaker"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.lt-dark-card","remocn.per-word-crossfade","animata.soft-blur-in"],"aliases":["testimonial overlay","quote over interview","speaker quote"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d2553303cbde/take-pull-quote-beside-speaker.mp4","w":640,"h":360,"duration":4.8,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAxZJREFUeJwVU8luHDcU5NpkL+qeBT0aOZoEiZCR5Zx89E85h3xfgCDIIbdsRmDEEhxbzsgjjWY0vbGba17zQBDEY716xSr8w+vvEULGI+88okRr/cufN0op75BznngMN3ZooiiKRUEw4Vgvl6ffmdp7b22Atx+uXq7Xa+YDNtrstw/OWo3zvu9T1XNtXDpt29YQF8hYTQilhIYQ5lLkcCJRIsRBCuvc1Ytv0yRmdWvfXd/ErYH19p8fszSV+YkQojpaibFjYkTBhDF4DUd8mjCmO/viarZYPFstmrZROMYBsY/bx6MyB1Vt7jbp2YJmKWJc5PnFtKzrur+rKMIOY0JIJsh0OjuYDoYKde0ibhJZFIU2lmDMPmw+h+CrpweZJzKb0CgKGJdnK/zlcxH8p59+HqzhUIhJxJkQ7ELXcZocqq2wVV+WsQspdpxzZo0DmYM2eV70l69Oz88F55u6ZkGUZYllPByrCONRIe+d6lcy89b/F0/mp6sBJ/f7dnkSmOAMOeu0RkIOCL9MjOzuhB9F2SjrNw1zg0AjcynEfD6HAe9lDP3J5ItKZEM9AFVFrRSBeW8ACWTM83zKqOSUcZCWFUEXRfI0KartliEcc2ElMMOHxVQCVtMGZXG2RCjsW6T8wDyWmHM39Mdj99TUZSyp8zfvry8u103X3W93lPKABmV7mK5p2+qAk2Xsk3kH0loHtkCB9nXP4Lx/fNI+Pw6k+/W3y8vn58uZSIrf3+1ub2+tHsliggAF2f6b1dmsiGfTyecO11UFnDBG4FyoYaK6nQftZl+B2bwjb/5++8dfYfzsQMBNUcFtMOAkziNHfD7LffDNMBCe6TEKFiotGhfrqBeT9Oszmyap9wSu3vyrrDVZWYLLUQhujAWCiFDnTKeSk5O+14ehRohCrMb2aNwZTacAef2pHYZ9CATa1KGYzZfPLtYPDw/dbjN6CKPdbsetqIo8y/NGqccuSCkhjGOj0WSYFZM5dFbwi+pJ6YIw7imt+qi5vyvT7KPVNEA96tq2i7EaTNXqdnAWiaYPwD94SGIAoP8BCK3Un/sE/IUAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item lt-dark-card (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/blocks/lt-dark-card","credit":"Rendered by varg · HyperFrames Lower Third — Dark Card","rights":"generated","note":"The Lower Third — Dark Card component rendered as installed (npx hyperframes add lt-dark-card), defaults only","bytes":164976,"addedAt":"2026-10-28"}},{"id":"aceternity/split-flap-quote","slug":"split-flap-quote","name":"Split-Flap Headline Quote","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"quotes","tags":["quote","split flap","result","retro","hyperframes","remotion","capcut"],"summary":"A short quote or result spells itself out on a split-flap board, tiles flipping until they land.","description":"Built on [Text Flipping Board](https://ui.aceternity.com/components/text-flipping-board) by aceternity, Aceternity License (free components). The write-up and recipes below are varg's.\n\nDark tiles with a center seam, each walking through letters and settling left to right with mechanical clicks.\n\n**When:** A memorable short line: a result (\"SHIPPED IN 2 DAYS\") or a three-word review.\n\n**Watch out:** Do not use more than ~20 characters; long boards flip forever and nobody reads them.\n\n**Timing:** 1.2–2 s total, tiles settle 40–60 ms apart; add a soft click SFX per settle.\n\n**Also called:** departure board, solari board, flip board quote\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add split-flap-board\n```\nEach cell's drum position is derived from time, so seeking any frame shows the right letter.\n\n### In Remotion\n\n```tsx\nconst settleAt = i*2 + 20; // frames\nconst ch = frame>=settleAt ? target[i] : ABC[(frame + i*3) % ABC.length];\n```\n\n### In CapCut\n\nText → Text templates → search \"flip\"/\"board\"; or use Animation In \"Flip\" per letter layer.\n\n### Ready-made components\n\n- [Text Flipping Board](https://skills.varg.ai/component/aceternity.text-flipping-board/) (aceternity): npx shadcn@latest add @aceternity/text-flipping-board\n- [Split-Flap Board](https://skills.varg.ai/component/hf.split-flap-board/) (hyperframes): npx hyperframes add split-flap-board\n\n### Where this comes from\n\n- [Jamie on X: SFX breakdown of a launch video](https://x.com/jamiesmotion/status/2110099791958982703)\n- [SVGator: kinetic typography, a guide to text in motion](https://www.svgator.com/blog/kinetic-typography-a-guide-to-text-in-motion/)","useWhen":["A memorable short line: a result (\"SHIPPED IN 2 DAYS\") or a three-word review."],"notFor":["Do not use more than ~20 characters; long boards flip forever and nobody reads them."],"publisher":{"name":"Aceternity UI","handle":"aceternity","kind":"community","verified":false,"url":"https://ui.aceternity.com","avatar":"https://github.com/aceternity.png"},"source":{"url":"https://ui.aceternity.com/components/text-flipping-board","license":"Aceternity License (free components)"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Text Flipping Board · aceternity","kind":"link","url":"https://skills.varg.ai/component/aceternity.text-flipping-board/","license":"Aceternity License (free components)","note":"A split-flap departure board whose tiles flip through letters until a short quote spells out"},{"role":"component","label":"Split-Flap Board · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.split-flap-board/","license":"Apache-2.0","note":"Solari-style departure board: every cell walks its drum forward through the intervening characters of a fixed alphabet until it lands on its target, so the text resolves as a mechanical cascade instead of a fade."},{"role":"source","label":"Jamie on X: SFX breakdown of a launch video","kind":"link","url":"https://x.com/jamiesmotion/status/2110099791958982703","license":"link-only"},{"role":"source","label":"SVGator: kinetic typography, a guide to text in motion","kind":"link","url":"https://www.svgator.com/blog/kinetic-typography-a-guide-to-text-in-motion/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":152,"text":"Split-Flap Headline Quote"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["aceternity.text-flipping-board","hf.split-flap-board"],"aliases":["departure board","solari board","flip board quote"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/6177d2c767ae/lib-aceternity-text-flipping-board.mp4","blur":"https://s3.varg.ai/how-to/previews/edcdc6e4c251/lib-aceternity-text-flipping-board.webp","source":"https://s3.varg.ai/how-to/previews/6177d2c767ae/lib-aceternity-text-flipping-board.mp4","page":"https://ui.aceternity.com/components/text-flipping-board","credit":"Rendered by varg from the library’s own code (Aceternity UI)","rights":"publisher-site","note":"Preview of the Text Flipping Board component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"Remocn/star-count-proof","slug":"star-count-proof","name":"GitHub Stars as Proof","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"quotes","tags":["github","stars","developer","proof","hyperframes","remotion","capcut"],"summary":"Stargazer avatars fly past while a star counter odometers up to the repo's real total.","description":"Built on [GitHub Stars](https://remocn.dev/r/github-stars.json) by Kapish Dima (remocn), MIT. The write-up and recipes below are varg's.\n\nA ★ icon with a rolling count; avatars blur-stagger in a cloud behind it, then the count locks with a small pop.\n\n**When:** Open-source and developer tools; the moment you say \"loved by developers\".\n\n**Watch out:** Do not show a stale number; read it from the API on render day and round honestly (12.4k, not 12k+).\n\n**Timing:** Count 1.2–1.8 s, ease-out; avatars stagger 20–40 ms; lock pop 0.2 s.\n\n**Also called:** stargazers, star count, open source proof\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add count-up\nnpx hyperframes add avatar-cloud\n```\nSet the target via `data-variable-values='{\"to\":12400}'`; fire the avatar cloud 0.2 s before the count.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/github-stars\nconst n = Math.round(interpolate(frame,[0,45],[0,stars],{extrapolateRight:'clamp',easing:Easing.out(Easing.quad)}));\n```\n\n### In CapCut\n\nAdd a ★ sticker and a Text layer; keyframe the number with a counter text template (Text → templates → \"number\").\n\n### Ready-made components\n\n- [GitHub Stars](https://skills.varg.ai/component/remocn.github-stars/) (remocn): npx shadcn@latest add @remocn/github-stars\n- [Avatar Cloud](https://skills.varg.ai/component/hf.avatar-cloud/) (hyperframes): npx hyperframes add avatar-cloud\n- [Count Up](https://skills.varg.ai/component/reactbits.count-up/) (react-bits): npx shadcn@latest add @react-bits/CountUp-JS-CSS\n\n### Where this comes from\n\n- [Animation principles for data visualization](https://skills.cat/skills/dylantarre/animation-principles/data-visualization)","useWhen":["Open-source and developer tools; the moment you say \"loved by developers\"."],"notFor":["Do not show a stale number; read it from the API on render day and round honestly (12.4k, not 12k+)."],"publisher":{"name":"Kapish Dima · remocn","handle":"Remocn","kind":"community","verified":false,"url":"https://remocn.dev","avatar":"https://github.com/Remocn.png"},"source":{"url":"https://remocn.dev/r/github-stars.json","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"GitHub Stars · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.github-stars/","license":"MIT","note":"Inertial fly-through of a repo's stargazers with a synced count-up odometer that locks on the total. Horizontal 16:9 or vertical 9:16."},{"role":"component","label":"Avatar Cloud · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.avatar-cloud/","license":"Apache-2.0","note":"Lettermark avatars populate a loose elliptical cloud while fine SVG links draw between the community and its central proof label."},{"role":"component","label":"Count Up · react-bits","kind":"link","url":"https://skills.varg.ai/component/reactbits.count-up/","license":"MIT + Commons Clause","note":"A number ticking up from zero to its target, easing to a stop on the final value"},{"role":"source","label":"Animation principles for data visualization","kind":"link","url":"https://skills.cat/skills/dylantarre/animation-principles/data-visualization","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":152,"text":"GitHub Stars as Proof"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["remocn.github-stars","hf.avatar-cloud","reactbits.count-up"],"aliases":["stargazers","star count","open source proof"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0eb0b72b5627/lib-react-bits-count-up.mp4","blur":"https://s3.varg.ai/how-to/previews/f4a7879d0acc/lib-react-bits-count-up.webp","source":"https://s3.varg.ai/how-to/previews/0eb0b72b5627/lib-react-bits-count-up.mp4","page":"https://reactbits.dev/text-animations/count-up","credit":"Captured from the library’s own demo page (React Bits)","rights":"publisher-site","note":"Preview of the Count Up component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/logo-lockup-outro","slug":"logo-lockup-outro","name":"Logo Lockup Outro","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"end-cards","tags":["outro","logo","end card","brand","ffmpeg","hyperframes","remotion","capcut"],"summary":"The mark assembles, the wordmark settles beside it, then tagline and URL fade in under it.","description":"Built on [Logo Outro](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/logo-outro) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nCentered lockup on the film's backdrop; one soft glow bloom, tagline one size down, URL smallest and last.\n\n**When:** The last 3–5 s of any launch or product film.\n\n**Watch out:** Do not stack logo, tagline, URL, socials and a QR at once; reveal 2–3 items in order.\n\n**Timing:** Mark 0.6–0.8 s, wordmark 0.4 s, tagline +0.3 s, URL +0.3 s; hold ≥ 2 s before the cut.\n\n**Also called:** brand close, logo resolve, outro logo\n\n### In FFmpeg\n\n```bash\nffmpeg -i film.mp4 -loop 1 -i logo.png -filter_complex \"[1]format=rgba,fade=in:st=41:d=0.6:alpha=1[l];[0][l]overlay=(W-w)/2:(H-h)/2-60:enable='gte(t,41)'\" out.mp4\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add logo-outro\n```\n```html\n<div data-composition-id=\"logo-outro\" data-composition-src=\"compositions/logo-outro.html\"\n  data-variable-values='{\"tagline\":\"Video by code\",\"url\":\"varg.ai\"}' data-start=\"41\" data-duration=\"5\" data-track-index=\"1\"></div>\n```\n\n### In Remotion\n\n```tsx\nconst logo = spring({frame, fps, config:{damping:12}});\nconst tag = interpolate(frame,[24,36],[0,1],{extrapolateLeft:'clamp',extrapolateRight:'clamp'});\nconst url = interpolate(frame,[33,45],[0,1],{extrapolateLeft:'clamp',extrapolateRight:'clamp'});\n```\n\n### In CapCut\n\nOverlay the logo PNG, Animation In \"Zoom in\" 0.6 s; Text for tagline and URL with \"Fade in\" 0.3 s each, staggered.\n\n### Ready-made components\n\n- [Logo Outro](https://skills.varg.ai/component/hf.logo-outro/) (hyperframes): npx hyperframes add logo-outro\n- [Logo Brand Close](https://skills.varg.ai/component/hf.logo-brand-close/) (hyperframes): npx hyperframes add logo-brand-close\n- [Logo Sting](https://skills.varg.ai/component/hf.logo-sting/) (hyperframes): npx hyperframes add logo-sting\n\n### Where this comes from\n\n- [Bohdan Motion: breakdown of the Grok Build Mode launch video](https://x.com/bohdanmotion/status/2082193183111614671)\n- [Bohdan Motion: Apple Mac Studio launch film, 10-step playbook](https://x.com/bohdanmotion/status/2093347071440851104)","useWhen":["The last 3–5 s of any launch or product film."],"notFor":["Do not stack logo, tagline, URL, socials and a QR at once; reveal 2–3 items in order."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/logo-outro","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Logo Outro · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.logo-outro/","license":"Apache-2.0","note":"Cinematic logo reveal with piece-by-piece assembly, glow bloom, tagline fade-in, and URL pill"},{"role":"component","label":"Logo Brand Close · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.logo-brand-close/","license":"Apache-2.0","note":"A display-scale wordmark cascades letter by letter into a centered lockup, the accent brand period lands last, an optional tagline and wide-tracked mono URL settle beneath…"},{"role":"component","label":"Logo Sting · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.logo-sting/","license":"Apache-2.0","note":"A wordmark slams into its final scale, fires one accent ring and one white impact frame, then holds completely still."},{"role":"source","label":"Bohdan Motion: breakdown of the Grok Build Mode launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2082193183111614671","license":"link-only"},{"role":"source","label":"Bohdan Motion: Apple Mac Studio launch film, 10-step playbook","kind":"link","url":"https://x.com/bohdanmotion/status/2093347071440851104","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":12,"text":"Logo Lockup Outro"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.logo-outro","hf.logo-brand-close","hf.logo-sting"],"aliases":["brand close","logo resolve","outro logo"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/logo-outro.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/logo-outro.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/logo-outro.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/logo-outro","credit":"Logo Outro · hyperframes","rights":"publisher-site","note":"Preview of the Logo Outro component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/action-line-cta-button","slug":"action-line-cta-button","name":"Action Line + CTA Button","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"end-cards","tags":["CTA","button","end card","conversion","hyperframes","remotion","capcut"],"summary":"One short action line lands, then a real-looking button pops in under it with a soft glow.","description":"Built on [CTA Lockup](https://github.com/heygen-com/hyperframes/tree/main/registry/components/cta-lockup) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\n\"Start building today\" in display type; a pill button with the exact CTA (\"Try free\") pops with a glow and an optional cursor click.\n\n**When:** Any film whose goal is a sign-up, demo booking or download.\n\n**Watch out:** Do not write two CTAs; one verb, one button, matching the landing page's button text.\n\n**Timing:** Line 0.5 s per-word, button pop 0.3 s back.out(1.6), click at +0.6 s, hold 2–3 s.\n\n**Also called:** CTA close, call to action, button end card\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add cta-lockup\n```\nSet the line and button text in `data-variable-values`; optional `press-ripple` for a click on the button.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/button  (state = f(frame): idle → hover → press)\nconst pop = spring({frame: frame-20, fps, config:{damping:10, stiffness:180}});\n```\n\n### In CapCut\n\nText for the line; Stickers → search \"button\" or make a rounded shape + text; Animation In \"Pop up\"; add a click SFX.\n\n### Ready-made components\n\n- [CTA Lockup](https://skills.varg.ai/component/hf.cta-lockup/) (hyperframes): npx hyperframes add cta-lockup\n- [CTA Close](https://skills.varg.ai/component/hf.cta-close/) (hyperframes): npx hyperframes add cta-close\n- [Glow Effect](https://skills.varg.ai/component/motionprimitives.glow-effect/) (motion-primitives): npx motion-primitives@latest add glow-effect\n- [UI Button](https://skills.varg.ai/component/remocn.button/) (remocn): npx shadcn@latest add @remocn/button\n\n### Where this comes from\n\n- [Bohdan Motion: Secureframe launch video, one pain per scene](https://x.com/bohdanmotion/status/2069369111231049803)\n- [Bohdan Motion: breakdown of the ElevenLabs Flows launch video](https://x.com/bohdanmotion/status/2079974237893456071)","useWhen":["Any film whose goal is a sign-up, demo booking or download."],"notFor":["Do not write two CTAs; one verb, one button, matching the landing page's button text."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cta-lockup","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"CTA Lockup · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cta-lockup/","license":"Apache-2.0","note":"A canonical closing lockup that reveals an action line, pops in an accent CTA capsule, settles supporting microcopy, and holds with confidence."},{"role":"component","label":"CTA Close · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cta-close/","license":"Apache-2.0","note":"A display-scale action line lands per word and fills the frame with air, one generous CTA capsule pops beneath it with a single overshoot, and the finished close holds completely still."},{"role":"component","label":"Glow Effect · motion-primitives","kind":"link","url":"https://skills.varg.ai/component/motionprimitives.glow-effect/","license":"MIT","note":"A blurred multicolor glow behind a card or button, its hue shifting around the edges"},{"role":"component","label":"UI Button · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.button/","license":"MIT","note":"A button whose idle/hover/press/loading/success state is a pure function of the timeline; the loading state composes the Spinner motion atom."},{"role":"source","label":"Bohdan Motion: Secureframe launch video, one pain per scene","kind":"link","url":"https://x.com/bohdanmotion/status/2069369111231049803","license":"link-only"},{"role":"source","label":"Bohdan Motion: breakdown of the ElevenLabs Flows launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2079974237893456071","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":12,"text":"Action Line + CTA Button"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.cta-lockup","hf.cta-close","motionprimitives.glow-effect","remocn.button"],"aliases":["CTA close","call to action","button end card"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/86bfe6485954/take-action-line-cta-button.mp4","w":640,"h":360,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAA3FJREFUeJwVk0tv41QUx+3r4+f1K06dpM6jSTpoykt0MVKFWFQMEkJIrGY734odn2D4BCAhNowEmoIY6KgFWlraSdLEdWIn8fvN7eYsrnR+uv/Hob96OgYGWBa3Wm0JS5O3k2R1iRByM+7tZIFYwFjWMAp8X9N3RElEoAJAXdcURTFUxSCGpun5Yg5VWcua8uT4Wa/XWy89UZ/c/B7EUUzVMSBqNDrkeX5qz7ykaoIoS40S8QRRI5ZMKBJCqZk6LQpYh9Vg3xoYO4vrm3zrWQKfdPfubXsZBH2r/fGH7wVB4G43d7PFJkgMU2CyCCGmpgUCQsASUJLHD9BVWHSGj+kyFRgKmDrauhxI/d7Yse9kGffNZiLja8f55yxx7+2DR/u8wFZVtS3LsqroKlMUJc4SAA5kCXsrd6upfuA9/uDw4uKyKQl6Q5fN3ZW74o2uwnGf90aqYdZ5cHR0xCNIkjhjJG/tza//yrKMcIlrYO52f/vjdKhqDcOgabCs3sadnp+f9Xu9g9GY5zhBEFosdzg+6FvqZDLJFaNpdEDC++P9l9789ubGC7IwreHJuwfn5+dhFHEc9+Kbr4na19O/yRx89Mj13GbDlDCOwtBxHNM0CAjHlbVrKbLFcWyaxrqmP/30y1cnr2DYarnT6Y8/vTw+Pu6N37+4uHg9RM+eP/+5+K8sW1wFBFoWIkKtM0hE0fqC7pye/vnZTM3znOHxYDAQ6XIHC/Dd9z8M9/ZuZ7NfTk76mnQ3u6RaKJ3HvESlaYGCkJiq4oeMZKpCTEzEdso2zTKAaKrOiUFpHJrNBlwttyFzr7c7b/69WqnAsDBw1Jtvf+XKlKfpHSg1XROZTNO0ahnYtq0a0Se6PpESgsY8oqqKRyjarEEdvpMiRG3XJWyyilJ4BeUkVzq0l6S+GhQ6VtzFCoLUj6IaGCpKc9pfb13yl0vf6Xa7jiTMZjPQsUSMfGgXQrwgpFlB9kldBQ7FcVQiuJrcGkkSrD1Gxh3TTIMs3sSLwJUk6cp1lllWBx5JFhr1Kq+cwmjYi1lQ1SywcbimyREkIeY5nudIdntme7v1FSSIFLdmM98PRUH13HUYFuTJDxJLaYDtRUnBlnSRF3VS0AVRLmMs4flyIdJUe3+U12woyRQvKq12Bexk+qYoSlL63bYe+0Rf3DRM0rb/AZExyT81Ps2kAAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item cta-lockup (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/cta-lockup","credit":"Rendered by varg · HyperFrames CTA Lockup","rights":"generated","note":"The CTA Lockup component rendered as installed (npx hyperframes add cta-lockup), defaults only","bytes":161854,"addedAt":"2026-10-28"}},{"id":"magicuidesign/url-typed-in-bar","slug":"url-typed-in-bar","name":"URL Typed Into the Address Bar","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"end-cards","tags":["URL","browser","CTA","typing","hyperframes","remotion","capcut"],"summary":"A browser bar appears and the product URL types itself in, then the page loads into the hero.","description":"Built on [Safari](https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/safari.tsx) by magic-ui, MIT. The write-up and recipes below are varg's.\n\nA clean Safari/Chrome bar centered on the backdrop; characters type with a caret; Enter press; the landing page fills the window.\n\n**When:** Web products where the URL is the CTA; also a smooth bridge back into the product for a final shot.\n\n**Watch out:** Do not type long paths or UTM strings; just the domain (varg.ai/video at most).\n\n**Timing:** Typing 50–80 ms/char, Enter + 0.2 s, page load 0.4 s, hold 2 s.\n\n**Also called:** type the URL, address bar CTA, domain reveal\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add typewriter\nnpx hyperframes add browser-device-stage\n```\nType inside the stage's address field; cut the page screenshot in with a 0.4 s fade at Enter.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @magicui/safari\nconst n = Math.floor(interpolate(frame,[0,url.length*2],[0,url.length],{extrapolateRight:'clamp'}));\n<Safari url={url.slice(0,n)} imageSrc={frame>enterAt? hero : undefined}/>\n```\n\n### In CapCut\n\nScreenshot a browser bar as an Overlay; add Text with Animation In \"Typewriter\" 1 s over the field; cut to the site screenshot.\n\n### Ready-made components\n\n- [Safari](https://skills.varg.ai/component/magicui.safari/) (magic-ui): npx shadcn@latest add @magicui/safari\n- [Typewriter](https://skills.varg.ai/component/hf.typewriter/) (hyperframes): npx hyperframes add typewriter\n- [Browser Device Stage](https://skills.varg.ai/component/hf.browser-device-stage/) (hyperframes): npx hyperframes add browser-device-stage\n- [Typewriter](https://skills.varg.ai/component/remocn.typewriter/) (remocn): npx shadcn@latest add @remocn/typewriter\n\n### Where this comes from\n\n- [Bohdan Motion: breakdown of the Replit Design launch video](https://x.com/bohdanmotion/status/2083248851750728188)\n- [Magic UI: Safari](https://magicui.design/docs/components/safari)","useWhen":["Web products where the URL is the CTA; also a smooth bridge back into the product for a final shot."],"notFor":["Do not type long paths or UTM strings; just the domain (varg.ai/video at most)."],"publisher":{"name":"Magic UI","handle":"magicuidesign","kind":"community","verified":false,"url":"https://magicui.design","avatar":"https://github.com/magicuidesign.png"},"source":{"url":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/safari.tsx","repo":"magicuidesign/magicui","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Safari · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.safari/","license":"MIT","note":"Dark Safari browser window with traffic lights and an address bar, a video playing in the page area"},{"role":"component","label":"Typewriter · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.typewriter/","license":"Apache-2.0","note":"Character-by-character text reveal with a deterministic blinking cursor."},{"role":"component","label":"Browser Device Stage · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.browser-device-stage/","license":"Apache-2.0","note":"A generic app surface in token-native device chrome (browser, window, or phone). The screen is a slot for caller img/video/HTML with a token-styled skeleton default; one settle entrance, a readable hold…"},{"role":"component","label":"Typewriter · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.typewriter/","license":"MIT","note":"Character-by-character text reveal with a deterministic blinking cursor."},{"role":"source","label":"Bohdan Motion: breakdown of the Replit Design launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2083248851750728188","license":"link-only"},{"role":"source","label":"Magic UI: Safari","kind":"link","url":"https://magicui.design/docs/components/safari","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":12,"text":"URL Typed Into the Address Bar"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["magicui.safari","hf.typewriter","hf.browser-device-stage","remocn.typewriter"],"aliases":["type the URL","address bar CTA","domain reveal"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f0382ac63ae6/lib-magic-ui-safari.mp4","blur":"https://s3.varg.ai/how-to/previews/f88750415c05/lib-magic-ui-safari.webp","source":"https://s3.varg.ai/how-to/previews/f0382ac63ae6/lib-magic-ui-safari.mp4","page":"https://magicui.design/docs/components/safari","credit":"Captured from the library’s own demo page (Magic UI)","rights":"publisher-site","note":"Preview of the Safari component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/youtube-end-screen","slug":"youtube-end-screen","name":"YouTube End Screen Layout","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"end-cards","tags":["YouTube","end screen","subscribe","outro","ffmpeg","hyperframes","remotion","capcut"],"summary":"A 5–20 s outro with clean empty slots for YouTube's clickable video and subscribe elements.","description":"Built on [Rounded Media Grid](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mk-placeholder-grid) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nSimple, calm backdrop; two 16:9 boxes and one circle reserved where YouTube places elements; a short spoken or written ask.\n\n**When:** Long-form YouTube tutorials, demos and launch explainers (videos ≥ 25 s).\n\n**Watch out:** Do not put busy motion or text where the elements will sit; up to four elements, and say out loud what to click.\n\n**Timing:** End screen window 5–20 s (YouTube limit); 8–12 s works for most; stagger element appearance.\n\n**Also called:** end screen, subscribe outro, next video card\n\n### In FFmpeg\n\n```bash\n# append a 12 s branded tail (same size/fps/codec)\nprintf \"file main.mp4\\nfile endscreen.mp4\\n\" > list.txt\nffmpeg -f concat -safe 0 -i list.txt -c copy out.mp4\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add mk-placeholder-grid\nnpx hyperframes add yt-lower-third\n```\nLayout 1920×1080: two video slots ≈ 615×345 and a 294 px circle; keep the last 20 s of the edit calm.\n\n### In Remotion\n\n```tsx\n<Sequence from={durationInFrames - 15*fps}>\n  <EndScreenBackdrop/>  {/* leave rects empty for YouTube elements */}\n</Sequence>\n```\n\n### In CapCut\n\nAdd the end-screen background for the last 10–15 s, Text for \"Watch next\", leave the slots empty; add elements later in YouTube Studio → Editor → End screen.\n\n### Ready-made components\n\n- [Rounded Media Grid](https://skills.varg.ai/component/hf.mk-placeholder-grid/) (hyperframes): npx hyperframes add mk-placeholder-grid\n- [YouTube Lower Third](https://skills.varg.ai/component/hf.yt-lower-third/) (hyperframes): npx hyperframes add yt-lower-third\n- [X Follow Card](https://skills.varg.ai/component/hf.x-follow-card/) (hyperframes): npx hyperframes add x-follow-card\n\n### Where this comes from\n\n- [YouTube Help: Add end screens to videos](https://support.google.com/youtube/answer/6388789)\n- [vidIQ: YouTube end screens](https://vidiq.com/blog/post/youtube-end-screens/)","useWhen":["Long-form YouTube tutorials, demos and launch explainers (videos ≥ 25 s)."],"notFor":["Do not put busy motion or text where the elements will sit; up to four elements, and say out loud what to click."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mk-placeholder-grid","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Rounded Media Grid · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.mk-placeholder-grid/","license":"Apache-2.0","note":"N-up rounded-corner media grid (2-up, 3-up, 4-up, 3x2, hero plus two): per-cell inside-scale framing, staggered box-in entrance, slow settle"},{"role":"component","label":"YouTube Lower Third · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.yt-lower-third/","license":"Apache-2.0","note":"Animated YouTube subscribe lower third with avatar and channel info"},{"role":"component","label":"X Follow Card · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.x-follow-card/","license":"Apache-2.0","note":"A social follow card with avatar, handle, and follower motion."},{"role":"source","label":"YouTube Help: Add end screens to videos","kind":"link","url":"https://support.google.com/youtube/answer/6388789","license":"link-only"},{"role":"source","label":"vidIQ: YouTube end screens","kind":"link","url":"https://vidiq.com/blog/post/youtube-end-screens/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":12,"text":"YouTube End Screen Layout"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.mk-placeholder-grid","hf.yt-lower-third","hf.x-follow-card"],"aliases":["end screen","subscribe outro","next video card"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/14a46a0c68c0/take-youtube-end-screen.mp4","w":640,"h":360,"duration":8,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAphJREFUeJw1U7mOJEUQjTMza/qa0SKkZSwkLFy+gz/jP/BW2OBg4WFySGsgQXOIhbm6p7tr8uJlAalWVHbc8V4kf/bFl/v9Plt//cFrq42IaidmFlwaTlW13hQKL8PaYPj/1NYhuzmk7XIvGj8+bta/p8ZNVIhJWLJwLrnVtl6v3qU6z/O375viCFwk9i4iiXX8uTudzid776xe0qdPt3QQmhqpkRGJUOT/7i/ydlvvj3dvbi3GeC3q7hEe7htRaNr3vz3tD9aRW6XHxkpVR2yxDtm8iRTGTakrF+lrGi1siZ34WgI3nqQnpguR9m7cSlTtimmUnLowJCkjGBUQREJmmIFWYklsRRw1bFCAoJHJQmOxTvaUT2rCJkswFLxckBd2RRakaVLR6voKc4SJ1M2Fegi+ZZ1CuDjqNzvPRc0IJlC11C/OKcVCuSGPAnlaOf388O7y3S/TzQ2nHbs35qx6FJnNHv++Q8eWAZv6YHsZh0bS2g3EokerBnY4yebhzyN/c0vX12XacgiHkFH+7BXyj+nH3W5n3EuwRI3BejfgSqAUrEsQwE9SGS6yDtOrXfwk0XSVKRCmLsArWE+JH1E7ZysNfI1odIZBgKqgUTVwtwAP1hRLwM4ec0jBQk6raXNjl0u2KBbVpc/zwQrxYHvBqC0YoamlNbCFFGWskmoGwSYhiAeAPTY8RgmxhwjujUseOqA8oBmbNmLIO6SHfxON3xQRDmSwfhLxgW+nGDUmSonsBeuudh/5NB8+z28HacsT4eAl50PnpUaFfI5pf/41vvr6JcYrNhD/0LQeSn+GInb/y0Owo/GJ6lftHuBM/QKovMTn8+khj9eZ5xkPF2Mj4KPtD8187qm6//QY5jrnl3mS6UMbhP8DQg0JJtEjwIoAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item mk-placeholder-grid (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/blocks/mk-placeholder-grid","credit":"Rendered by varg · HyperFrames Rounded Media Grid","rights":"generated","note":"The Rounded Media Grid component rendered as installed (npx hyperframes add mk-placeholder-grid), defaults only","bytes":224940,"addedAt":"2026-10-28"}},{"id":"heygen-com/scan-to-try-qr","slug":"scan-to-try-qr","name":"Scan-to-Try QR Card","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"end-cards","tags":["QR","CTA","event","end card","ffmpeg","hyperframes","remotion","capcut"],"summary":"A high-contrast QR code with a one-line reason to scan, held long enough to grab a phone.","description":"Built on [Camera Scan Gate](https://github.com/heygen-com/hyperframes/tree/main/registry/components/camera-scan-gate) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nBlack-on-white QR (≥300 px on 1080p) on a card with a light border beam; \"Scan to try free\" beside it; logo small above.\n\n**When:** Event screens, keynotes, TV/CTV spots and any video shown on a big screen.\n\n**Watch out:** Do not flash it for 2 seconds; hold it at least 7–10 s and never animate the code itself.\n\n**Timing:** Card in 0.4 s, code static, hold 7–10 s; border beam loop 3–5 s.\n\n**Also called:** QR end card, scan CTA, QR code outro\n\n### In FFmpeg\n\n```bash\nffmpeg -i film.mp4 -i qr.png -filter_complex \"[1]scale=320:-1[q];[0][q]overlay=W-w-120:H-h-120:enable='gte(t,38)'\" out.mp4\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add camera-scan-gate\n```\nRender the QR as a static `<img>` inside a white card; only the frame/beam animates.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @magicui/border-beam\n<div style={{background:'#fff', padding:24, borderRadius:24}}><Img src={qr} style={{width:320}}/></div>\n```\n\n### In CapCut\n\nOverlay the QR PNG at the lower right inside the guides, no animation on the code; add a Text line \"Scan to try\" with Fade in.\n\n### Ready-made components\n\n- [Camera Scan Gate](https://skills.varg.ai/component/hf.camera-scan-gate/) (hyperframes): npx hyperframes add camera-scan-gate\n- [Border Beam](https://skills.varg.ai/component/magicui.border-beam/) (magic-ui): npx shadcn@latest add @magicui/border-beam\n\n### Where this comes from\n\n- [QRStuff: best practices for QR codes on TV commercials](https://www.qrstuff.com/feeds/blog/qr-codes-tv-commercials)\n- [MediaVillage: common QR code mistakes in TV ads](https://www.mediavillage.com/article/common-mistakes-tv-advertisers-make-when-implementing-qr-codes-for-television/amp/)","useWhen":["Event screens, keynotes, TV/CTV spots and any video shown on a big screen."],"notFor":["Do not flash it for 2 seconds; hold it at least 7–10 s and never animate the code itself."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/camera-scan-gate","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Camera Scan Gate · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.camera-scan-gate/","license":"Apache-2.0","note":"A camera and QR recognition moment with a viewfinder sweep, bracket lock, confirmation pulse, and verified next beat."},{"role":"component","label":"Border Beam · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.border-beam/","license":"MIT","note":"Red and blue light streaks chase each other around the border of a dark music-player card"},{"role":"source","label":"QRStuff: best practices for QR codes on TV commercials","kind":"link","url":"https://www.qrstuff.com/feeds/blog/qr-codes-tv-commercials","license":"link-only"},{"role":"source","label":"MediaVillage: common QR code mistakes in TV ads","kind":"link","url":"https://www.mediavillage.com/article/common-mistakes-tv-advertisers-make-when-implementing-qr-codes-for-television/amp/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":12,"text":"Scan-to-Try QR Card"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.camera-scan-gate","magicui.border-beam"],"aliases":["QR end card","scan CTA","QR code outro"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/dc6e2336f741/take-scan-to-try-qr.mp4","w":640,"h":360,"duration":6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAVFJREFUeJyNk9FuwjAMRW2nLbAyiYl3tv//K6TtbdLG1JaGxPbctGNSGxB5iJzEPrm5dfFp9waLgYiC801VttkBqioAzU6LJcVyAS1xSkWaAhWLUUUNCTwvyoAQHTnnmOxmKTQxBpZTMp3sRJiXpDnIHjVKCBVvt3Xf92ISjES4Xm+apiXGlKazB2YUqQhYXe2oLkE9AYoZRmRLVKcntpv0kadNo5MgHpO1q7ry3ocfD70gjmY/DjLDAb+r7vB64Kif76cVV2lzoCxZd0CDNXvY7eFFlAN2AmGkQLJyxroJslSbJcaP49HiyJFgaq3BxMefphsst6vQNOdLtKW5Xz3XQBczO5uf6yMrMgkdBwrg9e8Lq2LUlu0sY/Wtz4/OFRH7r/bqhQV915aEjKZIUgfd9WgoUxa2VsK0vO6DjNo4teJCVUaRyNAskDH0/zJa/LS/Q9y5qzem42kAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item camera-scan-gate (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/camera-scan-gate","credit":"Rendered by varg · HyperFrames Camera Scan Gate","rights":"generated","note":"The Camera Scan Gate component rendered as installed (npx hyperframes add camera-scan-gate), defaults only","bytes":113182,"addedAt":"2026-10-28"}},{"id":"heygen-com/store-badges-close","slug":"store-badges-close","name":"Store Badges Close","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"end-cards","tags":["app","badges","mobile","download","hyperframes","remotion","capcut"],"summary":"A short headline settles above equal-size App Store and Google Play badges, often beside a phone.","description":"Built on [Store Badge Lockup](https://github.com/heygen-com/hyperframes/tree/main/registry/components/store-badge-lockup) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nTwo official badges at identical height, centered under the line; a phone with the app's home screen to one side.\n\n**When:** Mobile app launches and app ads.\n\n**Watch out:** Do not stretch or recolor the official badges, and keep both at the same height.\n\n**Timing:** Headline 0.5 s, badges pop 0.3 s with 0.1 s stagger, hold 2–3 s.\n\n**Also called:** app store badges, download CTA, mobile app outro\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add store-badge-lockup\n```\nPair with `vfx-iphone-device` or `device-frame-stage` for the phone on the side.\n\n### In Remotion\n\n```tsx\n{[appStore, playStore].map((src,i)=>{const s=spring({frame:frame-15-i*3,fps,config:{damping:12}}); return <Img src={src} style={{height:72, transform:`scale(${s})`}}/>})}\n```\n\n### In CapCut\n\nOverlay both badge PNGs at the same height; Animation In \"Pop up\" 0.3 s, second one 3 frames later.\n\n### Ready-made components\n\n- [Store Badge Lockup](https://skills.varg.ai/component/hf.store-badge-lockup/) (hyperframes): npx hyperframes add store-badge-lockup\n- [Social Proof Card](https://skills.varg.ai/component/hf.social-proof-card/) (hyperframes): npx hyperframes add social-proof-card\n- [VPN YouTube Spot](https://skills.varg.ai/component/hf.vpn-youtube-spot/) (hyperframes): npx hyperframes add vpn-youtube-spot\n\n### Where this comes from\n\n- [Bohdan Motion: breakdown of the Grok Build Mode launch video](https://x.com/bohdanmotion/status/2082193183111614671)","useWhen":["Mobile app launches and app ads."],"notFor":["Do not stretch or recolor the official badges, and keep both at the same height."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/store-badge-lockup","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Store Badge Lockup · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.store-badge-lockup/","license":"Apache-2.0","note":"Settles a short headline above equal-size App Store and Google Play badges as a token-driven mobile end-card call to action."},{"role":"component","label":"Social Proof Card · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.social-proof-card/","license":"Apache-2.0","note":"The app-store close as one mountable scene: wordmark, five stars, a proof line, three feature icons and a CTA capsule build in a quiet stagger and hold - measured from reference ad footage…"},{"role":"component","label":"VPN YouTube Spot · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.vpn-youtube-spot/","license":"Apache-2.0","note":"Snappy Apple-style YouTube insert showing a phone finding and installing a friendly VPN app with sound effects."},{"role":"source","label":"Bohdan Motion: breakdown of the Grok Build Mode launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2082193183111614671","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":12,"text":"Store Badges Close"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.store-badge-lockup","hf.social-proof-card","hf.vpn-youtube-spot"],"aliases":["app store badges","download CTA","mobile app outro"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/17df948d8583/take-store-badges-close.mp4","w":640,"h":360,"duration":6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAWVJREFUeJzNk0tLAzEQx/PahEWlNt0VvNSTIAi9VeiXLfg5eupV8NqDC9Iq7S4rZWHdwm6eJq3UV4UeKjiEkMlMfpn/hEAStsEhjByE8vcgo40xGhgDIATW+tkN5wKASIAw2guklep2L/o3/aIonNvhfDqblWUZx7Fzk4ckz/OfrB0g682ctlpRFM2eHsMj1utdp1k2GAzc/nK5zNIFwvRXEFybW1DGFmk6HN46HsJAS+kVYTIajb1qo2l4vKlHG+lyvoIg5ZwTdqKUhEi7sBDCn7e2aRqMaJu3aylc55Tys78DIaBFVa2ske8gvwsZ5+dxdNbhHQOqgNLp8zxJEogxDEhIWleXvUaUDmdsI6UsytVkMiGYYtRILZwUshFlbJ1m0/xlzhgz0Lr6tfY1WyVVXZcwu7sfE4xJELhkJSUmBBot3busKR/SIJDVa7Gpbtuyz70UzWob/Rba/Wo7k/aJ/r8v8gadmr/3ILcEdAAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item store-badge-lockup (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/store-badge-lockup","credit":"Rendered by varg · HyperFrames Store Badge Lockup","rights":"generated","note":"The Store Badge Lockup component rendered as installed (npx hyperframes add store-badge-lockup), defaults only","bytes":110576,"addedAt":"2026-10-28"}},{"id":"heygen-com/pull-back-to-canvas","slug":"pull-back-to-canvas","name":"Pull Back to the Whole Canvas","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"end-cards","tags":["outro","zoom out","recap","workspace","ffmpeg","hyperframes","remotion","capcut"],"summary":"The camera pulls out from the last detail to the whole product workspace, then lands on the logo.","description":"Built on [Parallax Unzoom](https://github.com/heygen-com/hyperframes/tree/main/registry/components/parallax-unzoom) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nOne long decelerating zoom-out: the last screen shrinks into a grid of everything shown, then the grid dims behind the logo.\n\n**When:** Close a demo that showed many features; it recaps without a montage.\n\n**Watch out:** Do not cut to a black card after the pull-back; let the workspace stay faintly behind the logo.\n\n**Timing:** Pull-back 1.2–2 s, expo.inOut; logo in during the last 0.5 s of the move.\n\n**Also called:** zoom out ending, unzoom reveal, workspace pull-back\n\n### In FFmpeg\n\n```bash\n-vf \"zoompan=z='max(1,3.2-on*0.045)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=1:s=1920x1080:fps=30\"\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add parallax-unzoom\n```\nOr `pull-back-reveal` for a single stat → hero pull-back; set `data-start` so the move ends on the music resolve.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/infinite-bento-pan\nconst z = interpolate(frame,[0,48],[3.2,1],{extrapolateRight:'clamp',easing:Easing.inOut(Easing.exp)});\n<AbsoluteFill style={{transform:`scale(${z})`, transformOrigin:'62% 40%'}}><Workspace/></AbsoluteFill>\n```\n\n### In CapCut\n\nOn the final workspace clip, keyframe Scale 320% → 100% over 1.5 s with Graphs → \"Ease in-out\"; add the logo overlay at the end.\n\n### Ready-made components\n\n- [Parallax Unzoom](https://skills.varg.ai/component/hf.parallax-unzoom/) (hyperframes): npx hyperframes add parallax-unzoom\n- [Pull Back Reveal](https://skills.varg.ai/component/hf.pull-back-reveal/) (hyperframes): npx hyperframes add pull-back-reveal\n- [Infinite Bento Pan](https://skills.varg.ai/component/remocn.infinite-bento-pan/) (remocn): npx shadcn@latest add @remocn/infinite-bento-pan\n\n### Where this comes from\n\n- [Bohdan Motion: breakdown of the Claude Design launch video](https://x.com/bohdanmotion/status/2080610655237751033)\n- [Lago: we killed our motion design job (Linear-style films, Remotion)](https://getlago.com/blog/we-killed-our-motion-design-job)","useWhen":["Close a demo that showed many features; it recaps without a montage."],"notFor":["Do not cut to a black card after the pull-back; let the workspace stay faintly behind the logo."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/parallax-unzoom","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Parallax Unzoom · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.parallax-unzoom/","license":"Apache-2.0","note":"Reveal transition — focus card scales down from full frame as siblings parallax in to form a grid (reverse of parallax-zoom)"},{"role":"component","label":"Pull Back Reveal · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.pull-back-reveal/","license":"Apache-2.0","note":"A tight stat detail holds, then one decelerating camera pull-back reveals the headline and supporting cards that recontextualize it."},{"role":"component","label":"Infinite Bento Pan · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.infinite-bento-pan/","license":"MIT","note":"A camera diagonally drifts across an oversized bento grid behind a soft vignette."},{"role":"source","label":"Bohdan Motion: breakdown of the Claude Design launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2080610655237751033","license":"link-only"},{"role":"source","label":"Lago: we killed our motion design job (Linear-style films, Remotion)","kind":"link","url":"https://getlago.com/blog/we-killed-our-motion-design-job","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":12,"text":"Pull Back to the Whole Canvas"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.parallax-unzoom","hf.pull-back-reveal","remocn.infinite-bento-pan"],"aliases":["zoom out ending","unzoom reveal","workspace pull-back"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/445001487020/take-pull-back-to-canvas.mp4","w":640,"h":360,"duration":5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAytJREFUeJxNUktvHEUQru6unofttXe9kPVCHEcgIxwQkSIUkSVI3HLO3RIHbihH/g2RkDggxIETcAqKkaPYyiEBJEwS4qyNHdv7fs3szPT0g5qFCHqklvqrqaqvvq/Y5bVbjUajPq4wxteyMynl991v7z+431yrX93c3LtQd85Kr4mI75wMf/7i9tr+4ObN9z9bfxHHURCvKKWa4tJPd+6gx8bVRVdnmgKLJpXMoDMIBiBdmuMX5nOjdYeNBSLnGUBCAQtzznvDZBOWAmTcCEdJ2Bxtf7f1RObCWuNZArCVtbuBZsPe02++TpE7ogSpRrFvLPRxGIQ/PPzrIWXoXOTOWGO8g24+j1HWGR22HGcA4KA4nDHHHU6j470e2ALj9AGMAUIhlPSP2t0mMHh5OJswxpAXECO69IBiInBqsf5a/dLFT4lL5DnCI88WtyRa2Pntq9bxMbJ4VkQU/zuKCpxubLx37VovX7TWluOAEuyjZyT5lSu3CDkNrOD8bEHT/WJOB0GwfLR1DhY+r4zJnHy+hyiPlys7Ow8QyrVX1t/VWV3n+cq4Sh3iw2Q0Gg1dpK0eFU1F7HJm2ZjZDHQtj1Yr8x+vZkKI6RL4Pj94dfHsd0BMTCW1PFV5notBRIWyLPM8WX4dreUmLAY41JTFk9C4IIglkx5vVSsF97CvjRnrNHKAweNfdk6eKzsTTztyLY5stVp99OuXKlexKFTrWDKAqQXOfL85HXYOO5sHlhQ0LKco87PBoIQ2nfSno5cOFB5ZxtunJ9s//qFUPhOSc/KiSPCU56VRwo3e/9fhmWuOCy5Qcy4kwv8OGkc7pdIiAoz/gxUNUpUkGblI3tGo/xWyQLagujrXuHHjiZjO+CwhivLW86d3734wvvjR9esbZt1Z18NlGm1PPr63fe9P//TNxofZ5U9UllUTWmF7Xp/s7u4ilLxw9ZzwM2Np+ZYBpV8e0FKF4K+Ua+fTt0gL7tU45y0ZCSgBtMPSkqy+nSZJRUpjbNVggM8QhiJsm0KrNI1YZCSqUQRO9ETeR90sRUmSdNNCqbYaTkldo8R0Upsc0IroQUhtYnfE0v7ft7vAtoRATVoAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item parallax-unzoom (Apache-2.0) in a host composition","page":"https://hyperframes.heygen.com/catalog/components/parallax-unzoom","credit":"Rendered by varg · HyperFrames Parallax Unzoom","rights":"generated","note":"The Parallax Unzoom component used as its header comment describes, with demo copy","bytes":80665,"addedAt":"2026-10-28"}},{"id":"heygen-com/follow-card-sign-off","slug":"follow-card-sign-off","name":"Follow Card Sign-Off","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"end-cards","tags":["follow","social","creator","end card","hyperframes","remotion","capcut"],"summary":"A profile card with avatar, handle and a Follow button that a cursor or tap presses.","description":"Built on [Instagram Follow](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/instagram-follow) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nPlatform-faithful card (X, TikTok, Instagram) springs in; the Follow button flips to Following with a tick.\n\n**When:** Founder-led launches and build-in-public clips where the account is the CTA.\n\n**Watch out:** Do not use a card for a platform you are not posting on; match the card to where the video runs.\n\n**Timing:** Card 0.4 s spring, press at +0.8 s (0.1 s down / 0.2 s up), state flip 0.25 s, hold 1.5 s.\n\n**Also called:** follow CTA, social follow card, profile card outro\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add instagram-follow   # or x-follow-card / tiktok-follow\n```\nSet name, handle and avatar through `data-variable-values`.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/x-follow-card\nconst followed = frame > pressAt;\n```\n\n### In CapCut\n\nStickers → search \"follow\"/\"subscribe\" button stickers; or Text templates → \"follow\"; add a tap SFX.\n\n### Ready-made components\n\n- [Instagram Follow](https://skills.varg.ai/component/hf.instagram-follow/) (hyperframes): npx hyperframes add instagram-follow\n- [X Follow Card](https://skills.varg.ai/component/hf.x-follow-card/) (hyperframes): npx hyperframes add x-follow-card\n- [TikTok Follow](https://skills.varg.ai/component/hf.tiktok-follow/) (hyperframes): npx hyperframes add tiktok-follow\n- [X Follow Card](https://skills.varg.ai/component/remocn.x-follow-card/) (remocn): npx shadcn@latest add @remocn/x-follow-card\n\n### Where this comes from\n\n- [Y Combinator: Farza's launch video playbook (first 10 seconds, hooks)](https://x.com/ycombinator/status/2113654566776709147)","useWhen":["Founder-led launches and build-in-public clips where the account is the CTA."],"notFor":["Do not use a card for a platform you are not posting on; match the card to where the video runs."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/instagram-follow","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Instagram Follow · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.instagram-follow/","license":"Apache-2.0","note":"Animated Instagram follow overlay with profile card and follow button"},{"role":"component","label":"X Follow Card · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.x-follow-card/","license":"Apache-2.0","note":"A social follow card with avatar, handle, and follower motion."},{"role":"component","label":"TikTok Follow · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.tiktok-follow/","license":"Apache-2.0","note":"Animated TikTok follow overlay with profile card and follow button"},{"role":"component","label":"X Follow Card · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.x-follow-card/","license":"MIT","note":"Animated X profile follow card — spring bounce-in, staggered blur-in, a synthetic cursor that clicks Follow and flips it to Following. Light/dark, horizontal or vertical."},{"role":"source","label":"Y Combinator: Farza's launch video playbook (first 10 seconds, hooks)","kind":"link","url":"https://x.com/ycombinator/status/2113654566776709147","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":12,"text":"Follow Card Sign-Off"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.instagram-follow","hf.x-follow-card","hf.tiktok-follow","remocn.x-follow-card"],"aliases":["follow CTA","social follow card","profile card outro"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/instagram-follow.mp4","w":1080,"h":1920,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/instagram-follow.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/instagram-follow.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/instagram-follow","credit":"Instagram Follow · hyperframes","rights":"publisher-site","note":"Preview of the Instagram Follow component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/loop-to-first-frame","slug":"loop-to-first-frame","name":"Last Frame Equals First Frame","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"end-cards","tags":["loop","social","logo","ending","ffmpeg","hyperframes","remotion","capcut"],"summary":"The ending morphs back into the opening frame so autoplaying feeds loop without a visible seam.","description":"Built on [Logo Sting](https://github.com/heygen-com/hyperframes/tree/main/registry/components/logo-sting) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nThe final logo or shape contracts into exactly the pose the film opened on; one flash or chrome glint hides the joint.\n\n**When:** Short social cuts (6–20 s) that autoplay on loop in feeds.\n\n**Watch out:** Do not end on a hard black frame; the loop then reads as a restart, not a continuation.\n\n**Timing:** Match the first and last 3–5 frames exactly; place the joint on a downbeat.\n\n**Also called:** seamless loop ending, loop outro, boomerang logo\n\n### In FFmpeg\n\n```bash\n# compare first and last frame\nffmpeg -i out.mp4 -vf \"select=eq(n\\,0)\" -frames:v 1 first.png\nffmpeg -sseof -0.04 -i out.mp4 -frames:v 1 last.png\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add logo-sting\n```\nAuthor the open and close from the same keyframe values; check with `npx hyperframes snapshot` at t=0 and t=end.\n\n### In Remotion\n\n```tsx\nconst t = frame / durationInFrames; // 0→1\nconst pose = interpolate(t,[0,0.1,0.9,1],[A,B,B,A]);\n```\n\n### In CapCut\n\nDuplicate the opening 0.5 s, place it at the end, and cross-fade 3–4 frames into it.\n\n### Ready-made components\n\n- [Logo Sting](https://skills.varg.ai/component/hf.logo-sting/) (hyperframes): npx hyperframes add logo-sting\n- [Metallic Paint](https://skills.varg.ai/component/reactbits.metallic-paint/) (react-bits): npx shadcn@latest add @react-bits/MetallicPaint-JS-CSS\n- [Anamorphic Flare](https://skills.varg.ai/component/remocn.anamorphic-flare/) (remocn): npx shadcn@latest add @remocn/anamorphic-flare\n\n### Where this comes from\n\n- [zero on X: Apple-keynote launch film prompt (Screen Studio zoom, no crossfades)](https://x.com/twoclipping/status/2103835273813496100)","useWhen":["Short social cuts (6–20 s) that autoplay on loop in feeds."],"notFor":["Do not end on a hard black frame; the loop then reads as a restart, not a continuation."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/logo-sting","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Logo Sting · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.logo-sting/","license":"Apache-2.0","note":"A wordmark slams into its final scale, fires one accent ring and one white impact frame, then holds completely still."},{"role":"component","label":"Metallic Paint · react-bits","kind":"link","url":"https://skills.varg.ai/component/reactbits.metallic-paint/","license":"MIT + Commons Clause","note":"A logo filled with liquid chrome that ripples and throws rainbow fringes along its edges"},{"role":"component","label":"Anamorphic Flare · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.anamorphic-flare/","license":"MIT","note":"A point of light grows into a cinematic anamorphic streak that sweeps the frame and reveals the logo in its wake."},{"role":"source","label":"zero on X: Apple-keynote launch film prompt (Screen Studio zoom, no crossfades)","kind":"link","url":"https://x.com/twoclipping/status/2103835273813496100","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":12,"text":"Last Frame Equals First Frame"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.logo-sting","reactbits.metallic-paint","remocn.anamorphic-flare"],"aliases":["seamless loop ending","loop outro","boomerang logo"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d7c780c24cc4/take-loop-to-first-frame.mp4","w":640,"h":360,"duration":2.2,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAASRJREFUeJzNUktugzAQLcbmpwqxQsJSukLprbhaeoLmIM0VUqVhka4gSIGAjU0f0CYRUVbNImPJep4Zv5l5tuF4z0/3MHoXlgcn0l13wt0FHs0wjOsonOTPfyaiZo8Z63fKWCulbdtCCCRbFiurSitNTNLpjlKTWZZq+9U0zcj1S1TXdZIk8/mr67koyCMOkG5TziOEpGz3+xwtA4dh+DKbbdNUCvGxWr0tFqh3JkKTSuuqKtefa0bZ12YTce65blEUu913nmdxHCPB933Uz7Ic3R0OZRAEU43Aunxfaq0IMXHERPZgx2OF0WQrHcfBsCaloEBVhNA40jDjVCMM3Es+7NACl4UUg8b9TWgBvxJiTEboptjk4l1OTzX13A498of8p/0Af1CVhTKRBDcAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item logo-sting (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/logo-sting","credit":"Rendered by varg · HyperFrames Logo Sting","rights":"generated","note":"The Logo Sting component rendered as installed (npx hyperframes add logo-sting), defaults only","bytes":14316,"addedAt":"2026-10-28"}},{"id":"heygen-com/zoom-to-the-action","slug":"zoom-to-the-action","name":"Zoom to the Action","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"ui","tags":["zoom","screen recording","UI","camera","ffmpeg","hyperframes","remotion","capcut"],"summary":"The full app establishes, then the camera pushes 1.5–2× into the part being used and eases back out.","description":"Built on [UI Focus Zoom](https://github.com/heygen-com/hyperframes/tree/main/registry/components/ui-focus-zoom) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nOne settle on the full screen, a smooth decelerating push to the button or field, a short hold, and a pull back before the next action.\n\n**When:** Every screen recording where text would be unreadable at full frame — which is almost all of them at 1080p.\n\n**Watch out:** Do not zoom on every small move; zoom on the interaction, then stay still while it happens.\n\n**Timing:** Push 0.6–0.9 s (power3.inOut), hold ≥ 1.2 s, release 0.5–0.7 s. Scale 1.5–2.0×.\n\n**Also called:** punch-in on UI, focus zoom, screen recording zoom\n\n### In FFmpeg\n\n```bash\n-vf \"zoompan=z='if(between(it,4,6.4),min(zoom+0.03,1.8),max(zoom-0.04,1))':x='iw*0.72-iw/zoom/2':y='ih*0.30-ih/zoom/2':d=1:s=1920x1080:fps=60\"\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add ui-focus-zoom\n```\n```js\n// animate the wrapper, never the <video> itself\ntl.to(\"#cam\",{scale:1.8,xPercent:-18,yPercent:-10,duration:0.8,ease:\"power3.inOut\"},4)\n  .to(\"#cam\",{scale:1,xPercent:0,yPercent:0,duration:0.6,ease:\"power3.inOut\"},6.4);\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/stage\nconst z = interpolate(frame,[120,144,192,210],[1,1.8,1.8,1],{extrapolateLeft:'clamp',extrapolateRight:'clamp',easing:Easing.inOut(Easing.cubic)});\n<AbsoluteFill style={{transform:`scale(${z})`, transformOrigin:'72% 30%'}}><OffthreadVideo src={rec}/></AbsoluteFill>\n```\n\n### In CapCut\n\nSelect the clip → Video → Basic → Scale/Position keyframes: 100% → 180% over 0.8 s at the click, back to 100% after; or use the \"Auto zoom\"/\"Zoom\" effect on desktop.\n\n### Ready-made components\n\n- [UI Focus Zoom](https://skills.varg.ai/component/hf.ui-focus-zoom/) (hyperframes): npx hyperframes add ui-focus-zoom\n- [Stage](https://skills.varg.ai/component/remocn.stage/) (remocn): npx shadcn@latest add @remocn/stage\n- [Camera Punch-In](https://skills.varg.ai/component/hf.yt-camera-move/) (hyperframes): npx hyperframes add yt-camera-move\n- [Parallax Zoom](https://skills.varg.ai/component/hf.parallax-zoom/) (hyperframes): npx hyperframes add parallax-zoom\n\n### Where this comes from\n\n- [Screen Studio: auto zoom, cursor smoothing, click effects](https://screen.studio/)\n- [Trainn: how to add zoom effects to product demo videos](https://trainn.co/answers/how-to-add-zoom-effects-to-product-demo-videos/)\n- [OpenScreen docs: creating demos (zoom regions from cursor dwell)](https://www.mintlify.com/siddharthvaddem/openscreen/guides/creating-demos)","useWhen":["Every screen recording where text would be unreadable at full frame — which is almost all of them at 1080p."],"notFor":["Do not zoom on every small move; zoom on the interaction, then stay still while it happens."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/ui-focus-zoom","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"UI Focus Zoom · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.ui-focus-zoom/","license":"Apache-2.0","note":"A full app surface establishes with one settle, then the camera zooms and pans to an anchored region on its cue and holds the zoomed state, with an optional soft focus halo at the anchor…"},{"role":"component","label":"Stage · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.stage/","license":"MIT","note":"Place a screenshot, recording, or long page on a perspective studio plane and direct an integrated camera across it with timeline keyframes."},{"role":"component","label":"Camera Punch-In · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.yt-camera-move/","license":"Apache-2.0","note":"Dynamic zoom, slide, and 3D tilt-pan helpers for any wrapper (video, include, card) with cubic-easing defaults and an edge-defocus pulse overlay"},{"role":"component","label":"Parallax Zoom · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.parallax-zoom/","license":"Apache-2.0","note":"Center card scales up to fill the frame while siblings parallax outward — inspired by the eBay Playbook hero transition"},{"role":"source","label":"Screen Studio: auto zoom, cursor smoothing, click effects","kind":"link","url":"https://screen.studio/","license":"link-only"},{"role":"source","label":"Trainn: how to add zoom effects to product demo videos","kind":"link","url":"https://trainn.co/answers/how-to-add-zoom-effects-to-product-demo-videos/","license":"link-only"},{"role":"source","label":"OpenScreen docs: creating demos (zoom regions from cursor dwell)","kind":"link","url":"https://www.mintlify.com/siddharthvaddem/openscreen/guides/creating-demos","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":215,"text":"Zoom to the Action"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.ui-focus-zoom","remocn.stage","hf.yt-camera-move","hf.parallax-zoom"],"aliases":["punch-in on UI","focus zoom","screen recording zoom"]}},{"id":"heygen-com/tilted-dashboard-reveal","slug":"tilted-dashboard-reveal","name":"3D Tilted Dashboard Reveal","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"ui","tags":["UI","3D","dashboard","reveal","hyperframes","remotion","capcut"],"summary":"The dashboard rises from a steep 3D tilt to flat, like a screen lifting toward the viewer.","description":"Built on [3D UI Reveal](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/ui-3d-reveal) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nScreenshot on a plane tilted ~25–40° back, with a soft shadow and glow; it rotates to 0° while scaling up and the shadow tightens.\n\n**When:** The hero reveal of a web app or dashboard, right after the title.\n\n**Watch out:** Do not tilt past ~45°; the UI text compresses and the shot reads as a gimmick.\n\n**Timing:** 1.0–1.4 s, expo.out; start rotateX 30°, scale 0.85, y +80 px.\n\n**Also called:** perspective reveal, UI tilt, dashboard hero\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add ui-3d-reveal\n```\n```js\ntl.from(\"#ui\",{rotationX:32,scale:0.85,y:80,transformPerspective:1600,transformOrigin:\"50% 100%\",duration:1.2,ease:\"expo.out\"},0.3);\n```\n\n### In Remotion\n\n```tsx\nconst p = spring({frame, fps, config:{damping:200}});\n<div style={{perspective:1600}}><Img src={ui} style={{transform:`rotateX(${interpolate(p,[0,1],[32,0])}deg) scale(${interpolate(p,[0,1],[0.85,1])})`, transformOrigin:'50% 100%'}}/></div>\n```\n\n### In CapCut\n\nOverlay the screenshot; Effects → search \"3D\"/\"perspective\" or Animation In \"Rotate in 3D\"; add a shadow in Basic.\n\n### Ready-made components\n\n- [3D UI Reveal](https://skills.varg.ai/component/hf.ui-3d-reveal/) (hyperframes): npx hyperframes add ui-3d-reveal\n- [Tilt Card](https://skills.varg.ai/component/hf.tilt-card/) (hyperframes): npx hyperframes add tilt-card\n- [Stage](https://skills.varg.ai/component/remocn.stage/) (remocn): npx shadcn@latest add @remocn/stage\n\n### Where this comes from\n\n- [UX Design Bootcamp: the rise of Linear style design](https://bootcamp.uxdesign.cc/the-rise-of-linear-style-design-origins-trends-and-techniques-4fd96aab7646)\n- [Rotato: 14 video mockup ideas and examples](https://rotato.app/blog/mockup-video-examples)","useWhen":["The hero reveal of a web app or dashboard, right after the title."],"notFor":["Do not tilt past ~45°; the UI text compresses and the shot reads as a gimmick."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/ui-3d-reveal","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"3D UI Reveal · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.ui-3d-reveal/","license":"Apache-2.0","note":"Perspective 3D reveal animation for UI elements"},{"role":"component","label":"Tilt Card · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.tilt-card/","license":"Apache-2.0","note":"A transitions.dev-inspired tilt card primitive with depth layers and hover-style parallax"},{"role":"component","label":"Stage · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.stage/","license":"MIT","note":"Place a screenshot, recording, or long page on a perspective studio plane and direct an integrated camera across it with timeline keyframes."},{"role":"source","label":"UX Design Bootcamp: the rise of Linear style design","kind":"link","url":"https://bootcamp.uxdesign.cc/the-rise-of-linear-style-design-origins-trends-and-techniques-4fd96aab7646","license":"link-only"},{"role":"source","label":"Rotato: 14 video mockup ideas and examples","kind":"link","url":"https://rotato.app/blog/mockup-video-examples","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":215,"text":"3D Tilted Dashboard Reveal"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.ui-3d-reveal","hf.tilt-card","remocn.stage"],"aliases":["perspective reveal","UI tilt","dashboard hero"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ui-3d-reveal.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ui-3d-reveal.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ui-3d-reveal.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/ui-3d-reveal","credit":"3D UI Reveal · hyperframes","rights":"publisher-site","note":"Preview of the 3D UI Reveal component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/floating-ui-panels","slug":"floating-ui-panels","name":"Floating UI Panels in Depth","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"ui","tags":["UI","depth","parallax","layers","hyperframes","remotion","capcut"],"summary":"The interface splits into its panels, which float apart in depth with parallax, then snap back.","description":"Built on [Camera Rig Depth Stack](https://github.com/heygen-com/hyperframes/tree/main/registry/components/camera-rig-depth-stack) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nSidebar, main view and modal separate on the z-axis at different depths; the camera drifts so near panels move faster.\n\n**When:** Explain how a product is built (layers, modules) or make a static screen feel alive.\n\n**Watch out:** Do not separate more than 3–5 layers; more becomes a cloud of rectangles.\n\n**Timing:** Separate 0.8 s, drift 2–3 s linear, re-stack 0.6 s power3.inOut.\n\n**Also called:** exploded UI, layered panels, depth stack\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add camera-rig-depth-stack\n```\nOr `exploded-stack` for isometric plates with labels beside each layer.\n\n### In Remotion\n\n```tsx\nlayers.map((l,i)=>{const z=interpolate(frame,[0,24],[0,i*120],{extrapolateRight:'clamp'}); return <Img src={l} style={{position:'absolute', transform:`translateZ(${z}px)`}}/>})\n// parent: perspective:1800, transformStyle:'preserve-3d', rotateY drift\n```\n\n### In CapCut\n\nCut the screenshot into layers (one PNG per panel), stack as Overlays, keyframe each Position/Scale differently for parallax.\n\n### Ready-made components\n\n- [Camera Rig Depth Stack](https://skills.varg.ai/component/hf.camera-rig-depth-stack/) (hyperframes): npx hyperframes add camera-rig-depth-stack\n- [Exploded Stack](https://skills.varg.ai/component/hf.exploded-stack/) (hyperframes): npx hyperframes add exploded-stack\n- [Keyframe Scrub Stack](https://skills.varg.ai/component/hf.keyframe-scrub-stack/) (hyperframes): npx hyperframes add keyframe-scrub-stack\n\n### Where this comes from\n\n- [Steve Lemuel: Raycast kinetic product motion (Figma + Jitter)](https://contra.com/p/llNMeeMX-raycast-kinetic-product-motion)\n- [Rotato: 14 video mockup ideas and examples](https://rotato.app/blog/mockup-video-examples)","useWhen":["Explain how a product is built (layers, modules) or make a static screen feel alive."],"notFor":["Do not separate more than 3–5 layers; more becomes a cloud of rectangles."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/camera-rig-depth-stack","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Camera Rig Depth Stack · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.camera-rig-depth-stack/","license":"Apache-2.0","note":"A 3D camera-rig-style card stack with depth, parallax, and focus shift."},{"role":"component","label":"Exploded Stack · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.exploded-stack/","license":"Apache-2.0","note":"Isometric layer plates explode apart with a label beside each layer, hold, then collapse back into one stack. Built for architecture and system diagrams."},{"role":"component","label":"Keyframe Scrub Stack · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.keyframe-scrub-stack/","license":"Apache-2.0","note":"A keyframe-sequenced stack of cards with offset timing and easing presets."},{"role":"source","label":"Steve Lemuel: Raycast kinetic product motion (Figma + Jitter)","kind":"link","url":"https://contra.com/p/llNMeeMX-raycast-kinetic-product-motion","license":"link-only"},{"role":"source","label":"Rotato: 14 video mockup ideas and examples","kind":"link","url":"https://rotato.app/blog/mockup-video-examples","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":215,"text":"Floating UI Panels in Depth"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.camera-rig-depth-stack","hf.exploded-stack","hf.keyframe-scrub-stack"],"aliases":["exploded UI","layered panels","depth stack"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0da4198313d6/take-floating-ui-panels.mp4","w":640,"h":360,"duration":4.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAl1JREFUeJxlU9uO0zAQtR1n26Zd2m3V7a74B7RfwDMSv4OQgFde4Cv4KRC8Utp9WBC9uElsj8ccO+kKgaNMHXcuZ84cS31RifOKMcJKKcVfS6r0GTk+ev3nr2B1d1QOZoXW5BWyxNgl0jmjSom4VAW8y3Sq4KOiKOA/KENd18fjZ3jqc9nhYr58++7VbDY7GdO2rXMe1jfCWtu4AOusTJakcy74i9+73fbHRqnWmC89ItSk4G6f3rx88ZxjDETMQXAMgZkFpU8OgazDPoQgvPeRhw8PPz98/GTMHqi7RPiRhSwDsTENjpCUA6tYIticJKVoRRRVQWiByAMRiIqR0ZBEqJJgUJ/ZUpFVikgESGNOm+2vstQIQYONi9VoJNh6T/Cfz69Q1VoPeClRoiw8cqQDCzQVQSoJZ8Nmc29Op7axy+XycDCTycQca2DBZvrkCs1ij6mlUUS8wJanm0EBdtRRsKeqqu7unoEZa1FTogZ5H0hkCDKzppwjTnmKTgca7WGPvzOhMR1yInm/P2632+vrm/v7LXm5Wq0ab/e7/c3yNo0gFh5EIa1AaRIyc4TQXmAoivppMXQynV4NBqP5fEmey7K0gavxJZKkPCEClhBFN7J+/AlUElTR85XRTibj8bgiEovFHBAwOq0vwggn2APQwKKzJN2iEz3iOet1aI7267c1qK2bY5ZfBJ2dFG2btGMtO4+HsyAv1+u1UsOir36+Ip4Ou519/ea9LjWYwgrc3SaVbRqI6p3THZGi0kA4oMPh0EPpErX197YW4Xwhz6OUjxSIrLSeyn8vcHL+A0/ivpJ9zMG6AAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item camera-rig-depth-stack (Apache-2.0) in a host composition","page":"https://hyperframes.heygen.com/catalog/components/camera-rig-depth-stack","credit":"Rendered by varg · HyperFrames Camera Rig Depth Stack","rights":"generated","note":"The Camera Rig Depth Stack component used as its header comment describes, with demo copy","bytes":54645,"addedAt":"2026-10-28"}},{"id":"heygen-com/ui-builds-itself","slug":"ui-builds-itself","name":"UI Builds Itself Piece by Piece","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"ui","tags":["UI","skeleton","loading","build","hyperframes","remotion","capcut"],"summary":"Grey skeleton blocks pulse once, then real cards, charts and text fill in with a stagger.","description":"Built on [Skeleton Reveal](https://github.com/heygen-com/hyperframes/tree/main/registry/components/skeleton-reveal) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nLayout appears as soft placeholders, then each block cross-fades to real content top-left to bottom-right.\n\n**When:** Show that a product generates or loads something (AI output, a report, a dashboard).\n\n**Watch out:** Do not stagger 30 tiny elements individually; group into 4–8 blocks.\n\n**Timing:** Skeleton pulse 0.6 s, then blocks 0.3 s each, 60–100 ms stagger.\n\n**Also called:** skeleton to content, UI build-up, staggered UI\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add skeleton-reveal\nnpx hyperframes add stagger-lattice\n```\nUse `stagger:{each:0.08,from:\"start\",grid:\"auto\"}` on the block elements.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/skeleton\nconst loaded = frame > 20 + i*3;\n```\n\n### In CapCut\n\nTwo versions of the screenshot (blank wireframe and final); cross-fade with Mask → Linear keyframed diagonally.\n\n### Ready-made components\n\n- [Skeleton Reveal](https://skills.varg.ai/component/hf.skeleton-reveal/) (hyperframes): npx hyperframes add skeleton-reveal\n- [Stagger Lattice](https://skills.varg.ai/component/hf.stagger-lattice/) (hyperframes): npx hyperframes add stagger-lattice\n- [UI Skeleton](https://skills.varg.ai/component/remocn.skeleton/) (remocn): npx shadcn@latest add @remocn/skeleton\n\n### Where this comes from\n\n- [Trace visualization: showing users what your AI agent is doing](https://agentinterface-co.pages.dev/blog/trace-visualization-showing-users-what-ai-agent-does.html)\n- [Jitter: UI element templates](https://jitter.video/templates/ui-elements)","useWhen":["Show that a product generates or loads something (AI output, a report, a dashboard)."],"notFor":["Do not stagger 30 tiny elements individually; group into 4–8 blocks."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/skeleton-reveal","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Skeleton Reveal · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.skeleton-reveal/","license":"Apache-2.0","note":"A skeleton loader transition that pulses, then cross-fades into content"},{"role":"component","label":"Stagger Lattice · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.stagger-lattice/","license":"Apache-2.0","note":"A staggered grid reveal inspired by Anime.js v4 stagger utilities, implemented with GSAP for HyperFrames."},{"role":"component","label":"UI Skeleton · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.skeleton/","license":"MIT","note":"A skeleton→content crossfade whose loading/loaded state is a pure function of the timeline. The Skeleton renderer is pure (reads no frame); only the composed SkeletonBlock shimmer reads it…"},{"role":"source","label":"Trace visualization: showing users what your AI agent is doing","kind":"link","url":"https://agentinterface-co.pages.dev/blog/trace-visualization-showing-users-what-ai-agent-does.html","license":"link-only"},{"role":"source","label":"Jitter: UI element templates","kind":"link","url":"https://jitter.video/templates/ui-elements","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":215,"text":"UI Builds Itself Piece by Piece"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.skeleton-reveal","hf.stagger-lattice","remocn.skeleton"],"aliases":["skeleton to content","UI build-up","staggered UI"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/7e416a75a48d/take-ui-builds-itself.mp4","w":640,"h":360,"duration":4.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAaFJREFUeJx9U01vwzAItbHTj0vbST31//+2adI2TZrWJE1s2AOcLu1hHBLHwOMBL/H17SPGSIko6ju6UQwh4B2C4IpF8GmPIOxnN4aLKx6SNcHSPNOSA3wIdsRSeZNTu2euiWqp/unQiJHqQI0JhWYyDNevz/eu64jodrtdLpfD4VBKGccxbXYIQJIlEqGo4WXHvjNSmFpejsf5NgDlfD7v93ux0I1ZKfwz/YSkpf3e+8jh0RYfnU4nnGutfd/vdruHSiIxPNsz0DJIzlnJppRwM03TCoUaVnxAyz79sJRyRrB5ntEaDmT79Euca/0jvipsw8ZGOaIQNkWrBolZuRiKb62SmtZGDgJ8/S6ILE0j5gnmEBmnaez7Wll3edcWKdx2GxEErg1lsTYjoMbUuoOI0laNrRQ9qgyfRkKFGhZ9tmE7KRVhIjGuPmaiVq2qds3BbFtnsWDXtKfn1VAUi42vVqNkmTpbYALBNyWRoEC097Scv/Xfb1GmH0aT78q0QYWfC/4ZyUl/l/90pCQifV8HcNGBSL27OCafVNdla5/Wib98PGDsB2y+dgAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item skeleton-reveal (Apache-2.0) in a host composition","page":"https://hyperframes.heygen.com/catalog/components/skeleton-reveal","credit":"Rendered by varg · HyperFrames Skeleton Reveal","rights":"generated","note":"The Skeleton Reveal component used as its header comment describes, with demo copy","bytes":32007,"addedAt":"2026-10-28"}},{"id":"heygen-com/before-after-ui-wipe","slug":"before-after-ui-wipe","name":"Before/After UI Wipe","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"ui","tags":["before after","UI","wipe","comparison","ffmpeg","hyperframes","remotion","capcut"],"summary":"A divider sweeps across one screen, turning the old version into the new one underneath.","description":"Built on [Before After Wipe](https://github.com/heygen-com/hyperframes/tree/main/registry/components/before-after-wipe) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nTwo aligned screenshots stacked; a thin vertical line with a handle travels left to right; labels \"Before\" and \"After\" in the corners.\n\n**When:** Redesigns, AI clean-ups, automation (messy spreadsheet → clean report).\n\n**Watch out:** Do not compare screenshots that are not pixel-aligned; any shift makes the wipe look broken.\n\n**Timing:** Wipe 1.0–1.5 s power2.inOut; optional pause at 50% for 0.5 s.\n\n**Also called:** comparison slider, split wipe, old vs new UI\n\n### In FFmpeg\n\n```bash\nffmpeg -loop 1 -t 3 -i before.png -loop 1 -t 3 -i after.png -filter_complex \"[0][1]xfade=transition=wiperight:duration=1.2:offset=1\" out.mp4\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add before-after-wipe\n```\nDrop the two images into the block's slots; tween `--split` from 0 to 100%.\n\n### In Remotion\n\n```tsx\nconst x = interpolate(frame,[0,40],[0,100],{extrapolateRight:'clamp',easing:Easing.inOut(Easing.quad)});\n<Img src={after}/><Img src={before} style={{position:'absolute',inset:0,clipPath:`inset(0 0 0 ${x}%)`}}/>\n```\n\n### In CapCut\n\nPut \"after\" over \"before\"; Mask → Linear (rotated 90°) on the top clip and keyframe its position across.\n\n### Ready-made components\n\n- [Before After Wipe](https://skills.varg.ai/component/hf.before-after-wipe/) (hyperframes): npx hyperframes add before-after-wipe\n- [Comparison Split](https://skills.varg.ai/component/hf.comparison-split/) (hyperframes): npx hyperframes add comparison-split\n- [Page Slide](https://skills.varg.ai/component/hf.page-slide/) (hyperframes): npx hyperframes add page-slide\n\n### Where this comes from\n\n- [FFmpeg filters documentation (timeline enable, drawtext, zoompan, overlay)](https://ffmpeg.org/ffmpeg-filters.html)\n- [Bohdan Motion: Secureframe launch video, one pain per scene](https://x.com/bohdanmotion/status/2069369111231049803)","useWhen":["Redesigns, AI clean-ups, automation (messy spreadsheet → clean report)."],"notFor":["Do not compare screenshots that are not pixel-aligned; any shift makes the wipe look broken."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/before-after-wipe","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Before After Wipe · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.before-after-wipe/","license":"Apache-2.0","note":"Two full-bleed content slots compare before and after states as a persistent divider wipes the after layer over the before layer and rests at a configurable split…"},{"role":"component","label":"Comparison Split · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.comparison-split/","license":"Apache-2.0","note":"Two full-bleed panels compare before and after states as a persistent divider wipes the vivid after layer over the muted before layer and rests at a configurable split."},{"role":"component","label":"Page Slide · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.page-slide/","license":"Apache-2.0","note":"A transitions.dev-inspired page slide primitive with outgoing and incoming panels"},{"role":"source","label":"FFmpeg filters documentation (timeline enable, drawtext, zoompan, overlay)","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html","license":"link-only"},{"role":"source","label":"Bohdan Motion: Secureframe launch video, one pain per scene","kind":"link","url":"https://x.com/bohdanmotion/status/2069369111231049803","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":215,"text":"Before/After UI Wipe"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.before-after-wipe","hf.comparison-split","hf.page-slide"],"aliases":["comparison slider","split wipe","old vs new UI"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/5eef833a12e2/take-before-after-ui-wipe.mp4","w":640,"h":360,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAdJJREFUeJx9UsGO00AMtT1puk1FV6u9wB6QEH/Cme8HLXDgCgcgomk3M2Ob57RhC+2uIyXRjP38/Pz49ft3pZab9GIcx4EfiIiVTU2MzVQKdeu1fct93zdJaA4zT0lWq46Zc86obVDAlUgdNZSmrGrsZkaOUHbcijlObUH/hsgjdPPA2Vv/UX/jLUqmSqNUtaQMJHZP5ooalrmYD4xUDTRjAo6TYORObHHnRRH0ZrHuNpkqCNH9sJfcVDQAhKNA1Q+VfyGOjGIABQy7OmEcpXbVdtdrkdBLbrlpGt7WMWeIIpChKhQ5hTgCoRXkSJMuUCo5Xeerm9rtKVLbtxvU536gBe37nbudQxyBWI0xjidy8VBY8liG7a5QjkFyubt7pRv5/PFD4uX5RKdAIRDmw7LZHOSHr7+2/vNwXcv4cnkL0sW1kctc5tECRbgQOxPYJY6Oc892cfXp/kv5Pi6lewZlFts0hf1ib+cZKTVoFxt8Qp0ZaOLCIGWxNfzjwYUfQAMh3MFh3PQcEJYVNtYoQHLdlYmZw5CKn6JeWpiDY5+PfC+sP2xrHD4yh+pITgDRED44wtESnuUT4Z5ghGyQx1tt+lpywQksIZysiU0QXdDuv/gDYsZQoCBwPq0AAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item before-after-wipe (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/before-after-wipe","credit":"Rendered by varg · HyperFrames Before After Wipe","rights":"generated","note":"The Before After Wipe component rendered as installed (npx hyperframes add before-after-wipe), defaults only","bytes":18980,"addedAt":"2026-10-28"}},{"id":"heygen-com/card-expands-to-detail","slug":"card-expands-to-detail","name":"Card Expands Into Detail","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"ui","tags":["UI","morph","transition","detail","hyperframes","remotion","capcut"],"summary":"A small card grows into a full detail panel in one continuous shape change.","description":"Built on [Card Resize](https://github.com/heygen-com/hyperframes/tree/main/registry/components/card-resize) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA list item's corners stretch to fill the frame while its content cross-fades to the detail layout; no cut, no fade to black.\n\n**When:** Move from overview to detail inside the product without losing the viewer.\n\n**Watch out:** Do not fade between two unrelated screenshots and call it a morph; the edges must travel.\n\n**Timing:** 0.5–0.7 s, power3.inOut (or spring damping ~20).\n\n**Also called:** shared element, modal morph, card resize\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add card-resize\n```\nOr `modal-morph`: both layouts are measured once and the timeline interpolates the box.\n\n### In Remotion\n\n```tsx\nconst p = spring({frame, fps, config:{damping:20}});\nconst box = {x:interpolate(p,[0,1],[a.x,b.x]), y:interpolate(p,[0,1],[a.y,b.y]), w:interpolate(p,[0,1],[a.w,b.w]), h:interpolate(p,[0,1],[a.h,b.h])};\n```\n\n### In CapCut\n\nKeyframe the card overlay's Scale and Position to the full-frame size, then cross-fade to the detail screenshot over the last 4 frames.\n\n### Ready-made components\n\n- [Card Resize](https://skills.varg.ai/component/hf.card-resize/) (hyperframes): npx hyperframes add card-resize\n- [Modal Morph](https://skills.varg.ai/component/hf.modal-morph/) (hyperframes): npx hyperframes add modal-morph\n- [Panel Reveal](https://skills.varg.ai/component/hf.panel-reveal/) (hyperframes): npx hyperframes add panel-reveal\n\n### Where this comes from\n\n- [zero on X: Apple-keynote launch film prompt (Screen Studio zoom, no crossfades)](https://x.com/twoclipping/status/2103835273813496100)\n- [Material Design: motion duration and easing](https://m1.material.io/motion/duration-easing.html)","useWhen":["Move from overview to detail inside the product without losing the viewer."],"notFor":["Do not fade between two unrelated screenshots and call it a morph; the edges must travel."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/card-resize","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Card Resize · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.card-resize/","license":"Apache-2.0","note":"A transitions.dev-inspired card resize primitive that expands a compact card into a detail panel"},{"role":"component","label":"Modal Morph · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.modal-morph/","license":"Apache-2.0","note":"A small card expands into a full panel, shared-element style: both layouts measured once at mount, the container morphs by transform only (never width/height tweens) while keyed children counter-scale and re-flow onto…"},{"role":"component","label":"Panel Reveal · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.panel-reveal/","license":"Apache-2.0","note":"A panel reveal primitive with height expansion and content fade"},{"role":"source","label":"zero on X: Apple-keynote launch film prompt (Screen Studio zoom, no crossfades)","kind":"link","url":"https://x.com/twoclipping/status/2103835273813496100","license":"link-only"},{"role":"source","label":"Material Design: motion duration and easing","kind":"link","url":"https://m1.material.io/motion/duration-easing.html","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":215,"text":"Card Expands Into Detail"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.card-resize","hf.modal-morph","hf.panel-reveal"],"aliases":["shared element","modal morph","card resize"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/aa1bfe85ce1e/take-card-expands-to-detail.mp4","w":640,"h":360,"duration":4.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAdJJREFUeJyNU9Fq4zAQlFcrlziGpiSFkFD6dL+R/3/KF5RSCteXXEMak7NjS9obaZviHqV3+yDLq93RaDQqnl52ROQKQ5aoQOTh8jXGUB6jCEZBRIkx5nlEMoY4iEGGtQV5rSYTc29qzihGlzCJYj4CCB9zVEtR8GVBgg8JKwHHIgLdENn8m8FiZgMC8s5L5AKcd01AAVQlWMtl6XK+kEQtTYhEyQlJyExZAW1KDkMI2D8XsAJ776uqat72h8NhsVisVqvRKUZHGgVAm1P7+rovHClQ4huGvh/6tm2Px6Mty+ubm6b5jWVnzXw+F5Ev4XC+wQ9s+Z0pjha8P5/P2+2267ofxoD4r/1bXU9R/fD4dH+3Xi6XelnjQG/f98aWznHSCDh9729v681mA1KgwMyz2awsSzSrGZqmwRxGgSpZO5pMJpAcEqFdxLLq74PH8nq91q1Op1Nd11DtG5mAJdlBeomsV/tX0XQ6/VLgbyIBJadY9/zzZbdjiAc7/LvPkmPX9h6N6l4GCoznnOu6dGUJyPv/IMAAmlQQqkI7QFiVUyvCkzCYKkIxqqfHkR4aJdegC8UuBesb5dyPNb66IrY2frYMTJ6/qflzPr1QywwSut8fXvgi8FUnXQQAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item card-resize (Apache-2.0) in a host composition","page":"https://hyperframes.heygen.com/catalog/components/card-resize","credit":"Rendered by varg · HyperFrames Card Resize","rights":"generated","note":"The Card Resize component used as its header comment describes, with demo copy","bytes":33195,"addedAt":"2026-10-28"}},{"id":"heygen-com/filmed-off-a-monitor","slug":"filmed-off-a-monitor","name":"Filmed Off a Monitor","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"ui","tags":["UI","cinematic","depth of field","screen","hyperframes","remotion","capcut"],"summary":"The UI looks filmed on a real display: slight perspective, focus falloff and glare.","description":"Built on [Filmed Screen](https://github.com/heygen-com/hyperframes/tree/main/registry/components/filmed-screen) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA screen plane at a gentle angle; depth of field keeps one element sharp while edges blur; soft highlight and a hint of pixel texture.\n\n**When:** Give a flat screen recording a cinematic, physical feel between crisp UI shots.\n\n**Watch out:** Do not blur the part being explained; move the focus to it.\n\n**Timing:** Camera drift 3–5 s linear; focus pull 0.6 s.\n\n**Also called:** screen with depth of field, monitor shot, physical screen\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add filmed-screen\n```\nPoint the block's focus target at the element the voiceover names.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/camera-lens\n<div style={{transform:'perspective(1400px) rotateY(-14deg) rotateX(6deg)', filter:'contrast(1.05)'}}><OffthreadVideo src={rec}/></div>\n```\n\n### In CapCut\n\nApply Effects → \"Lens blur\"/\"Depth of field\" with a radial focus; add a light-leak overlay at 15% opacity.\n\n### Ready-made components\n\n- [Filmed Screen](https://skills.varg.ai/component/hf.filmed-screen/) (hyperframes): npx hyperframes add filmed-screen\n- [Camera Lens](https://skills.varg.ai/component/remocn.camera-lens/) (remocn): npx shadcn@latest add @remocn/camera-lens\n\n### Where this comes from\n\n- [Lago: we killed our motion design job (Linear-style films, Remotion)](https://getlago.com/blog/we-killed-our-motion-design-job)\n- [Steve Lemuel: Raycast kinetic product motion (Figma + Jitter)](https://contra.com/p/llNMeeMX-raycast-kinetic-product-motion)","useWhen":["Give a flat screen recording a cinematic, physical feel between crisp UI shots."],"notFor":["Do not blur the part being explained; move the focus to it."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/filmed-screen","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Filmed Screen · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.filmed-screen/","license":"Apache-2.0","note":"Your scene, filmed off a screen: perspective, depth of field that follows an element you name, LED sub-pixels and per-shot colour grades. Shots glide into each other, focus racks between elements…"},{"role":"component","label":"Camera Lens · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.camera-lens/","license":"MIT","note":"Put a scene behind real glass: resolution falls off toward the corners, highlights bloom through the optics, colour fringes at the edges — a screencast that reads as filmed rather than rendered."},{"role":"source","label":"Lago: we killed our motion design job (Linear-style films, Remotion)","kind":"link","url":"https://getlago.com/blog/we-killed-our-motion-design-job","license":"link-only"},{"role":"source","label":"Steve Lemuel: Raycast kinetic product motion (Figma + Jitter)","kind":"link","url":"https://contra.com/p/llNMeeMX-raycast-kinetic-product-motion","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":215,"text":"Filmed Off a Monitor"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.filmed-screen","remocn.camera-lens"],"aliases":["screen with depth of field","monitor shot","physical screen"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/filmed-screen.mp4","blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/filmed-screen.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/filmed-screen.mp4","page":"https://hyperframes.heygen.com/catalog/components/filmed-screen","credit":"Filmed Screen · hyperframes","rights":"publisher-site","note":"Preview of the Filmed Screen component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/form-fills-itself","slug":"form-fills-itself","name":"Form Fills Itself","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"ui","tags":["UI","form","onboarding","typing","hyperframes","remotion","capcut"],"summary":"A cursor tabs through a short form; fields type, validate and the submit button resolves to success.","description":"Built on [Signup Flow](https://github.com/heygen-com/hyperframes/tree/main/registry/components/signup-flow) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nClean card with labeled inputs; each field focuses with a ring, types at human cadence, gets a check; button goes loading → success.\n\n**When:** Show how fast sign-up or setup is (\"30 seconds to your first project\").\n\n**Watch out:** Do not type real-speed long emails; keep values short and speed typing up 2–3×.\n\n**Timing:** Each field 0.6–1.0 s; button loading 0.4 s; success check 0.4 s.\n\n**Also called:** signup flow, input typing, onboarding form\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add signup-flow\n```\nPair with `input-feedback` for a shake on a wrong value before the correct one.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/signup-flow\n// or compose @remocn/input + @remocn/button with state = f(frame)\n```\n\n### In CapCut\n\nRecord the real form; speed up typing segments 2–3× (Speed → Normal); add click SFX.\n\n### Ready-made components\n\n- [Signup Flow](https://skills.varg.ai/component/hf.signup-flow/) (hyperframes): npx hyperframes add signup-flow\n- [UI Signup Flow](https://skills.varg.ai/component/remocn.signup-flow/) (remocn): npx shadcn@latest add @remocn/signup-flow\n- [Input Feedback](https://skills.varg.ai/component/hf.input-feedback/) (hyperframes): npx hyperframes add input-feedback\n\n### Where this comes from\n\n- [Jitter: UI element templates](https://jitter.video/templates/ui-elements)\n- [Consensus: 5 tips to record the best product video](https://goconsensus.com/blog/5-crucial-tips-to-recording-the-best-product-video)","useWhen":["Show how fast sign-up or setup is (\"30 seconds to your first project\")."],"notFor":["Do not type real-speed long emails; keep values short and speed typing up 2–3×."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/signup-flow","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Signup Flow · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.signup-flow/","license":"Apache-2.0","note":"A composed signup flow with social action, email field, password field, and submit button"},{"role":"component","label":"UI Signup Flow · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.signup-flow/","license":"MIT","note":"A signup card composition: a real shadcn-style card (header, labeled Full Name / Email / Password / Confirm fields, primary + Google-outline buttons, sign-in footer) whose cursor fills each field top-to-bottom…"},{"role":"component","label":"Input Feedback · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.input-feedback/","license":"Apache-2.0","note":"A transitions.dev-inspired input feedback primitive with shake, clear affordance, and success state"},{"role":"source","label":"Jitter: UI element templates","kind":"link","url":"https://jitter.video/templates/ui-elements","license":"link-only"},{"role":"source","label":"Consensus: 5 tips to record the best product video","kind":"link","url":"https://goconsensus.com/blog/5-crucial-tips-to-recording-the-best-product-video","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":215,"text":"Form Fills Itself"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.signup-flow","remocn.signup-flow","hf.input-feedback"],"aliases":["signup flow","input typing","onboarding form"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f61de550d7bd/take-form-fills-itself.mp4","w":640,"h":360,"duration":5.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAdNJREFUeJx1U9Fu4jAQtNebUGhA6MQLPCBV4tva7zj1L64/dzpV5QEpCJMrkDj2jb0JNNzdSsBi787Ozq71z48dEWVakSHSMFLJtBhp1VvwQaz7GzwOfOuboLz3nIJjOr7lmjMejUY4Q47WN6B0G1Eul4trHBykBNLkFeJYd0hdKIo8ZObj/Vdd14Br2zbPc2Qy8xVotVrZupHC0oMOmtXQQBWdzmaz0+kkyXkyHAIUQJQsIg7JDoB8L8FisZD62+22qiq5Xa/XwhxkUU86+TfQDdF7cYAIInCMMXJ4p9oNKHIAE1KqEzsyQrJzLtYkQl+Sf53XNUyc4L8wApbXMtyoUVmWu105Hj8w03K57ET5ApGKRwT8ogp8FkKoGD+JfF2r8Xj29PRN8hvsiRpwkV2LtQ1Gr0VZ7hQhUtDPxx1LJ8EY6IJJuYSSVi3ta9t6NI4wBIeEItrxtU7kqbDgbG35/Pyy3++RWxSP0+kU1A6HQ1X9RtR8Pn97+xGInbTUt3wDCr1unPNmszkeLepPJpOiKOBYa8/nMyKKYor9OtcuTYD+O/6mcY0x319fRZfuefmAncFbTCEa1Jxrmc1g/HdAiLafn6U9/v3QeqU1IDLO7q7+AE8OSPlFeOa9AAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item signup-flow (Apache-2.0) in a host composition","page":"https://hyperframes.heygen.com/catalog/components/signup-flow","credit":"Rendered by varg · HyperFrames Signup Flow","rights":"generated","note":"The Signup Flow component used as its header comment describes, with demo copy","bytes":29840,"addedAt":"2026-10-28"}},{"id":"heygen-com/toggle-turns-feature-on","slug":"toggle-turns-feature-on","name":"Toggle Turns the Feature On","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"ui","tags":["UI","toggle","settings","feature","hyperframes","remotion","capcut"],"summary":"A cursor flips a settings switch and the result appears at once elsewhere in the UI.","description":"Built on [Settings Toggle Flow](https://github.com/heygen-com/hyperframes/tree/main/registry/components/settings-toggle-flow) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nSettings row with a switch; the thumb slides with a small overshoot, the track fills with accent, and a preview updates beside it.\n\n**When:** Features that are one click away: dark mode, AI assist, auto-sync.\n\n**Watch out:** Do not show the toggle without its effect; cut or pan to what changed within 0.5 s.\n\n**Timing:** Thumb 0.2–0.3 s back.out(2); effect 0.3–0.5 s after.\n\n**Also called:** switch flip, settings toggle, enable feature\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add settings-toggle-flow\n```\nOr `toggle-flip` for one oversized switch as a hero beat.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/switch\nconst on = spring({frame: frame-clickAt, fps, config:{damping:12, stiffness:200}});\n```\n\n### In CapCut\n\nRecord the real toggle, zoom 150% on it (keyframes), and add a click SFX on the frame it flips.\n\n### Ready-made components\n\n- [Settings Toggle Flow](https://skills.varg.ai/component/hf.settings-toggle-flow/) (hyperframes): npx hyperframes add settings-toggle-flow\n- [UI Switch](https://skills.varg.ai/component/remocn.switch/) (remocn): npx shadcn@latest add @remocn/switch\n- [Toggle Flip](https://skills.varg.ai/component/hf.toggle-flip/) (hyperframes): npx hyperframes add toggle-flip\n\n### Where this comes from\n\n- [Bohdan Motion: breakdown of the Claude Design launch video](https://x.com/bohdanmotion/status/2080610655237751033)\n- [Jitter: UI element templates](https://jitter.video/templates/ui-elements)","useWhen":["Features that are one click away: dark mode, AI assist, auto-sync."],"notFor":["Do not show the toggle without its effect; cut or pan to what changed within 0.5 s."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/settings-toggle-flow","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Settings Toggle Flow · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.settings-toggle-flow/","license":"Apache-2.0","note":"A composed settings flow with preference rows, toggle switches, and active-state feedback"},{"role":"component","label":"UI Switch · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.switch/","license":"MIT","note":"A switch whose checked/unchecked state is a pure function of the timeline; the track fill and sliding thumb are keyframed presets."},{"role":"component","label":"Toggle Flip · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.toggle-flip/","license":"Apache-2.0","note":"An oversized UI toggle switch that flips with real physicality: thumb overshoot, track color crossfade, and a soft press-compress before release. The reference prop of the ui-props family."},{"role":"source","label":"Bohdan Motion: breakdown of the Claude Design launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2080610655237751033","license":"link-only"},{"role":"source","label":"Jitter: UI element templates","kind":"link","url":"https://jitter.video/templates/ui-elements","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":215,"text":"Toggle Turns the Feature On"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.settings-toggle-flow","remocn.switch","hf.toggle-flip"],"aliases":["switch flip","settings toggle","enable feature"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d3a07254e19a/take-toggle-turns-feature-on.mp4","w":640,"h":360,"duration":5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAgFJREFUeJx1U02LE0EQ7a7pmWwSMwkhrMkiCCIi3lw2v2LxmP+4exFhf4dnb8GTl7ggxriT6ekqX9XkE9wi9HR6+r169arGf/+xIqLcO8qIPEIX7LE658jWNlgEq4hwwlafbPsojpnDHuoOLFnIAMgoMy5pGYHz4hTsNCXweBLIyRPrpbCH79ICUFVVyELjaqKsKArAlMV5YaNRWQ4AMYEGxzsf3EngECzL5RJ4kVTX9Yf374bDoTKwigAYSZMV5s7jjAiXe/3e9fVHbECUF0WwzFqvBuHOZvO3KPKtcqfniSzP71+PiKbh0Wg0uXwJy/b5JWTZw8OX+Xw+e/U6NnLaCiVC8UJaGACpSePxeDAYUN5piz0xUDUvFgt0eb3ZKrtBhI1o9x9Sccgwzf+0mEwuy7KMiS+6FwcqTMj93eeb+c3V7EoiswGRDiRKxC2X89beVJaTbnfohGKtknRO3M7a5PjT7W2e59sYAUrOM37mfTC9rDORoMmjNavH1Xq9Bng6mxZ5p25quGuiMFv07euf2XTaH2tpkmwmdSj2ZreVslVY9ke9zgsh+CVVrOBIoKwVlKJ783aYhxiT05H0xzk4ErVHdawbrtqW74aL/NP26QDAeY0KQQ920/Kf9rf3cMmZK9oya4l2Dl54Ogg47eRzRMfhaH05vCITbvJZv4vz+AfcRU8us2GcugAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item settings-toggle-flow (Apache-2.0) in a host composition","page":"https://hyperframes.heygen.com/catalog/components/settings-toggle-flow","credit":"Rendered by varg · HyperFrames Settings Toggle Flow","rights":"generated","note":"The Settings Toggle Flow component used as its header comment describes, with demo copy","bytes":26564,"addedAt":"2026-10-28"}},{"id":"Remocn/command-palette-pop","slug":"command-palette-pop","name":"Command Palette Pop","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"ui","tags":["UI","command palette","keyboard","search","hyperframes","remotion","capcut"],"summary":"⌘K opens a palette, a few letters filter the list, the highlight moves and Enter fires the action.","description":"Built on [UI Command Menu](https://remocn.dev/r/command-menu.json) by Kapish Dima (remocn), MIT. The write-up and recipes below are varg's.\n\nBackdrop dims, a centered palette scales from 96%, results filter as letters type, a highlight bar slides to the pick.\n\n**When:** Keyboard-first tools (Raycast, Linear-style apps), power-user features.\n\n**Watch out:** Do not leave the palette tiny in frame; zoom to ~60% of frame width so results are readable.\n\n**Timing:** Open 0.2 s (scale 0.96→1), typing 60–80 ms/char, highlight slide 0.15 s, close 0.15 s.\n\n**Also called:** cmd+k, command menu, spotlight search\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add menu-morph\n```\nBuild the list in HTML; tween the highlight `y` between rows with `power2.out`, 0.15 s.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/command-menu\n// npx shadcn@latest add @remocn/command-menu-item\n```\n\n### In CapCut\n\nRecord the real palette; add a keystroke overlay text \"⌘ K\" for 0.8 s when it opens.\n\n### Ready-made components\n\n- [UI Command Menu](https://skills.varg.ai/component/remocn.command-menu/) (remocn): npx shadcn@latest add @remocn/command-menu\n- [UI Command Menu Item](https://skills.varg.ai/component/remocn.command-menu-item/) (remocn): npx shadcn@latest add @remocn/command-menu-item\n- [Menu Morph](https://skills.varg.ai/component/hf.menu-morph/) (hyperframes): npx hyperframes add menu-morph\n- [Keystroke](https://skills.varg.ai/component/remocn.keystroke/) (remocn): npx shadcn@latest add @remocn/keystroke\n\n### Where this comes from\n\n- [Steve Lemuel: Raycast kinetic product motion (Figma + Jitter)](https://contra.com/p/llNMeeMX-raycast-kinetic-product-motion)\n- [KeyCastr: open-source keystroke visualizer](https://github.com/keycastr/keycastr)","useWhen":["Keyboard-first tools (Raycast, Linear-style apps), power-user features."],"notFor":["Do not leave the palette tiny in frame; zoom to ~60% of frame width so results are readable."],"publisher":{"name":"Kapish Dima · remocn","handle":"Remocn","kind":"community","verified":false,"url":"https://remocn.dev","avatar":"https://github.com/Remocn.png"},"source":{"url":"https://remocn.dev/r/command-menu.json","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"UI Command Menu · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.command-menu/","license":"MIT","note":"A ⌘K command palette whose opened/closed state is a pure function of the timeline; the panel zoom + backdrop dim are dialog-like keyframed presets. The search row reveals the typed query…"},{"role":"component","label":"UI Command Menu Item · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.command-menu-item/","license":"MIT","note":"A command-palette row whose idle/hover/press/selected state is a pure function of the timeline. Leading icon + label + trailing shortcut kbd…"},{"role":"component","label":"Menu Morph · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.menu-morph/","license":"Apache-2.0","note":"A transitions.dev-inspired hamburger and plus-menu morph primitive for compact action menus"},{"role":"component","label":"Keystroke · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.keystroke/","license":"MIT","note":"Physical keycaps rise in for each shortcut, press in real order with the modifiers held while the letter taps, spring back with a small capped overshoot, and leave after an idle hold…"},{"role":"source","label":"Steve Lemuel: Raycast kinetic product motion (Figma + Jitter)","kind":"link","url":"https://contra.com/p/llNMeeMX-raycast-kinetic-product-motion","license":"link-only"},{"role":"source","label":"KeyCastr: open-source keystroke visualizer","kind":"link","url":"https://github.com/keycastr/keycastr","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":215,"text":"Command Palette Pop"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["remocn.command-menu","remocn.command-menu-item","hf.menu-morph","remocn.keystroke"],"aliases":["cmd+k","command menu","spotlight search"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e5dc81a9ee9b/take-command-palette-pop.mp4","w":640,"h":360,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAepJREFUeJx1kk9WGzEMxiWP85+GsCDp675begB6gd6ju644CefqtlyAVTZMCiQpwxuPpX7SZAZIi/OeR7Glnz5J5tv1XQhhwBSKEBjLNtjYiSj43i5Rxa6qkmHaV9xOSiISu1A6onR/qSUijpUsmCwl4vENgAcOQsocu/BDWubuABpDZzlIxTCBWNxNXaB7EytHerVahhso16RFyLB8CKMGEShQICxbAmVHHdYbUL92u91gUBQFOM1oNELyjEUhNw36MxwO/w15A9Iuxc3Nr5QSEHVdT6YTjGG73U5ns4f7h/Pz5cWXC2+2HoNQvAarx5RnQUWXl19x3M+uT4NbLGwI6Q9VHGRg1IsrBs1mATs1ydol4i0vvDUZju3YvevSjt+J1vjotrOIwS/YHgUeA37Z/o42948AzedzpbqV31OyTZBbevRsYqM2bZolox4csCaUVq6n19c/4XN19W2x2nnI4KDFm+RIeWm2z0XUXqPpAjB4pueKqqcGZcKQQykZ/qbFGiV9y19AdoS3moW9zaIF3E6Xf77/+AwHGClRjBF67Q14Ra2W/4xf/Aa0TblZLM6q6mm/Xy9XHzCmze/b1cdPZVkiHa6aV4h3H2RVN3E82z/XxHF8ctZgCIHGJ6PHfRWGE+io6lTE48C/e4d8BpY3PuIAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item menu-morph (Apache-2.0) in a host composition","page":"https://hyperframes.heygen.com/catalog/components/menu-morph","credit":"Rendered by varg · HyperFrames Menu Morph","rights":"generated","note":"The Menu Morph component used as its header comment describes, with demo copy","bytes":18015,"addedAt":"2026-10-28"}},{"id":"heygen-com/pinned-mock-changing-states","slug":"pinned-mock-changing-states","name":"Pinned Mock, Changing States","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"ui","tags":["UI","tabs","features","walkthrough","hyperframes","remotion","capcut"],"summary":"One product frame stays put while tabs or captions switch it through several feature states.","description":"Built on [Sticky Mock Swap](https://github.com/heygen-com/hyperframes/tree/main/registry/components/sticky-mock-swap) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nThe mock holds center; a tab indicator slides between labels and the screen cross-fades to the matching state.\n\n**When:** Walk through 3–5 features quickly without re-establishing the UI each time.\n\n**Watch out:** Do not move the mock between states; stillness is what makes the changes readable.\n\n**Timing:** Indicator slide 0.3 s, screen cross-fade 0.25 s, 2–3 s per state.\n\n**Also called:** sticky mock, feature tabs, tabbed walkthrough\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add sticky-mock-swap\nnpx hyperframes add tabs-slide-indicator\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/tabs\nconst active = Math.min(states.length-1, Math.floor(frame/(fps*2.5)));\n```\n\n### In CapCut\n\nStack the state screenshots back to back on one track with 0.25 s \"Dissolve\" transitions; add a tab bar overlay with a moving highlight shape.\n\n### Ready-made components\n\n- [Sticky Mock Swap](https://skills.varg.ai/component/hf.sticky-mock-swap/) (hyperframes): npx hyperframes add sticky-mock-swap\n- [Tabs Slide Indicator](https://skills.varg.ai/component/hf.tabs-slide-indicator/) (hyperframes): npx hyperframes add tabs-slide-indicator\n- [Animated Background](https://skills.varg.ai/component/motionprimitives.animated-background/) (motion-primitives): npx motion-primitives@latest add animated-background\n- [UI Tabs](https://skills.varg.ai/component/remocn.tabs/) (remocn): npx shadcn@latest add @remocn/tabs\n\n### Where this comes from\n\n- [Bohdan Motion: X launch video, 40% of runtime on real UI](https://x.com/bohdanmotion/status/2079611760894431568)\n- [Jitter: UI element templates](https://jitter.video/templates/ui-elements)","useWhen":["Walk through 3–5 features quickly without re-establishing the UI each time."],"notFor":["Do not move the mock between states; stillness is what makes the changes readable."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/sticky-mock-swap","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Sticky Mock Swap · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.sticky-mock-swap/","license":"Apache-2.0","note":"A pinned product mock cross-fades through accent-tinted feature states while matching captions rise, hold, and exit beside it."},{"role":"component","label":"Tabs Slide Indicator · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.tabs-slide-indicator/","license":"Apache-2.0","note":"A pill indicator transition that slides between active tabs"},{"role":"component","label":"Animated Background · motion-primitives","kind":"link","url":"https://skills.varg.ai/component/motionprimitives.animated-background/","license":"MIT","note":"A rounded highlight pill slides between tab items as the active tab changes"},{"role":"component","label":"UI Tabs · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.tabs/","license":"MIT","note":"A tabs widget whose active-tab state is a pure function of the timeline; the sliding indicator, label colors, and panel crossfade are keyframed/derived presets."},{"role":"source","label":"Bohdan Motion: X launch video, 40% of runtime on real UI","kind":"link","url":"https://x.com/bohdanmotion/status/2079611760894431568","license":"link-only"},{"role":"source","label":"Jitter: UI element templates","kind":"link","url":"https://jitter.video/templates/ui-elements","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":215,"text":"Pinned Mock, Changing States"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.sticky-mock-swap","hf.tabs-slide-indicator","motionprimitives.animated-background","remocn.tabs"],"aliases":["sticky mock","feature tabs","tabbed walkthrough"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ee9214ed3536/take-pinned-mock-changing-states.mp4","w":640,"h":360,"duration":6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAWNJREFUeJytUstOw0AM9D6yKX1E3Dgg+P9/QkL0wgHRQ2jTTbprm0naAi2P9IC1WmkfHs+MbSbTOf1H+NEfomqNGQcSpRDCYnYjIjjzsCOQjCj8oqqq+u15tXol044zmpQLVe2ku66qAcE0m6brOqZcN7Uc0ceBxKbMrJJD4cja/iEUOCuTqohhNuIuAUpti7Jiyk2TyrK3vwxF4SXuNsZYjc2gOmtPzYE7KHvvzoFQOOcsKrYolHJKqU+jjAQ4TQpmzrvJ/d2tc66J69l8jk9Py+XXJhwYoYIlS2qdDeFqtpfLnLex7l23hwS0RWgahjhr5Wn7jbDsYqz3JzA6PuTM7ePyAdjQtL+H8t+BMDHkrQ+Q5JQEqij16kCWQNZj/WX2B/NehLXBOjVIRq/UiselXDKQNJjNkrCTidsttzEOqAwJzIIyOWEUR0bJg03Ku7R++ebLZ4CUGyPVMzrx/wIVP8Y7hL/NErwt/FkAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item sticky-mock-swap (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/sticky-mock-swap","credit":"Rendered by varg · HyperFrames Sticky Mock Swap","rights":"generated","note":"The Sticky Mock Swap component rendered as installed (npx hyperframes add sticky-mock-swap), defaults only","bytes":25390,"addedAt":"2026-10-28"}},{"id":"heygen-com/liquid-glass-ui-layer","slug":"liquid-glass-ui-layer","name":"Liquid Glass UI Layer","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"ui","tags":["glass","UI","iOS","notification","hyperframes","remotion","capcut"],"summary":"Frosted, refractive glass cards and toolbars float over a colorful scene or photo.","description":"Built on [Liquid Glass Notification](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/liquid-glass-notification) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nRounded panels with background blur, a thin bright rim and slight edge refraction; content stays sharp on top.\n\n**When:** Consumer and Apple-platform products; notification or widget beats over imagery.\n\n**Watch out:** Do not stack glass on a flat grey background; glass needs color and detail behind it to read.\n\n**Timing:** Panels drift 0.5–1 s, power2.out; keep blur radius stable across frames.\n\n**Also called:** glass panels, frosted UI, iOS 26 glass\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add liquid-glass-notification\n```\nOr `liquid-glass-widgets` / `vfx-liquid-glass` for shader-based refraction.\n\n### In Remotion\n\n```tsx\n<div style={{backdropFilter:'blur(24px) saturate(1.6)', background:'rgba(255,255,255,0.18)', border:'1px solid rgba(255,255,255,0.4)', borderRadius:28}}/>\n```\n\n### In CapCut\n\nAdd a rounded rectangle shape, set opacity 25%, and on the clip below apply Mask + Blur in the same area.\n\n### Ready-made components\n\n- [Liquid Glass Notification](https://skills.varg.ai/component/hf.liquid-glass-notification/) (hyperframes): npx hyperframes add liquid-glass-notification\n- [Liquid Glass](https://skills.varg.ai/component/hf.vfx-liquid-glass/) (hyperframes): npx hyperframes add vfx-liquid-glass\n- [Liquid Glass Widgets](https://skills.varg.ai/component/hf.liquid-glass-widgets/) (hyperframes): npx hyperframes add liquid-glass-widgets\n\n### Where this comes from\n\n- [zero on X: Apple-keynote launch film prompt (Screen Studio zoom, no crossfades)](https://x.com/twoclipping/status/2103835273813496100)","useWhen":["Consumer and Apple-platform products; notification or widget beats over imagery."],"notFor":["Do not stack glass on a flat grey background; glass needs color and detail behind it to read."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/liquid-glass-notification","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Liquid Glass Notification · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.liquid-glass-notification/","license":"Apache-2.0","note":"Frosted glass notification cards floating over an aurora shader background"},{"role":"component","label":"Liquid Glass · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.vfx-liquid-glass/","license":"Apache-2.0","note":"VFX composition block"},{"role":"component","label":"Liquid Glass Widgets · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.liquid-glass-widgets/","license":"Apache-2.0","note":"Frosted glass stat cards, showcase panel and pill chips over an aurora shader background"},{"role":"source","label":"zero on X: Apple-keynote launch film prompt (Screen Studio zoom, no crossfades)","kind":"link","url":"https://x.com/twoclipping/status/2103835273813496100","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":215,"text":"Liquid Glass UI Layer"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.liquid-glass-notification","hf.vfx-liquid-glass","hf.liquid-glass-widgets"],"aliases":["glass panels","frosted UI","iOS 26 glass"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/liquid-glass-notification.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/liquid-glass-notification.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/liquid-glass-notification.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/liquid-glass-notification","credit":"Liquid Glass Notification · hyperframes","rights":"publisher-site","note":"Preview of the Liquid Glass Notification component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/auto-zoom-on-click","slug":"auto-zoom-on-click","name":"Auto Zoom on Every Click","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cursors","tags":["cursor","zoom","screen recording","click","ffmpeg","hyperframes","remotion","capcut"],"summary":"The camera eases in toward each upcoming click, trails the cursor on a spring, and eases out after.","description":"Built on [Zoom Follow Cursor](https://github.com/heygen-com/hyperframes/tree/main/registry/components/cursor-zoom-follow) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nZoom begins slightly before the click, the frame follows the cursor smoothly, each click gets a ring; between actions the camera returns to full view.\n\n**When:** Any cursor-driven screen recording; it is the default polish for SaaS demos.\n\n**Watch out:** Do not track every mouse jitter; smooth the path and only re-target when the cursor dwells.\n\n**Timing:** Lead the click by 0.3–0.5 s, zoom 1.5–2×, follow spring damping ~20, ease out 0.6 s.\n\n**Also called:** screen studio zoom, zoom to cursor, click zoom\n\n### In FFmpeg\n\n```bash\n# zoom around a known click (x=1380,y=420) from 4.0 s to 6.0 s\n-vf \"zoompan=z='if(between(it,3.6,6),min(zoom+0.04,1.8),max(zoom-0.04,1))':x='1380-iw/zoom/2':y='420-ih/zoom/2':d=1:s=1920x1080:fps=60\"\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add cursor-zoom-follow\n```\nSet slots: `image`, `zoom` (1.8), `click1_x/y`, `click2_x/y`, `click3_x/y`, `accent`.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/cursor\nconst z = clicks.reduce((acc,c)=> acc + interpolate(frame,[c.f-15,c.f,c.f+40,c.f+58],[0,0.8,0.8,0],{extrapolateLeft:'clamp',extrapolateRight:'clamp'}),1);\nconst origin = `${smoothX}px ${smoothY}px`;\n```\n\n### In CapCut\n\nDesktop: select the recording → Video → Basic → keyframe Scale/Position around each click; use Graphs → \"Ease in-out\".\n\n### Ready-made components\n\n- [Zoom Follow Cursor](https://skills.varg.ai/component/hf.cursor-zoom-follow/) (hyperframes): npx hyperframes add cursor-zoom-follow\n- [UI Cursor](https://skills.varg.ai/component/remocn.cursor/) (remocn): npx shadcn@latest add @remocn/cursor\n- [UI Focus Zoom](https://skills.varg.ai/component/hf.ui-focus-zoom/) (hyperframes): npx hyperframes add ui-focus-zoom\n\n### Where this comes from\n\n- [Screen Studio: auto zoom, cursor smoothing, click effects](https://screen.studio/)\n- [OpenScreen docs: creating demos (zoom regions from cursor dwell)](https://www.mintlify.com/siddharthvaddem/openscreen/guides/creating-demos)\n- [zero on X: Apple-keynote launch film prompt (Screen Studio zoom, no crossfades)](https://x.com/twoclipping/status/2103835273813496100)","useWhen":["Any cursor-driven screen recording; it is the default polish for SaaS demos."],"notFor":["Do not track every mouse jitter; smooth the path and only re-target when the cursor dwells."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cursor-zoom-follow","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Zoom Follow Cursor · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cursor-zoom-follow/","license":"Apache-2.0","note":"Screen-recording auto-zoom: the camera pushes in toward each upcoming click, trails the cursor on a smooth spring, marks every click with a press and a ring, then eases back out to the full screen as the cursor leaves."},{"role":"component","label":"UI Cursor · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.cursor/","license":"MIT","note":"An animated cursor that moves between waypoints, clicks (ripple), and drags. The Cursor renderer is a pure function of a numeric CursorStyle channel; useCursorPath reads the frame and eases the path, ripple…"},{"role":"component","label":"UI Focus Zoom · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.ui-focus-zoom/","license":"Apache-2.0","note":"A full app surface establishes with one settle, then the camera zooms and pans to an anchored region on its cue and holds the zoomed state, with an optional soft focus halo at the anchor…"},{"role":"source","label":"Screen Studio: auto zoom, cursor smoothing, click effects","kind":"link","url":"https://screen.studio/","license":"link-only"},{"role":"source","label":"OpenScreen docs: creating demos (zoom regions from cursor dwell)","kind":"link","url":"https://www.mintlify.com/siddharthvaddem/openscreen/guides/creating-demos","license":"link-only"},{"role":"source","label":"zero on X: Apple-keynote launch film prompt (Screen Studio zoom, no crossfades)","kind":"link","url":"https://x.com/twoclipping/status/2103835273813496100","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":260,"text":"Auto Zoom on Every Click"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.cursor-zoom-follow","remocn.cursor","hf.ui-focus-zoom"],"aliases":["screen studio zoom","zoom to cursor","click zoom"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e57251ca12d3/take-auto-zoom-on-click.mp4","w":640,"h":360,"duration":5.8,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAfZJREFUeJx9U01v00AQ3Y/xV5yECCVCBImqkknEAXFC/Qm9wA/Kv4ArfwohTvScE6pEmlDHXu/O8mw3rh1URj6s9828mXkzK3eHXDxtERGzu739xcyz2Ww6neaFdewApaPky+evm80my1ZlWdJ/WGCltUrKZ8/n3nutVF4Yx76FisJ8/HS9Wl9SQJ49aaVxiyQ4SPkQ7z336bQk3DC4pCLdofz64lWWXfiGmUYxNfRMpKw1Nc6cJInsWIXA2VpbVU4pqbUgirz3p5zc+tHJVR2Pxc3Nz/1+f3X1QSn16HoypfR2u93tfq/X68kkRb4+Sm2AZRcm8WqVgSKO4zMn7yU+ZrtcvlwuXxCRc+4sDUG+piLtLEdRirOxoK5DOycW0MdD5jAM0THGZmyFJvpFUxI9Dg7eRVFUVWWMwaQR1kEowVp9v787HO4Wi0Wapme9D8bfEoEFXNC7I2qFx7DAPh7HQRC0l32uAREEwtYB7kYGrZrfGvRS/MmLyuvYQ1kbBJToJyuSZWkUEvr2lwNVG3I7V8s0SkelA4aRSzG0jkhxM6pv33+s31zO53OIAjlb/q7B/D4/mnI8mUwiQpkDsVtpqub5AH3/7i2k6XfXV7DejCCuWBhXvwklehqVtl6ZEM+jEQ/jaGPEP6alYFclwsKn2bPBrv0FOLwhmV/15KYAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item cursor-zoom-follow (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/cursor-zoom-follow","credit":"Rendered by varg · HyperFrames Zoom Follow Cursor","rights":"generated","note":"The Zoom Follow Cursor component rendered as installed (npx hyperframes add cursor-zoom-follow), defaults only","bytes":111847,"addedAt":"2026-10-28"}},{"id":"heygen-com/oversized-look-here-cursor","slug":"oversized-look-here-cursor","name":"Oversized Look-Here Cursor","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cursors","tags":["cursor","pointer","guide","launch film","hyperframes","remotion","capcut"],"summary":"A macOS arrow at ~3–4× normal size glides in and lands its tip on what matters.","description":"Built on [Oversized Cursor](https://github.com/heygen-com/hyperframes/tree/main/registry/components/oversized-cursor) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA crisp, oversized pointer with a soft shadow enters from off-frame in one arc, presses with a small squash, and leaves.\n\n**When:** Launch films where the cursor is a character guiding the eye, especially on mocked UI.\n\n**Watch out:** Do not use a tiny system cursor in a 1080p film; it disappears on phones.\n\n**Timing:** Entry 0.4–0.9 s power3.out; press scale 0.84 in 0.1 s, release 0.22 s; exit 0.5–0.7 s power2.in.\n\n**Also called:** big cursor, hero pointer, guide cursor\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add oversized-cursor\n```\n```js\ntl.fromTo(\"#cur\",{top:\"118%\"},{top:\"42%\",left:\"61%\",duration:0.85,ease:\"power3.out\",immediateRender:false},0.25)\n  .to(\"#cur\",{scale:0.84,duration:0.1,ease:\"power2.in\",transformOrigin:\"21% 14%\"},1.2)\n  .to(\"#cur\",{scale:1,duration:0.22,ease:\"power2.out\"},1.3);\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/simulated-cursor\n<Img src={arrow} style={{width:'7cqw', transform:`translate(${x}px,${y}px) scale(${press})`}}/>\n```\n\n### In CapCut\n\nStickers → search \"cursor\"/\"mouse\", scale it up ~3×, keyframe Position along the path with ease-out; add a click SFX.\n\n### Ready-made components\n\n- [Oversized Cursor](https://skills.varg.ai/component/hf.oversized-cursor/) (hyperframes): npx hyperframes add oversized-cursor\n- [Press Ripple](https://skills.varg.ai/component/hf.press-ripple/) (hyperframes): npx hyperframes add press-ripple\n- [Spotlight Card](https://skills.varg.ai/component/hf.spotlight-card/) (hyperframes): npx hyperframes add spotlight-card\n\n### Where this comes from\n\n- [HyperFrames skill: oversized cursor motion conventions](https://tessl.io/registry/skills/github/heygen-com/hyperframes/oversized-cursor--oversized-cursor)\n- [zero on X: Apple-keynote launch film prompt (Screen Studio zoom, no crossfades)](https://x.com/twoclipping/status/2103835273813496100)","useWhen":["Launch films where the cursor is a character guiding the eye, especially on mocked UI."],"notFor":["Do not use a tiny system cursor in a 1080p film; it disappears on phones."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/oversized-cursor","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Oversized Cursor · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.oversized-cursor/","license":"Apache-2.0","note":"The look-here pointer for a video: the macOS arrow at 3.5x its normal size lands its tip on one control, clicks it on, settles just below it so the result stays in view, then exits off-screen"},{"role":"component","label":"Press Ripple · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.press-ripple/","license":"Apache-2.0","note":"A cursor decel-arrives from off-stage, lands slightly off-center on a caller-positioned target, compresses with it in lockstep, releases with two small click rings while the label swaps to a check…"},{"role":"component","label":"Spotlight Card · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.spotlight-card/","license":"Apache-2.0","note":"A card with a scripted cursor spotlight and lit border."},{"role":"source","label":"HyperFrames skill: oversized cursor motion conventions","kind":"link","url":"https://tessl.io/registry/skills/github/heygen-com/hyperframes/oversized-cursor--oversized-cursor","license":"link-only"},{"role":"source","label":"zero on X: Apple-keynote launch film prompt (Screen Studio zoom, no crossfades)","kind":"link","url":"https://x.com/twoclipping/status/2103835273813496100","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":260,"text":"Oversized Look-Here Cursor"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.oversized-cursor","hf.press-ripple","hf.spotlight-card"],"aliases":["big cursor","hero pointer","guide cursor"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/df088d35408f/take-oversized-look-here-cursor.mp4","w":640,"h":360,"duration":2.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAzlJREFUeJwlU01vHEUQre6u7tmd2Z3d9UcUW4k/SIhkHAESuYRLLogDHDj5wAEk7vyj3DhFcI8ESIkQFiIILBznYJusLAfHK3sN8e7OznRPf1FrSqPp6VF11XuvXrMPH3yEUiJElNhuYJ7nt250sjQtq+r57u7T7R1r3e315Y2NjcIYXWnGKREXF3qUeX76qjc3l0vb7/dRQEiQtRtKKdlqYpKwdhP39/d++ePg8LCvo4wx7uz1zy6mn3x8v05VoU3WyjZXu9eXrte3uyH48ai8fPMvKg4SIgcvuUy562btwXDy6LvHo5or1WhCcC4IbAzOL5788OPW1tZoPPSh/nswcMDu3elZC4q34q2bGGzpmLNcoAiyyVPpcpV2m1B4AQAxxEABjvi8GhTPdva++uxdrbVzLs89uCl4u5Dj6vISSmYkBBlYElnGoJe4Wkk6CiC8pzcEYNF7IggMtp/9+fWXd++8s27LYdps2jQJIVEWalvhg402yXMtZ51OJ10U8wv50WTBEFXvOAUEwcADI1gcuLbuxfHwrffu+4k1jAkVWQBf+Kqo8PiSKPiLstkq+IqPXEg9LpNwhWVGKv7/MdtDzJS4+fYHmC23krIqSxyNJ0WlL4XWDDt5lxpLksna3/bh+Pufz0e1aC/F0YAREE5TDereF71u9+ynhyUwMzw6+H1yfnLKGGuLhndEe9YGf939q5xOCx2cdxMDxpgGiysrK6dnQ2MdyRMh1i8e9zY3196/S856+M32eDwejkySJAudmJEXMjsr9PzwNSGKVJ9xwZgUwjtdVdP1teWTk5OyZpTk9T+tMP1861Oox0nzUjXi8o3E+xkQpUwQnkyLDcm5EMHTf9peyQLh9flZu9EUvNFOXNZqJSp5ebD37aOCqh6+HKdZungteOdosuNyKjgSChSckedsDOwqEJE8qATWPtLjApD2iJoYHp0cz8/Pra1mKNCBIfW4UGZao+SkL16NAxRi8IEho5o2QG1q7yvgLAInM7lQc8E5ito6EmiuN2cMUfCMV8SCM9DaIxOcUCLnBMfWhtZkdohrTTb0KMRVI2rgRtO6rOkywZtJwQRUlabLToq0UyOE/A/xptWCMVNYNQAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item oversized-cursor (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/oversized-cursor","credit":"Rendered by varg · HyperFrames Oversized Cursor","rights":"generated","note":"The Oversized Cursor component rendered as installed (npx hyperframes add oversized-cursor), defaults only","bytes":109864,"addedAt":"2026-10-28"}},{"id":"heygen-com/click-ripple-press","slug":"click-ripple-press","name":"Click Ripple and Button Press","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cursors","tags":["cursor","click","ripple","feedback","hyperframes","remotion","capcut"],"summary":"Every click shows a quiet expanding ring while the clicked button presses in and responds.","description":"Built on [Press Ripple](https://github.com/heygen-com/hyperframes/tree/main/registry/components/press-ripple) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA thin ring grows from the cursor tip and fades; the button dips to 0.94 scale in sync and returns, then shows its new state.\n\n**When:** Make clicks legible in recordings with no sound or when cursor moves are fast.\n\n**Watch out:** Do not use big colorful bursts on every click; save a celebratory burst for the final success.\n\n**Timing:** Ring 0.35–0.5 s ease-out to ~3× size; button press 0.1 s down, 0.2 s up.\n\n**Also called:** click effect, ripple, tap feedback\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add press-ripple\n```\nTarget the button with the same `t` as the cursor press so both react on one frame.\n\n### In Remotion\n\n```tsx\nconst r = interpolate(frame,[clickAt,clickAt+12],[0,1],{extrapolateLeft:'clamp',extrapolateRight:'clamp'});\n<div style={{width:40,height:40,borderRadius:99,border:'2px solid #fff',transform:`scale(${1+r*2})`,opacity:1-r}}/>\n```\n\n### In CapCut\n\nStickers → search \"click\"/\"tap\" ripple; place on each click frame; Screen Studio exports have this built in.\n\n### Ready-made components\n\n- [Press Ripple](https://skills.varg.ai/component/hf.press-ripple/) (hyperframes): npx hyperframes add press-ripple\n- [Simulated Cursor](https://skills.varg.ai/component/remocn.simulated-cursor/) (remocn): npx shadcn@latest add @remocn/simulated-cursor\n- [Success Check](https://skills.varg.ai/component/hf.success-check/) (hyperframes): npx hyperframes add success-check\n- [UI Button](https://skills.varg.ai/component/remocn.button/) (remocn): npx shadcn@latest add @remocn/button\n\n### Where this comes from\n\n- [Screen Studio: auto zoom, cursor smoothing, click effects](https://screen.studio/)\n- [HyperFrames skill: oversized cursor motion conventions](https://tessl.io/registry/skills/github/heygen-com/hyperframes/oversized-cursor--oversized-cursor)","useWhen":["Make clicks legible in recordings with no sound or when cursor moves are fast."],"notFor":["Do not use big colorful bursts on every click; save a celebratory burst for the final success."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/press-ripple","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Press Ripple · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.press-ripple/","license":"Apache-2.0","note":"A cursor decel-arrives from off-stage, lands slightly off-center on a caller-positioned target, compresses with it in lockstep, releases with two small click rings while the label swaps to a check…"},{"role":"component","label":"Simulated Cursor · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.simulated-cursor/","license":"MIT","note":"Animated mouse cursor moving between waypoints with click ripple feedback."},{"role":"component","label":"Success Check · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.success-check/","license":"Apache-2.0","note":"A success check primitive with ring pop, path draw, and subtle rotate blur"},{"role":"component","label":"UI Button · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.button/","license":"MIT","note":"A button whose idle/hover/press/loading/success state is a pure function of the timeline; the loading state composes the Spinner motion atom."},{"role":"source","label":"Screen Studio: auto zoom, cursor smoothing, click effects","kind":"link","url":"https://screen.studio/","license":"link-only"},{"role":"source","label":"HyperFrames skill: oversized cursor motion conventions","kind":"link","url":"https://tessl.io/registry/skills/github/heygen-com/hyperframes/oversized-cursor--oversized-cursor","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":260,"text":"Click Ripple and Button Press"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.press-ripple","remocn.simulated-cursor","hf.success-check","remocn.button"],"aliases":["click effect","ripple","tap feedback"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/25ca11ee14d4/take-click-ripple-press.mp4","w":640,"h":360,"duration":2.4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAGVJREFUeJxj5ODiYaAGYKGKKSPdoL///gFJRkZGJkZGMg1iZmZh4eQQFhbhYGd/++bN5w8f/v37S6aLgG5gY2URFhYCGoRfJT6D/v798/fLl3u3bwMRkEu+1yAAv34SDCISDGODAEJIGmzxUrBmAAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item press-ripple (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/press-ripple","credit":"Rendered by varg · HyperFrames Press Ripple","rights":"generated","note":"The Press Ripple component rendered as installed (npx hyperframes add press-ripple), defaults only","bytes":8871,"addedAt":"2026-10-28"}},{"id":"Remocn/shortcut-keycaps-overlay","slug":"shortcut-keycaps-overlay","name":"Shortcut Keycaps Overlay","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cursors","tags":["keyboard","shortcut","keystroke","tutorial","hyperframes","remotion","capcut"],"summary":"Physical-looking keycaps rise at the bottom of the frame and press in the real order when a shortcut is used.","description":"Built on [Keystroke](https://remocn.dev/r/keystroke.json) by Kapish Dima (remocn), MIT. The write-up and recipes below are varg's.\n\nRounded keycaps (⌘, ⇧, K) appear bottom-center, modifiers stay held while the letter taps, then the row fades.\n\n**When:** Keyboard-driven tools and tutorials where the shortcut is the lesson.\n\n**Watch out:** Do not show every keystroke while typing text; only shortcuts and modifier combos.\n\n**Timing:** Keys rise 0.2 s with 40 ms stagger, press 0.08 s, hold 0.8–1.2 s, fade 0.2 s.\n\n**Also called:** keystroke overlay, show shortcuts, keycaps\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add badge-pop\n```\nBuild keycaps as `<kbd>` elements; `tl.from(\".kbd\",{y:30,opacity:0,stagger:0.04,duration:0.2})` then press the letter with `scale:0.92`.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/keystroke\n<Keystroke keys={['⌘','K']} />\n```\n\n### In CapCut\n\nText → Text templates → search \"keyboard\"/\"key\"; or record with KeyCastr/Screen Studio \"Show shortcuts\" on.\n\n### Ready-made components\n\n- [Keystroke](https://skills.varg.ai/component/remocn.keystroke/) (remocn): npx shadcn@latest add @remocn/keystroke\n- [Badge Pop](https://skills.varg.ai/component/hf.badge-pop/) (hyperframes): npx hyperframes add badge-pop\n\n### Where this comes from\n\n- [KeyCastr: open-source keystroke visualizer](https://github.com/keycastr/keycastr)\n- [Screen Studio: auto zoom, cursor smoothing, click effects](https://screen.studio/)","useWhen":["Keyboard-driven tools and tutorials where the shortcut is the lesson."],"notFor":["Do not show every keystroke while typing text; only shortcuts and modifier combos."],"publisher":{"name":"Kapish Dima · remocn","handle":"Remocn","kind":"community","verified":false,"url":"https://remocn.dev","avatar":"https://github.com/Remocn.png"},"source":{"url":"https://remocn.dev/r/keystroke.json","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Keystroke · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.keystroke/","license":"MIT","note":"Physical keycaps rise in for each shortcut, press in real order with the modifiers held while the letter taps, spring back with a small capped overshoot, and leave after an idle hold…"},{"role":"component","label":"Badge Pop · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.badge-pop/","license":"Apache-2.0","note":"A transitions.dev-inspired notification badge pop with elastic scale and count reveal"},{"role":"source","label":"KeyCastr: open-source keystroke visualizer","kind":"link","url":"https://github.com/keycastr/keycastr","license":"link-only"},{"role":"source","label":"Screen Studio: auto zoom, cursor smoothing, click effects","kind":"link","url":"https://screen.studio/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":260,"text":"Shortcut Keycaps Overlay"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["remocn.keystroke","hf.badge-pop"],"aliases":["keystroke overlay","show shortcuts","keycaps"]}},{"id":"heygen-com/named-agent-cursor","slug":"named-agent-cursor","name":"Named Agent Cursor","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cursors","tags":["agent","cursor","AI","computer use","hyperframes","remotion","capcut"],"summary":"A cursor with an accent name tag (\"Claude\", \"Agent\") moves and clicks on its own, typing each step.","description":"Built on [Agent Cursor](https://github.com/heygen-com/hyperframes/tree/main/registry/components/agent-cursor) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA colored arrow with a pill label like a multiplayer cursor; the label shows the current step (\"Opening settings…\").\n\n**When:** AI agents that operate a UI: computer use, browser agents, design agents.\n\n**Watch out:** Do not let the agent cursor look like the user's; give it a distinct color and label.\n\n**Timing:** Moves 0.5–0.8 s power2.inOut, label text swaps 0.25 s, dwell 0.4 s before each click.\n\n**Also called:** AI cursor, agent pointer, labeled cursor\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add agent-cursor\n```\nFeed the step list as variables; the label types each step before the click.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/cursor\n<div style={{transform:`translate(${x}px,${y}px)`}}><Arrow color=\"#7C3AED\"/><span className=\"pill\">{steps[i]}</span></div>\n```\n\n### In CapCut\n\nCursor sticker + a Text pill grouped as a compound clip; keyframe Position; change the pill text per step.\n\n### Ready-made components\n\n- [Agent Cursor](https://skills.varg.ai/component/hf.agent-cursor/) (hyperframes): npx hyperframes add agent-cursor\n- [Multiplayer Cursors](https://skills.varg.ai/component/hf.multiplayer-cursors/) (hyperframes): npx hyperframes add multiplayer-cursors\n- [Avatar Group Hover](https://skills.varg.ai/component/hf.avatar-group-hover/) (hyperframes): npx hyperframes add avatar-group-hover\n\n### Where this comes from\n\n- [Cursor 3 Design Mode and its launch video](https://pasqualepillitteri.it/en/news/3794/cursor-design-mode-what-it-is-how-it-works-cursor-3)\n- [Bohdan Motion: breakdown of the Claude Design launch video](https://x.com/bohdanmotion/status/2080610655237751033)","useWhen":["AI agents that operate a UI: computer use, browser agents, design agents."],"notFor":["Do not let the agent cursor look like the user's; give it a distinct color and label."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/agent-cursor","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Agent Cursor · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.agent-cursor/","license":"Apache-2.0","note":"An AI agent operating a UI: a cursor with an accent name label that types out each step, clicks each target with a small ring, and ends on a check."},{"role":"component","label":"Multiplayer Cursors · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.multiplayer-cursors/","license":"Apache-2.0","note":"Labeled collaborator cursors with token-derived colors and soft glows drift from spread positions into a shared center zone, proving live multiplayer presence."},{"role":"component","label":"Avatar Group Hover · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.avatar-group-hover/","license":"Apache-2.0","note":"A distance-falloff avatar group lift with bouncy hover return"},{"role":"source","label":"Cursor 3 Design Mode and its launch video","kind":"link","url":"https://pasqualepillitteri.it/en/news/3794/cursor-design-mode-what-it-is-how-it-works-cursor-3","license":"link-only"},{"role":"source","label":"Bohdan Motion: breakdown of the Claude Design launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2080610655237751033","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":260,"text":"Named Agent Cursor"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.agent-cursor","hf.multiplayer-cursors","hf.avatar-group-hover"],"aliases":["AI cursor","agent pointer","labeled cursor"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/6e36e9853505/take-named-agent-cursor.mp4","w":640,"h":360,"duration":4.8,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAA1RJREFUeJwlk1tvG0UYhue0O97ZtddOfIhbHDAOatPKqXtQS2n/AFJvueUn8GP6JxBXXMINkThcBCKkpCARUih24ygh9XFP49nZmWEcXmm0q9Xs+73zfN/AL15+Y4wBAEMIPSRXq9Xu268wxqs0Hg1H375OwjCErg8A2PQJY37j/otu94MLcfHq+Hh29L3djzu1er1OqhSDa1kjH+tpFo8nQmvFoKjV2910JvM8hVCpQusCAIJE7IG85Yc3ws3RcjIYDGSnPB6PSY2itcu1kYMJqAT1m37G+ekwjeOYuSVIvaJA83mkWckmV9ElA9uMtQPADCSbjRZplS/Pzki1BNeyRggxZBbj8/H4dGdnJ5zQaP5v66MHV1dXKJ5SjBxCciEAnzHAZTZ7c3SwvdXbu/XonZi8+PhT0vDhOpHRENp69N6du+F7nx/+csglv/dwkFdqng/gJZktI2WA0QaI+OjnH397fb6Yzp49e/LhjXY5qba2WqTioWtE5nqtkW/CUq1C02Tj5I/T3xfnRaE63U6ne0tE5wDhPOfTqQBy0dkqDwb9ctmngW9MQbCj/mdke2dPWMh8qUqytLHgk7sPPhHjaG7FdbPZsqz5ikvJgyAIPfr8+dNer6O1cACy/xMIsDFaKWsEhHaSJD+I7sz9dtxs/3TyTzW5pJTmuZhOJwjSKOcR9bVm1WZpd++hlFBraNZYIHk71RhhqZFNxKgCbqmfHfw5PM3fLdh0FGs3WXFeaNchhVwZKSJZKQRp3H56PPO4cmUhtQLE6uv9L9cPt2IrN30/8P1s9PdfwzdxzgrjEUoRhKmMLWY7otRxRKFVujqbDpf5LNKLdRZoOw7J4eEPdtgsJoRw2ah+f08tnDhTqzzRShqxJlj2WJakKy5q1HPsSAo+GZ/ARsMtn9ryBBmMEHlyP3RdVxupjemGPfs+5AWPLTHb7kJKe2TtaJMmMWPlQikRR0prOacJltvtOkKowFlhDPnscUAwLgSLosjg7f3v9qvNvgqD5GppMdq+aqXTXCHkWNl0aZbYC+RquJgsb6ts++b7xEnsdyInmb1aALgUkJML/uur8eNHzZ1eT2glhJNwtFwuA99jHhPa2PrZRSyE2NgIJJLR5bzS292ocEKc/wDJx+dTrtrHiAAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item agent-cursor (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/agent-cursor","credit":"Rendered by varg · HyperFrames Agent Cursor","rights":"generated","note":"The Agent Cursor component rendered as installed (npx hyperframes add agent-cursor), defaults only","bytes":79585,"addedAt":"2026-10-28"}},{"id":"heygen-com/multiplayer-cursors-drift","slug":"multiplayer-cursors-drift","name":"Multiplayer Cursors Drift In","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cursors","tags":["collaboration","cursor","team","presence","hyperframes","remotion","capcut"],"summary":"Several labeled cursors in different colors drift in from the edges and gather on the canvas.","description":"Built on [Multiplayer Cursors](https://github.com/heygen-com/hyperframes/tree/main/registry/components/multiplayer-cursors) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nThree to five colored cursors with name tags and soft glows arrive, idle-wobble, and one makes the edit.\n\n**When:** Collaboration features (Figma-style presence, shared docs) and \"for teams\" beats.\n\n**Watch out:** Do not move all cursors in sync; offset timing and paths or it looks robotic.\n\n**Timing:** Arrivals staggered 0.15–0.3 s, each 0.8–1.2 s power2.out; idle wobble ±6 px over 2 s.\n\n**Also called:** collaboration cursors, team cursors, live presence\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add multiplayer-cursors\n```\nColors derive from tokens; set names via variables.\n\n### In Remotion\n\n```tsx\nconst wob = Math.sin((frame + i*17)/18)*6;\n<Cursor x={baseX+wob} y={baseY+Math.cos((frame+i*11)/22)*6} label={names[i]} color={colors[i]}/>\n```\n\n### In CapCut\n\nDuplicate a cursor sticker 3–4 times, recolor (Adjust → Hue), add name Text to each, keyframe different paths.\n\n### Ready-made components\n\n- [Multiplayer Cursors](https://skills.varg.ai/component/hf.multiplayer-cursors/) (hyperframes): npx hyperframes add multiplayer-cursors\n- [Avatar Cloud](https://skills.varg.ai/component/hf.avatar-cloud/) (hyperframes): npx hyperframes add avatar-cloud\n- [Avatar Group Hover](https://skills.varg.ai/component/hf.avatar-group-hover/) (hyperframes): npx hyperframes add avatar-group-hover\n\n### Where this comes from\n\n- [UX Design Bootcamp: the rise of Linear style design](https://bootcamp.uxdesign.cc/the-rise-of-linear-style-design-origins-trends-and-techniques-4fd96aab7646)","useWhen":["Collaboration features (Figma-style presence, shared docs) and \"for teams\" beats."],"notFor":["Do not move all cursors in sync; offset timing and paths or it looks robotic."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/multiplayer-cursors","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Multiplayer Cursors · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.multiplayer-cursors/","license":"Apache-2.0","note":"Labeled collaborator cursors with token-derived colors and soft glows drift from spread positions into a shared center zone, proving live multiplayer presence."},{"role":"component","label":"Avatar Cloud · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.avatar-cloud/","license":"Apache-2.0","note":"Lettermark avatars populate a loose elliptical cloud while fine SVG links draw between the community and its central proof label."},{"role":"component","label":"Avatar Group Hover · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.avatar-group-hover/","license":"Apache-2.0","note":"A distance-falloff avatar group lift with bouncy hover return"},{"role":"source","label":"UX Design Bootcamp: the rise of Linear style design","kind":"link","url":"https://bootcamp.uxdesign.cc/the-rise-of-linear-style-design-origins-trends-and-techniques-4fd96aab7646","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":260,"text":"Multiplayer Cursors Drift In"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.multiplayer-cursors","hf.avatar-cloud","hf.avatar-group-hover"],"aliases":["collaboration cursors","team cursors","live presence"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/4f518d380971/take-multiplayer-cursors-drift.mp4","w":640,"h":360,"duration":6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAu5JREFUeJxdU82OG0UQ7q6u7vGsx561HWW9y2JCOPCjCLSHECEegkfgwoPwCDwDj8CFMwc4EAmEFiElCwETyDper3/W4+npv2p6rJDD1qE10+qq+r6vvuKff/VFlmW6JsYYRWGMoRAnk8mbvYda6+eL+enpacbZ64gM2pPaK///PeeA2nUWm52ubJ4fBNLb7faomAy7bxETtbYAzHubo9q/bvNcjKmZAIUoMLZVAm8LY/lXUbKi8prWZA/vloV6+96kA2WM0TrbONZ4dohtwqpxutYcWZ7nLFgJnRZajCK2GHEU+sPhUJ/kg+HwJQvX18uezKWHIILgkUPCwUNi4dzT2YoodIApZce9TgrOqC3FW7B4cbIaDWHYz3Z2vtHnmGFDGadcwpkAwTrMC2+4MjG6mKSQDKhujO9kLKZGe1qQGEZ8WU2xdHY1S8wN00n4IK962MtZVTPtcqtVLUhYZmVWJESCm9RfyhYo7DUiii2iAXUHVFytVuv1RkMC6Q77rjTq7mizsRuD+OzvaR0W4/FRb/BouUzs0hshmQQSQKGtBO0gcdrXz3fPGhuccveWR0S0sPM7o9Hqj38uLi7OHn5ysFPdCMeN/I2bqqkzJSENG5nggQASDZRgQkAfPRA8kG+46J7cmSXvHFWyr/rvPvjw/vh+3dDJ8cl7N8Evm17zNQCc7z7tFkXkmY8tscbaVW2q3Q5DoihYrPM0VlVeyy4GLL754ccvP/touriazxerLDvYeGvtXNQgxDab2iobH58hkQFuvK8atq0J3z/9WCkpqCelfEQfCBTry83v599+9/jnF5eXheKVqb8HHrME4J1WEWuTSFtncgTjoiEfQlMUCv/89Wbv8tn+lDHSzYs1UbaY/XsgsV2JV0vA965hLn0qed00yY4hMfE2WWxwOMBfHv/EbkUIZVlKTIIkt73ajNdBMaIQDPKdDto65xh4SinIEG/VUYx30iQAYoy3e+zBCZSOYq1NiO1f8pRU4j+oT58G2reLWgAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item multiplayer-cursors (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/multiplayer-cursors","credit":"Rendered by varg · HyperFrames Multiplayer Cursors","rights":"generated","note":"The Multiplayer Cursors component rendered as installed (npx hyperframes add multiplayer-cursors), defaults only","bytes":315977,"addedAt":"2026-10-28"}},{"id":"heygen-com/drag-card-across","slug":"drag-card-across","name":"Drag a Card Across Columns","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cursors","tags":["cursor","drag","kanban","interaction","hyperframes","remotion","capcut"],"summary":"The cursor grabs a card, lifts and tilts it while carrying, and drops it into a new column with a settle.","description":"Built on [Drag and Drop Cursor](https://github.com/heygen-com/hyperframes/tree/main/registry/components/cursor-drag-drop) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nCard scales to 1.04, tilts ~3° in the direction of travel and gains shadow; on drop it straightens and neighbors shuffle.\n\n**When:** Task boards, file managers, builders — anything where drag is the core action.\n\n**Watch out:** Do not move the card at linear speed; drag should accelerate and decelerate like a hand.\n\n**Timing:** Lift 0.15 s, carry 0.6–0.9 s power2.inOut, drop settle 0.25 s back.out(1.4).\n\n**Also called:** drag and drop, kanban drag, move task\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add cursor-drag-drop\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/cursor  (drag waypoint)\nconst p = interpolate(frame,[10,34],[0,1],{extrapolateLeft:'clamp',extrapolateRight:'clamp',easing:Easing.inOut(Easing.quad)});\nconst tilt = Math.sin(p*Math.PI)*3;\n```\n\n### In CapCut\n\nOverlay a card screenshot, keyframe Position and Rotation (0° → 3° → 0°) with a cursor sticker parented by matching keyframes.\n\n### Ready-made components\n\n- [Drag and Drop Cursor](https://skills.varg.ai/component/hf.cursor-drag-drop/) (hyperframes): npx hyperframes add cursor-drag-drop\n- [UI Cursor](https://skills.varg.ai/component/remocn.cursor/) (remocn): npx shadcn@latest add @remocn/cursor\n- [Keyframe Scrub Stack](https://skills.varg.ai/component/hf.keyframe-scrub-stack/) (hyperframes): npx hyperframes add keyframe-scrub-stack\n\n### Where this comes from\n\n- [Consensus: 5 tips to record the best product video](https://goconsensus.com/blog/5-crucial-tips-to-recording-the-best-product-video)\n- [HyperFrames skill: oversized cursor motion conventions](https://tessl.io/registry/skills/github/heygen-com/hyperframes/oversized-cursor--oversized-cursor)","useWhen":["Task boards, file managers, builders — anything where drag is the core action."],"notFor":["Do not move the card at linear speed; drag should accelerate and decelerate like a hand."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cursor-drag-drop","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Drag and Drop Cursor · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cursor-drag-drop/","license":"Apache-2.0","note":"A cursor grabs a task card, lifts and tilts it into its motion, carries it in lockstep to an empty column, drops it with a small settle, and the list closes the gap behind it."},{"role":"component","label":"UI Cursor · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.cursor/","license":"MIT","note":"An animated cursor that moves between waypoints, clicks (ripple), and drags. The Cursor renderer is a pure function of a numeric CursorStyle channel; useCursorPath reads the frame and eases the path, ripple…"},{"role":"component","label":"Keyframe Scrub Stack · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.keyframe-scrub-stack/","license":"Apache-2.0","note":"A keyframe-sequenced stack of cards with offset timing and easing presets."},{"role":"source","label":"Consensus: 5 tips to record the best product video","kind":"link","url":"https://goconsensus.com/blog/5-crucial-tips-to-recording-the-best-product-video","license":"link-only"},{"role":"source","label":"HyperFrames skill: oversized cursor motion conventions","kind":"link","url":"https://tessl.io/registry/skills/github/heygen-com/hyperframes/oversized-cursor--oversized-cursor","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":260,"text":"Drag a Card Across Columns"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.cursor-drag-drop","remocn.cursor","hf.keyframe-scrub-stack"],"aliases":["drag and drop","kanban drag","move task"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/67b4e79061c2/take-drag-card-across.mp4","w":640,"h":360,"duration":3.6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAtxJREFUeJxVU82O3EQQ7uqudrfttj14ZsisEglESCRegVOOPMaecg65RuKAOIEixAMlDxF+DghlAyjSZrRsMoN/+5fyLEKkZLW73VVflb+vCrBoGWPoRpT42a6+d//+84vjfv8mihUTXMgsL3Kdm7IsfATgnJ0shhBjpAOt89D7EDClBAAKoanNJ3c/vbU7uz2XlSkDN/SdgOZ5ptet7VqcQGJaTHBOm/3V9TRZrTBGQJlop2sGXzz4/PHX3wkUjzJNqVPyKPAQ1Pn5Oef86TdP5PzWmDKvDMFRDq31l1/98PzZM6FLgsYCpm1dmZjubOqPzjbOWmWaxTU65709uhwcE+r2h5t1sRECqX66lbPvh0ErlWK0zqaYUAugB5YcQH9xPB5ZPwvBz7atRNRWpsQp1HnXHTuCCIkVRcFRlXVJGBCTYBCoopXRihNuTCyoulmXBjlSwMySt66L0Uvup7nrhpBGciPGr991wKFpGpecZ568OQBG6/UqEzzWKjscDuMwKKm8D0Kwtm0zZPPUk3Nd1zlo4oJy3Kx5nsN/JgCvx7mVarM2jqWmaU3ZSAEk7imAqqIUOQMnpVBC3kDcWJaRWHGaJvAMyVyxvZy4Xpm9l1QR0YQQq6oqq8pT57CxMpIFEMmfdI/sf1Zyp9lcZUEphU1pkvWXf3U2ZY0xE1JnLUz0f/ekeo3uzrqYrOdxZiJj75uc/jwrhlW7GvoD1j5Q/su+y2XmY/JxyRlCYIEt3RTS1dVbrZUURCipx99DAhImsz4yLjBOo+Pw8WaVTaOnjuekGZy4oIL4IprEYD3JDggnrH/Jpn2WtzYoPg00S0iSBmvLob/45eenTx4WNFMJrLUsCeqjyFxbdHT8/tvHKcoXP76YAw1fMS638uXFq2FylVbWOWSeAll3tN2xfP27G8fRMY5CLHNIjSyRiKw0vn71mx3tH7/+9HI/eZeYLATdIt/tdtsPzNAP/wAXtZMs7rLQ3wAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item cursor-drag-drop (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/cursor-drag-drop","credit":"Rendered by varg · HyperFrames Drag and Drop Cursor","rights":"generated","note":"The Drag and Drop Cursor component rendered as installed (npx hyperframes add cursor-drag-drop), defaults only","bytes":97666,"addedAt":"2026-10-28"}},{"id":"heygen-com/select-text-then-act","slug":"select-text-then-act","name":"Select Text, Then Act","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cursors","tags":["cursor","selection","AI writing","menu","hyperframes","remotion","capcut"],"summary":"The arrow becomes an I-beam, drags a selection across a phrase, and a menu or AI action appears on it.","description":"Built on [Text Select Cursor](https://github.com/heygen-com/hyperframes/tree/main/registry/components/cursor-text-select) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nSelection grows character by character in the accent color; a small popover (\"Rewrite\", \"Explain\") blooms at the selection end.\n\n**When:** Writing tools, AI editors, docs and code review features.\n\n**Watch out:** Do not select a whole paragraph instantly; the drag is what makes it believable.\n\n**Timing:** Drag 0.5–0.8 s, popover 0.2 s scale from 0.9, choose + apply 0.6 s.\n\n**Also called:** text selection, highlight and rewrite, context menu\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add cursor-text-select\nnpx hyperframes add cursor-context-menu\n```\n\n### In Remotion\n\n```tsx\nconst n = Math.floor(interpolate(frame,[0,18],[0,phrase.length],{extrapolateRight:'clamp'}));\n<mark style={{background:'#93C5FD'}}>{phrase.slice(0,n)}</mark>{phrase.slice(n)}\n```\n\n### In CapCut\n\nRecord it for real; zoom 160% on the selection; add a pop SFX when the menu appears.\n\n### Ready-made components\n\n- [Text Select Cursor](https://skills.varg.ai/component/hf.cursor-text-select/) (hyperframes): npx hyperframes add cursor-text-select\n- [Context Menu Cursor](https://skills.varg.ai/component/hf.cursor-context-menu/) (hyperframes): npx hyperframes add cursor-context-menu\n- [Inline Highlight](https://skills.varg.ai/component/hf.inline-highlight/) (hyperframes): npx hyperframes add inline-highlight\n\n### Where this comes from\n\n- [Screen Studio: auto zoom, cursor smoothing, click effects](https://screen.studio/)","useWhen":["Writing tools, AI editors, docs and code review features."],"notFor":["Do not select a whole paragraph instantly; the drag is what makes it believable."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cursor-text-select","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Text Select Cursor · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cursor-text-select/","license":"Apache-2.0","note":"An arrow turns into an I-beam over a document, drags a selection across a phrase character by character, raises a format toolbar, turns back into an arrow and clicks Bold."},{"role":"component","label":"Context Menu Cursor · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cursor-context-menu/","license":"Apache-2.0","note":"A cursor right-clicks a file, a context menu blooms from its tip, the hover highlight tracks the item under it, and the chosen action plays out: duplicate, rename, move to trash, or a confirmation toast."},{"role":"component","label":"Inline Highlight · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.inline-highlight/","license":"Apache-2.0","note":"A clean marker-style inline highlight that animates behind text using a CSS scale variable"},{"role":"source","label":"Screen Studio: auto zoom, cursor smoothing, click effects","kind":"link","url":"https://screen.studio/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":260,"text":"Select Text, Then Act"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.cursor-text-select","hf.cursor-context-menu","hf.inline-highlight"],"aliases":["text selection","highlight and rewrite","context menu"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/aee37c1d18a8/take-select-text-then-act.mp4","w":640,"h":360,"duration":4.2,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAu1JREFUeJx1U8tqHUcQ7XdPz/Q8rqwXSSyLCOUaLCG8CWSThYJN0C7fkCySjZ14ZX9BPkKbbEI+ICTrgCAoCLQxxmjlhQ1GEr7vefYrNVegnWsxFF1dp0/VOYMRj1DwmNAQQoS8iuPi7u54NJqijMChTCMVYVVEURQIDstACGHMvHfIesgpw23bMsoU1IhtCCHbq9lw+MXFjBr7AdOA+/PSl3UsZco4wrSHQEs4bwIJjhlrTDuaBWMYohwjJH1HKNGSJZJfj8dl1SAuPGBHKk4VqsvadgEjuAPs0TIAjQvGMSZSCOCDvcUYB+8Pvzl89uQnLsR3JTBtPYYqhRJjrL8QAnxvISAXQhz/8dfZ2RmRCspM+DaOEy3pVw+HX3971HXdl7QfAdjcdn4sTs5e/3vyDycMsFlKmo08J04qhsqyPj8/h6copV1nkiQGXM75wcH+Lamrq6umaSBJ0xSIQ+IhACgWVOBgPAznkkTt7z9wzi3fI70itCd1eXkJ6IBDKXv+4tfT01Mh5Na9eytbOzT060c+sDyRgnrbz4FBzfG0dN7B7gQj1jpKe7jFYgHjh2CB6fc//vDo6DFItLe3d/zb78E7aKXQADwHg4EkOJNsbtH13EBnmkrqWkBxzoOD8jyHAW8cdP/z+MHultbqRoTOdLipek2ua7eu8kjjBeIDgR4OP136rZ8c9t1rzPnHlg3VsqwGnAgpmVdrb0fdehH99/Ji+8+/YRxwq3X2RjKt4I6sqsYYQ5CjYKwogh3DvhKtZ+9e7m7wNLbW1KxQMSyjKptXr17/8vRncCrVa6PRB1MtVKx0TOUyptOpbcZZluVxVNeVsd50HRxubG4wsdp0DUusyZOiDGUapZ+sJcGH9wssiO5Mb1e5nA6kL4pMM1QUxZuLN1on09ZPJgud5nF2ZzabwV/JTFOXGN3d+WwymaDYZ6nOClpVsPI8SZLONM7Z1jAw1Ga6Mp/PhaRtVy9arrI7QufXM5MrCtb5H5wcfiJnVnQtAAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item cursor-text-select (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/cursor-text-select","credit":"Rendered by varg · HyperFrames Text Select Cursor","rights":"generated","note":"The Text Select Cursor component rendered as installed (npx hyperframes add cursor-text-select), defaults only","bytes":112976,"addedAt":"2026-10-28"}},{"id":"heygen-com/touch-taps-on-phone","slug":"touch-taps-on-phone","name":"Touch Taps on Phone UI","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"cursors","tags":["mobile","touch","tap","gesture","hyperframes","remotion","capcut"],"summary":"A translucent touch circle taps, swipes and pulls to refresh on a phone screen instead of an arrow.","description":"Built on [Touch Indicator](https://github.com/heygen-com/hyperframes/tree/main/registry/components/touch-indicator) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA soft grey dot (~44 pt) appears on touch, compresses on press, drags with momentum on swipes, and fades on release.\n\n**When:** Mobile app demos and phone mockups; anywhere an arrow cursor would look wrong.\n\n**Watch out:** Do not show an arrow cursor on a phone; use touch circles sized like a fingertip.\n\n**Timing:** Tap: appear 0.08 s, press 0.1 s, release 0.15 s. Swipe 0.3–0.5 s with momentum carry.\n\n**Also called:** tap indicator, touch circle, mobile gestures\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add touch-indicator\nnpx hyperframes add swipe-rail\n```\nOr `gesture-tap` for a single button tap and `pull-to-refresh` for list pulls.\n\n### In Remotion\n\n```tsx\nconst press = interpolate(frame,[tapAt,tapAt+3,tapAt+8],[0,1,0],{extrapolateLeft:'clamp',extrapolateRight:'clamp'});\n<div style={{width:88,height:88,borderRadius:99,background:'rgba(255,255,255,0.45)',transform:`scale(${1-press*0.15})`,opacity:press?1:0}}/>\n```\n\n### In CapCut\n\nAdd a white circle shape at 45% opacity on each tap frame (0.2 s), with Animation In \"Zoom out\"; keyframe its Position for swipes.\n\n### Ready-made components\n\n- [Touch Indicator](https://skills.varg.ai/component/hf.touch-indicator/) (hyperframes): npx hyperframes add touch-indicator\n- [Gesture Tap](https://skills.varg.ai/component/hf.gesture-tap/) (hyperframes): npx hyperframes add gesture-tap\n- [Swipe Rail](https://skills.varg.ai/component/hf.swipe-rail/) (hyperframes): npx hyperframes add swipe-rail\n- [Share-Sheet Carousel](https://skills.varg.ai/component/hf.share-sheet-carousel/) (hyperframes): npx hyperframes add share-sheet-carousel\n\n### Where this comes from\n\n- [Rotato: how to make an animated mockup](https://rotato.app/blog/animated-mockup)\n- [Screen Studio: auto zoom, cursor smoothing, click effects](https://screen.studio/)","useWhen":["Mobile app demos and phone mockups; anywhere an arrow cursor would look wrong."],"notFor":["Do not show an arrow cursor on a phone; use touch circles sized like a fingertip."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/touch-indicator","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Touch Indicator · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.touch-indicator/","license":"Apache-2.0","note":"A translucent contact-circle gesture actor for mobile UI scenes: it touches the glass on the frame the host target responds, then lifts. Tap or swipe, picked by variable."},{"role":"component","label":"Gesture Tap · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.gesture-tap/","license":"Apache-2.0","note":"A contact circle taps a mobile pill button, releases it into a new labeled accent state, and lifts away."},{"role":"component","label":"Swipe Rail · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.swipe-rail/","license":"Apache-2.0","note":"A contact circle leads a horizontal card rail through a fast drag, momentum carry, and settled snap to the next card."},{"role":"component","label":"Share-Sheet Carousel · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.share-sheet-carousel/","license":"Apache-2.0","note":"A share sheet springs up from the bottom of the phone and cycles previews inside its card on a fast cut rhythm while the blurred ground swaps behind it, ending on an accept tap"},{"role":"source","label":"Rotato: how to make an animated mockup","kind":"link","url":"https://rotato.app/blog/animated-mockup","license":"link-only"},{"role":"source","label":"Screen Studio: auto zoom, cursor smoothing, click effects","kind":"link","url":"https://screen.studio/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":260,"text":"Touch Taps on Phone UI"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.touch-indicator","hf.gesture-tap","hf.swipe-rail","hf.share-sheet-carousel"],"aliases":["tap indicator","touch circle","mobile gestures"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/share-sheet-carousel/preview.mp4","w":1080,"h":1920,"blur":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/share-sheet-carousel/poster.jpg","source":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/share-sheet-carousel/preview.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/share-sheet-carousel","credit":"Share-Sheet Carousel · hyperframes","rights":"publisher-site","note":"Preview of the Share-Sheet Carousel component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"magicuidesign/browser-window-frame","slug":"browser-window-frame","name":"Browser Window Frame","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"devices","tags":["browser","mockup","web app","frame","ffmpeg","hyperframes","remotion","capcut"],"summary":"The web app plays inside a clean browser window with traffic lights and a URL bar on a soft backdrop.","description":"Built on [Safari](https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/safari.tsx) by magic-ui, MIT. The write-up and recipes below are varg's.\n\nRounded window, minimal chrome, real domain in the bar, big soft shadow, 6–10% padding around it on a gradient.\n\n**When:** Every web product demo; it tells the viewer \"this runs in your browser\".\n\n**Watch out:** Do not use a cluttered browser with tabs, bookmarks and extensions from your own machine.\n\n**Timing:** Window in 0.6 s (y 40 px, scale 0.96 → 1), then hold; zoom moves happen inside the window.\n\n**Also called:** Safari mockup, browser chrome, web app frame\n\n### In FFmpeg\n\n```bash\nffmpeg -i bg.png -i rec.mp4 -i chrome.png -filter_complex \"[1]scale=1500:-1[r];[0][r]overlay=210:150[a];[a][2]overlay=210:96\" -shortest out.mp4\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add browser-device-stage\n```\nPut the screen recording `<video class=\"clip\">` in the stage's screen slot; animate the stage wrapper for moves.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @magicui/safari\n<div style={{width:1500}}><Safari url=\"app.acme.com\" videoSrc={staticFile('rec.mp4')}/></div>\n// keeps 1203/753 aspect; size it with the wrapper\n```\n\n### In CapCut\n\nAdd the recording over a gradient background; Video → Basic: Scale 80%, add a rounded Mask; overlay a browser-bar PNG on top.\n\n### Ready-made components\n\n- [Safari](https://skills.varg.ai/component/magicui.safari/) (magic-ui): npx shadcn@latest add @magicui/safari\n- [Browser Device Stage](https://skills.varg.ai/component/hf.browser-device-stage/) (hyperframes): npx hyperframes add browser-device-stage\n\n### Where this comes from\n\n- [Magic UI: Safari](https://magicui.design/docs/components/safari)\n- [Screen Studio: auto zoom, cursor smoothing, click effects](https://screen.studio/)","useWhen":["Every web product demo; it tells the viewer \"this runs in your browser\"."],"notFor":["Do not use a cluttered browser with tabs, bookmarks and extensions from your own machine."],"publisher":{"name":"Magic UI","handle":"magicuidesign","kind":"community","verified":false,"url":"https://magicui.design","avatar":"https://github.com/magicuidesign.png"},"source":{"url":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/safari.tsx","repo":"magicuidesign/magicui","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Safari · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.safari/","license":"MIT","note":"Dark Safari browser window with traffic lights and an address bar, a video playing in the page area"},{"role":"component","label":"Browser Device Stage · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.browser-device-stage/","license":"Apache-2.0","note":"A generic app surface in token-native device chrome (browser, window, or phone). The screen is a slot for caller img/video/HTML with a token-styled skeleton default; one settle entrance, a readable hold…"},{"role":"source","label":"Magic UI: Safari","kind":"link","url":"https://magicui.design/docs/components/safari","license":"link-only"},{"role":"source","label":"Screen Studio: auto zoom, cursor smoothing, click effects","kind":"link","url":"https://screen.studio/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":200,"text":"Browser Window Frame"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["magicui.safari","hf.browser-device-stage"],"aliases":["Safari mockup","browser chrome","web app frame"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f0382ac63ae6/lib-magic-ui-safari.mp4","blur":"https://s3.varg.ai/how-to/previews/f88750415c05/lib-magic-ui-safari.webp","source":"https://s3.varg.ai/how-to/previews/f0382ac63ae6/lib-magic-ui-safari.mp4","page":"https://magicui.design/docs/components/safari","credit":"Captured from the library’s own demo page (Magic UI)","rights":"publisher-site","note":"Preview of the Safari component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"magicuidesign/phone-frame-live-screen","slug":"phone-frame-live-screen","name":"Phone Frame with Live Screen","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"devices","tags":["phone","mockup","mobile","iPhone","hyperframes","remotion","capcut"],"summary":"A screen recording plays edge to edge inside a realistic phone frame with Dynamic Island.","description":"Built on [iPhone](https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/iphone.tsx) by magic-ui, MIT. The write-up and recipes below are varg's.\n\nDark or titanium frame, accurate corner radius, the recording fills the screen; the phone sits slightly off-center with a shadow.\n\n**When:** Mobile app demos and vertical recordings shown in a 16:9 film.\n\n**Watch out:** Do not letterbox the recording inside the phone; crop it to the screen's exact aspect.\n\n**Timing:** Phone rise 0.6–0.8 s, expo.out; keep it still while the screen content plays.\n\n**Also called:** iPhone mockup, phone frame, mobile mockup\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add device-frame-stage\n```\nScreen slot accepts a `<video>`; animate the frame wrapper, not the video.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @magicui/iphone\n<Iphone videoSrc={staticFile('app.mp4')} />\n```\n\n### In CapCut\n\nStickers/Overlay: add a transparent iPhone frame PNG above the recording; scale the recording to fit the screen and apply a rounded Mask.\n\n### Ready-made components\n\n- [iPhone](https://skills.varg.ai/component/magicui.iphone/) (magic-ui): npx shadcn@latest add @magicui/iphone\n- [Device Frame Stage](https://skills.varg.ai/component/hf.device-frame-stage/) (hyperframes): npx hyperframes add device-frame-stage\n\n### Where this comes from\n\n- [Rotato: how to make an animated mockup](https://rotato.app/blog/animated-mockup)\n- [Screen Studio: auto zoom, cursor smoothing, click effects](https://screen.studio/)","useWhen":["Mobile app demos and vertical recordings shown in a 16:9 film."],"notFor":["Do not letterbox the recording inside the phone; crop it to the screen's exact aspect."],"publisher":{"name":"Magic UI","handle":"magicuidesign","kind":"community","verified":false,"url":"https://magicui.design","avatar":"https://github.com/magicuidesign.png"},"source":{"url":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/iphone.tsx","repo":"magicuidesign/magicui","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"iPhone · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.iphone/","license":"MIT","note":"Dark iPhone frame with Dynamic Island and side buttons, a video playing edge to edge on its screen"},{"role":"component","label":"Device Frame Stage · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.device-frame-stage/","license":"Apache-2.0","note":"A phone or tablet mockup staged as a physical scene prop with a screen slot for arbitrary reconstructed UI, rising onto the stage, settling, and holding an idle float"},{"role":"source","label":"Rotato: how to make an animated mockup","kind":"link","url":"https://rotato.app/blog/animated-mockup","license":"link-only"},{"role":"source","label":"Screen Studio: auto zoom, cursor smoothing, click effects","kind":"link","url":"https://screen.studio/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":200,"text":"Phone Frame with Live Screen"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["magicui.iphone","hf.device-frame-stage"],"aliases":["iPhone mockup","phone frame","mobile mockup"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/691a756f7871/lib-magic-ui-iphone.mp4","blur":"https://s3.varg.ai/how-to/previews/c909e6a45efc/lib-magic-ui-iphone.webp","source":"https://s3.varg.ai/how-to/previews/691a756f7871/lib-magic-ui-iphone.mp4","page":"https://magicui.design/docs/components/iphone","credit":"Captured from the library’s own demo page (Magic UI)","rights":"publisher-site","note":"Preview of the iPhone component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"aceternity/laptop-lid-opens","slug":"laptop-lid-opens","name":"Laptop Lid Opens to Screen","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"devices","tags":["laptop","MacBook","reveal","device","hyperframes","remotion","capcut"],"summary":"A laptop lid tilts open and the screen content lifts toward the viewer, then becomes the full frame.","description":"Built on [Macbook Scroll](https://ui.aceternity.com/components/macbook-scroll) by aceternity, Aceternity License (free components). The write-up and recipes below are varg's.\n\nLow-angle MacBook; the lid swings up, the screen lights, and the camera pushes into the display until the UI fills the frame.\n\n**When:** Desktop app or web app hero reveal; a premium transition from title to product.\n\n**Watch out:** Do not keep the UI tiny on the laptop for long; push in within 1–2 s.\n\n**Timing:** Lid 0.8–1.0 s power2.out, push-in 0.8 s expo.inOut.\n\n**Also called:** MacBook reveal, laptop open, lid tilt\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add macos-tahoe-liquid-glass\n```\nUse its camera move to push into the screen, then cut to the flat recording.\n\n### In Remotion\n\n```tsx\nconst lid = interpolate(frame,[0,24],[-90,0],{extrapolateRight:'clamp',easing:Easing.out(Easing.quad)});\n<div style={{transform:`perspective(1600px) rotateX(${lid}deg)`, transformOrigin:'50% 100%'}}><Screen/></div>\n```\n\n### In CapCut\n\nUse a laptop template from Templates → search \"laptop mockup\"; replace the screen media; keyframe Scale to push into it.\n\n### Ready-made components\n\n- [Macbook Scroll](https://skills.varg.ai/component/aceternity.macbook-scroll/) (aceternity): npx shadcn@latest add @aceternity/macbook-scroll\n- [macOS Tahoe Liquid Glass Desktop](https://skills.varg.ai/component/hf.macos-tahoe-liquid-glass/) (hyperframes): npx hyperframes add macos-tahoe-liquid-glass\n\n### Where this comes from\n\n- [Rotato: 14 video mockup ideas and examples](https://rotato.app/blog/mockup-video-examples)","useWhen":["Desktop app or web app hero reveal; a premium transition from title to product."],"notFor":["Do not keep the UI tiny on the laptop for long; push in within 1–2 s."],"publisher":{"name":"Aceternity UI","handle":"aceternity","kind":"community","verified":false,"url":"https://ui.aceternity.com","avatar":"https://github.com/aceternity.png"},"source":{"url":"https://ui.aceternity.com/components/macbook-scroll","license":"Aceternity License (free components)"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Macbook Scroll · aceternity","kind":"link","url":"https://skills.varg.ai/component/aceternity.macbook-scroll/","license":"Aceternity License (free components)","note":"A CSS-built MacBook whose lid tilts open and whose screen image lifts toward the viewer"},{"role":"component","label":"macOS Tahoe Liquid Glass Desktop · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.macos-tahoe-liquid-glass/","license":"Apache-2.0","note":"3D MacBook with a macOS Tahoe-style desktop, glass menu bar, Finder window, dock, and cinematic device camera move."},{"role":"source","label":"Rotato: 14 video mockup ideas and examples","kind":"link","url":"https://rotato.app/blog/mockup-video-examples","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":200,"text":"Laptop Lid Opens to Screen"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["aceternity.macbook-scroll","hf.macos-tahoe-liquid-glass"],"aliases":["MacBook reveal","laptop open","lid tilt"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/cccf2248df97/lib-aceternity-macbook-scroll.mp4","blur":"https://s3.varg.ai/how-to/previews/d49a96cf3f5b/lib-aceternity-macbook-scroll.webp","source":"https://s3.varg.ai/how-to/previews/cccf2248df97/lib-aceternity-macbook-scroll.mp4","page":"https://ui.aceternity.com/components/macbook-scroll","credit":"Rendered by varg from the library’s own code (Aceternity UI)","rights":"publisher-site","note":"Preview of the Macbook Scroll component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/3d-phone-turn","slug":"3d-phone-turn","name":"3D Phone Turn","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"devices","tags":["3D","phone","spin","device","hyperframes","remotion","capcut"],"summary":"A real 3D phone model turns in space with the app playing on its screen, then faces the camera.","description":"Built on [iPhone & MacBook 3D Showcase](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/vfx-iphone-device) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nStudio-lit phone rotates 30–60° on Y with reflections sliding over the glass, landing front-on as the screen content changes.\n\n**When:** Mobile launches and app-store style hero shots.\n\n**Watch out:** Do not spin a full 360° with the screen facing away for most of the shot; the screen is the product.\n\n**Timing:** 1.2–2 s, power2.inOut; land front-on and hold ≥ 1 s.\n\n**Also called:** device spin, phone rotate, turntable\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add vfx-iphone-device\n```\nReal GLTF iPhone with live HTML on the screen; tween the model's rotationY on the paused timeline.\n\n### In Remotion\n\n```tsx\n// @remotion/three + a GLB phone; map the screen texture to an OffthreadVideo frame\nconst ry = interpolate(frame,[0,48],[-0.9,0],{extrapolateRight:'clamp',easing:Easing.inOut(Easing.quad)});\n```\n\n### In CapCut\n\nNot native; render the turn in Rotato (pick a device + template, drop the recording) and import the clip.\n\n### Ready-made components\n\n- [iPhone & MacBook 3D Showcase](https://skills.varg.ai/component/hf.vfx-iphone-device/) (hyperframes): npx hyperframes add vfx-iphone-device\n- [Product Turntable](https://skills.varg.ai/component/hf.product-turntable/) (hyperframes): npx hyperframes add product-turntable\n- [Turntable](https://skills.varg.ai/component/remocn.turntable/) (remocn): npx shadcn@latest add @remocn/turntable\n\n### Where this comes from\n\n- [Rotato: how to make an animated mockup](https://rotato.app/blog/animated-mockup)\n- [Rotato: 14 video mockup ideas and examples](https://rotato.app/blog/mockup-video-examples)","useWhen":["Mobile launches and app-store style hero shots."],"notFor":["Do not spin a full 360° with the screen facing away for most of the shot; the screen is the product."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/vfx-iphone-device","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"iPhone & MacBook 3D Showcase · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.vfx-iphone-device/","license":"Apache-2.0","note":"Real GLTF iPhone 15 Pro Max and MacBook Pro models with live HTML-in-Canvas screen content, morphing glass lens, product review camera choreography, and 360° turntable."},{"role":"component","label":"Product Turntable · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.product-turntable/","license":"Apache-2.0","note":"A product turns a full revolution on a studio plinth in a seamless loop. Drop in a GLB or glTF model, or keep the built-in drink can with your own label."},{"role":"component","label":"Turntable · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.turntable/","license":"MIT","note":"A product card spins on an invisible turntable through front, edge and back in real 3D, with face shading and a breathing floor shadow."},{"role":"source","label":"Rotato: how to make an animated mockup","kind":"link","url":"https://rotato.app/blog/animated-mockup","license":"link-only"},{"role":"source","label":"Rotato: 14 video mockup ideas and examples","kind":"link","url":"https://rotato.app/blog/mockup-video-examples","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":200,"text":"3D Phone Turn"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.vfx-iphone-device","hf.product-turntable","remocn.turntable"],"aliases":["device spin","phone rotate","turntable"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-iphone-device.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-iphone-device.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-iphone-device.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/vfx-iphone-device","credit":"iPhone & MacBook 3D Showcase · hyperframes","rights":"publisher-site","note":"Preview of the iPhone & MacBook 3D Showcase component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/multi-device-splay","slug":"multi-device-splay","name":"Phone, Tablet and Laptop Splay","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"devices","tags":["devices","cross-platform","phone","laptop","hyperframes","remotion","capcut"],"summary":"Phone, tablet and laptop fan out from one stack into a proud row, each showing the same product.","description":"Built on [Multi Device Splay](https://github.com/heygen-com/hyperframes/tree/main/registry/components/multi-device-splay) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nDevices start overlapped center, then slide and rotate into a splayed arrangement with depth and shadow.\n\n**When:** Cross-platform claims (\"everywhere you work\") and launch finales.\n\n**Watch out:** Do not show three different apps; the same screen across sizes is the message.\n\n**Timing:** Splay 0.9–1.2 s expo.out with 0.08 s stagger; hold 1.5 s.\n\n**Also called:** device family, cross-platform, multi-device\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add multi-device-splay\n```\n\n### In Remotion\n\n```tsx\n[phone,tablet,laptop].map((d,i)=>{const p=spring({frame:frame-i*3,fps,config:{damping:18}}); return <Img src={d} style={{transform:`translateX(${interpolate(p,[0,1],[0,(i-1)*520])}px) rotate(${interpolate(p,[0,1],[0,(i-1)*-4])}deg)`}}/>})\n```\n\n### In CapCut\n\nThree device overlays starting at the same position; keyframe each Position/Rotation outward with 3-frame offsets.\n\n### Ready-made components\n\n- [Multi Device Splay](https://skills.varg.ai/component/hf.multi-device-splay/) (hyperframes): npx hyperframes add multi-device-splay\n- [App Showcase](https://skills.varg.ai/component/hf.app-showcase/) (hyperframes): npx hyperframes add app-showcase\n\n### Where this comes from\n\n- [Bohdan Motion: breakdown of the Replit Design launch video](https://x.com/bohdanmotion/status/2083248851750728188)\n- [Rotato: 14 video mockup ideas and examples](https://rotato.app/blog/mockup-video-examples)","useWhen":["Cross-platform claims (\"everywhere you work\") and launch finales."],"notFor":["Do not show three different apps; the same screen across sizes is the message."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/multi-device-splay","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Multi Device Splay · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.multi-device-splay/","license":"Apache-2.0","note":"Phone, tablet, and desktop product mockups fan from a centered stack into a proud splayed arrangement with a subtle idle float."},{"role":"component","label":"App Showcase · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.app-showcase/","license":"Apache-2.0","note":"Fitness app product showcase with three floating smartphone screens"},{"role":"source","label":"Bohdan Motion: breakdown of the Replit Design launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2083248851750728188","license":"link-only"},{"role":"source","label":"Rotato: 14 video mockup ideas and examples","kind":"link","url":"https://rotato.app/blog/mockup-video-examples","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":200,"text":"Phone, Tablet and Laptop Splay"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.multi-device-splay","hf.app-showcase"],"aliases":["device family","cross-platform","multi-device"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/eb78fbb1abf3/take-multi-device-splay.mp4","w":640,"h":360,"duration":4.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAA2RJREFUeJw1k01vG0UYx+d9Z71xXL/GdmxXSVOXpiqiUoO4wCFIoII48klA9AsgcWiLVIkbEuKGOJQLnOAISgRSI4UmbQwkdes0TuJk7bV3197deWG20Of0jGbmmWf+z+8P737zA2PMp8j3J34UlMtlW0EAgAJKSGEzprQOMTs9PYnjpFqr2gCBVyHTg0C/zAmEkFGGlcQKx7FMEp1BmhA8mMXeyGsU8ulRCQlAfhybHCH58iLSWmONIETCPGoKbfR/r9Vq9cwysaHyZDCZlAq5591nnb29D27dusAJQqYFPIZKV/IYIXcWJUJIBDHG0ryuJOe21opsiG3Q2/64/P78/PxbjWalUnm8/6zzqON2n3/0+TqUbjabxdTq9Xr37t7/7PZtjEEQBkcj76jfP4pmSRRNRJRxHNMHDoPw8oXWu+vr8xq7Q3d795FOQm4jpSME0XA8ITgaj/3T86HnB0CIUqn03tUVIdQkCEej4VNv1NnrkKw1r2b6xeDg3L86PksoYzGIvamno8g2TVOSJIIwq38M2peWrlxaPndPLAsppSDUWSeTy861Ljb3d7YI07zosOHExRy1mgv5fOH7rZ/+cTtt2rQswhmiFFPKOKWr19pzDmK0aKpEkTBTwgBCigI17XYPSLCTK5fKU+ecMV4rVgAE11pXsoCn01XpOKSRFGvLspaXl8KZSCIjSxpJEkOFuG0P1Nkw9Ehnv9cfeNohxwcxKJqb6PWLry1kiiDBxBTQ5gtEas1svlAuZzgRjFgZW0klpZCR2dFP918cnQ2IJLNhMN08PPt1d+vDN1dkIur1OsU4iZUhLRaGx5STYDr78uuvbt5cu7FyfXFxMZ/PZTIcOimd4S++PeYkhQtChemfTzomxZTYGiGNETRYAmagM0EMNvDn460fH2zWRjkTa6trjUZjdWmx3W4PZtMb77xN/oMdcvvhzu69b78zHG7u/dU9PG6Vip98cUciN5WWyHAairqR3HEDdTg9yR483H6y8QCjWrU61ywYJ/xfSDN6OnQ/vXM/XVgc8GwnSPq//dG6XCgWCv3wb4xRqVQ1KEwcnwP6OA5No45gUz5aUFMjEHllPwSYBYvFtChMbWkcNQxDfydpttjK9TcoJT48iUDEoLFkHNqJVmqikpGKoJsTMvwXIBvG3ZLPR2oAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item multi-device-splay (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/multi-device-splay","credit":"Rendered by varg · HyperFrames Multi Device Splay","rights":"generated","note":"The Multi Device Splay component rendered as installed (npx hyperframes add multi-device-splay), defaults only","bytes":203569,"addedAt":"2026-10-28"}},{"id":"heygen-com/push-through-the-screen","slug":"push-through-the-screen","name":"Push Through the Screen","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"devices","tags":["device","transition","phone","push-in","hyperframes","remotion","capcut"],"summary":"A phone rises into view, then the camera pushes through its screen into the full-frame UI.","description":"Built on [Parallax Device Dive](https://github.com/heygen-com/hyperframes/tree/main/registry/components/parallax-device-dive) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nThe phone grows until its screen fills the frame; bezel slides off-frame and the UI layers separate slightly as you pass through.\n\n**When:** Bridge from a device beauty shot into a flat UI walkthrough without a cut.\n\n**Watch out:** Do not push in at constant speed; accelerate in, decelerate as the UI fills the frame.\n\n**Timing:** Rise 0.6 s, push 0.8–1.0 s expo.inOut.\n\n**Also called:** screen dive, fly into phone, parallax dive\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add parallax-device-dive\n```\n\n### In Remotion\n\n```tsx\nconst z = interpolate(frame,[18,42],[1,4.6],{extrapolateLeft:'clamp',extrapolateRight:'clamp',easing:Easing.inOut(Easing.exp)});\n<AbsoluteFill style={{transform:`scale(${z})`, transformOrigin:'50% 48%'}}><PhoneWithScreen/></AbsoluteFill>\n```\n\n### In CapCut\n\nKeyframe the phone mockup Scale 100% → 460% in 0.8 s, then cut on the frame the screen fills to the raw recording.\n\n### Ready-made components\n\n- [Parallax Device Dive](https://skills.varg.ai/component/hf.parallax-device-dive/) (hyperframes): npx hyperframes add parallax-device-dive\n- [iOS 26 Liquid Glass Home Screen](https://skills.varg.ai/component/hf.ios26-liquid-glass/) (hyperframes): npx hyperframes add ios26-liquid-glass\n\n### Where this comes from\n\n- [zero on X: Apple-keynote launch film prompt (Screen Studio zoom, no crossfades)](https://x.com/twoclipping/status/2103835273813496100)\n- [Rotato: 14 video mockup ideas and examples](https://rotato.app/blog/mockup-video-examples)","useWhen":["Bridge from a device beauty shot into a flat UI walkthrough without a cut."],"notFor":["Do not push in at constant speed; accelerate in, decelerate as the UI fills the frame."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/parallax-device-dive","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Parallax Device Dive · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.parallax-device-dive/","license":"Apache-2.0","note":"A canonical phone rises into view before the camera pushes through its screen and layered app UI expands to fill the frame."},{"role":"component","label":"iOS 26 Liquid Glass Home Screen · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.ios26-liquid-glass/","license":"Apache-2.0","note":"3D iPhone with a normal iOS 26 home screen, liquid glass app icons, shader wallpaper, dock, and fluid glass notifications that drop from the status area onto a GLTF device model."},{"role":"source","label":"zero on X: Apple-keynote launch film prompt (Screen Studio zoom, no crossfades)","kind":"link","url":"https://x.com/twoclipping/status/2103835273813496100","license":"link-only"},{"role":"source","label":"Rotato: 14 video mockup ideas and examples","kind":"link","url":"https://rotato.app/blog/mockup-video-examples","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":200,"text":"Push Through the Screen"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.parallax-device-dive","hf.ios26-liquid-glass"],"aliases":["screen dive","fly into phone","parallax dive"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/8a5a40359443/take-push-through-the-screen.mp4","w":640,"h":360,"duration":4.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAX9JREFUeJyVkr9Lw0AUx99dLkkpDZWAVZAM1qGCf4CTgmudBAf/AMFNZ0dxcXEQF/8EwcFdaME2CKFWna1CXURbWqtt0h/JJb40iyipyeMO7r27+9z3vXskkUxBiNm2w7lDKQVw0aVUZEwIO8zCNgaDQT6/vre7bxjGV0fOzmfPL050XZdke7xPo4LA5bnF3ExGW11JUbrUaLQz0wsuvwP4jKeIMrlWezo8Onip11/fGoqiaLOqwHp/tfwDIkToW8PH54dWq2VZDnf4XEYFwBo58UDgiTiaTcU0UcJyzxQJvIOHP9MOFEcBEZzcsTVN297ZsEyrP7RVVS1eXRYKHyIEH+dFVgRuOp3e2lzDVbfbUZSp+0oRWwJAjp5a8BpHFtaja/YZTWAj2Xw4bqjfWv5V5ACxPb/qjI8BhHhBZ8YFgecbuC5ywPVE3wm3CSBPYIJEIJlMoIMLJrCwvCaBKBP1cvn49Gw0GvkgSSqVrjEYG4Q3q9XbinHzA40xKez8N7ELj253qaRNAAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item parallax-device-dive (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/parallax-device-dive","credit":"Rendered by varg · HyperFrames Parallax Device Dive","rights":"generated","note":"The Parallax Device Dive component rendered as installed (npx hyperframes add parallax-device-dive), defaults only","bytes":48895,"addedAt":"2026-10-28"}},{"id":"vargHQ/foldable-two-screen","slug":"foldable-two-screen","name":"Foldable Two-Screen Reveal","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"devices","tags":["foldable","phone","two screens","before after","hyperframes","remotion","capcut"],"summary":"A foldable phone opens to show two screens side by side — before and after, or app and result.","description":"Built on [iPhone Duo Fold](https://github.com/vargHQ/code2video-templates/tree/main/iphone-duo-fold) by varg (varg), MIT. The write-up and recipes below are varg's.\n\nThe device unfolds from closed to open; each half carries its own screen (image, recording or URL).\n\n**When:** Two-sided stories: prompt and result, editor and preview, old and new.\n\n**Watch out:** Do not put unrelated content on the halves; the fold should mean \"these two belong together\".\n\n**Timing:** Unfold 0.8–1.2 s power2.inOut; hold 2 s.\n\n**Also called:** foldable phone, duo screen, unfold reveal\n\n### In HyperFrames\n\nUse the varg template (HyperFrames-compatible screens): pass each half as an image, video, HTML page or URL.\n\n### In Remotion\n\n```bash\ngit clone https://github.com/vargHQ/code2video-templates && cd code2video-templates/iphone-duo-fold && bun render.ts --screen app.png\n```\n\n### In CapCut\n\nNot native; render the fold with the template and import it as a clip.\n\n### Ready-made components\n\n- [iPhone Duo Fold](https://skills.varg.ai/component/varg.iphone-duo-fold/) (varg): git clone https://github.com/vargHQ/code2video-templates && cd code2video-templates/iphone-duo-fold && bun render.ts --screen app.png\n\n### Where this comes from\n\n- [Rotato: 14 video mockup ideas and examples](https://rotato.app/blog/mockup-video-examples)","useWhen":["Two-sided stories: prompt and result, editor and preview, old and new."],"notFor":["Do not put unrelated content on the halves; the fold should mean \"these two belong together\"."],"publisher":{"name":"varg","handle":"vargHQ","kind":"varg","verified":true,"url":"https://varg.ai","avatar":"https://github.com/vargHQ.png"},"source":{"url":"https://github.com/vargHQ/code2video-templates/tree/main/iphone-duo-fold","repo":"vargHQ/code2video-templates","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"iPhone Duo Fold · varg","kind":"link","url":"https://skills.varg.ai/component/varg.iphone-duo-fold/","license":"MIT","note":"Your screens — an image, a screen recording, an HTML page or a URL — on the foldable iPhone Duo, unfolding in 3D with its progressive-blur fold. Any size or transparent."},{"role":"source","label":"Rotato: 14 video mockup ideas and examples","kind":"link","url":"https://rotato.app/blog/mockup-video-examples","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":200,"text":"Foldable Two-Screen Reveal"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["varg.iphone-duo-fold"],"aliases":["foldable phone","duo screen","unfold reveal"]}},{"id":"heygen-com/phone-in-hand-insert","slug":"phone-in-hand-insert","name":"Phone in Hand Insert","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"devices","tags":["phone","handheld","portrait","insert","hyperframes","remotion","capcut"],"summary":"A portrait phone held in frame shows a lock screen or app moment, as if filmed by a person.","description":"Built on [Slack Notification Ad](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/slack-notification-ad) by HeyGen (hyperframes), Apache-2.0. The write-up and recipes below are varg's.\n\nPortrait phone, slight handheld drift, notifications or the app opening; a snappy Apple-style cut-in and out.\n\n**When:** Consumer apps, notification-driven products, and YouTube/TikTok sponsor inserts.\n\n**Watch out:** Do not freeze the phone perfectly still; a 1–2 px handheld drift sells it.\n\n**Timing:** Insert 3–6 s; handheld drift ±2 px, 0.5 rad/s; cut in/out on beats.\n\n**Also called:** hand-held phone, lock screen insert, portrait phone moment\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add slack-notification-ad\n```\nOr `device-frame-stage` + `camera-shake` (handheld preset) for any screen.\n\n### In Remotion\n\n```tsx\nconst dx = Math.sin(frame/23)*2, dy = Math.cos(frame/31)*2;\n<div style={{transform:`translate(${dx}px,${dy}px) rotate(${dx*0.2}deg)`}}><Iphone videoSrc={app}/></div>\n```\n\n### In CapCut\n\nFilm a hand holding a green-screen phone, then Remove BG → Chroma key and place the recording under it; or use a hand-phone template.\n\n### Ready-made components\n\n- [Slack Notification Ad](https://skills.varg.ai/component/hf.slack-notification-ad/) (hyperframes): npx hyperframes add slack-notification-ad\n- [Device Frame Stage](https://skills.varg.ai/component/hf.device-frame-stage/) (hyperframes): npx hyperframes add device-frame-stage\n- [Camera Shake](https://skills.varg.ai/component/hf.camera-shake/) (hyperframes): npx hyperframes add camera-shake\n- [iPhone](https://skills.varg.ai/component/magicui.iphone/) (magic-ui): npx shadcn@latest add @magicui/iphone\n\n### Where this comes from\n\n- [Rotato: 14 video mockup ideas and examples](https://rotato.app/blog/mockup-video-examples)","useWhen":["Consumer apps, notification-driven products, and YouTube/TikTok sponsor inserts."],"notFor":["Do not freeze the phone perfectly still; a 1–2 px handheld drift sells it."],"publisher":{"name":"HeyGen · HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/slack-notification-ad","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Slack Notification Ad · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.slack-notification-ad/","license":"Apache-2.0","note":"A portrait lock screen fills with escalating Slack video requests before HeyGen delivers the payoff"},{"role":"component","label":"Device Frame Stage · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.device-frame-stage/","license":"Apache-2.0","note":"A phone or tablet mockup staged as a physical scene prop with a screen slot for arbitrary reconstructed UI, rising onto the stage, settling, and holding an idle float"},{"role":"component","label":"Camera Shake · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.camera-shake/","license":"Apache-2.0","note":"Procedural handheld, telephoto and rig camera shake for any wrapper: nine measured profiles with per-lens projection, closed-form and seek-safe"},{"role":"component","label":"iPhone · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.iphone/","license":"MIT","note":"Dark iPhone frame with Dynamic Island and side buttons, a video playing edge to edge on its screen"},{"role":"source","label":"Rotato: 14 video mockup ideas and examples","kind":"link","url":"https://rotato.app/blog/mockup-video-examples","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":200,"text":"Phone in Hand Insert"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.slack-notification-ad","hf.device-frame-stage","hf.camera-shake","magicui.iphone"],"aliases":["hand-held phone","lock screen insert","portrait phone moment"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/slack-notification-ad/preview.mp4","w":1080,"h":1920,"blur":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/slack-notification-ad/poster.jpg","source":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/slack-notification-ad/preview.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/slack-notification-ad","credit":"Slack Notification Ad · hyperframes","rights":"publisher-site","note":"Preview of the Slack Notification Ad component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"danielpetho/floating-device-bob","slug":"floating-device-bob","name":"Floating Device with Soft Bob","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"devices","tags":["device","float","idle","loop","hyperframes","remotion","capcut"],"summary":"The device hangs in space and bobs and tilts very slightly so a still shot never feels frozen.","description":"Built on [Float](https://github.com/danielpetho/fancy/blob/main/src/fancy/components/blocks/float.tsx) by fancy, MIT. The write-up and recipes below are varg's.\n\nA slow 6–10 px vertical bob with a 1–2° tilt and a shadow that breathes with it.\n\n**When:** Holding on a screenshot while the voiceover explains, or behind a title.\n\n**Watch out:** Do not bob fast or far; anything over ~12 px reads as floating debris.\n\n**Timing:** Loop 3–5 s, sine.inOut, amplitude 6–10 px, tilt ±1.5°.\n\n**Also called:** levitating mockup, float, idle bob\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add drift-hold\n```\nLoop-exact: period divides the clip length so the last frame matches the first.\n\n### In Remotion\n\n```tsx\nconst y = Math.sin(frame/fps*Math.PI*2/4)*8;\nconst r = Math.sin(frame/fps*Math.PI*2/4 + 1)*1.5;\n```\n\n### In CapCut\n\nAnimation → Combo/Loop: \"Float\"/\"Bounce\" at a slow speed; or keyframe Position Y up and down with ease.\n\n### Ready-made components\n\n- [Float](https://skills.varg.ai/component/fancy.float/) (fancy): npx shadcn add @fancy/float\n- [Drift Hold](https://skills.varg.ai/component/hf.drift-hold/) (hyperframes): npx hyperframes add drift-hold\n\n### Where this comes from\n\n- [Rotato: how to make an animated mockup](https://rotato.app/blog/animated-mockup)","useWhen":["Holding on a screenshot while the voiceover explains, or behind a title."],"notFor":["Do not bob fast or far; anything over ~12 px reads as floating debris."],"publisher":{"name":"Daniel Petho","handle":"danielpetho","kind":"community","verified":false,"url":"https://github.com/danielpetho","avatar":"https://github.com/danielpetho.png"},"source":{"url":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/blocks/float.tsx","repo":"danielpetho/fancy","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Float · fancy","kind":"link","url":"https://skills.varg.ai/component/fancy.float/","license":"MIT","note":"An album cover bobbing and tilting gently in 3D above its caption, as if floating in water"},{"role":"component","label":"Drift Hold · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.drift-hold/","license":"Apache-2.0","note":"A centered content card stays subtly alive through loop-exact rotation, scale breathing, and a slow light sweep."},{"role":"source","label":"Rotato: how to make an animated mockup","kind":"link","url":"https://rotato.app/blog/animated-mockup","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":200,"text":"Floating Device with Soft Bob"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["fancy.float","hf.drift-hold"],"aliases":["levitating mockup","float","idle bob"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/998cb3f37716/lib-fancy-float.mp4","blur":"https://s3.varg.ai/how-to/previews/50a76e80a095/lib-fancy-float.webp","source":"https://s3.varg.ai/how-to/previews/998cb3f37716/lib-fancy-float.mp4","page":"https://www.fancycomponents.dev/docs/components/blocks/float","credit":"Captured from the library’s own demo page (Fancy Components)","rights":"publisher-site","note":"Preview of the Float component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/macos-desktop-stage","slug":"macos-desktop-stage","name":"macOS Desktop Stage","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"devices","tags":["macOS","desktop","window","notification","hyperframes","remotion","capcut"],"summary":"A full Mac desktop with menu bar, dock and app windows sets the stage for a desktop app demo.","description":"Built on [macOS Tahoe Liquid Glass Desktop](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/macos-tahoe-liquid-glass) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nClean wallpaper, glass menu bar, one focused app window, and native notifications sliding in from the top right.\n\n**When:** Native desktop apps, menu bar utilities and system-level features.\n\n**Watch out:** Do not show a real desktop full of personal files; build a clean stage.\n\n**Timing:** Window open 0.3–0.4 s (scale 0.96→1), notification slide 0.4 s, hold 3 s each.\n\n**Also called:** Mac desktop, desktop app window, menu bar scene\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add macos-tahoe-liquid-glass\nnpx hyperframes add macos-notification\n```\n\n### In Remotion\n\n```tsx\n<AbsoluteFill style={{backgroundImage:`url(${wallpaper})`}}>\n  <MenuBar/><Window style={{transform:`scale(${interpolate(spring({frame,fps,config:{damping:200}}),[0,1],[0.96,1])})`}}/>\n</AbsoluteFill>\n```\n\n### In CapCut\n\nUse a clean wallpaper as background, overlay the app window recording with a rounded Mask and shadow; add a notification sticker.\n\n### Ready-made components\n\n- [macOS Tahoe Liquid Glass Desktop](https://skills.varg.ai/component/hf.macos-tahoe-liquid-glass/) (hyperframes): npx hyperframes add macos-tahoe-liquid-glass\n- [macOS Notification](https://skills.varg.ai/component/hf.macos-notification/) (hyperframes): npx hyperframes add macos-notification\n- [Native Notification Pop](https://skills.varg.ai/component/hf.native-notification-pop/) (hyperframes): npx hyperframes add native-notification-pop\n\n### Where this comes from\n\n- [Screen Studio: auto zoom, cursor smoothing, click effects](https://screen.studio/)","useWhen":["Native desktop apps, menu bar utilities and system-level features."],"notFor":["Do not show a real desktop full of personal files; build a clean stage."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/macos-tahoe-liquid-glass","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"macOS Tahoe Liquid Glass Desktop · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.macos-tahoe-liquid-glass/","license":"Apache-2.0","note":"3D MacBook with a macOS Tahoe-style desktop, glass menu bar, Finder window, dock, and cinematic device camera move."},{"role":"component","label":"macOS Notification · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.macos-notification/","license":"Apache-2.0","note":"Animated macOS-style notification banner with app icon and message"},{"role":"component","label":"Native Notification Pop · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.native-notification-pop/","license":"Apache-2.0","note":"One system-faithful notification banner (iOS or macOS) drops in over any scene on an accurate interruptible spring: fast arrival, soft overshoot, settled mass, backdrop blur, app dot, title, one body line…"},{"role":"source","label":"Screen Studio: auto zoom, cursor smoothing, click effects","kind":"link","url":"https://screen.studio/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"cards","hue":200,"text":"macOS Desktop Stage"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.macos-tahoe-liquid-glass","hf.macos-notification","hf.native-notification-pop"],"aliases":["Mac desktop","desktop app window","menu bar scene"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/macos-tahoe-liquid-glass.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/macos-tahoe-liquid-glass.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/macos-tahoe-liquid-glass.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/macos-tahoe-liquid-glass","credit":"macOS Tahoe Liquid Glass Desktop · hyperframes","rights":"publisher-site","note":"Preview of the macOS Tahoe Liquid Glass Desktop component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/editor-types-the-code","slug":"editor-types-the-code","name":"Editor Types the Code","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"code","tags":["code","typing","editor","developer","hyperframes","remotion","capcut"],"summary":"Syntax-highlighted code types into an editor window with a caret riding the frontier.","description":"Built on [Code Typing](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-typing) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA real editor theme (VS Code dark), line numbers, the caret moving with human chunks rather than one char per frame.\n\n**When:** Show how little code it takes: SDK usage, API calls, config.\n\n**Watch out:** Do not type more than ~8–12 lines on screen; paste the boilerplate and type only the lines that matter.\n\n**Timing:** 30–60 ms per char in bursts of 3–8 chars with 80–200 ms pauses; hold 1.5 s after the last line.\n\n**Also called:** code typing, typed snippet, IDE typing\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add code-typing\n```\nToken-streamed: the visible frontier is derived from time, so scrubbing is exact.\n\n### In Remotion\n\n```tsx\n// npm create video@latest -- --code-hike  (Code Hike template)\nconst n = Math.floor(interpolate(frame,[0,90],[0,code.length],{extrapolateRight:'clamp'}));\n<Pre code={highlighted} visibleChars={n}/>\n```\n\n### In CapCut\n\nRecord the editor typing for real (or with a typing tool), speed up 2×, and zoom 150% on the active lines.\n\n### Ready-made components\n\n- [Code Typing](https://skills.varg.ai/component/hf.code-typing/) (hyperframes): npx hyperframes add code-typing\n- [Code Snippet - Dark Modern](https://skills.varg.ai/component/hf.code-snippet-dark-modern/) (hyperframes): npx hyperframes add code-snippet-dark-modern\n- [Glass Code Block](https://skills.varg.ai/component/remocn.glass-code-block/) (remocn): npx shadcn@latest add @remocn/glass-code-block\n\n### Where this comes from\n\n- [Remotion template: Code Hike](https://remotion.dev/templates/code-hike)\n- [charmbracelet/vhs: terminal recordings as code (TypingSpeed, Sleep)](https://github.com/charmbracelet/vhs)","useWhen":["Show how little code it takes: SDK usage, API calls, config."],"notFor":["Do not type more than ~8–12 lines on screen; paste the boilerplate and type only the lines that matter."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-typing","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Code Typing · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.code-typing/","license":"Apache-2.0","note":"Token-streamed typing reveal with a caret that tracks the frontier — deterministic, no CSS animation."},{"role":"component","label":"Code Snippet - Dark Modern · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.code-snippet-dark-modern/","license":"Apache-2.0","note":"VS Code workbench with per-character typing animation in the Dark Modern theme. Full editor chrome with activity bar, sidebar, tabs, terminal, and status bar."},{"role":"component","label":"Glass Code Block · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.glass-code-block/","license":"MIT","note":"A premium frosted-glass code editor window with a regex tokenizer and line-by-line stagger reveal."},{"role":"source","label":"Remotion template: Code Hike","kind":"link","url":"https://remotion.dev/templates/code-hike","license":"link-only"},{"role":"source","label":"charmbracelet/vhs: terminal recordings as code (TypingSpeed, Sleep)","kind":"link","url":"https://github.com/charmbracelet/vhs","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"terminal","hue":140,"text":"Editor Types the Code"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.code-typing","hf.code-snippet-dark-modern","remocn.glass-code-block"],"aliases":["code typing","typed snippet","IDE typing"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-typing.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-typing.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-typing.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/code-typing","credit":"Code Typing · hyperframes","rights":"publisher-site","note":"Preview of the Code Typing component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/red-green-diff","slug":"red-green-diff","name":"Red/Green Diff Collapse","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"code","tags":["code","diff","git","change","hyperframes","remotion","capcut"],"summary":"Removed lines flash red and collapse away while added lines expand in green.","description":"Built on [Code Diff](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-diff) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nUnified diff in an editor frame: red lines shrink in height to zero, green lines grow from zero with a left gutter bar.\n\n**When:** Show an AI fix, a migration or a one-line config change.\n\n**Watch out:** Do not show both sides at once and leave it static; the collapse/expand motion is what tells the story.\n\n**Timing:** Red flash 0.2 s, collapse 0.35 s, green expand 0.4 s power2.out; stagger 0.05 s per line.\n\n**Also called:** code diff, diff highlight, PR change\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add code-diff\n```\n```html\n<div data-composition-id=\"code-diff\" data-composition-src=\"compositions/code-diff.html\" data-start=\"6\" data-duration=\"5\" data-track-index=\"2\"></div>\n```\n\n### In Remotion\n\n```tsx\nconst h = interpolate(frame,[6,16],[1,0],{extrapolateLeft:'clamp',extrapolateRight:'clamp'});\n<div style={{height:`${h*1.5}em`, overflow:'hidden', background:'rgba(248,81,73,0.15)'}}>{removed}</div>\n```\n\n### In CapCut\n\nScreenshot before and after diffs; add red/green rectangles over changed lines with Fade in; cross-fade the screenshots.\n\n### Ready-made components\n\n- [Code Diff](https://skills.varg.ai/component/hf.code-diff/) (hyperframes): npx hyperframes add code-diff\n\n### Where this comes from\n\n- [Remotion template: Code Hike](https://remotion.dev/templates/code-hike)\n- [Anthony Fu: Shiki Magic Move](https://antfu.me/posts/shiki-magic-move)","useWhen":["Show an AI fix, a migration or a one-line config change."],"notFor":["Do not show both sides at once and leave it static; the collapse/expand motion is what tells the story."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-diff","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Code Diff · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.code-diff/","license":"Apache-2.0","note":"An edit shown as a colored diff — removed lines collapse in red, added lines expand in green."},{"role":"source","label":"Remotion template: Code Hike","kind":"link","url":"https://remotion.dev/templates/code-hike","license":"link-only"},{"role":"source","label":"Anthony Fu: Shiki Magic Move","kind":"link","url":"https://antfu.me/posts/shiki-magic-move","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"terminal","hue":140,"text":"Red/Green Diff Collapse"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.code-diff"],"aliases":["code diff","diff highlight","PR change"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-diff.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-diff.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-diff.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/code-diff","credit":"Code Diff · hyperframes","rights":"publisher-site","note":"Preview of the Code Diff component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/spotlight-one-line","slug":"spotlight-one-line","name":"Spotlight One Line of Code","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"code","tags":["code","highlight","focus","explain","hyperframes","remotion","capcut"],"summary":"A highlight band sweeps onto the one line that matters while the rest of the file dims.","description":"Built on [Code Highlight Sweep](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-highlight) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nOther lines drop to ~35% opacity, the target line gets a soft accent band and full brightness; optional callout label at the right.\n\n**When:** Explain the key line of an SDK example or the fix inside a long function.\n\n**Watch out:** Do not dim to near-black; context must stay readable enough to orient.\n\n**Timing:** Dim 0.3 s, band sweep 0.4 s power2.out, hold 1.5–2.5 s.\n\n**Also called:** line highlight, code focus, dim context\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add code-highlight\n```\n\n### In Remotion\n\n```tsx\nconst d = interpolate(frame,[0,9],[1,0.35],{extrapolateRight:'clamp'});\nlines.map((l,i)=> <div style={{opacity: i===target?1:d, background: i===target?'rgba(56,139,253,0.18)':'none'}}>{l}</div>)\n```\n\n### In CapCut\n\nDuplicate the code clip; on the top copy Mask → Rectangle around the line; lower the bottom copy's Opacity to 40%.\n\n### Ready-made components\n\n- [Code Highlight Sweep](https://skills.varg.ai/component/hf.code-highlight/) (hyperframes): npx hyperframes add code-highlight\n- [Code Scroll To Line](https://skills.varg.ai/component/hf.code-scroll/) (hyperframes): npx hyperframes add code-scroll\n\n### Where this comes from\n\n- [Slidev: Shiki Magic Move (800 ms default)](https://sli.dev/features/shiki-magic-move)\n- [Remotion template: Code Hike](https://remotion.dev/templates/code-hike)","useWhen":["Explain the key line of an SDK example or the fix inside a long function."],"notFor":["Do not dim to near-black; context must stay readable enough to orient."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-highlight","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Code Highlight Sweep · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.code-highlight/","license":"Apache-2.0","note":"A highlight band sweeps across a target line while the surrounding context dims — draws the eye to one line."},{"role":"component","label":"Code Scroll To Line · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.code-scroll/","license":"Apache-2.0","note":"The camera scrolls a long file to bring a target line to center and spotlights it — for walking through real modules."},{"role":"source","label":"Slidev: Shiki Magic Move (800 ms default)","kind":"link","url":"https://sli.dev/features/shiki-magic-move","license":"link-only"},{"role":"source","label":"Remotion template: Code Hike","kind":"link","url":"https://remotion.dev/templates/code-hike","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"terminal","hue":140,"text":"Spotlight One Line of Code"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.code-highlight","hf.code-scroll"],"aliases":["line highlight","code focus","dim context"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-highlight.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-highlight.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-highlight.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/code-highlight","credit":"Code Highlight Sweep · hyperframes","rights":"publisher-site","note":"Preview of the Code Highlight Sweep component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/code-morphs-versions","slug":"code-morphs-versions","name":"Code Morphs Between Versions","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"code","tags":["code","morph","magic move","tutorial","hyperframes","remotion","capcut"],"summary":"One snippet transforms into the next: shared tokens glide to new positions, removed ones fade, new ones fade in.","description":"Built on [Code Morph](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-morph) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nLike Keynote Magic Move for code: the editor never cuts, tokens slide on smooth paths.\n\n**When:** Step-by-step tutorials and \"before → after\" refactors; showing an API getting simpler.\n\n**Watch out:** Do not morph between files that share almost nothing; it becomes a confetti of tokens.\n\n**Timing:** 0.6–0.8 s per morph (Shiki Magic Move defaults to 800 ms), ease-in-out; hold ≥ 1.5 s on each version.\n\n**Also called:** magic move, token morph, code transition\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add code-morph\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/code-morph\n// or Code Hike template: npm create video@latest -- --code-hike (steps from annotated markdown)\n```\n\n### In CapCut\n\nNot native; render the morph in Slidev (````md magic-move` blocks) or Remotion and import it.\n\n### Ready-made components\n\n- [Code Morph](https://skills.varg.ai/component/hf.code-morph/) (hyperframes): npx hyperframes add code-morph\n- [Code Morph](https://skills.varg.ai/component/remocn.code-morph/) (remocn): npx shadcn@latest add @remocn/code-morph\n\n### Where this comes from\n\n- [Anthony Fu: Shiki Magic Move](https://antfu.me/posts/shiki-magic-move)\n- [Slidev: Shiki Magic Move (800 ms default)](https://sli.dev/features/shiki-magic-move)\n- [Remotion template: Code Hike](https://remotion.dev/templates/code-hike)","useWhen":["Step-by-step tutorials and \"before → after\" refactors; showing an API getting simpler."],"notFor":["Do not morph between files that share almost nothing; it becomes a confetti of tokens."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-morph","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Code Morph · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.code-morph/","license":"Apache-2.0","note":"One snippet transforms into another — tokens glide between positions, leavers fade out, enterers fade in. Shiki Magic Move re-driven as a paused GSAP timeline."},{"role":"component","label":"Code Morph · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.code-morph/","license":"MIT","note":"A flat code editor that morphs between versions of a file, gliding each surviving token to its new line and column while removed code dissolves and new code fades in."},{"role":"source","label":"Anthony Fu: Shiki Magic Move","kind":"link","url":"https://antfu.me/posts/shiki-magic-move","license":"link-only"},{"role":"source","label":"Slidev: Shiki Magic Move (800 ms default)","kind":"link","url":"https://sli.dev/features/shiki-magic-move","license":"link-only"},{"role":"source","label":"Remotion template: Code Hike","kind":"link","url":"https://remotion.dev/templates/code-hike","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"terminal","hue":140,"text":"Code Morphs Between Versions"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.code-morph","remocn.code-morph"],"aliases":["magic move","token morph","code transition"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-morph.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-morph.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-morph.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/code-morph","credit":"Code Morph · hyperframes","rights":"publisher-site","note":"Preview of the Code Morph component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/terminal-session-run","slug":"terminal-session-run","name":"Terminal Session Run","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"code","tags":["terminal","CLI","logs","developer","ffmpeg","hyperframes","remotion","capcut"],"summary":"A terminal types a command, then streams real-looking log output with green checks.","description":"Built on [Terminal Simulator](https://github.com/heygen-com/hyperframes/tree/main/registry/components/terminal-simulator) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nDark terminal with traffic lights, prompt types at human speed, output lines roll in faster, old lines scroll off the top.\n\n**When:** CLIs, deploy tools, agents that run in the terminal.\n\n**Watch out:** Do not stream walls of logs; keep 4–8 meaningful lines and fake-skip the rest with \"…\".\n\n**Timing:** Typing 50–100 ms/char; output lines every 80–200 ms; 0.5 s pause before the final success line.\n\n**Also called:** CLI demo, terminal window, command run\n\n### In FFmpeg\n\n```bash\n# record a reproducible session with VHS (uses ffmpeg under the hood)\n# demo.tape: Set TypingSpeed 75ms\\nType \"npx varg render\"\\nEnter\\nSleep 3s\nvhs demo.tape\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add terminal-simulator\n```\nOr `code-terminal-run` for one command with a token-chrome panel.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/terminal-simulator\n<TerminalSimulator commands={[{cmd:'npx varg render', output:['✓ scenes 4','✓ audio','✓ done in 38s']}]}/>\n```\n\n### In CapCut\n\nRecord the real terminal (or a VHS tape), trim the waits, speed up output 2×, zoom on the final line.\n\n### Ready-made components\n\n- [Terminal Simulator](https://skills.varg.ai/component/hf.terminal-simulator/) (hyperframes): npx hyperframes add terminal-simulator\n- [Code Terminal Run](https://skills.varg.ai/component/hf.code-terminal-run/) (hyperframes): npx hyperframes add code-terminal-run\n- [Terminal Simulator](https://skills.varg.ai/component/remocn.terminal-simulator/) (remocn): npx shadcn@latest add @remocn/terminal-simulator\n\n### Where this comes from\n\n- [charmbracelet/vhs: terminal recordings as code (TypingSpeed, Sleep)](https://github.com/charmbracelet/vhs)","useWhen":["CLIs, deploy tools, agents that run in the terminal."],"notFor":["Do not stream walls of logs; keep 4–8 meaningful lines and fake-skip the rest with \"…\"."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/terminal-simulator","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Terminal Simulator · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.terminal-simulator/","license":"Apache-2.0","note":"A terminal window types commands and streams log output."},{"role":"component","label":"Code Terminal Run · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.code-terminal-run/","license":"Apache-2.0","note":"A token-chrome terminal panel runs one command: the prompt line types deterministically behind an integer-cycle caret, executes after a beat, and output lines print one per cue before a fresh prompt appears."},{"role":"component","label":"Terminal Simulator · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.terminal-simulator/","license":"MIT","note":"Terminal window that types out commands and rolls old lines off the top."},{"role":"source","label":"charmbracelet/vhs: terminal recordings as code (TypingSpeed, Sleep)","kind":"link","url":"https://github.com/charmbracelet/vhs","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"terminal","hue":140,"text":"Terminal Session Run"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.terminal-simulator","hf.code-terminal-run","remocn.terminal-simulator"],"aliases":["CLI demo","terminal window","command run"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/7b3d64d5d345/take-terminal-session-run.mp4","w":640,"h":360,"duration":5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAYZJREFUeJyFU4tuo0AM9GOBJjn1+v/fWKnVqUiX4MfNLmzCJVFrKQTMejwzNnw4/aYWzJw8suBfuUZREfo/MjPSsobjR36u1xalo6iWcnp9C3ejSVSRPJ9v53ZR0cUTHU0yzDh8A0J30oFElxgjPTwBJ6JjeXlA6dwzL8tFogCPwDKzdFGaJKfjL7D4Os9IDgMdj6e7elzdfVmWKjOSSWqu4QJSUwFLygJkKFwLVkfuDFpfVTqXSxWIEgoWBZEiYJKUrXb+muFm73/v9NW1OglhMGp+STDAutlrrJx/DLOloSDQNcCDkkodJLJKAS68FxKPHk/TBFHum8xoZzAaHC6bF0/GTFezrvdtg7KUAY9mvq/tQECVzdG10iPgyPfoTY3fgFqZS8rh9aCqZoadBhBUxF9/atPqd1jdOm2Zm9ngMvKIiWIB8DhMwzCWeZm7r09ivx8dCMaR/fl4r18T14bSztTFJZIdFN62+iBoIkMh5Q5I4b+FxefWqg224jeg9f6RGnddiH8B5xeLOiFvzwAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item terminal-simulator (Apache-2.0) in a host composition","page":"https://hyperframes.heygen.com/catalog/components/terminal-simulator","credit":"Rendered by varg · HyperFrames Terminal Simulator","rights":"generated","note":"The Terminal Simulator component used as its header comment describes, with demo copy","bytes":23854,"addedAt":"2026-10-28"}},{"id":"magicuidesign/one-line-install-card","slug":"one-line-install-card","name":"One-Line Install Card","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"code","tags":["install","CLI","CTA","developer","ffmpeg","hyperframes","remotion","capcut"],"summary":"A single install command types into a small terminal card, prints a success check, and holds.","description":"Built on [Terminal](https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/terminal.tsx) by magic-ui, MIT. The write-up and recipes below are varg's.\n\nCompact terminal (or pill) with `npx … add` typing, a green ✓ line, and a copy icon; centered with lots of air.\n\n**When:** End of a developer video, right before or as the CTA.\n\n**Watch out:** Do not show a multi-step install; one copyable line or link to docs.\n\n**Timing:** Typing 60–80 ms/char, ✓ line after 0.4 s, hold 2–3 s.\n\n**Also called:** install command, npx line, get started command\n\n### In FFmpeg\n\n```bash\n-vf \"drawtext=fontfile=JetBrainsMono.ttf:text='$ npx skills add varg-ai':x=(w-tw)/2:y=h/2:fontsize=48:fontcolor=white:box=1:boxcolor=0x111111@0.9:boxborderw=28\"\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add code-snippet-apple-terminal-pro\n```\nSet the command text in the block variables; keep it on one line.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @magicui/terminal  (drive typing from frame, not timers)\nconst n = Math.floor(interpolate(frame,[0,cmd.length*2],[0,cmd.length],{extrapolateRight:'clamp'}));\n```\n\n### In CapCut\n\nText → monospace font on a dark rounded shape; Animation In \"Typewriter\" 1–1.5 s; add a ✓ text line 0.4 s later.\n\n### Ready-made components\n\n- [Terminal](https://skills.varg.ai/component/magicui.terminal/) (magic-ui): npx shadcn@latest add @magicui/terminal\n- [Code Snippet - Apple Terminal Pro](https://skills.varg.ai/component/hf.code-snippet-apple-terminal-pro/) (hyperframes): npx hyperframes add code-snippet-apple-terminal-pro\n- [Typing Text](https://skills.varg.ai/component/animata.typing-text/) (animata): npx shadcn@latest add https://animata.design/r/text/typing-text.json\n\n### Where this comes from\n\n- [charmbracelet/vhs: terminal recordings as code (TypingSpeed, Sleep)](https://github.com/charmbracelet/vhs)","useWhen":["End of a developer video, right before or as the CTA."],"notFor":["Do not show a multi-step install; one copyable line or link to docs."],"publisher":{"name":"Magic UI","handle":"magicuidesign","kind":"community","verified":false,"url":"https://magicui.design","avatar":"https://github.com/magicuidesign.png"},"source":{"url":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/terminal.tsx","repo":"magicuidesign/magicui","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Terminal · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.terminal/","license":"MIT","note":"Dark macOS-style terminal types a command, then prints green check lines one after another"},{"role":"component","label":"Code Snippet - Apple Terminal Pro · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.code-snippet-apple-terminal-pro/","license":"Apache-2.0","note":"Apple Terminal Pro profile: black background with grey text and lime green cursor, per-character typing animation of a shell session."},{"role":"component","label":"Typing Text · animata","kind":"link","url":"https://skills.varg.ai/component/animata.typing-text/","license":"MIT","note":"A shell prompt types out a command in amber monospace, holds, erases it and types it again"},{"role":"source","label":"charmbracelet/vhs: terminal recordings as code (TypingSpeed, Sleep)","kind":"link","url":"https://github.com/charmbracelet/vhs","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"terminal","hue":140,"text":"One-Line Install Card"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["magicui.terminal","hf.code-snippet-apple-terminal-pro","animata.typing-text"],"aliases":["install command","npx line","get started command"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/419ca5b56dc4/lib-magic-ui-terminal.mp4","blur":"https://s3.varg.ai/how-to/previews/143d0f7985bb/lib-magic-ui-terminal.webp","source":"https://s3.varg.ai/how-to/previews/419ca5b56dc4/lib-magic-ui-terminal.mp4","page":"https://magicui.design/docs/components/terminal","credit":"Captured from the library’s own demo page (Magic UI)","rights":"publisher-site","note":"Preview of the Terminal component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/camera-scrolls-long-file","slug":"camera-scrolls-long-file","name":"Camera Scrolls a Long File","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"code","tags":["code","scroll","walkthrough","file","ffmpeg","hyperframes","remotion","capcut"],"summary":"The view scrolls through a long file and stops with the target line centered and lit.","description":"Built on [Code Scroll To Line](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-scroll) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nSmooth decelerating scroll with slight motion blur, then a spotlight on the destination line.\n\n**When:** Walk through a real codebase file or show scale (\"this is all generated\").\n\n**Watch out:** Do not scroll at constant speed; ease in and out so the stop is readable.\n\n**Timing:** Scroll 0.8–1.4 s power3.inOut; spotlight 0.3 s after the stop.\n\n**Also called:** code scroll, file walkthrough, scroll to line\n\n### In FFmpeg\n\n```bash\n# scroll a tall code image: crop window moves down\n-vf \"crop=1920:1080:0:'min(ih-1080, t*900)'\"\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add code-scroll\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/glass-code-walk\nconst y = interpolate(frame,[0,36],[0,-targetLine*lineH + 400],{extrapolateRight:'clamp',easing:Easing.inOut(Easing.cubic)});\n```\n\n### In CapCut\n\nAdd a tall code screenshot, keyframe Position Y from top to the target with ease-in-out.\n\n### Ready-made components\n\n- [Code Scroll To Line](https://skills.varg.ai/component/hf.code-scroll/) (hyperframes): npx hyperframes add code-scroll\n- [Glass Code Walk](https://skills.varg.ai/component/remocn.glass-code-walk/) (remocn): npx shadcn@latest add @remocn/glass-code-walk\n\n### Where this comes from\n\n- [Remotion template: Code Hike](https://remotion.dev/templates/code-hike)","useWhen":["Walk through a real codebase file or show scale (\"this is all generated\")."],"notFor":["Do not scroll at constant speed; ease in and out so the stop is readable."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-scroll","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Code Scroll To Line · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.code-scroll/","license":"Apache-2.0","note":"The camera scrolls a long file to bring a target line to center and spotlights it — for walking through real modules."},{"role":"component","label":"Glass Code Walk · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.glass-code-walk/","license":"MIT","note":"A camera that scans a glass code block top to bottom as it types, then pulls back to a centered hold."},{"role":"source","label":"Remotion template: Code Hike","kind":"link","url":"https://remotion.dev/templates/code-hike","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"terminal","hue":140,"text":"Camera Scrolls a Long File"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.code-scroll","remocn.glass-code-walk"],"aliases":["code scroll","file walkthrough","scroll to line"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-scroll.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-scroll.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-scroll.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/code-scroll","credit":"Code Scroll To Line · hyperframes","rights":"publisher-site","note":"Preview of the Code Scroll To Line component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"Remocn/code-left-ui-right","slug":"code-left-ui-right","name":"Code Left, Live UI Right","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"code","tags":["code","preview","split screen","UI","hyperframes","remotion","capcut"],"summary":"Code types on the left and the UI on the right snaps to match after each change.","description":"Built on [Live Code Compilation](https://remocn.dev/r/live-code-compilation.json) by Kapish Dima (remocn), MIT. The write-up and recipes below are varg's.\n\nTwo panes: editor and preview. Each typed edit triggers a quick flash/update on the preview side.\n\n**When:** Frameworks, UI libraries, design-to-code and AI coding tools.\n\n**Watch out:** Do not let the preview lag; the update should land within 0.2 s of the edit finishing.\n\n**Timing:** Per edit: typing 0.8–1.5 s, preview update 0.2–0.3 s.\n\n**Also called:** live preview, split code and result, HMR demo\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add code-typing\n```\nTwo clips side by side; fire a 0.25 s `tl.fromTo(preview,{opacity:0.4},{opacity:1})` and swap the preview image at each edit's end time.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/live-code-compilation\n// or @remocn/chat-to-preview-layout for chat on the left\n```\n\n### In CapCut\n\nSplit screen: two clips side by side (Basic → Position); cut the preview clip at each edit point.\n\n### Ready-made components\n\n- [Live Code Compilation](https://skills.varg.ai/component/remocn.live-code-compilation/) (remocn): npx shadcn@latest add @remocn/live-code-compilation\n- [Chat to Preview Layout](https://skills.varg.ai/component/remocn.chat-to-preview-layout/) (remocn): npx shadcn@latest add @remocn/chat-to-preview-layout\n- [Code Typing](https://skills.varg.ai/component/hf.code-typing/) (hyperframes): npx hyperframes add code-typing\n\n### Where this comes from\n\n- [Cursor 3 Design Mode and its launch video](https://pasqualepillitteri.it/en/news/3794/cursor-design-mode-what-it-is-how-it-works-cursor-3)\n- [Bohdan Motion: breakdown of the Grok Build Mode launch video](https://x.com/bohdanmotion/status/2082193183111614671)","useWhen":["Frameworks, UI libraries, design-to-code and AI coding tools."],"notFor":["Do not let the preview lag; the update should land within 0.2 s of the edit finishing."],"publisher":{"name":"Kapish Dima · remocn","handle":"Remocn","kind":"community","verified":false,"url":"https://remocn.dev","avatar":"https://github.com/Remocn.png"},"source":{"url":"https://remocn.dev/r/live-code-compilation.json","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Live Code Compilation · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.live-code-compilation/","license":"MIT","note":"Split-screen where typed code on the left snaps a live UI preview on the right, HMR-style."},{"role":"component","label":"Chat to Preview Layout · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.chat-to-preview-layout/","license":"MIT","note":"Two-column layout where chat shrinks and preview expands."},{"role":"component","label":"Code Typing · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.code-typing/","license":"Apache-2.0","note":"Token-streamed typing reveal with a caret that tracks the frontier — deterministic, no CSS animation."},{"role":"source","label":"Cursor 3 Design Mode and its launch video","kind":"link","url":"https://pasqualepillitteri.it/en/news/3794/cursor-design-mode-what-it-is-how-it-works-cursor-3","license":"link-only"},{"role":"source","label":"Bohdan Motion: breakdown of the Grok Build Mode launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2082193183111614671","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"terminal","hue":140,"text":"Code Left, Live UI Right"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["remocn.live-code-compilation","remocn.chat-to-preview-layout","hf.code-typing"],"aliases":["live preview","split code and result","HMR demo"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-typing.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-typing.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-typing.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/code-typing","credit":"Code Typing · hyperframes","rights":"publisher-site","note":"Preview of the Code Typing component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/code-on-3d-slab","slug":"code-on-3d-slab","name":"Code on a Lit 3D Slab","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"code","tags":["code","3D","hero","developer","hyperframes","remotion","capcut"],"summary":"Highlighted code sits on a beveled slab that turns through space under studio light, then faces the camera.","description":"Built on [Code 3D Extrude](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-3d-extrude) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nThick glassy or dark slab, specular light sliding across, code crisp on the face; optional particles assembling into the glyphs.\n\n**When:** Hero shot of an SDK or API in a launch film; title beat for developer products.\n\n**Watch out:** Do not keep the slab angled while the viewer is meant to read; land flat and hold.\n\n**Timing:** Turn 1.2–1.8 s power2.inOut, land flat, hold 1.5 s.\n\n**Also called:** 3D code, code hero, extruded code\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add code-3d-extrude\n```\nOr `code-particle-assemble` / `code-shader-dissolve` for compile-in effects.\n\n### In Remotion\n\n```tsx\nconst ry = interpolate(frame,[0,45],[-28,0],{extrapolateRight:'clamp',easing:Easing.inOut(Easing.quad)});\n<div style={{transform:`perspective(1600px) rotateY(${ry}deg)`, boxShadow:'0 40px 80px rgba(0,0,0,.5)'}}><CodeBlock/></div>\n```\n\n### In CapCut\n\nOverlay a code screenshot; Animation In \"Rotate 3D\"; add a light-sweep effect.\n\n### Ready-made components\n\n- [Code 3D Extrude](https://skills.varg.ai/component/hf.code-3d-extrude/) (hyperframes): npx hyperframes add code-3d-extrude\n- [Code Particle Assemble](https://skills.varg.ai/component/hf.code-particle-assemble/) (hyperframes): npx hyperframes add code-particle-assemble\n- [Code Shader Dissolve](https://skills.varg.ai/component/hf.code-shader-dissolve/) (hyperframes): npx hyperframes add code-shader-dissolve\n\n### Where this comes from\n\n- [Remotion template: Code Hike](https://remotion.dev/templates/code-hike)","useWhen":["Hero shot of an SDK or API in a launch film; title beat for developer products."],"notFor":["Do not keep the slab angled while the viewer is meant to read; land flat and hold."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-3d-extrude","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Code 3D Extrude · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.code-3d-extrude/","license":"Apache-2.0","note":"Syntax-highlighted code on a lit, beveled 3D slab that rotates through real space and settles to a readable rest — true WebGL depth and lighting, not a 2D transform."},{"role":"component","label":"Code Particle Assemble · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.code-particle-assemble/","license":"Apache-2.0","note":"Thousands of GPU points scatter through space and fly to the exact glyph pixels of the code, resolving into readable syntax-highlighted text — a particle system, not a token tween."},{"role":"component","label":"Code Shader Dissolve · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.code-shader-dissolve/","license":"Apache-2.0","note":"The code compiles into existence: a GPU fragment shader resolves it out of seeded noise with a chromatic dissolve front and edge glow, then holds crisp."},{"role":"source","label":"Remotion template: Code Hike","kind":"link","url":"https://remotion.dev/templates/code-hike","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"terminal","hue":140,"text":"Code on a Lit 3D Slab"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.code-3d-extrude","hf.code-particle-assemble","hf.code-shader-dissolve"],"aliases":["3D code","code hero","extruded code"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-3d-extrude.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-3d-extrude.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-3d-extrude.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/code-3d-extrude","credit":"Code 3D Extrude · hyperframes","rights":"publisher-site","note":"Preview of the Code 3D Extrude component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"Remocn/agent-cli-welcome","slug":"agent-cli-welcome","name":"Agent CLI Welcome Screen","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"code","tags":["agent","terminal","CLI","coding agent","hyperframes","remotion","capcut"],"summary":"A coding agent's terminal welcome screen appears, a prompt types, and the agent starts working.","description":"Built on [Claude Code](https://remocn.dev/r/claude-code.json) by Kapish Dima (remocn), MIT. The write-up and recipes below are varg's.\n\nDashed welcome box with the tool name, a prompt line typing the task, then status lines and file edits streaming.\n\n**When:** Videos about agent workflows, skills and plugins for terminal agents.\n\n**Watch out:** Do not copy a brand's TUI pixel for pixel without permission; keep it generic or use the real recording.\n\n**Timing:** Welcome 0.4 s, prompt typing 50–70 ms/char, status lines every 0.3 s.\n\n**Also called:** Claude Code screen, TUI welcome, coding agent terminal\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add code-snippet-apple-terminal-pro\nnpx hyperframes add typed-prompt\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/claude-code\n// npx shadcn@latest add @remocn/opencode\n```\n\n### In CapCut\n\nRecord the real terminal agent session; cut thinking pauses; zoom on the prompt then on the result.\n\n### Ready-made components\n\n- [Claude Code](https://skills.varg.ai/component/remocn.claude-code/) (remocn): npx shadcn@latest add @remocn/claude-code\n- [OpenCode](https://skills.varg.ai/component/remocn.opencode/) (remocn): npx shadcn@latest add @remocn/opencode\n- [Code Snippet - Apple Terminal Pro](https://skills.varg.ai/component/hf.code-snippet-apple-terminal-pro/) (hyperframes): npx hyperframes add code-snippet-apple-terminal-pro\n- [Typed Prompt](https://skills.varg.ai/component/hf.typed-prompt/) (hyperframes): npx hyperframes add typed-prompt\n\n### Where this comes from\n\n- [Vox on X: a 4-agent HyperFrames motion team for product videos](https://x.com/Voxyz_ai/status/2104194355556671987)\n- [charmbracelet/vhs: terminal recordings as code (TypingSpeed, Sleep)](https://github.com/charmbracelet/vhs)","useWhen":["Videos about agent workflows, skills and plugins for terminal agents."],"notFor":["Do not copy a brand's TUI pixel for pixel without permission; keep it generic or use the real recording."],"publisher":{"name":"Kapish Dima · remocn","handle":"Remocn","kind":"community","verified":false,"url":"https://remocn.dev","avatar":"https://github.com/Remocn.png"},"source":{"url":"https://remocn.dev/r/claude-code.json","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Claude Code · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.claude-code/","license":"MIT","note":"Animated Claude Code CLI welcome screen — terminal window with a dashed welcome box, recent activity and what's new panels, and a prompt line that types a command with a block cursor. Dark/light themes."},{"role":"component","label":"OpenCode · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.opencode/","license":"MIT","note":"Animated OpenCode TUI welcome screen — two-tone wordmark, an input box with a blue accent bar that types a query, a model status line, and command hints. Dark/light themes."},{"role":"component","label":"Code Snippet - Apple Terminal Pro · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.code-snippet-apple-terminal-pro/","license":"Apache-2.0","note":"Apple Terminal Pro profile: black background with grey text and lime green cursor, per-character typing animation of a shell session."},{"role":"component","label":"Typed Prompt · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.typed-prompt/","license":"Apache-2.0","note":"A prompt line types itself in chunked human cadence behind a deterministic blinking caret, with optional backspace-and-retype correction of the final word."},{"role":"source","label":"Vox on X: a 4-agent HyperFrames motion team for product videos","kind":"link","url":"https://x.com/Voxyz_ai/status/2104194355556671987","license":"link-only"},{"role":"source","label":"charmbracelet/vhs: terminal recordings as code (TypingSpeed, Sleep)","kind":"link","url":"https://github.com/charmbracelet/vhs","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"terminal","hue":140,"text":"Agent CLI Welcome Screen"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["remocn.claude-code","remocn.opencode","hf.code-snippet-apple-terminal-pro","hf.typed-prompt"],"aliases":["Claude Code screen","TUI welcome","coding agent terminal"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-snippet-apple-terminal-pro.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-snippet-apple-terminal-pro.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-snippet-apple-terminal-pro.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/code-snippet-apple-terminal-pro","credit":"Code Snippet - Apple Terminal Pro · hyperframes","rights":"publisher-site","note":"Preview of the Code Snippet - Apple Terminal Pro component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"Remocn/prompt-typed-then-generate","slug":"prompt-typed-then-generate","name":"Prompt Typed, Then Generate","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"agent-flows","tags":["AI","prompt","generate","hook","hyperframes","remotion","capcut"],"summary":"A real task types into the prompt box, the Generate button is pressed, and the result starts to build.","description":"Built on [UI AI Prompt Flow](https://remocn.dev/r/ai-prompt-flow.json) by Kapish Dima (remocn), MIT. The write-up and recipes below are varg's.\n\nComposer field with attachments, human-cadence typing, the button goes hover → press → loading, and the canvas begins to fill.\n\n**When:** Open of almost every AI product launch: it shows what the product does in the first 3–5 s.\n\n**Watch out:** Do not open with a logo and voiceover before the prompt; the typed task is the hook.\n\n**Timing:** Typing 40–70 ms/char in bursts; button press 0.1/0.2 s; result starts ≤ 0.5 s after.\n\n**Also called:** prompt box, AI prompt flow, type and generate\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add typed-prompt\nnpx hyperframes add ai-chat-reveal\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/ai-prompt-flow\n// or @remocn/claude-chat / @remocn/chat-gpt for branded composers\n```\n\n### In CapCut\n\nRecord the real prompt; speed typing 1.5–2×; zoom 170% on the composer while typing, release on Generate.\n\n### Ready-made components\n\n- [UI AI Prompt Flow](https://skills.varg.ai/component/remocn.ai-prompt-flow/) (remocn): npx shadcn@latest add @remocn/ai-prompt-flow\n- [Typed Prompt](https://skills.varg.ai/component/hf.typed-prompt/) (hyperframes): npx hyperframes add typed-prompt\n- [Claude Chat](https://skills.varg.ai/component/remocn.claude-chat/) (remocn): npx shadcn@latest add @remocn/claude-chat\n- [AI Chat Reveal](https://skills.varg.ai/component/hf.ai-chat-reveal/) (hyperframes): npx hyperframes add ai-chat-reveal\n\n### Where this comes from\n\n- [Bohdan Motion: breakdown of the Claude Design launch video](https://x.com/bohdanmotion/status/2080610655237751033)\n- [Bohdan Motion: breakdown of the ElevenLabs Flows launch video](https://x.com/bohdanmotion/status/2079974237893456071)\n- [Bohdan Motion: breakdown of the Grok Build Mode launch video](https://x.com/bohdanmotion/status/2082193183111614671)","useWhen":["Open of almost every AI product launch: it shows what the product does in the first 3–5 s."],"notFor":["Do not open with a logo and voiceover before the prompt; the typed task is the hook."],"publisher":{"name":"Kapish Dima · remocn","handle":"Remocn","kind":"community","verified":false,"url":"https://remocn.dev","avatar":"https://github.com/Remocn.png"},"source":{"url":"https://remocn.dev/r/ai-prompt-flow.json","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"UI AI Prompt Flow · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.ai-prompt-flow/","license":"MIT","note":"An AI prompt composition: a prompt types into the field, the Generate button runs hover → press → loading, a skeleton shimmer reveals, then crossfades into the generated answer, and a ready toast slides in…"},{"role":"component","label":"Typed Prompt · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.typed-prompt/","license":"Apache-2.0","note":"A prompt line types itself in chunked human cadence behind a deterministic blinking caret, with optional backspace-and-retype correction of the final word."},{"role":"component","label":"Claude Chat · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.claude-chat/","license":"MIT","note":"Animated Claude chat input — types a prompt character-by-character and the waveform button morphs into a terracotta send button the moment text appears. Warm light/dark themes."},{"role":"component","label":"AI Chat Reveal · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.ai-chat-reveal/","license":"Apache-2.0","note":"A question is typed on a rising keyboard, sent, and answered by an AI that streams its reply word by word on a measured token rhythm - thinking dot, uneven bursts, bulleted list…"},{"role":"source","label":"Bohdan Motion: breakdown of the Claude Design launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2080610655237751033","license":"link-only"},{"role":"source","label":"Bohdan Motion: breakdown of the ElevenLabs Flows launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2079974237893456071","license":"link-only"},{"role":"source","label":"Bohdan Motion: breakdown of the Grok Build Mode launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2082193183111614671","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":240,"text":"Prompt Typed, Then Generate"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["remocn.ai-prompt-flow","hf.typed-prompt","remocn.claude-chat","hf.ai-chat-reveal"],"aliases":["prompt box","AI prompt flow","type and generate"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/ai-chat-reveal/preview.mp4","w":1080,"h":1920,"blur":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/ai-chat-reveal/poster.jpg","source":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/ai-chat-reveal/preview.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/ai-chat-reveal","credit":"AI Chat Reveal · hyperframes","rights":"publisher-site","note":"Preview of the AI Chat Reveal component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/answer-streams-in","slug":"answer-streams-in","name":"Answer Streams In","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"agent-flows","tags":["AI","streaming","chat","text","hyperframes","remotion","capcut"],"summary":"The assistant's reply arrives in uneven token bursts, the way a real model streams.","description":"Built on [Streaming Text](https://github.com/heygen-com/hyperframes/tree/main/registry/components/streaming-text) by Miao Yang (hyperframes), Apache-2.0. The write-up and recipes below are varg's.\n\nWords appear in short irregular bursts with a soft caret; markdown headings and lists form as they stream.\n\n**When:** Chat assistants and any feature whose output is text.\n\n**Watch out:** Do not reveal at a perfectly even rate; real streams come in bursts and that rhythm sells authenticity.\n\n**Timing:** Bursts of 2–6 tokens every 40–120 ms; total ≤ 3 s on screen, then hold.\n\n**Also called:** streaming text, token stream, AI reply\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add streaming-text\n```\nUse a fixed seed for burst sizes so every render streams identically.\n\n### In Remotion\n\n```tsx\nconst bursts = useMemo(()=>seededBursts(text, 42),[]); // [{at,frame,upto}]\nconst upto = bursts.filter(b=>b.frame<=frame).at(-1)?.upto ?? 0;\n<Markdown>{text.slice(0,upto)}</Markdown>\n```\n\n### In CapCut\n\nRecord the real stream; or Text → Animation In \"Typewriter\" with a long duration on a pasted answer.\n\n### Ready-made components\n\n- [Streaming Text](https://skills.varg.ai/component/hf.streaming-text/) (hyperframes): npx hyperframes add streaming-text\n- [Claude Exchange](https://skills.varg.ai/component/hf.claude-exchange/) (hyperframes): npx hyperframes add claude-exchange\n- [Text Generate Effect](https://skills.varg.ai/component/aceternity.text-generate-effect/) (aceternity): npx shadcn@latest add @aceternity/text-generate-effect\n\n### Where this comes from\n\n- [Glama: designing tool-enabled chat interfaces](https://glama.ai/blog/2025-08-27-designing-tool-enabled-chat-interfaces)\n- [Trace visualization: showing users what your AI agent is doing](https://agentinterface-co.pages.dev/blog/trace-visualization-showing-users-what-ai-agent-does.html)","useWhen":["Chat assistants and any feature whose output is text."],"notFor":["Do not reveal at a perfectly even rate; real streams come in bursts and that rhythm sells authenticity."],"publisher":{"name":"Miao Yang · HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/streaming-text","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Streaming Text · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.streaming-text/","license":"Apache-2.0","note":"Words arrive the way an AI answer streams - in uneven bursts on a measured token rhythm, each word landing grey and inking to full colour - rather than the even tick of a typewriter"},{"role":"component","label":"Claude Exchange · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.claude-exchange/","license":"Apache-2.0","note":"A portrait Claude-style exchange types a prompt, works through search and reasoning steps, then streams a detailed answer with citations and actions"},{"role":"component","label":"Text Generate Effect · aceternity","kind":"link","url":"https://skills.varg.ai/component/aceternity.text-generate-effect/","license":"Aceternity License (free components)","note":"A paragraph appears word by word, each word fading in from blur to crisp white"},{"role":"source","label":"Glama: designing tool-enabled chat interfaces","kind":"link","url":"https://glama.ai/blog/2025-08-27-designing-tool-enabled-chat-interfaces","license":"link-only"},{"role":"source","label":"Trace visualization: showing users what your AI agent is doing","kind":"link","url":"https://agentinterface-co.pages.dev/blog/trace-visualization-showing-users-what-ai-agent-does.html","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":240,"text":"Answer Streams In"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.streaming-text","hf.claude-exchange","aceternity.text-generate-effect"],"aliases":["streaming text","token stream","AI reply"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/claude-exchange/preview.mp4","w":1080,"h":1920,"blur":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/claude-exchange/poster.jpg","source":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/claude-exchange/preview.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/claude-exchange","credit":"Claude Exchange · hyperframes","rights":"publisher-site","note":"Preview of the Claude Exchange component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"Remocn/tool-calls-status-rows","slug":"tool-calls-status-rows","name":"Tool Calls as Status Rows","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"agent-flows","tags":["agent","tool calls","steps","trace","hyperframes","remotion","capcut"],"summary":"Each tool call appears as a row with an icon and label that goes spinner → check, building a visible plan.","description":"Built on [Agent Run](https://remocn.dev/r/agent-run.json) by Kapish Dima (remocn), MIT. The write-up and recipes below are varg's.\n\nRows like \"Searching docs…\", \"Reading 3 files\", \"Running tests\" with a shimmer while running and a green check when done; planned steps greyed.\n\n**When:** Explain what an agent does without raw logs; make autonomy legible.\n\n**Watch out:** Do not dump JSON or full logs on screen; one plain-language line per step.\n\n**Timing:** Row in 0.2 s; running shimmer 0.6–1.2 s; check pop 0.2 s; next row starts on the check.\n\n**Also called:** agent steps, tool use trace, run log\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add state-chip-rail\n```\nOne row per step; tween `data-state` running → done on cue times.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/agent-run\n<AgentRun steps={[{label:'Searching docs',doneAt:30},{label:'Writing scene',doneAt:60}]}/>\n```\n\n### In CapCut\n\nText rows with Animation In \"Fade in\"; a spinner sticker then a ✓ sticker per row.\n\n### Ready-made components\n\n- [Agent Run](https://skills.varg.ai/component/remocn.agent-run/) (remocn): npx shadcn@latest add @remocn/agent-run\n- [State Chip Rail](https://skills.varg.ai/component/hf.state-chip-rail/) (hyperframes): npx hyperframes add state-chip-rail\n- [Text Shimmer](https://skills.varg.ai/component/motionprimitives.text-shimmer/) (motion-primitives): npx motion-primitives@latest add text-shimmer\n\n### Where this comes from\n\n- [Trace visualization: showing users what your AI agent is doing](https://agentinterface-co.pages.dev/blog/trace-visualization-showing-users-what-ai-agent-does.html)\n- [Glama: designing tool-enabled chat interfaces](https://glama.ai/blog/2025-08-27-designing-tool-enabled-chat-interfaces)","useWhen":["Explain what an agent does without raw logs; make autonomy legible."],"notFor":["Do not dump JSON or full logs on screen; one plain-language line per step."],"publisher":{"name":"Kapish Dima · remocn","handle":"Remocn","kind":"community","verified":false,"url":"https://remocn.dev","avatar":"https://github.com/Remocn.png"},"source":{"url":"https://remocn.dev/r/agent-run.json","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Agent Run · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.agent-run/","license":"MIT","note":"Animated brand-neutral AI agent run — a Thinking status and short plan, tool calls whose spinners close into checks while a timer counts real seconds…"},{"role":"component","label":"State Chip Rail · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.state-chip-rail/","license":"Apache-2.0","note":"A rail of mono status chips advances a seek-safe data-state snap machine on a cue schedule: active chip ink on surface, done chips dim, pending chips hollow, optional badges pop beside one state."},{"role":"component","label":"Text Shimmer · motion-primitives","kind":"link","url":"https://skills.varg.ai/component/motionprimitives.text-shimmer/","license":"MIT","note":"A bright highlight sweeps across grey monospace text, like a 'generating…' status label"},{"role":"source","label":"Trace visualization: showing users what your AI agent is doing","kind":"link","url":"https://agentinterface-co.pages.dev/blog/trace-visualization-showing-users-what-ai-agent-does.html","license":"link-only"},{"role":"source","label":"Glama: designing tool-enabled chat interfaces","kind":"link","url":"https://glama.ai/blog/2025-08-27-designing-tool-enabled-chat-interfaces","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":240,"text":"Tool Calls as Status Rows"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["remocn.agent-run","hf.state-chip-rail","motionprimitives.text-shimmer"],"aliases":["agent steps","tool use trace","run log"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2fb8558b8450/lib-motion-primitives-text-shimmer.mp4","blur":"https://s3.varg.ai/how-to/previews/deff638a3656/lib-motion-primitives-text-shimmer.webp","source":"https://s3.varg.ai/how-to/previews/2fb8558b8450/lib-motion-primitives-text-shimmer.mp4","page":"https://motion-primitives.com/docs/text-shimmer","credit":"Captured from the library’s own demo page (Motion Primitives)","rights":"publisher-site","note":"Preview of the Text Shimmer component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/nodes-wire-up-canvas","slug":"nodes-wire-up-canvas","name":"Nodes Wire Up on a Canvas","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"agent-flows","tags":["workflow","nodes","pipeline","agent","hyperframes","remotion","capcut"],"summary":"Nodes pop onto a canvas and connectors draw between them as the camera pulls back to show the whole pipeline.","description":"Built on [Flowchart](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/flowchart) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nRounded nodes with icons and labels; bezier connectors draw from output to input; a pulse travels the finished path.\n\n**When:** Workflow builders, multi-step AI pipelines, automations.\n\n**Watch out:** Do not show the whole graph first; build it in narration order, then reveal the full canvas.\n\n**Timing:** Node pop 0.25 s, connector draw 0.4–0.6 s, pulse 0.8 s per edge; final pull-back 1 s.\n\n**Also called:** node graph, workflow canvas, pipeline graph\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add flowchart\n```\nOr `constellation-hub` for feature nodes brightening in narration order.\n\n### In Remotion\n\n```tsx\nconst len = path.getTotalLength();\nconst off = interpolate(frame,[edge.at,edge.at+15],[len,0],{extrapolateLeft:'clamp',extrapolateRight:'clamp'});\n<path d={d} strokeDasharray={len} strokeDashoffset={off}/>\n```\n\n### In CapCut\n\nRecord the real canvas; zoom on each node as it is added, then a long ease-out zoom to 100% for the overview.\n\n### Ready-made components\n\n- [Flowchart](https://skills.varg.ai/component/hf.flowchart/) (hyperframes): npx hyperframes add flowchart\n- [Constellation Hub](https://skills.varg.ai/component/hf.constellation-hub/) (hyperframes): npx hyperframes add constellation-hub\n- [Hand-Drawn Flowchart](https://skills.varg.ai/component/hf.hw-pipeline/) (hyperframes): npx hyperframes add hw-pipeline\n\n### Where this comes from\n\n- [Bohdan Motion: breakdown of the ElevenLabs Flows launch video](https://x.com/bohdanmotion/status/2079974237893456071)","useWhen":["Workflow builders, multi-step AI pipelines, automations."],"notFor":["Do not show the whole graph first; build it in narration order, then reveal the full canvas."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/flowchart","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Flowchart · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.flowchart/","license":"Apache-2.0","note":"Animated decision tree with SVG connectors, sticky-note nodes, cursor interaction, and typing correction"},{"role":"component","label":"Constellation Hub · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.constellation-hub/","license":"Apache-2.0","note":"Feature nodes brighten in narration order as real-length SVG connectors draw outward from a fixed central hub, then settle into one lockup."},{"role":"component","label":"Hand-Drawn Flowchart · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.hw-pipeline/","license":"Apache-2.0","note":"Wobbled boxes with handwritten labels joined by curved connectors, drawing on in sequence from a node list"},{"role":"source","label":"Bohdan Motion: breakdown of the ElevenLabs Flows launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2079974237893456071","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":240,"text":"Nodes Wire Up on a Canvas"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.flowchart","hf.constellation-hub","hf.hw-pipeline"],"aliases":["node graph","workflow canvas","pipeline graph"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/flowchart.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/flowchart.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/flowchart.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/flowchart","credit":"Flowchart · hyperframes","rights":"publisher-site","note":"Preview of the Flowchart component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"magicuidesign/beams-into-agent-hub","slug":"beams-into-agent-hub","name":"Beams Into the Agent Hub","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"agent-flows","tags":["agent","integrations","data flow","beam","hyperframes","remotion","capcut"],"summary":"Light pulses run along curved lines from tool icons into a central agent and back out to a result.","description":"Built on [Animated Beam](https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/animated-beam.tsx) by magic-ui, MIT. The write-up and recipes below are varg's.\n\nApp icons on the left, the agent mark in the center, outputs on the right; gradient beams travel along curved paths.\n\n**When:** Show that an agent connects tools and data (MCP, integrations, sources).\n\n**Watch out:** Do not run every beam at once; stagger them so the eye follows the flow.\n\n**Timing:** Beam travel 1.5–3 s per path, 0.2–0.4 s stagger; curvature small (≤ 80 px).\n\n**Also called:** animated beam, data flow, hub and spokes\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add tracing-beam\n```\nDraw the paths in SVG; animate a short gradient dash along each with `strokeDashoffset` on the timeline.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @magicui/animated-beam  (props: fromRef, toRef, curvature, duration, delay, reverse)\n// make it seek-safe: drive the gradient offset from frame instead of its motion animation\n```\n\n### In CapCut\n\nAdd icon overlays and line shapes; animate a small glowing dot sticker along each line with Position keyframes.\n\n### Ready-made components\n\n- [Animated Beam](https://skills.varg.ai/component/magicui.animated-beam/) (magic-ui): npx shadcn@latest add @magicui/animated-beam\n- [Ecosystem Constellation](https://skills.varg.ai/component/remocn.ecosystem-constellation/) (remocn): npx shadcn@latest add @remocn/ecosystem-constellation\n- [Tracing Beam](https://skills.varg.ai/component/hf.tracing-beam/) (hyperframes): npx hyperframes add tracing-beam\n\n### Where this comes from\n\n- [Magic UI: Animated Beam](https://v3.magicui.design/docs/components/animated-beam)","useWhen":["Show that an agent connects tools and data (MCP, integrations, sources)."],"notFor":["Do not run every beam at once; stagger them so the eye follows the flow."],"publisher":{"name":"Magic UI","handle":"magicuidesign","kind":"community","verified":false,"url":"https://magicui.design","avatar":"https://github.com/magicuidesign.png"},"source":{"url":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/animated-beam.tsx","repo":"magicuidesign/magicui","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Animated Beam · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.animated-beam/","license":"MIT","note":"Light pulses run along curved lines between app icons and a central logo, like data flowing into a hub"},{"role":"component","label":"Ecosystem Constellation · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.ecosystem-constellation/","license":"MIT","note":"A central logo orbited by integration satellites with pulsing data lines."},{"role":"component","label":"Tracing Beam · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.tracing-beam/","license":"Apache-2.0","note":"A glowing dash follows one SVG path through three UI elements, lifting and brightening each element in sequence."},{"role":"source","label":"Magic UI: Animated Beam","kind":"link","url":"https://v3.magicui.design/docs/components/animated-beam","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":240,"text":"Beams Into the Agent Hub"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["magicui.animated-beam","remocn.ecosystem-constellation","hf.tracing-beam"],"aliases":["animated beam","data flow","hub and spokes"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/1c410e7c7d56/lib-magic-ui-animated-beam.mp4","blur":"https://s3.varg.ai/how-to/previews/2a281036d87a/lib-magic-ui-animated-beam.webp","source":"https://s3.varg.ai/how-to/previews/1c410e7c7d56/lib-magic-ui-animated-beam.mp4","page":"https://magicui.design/docs/components/animated-beam","credit":"Captured from the library’s own demo page (Magic UI)","rights":"publisher-site","note":"Preview of the Animated Beam component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"imskyleen/thinking-shimmer-label","slug":"thinking-shimmer-label","name":"Thinking… Shimmer Label","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"agent-flows","tags":["AI","thinking","loading","shimmer","hyperframes","remotion","capcut"],"summary":"A muted \"Thinking…\" label with a moving shine shows the model working between prompt and answer.","description":"Built on [Shimmering Text](https://github.com/imskyleen/animate-ui/blob/main/packages/react/src/primitives/texts/shimmering/index.tsx) by animate-ui, MIT + Commons Clause. The write-up and recipes below are varg's.\n\nSmall grey text with a light band sweeping through it, or three bouncing dots, placed exactly where the answer will appear.\n\n**When:** Short waits in AI demos; it marks time without dead air.\n\n**Watch out:** Do not hold it longer than ~1.5 s in a film; cut the real wait down.\n\n**Timing:** Sweep period 1.2–1.6 s; show for 0.6–1.5 s total.\n\n**Also called:** thinking indicator, generating label, typing dots\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add typing-indicator\n```\nOr `text-shimmer` on a muted label for the \"Generating…\" look.\n\n### In Remotion\n\n```tsx\nconst x = ((frame % 40) / 40) * 160 - 30;\n<span style={{backgroundImage:`linear-gradient(90deg,#666 ${x-15}%,#eee ${x}%,#666 ${x+15}%)`,WebkitBackgroundClip:'text',color:'transparent'}}>Thinking…</span>\n```\n\n### In CapCut\n\nText \"Thinking…\" in grey; Effects → \"Shine\" or Animation Loop \"Flicker\" gently.\n\n### Ready-made components\n\n- [Shimmering Text](https://skills.varg.ai/component/animateui.shimmering-text/) (animate-ui): npm install @animate-ui/react motion\n- [Text Shimmer](https://skills.varg.ai/component/motionprimitives.text-shimmer/) (motion-primitives): npx motion-primitives@latest add text-shimmer\n- [Typing Indicator](https://skills.varg.ai/component/hf.typing-indicator/) (hyperframes): npx hyperframes add typing-indicator\n- [UI Typing Indicator](https://skills.varg.ai/component/remocn.typing-indicator/) (remocn): npx shadcn@latest add @remocn/typing-indicator\n\n### Where this comes from\n\n- [Trace visualization: showing users what your AI agent is doing](https://agentinterface-co.pages.dev/blog/trace-visualization-showing-users-what-ai-agent-does.html)","useWhen":["Short waits in AI demos; it marks time without dead air."],"notFor":["Do not hold it longer than ~1.5 s in a film; cut the real wait down."],"publisher":{"name":"Elliot Sutton","handle":"imskyleen","kind":"community","verified":false,"url":"https://github.com/imskyleen","avatar":"https://github.com/imskyleen.png"},"source":{"url":"https://github.com/imskyleen/animate-ui/blob/main/packages/react/src/primitives/texts/shimmering/index.tsx","repo":"imskyleen/animate-ui","license":"MIT + Commons Clause"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Shimmering Text · animate-ui","kind":"link","url":"https://skills.varg.ai/component/animateui.shimmering-text/","license":"MIT + Commons Clause","note":"A glint of light running letter by letter across grey text, each letter brightening as it passes"},{"role":"component","label":"Text Shimmer · motion-primitives","kind":"link","url":"https://skills.varg.ai/component/motionprimitives.text-shimmer/","license":"MIT","note":"A bright highlight sweeps across grey monospace text, like a 'generating…' status label"},{"role":"component","label":"Typing Indicator · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.typing-indicator/","license":"Apache-2.0","note":"The three-dot chat bubble that says someone is writing: it pops in at the thread's edge exactly as messaging apps do, holds while the reply is coming, and vanishes when the message lands"},{"role":"component","label":"UI Typing Indicator · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.typing-indicator/","license":"MIT","note":"A continuous typing animation: N dots bounce with a staggered sine wave. A motion atom — it reads the frame and takes color, size, gap, and speed props, defaulting to currentColor so it inherits the bubble it sits in."},{"role":"source","label":"Trace visualization: showing users what your AI agent is doing","kind":"link","url":"https://agentinterface-co.pages.dev/blog/trace-visualization-showing-users-what-ai-agent-does.html","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":240,"text":"Thinking… Shimmer Label"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["animateui.shimmering-text","motionprimitives.text-shimmer","hf.typing-indicator","remocn.typing-indicator"],"aliases":["thinking indicator","generating label","typing dots"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/25a0d11eb722/lib-animate-ui-shimmering-text.mp4","blur":"https://s3.varg.ai/how-to/previews/e178ea852acc/lib-animate-ui-shimmering-text.webp","source":"https://s3.varg.ai/how-to/previews/25a0d11eb722/lib-animate-ui-shimmering-text.mp4","page":"https://animate-ui.com/docs/primitives/animate-ui/shimmering-text","credit":"Captured from the library’s own demo page (Animate UI)","rights":"publisher-site","note":"Preview of the Shimmering Text component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/parallel-agents-lanes","slug":"parallel-agents-lanes","name":"Parallel Agents Side by Side","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"agent-flows","tags":["multi-agent","parallel","agents","orchestration","hyperframes","remotion","capcut"],"summary":"Several agent cards work at once in lanes or an orbit, each with its own status, then merge into one result.","description":"Built on [Three Orbiting Cards](https://github.com/heygen-com/hyperframes/tree/main/registry/components/three-orbiting-cards) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nThree to five cards with names (Researcher, Writer, Reviewer) and live status chips; lines converge into a final output card.\n\n**When:** Multi-agent systems, subagents, parallel cloud agents.\n\n**Watch out:** Do not make every lane busy with motion; one lane leads at a time while others idle-tick.\n\n**Timing:** Cards in 0.3 s stagger 0.1 s; status ticks every 0.4–0.8 s; merge 0.6 s.\n\n**Also called:** multi-agent, agent swarm, parallel runs\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add three-orbiting-cards\nnpx hyperframes add state-chip-rail\n```\n\n### In Remotion\n\n```tsx\nagents.map((a,i)=> <AgentCard key={i} name={a.name} status={a.timeline.findLast(s=>s.f<=frame)?.label} style={{left:`${12+i*26}%`}}/>)\n```\n\n### In CapCut\n\nSplit screen into 3 lanes (Templates → split screen), one recording per lane, then cut to the merged result.\n\n### Ready-made components\n\n- [Three Orbiting Cards](https://skills.varg.ai/component/hf.three-orbiting-cards/) (hyperframes): npx hyperframes add three-orbiting-cards\n- [State Chip Rail](https://skills.varg.ai/component/hf.state-chip-rail/) (hyperframes): npx hyperframes add state-chip-rail\n- [Split Tilt Cards](https://skills.varg.ai/component/hf.split-tilt-cards/) (hyperframes): npx hyperframes add split-tilt-cards\n\n### Where this comes from\n\n- [Vox on X: a 4-agent HyperFrames motion team for product videos](https://x.com/Voxyz_ai/status/2104194355556671987)\n- [Cursor 3 Design Mode and its launch video](https://pasqualepillitteri.it/en/news/3794/cursor-design-mode-what-it-is-how-it-works-cursor-3)","useWhen":["Multi-agent systems, subagents, parallel cloud agents."],"notFor":["Do not make every lane busy with motion; one lane leads at a time while others idle-tick."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/three-orbiting-cards","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Three Orbiting Cards · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.three-orbiting-cards/","license":"Apache-2.0","note":"A Three.js-powered orbit scene driven by a paused GSAP timeline for deterministic renders."},{"role":"component","label":"State Chip Rail · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.state-chip-rail/","license":"Apache-2.0","note":"A rail of mono status chips advances a seek-safe data-state snap machine on a cue schedule: active chip ink on surface, done chips dim, pending chips hollow, optional badges pop beside one state."},{"role":"component","label":"Split Tilt Cards · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.split-tilt-cards/","license":"Apache-2.0","note":"Two equal-weight cards arrive from opposite wings with mirrored rotateY book-open tilts under one shared perspective, pill badges spring-pop at each inner edge…"},{"role":"source","label":"Vox on X: a 4-agent HyperFrames motion team for product videos","kind":"link","url":"https://x.com/Voxyz_ai/status/2104194355556671987","license":"link-only"},{"role":"source","label":"Cursor 3 Design Mode and its launch video","kind":"link","url":"https://pasqualepillitteri.it/en/news/3794/cursor-design-mode-what-it-is-how-it-works-cursor-3","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":240,"text":"Parallel Agents Side by Side"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.three-orbiting-cards","hf.state-chip-rail","hf.split-tilt-cards"],"aliases":["multi-agent","agent swarm","parallel runs"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/c8425cff36e8/take-parallel-agents-lanes.mp4","w":640,"h":360,"duration":5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAwxJREFUeJxtU0toE0EYnn9mN22TaKLGB9XEVkVrDj76AEWwSLUe1IqIKIieahVBBEHw5kUP3j0JItiTgohQqodYsSpoJSWVxobWvsRH241JNtk8NtmZ8d8ktQoO7PCzM/PN933/N0DBSf43AABnWZ6rf6SsFHKx+Hso1TWA8kmGswAiBadMEdwivAQEqFKDe7gwCaVAVayprCBaCFq5YBGIOoBS+1b8OPF6ViX17Fr/Fm+wMxAIjL96pmna8QOHX74MLehRUFSOWPZ+JoUAblaBoErHBhSWtWnl/p6enifv3rvdLv/pi5TR3JcfW5tcZw9dPbjjwt2n12KxMeYsGBmDAq+cRV7/AIkiOJ3ecyeur3M1nOncnUwmJgoFh8PR2nzM5/NpGVNd7gueurlTVeejj5/3PqQsUbHTBlpC4byh41Jra5vu2zwseKOViY19XEhkEolffHwSgQ51XKmtrRNr6oWq+K1m4gmR9DylDFkJlCb++C64Z2PQ2xDUckWm0oHX9/r6+yR8R7noBar+FBvy+wNHu267XW7paty2Zd94OIJe4UmkovzdQiHQIkuwkpHNvRrql0RD3oSplU7pC2OCpJalcz7VqRa95/eevBXtLRZLhFi22aiP2o0kQpJcWlekSBFF9azs6LoWGYl4srPYLy33De+s77zc3t6ulOpTkqxR0tPTn/P5NFUdIBZzZAcMLGz75PDg/pYmy72sZJW2bzuytelo0GCmab4vTALQzPbGDOdaKs+F8JJUePRdOS0CylGqAnGLt7S0KStqxdzQnsO7DCMrRqMbNqxf4QykUqbM5jOGAXKTsGTGW4hERkJv70/NTQFTZHksBZJQZXLma+2cNh0Nx/MkHo+rM9Dd3Z3LQV3d6qw2OhAKHdi9y1lTMx8bHBl8UYi9BRQFDG3954mgNF2P6zpD+OcP7mAU6n3NvY8Mwp2MsYlvQ8lfU+GHNxRFnRkZ4KZJHaqUApWgniUg+70IYocJinaiAPnBz+Twjzcf0IIyXwdT2Wy4z15kCmWAWYE/L1ja5W9fK4lWXVToyQAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item three-orbiting-cards (Apache-2.0) in a host composition","page":"https://hyperframes.heygen.com/catalog/components/three-orbiting-cards","credit":"Rendered by varg · HyperFrames Three Orbiting Cards","rights":"generated","note":"The Three Orbiting Cards component used as its header comment describes, with demo copy","bytes":130839,"addedAt":"2026-10-28"}},{"id":"heygen-com/plan-checklist-ticks","slug":"plan-checklist-ticks","name":"Plan Checklist Ticks Off","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"agent-flows","tags":["agent","plan","checklist","progress","hyperframes","remotion","capcut"],"summary":"The agent's plan appears as a checklist and each item ticks and dims as it is done.","description":"Built on [Specs Checklist](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mk-specs-list) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nLeft-aligned rows with empty circles; a check draws in each, the row text dims or strikes, the next row brightens.\n\n**When:** Long tasks compressed into a few seconds; show progress and reliability.\n\n**Watch out:** Do not tick everything at an even pace; vary 0.4–1.0 s to feel like real work.\n\n**Timing:** Rows in 0.2 s with 0.08 s stagger; each tick 0.3 s path draw; final row → success pop.\n\n**Also called:** todo list, agent plan, checklist\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add mk-specs-list\nnpx hyperframes add success-check\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/check-list\nconst done = (i)=> frame > ticks[i];\n```\n\n### In CapCut\n\nText list with one row per layer; add ✓ stickers on each row at its time; reduce row Opacity to 50% after its tick.\n\n### Ready-made components\n\n- [Specs Checklist](https://skills.varg.ai/component/hf.mk-specs-list/) (hyperframes): npx hyperframes add mk-specs-list\n- [Check List](https://skills.varg.ai/component/remocn.check-list/) (remocn): npx shadcn@latest add @remocn/check-list\n- [Success Check](https://skills.varg.ai/component/hf.success-check/) (hyperframes): npx hyperframes add success-check\n\n### Where this comes from\n\n- [Trace visualization: showing users what your AI agent is doing](https://agentinterface-co.pages.dev/blog/trace-visualization-showing-users-what-ai-agent-does.html)","useWhen":["Long tasks compressed into a few seconds; show progress and reliability."],"notFor":["Do not tick everything at an even pace; vary 0.4–1.0 s to feel like real work."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mk-specs-list","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Specs Checklist · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.mk-specs-list/","license":"Apache-2.0","note":"Left-aligned specs/traits checklist over footage or a board: rows slide in staggered with an accent underline sweep; light and dark schemes"},{"role":"component","label":"Check List · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.check-list/","license":"MIT","note":"A handwritten checklist that writes itself out in full, then ticks and strikes through every done item, one at a time."},{"role":"component","label":"Success Check · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.success-check/","license":"Apache-2.0","note":"A success check primitive with ring pop, path draw, and subtle rotate blur"},{"role":"source","label":"Trace visualization: showing users what your AI agent is doing","kind":"link","url":"https://agentinterface-co.pages.dev/blog/trace-visualization-showing-users-what-ai-agent-does.html","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":240,"text":"Plan Checklist Ticks Off"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.mk-specs-list","remocn.check-list","hf.success-check"],"aliases":["todo list","agent plan","checklist"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/7606a5655b40/take-plan-checklist-ticks.mp4","w":640,"h":360,"duration":8,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAqBJREFUeJw1U8uOGzkMFKmX2+1Xz2QOC+yeAiTn/P8tf5Fjsptgd9bOjD22u9WSyJQaCGEDgposVhUpIiLTgvFXIue8iTtiGur44eOH9Oen8T5+lU3J5XdmC2/aOVnHzNkozo4NKYJMyyPAkZfZsj30cehXn78fRbVExlfU4L5oRVlWVhWqma2LsRMR59mUqmiHK9biWN7vUKXrfsUyjS//W8vBr7p1hzaqtTVtPXGmWqvUmcbpfr85T42lcOu5CWHdr/84BO/9P/P2y4+zCDkb3PTWBRKykAw61EQUFaA2pHS7hlpdUYNc5ztn7X5lHobBuIqa4ropSeB42B7wXdLUvAFVNiIKkUbVEVmjdgWc4iYBVWMXcdvAG2+8pRj9Y9hB6lVCzZMUsg5VrWPJTZ1mlSqAQ5BxpqrDvGCisV4WL/uu67ig9+kyIjOPSaHTuzrn5hyLtNnCeEBbpEmppaY2tSbJOeNWwQfDswvxVYfL5XI1HqNoLVrXZeStI4mhlBI44cbasCwOtamtfQAR72wXvdkMz3e61ES2E3ViJMZlv2qB/0DJeXYIpiJNCKiJLEqRbVVYjUrOWU1eszM9F9CGjmlKl5lraUql1uaR9/fbrWKWy3IqcYwRWNg/RwaqtZTiYESa7arLxp5O56e/9jpjGo071uc+jrAKomAPQHNpaxljmO4wqS29g1ZAskk6YxB6L8k9DNP59VnT4+Pj09YvxC2TM1p8CMz+er2qci55nJvNhzBb+JyXlQ/g1X65VvWl9iHsDiutt3dru9vtxrcjE+833TSO/dD992/qHOH1Hc+3/X5fRK9vL2DUgJYpcMVzsFpzehj2eEKnn6dZ4u123G26y9s1nU/DMMzn5zXP3/7+eTweh6d3220/zQUL/AtDQ5Nyt35V5gAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item mk-specs-list (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/blocks/mk-specs-list","credit":"Rendered by varg · HyperFrames Specs Checklist","rights":"generated","note":"The Specs Checklist component rendered as installed (npx hyperframes add mk-specs-list), defaults only","bytes":334180,"addedAt":"2026-10-28"}},{"id":"heygen-com/vertical-chat-exchange","slug":"vertical-chat-exchange","name":"Vertical Chat Exchange","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"agent-flows","tags":["chat","vertical","AI","social","hyperframes","remotion","capcut"],"summary":"A portrait chat plays out: the prompt types and sends, the answer streams and assembles a card or image.","description":"Built on [ChatGPT Exchange](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/chatgpt-exchange) by Jake Moran (hyperframes), Apache-2.0. The write-up and recipes below are varg's.\n\nPhone-sized chat UI, bubbles pop with a tiny scale from the sender's corner, typing dots before replies.\n\n**When:** Vertical cuts for TikTok, Reels and Shorts about AI features.\n\n**Watch out:** Do not make bubbles readable only at full screen; use 1.5× normal type size for phones.\n\n**Timing:** Bubble pop 0.12–0.2 s (scale 0.75→1), typing dots 0.6–1 s, gap 0.3 s between messages.\n\n**Also called:** chat story, ChatGPT exchange, phone chat\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add chatgpt-exchange\n```\nOr `message-thread-reveal` / `chat-thread` for human conversations.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/imessage-chat-flow\n// or @remocn/chat-flow / @remocn/telegram-chat-flow\n```\n\n### In CapCut\n\nText → Text templates → \"chat\"/\"message\"; one bubble per layer, Animation In \"Pop up\" 0.15 s.\n\n### Ready-made components\n\n- [ChatGPT Exchange](https://skills.varg.ai/component/hf.chatgpt-exchange/) (hyperframes): npx hyperframes add chatgpt-exchange\n- [Message Thread Reveal](https://skills.varg.ai/component/hf.message-thread-reveal/) (hyperframes): npx hyperframes add message-thread-reveal\n- [UI iMessage Chat Flow](https://skills.varg.ai/component/remocn.imessage-chat-flow/) (remocn): npx shadcn@latest add @remocn/imessage-chat-flow\n\n### Where this comes from\n\n- [CapCut: turn testimonials into quote graphics for short-form](https://www.capcut.com/create/testimonial-quote-graphics-short-form-content)","useWhen":["Vertical cuts for TikTok, Reels and Shorts about AI features."],"notFor":["Do not make bubbles readable only at full screen; use 1.5× normal type size for phones."],"publisher":{"name":"Jake Moran · HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/chatgpt-exchange","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"ChatGPT Exchange · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.chatgpt-exchange/","license":"Apache-2.0","note":"A portrait ChatGPT-style exchange types and sends a prompt, streams an answer, assembles a comparison table, and scrolls back through the result"},{"role":"component","label":"Message Thread Reveal · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.message-thread-reveal/","license":"Apache-2.0","note":"A full text conversation plays out on a phone - bubbles popping in, typing indicators, a shared link card, emoji, delivered receipts - with the whole thread scrolling up beat by beat until a closing card lands…"},{"role":"component","label":"UI iMessage Chat Flow · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.imessage-chat-flow/","license":"MIT","note":"An iMessage-styled messaging composition: gray incoming and blue outgoing bubbles with tails, an in-thread typing bubble with dots, a Delivered label, and tapback-style reaction badges…"},{"role":"source","label":"CapCut: turn testimonials into quote graphics for short-form","kind":"link","url":"https://www.capcut.com/create/testimonial-quote-graphics-short-form-content","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":240,"text":"Vertical Chat Exchange"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.chatgpt-exchange","hf.message-thread-reveal","remocn.imessage-chat-flow"],"aliases":["chat story","ChatGPT exchange","phone chat"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/chatgpt-exchange/preview.mp4","w":1080,"h":1920,"blur":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/chatgpt-exchange/poster.jpg","source":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/chatgpt-exchange/preview.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/chatgpt-exchange","credit":"ChatGPT Exchange · hyperframes","rights":"publisher-site","note":"Preview of the ChatGPT Exchange component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/tracing-beam-through-steps","slug":"tracing-beam-through-steps","name":"Tracing Beam Through Steps","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"agent-flows","tags":["steps","workflow","progress","beam","hyperframes","remotion","capcut"],"summary":"A glowing dash travels one path through numbered steps, lighting each as it passes.","description":"Built on [Tracing Beam](https://github.com/heygen-com/hyperframes/tree/main/registry/components/tracing-beam) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA thin rail connects 3–5 step cards; a bright head with a short tail moves along it and each card lifts and brightens on contact.\n\n**When:** Explain a 3–5 step workflow (connect → generate → publish) in one continuous move.\n\n**Watch out:** Do not exceed 5 steps; split longer flows into two scenes.\n\n**Timing:** 1–1.5 s per segment, power2.inOut; card lift 0.25 s on arrival.\n\n**Also called:** stepper, progress path, onboarding steps\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add tracing-beam\nnpx hyperframes add onboarding-stepper-flow\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/stepper  (progress = continuous step index)\nconst step = interpolate(frame,[0,120],[0,4],{extrapolateRight:'clamp'});\n```\n\n### In CapCut\n\nLine shape with a glowing dot sticker keyframed along it; each step card with Animation In timed to the dot.\n\n### Ready-made components\n\n- [Tracing Beam](https://skills.varg.ai/component/hf.tracing-beam/) (hyperframes): npx hyperframes add tracing-beam\n- [Onboarding Stepper Flow](https://skills.varg.ai/component/hf.onboarding-stepper-flow/) (hyperframes): npx hyperframes add onboarding-stepper-flow\n- [Flowchart Vertical](https://skills.varg.ai/component/hf.flowchart-vertical/) (hyperframes): npx hyperframes add flowchart-vertical\n- [UI Stepper](https://skills.varg.ai/component/remocn.stepper/) (remocn): npx shadcn@latest add @remocn/stepper\n\n### Where this comes from\n\n- [Bohdan Motion: breakdown of the ElevenLabs Flows launch video](https://x.com/bohdanmotion/status/2079974237893456071)","useWhen":["Explain a 3–5 step workflow (connect → generate → publish) in one continuous move."],"notFor":["Do not exceed 5 steps; split longer flows into two scenes."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/tracing-beam","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Tracing Beam · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.tracing-beam/","license":"Apache-2.0","note":"A glowing dash follows one SVG path through three UI elements, lifting and brightening each element in sequence."},{"role":"component","label":"Onboarding Stepper Flow · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.onboarding-stepper-flow/","license":"Apache-2.0","note":"A composed onboarding flow with milestone rail, active step card, and next-action button"},{"role":"component","label":"Flowchart Vertical · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.flowchart-vertical/","license":"Apache-2.0","note":"Portrait animated decision tree with SVG connectors, sticky-note nodes, cursor interaction, and typing correction"},{"role":"component","label":"UI Stepper · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.stepper/","license":"MIT","note":"A horizontal onboarding stepper whose progress is a pure function of a continuous step index (value-channel deviation). Every circle (fill, number…"},{"role":"source","label":"Bohdan Motion: breakdown of the ElevenLabs Flows launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2079974237893456071","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"timeline","hue":240,"text":"Tracing Beam Through Steps"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.tracing-beam","hf.onboarding-stepper-flow","hf.flowchart-vertical","remocn.stepper"],"aliases":["stepper","progress path","onboarding steps"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/643996847b5b/take-tracing-beam-through-steps.mp4","w":640,"h":360,"duration":4.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAutJREFUeJwtU8uO2zYU5UsUJVmSNc48i7ZBgAnaRYoU6DfkL/qrXQddtgWCDrJIYrvjsTOSbYmiKL56ZecuCL7uueceHuL85opgTAiKIpYkM845jdgsm6WZ2O/3bdsyyuJTrNdfjLUIoRDCNPqAAkWngB12nnmPtLZXVykhVBvbKwVnZVkJIY7HI6XEe3fOh8AYowDFT1iwJDh4xIDOKaatcTR5Hq9WK6ivEiFlHKWFyOfeDnIYpvwzyin7NDoYKMEWefbt4BScR4ClexWsvcqTTESNCoNRNiLGRCxKgStC7tzDGfTMgxACCmDgb4xx3lvnBiWJUxmPvUN6MNnlD1LKgvHn55oS+ur1T0Kw5fJL00rrLCXoDDNp9MubN0Iky+WnZr93ekTOpQhlGN/fXDZNYxnvxoPziBPyqShfvv3V7lYP//xVeR8xFqYWyZkae9puvfdaG0riw77vZFekGejx3LdxkfnDugCCaRJb9WB6UUS3737/Y7NFf/+LCQ+gigd1oU3CtFTWGm04LKQ0KHA5SpGXg1Z1/XUYhlme/7c2bdtdLKrs6w7v66rMy7e/LZfLWzU65ywaUEDs/ucf4YE/rxQwvPvu+iRkn2XZQe7bfrgrcrgUAjkc2p7zMaB0/di8/7N48f0i+GSWdVIGEyaNZlHau+6myimlox4YY+CjgNwkv3XHoyzLEmPDKE4tWn94+PzhI9Nabh7BXDWhIDWgeADa7B4HPXRNn6SJt8o5+vTURDzC3loXxgjvjsdXr+8X19cfV480+FEpAd7hkOt8GE98MZRkq/VGKTUOBtUoSWNoTPYSq8lc0H8kYpBpuasnqxCitU6EuJjPkyQu5/PNZgcmsAZeK7DdUw3HMPXOdwcKvnIET18riykh8B5FtWiPsmnqarGAnCTGlDHZm7bb5FU1/QHV9b1iEecE0im5uFhgDhKxpq7h6uXtDTAFc1nKeMwAJZ/lIAe8zHa7BYGhstbq7vYujYU39n+Lq9Zp8S1Y0QAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item tracing-beam (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/tracing-beam","credit":"Rendered by varg · HyperFrames Tracing Beam","rights":"generated","note":"The Tracing Beam component rendered as installed (npx hyperframes add tracing-beam), defaults only","bytes":153769,"addedAt":"2026-10-28"}},{"id":"heygen-com/big-stat-count-up","slug":"big-stat-count-up","name":"Big Stat Count-Up","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"numbers","tags":["stat","number","count up","proof","ffmpeg","hyperframes","remotion","capcut"],"summary":"One huge number counts from zero to its value and lands, with a short label under it.","description":"Built on [Count Up](https://github.com/heygen-com/hyperframes/tree/main/registry/components/count-up) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nThe number fills ~40% of frame width in tabular figures; a label (\"teams\", \"faster\") in a smaller weight beneath.\n\n**When:** One proof stat per scene: users, speed, money saved.\n\n**Watch out:** Do not put three stats on one card; a stat you want remembered deserves its own beat.\n\n**Timing:** Count 0.8–1.5 s ease-out (expo.out), land with a 1.03 scale pop, hold ≥ 1.5 s.\n\n**Also called:** number ticker, count up, hero stat\n\n### In FFmpeg\n\n```bash\n# counter with drawtext expression (0→10000 over 1.2 s)\n-vf \"drawtext=text='%{eif\\:min(10000\\,10000*t/1.2)\\:d}':x=(w-tw)/2:y=(h-th)/2:fontsize=220:fontcolor=white\"\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add count-up\n```\nSet `data-variable-values='{\"from\":0,\"to\":10000,\"suffix\":\"+\"}'`; use `font-variant-numeric: tabular-nums` so the width does not jitter.\n\n### In Remotion\n\n```tsx\nconst v = interpolate(frame,[0,36],[0,10000],{extrapolateRight:'clamp',easing:Easing.out(Easing.exp)});\n<span style={{fontVariantNumeric:'tabular-nums'}}>{Math.round(v).toLocaleString()}+</span>\n```\n\n### In CapCut\n\nText → Text templates → search \"number\"/\"counter\"; or Effects → \"Number counter\" where available; set end value.\n\n### Ready-made components\n\n- [Count Up](https://skills.varg.ai/component/hf.count-up/) (hyperframes): npx hyperframes add count-up\n- [Number Ticker](https://skills.varg.ai/component/magicui.number-ticker/) (magic-ui): npx shadcn@latest add @magicui/number-ticker\n- [Count-Up Stat Card](https://skills.varg.ai/component/hf.mk-progress-stat/) (hyperframes): npx hyperframes add mk-progress-stat\n\n### Where this comes from\n\n- [Piktochart: Apple keynote tips, one stat per slide](https://piktochart.com/blog/tips-keynote-presentation.md)\n- [Animation principles for data visualization](https://skills.cat/skills/dylantarre/animation-principles/data-visualization)\n- [Bohdan Motion: Secureframe launch video, one pain per scene](https://x.com/bohdanmotion/status/2069369111231049803)","useWhen":["One proof stat per scene: users, speed, money saved."],"notFor":["Do not put three stats on one card; a stat you want remembered deserves its own beat."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/count-up","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Count Up · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.count-up/","license":"Apache-2.0","note":"A token-native stat counter that eases between values, counting up or down, and lands with a restrained scale pulse."},{"role":"component","label":"Number Ticker · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.number-ticker/","license":"MIT","note":"A large number counts up from zero and eases to a stop on its target value"},{"role":"component","label":"Count-Up Stat Card · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.mk-progress-stat/","license":"Apache-2.0","note":"Big-numeral statistic with count-up, label, thin progress track filling to value/max, and caption; light and dark schemes"},{"role":"source","label":"Piktochart: Apple keynote tips, one stat per slide","kind":"link","url":"https://piktochart.com/blog/tips-keynote-presentation.md","license":"link-only"},{"role":"source","label":"Animation principles for data visualization","kind":"link","url":"https://skills.cat/skills/dylantarre/animation-principles/data-visualization","license":"link-only"},{"role":"source","label":"Bohdan Motion: Secureframe launch video, one pain per scene","kind":"link","url":"https://x.com/bohdanmotion/status/2069369111231049803","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":160,"text":"Big Stat Count-Up"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.count-up","magicui.number-ticker","hf.mk-progress-stat"],"aliases":["number ticker","count up","hero stat"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/4d6433a0ad20/take-big-stat-count-up.mp4","w":640,"h":360,"duration":3,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAx5JREFUeJwtk8lvGzcUxof7rNJYsiXLi9J6a4M4hwABUqCX3vpX+g/opff0VKDooShcFLmlC2TDkhNZihbOPuSQfaOUB84DB/jxe9/7iKLDAcEYIcsYdT1fCEEoCfyAUjKbzQihcMKZcF13Op1wzgXmaZbW1rHGwnJ2CwraMnYnVaUHgy5QLGHaQYLws/Or5XKulcYUNVZbizqdOAjD+oOpkgRh5BgEFCgASttqt6AoyhL2LJVBGNjuHq6rKO4laUKIUxSZ6/L1ZpUnMo6iIArn8zkirRyCkXYM/YywAG+lmbIsQbnSytR5v9/LikRwTikLfL+QmcprJBBjwrE67kabbbKzBWNsKaEI+q/qGtrL0izLM6SVF/hfxsHJ6GBVNXAz5q5MkiIvrr66wpyBd57rUsKBgnGrCmD0+vp6fHo6Xyxub2+xbRytfWI9ZMR3V8OX19lfD5fivNsb3tzcRIGHux0/ilaTSfUwhTmEe1HbDHAspvd39x8/fNRN7QrGHFQQRzmGBe7Z1+eT2f34+9fL5YI8qsF+13GDg7Px8+cvfnv3J7TDGPvflt3oaK3KPE+MsnmeRUGoVCMYWa/ku3/+PT4+VnmRbSRWznA88r1h/3IIzSitLUaYU5hj66yBIBhaVco0Jt0kxoDfZVU3jbGYeVzh097o5x/ejsfjTJPbX34/Gp6/unghG3AyHXXDVgsQ2gy1X2oV/EmBAlfFPjl49uz95EHKdPLjH8uf/k7kamnfLz5JVlWL5d2v+K0hDGelcl1w2kF2h2uARvM0b7T5nM6O73LsXJyM6rp+ytR0ORWkDsPwzbffwKSe1ivq2AocIBQi3mjdAKIFOaZpAwkdGUhBGEX9yIMX4nn+42wGegkGybgs1ePTnAq+F8d1VQnuDgeDTgdeUXB396CBVzdtsil2jg6PfJ+labrJci0TI+KkwXEcMNajMEnILiFgKtQQNyE8zllWVFuZ9Q4HYRAkUm63W7o/OiCMbEq1f3js+z4m5NNGfnFyFHU6m/V6tV7DKJqqAAcFhceApJSz6RSmDLYG283FxeVwvw8t/we3dMTnbA1otAAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item count-up (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/count-up","credit":"Rendered by varg · HyperFrames Count Up","rights":"generated","note":"The Count Up component rendered as installed (npx hyperframes add count-up), defaults only","bytes":127908,"addedAt":"2026-10-28"}},{"id":"heygen-com/odometer-digit-roll","slug":"odometer-digit-roll","name":"Odometer Digit Roll","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"numbers","tags":["number","odometer","price","counter","hyperframes","remotion","capcut"],"summary":"Each digit rolls on its own wheel to the target, places settling right to left like an odometer.","description":"Built on [Number Wheel](https://github.com/heygen-com/hyperframes/tree/main/registry/components/number-wheel) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nDigits slide vertically in masked slots, with slight motion blur; new places rise into view as the number grows.\n\n**When:** Prices, live counters, plan comparisons — numbers that change rather than appear.\n\n**Watch out:** Do not roll digits at the same speed; lower places spin faster and settle last.\n\n**Timing:** 0.8–1.4 s; ones place settles last; ease out with a tiny overshoot.\n\n**Also called:** rolling number, number wheel, slot digits\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add number-wheel\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/rolling-number\n<RollingNumber from={0} to={1299} />\n```\n\n### In CapCut\n\nText → Text templates → \"odometer\"/\"rolling number\" if available; else stack digit columns and keyframe Position Y in masks.\n\n### Ready-made components\n\n- [Number Wheel](https://skills.varg.ai/component/hf.number-wheel/) (hyperframes): npx hyperframes add number-wheel\n- [Rolling Number](https://skills.varg.ai/component/remocn.rolling-number/) (remocn): npx shadcn@latest add @remocn/rolling-number\n- [Sliding Number](https://skills.varg.ai/component/animateui.sliding-number/) (animate-ui): npm install @animate-ui/react motion\n\n### Where this comes from\n\n- [Animation principles for data visualization](https://skills.cat/skills/dylantarre/animation-principles/data-visualization)","useWhen":["Prices, live counters, plan comparisons — numbers that change rather than appear."],"notFor":["Do not roll digits at the same speed; lower places spin faster and settle last."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/number-wheel","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Number Wheel · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.number-wheel/","license":"Apache-2.0","note":"A rolling digit counter primitive for metrics, prices, counts, and scoreboards"},{"role":"component","label":"Rolling Number · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.rolling-number/","license":"MIT","note":"Odometer where every place rolls at its own speed, new places rising into view, settling exactly on the target value."},{"role":"component","label":"Sliding Number · animate-ui","kind":"link","url":"https://skills.varg.ai/component/animateui.sliding-number/","license":"MIT + Commons Clause","note":"An odometer number whose digits roll on little wheels up to their final value"},{"role":"source","label":"Animation principles for data visualization","kind":"link","url":"https://skills.cat/skills/dylantarre/animation-principles/data-visualization","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":160,"text":"Odometer Digit Roll"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.number-wheel","remocn.rolling-number","animateui.sliding-number"],"aliases":["rolling number","number wheel","slot digits"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/93d859f91de4/lib-animate-ui-sliding-number.mp4","blur":"https://s3.varg.ai/how-to/previews/0c5acad145d7/lib-animate-ui-sliding-number.webp","source":"https://s3.varg.ai/how-to/previews/93d859f91de4/lib-animate-ui-sliding-number.mp4","page":"https://animate-ui.com/docs/primitives/animate-ui/sliding-number","credit":"Captured from the library’s own demo page (Animate UI)","rights":"publisher-site","note":"Preview of the Sliding Number component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/bars-grow-with-labels","slug":"bars-grow-with-labels","name":"Bars Grow with Value Labels","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"numbers","tags":["chart","bars","benchmark","data","hyperframes","remotion","capcut"],"summary":"Bars rise from the baseline in a staggered cascade with values riding their tops.","description":"Built on [Animated Bar Chart](https://github.com/heygen-com/hyperframes/tree/main/registry/components/animated-bar-chart) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nFew bars (3–6), thick, rounded tops; the hero bar in accent color, others muted; labels count up with the bars.\n\n**When:** Benchmarks, growth by quarter, us-vs-them comparisons.\n\n**Watch out:** Do not draw full axes and gridlines; label bars directly and drop the clutter.\n\n**Timing:** Each bar 0.6–0.9 s ease-out, 80–120 ms stagger; hero bar last; hold 2 s.\n\n**Also called:** bar chart, animated bars, column chart\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add animated-bar-chart\n```\nOr `chart-story` to land the exact supplied values in reading order.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/animated-bar-chart\nconst h = spring({frame: frame - i*3, fps, config:{damping:200}}) * value/max * 600;\n```\n\n### In CapCut\n\nMake rectangle shapes; keyframe Scale Y from 0 at the bottom anchor; add value Text layers above each.\n\n### Ready-made components\n\n- [Animated Bar Chart](https://skills.varg.ai/component/hf.animated-bar-chart/) (hyperframes): npx hyperframes add animated-bar-chart\n- [Animated Bar Chart](https://skills.varg.ai/component/remocn.animated-bar-chart/) (remocn): npx shadcn@latest add @remocn/animated-bar-chart\n- [Chart Story](https://skills.varg.ai/component/hf.chart-story/) (hyperframes): npx hyperframes add chart-story\n\n### Where this comes from\n\n- [Animation principles for data visualization](https://skills.cat/skills/dylantarre/animation-principles/data-visualization)\n- [Piktochart: Apple keynote tips, one stat per slide](https://piktochart.com/blog/tips-keynote-presentation.md)","useWhen":["Benchmarks, growth by quarter, us-vs-them comparisons."],"notFor":["Do not draw full axes and gridlines; label bars directly and drop the clutter."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/animated-bar-chart","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Animated Bar Chart · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.animated-bar-chart/","license":"Apache-2.0","note":"A compact data card with deterministic bar growth and value callouts."},{"role":"component","label":"Animated Bar Chart · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.animated-bar-chart/","license":"MIT","note":"Bars spring up from the baseline in a staggered cascade."},{"role":"component","label":"Chart Story · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.chart-story/","license":"Apache-2.0","note":"One chart builds from data in reading order and lands the exact supplied values: staggered bars, a left-to-right line with area fill, a sweeping donut, or filling progress bars…"},{"role":"source","label":"Animation principles for data visualization","kind":"link","url":"https://skills.cat/skills/dylantarre/animation-principles/data-visualization","license":"link-only"},{"role":"source","label":"Piktochart: Apple keynote tips, one stat per slide","kind":"link","url":"https://piktochart.com/blog/tips-keynote-presentation.md","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":160,"text":"Bars Grow with Value Labels"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.animated-bar-chart","remocn.animated-bar-chart","hf.chart-story"],"aliases":["bar chart","animated bars","column chart"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/92969d97a56e/take-bars-grow-with-labels.mp4","w":640,"h":360,"duration":4.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAktJREFUeJxtU81rE0EUn6/d7W6ypoqkbQSPHiLWQ9FbBPUq/gH2D5PgSRT14MF7qTdBkLYGJQSKlwrGJj1EstndzqdvZjabCD7Yt29m3rz3e+/3Bv/6fYExJpQQbP8IIQKmW1jbqkq0sdqAaKO1drbW8ClQhsEaL91hMwhDRt0mtvvOSftTgowLTcASGksh/D64GWXYMjP2WIo8n0wmadoUl5eQdmdnq9Vq+fzawfmZnwshOkmbK020rcPn8ckrRFLJMAyTRkII3diILXIXAhKAgbGCe3ORSak4fHBksEcAEdhaCwxSevNqem0zRWtydPQVIbG3d48vSL//afdOp9e7pWj5p8w1prUbQ/8Kse1GBweHg8G3/f1nUZy8fPXaGMGVKWf3Px6enY1nb95/fvK02XvQ43x1kRknyCFkjI1Gp6PTH8Ph8GTwfTrLinmGcQDNeN5/0YpEnDaNkZPJOMtuIARwVMWjZ83Sie2ChOGX4+O37z50u90oisqynBd5HMfgwgIWAJtSuYaQJcuWUePmwiLyW6DLonj86OHu7W6aplleQCwtBWMBoACHkG4v8ptJQhf53etbzbLgmBCzlKpHRrtB0xL47my368qBaaUUpRRgcF4qBehQG0dxfGU6nWqzYpzVcLxWyhRlzjmHpSWVMYgCsWAJRqORWH6rsYYLq4usrtbPu1S2f1AacVL7QVBvgEBEqWG4NbVPgvyHfqHQ+PyCuDrrQfW6Incpxr0qStbory37chlRUgpbeZ1ndV+tkYUNDoIArz3pvwwycejc9LhzAAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item animated-bar-chart (Apache-2.0) in a host composition","page":"https://hyperframes.heygen.com/catalog/components/animated-bar-chart","credit":"Rendered by varg · HyperFrames Animated Bar Chart","rights":"generated","note":"The Animated Bar Chart component used as its header comment describes, with demo copy","bytes":25121,"addedAt":"2026-10-28"}},{"id":"heygen-com/line-draws-riding-label","slug":"line-draws-riding-label","name":"Line Draws with Riding Label","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"numbers","tags":["chart","line","growth","trend","hyperframes","remotion","capcut"],"summary":"A line draws itself left to right while the current value rides the pen tip, ending on a dot and big label.","description":"Built on [Minimal Line Graph](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mk-line-graph) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nOne or two series on a quiet grid; the draw front has a glowing dot; value labels pop at key points.\n\n**When:** Growth over time, usage curves, \"hockey stick\" moments.\n\n**Watch out:** Do not draw both series at once if one is the point; draw the comparison first, faded, then the hero line.\n\n**Timing:** Draw 1.2–2 s power1.inOut; end dot pop 0.2 s; hold 1.5 s.\n\n**Also called:** line chart, growth curve, trend line\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add mk-line-graph\n```\nOr `data-chart` for bar + line with NYT-style labels.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/animated-line-chart\nconst p = interpolate(frame,[0,54],[0,1],{extrapolateRight:'clamp',easing:Easing.inOut(Easing.sin)});\n<path strokeDasharray={len} strokeDashoffset={len*(1-p)}/>\n```\n\n### In CapCut\n\nExport the chart as a PNG; Mask → Linear keyframed left to right to reveal the line; add a dot sticker following the edge.\n\n### Ready-made components\n\n- [Minimal Line Graph](https://skills.varg.ai/component/hf.mk-line-graph/) (hyperframes): npx hyperframes add mk-line-graph\n- [Animated Line Chart](https://skills.varg.ai/component/remocn.animated-line-chart/) (remocn): npx shadcn@latest add @remocn/animated-line-chart\n- [Data Chart](https://skills.varg.ai/component/hf.data-chart/) (hyperframes): npx hyperframes add data-chart\n\n### Where this comes from\n\n- [Animation principles for data visualization](https://skills.cat/skills/dylantarre/animation-principles/data-visualization)","useWhen":["Growth over time, usage curves, \"hockey stick\" moments."],"notFor":["Do not draw both series at once if one is the point; draw the comparison first, faded, then the hero line."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mk-line-graph","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Minimal Line Graph · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.mk-line-graph/","license":"Apache-2.0","note":"One or two SVG series draw on with dots popping and value labels riding the draw front; dim baseline axis, x-labels, color-dot legend"},{"role":"component","label":"Animated Line Chart · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.animated-line-chart/","license":"MIT","note":"Line chart whose SVG path draws on from left to right with a leading dot."},{"role":"component","label":"Data Chart · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.data-chart/","license":"Apache-2.0","note":"Animated bar + line chart with staggered reveal, NYT-style typography, and value labels"},{"role":"source","label":"Animation principles for data visualization","kind":"link","url":"https://skills.cat/skills/dylantarre/animation-principles/data-visualization","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":160,"text":"Line Draws with Riding Label"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.mk-line-graph","remocn.animated-line-chart","hf.data-chart"],"aliases":["line chart","growth curve","trend line"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b02418d12be3/take-line-draws-riding-label.mp4","w":640,"h":360,"duration":7,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAwpJREFUeJw9U11v2zYUJS8/ZIWSJSeO02bw7C5DHzoUaB8H7GF/aMD2+/Y4YE8DBgzYAC9LGrRZEzu2a0m2RVL82LUL7FIPAnF5eO45h/SnH34ESrsQgg+eca31r39cG2NioM55FqK11pm9lDJP+gSLkfGX48vvvscdQzk5VoiRx0iqulk9PAnBmyYiUFbX0lpSnGunWwgRKC7OOACLMSRpMp1Mn5/l3vnPEJ+x+KbRf89uS0MXVTW7/2swKFV5epIlu3YjYrQidUCxl3HGGFJnV6+uJi8n2mhKCMX6H+jmfr51ZL1drjerwYtpkiQBmBoOx6PxtmlmN/9CIBFxQJ4oWRTF5OuXkPTAOwQRJCBbRIk42uNiTSmsq01W9Ek+5CrDm0+nX5nhC4Edjz+3LiQSiOhxHO8wIQI7RT2ewh8ppMAdZORRY99xiHmW0lffDkcjSfy8acDRPM+JPIFe4N2KEx+AskRqDYtFA9GWRTHoQwh2q3Fk4CR0zprIhPHkbdyktZGRCC4edMW77QkYR1uhpCpVfzAcXlzayIINkpCd9kXiUYo98LZt0TWPn6OyGD5LijOKmvZk590Y7Gg0+njXr+tPod0TqwSQplobnmRKOcqrne46lMjbCBgX3kXZHwy8dPN688Xq48XFhWi39+/url6/+efd3fzuQ2wNSmC7jjOyXM4Vz9JUeRIYsI2OKIs9hpADTz7Vu93eW9v98vjbdDIZX54SSBfrZja79gEPHPyXggc0j3EU1oWAGWKM0IDKHSw7iE13W1NVtD/m1Gsafr9++vPmAxfim7fCQ0ZphU0YRcyxi+T82fOHqnZlP0KCLh3yQ3FhMiPv+WWiohuI9arWPk166KyQstfc3iql0A/MLkYGGBhrZZJwMLumTvMyHJjAMQRHRjrNORch0M5F7ZA7Mub4sEiGV7feW3YINl3MnwZn3hS5yvubuhZpfsBBOhAZPSa7LEt8X7rboaAk2OgggtjvW1JglPNqec8IOfgaAjE7t6+HqThP5fv1KlOZhx4OxQBnh/8AMri05qnx+XkAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item mk-line-graph (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/blocks/mk-line-graph","credit":"Rendered by varg · HyperFrames Minimal Line Graph","rights":"generated","note":"The Minimal Line Graph component rendered as installed (npx hyperframes add mk-line-graph), defaults only","bytes":272342,"addedAt":"2026-10-28"}},{"id":"heygen-com/ranked-bar-race","slug":"ranked-bar-race","name":"Ranked Bar Race","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"numbers","tags":["chart","race","ranking","data","hyperframes","remotion","capcut"],"summary":"Ranked bars grow and overtake each other over time while the axis rescales and a year/date ticks.","description":"Built on [Bar Chart Race](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/bar-chart-race) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nHorizontal bars with logos at their ends, sorted live, a big date counter in the corner; your product climbs to #1.\n\n**When:** Market share, popularity over time, \"fastest growing\" stories.\n\n**Watch out:** Do not run the race too fast; viewers need ~0.5–1 s per period to follow overtakes.\n\n**Timing:** 0.5–1 s per period, smooth interpolation between periods, final hold 2 s.\n\n**Also called:** bar chart race, ranking animation, leaderboard\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add bar-chart-race\n```\nFeed the time series as variables; ranks and the axis are recomputed per frame from time.\n\n### In Remotion\n\n```tsx\nconst t = frame / (fps*0.8); const i0 = Math.floor(t), k = t - i0;\nconst values = series.map(s => s[i0] + (s[i0+1]-s[i0])*k);\nconst ranked = [...values.keys()].sort((a,b)=>values[b]-values[a]);\n```\n\n### In CapCut\n\nBuild in Flourish (Bar chart race template), screen-record the preview, import and trim.\n\n### Ready-made components\n\n- [Bar Chart Race](https://skills.varg.ai/component/hf.bar-chart-race/) (hyperframes): npx hyperframes add bar-chart-race\n- [Data Chart](https://skills.varg.ai/component/hf.data-chart/) (hyperframes): npx hyperframes add data-chart\n\n### Where this comes from\n\n- [Flourish: how to make bar chart race visualizations](https://flourish.studio/blog/bar-chart-race/)","useWhen":["Market share, popularity over time, \"fastest growing\" stories."],"notFor":["Do not run the race too fast; viewers need ~0.5–1 s per period to follow overtakes."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/bar-chart-race","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Bar Chart Race · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.bar-chart-race/","license":"Apache-2.0","note":"Ranked bars grow and overtake each other as a time series advances, with the axis rescaling as values climb and the accent handing over to whoever leads"},{"role":"component","label":"Data Chart · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.data-chart/","license":"Apache-2.0","note":"Animated bar + line chart with staggered reveal, NYT-style typography, and value labels"},{"role":"source","label":"Flourish: how to make bar chart race visualizations","kind":"link","url":"https://flourish.studio/blog/bar-chart-race/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":160,"text":"Ranked Bar Race"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.bar-chart-race","hf.data-chart"],"aliases":["bar chart race","ranking animation","leaderboard"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0860592b3fb2/take-ranked-bar-race.mp4","w":640,"h":360,"duration":8,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAfFJREFUeJx9k91u0zAUxx3HTtps3Yb6CdI6UKUhFDaEQOK+DF6DXXO1vUSfggcZEuIF2H0vdkU1CQmNtU2UZPmwzd9JaUOU7Vw4dnz8O//jc2z4iz/L5VIqRf6ZUpKZTEiJudNsNpoNJTe7ZVNKZSLDaHGLYe15XhzHYJmU2raNDZOZKkczZgJUS4HPbDabTqf9/uD4+EiDhgdDIzcBLYwTS7OEyIqfOmyaIQY1KZzTfM6JdhgMHvd6Pe0jlQbhEysVhMG+//vbxcXw5hdOZUQrglORwnpOoVyp6/7++OOHef8Z5ZzhfAHSOg3VtJhstIzdjmconJGE1mZEiYRtPRmqrT3MKaj6MskKxCgVxLi6E1++fr/xfCiqpRSGCz377C6cXYvSdR1WIKw54zvbzru3b4LwrshibeWlluM4r18dcWqUq8n+D5X+nF2jiOY9ijIhkiTpdrsqt3KAFcigRhhESqJ7UqFbw6wgJLaEPDs/f+m+QPmAw7LssEnNsnhm26PRKAqjSmrAt1rb7Xb70d4OELViN4qIIGEUXf64nC+qqQVhOB6PTz+dQktFSI0izjkehOu668vOuxFvQBw+Pzx5f4Jg91FWoKLfiCRplt7Ob30/LCtK0uTgafzAi9uAEBQjyt/pdCaTSeWCYBAF3MOgv7cLGdG9odu1AAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item bar-chart-race (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/blocks/bar-chart-race","credit":"Rendered by varg · HyperFrames Bar Chart Race","rights":"generated","note":"The Bar Chart Race component rendered as installed (npx hyperframes add bar-chart-race), defaults only","bytes":55657,"addedAt":"2026-10-28"}},{"id":"heygen-com/progress-ring-fills","slug":"progress-ring-fills","name":"Progress Ring Fills","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"numbers","tags":["percentage","ring","gauge","stat","hyperframes","remotion","capcut"],"summary":"A thin ring draws on to a percentage while the number in its center counts up in sync.","description":"Built on [Conic Progress Ring](https://github.com/heygen-com/hyperframes/tree/main/registry/components/conic-progress-ring) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nThin stroke on a faint track, rounded cap, the percent in the center; optional color shift as it passes thresholds.\n\n**When:** Accuracy, uptime, completion, savings as a percentage.\n\n**Watch out:** Do not use thick donut charts with many slices; one ring, one number.\n\n**Timing:** 1.0–1.6 s power2.out; center count shares the same easing.\n\n**Also called:** conic ring, gauge, percentage arc\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add conic-progress-ring\n```\nOr `mk-usage-arc` — one helper call drives both ring and number.\n\n### In Remotion\n\n```tsx\nconst p = interpolate(frame,[0,40],[0,0.94],{extrapolateRight:'clamp',easing:Easing.out(Easing.quad)});\n<circle r={90} strokeDasharray={565} strokeDashoffset={565*(1-p)} strokeLinecap=\"round\"/>\n<text>{Math.round(p*100)}%</text>\n```\n\n### In CapCut\n\nUse a ring sticker with Mask → Circle sweep, or Text templates → \"progress\".\n\n### Ready-made components\n\n- [Conic Progress Ring](https://skills.varg.ai/component/hf.conic-progress-ring/) (hyperframes): npx hyperframes add conic-progress-ring\n- [Hairline Arc Gauge](https://skills.varg.ai/component/hf.mk-usage-arc/) (hyperframes): npx hyperframes add mk-usage-arc\n- [SVG Line Draw Loader](https://skills.varg.ai/component/hf.svg-line-draw-loader/) (hyperframes): npx hyperframes add svg-line-draw-loader\n\n### Where this comes from\n\n- [Animation principles for data visualization](https://skills.cat/skills/dylantarre/animation-principles/data-visualization)","useWhen":["Accuracy, uptime, completion, savings as a percentage."],"notFor":["Do not use thick donut charts with many slices; one ring, one number."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/conic-progress-ring","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Conic Progress Ring · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.conic-progress-ring/","license":"Apache-2.0","note":"A token-driven conic progress ring whose angular fill and center count settle together from one registered percentage."},{"role":"component","label":"Hairline Arc Gauge · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.mk-usage-arc/","license":"Apache-2.0","note":"Thin circular gauge that draws on while its percentage counts up; one helper call drives both"},{"role":"component","label":"SVG Line Draw Loader · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.svg-line-draw-loader/","license":"Apache-2.0","note":"An Anime.js-style path drawing loader implemented as a seekable GSAP stroke timeline."},{"role":"source","label":"Animation principles for data visualization","kind":"link","url":"https://skills.cat/skills/dylantarre/animation-principles/data-visualization","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":160,"text":"Progress Ring Fills"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.conic-progress-ring","hf.mk-usage-arc","hf.svg-line-draw-loader"],"aliases":["conic ring","gauge","percentage arc"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/fccd1f2eac50/take-progress-ring-fills.mp4","w":640,"h":360,"duration":6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAA1xJREFUeJwdU8tu20YUnRdJ8SlRFBlbsRO5rorADowgKAo0rdFVN02zab+jQPNf/YAC7SJBEaQFariPGG1i15Ys+m1JFCmK5AxnpqNs7uLi3jPn3HMGPv/ue4xwms8BAFJzF0Wxf/CW17yWsKoqJCSltK4Wuq67hqdmoEY2er3Ok11MsAR4uSWlqqQWcHR2zq9nEMKr64QLbvNcCF5YIeZgzgWEGKlpIVRVM4bV6H3Qa/uNuuYKRrxHWQJN0mIYX1kVnYzHZ0kcBIHj+ZbpZTS327b8YscwDM644uX8epmm6c7jrY3+elotNIUOMIFQMVIPkMOTuOTwOr2Z0/nKvQ1CMBey2fbR51udTufwx73BYCDLcnNzs/v1Izoc+u1IEgzFkgiCCgJgzs7iczKeJapV5POg5RfB/TAMywamURTtPDk+Ps5HqZ5hK5fFQfy6Gn/19KmG3RQyEy5lQiwRBCvT0zz+h0gOOecIYSUh3NzyPO9aWwDfv3l3SQpgGKqPNak3gxavZBnP4MPuSRzfqZtKUZtMVM0G+06ZKKCSVRUgBgNoS6YmrS1c9oPwdDSsWf3wm2ej0ai/tq5ce3Hwx/lwxDzzzd9vvjVD5WldHbqOA3TlRE2UUoQ0LnPXdSHWBUAS4aJioQbctu9ZZtO2ak41iZChY0O3edXEoj35ryxLza9ajp2WFGmYMGQVYsErbTi4bRpH/X5fodJs3mgFr/b3x29/KopCFEUn6Ii15vb2NmClLkHXa2SQTR0MXI2g1PcMQvI5nyaZEQEKXv918m88a6066l7d3U9/eXd8P+E1Y1jWnFHp1PaqaZ/cJCyRDcNs6mXBy7PMXHEXiwVB9Cp0keO5STItRTu+oZc3F+oisffyy2e7t3tHyjuO9ejB+icfR/PZ8YMiL8v00g0tx7l7S2vOL04BpYTMDcc0LRUsCQQQSNNNiPSG7Rij6mTyJ/hs/e6jFRWYBQDZz791V7urVu6sm0fXsuJwRQqMYARAJSXRrQASIgEHUPBl1DCTgCH7wzBSab74YY8ug4sZZYPQBA3tI1ZryEKt5vl0utaKlHd3qplNJOmttmezZJqVkDMEK4IUN1xm0yyVSuD7L7lMsWonNZoxlIyB69qRXweOObn3WIX54vdXgvP/AWxM299Gip6eAAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item conic-progress-ring (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/conic-progress-ring","credit":"Rendered by varg · HyperFrames Conic Progress Ring","rights":"generated","note":"The Conic Progress Ring component rendered as installed (npx hyperframes add conic-progress-ring), defaults only","bytes":229535,"addedAt":"2026-10-28"}},{"id":"Remocn/before-after-metric","slug":"before-after-metric","name":"Before → After Metric","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"numbers","tags":["before after","metric","outcome","number","hyperframes","remotion","capcut"],"summary":"The old number shows, gets crossed or rolls, and the new better number takes its place.","description":"Built on [Value Swap](https://remocn.dev/r/value-swap.json) by Kapish Dima (remocn), MIT. The write-up and recipes below are varg's.\n\n\"12 months\" in grey slides up and out; \"2 weeks\" rolls in bold accent; an arrow or delta chip (\"−83%\") pops beside it.\n\n**When:** Outcome claims: time saved, cost cut, conversion lifted.\n\n**Watch out:** Do not show the delta before the viewer has read the old value; give it ~1 s.\n\n**Timing:** Old hold 0.8–1.2 s, swap 0.4–0.6 s, delta chip pop 0.2 s, hold 1.5 s.\n\n**Also called:** value swap, metric change, from-to number\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add slot-machine-roll\n```\nOr `strikethrough-replace` when the old value should be crossed out.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/value-swap\n<ValueSwap from=\"12 months\" to=\"2 weeks\" at={30}/>\n```\n\n### In CapCut\n\nTwo Text layers; old one Animation Out \"Slide up\", new one In \"Slide up\" at the same frame; add a delta chip sticker.\n\n### Ready-made components\n\n- [Value Swap](https://skills.varg.ai/component/remocn.value-swap/) (remocn): npx shadcn@latest add @remocn/value-swap\n- [Slot Machine Roll](https://skills.varg.ai/component/hf.slot-machine-roll/) (hyperframes): npx hyperframes add slot-machine-roll\n- [Strikethrough Replace](https://skills.varg.ai/component/hf.strikethrough-replace/) (hyperframes): npx hyperframes add strikethrough-replace\n\n### Where this comes from\n\n- [Bohdan Motion: Secureframe launch video, one pain per scene](https://x.com/bohdanmotion/status/2069369111231049803)","useWhen":["Outcome claims: time saved, cost cut, conversion lifted."],"notFor":["Do not show the delta before the viewer has read the old value; give it ~1 s."],"publisher":{"name":"Kapish Dima · remocn","handle":"Remocn","kind":"community","verified":false,"url":"https://remocn.dev","avatar":"https://github.com/Remocn.png"},"source":{"url":"https://remocn.dev/r/value-swap.json","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Value Swap · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.value-swap/","license":"MIT","note":"Swaps a value in place with a vertical slide — the old value exits up as the new one enters from below while an invisible sizer keeps the width stable."},{"role":"component","label":"Slot Machine Roll · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.slot-machine-roll/","license":"Apache-2.0","note":"A vertical reel scrolls characters from one value to another."},{"role":"component","label":"Strikethrough Replace · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.strikethrough-replace/","license":"Apache-2.0","note":"Draw a strike line across old text, then reveal the replacement."},{"role":"source","label":"Bohdan Motion: Secureframe launch video, one pain per scene","kind":"link","url":"https://x.com/bohdanmotion/status/2069369111231049803","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":160,"text":"Before → After Metric"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["remocn.value-swap","hf.slot-machine-roll","hf.strikethrough-replace"],"aliases":["value swap","metric change","from-to number"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/4c97906d2cb8/take-before-after-metric.mp4","w":640,"h":360,"duration":4.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAhRJREFUeJxtU01vE0EM9cdsm1Cq0kKlBoHEhRtI/f+/AAEXuCAEF0JQKypBk5SEye7YPM8maVrhTTYjj/38/Ozw8OCINlZYhJnF8SIOo7vm7vGFGZu7um2v0vaENFUCEjHQxAAid7ACxVwCygjFzLlwOHeBXJQVec6irkEHL6m8dvmY1EQwLs61uBdwK2ugKBvtgKu6RHsSka5Nc3x6qiI5Z1W9vroqbVs75mgJtUoJHTx4JRwVXKTiBYoQEyBOTs7gWC5mQJnTajQaDV6/YCBezGANAQsPUtArlWJJNuTho2iHijB4HR6eDAaDvDq4vLxo1Y+eP50+0Xxzc/bo8c/374Zl34iDj0dfAElbpfvf+iGzMv7+CexMo5HjTr69/QCa8E86ewgU1ON1ItTfEdt9K6s6hUJUUpO4adBvePeoW+Y2Z2Sp312IfmqYIlqy0MswjmLGVTEzUk2NNlZjIbkOue06b7vwmBvm5XHEppg5GNVITBO3pUB5L74/HI6evUypKfnPeDy+3lu+Oj//rasm58WbL4LhYPwotd5PzDCA+rNYyIMLFKKubRfzmaGQZcyEWsvTeRrI7NcUodgbqSjxQnTd743YuIQ3JYod9NXy74/J115LcHxgNPn4GSL0A4quYncgZaF7m722rkNqFQmP92N06/px9jmVBf4o5Vbn/wD14/Ngh8WNNL4Nlv7oHUCd7ts/va1ZNEOy7jQAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item slot-machine-roll (Apache-2.0) in a host composition","page":"https://hyperframes.heygen.com/catalog/components/slot-machine-roll","credit":"Rendered by varg · HyperFrames Slot Machine Roll","rights":"generated","note":"The Slot Machine Roll component used as its header comment describes, with demo copy","bytes":25123,"addedAt":"2026-10-28"}},{"id":"heygen-com/money-counter-payoff","slug":"money-counter-payoff","name":"Money Counter Payoff","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"numbers","tags":["money","revenue","counter","celebration","hyperframes","remotion","capcut"],"summary":"A currency figure counts up fast, flashes green on landing, and a small burst celebrates it.","description":"Built on [Apple Money Count](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/apple-money-count) by Stronkter (hyperframes), Apache-2.0. The write-up and recipes below are varg's.\n\nBig $ value in finance-style type; digits blur while climbing, settle, flash green; confetti or coins burst once.\n\n**When:** Payment, revenue, creator-earnings and savings products.\n\n**Watch out:** Do not celebrate made-up numbers; show real or clearly labeled example figures.\n\n**Timing:** Count 1–1.5 s expo.out, flash 0.2 s, burst 0.8–1.2 s.\n\n**Also called:** revenue counter, earnings count, money stat\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add apple-money-count\nnpx hyperframes add confetti\n```\nConfetti is seeded, so every render matches.\n\n### In Remotion\n\n```tsx\nconst v = interpolate(frame,[0,40],[0,10000],{extrapolateRight:'clamp',easing:Easing.out(Easing.exp)});\nconst flash = interpolate(frame,[40,46],[1,0],{extrapolateLeft:'clamp',extrapolateRight:'clamp'});\n<span style={{color: flash>0? '#22C55E' : '#fff'}}>${Math.round(v).toLocaleString()}</span>\n```\n\n### In CapCut\n\nCounter text template + Effects → \"Confetti\"/\"Money rain\" for 1 s at landing; add a cash-register SFX.\n\n### Ready-made components\n\n- [Apple Money Count](https://skills.varg.ai/component/hf.apple-money-count/) (hyperframes): npx hyperframes add apple-money-count\n- [Confetti](https://skills.varg.ai/component/hf.confetti/) (hyperframes): npx hyperframes add confetti\n- [Confetti](https://skills.varg.ai/component/tsparticles.confetti/) (tsparticles): pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>\n\n### Where this comes from\n\n- [Jamie on X: SFX breakdown of a launch video](https://x.com/jamiesmotion/status/2110099791958982703)","useWhen":["Payment, revenue, creator-earnings and savings products."],"notFor":["Do not celebrate made-up numbers; show real or clearly labeled example figures."],"publisher":{"name":"Stronkter · HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/apple-money-count","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Apple Money Count · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.apple-money-count/","license":"Apache-2.0","note":"Apple-style finance counter that counts from $0 to $10,000, flashes green, and bursts money icons with sound."},{"role":"component","label":"Confetti · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.confetti/","license":"Apache-2.0","note":"A deterministic celebration burst with seeded particles and gravity."},{"role":"component","label":"Confetti · tsparticles","kind":"link","url":"https://skills.varg.ai/component/tsparticles.confetti/","license":"MIT","note":"One burst of confetti squares and dots flung up from the centre, tumbling, flipping and fading as it falls"},{"role":"source","label":"Jamie on X: SFX breakdown of a launch video","kind":"link","url":"https://x.com/jamiesmotion/status/2110099791958982703","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":160,"text":"Money Counter Payoff"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.apple-money-count","hf.confetti","tsparticles.confetti"],"aliases":["revenue counter","earnings count","money stat"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/apple-money-count.mp4","w":1920,"h":1080,"blur":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/apple-money-count.png","source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/apple-money-count.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/apple-money-count","credit":"Apple Money Count · hyperframes","rights":"publisher-site","note":"Preview of the Apple Money Count component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/axis-free-comparison","slug":"axis-free-comparison","name":"Axis-Free Speed Comparison","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"numbers","tags":["comparison","performance","chart","keynote","hyperframes","remotion","capcut"],"summary":"Two or three bars with no axis numbers, just labels and a big multiplier like \"2.4× faster\".","description":"Built on [Chart Story](https://github.com/heygen-com/hyperframes/tree/main/registry/components/chart-story) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nClean bars in the product gradient vs grey competitors, \"Higher is better\" note, the multiplier counts up as the hero bar grows.\n\n**When:** Performance claims in keynote style where the relative gap is the message.\n\n**Watch out:** Do not drop axes without stating the test conditions in a small footnote.\n\n**Timing:** Bars 0.8 s ease-out, hero bar last; multiplier count 0.8 s; hold 2 s.\n\n**Also called:** Apple-style chart, 2x faster, relative bars\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add chart-story\n```\nHide the axis, set the hero bar fill to the brand gradient, and drive a `count-up` for the multiplier.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/animated-bar-chart\nconst m = interpolate(frame,[20,44],[1,2.4],{extrapolateLeft:'clamp',extrapolateRight:'clamp'}).toFixed(1);\n<h1>{m}× faster</h1>\n```\n\n### In CapCut\n\nTwo rectangle shapes keyframed on Scale X; Text \"2.4× faster\" with a counter template; small footnote text.\n\n### Ready-made components\n\n- [Chart Story](https://skills.varg.ai/component/hf.chart-story/) (hyperframes): npx hyperframes add chart-story\n- [Animated Bar Chart](https://skills.varg.ai/component/remocn.animated-bar-chart/) (remocn): npx shadcn@latest add @remocn/animated-bar-chart\n- [Basic Number Ticker](https://skills.varg.ai/component/fancy.basic-number-ticker/) (fancy): npx shadcn add @fancy/basic-number-ticker\n\n### Where this comes from\n\n- [Piktochart: Apple keynote tips, one stat per slide](https://piktochart.com/blog/tips-keynote-presentation.md)\n- [Bohdan Motion: Apple Mac Studio launch film, 10-step playbook](https://x.com/bohdanmotion/status/2093347071440851104)","useWhen":["Performance claims in keynote style where the relative gap is the message."],"notFor":["Do not drop axes without stating the test conditions in a small footnote."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/chart-story","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Chart Story · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.chart-story/","license":"Apache-2.0","note":"One chart builds from data in reading order and lands the exact supplied values: staggered bars, a left-to-right line with area fill, a sweeping donut, or filling progress bars…"},{"role":"component","label":"Animated Bar Chart · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.animated-bar-chart/","license":"MIT","note":"Bars spring up from the baseline in a staggered cascade."},{"role":"component","label":"Basic Number Ticker · fancy","kind":"link","url":"https://skills.varg.ai/component/fancy.basic-number-ticker/","license":"MIT","note":"A large percentage counting up from zero to its target, easing out on the final number"},{"role":"source","label":"Piktochart: Apple keynote tips, one stat per slide","kind":"link","url":"https://piktochart.com/blog/tips-keynote-presentation.md","license":"link-only"},{"role":"source","label":"Bohdan Motion: Apple Mac Studio launch film, 10-step playbook","kind":"link","url":"https://x.com/bohdanmotion/status/2093347071440851104","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":160,"text":"Axis-Free Speed Comparison"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.chart-story","remocn.animated-bar-chart","fancy.basic-number-ticker"],"aliases":["Apple-style chart","2x faster","relative bars"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/03406241fca5/take-axis-free-comparison.mp4","w":640,"h":360,"duration":5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAA1NJREFUeJwlk8tu20YYhefG2/AmRRcrMgNbtgokQZxacN0UWXYXoNtu+wh9hb5Dn6FAkVUXXRTdFHCAIkjdRRwDTdLUcAIRlmVTkURJ5Aw5w+nI4ZL4ef5zzv8Rfv/jb0opADCE0EGcMXZ/+JQQki2W78/f//7fKgxDaLoAgKZnOo7TGjzp9XpjPn51cpK8PNLz+E692WySmoXBzaOFXIwmWT68kkoJ35CNdrS9ui6KIodQSiFlBgBSfGWjqhPUr8LG+TzZ398v7/hxHJPQhEhr3AgZGCnfaUXeKlu9O2N5lrmW49k0EWg6TZHjIAUT/hYGHdb2JhepUkaz2cUb9HI4JLectQ5CSJuiSM3iizh+3e/3ryZWuhhv7Dy+uhqjxcxAegZzzhFPPRuiGs1X02hja+/u4Jon33z1hLRcuM6lxI0t+vn9vTD67viv47zMB4cHRdCmHsYXRpqmGBNZyg/Wx2LHTnak8/Xt3ohsdTvBstbpbBDf1qGQUpXWUeuAOIRWGFp82Xh9+s+r+YdKqc3t6LOHB1a+nM6mOnDBJZCS2vZg70HN91zP050SYurP5dqTUkhrKYlNF1vuJIsfHh6yIUsmCVdke7NHVQlGo0KcCgVEVXWjaPdjXSpOAAIQEH34SuozaSGQSTPL8qWojGaPWdO3Y1YqArAtSw6UUNDKC5CblkS+UgXGWCoihT6ktgLIcFJhRMpqTYBtFMg0rkfpmzdnyq9ZlHYgHSWTUmSfEJFCMCgriCS0F/niRWyJNRYA6f5++eNnjR8xA9M0t+rdIAjm8eW786HdbHlhTS8jBipZhcH6rJoUIEsCATTBfDX7+99T7cuE6/fk+PiZhu0GSPTo3uNud1Os+JSLOmP62DpzWUiTUiaEqqSqlENMNl/KuVDLFPHnrusaSGGEyKNBqL3oeV12vwEsKzkbCRNUk3GSTmaMCw0nxOaLP5+Hfqh/iLa0fv3hJ68eGIYR9TsaQIEzoRT59kuPYCw41aQUsH307OhW40EjoMPxbJllTFRCl8DkJ+618XKRsWmazxml7t3dLLodEWO5LrtMMl7pqk0LkPNrfvIy/uKg1d/dLaXU0eY51At816YOLRTQ+8eX46IsdKeclenltL5zL/RzQoz/Ac1q0E/jtPnYAAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item chart-story (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/chart-story","credit":"Rendered by varg · HyperFrames Chart Story","rights":"generated","note":"The Chart Story component rendered as installed (npx hyperframes add chart-story), defaults only","bytes":76625,"addedAt":"2026-10-28"}},{"id":"heygen-com/dense-specs-wall","slug":"dense-specs-wall","name":"Dense Specs Wall","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"numbers","tags":["specs","grid","features","numbers","hyperframes","remotion","capcut"],"summary":"A grid of short spec tiles fills the frame in a fast stagger — numbers and two-word labels.","description":"Built on [Grid Card Assemble](https://github.com/heygen-com/hyperframes/tree/main/registry/components/grid-card-assemble) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nTight grid of tiles (\"4K · 60fps\", \"20 GB\", \"9:16\") assembling in a wave, then the camera holds for one beat.\n\n**When:** Near the end of a film, to signal depth after the story has been told.\n\n**Watch out:** Do not expect each tile to be read; this is a texture of capability, keep it under 2 s and don't narrate every tile.\n\n**Timing:** Whole wall 1–1.5 s, tile stagger 20–40 ms from center; hold 1–2 s.\n\n**Also called:** specs grid, feature wall, capability grid\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add grid-card-assemble\nnpx hyperframes add stagger-lattice\n```\n`stagger:{each:0.03,from:\"center\",grid:\"auto\"}`\n\n### In Remotion\n\n```tsx\ntiles.map((t,i)=>{const d=Math.hypot(t.col-cx,t.row-cy); const s=spring({frame:frame-d*2,fps,config:{damping:200}}); return <Tile style={{opacity:s, transform:`scale(${0.9+s*0.1})`}}/>})\n```\n\n### In CapCut\n\nBuild the wall as one image; reveal with a Mask → Circle expanding from the center over 1 s.\n\n### Ready-made components\n\n- [Grid Card Assemble](https://skills.varg.ai/component/hf.grid-card-assemble/) (hyperframes): npx hyperframes add grid-card-assemble\n- [Specs Checklist](https://skills.varg.ai/component/hf.mk-specs-list/) (hyperframes): npx hyperframes add mk-specs-list\n- [Stagger Lattice](https://skills.varg.ai/component/hf.stagger-lattice/) (hyperframes): npx hyperframes add stagger-lattice\n\n### Where this comes from\n\n- [Bohdan Motion: Apple Mac Studio launch film, 10-step playbook](https://x.com/bohdanmotion/status/2093347071440851104)\n- [SaaSFrame: understanding the bento layout trend](https://www.saasframe.io/blog/the-bento-layout-trend)","useWhen":["Near the end of a film, to signal depth after the story has been told."],"notFor":["Do not expect each tile to be read; this is a texture of capability, keep it under 2 s and don't narrate every tile."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/grid-card-assemble","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Grid Card Assemble · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.grid-card-assemble/","license":"Apache-2.0","note":"N capability cards (thin-line icon that draws on, mono label, optional muted body) stagger-assemble into a grid or vertical list with a fade plus short slide into slot, then hold perfectly still."},{"role":"component","label":"Specs Checklist · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.mk-specs-list/","license":"Apache-2.0","note":"Left-aligned specs/traits checklist over footage or a board: rows slide in staggered with an accent underline sweep; light and dark schemes"},{"role":"component","label":"Stagger Lattice · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.stagger-lattice/","license":"Apache-2.0","note":"A staggered grid reveal inspired by Anime.js v4 stagger utilities, implemented with GSAP for HyperFrames."},{"role":"source","label":"Bohdan Motion: Apple Mac Studio launch film, 10-step playbook","kind":"link","url":"https://x.com/bohdanmotion/status/2093347071440851104","license":"link-only"},{"role":"source","label":"SaaSFrame: understanding the bento layout trend","kind":"link","url":"https://www.saasframe.io/blog/the-bento-layout-trend","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":160,"text":"Dense Specs Wall"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.grid-card-assemble","hf.mk-specs-list","hf.stagger-lattice"],"aliases":["specs grid","feature wall","capability grid"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/7d51ef545082/take-dense-specs-wall.mp4","w":640,"h":360,"duration":4.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAArtJREFUeJxdUtluEzEU9e5kMm0S0lRdaKmKECAe+oCE+AZ45bP4Bj6BPwGBqABBWSq1FWk2Mpl4ZrxcczNdoNwHy7LvPfZZ6MtXr5VSmWZZlpWV6ff7TaCEkBB9ANBS4t5wdX4+sNZtbG40CSNXFZaNJNZ7QSltNBoVhZbUxlZAudbL4eHCWxu2k1aM0OCinaRTyJrYSkI9zCBGXoNCAB+8eDN4K8dST5hzbpLn41ayqjVen8/zGOMgSVZW0kjZaDSywZuzUxHj9Y8ipd6HztbO9va2+Gi+HB5+2P+eIDVicRYuGhldvlaB39zakokaDocwr/CW3Kyqqh4/e35/74WQlLFIFrNFdDUCZZT8ZV4jUoDgvSMRKGX/ARHGOIXoK9Fr9prQDGWuVWNRLeL1zynFvQ3BWi8cpwVhnJdlGWtdEP0CxlkwMPs5OBIArNvt812JZecEHxeU48pDgsqicbc2N7TWqt1G3KIwggv8HTqKMIjsvWe6mM5PxOwzT/Ndw6eFLTAHF0bijLCioaSLoallZ33dL5+XHSkSKUxRlOCXPXSIx0lLEGbF4bfPKNjdAGWeQ4H+UHfJDeYQUWzibBHMZDJhyJGLYVhSQ+cBgABa7X5TSNOtZY4wMNPRuNZFYBAvJaoXxyD3RTEbZItsNSokS6OqvUA4hi5TT7qT1lrWFrVRrNdZQ+aTbEYvVayDi8Ucpk0zsZquYBZmhVHRoVHKa6RGLWGRr+/dOXj6RBSUxKTxg+N8E1orNQKXUuze7vd6vYydonCOVGaxKGLJY+IAQ0Af5D0UxKVJp9NJ91rvxu9FwGgIVUr9bzgsIUfTyjTI/sNHvbW1M/dJOZ8wi8OGGID4NaAhOkU5V0GIaeYm4irtkdws58vj46PTE7Gzs3vvYFMpOSe/Klopxm2whpfYM2NhbAal6foQ/gBSzaMqlv5QXAAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item grid-card-assemble (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/grid-card-assemble","credit":"Rendered by varg · HyperFrames Grid Card Assemble","rights":"generated","note":"The Grid Card Assemble component rendered as installed (npx hyperframes add grid-card-assemble), defaults only","bytes":168221,"addedAt":"2026-10-28"}},{"id":"heygen-com/pain-metric-falls","slug":"pain-metric-falls","name":"Pain Metric Falls Away","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"numbers","tags":["problem","decline","metric","story","hyperframes","remotion","capcut"],"summary":"A painful metric (hours, cost, errors) draws a falling line while the number counts down and the mood lifts.","description":"Built on [Decline Chart](https://github.com/heygen-com/hyperframes/tree/main/registry/components/decline-chart) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nLine drops steeply as the value counts down; the background goes from dark/red-tinted to clean once the product arrives.\n\n**When:** The problem → solution turn in the first third of a film.\n\n**Watch out:** Do not open on the solution's numbers before the pain has been shown.\n\n**Timing:** Count down 1–1.5 s, line draw in the same window, background shift 0.6 s after.\n\n**Also called:** decline chart, cost drops, problem stat\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add decline-chart\n```\n\n### In Remotion\n\n```tsx\nconst v = interpolate(frame,[0,40],[480,32],{extrapolateRight:'clamp',easing:Easing.inOut(Easing.cubic)});\n<h1>{Math.round(v)} hrs/month</h1>\n```\n\n### In CapCut\n\nCounter text template counting down; keyframe the background Adjust → Saturation/Temperature after the drop.\n\n### Ready-made components\n\n- [Decline Chart](https://skills.varg.ai/component/hf.decline-chart/) (hyperframes): npx hyperframes add decline-chart\n- [Count Up](https://skills.varg.ai/component/hf.count-up/) (hyperframes): npx hyperframes add count-up\n- [Animated Number](https://skills.varg.ai/component/motionprimitives.animated-number/) (motion-primitives): npx motion-primitives@latest add animated-number\n\n### Where this comes from\n\n- [Bohdan Motion: Secureframe launch video, one pain per scene](https://x.com/bohdanmotion/status/2069369111231049803)","useWhen":["The problem → solution turn in the first third of a film."],"notFor":["Do not open on the solution's numbers before the pain has been shown."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/decline-chart","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Decline Chart · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.decline-chart/","license":"Apache-2.0","note":"A metric line draws downward as its value counts down and the ambient background darkens in lockstep."},{"role":"component","label":"Count Up · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.count-up/","license":"Apache-2.0","note":"A token-native stat counter that eases between values, counting up or down, and lands with a restrained scale pulse."},{"role":"component","label":"Animated Number · motion-primitives","kind":"link","url":"https://skills.varg.ai/component/motionprimitives.animated-number/","license":"MIT","note":"A big monospace number springs up from zero to its target value, digits rolling as it climbs"},{"role":"source","label":"Bohdan Motion: Secureframe launch video, one pain per scene","kind":"link","url":"https://x.com/bohdanmotion/status/2069369111231049803","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":160,"text":"Pain Metric Falls Away"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.decline-chart","hf.count-up","motionprimitives.animated-number"],"aliases":["decline chart","cost drops","problem stat"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/bede991a6c6c/take-pain-metric-falls.mp4","w":640,"h":360,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAeVJREFUeJx9U01zmzAQ1RehNqHBYydOJr322EN/SQ/5q5nJTH9ADv0HPXWaJk5IsDExEBBI6q4EOGntLAMSWu3jvX2ChrM5Y1QzSghhFMMYA3OqYTRawaAxlHYLkIKB4RbSNi2D4FgrmK33fN+hNE3rKsmegA9QOwHobxcXUjbfry6hUEAFJMajESDDlW82UipXAxz2wSF9zhaLW8/znAhkBFzzdSa4KFsJq0CN2EVIaSvEiXWi6CusH9fXKMrz8AnKiTITJo4OP/qMSynvqqKu69YVm07j0KA+zADhQkAaSDw18il5HHMeBIefw4kK9H2ZF2WZK+Ng4MENeUersIQRCyYvWhdZujKpd3DwyQ9Op8dFK9P1Om4lqtvq24EnUDZ2C2lTAieBKTCkkT/rClbOxIfpUXRMJ0WR/8oza/xuVgKcpra7Fk4NH8Vbm5tmY8rniPAoir6enifL5HddokyybbqmjhF224BVW2tsJ7R9BYLQmcy0qyTOhD+bTb+waZqu/rzkYD/ryaH9rgCM61zvPep3aHeOGeepaZYPixPuz+fzURjGcbwRZOidGExVb7Vbj2ATEncZ/AcYWyqZ3N2EwbjixIlgFkB0Bf+F3uOOPa/0uaoGiL7ZO3abrt+7Qnd/9b/ZvzISTHbLQmExAAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item decline-chart (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/decline-chart","credit":"Rendered by varg · HyperFrames Decline Chart","rights":"generated","note":"The Decline Chart component rendered as installed (npx hyperframes add decline-chart), defaults only","bytes":52521,"addedAt":"2026-10-28"}},{"id":"ibelick/ticking-time-saved","slug":"ticking-time-saved","name":"Ticking Time-Saved Clock","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"numbers","tags":["timer","speed","proof","clock","ffmpeg","hyperframes","remotion","capcut"],"summary":"Clock-style digits slide as seconds tick, timing the task live on screen.","description":"Built on [Sliding Number](https://github.com/ibelick/motion-primitives/blob/main/components/core/sliding-number.tsx) by motion-primitives, MIT. The write-up and recipes below are varg's.\n\nA small mono timer in a corner (00:00 → 00:38) with digits sliding vertically; it stops and pops when the task finishes.\n\n**When:** Prove speed claims in real time: \"rendered in 38 seconds\".\n\n**Watch out:** Do not speed up the footage while the timer claims real time; keep them honest or label \"sped up 4×\".\n\n**Timing:** Digit slide 0.2–0.3 s per tick; final pop 0.2 s.\n\n**Also called:** sliding clock digits, timer, live time counter\n\n### In FFmpeg\n\n```bash\n-vf \"drawtext=text='%{pts\\:gmtime\\:0\\:%M\\\\\\:%S}':x=w-tw-60:y=60:fontsize=48:fontcolor=white:box=1:boxcolor=black@0.5:boxborderw=12\"\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add number-pop-in\n```\nDerive the shown seconds from `tl.time()` so it matches the footage exactly.\n\n### In Remotion\n\n```tsx\nconst s = Math.floor(frame / fps);\nconst mm = String(Math.floor(s/60)).padStart(2,'0'), ss = String(s%60).padStart(2,'0');\n```\n\n### In CapCut\n\nText → Text templates → search \"timer\"/\"stopwatch\"; place top right and match its length to the clip.\n\n### Ready-made components\n\n- [Sliding Number](https://skills.varg.ai/component/motionprimitives.sliding-number/) (motion-primitives): npx motion-primitives@latest add sliding-number\n- [Number Pop In](https://skills.varg.ai/component/hf.number-pop-in/) (hyperframes): npx hyperframes add number-pop-in\n- [Camcorder HUD](https://skills.varg.ai/component/hf.camcorder-hud/) (hyperframes): npx hyperframes add camcorder-hud\n\n### Where this comes from\n\n- [FFmpeg filters documentation (timeline enable, drawtext, zoompan, overlay)](https://ffmpeg.org/ffmpeg-filters.html)","useWhen":["Prove speed claims in real time: \"rendered in 38 seconds\"."],"notFor":["Do not speed up the footage while the timer claims real time; keep them honest or label \"sped up 4×\"."],"publisher":{"name":"Julien Thibeaut (ibelick)","handle":"ibelick","kind":"community","verified":false,"url":"https://github.com/ibelick","avatar":"https://github.com/ibelick.png"},"source":{"url":"https://github.com/ibelick/motion-primitives/blob/main/components/core/sliding-number.tsx","repo":"ibelick/motion-primitives","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Sliding Number · motion-primitives","kind":"link","url":"https://skills.varg.ai/component/motionprimitives.sliding-number/","license":"MIT","note":"Clock digits slide vertically into place as each second ticks over"},{"role":"component","label":"Number Pop In · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.number-pop-in/","license":"Apache-2.0","note":"A transitions.dev-inspired digit pop-in with blur, lift, and staggered value reveal"},{"role":"component","label":"Camcorder HUD · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.camcorder-hud/","license":"Apache-2.0","note":"Responsive REC, battery, editable date placeholder, and timeline-driven counter overlay for creator-camera and camcorder treatments"},{"role":"source","label":"FFmpeg filters documentation (timeline enable, drawtext, zoompan, overlay)","kind":"link","url":"https://ffmpeg.org/ffmpeg-filters.html","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"kinetic","hue":160,"text":"Ticking Time-Saved Clock"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["motionprimitives.sliding-number","hf.number-pop-in","hf.camcorder-hud"],"aliases":["sliding clock digits","timer","live time counter"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/952535e7abc4/lib-motion-primitives-sliding-number.mp4","blur":"https://s3.varg.ai/how-to/previews/9c369ebe95da/lib-motion-primitives-sliding-number.webp","source":"https://s3.varg.ai/how-to/previews/952535e7abc4/lib-motion-primitives-sliding-number.mp4","page":"https://motion-primitives.com/docs/sliding-number","credit":"Captured from the library’s own demo page (Motion Primitives)","rights":"publisher-site","note":"Preview of the Sliding Number component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"ibelick/trusted-by-marquee","slug":"trusted-by-marquee","name":"Trusted-By Logo Marquee","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"logo-walls","tags":["logos","trusted by","marquee","social proof","ffmpeg","hyperframes","remotion","capcut"],"summary":"A row of monochrome customer logos glides sideways in a seamless loop under a short line.","description":"Built on [Infinite Slider](https://github.com/ibelick/motion-primitives/blob/main/components/core/infinite-slider.tsx) by motion-primitives, MIT. The write-up and recipes below are varg's.\n\nLogos in one color (white on dark, grey on light) at equal optical height, even gaps, faded edges, slow constant speed.\n\n**When:** After the hook or before the CTA, as quiet credibility.\n\n**Watch out:** Do not mix full-color logos at different sizes; grayscale at a uniform height reads as one trustworthy group.\n\n**Timing:** Loop 20–40 s for a full row; in a 3–5 s shot it should move ~10–20% of its width.\n\n**Also called:** logo slider, logo strip, customer marquee\n\n### In FFmpeg\n\n```bash\n# scroll a wide logo strip (strip.png is 2× frame width, logos duplicated)\nffmpeg -i bg.mp4 -loop 1 -i strip.png -filter_complex \"[0][1]overlay=x='-mod(t*120\\,1920)':y=820:shortest=1\" out.mp4\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add trust-strip\n```\nFor motion: duplicate the row and tween `xPercent:-50` with `ease:\"none\"` over the clip.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/infinite-marquee\nconst x = -((frame * 2) % rowWidth);\n<div style={{transform:`translateX(${x}px)`, filter:'grayscale(1) brightness(1.8)'}}>{logos}{logos}</div>\n```\n\n### In CapCut\n\nOverlay a long strip PNG of logos; keyframe Position X right → left across the clip; set Opacity 70%.\n\n### Ready-made components\n\n- [Infinite Slider](https://skills.varg.ai/component/motionprimitives.infinite-slider/) (motion-primitives): npx motion-primitives@latest add infinite-slider\n- [Infinite Marquee](https://skills.varg.ai/component/remocn.infinite-marquee/) (remocn): npx shadcn@latest add @remocn/infinite-marquee\n- [Trust Strip](https://skills.varg.ai/component/hf.trust-strip/) (hyperframes): npx hyperframes add trust-strip\n\n### Where this comes from\n\n- [Genesys Growth: designing customer logo walls](https://genesysgrowth.com/blog/designing-customer-logo-walls)\n- [Huemor: logo bar](https://huemor.rocks/glossary/logo-bar/)\n- [Magic UI: Marquee](https://magicui.design/docs/components/marquee)","useWhen":["After the hook or before the CTA, as quiet credibility."],"notFor":["Do not mix full-color logos at different sizes; grayscale at a uniform height reads as one trustworthy group."],"publisher":{"name":"Julien Thibeaut (ibelick)","handle":"ibelick","kind":"community","verified":false,"url":"https://github.com/ibelick","avatar":"https://github.com/ibelick.png"},"source":{"url":"https://github.com/ibelick/motion-primitives/blob/main/components/core/infinite-slider.tsx","repo":"ibelick/motion-primitives","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Infinite Slider · motion-primitives","kind":"link","url":"https://skills.varg.ai/component/motionprimitives.infinite-slider/","license":"MIT","note":"A row of logos glides sideways forever in a seamless loop"},{"role":"component","label":"Infinite Marquee · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.infinite-marquee/","license":"MIT","note":"Seamlessly looping horizontal text strip with optional stroke style."},{"role":"component","label":"Trust Strip · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.trust-strip/","license":"Apache-2.0","note":"A monochrome trust row of wide-tracked mono wordmarks that fade in with an opacity-only left-to-right stagger, then hold dead still."},{"role":"source","label":"Genesys Growth: designing customer logo walls","kind":"link","url":"https://genesysgrowth.com/blog/designing-customer-logo-walls","license":"link-only"},{"role":"source","label":"Huemor: logo bar","kind":"link","url":"https://huemor.rocks/glossary/logo-bar/","license":"link-only"},{"role":"source","label":"Magic UI: Marquee","kind":"link","url":"https://magicui.design/docs/components/marquee","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"logo3d","hue":25,"text":"Trusted-By Logo Marquee"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["motionprimitives.infinite-slider","remocn.infinite-marquee","hf.trust-strip"],"aliases":["logo slider","logo strip","customer marquee"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/33926d9fc704/lib-motion-primitives-infinite-slider.mp4","blur":"https://s3.varg.ai/how-to/previews/496b02c9cad5/lib-motion-primitives-infinite-slider.webp","source":"https://s3.varg.ai/how-to/previews/33926d9fc704/lib-motion-primitives-infinite-slider.mp4","page":"https://motion-primitives.com/docs/infinite-slider","credit":"Captured from the library’s own demo page (Motion Primitives)","rights":"publisher-site","note":"Preview of the Infinite Slider component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/logo-grid-settles","slug":"logo-grid-settles","name":"Logo Grid Settles In","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"logo-walls","tags":["logos","grid","customers","trust","hyperframes","remotion","capcut"],"summary":"Logos fade and scale into a tidy grid with a soft stagger, then hold for a beat.","description":"Built on [Logo Wall](https://github.com/heygen-com/hyperframes/tree/main/registry/components/logo-wall) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\n3×3 or 4×2 grid, equal cell sizes, monochrome marks, thin dividers or none; one row at a time.\n\n**When:** A static \"used by\" moment where you want logos recognized, not just sensed.\n\n**Watch out:** Do not show more than ~12 logos; recognition drops when they shrink below ~6% of frame width.\n\n**Timing:** Each logo 0.3–0.4 s (scale 0.9→1, opacity), 40–60 ms stagger; hold ≥ 1.5 s.\n\n**Also called:** logo wall, logo cloud, customer grid\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add logo-wall\n```\nSwap the placeholder lettermarks for real SVGs; keep `filter: grayscale(1)`.\n\n### In Remotion\n\n```tsx\nlogos.map((l,i)=>{const s=spring({frame:frame-i*2,fps,config:{damping:200}}); return <Img src={l} style={{opacity:s, transform:`scale(${0.9+0.1*s})`, filter:'grayscale(1)'}}/>})\n```\n\n### In CapCut\n\nPlace logo PNGs in a grid on one frame; Animation In \"Fade in\" with 2-frame offsets per logo.\n\n### Ready-made components\n\n- [Logo Wall](https://skills.varg.ai/component/hf.logo-wall/) (hyperframes): npx hyperframes add logo-wall\n- [Animated Group](https://skills.varg.ai/component/motionprimitives.animated-group/) (motion-primitives): npx motion-primitives@latest add animated-group\n- [Stagger Lattice](https://skills.varg.ai/component/hf.stagger-lattice/) (hyperframes): npx hyperframes add stagger-lattice\n\n### Where this comes from\n\n- [Genesys Growth: designing customer logo walls](https://genesysgrowth.com/blog/designing-customer-logo-walls)\n- [Huemor: logo bar](https://huemor.rocks/glossary/logo-bar/)","useWhen":["A static \"used by\" moment where you want logos recognized, not just sensed."],"notFor":["Do not show more than ~12 logos; recognition drops when they shrink below ~6% of frame width."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/logo-wall","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Logo Wall · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.logo-wall/","license":"Apache-2.0","note":"A trusted-by wall of placeholder lettermark logos that fades and scales into place with a deterministic per-cell stagger."},{"role":"component","label":"Animated Group · motion-primitives","kind":"link","url":"https://skills.varg.ai/component/motionprimitives.animated-group/","license":"MIT","note":"A row of images pops in one after another, each scaling up from small with a short stagger"},{"role":"component","label":"Stagger Lattice · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.stagger-lattice/","license":"Apache-2.0","note":"A staggered grid reveal inspired by Anime.js v4 stagger utilities, implemented with GSAP for HyperFrames."},{"role":"source","label":"Genesys Growth: designing customer logo walls","kind":"link","url":"https://genesysgrowth.com/blog/designing-customer-logo-walls","license":"link-only"},{"role":"source","label":"Huemor: logo bar","kind":"link","url":"https://huemor.rocks/glossary/logo-bar/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"logo3d","hue":25,"text":"Logo Grid Settles In"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.logo-wall","motionprimitives.animated-group","hf.stagger-lattice"],"aliases":["logo wall","logo cloud","customer grid"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ba01a4759ed1/take-logo-grid-settles.mp4","w":640,"h":360,"duration":6,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAelJREFUeJx9U01PIkEQnemeGT8SA38DdEg26/4IRTiol8VfpgkbNyEKQyJ6EOGuIXpyRi5iOKxXBm9ugj3d7Jup2AxItg6V1y81r1911Zir6xvGslDTOEzT1AwdWYpJh7WURTiOs762BrlYVCoI2Jb9/vddfHz8T4hzS0QCANXIUkZTNQVpKhlJqZRyLJtbXBdTDWEClr5/+8c2Pur3+/DvFr6D9B8fkV23gPz0FEwmk4JbYIyhBszm5jfGWeAHc0JKyXw+H4nID3y8AjDkSGjL3eKMpfkg8MHncrmVFYdqZkKMcc/z4nNiu9lsEqkx8a3LluYvWhfx2zO++NjZbBZzeRu/EUb+ijOZDPI4HBMPj2GCZ0KRjMrlMlo7/X2KY3G3iM5rtRqmtlfcw8iq1Sr4UqkEa8cnx1SD5/+V8KmpMd6+bsMRT6x2u11g2GaG0el0dGs37RuNwZtxsDkhEKPR6CtGhOMQq2AkC0n8NFmuMAypeE4IU/tZqURCNDwPnVeOjrCE9fo5Ltzd2UG+urpE2f7+AWw2GnW0fHh4YNn2+dnZgiP2MnjBS1Frg+dB8kNA0/zz+qonNRwOqZibMQa52JoQ4u7u1vjc2jR+uL/XuNfrwQttP7DmZ0K0nRrQL2Z8kukCmJTL+H/ikwpZM6qdFQAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item logo-wall (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/logo-wall","credit":"Rendered by varg · HyperFrames Logo Wall","rights":"generated","note":"The Logo Wall component rendered as installed (npx hyperframes add logo-wall), defaults only","bytes":71672,"addedAt":"2026-10-28"}},{"id":"magicuidesign/integrations-orbit","slug":"integrations-orbit","name":"Integrations Orbit the Logo","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"logo-walls","tags":["integrations","logos","orbit","ecosystem","hyperframes","remotion","capcut"],"summary":"App icons circle your logo on one or two thin rings turning in opposite directions.","description":"Built on [Orbiting Circles](https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/orbiting-circles.tsx) by magic-ui, MIT. The write-up and recipes below are varg's.\n\nYour mark centered; partner icons in small round chips on faint rings; inner ring clockwise, outer counter-clockwise, slow.\n\n**When:** \"Works with the tools you use\" beats; integrations and MCP connectors.\n\n**Watch out:** Do not spin fast; at more than one turn per ~20 s icons blur and look cheap.\n\n**Timing:** Ring period 20–40 s; icons fade in with 50 ms stagger; hold 2–3 s.\n\n**Also called:** integration orbit, orbiting icons, ecosystem\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add locked-nucleus-orbit\n```\nOr drive `rotation` on two ring wrappers from the timeline (`ease:\"none\"`), counter-rotating each icon to stay upright.\n\n### In Remotion\n\n```tsx\nconst a = (frame / (fps*30)) * Math.PI*2;\nicons.map((ic,i)=>{const t=a+i*(2*Math.PI/icons.length); return <Img src={ic} style={{transform:`translate(${Math.cos(t)*R}px,${Math.sin(t)*R}px)`}}/>})\n```\n\n### In CapCut\n\nPlace icons around a ring image, group them, and keyframe Rotation 0 → 45° across the clip; counter-rotate isn't needed for round chips.\n\n### Ready-made components\n\n- [Orbiting Circles](https://skills.varg.ai/component/magicui.orbiting-circles/) (magic-ui): npx shadcn@latest add @magicui/orbiting-circles\n- [Orbiting Items 3D](https://skills.varg.ai/component/animata.orbiting-items-3-d/) (animata): npx shadcn@latest add https://animata.design/r/list/orbiting-items-3-d.json\n- [Ecosystem Constellation](https://skills.varg.ai/component/remocn.ecosystem-constellation/) (remocn): npx shadcn@latest add @remocn/ecosystem-constellation\n\n### Where this comes from\n\n- [Bohdan Motion: breakdown of the Replit Design launch video](https://x.com/bohdanmotion/status/2083248851750728188)\n- [Magic UI: Animated Beam](https://v3.magicui.design/docs/components/animated-beam)","useWhen":["\"Works with the tools you use\" beats; integrations and MCP connectors."],"notFor":["Do not spin fast; at more than one turn per ~20 s icons blur and look cheap."],"publisher":{"name":"Magic UI","handle":"magicuidesign","kind":"community","verified":false,"url":"https://magicui.design","avatar":"https://github.com/magicuidesign.png"},"source":{"url":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/orbiting-circles.tsx","repo":"magicuidesign/magicui","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Orbiting Circles · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.orbiting-circles/","license":"MIT","note":"App icons circling an empty centre on two thin rings, the inner ring turning one way and the outer the other"},{"role":"component","label":"Orbiting Items 3D · animata","kind":"link","url":"https://skills.varg.ai/component/animata.orbiting-items-3-d/","license":"MIT","note":"Glassy icon bubbles circle a glowing purple orb on a tilted ellipse, growing as they swing to the front"},{"role":"component","label":"Ecosystem Constellation · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.ecosystem-constellation/","license":"MIT","note":"A central logo orbited by integration satellites with pulsing data lines."},{"role":"source","label":"Bohdan Motion: breakdown of the Replit Design launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2083248851750728188","license":"link-only"},{"role":"source","label":"Magic UI: Animated Beam","kind":"link","url":"https://v3.magicui.design/docs/components/animated-beam","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"logo3d","hue":25,"text":"Integrations Orbit the Logo"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["magicui.orbiting-circles","animata.orbiting-items-3-d","remocn.ecosystem-constellation"],"aliases":["integration orbit","orbiting icons","ecosystem"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/01246d7e6592/lib-magic-ui-orbiting-circles.mp4","blur":"https://s3.varg.ai/how-to/previews/cb3b39ce9357/lib-magic-ui-orbiting-circles.webp","source":"https://s3.varg.ai/how-to/previews/01246d7e6592/lib-magic-ui-orbiting-circles.mp4","page":"https://magicui.design/docs/components/orbiting-circles","credit":"Captured from the library’s own demo page (Magic UI)","rights":"publisher-site","note":"Preview of the Orbiting Circles component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/partner-lockup","slug":"partner-lockup","name":"Partner × Partner Lockup","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"logo-walls","tags":["partnership","logos","lockup","co-brand","hyperframes","remotion","capcut"],"summary":"Two logos slide together from opposite sides and lock around a thin × or + mark.","description":"Built on [Logo Brand Close](https://github.com/heygen-com/hyperframes/tree/main/registry/components/logo-brand-close) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nEqual optical size, a hairline separator or ×; both marks resolve from blur to sharp at the same moment.\n\n**When:** Partnership announcements, integrations launches, co-marketing films.\n\n**Watch out:** Do not let one logo dominate unless the partnership is unequal on purpose.\n\n**Timing:** Slide 0.6–0.8 s expo.out, × fades in 0.2 s after, hold 2 s.\n\n**Also called:** co-brand lockup, partnership reveal, logo x logo\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add focus-blur-resolve\n```\n```js\ntl.from(\"#a\",{x:-160,filter:\"blur(10px)\",opacity:0,duration:0.7,ease:\"expo.out\"},0)\n  .from(\"#b\",{x:160,filter:\"blur(10px)\",opacity:0,duration:0.7,ease:\"expo.out\"},0)\n  .from(\"#x\",{scale:0.6,opacity:0,duration:0.2},0.5);\n```\n\n### In Remotion\n\n```tsx\nconst p = spring({frame, fps, config:{damping:200}});\n<Img src={a} style={{transform:`translateX(${interpolate(p,[0,1],[-160,0])}px)`, filter:`blur(${(1-p)*10}px)`}}/>\n```\n\n### In CapCut\n\nTwo logo overlays: Animation In \"Slide right\" / \"Slide left\" 0.6 s; a Text \"×\" with Fade in.\n\n### Ready-made components\n\n- [Logo Brand Close](https://skills.varg.ai/component/hf.logo-brand-close/) (hyperframes): npx hyperframes add logo-brand-close\n- [Focus Blur Resolve](https://skills.varg.ai/component/hf.focus-blur-resolve/) (hyperframes): npx hyperframes add focus-blur-resolve\n- [Logo Enter](https://skills.varg.ai/component/remocn.logo-enter/) (remocn): npx shadcn@latest add @remocn/logo-enter\n\n### Where this comes from\n\n- [Huemor: logo bar](https://huemor.rocks/glossary/logo-bar/)","useWhen":["Partnership announcements, integrations launches, co-marketing films."],"notFor":["Do not let one logo dominate unless the partnership is unequal on purpose."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/logo-brand-close","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Logo Brand Close · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.logo-brand-close/","license":"Apache-2.0","note":"A display-scale wordmark cascades letter by letter into a centered lockup, the accent brand period lands last, an optional tagline and wide-tracked mono URL settle beneath…"},{"role":"component","label":"Focus Blur Resolve · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.focus-blur-resolve/","license":"Apache-2.0","note":"A premium focus pull from heavy blur to crisp text, then a soft blur-out exit."},{"role":"component","label":"Logo Enter · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.logo-enter/","license":"MIT","note":"A stacked group of round brand chips that spring in one-by-one, then hold. Swap the logos to feature any set of marks. Horizontal or vertical stacking."},{"role":"source","label":"Huemor: logo bar","kind":"link","url":"https://huemor.rocks/glossary/logo-bar/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"logo3d","hue":25,"text":"Partner × Partner Lockup"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.logo-brand-close","hf.focus-blur-resolve","remocn.logo-enter"],"aliases":["co-brand lockup","partnership reveal","logo x logo"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f063ca6926cf/take-partner-lockup.mp4","w":640,"h":360,"duration":4,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAWpJREFUeJzNks1OwkAUhZ3pD/3BQKRpywIfAt8HH1QjSV2wkD3QBS4lQIC2tNDptHiGKtZE3YiJt5vOnXu+OXNaohn1i3OUfBbKH4CKw7GKA6Ek55wQiibWpxdKpXKyOkAlPPQDBIqqqrVardFo7Hd7y7IynsmSUDKWqaoC2XK5FCJCGGO27WAAq5fZLIoiNN9BedFsNm97vTRNoVEU2XHczWaNLddtT5+nrasWQLZjJ3Gs60bnutN/6FtW6+7ufjh8gok3ENyyNB0MBslul/Mc1lbr1U23uwkCQ9cnvg+Qbdu+PzFMkxAyGo+CIAjDsG5dUlMu2AGmBAgmofG8x/K2yMptu57n4V6apkXbaLFYjCfjJE7MuglEvN3KioIxYQQZkUrYQFJZOgWPY6lIModZVRHxoYNPoWsazzIkIHI5RvPT58fQfD6HuDwTFUYhXHOeww5ipp8R34JKVsZYtcMrW19K/u2f/ft6BaXSsh1SImUNAAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item logo-brand-close (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/logo-brand-close","credit":"Rendered by varg · HyperFrames Logo Brand Close","rights":"generated","note":"The Logo Brand Close component rendered as installed (npx hyperframes add logo-brand-close), defaults only","bytes":29360,"addedAt":"2026-10-28"}},{"id":"Remocn/brand-chips-spring-in","slug":"brand-chips-spring-in","name":"Brand Chips Spring In","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"logo-walls","tags":["logos","chips","models","stack","hyperframes","remotion","capcut"],"summary":"Round brand chips pop in one by one with a spring and overlap into a tidy stack.","description":"Built on [Logo Enter](https://remocn.dev/r/logo-enter.json) by Kapish Dima (remocn), MIT. The write-up and recipes below are varg's.\n\nCircular chips with white borders, each overlapping the last by ~25%, springing from 0 to 1 scale.\n\n**When:** \"Supports GPT, Claude, Gemini…\" or \"Used at\" beats when space is tight (lower third, corner).\n\n**Watch out:** Do not show more than 6–7 chips; add a \"+40\" chip instead.\n\n**Timing:** Each chip 0.3 s spring (damping ~12), 60–80 ms stagger.\n\n**Also called:** logo chips, avatar stack logos, model logos\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add badge-pop\n```\n`tl.from(\".chip\",{scale:0,duration:0.3,ease:\"back.out(1.8)\",stagger:0.07})`\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/logo-enter\n<LogoEnter logos={[gpt, claude, gemini, krea]} />\n```\n\n### In CapCut\n\nLogo PNGs in circular Masks, overlapping; Animation In \"Pop up\" with 2-frame offsets.\n\n### Ready-made components\n\n- [Logo Enter](https://skills.varg.ai/component/remocn.logo-enter/) (remocn): npx shadcn@latest add @remocn/logo-enter\n- [Badge Pop](https://skills.varg.ai/component/hf.badge-pop/) (hyperframes): npx hyperframes add badge-pop\n- [Avatar Group Hover](https://skills.varg.ai/component/hf.avatar-group-hover/) (hyperframes): npx hyperframes add avatar-group-hover\n\n### Where this comes from\n\n- [Bohdan Motion: breakdown of the Replit Design launch video](https://x.com/bohdanmotion/status/2083248851750728188)","useWhen":["\"Supports GPT, Claude, Gemini…\" or \"Used at\" beats when space is tight (lower third, corner)."],"notFor":["Do not show more than 6–7 chips; add a \"+40\" chip instead."],"publisher":{"name":"Kapish Dima · remocn","handle":"Remocn","kind":"community","verified":false,"url":"https://remocn.dev","avatar":"https://github.com/Remocn.png"},"source":{"url":"https://remocn.dev/r/logo-enter.json","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Logo Enter · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.logo-enter/","license":"MIT","note":"A stacked group of round brand chips that spring in one-by-one, then hold. Swap the logos to feature any set of marks. Horizontal or vertical stacking."},{"role":"component","label":"Badge Pop · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.badge-pop/","license":"Apache-2.0","note":"A transitions.dev-inspired notification badge pop with elastic scale and count reveal"},{"role":"component","label":"Avatar Group Hover · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.avatar-group-hover/","license":"Apache-2.0","note":"A distance-falloff avatar group lift with bouncy hover return"},{"role":"source","label":"Bohdan Motion: breakdown of the Replit Design launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2083248851750728188","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"logo3d","hue":25,"text":"Brand Chips Spring In"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["remocn.logo-enter","hf.badge-pop","hf.avatar-group-hover"],"aliases":["logo chips","avatar stack logos","model logos"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b9add12b6f1d/take-brand-chips-spring-in.mp4","w":640,"h":360,"duration":4.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAA0BJREFUeJwdUztvXEUYndeduXef3r1ee+31C7E22kAk5CIoQiKCioKKLpT0/BAKfggNHWlAUQrKBJBASYjtmICDd73v+9qZOy++9VeN5nG+M+ecD3/5zbfotjDGHJVa697oCSHUyOJ6OHz676pWraKgAheaERFCbPTv7+x0Z3pxcXGRnv9aliXpNqBYgxPvvCeAgwXCiZSTuXZWElRG1bjTWhhrNXLGWG0RddipjHrdEGFcq4+KtN/vm83qdDJhESPQjWIPhb2LOK63AqXc1dCsiiJgjAdBapBSKw0r51QyJjquBS3hmMe0sdEm7Wg6HrGmWAMhb5xzBLllOh2Nrra2toUgaSqr8UmSJM4mGFmEoIHyqwXTGSrof69edJrdo14/den99++xhkDOWWc08LGrcrfZFHc/Pj8/T5Xs9HZLETgc+TDK9dhaBay1ys7++vPNzQJAB3ffq21UqmU9jtuswi2oIL1/9OOj7dnk9PQ06LAax3kgxtejv4tZluUffPb1ZqdInv/AOfWlKhJ7ll0NBoPOp4PXeXovOsDOMkocRj4v5fD6ahJG47dvvzgcaM5zrbt7+8PLSavXnZ/9JKUMo5Y2WlpTDUWsInuVPf7u+4dfPfQ1CS4zBE4bRwJxePTuP9eTeLM3zh2uxCXJXlwOpbSz+cIg347bJY6URisuiONx3FFS7fb2GeXaOHCL3aQEeCllP3rw+ScMgbTzm8vhzdwgKi3a3u2FYegxBkWW8zlILo3wCu+ffHhyfFwYfn6T4WDtLPvlt58JgRQJQmmdMs65nM2n06k0QJbPlkuappA6gIOsBhAARJV202T2x6vnBZKUsiDAgMBevvwdjF+HCOOKQwcHByaFqx7kWMfCrgveAyOrfShgSSCc6WLIsBK16zAICTEU8O70G+s+tznaruwAt6HxulyBlRh7mJw1nIN0l0JUoN86St67PFDMNLcajFFHpPWePRgAJHVG5Hlu6fazp8+ajXdwvSZNSijxHjg5XXpKOAsYxmQlMwDiKJBFGTnVbXcJlbDP9FLdDgfjiL6ZyteXkzvH7cO9PYs8SLMC8/JcVGFaRWkRJniZzLQuaa0Cp9k8qewf1SMJf/oflr/7CNqkkLcAAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item badge-pop (Apache-2.0) in a host composition","page":"https://hyperframes.heygen.com/catalog/components/badge-pop","credit":"Rendered by varg · HyperFrames Badge Pop","rights":"generated","note":"The Badge Pop component used as its header comment describes, with demo copy","bytes":62266,"addedAt":"2026-10-28"}},{"id":"heygen-com/model-logos-float-past","slug":"model-logos-float-past","name":"Logos Float Past in Depth","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"logo-walls","tags":["logos","3D","marquee","ecosystem","hyperframes","remotion","capcut"],"summary":"Partner or model logos drift past on a tilted plane, sharp near the camera and blurred toward the horizon.","description":"Built on [Perspective Marquee](https://github.com/heygen-com/hyperframes/tree/main/registry/components/perspective-marquee) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nA 3D-tilted marquee of logos receding into depth with depth-of-field blur; slow, cinematic.\n\n**When:** Outros that say \"not locked into one vendor\" or show a broad ecosystem.\n\n**Watch out:** Do not mix this with a flat marquee in the same film; pick one logo language.\n\n**Timing:** Constant drift 2–4 s per logo crossing; tilt 20–35°.\n\n**Also called:** perspective marquee, 3D logo stream, floating logos\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add perspective-marquee\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/perspective-marquee\n<PerspectiveMarquee items={logos} tilt={28} />\n```\n\n### In CapCut\n\nMake a flat logo marquee clip first, then apply Effects → \"3D\" or Basic → rotate in 3D and a Blur gradient mask at the far end.\n\n### Ready-made components\n\n- [Perspective Marquee](https://skills.varg.ai/component/hf.perspective-marquee/) (hyperframes): npx hyperframes add perspective-marquee\n- [Perspective Marquee](https://skills.varg.ai/component/remocn.perspective-marquee/) (remocn): npx shadcn@latest add @remocn/perspective-marquee\n\n### Where this comes from\n\n- [Bohdan Motion: breakdown of the Replit Design launch video](https://x.com/bohdanmotion/status/2083248851750728188)","useWhen":["Outros that say \"not locked into one vendor\" or show a broad ecosystem."],"notFor":["Do not mix this with a flat marquee in the same film; pick one logo language."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/perspective-marquee","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Perspective Marquee · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.perspective-marquee/","license":"Apache-2.0","note":"A 3D tilted marquee with depth feel as items roll toward the horizon."},{"role":"component","label":"Perspective Marquee · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.perspective-marquee/","license":"MIT","note":"A 3D-tilted infinite marquee with depth-of-field blur on items rolling toward the horizon."},{"role":"source","label":"Bohdan Motion: breakdown of the Replit Design launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2083248851750728188","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"logo3d","hue":25,"text":"Logos Float Past in Depth"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.perspective-marquee","remocn.perspective-marquee"],"aliases":["perspective marquee","3D logo stream","floating logos"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/4bdc02063c48/take-model-logos-float-past.mp4","w":640,"h":360,"duration":5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAzRJREFUeJxdU1tvHDUYtcf2zM41e2GX7oIKSimUhiBUWoEqUQkJCYlHfhB/gzce+BcIpKpIIJXShdCkSWlTmrBhk80u7Nw8vhtP+4Lww+cZy9/5js45hl98+TVGeMF5WZav9BLi+wAgow3nNI5joK2HvKO8KopiczIkhEBjAQDuFLQbstYaa9wnhtZIzoACVhpKaQSAgbgsiorVI4JDC4yGxKgONEi7FqFBC0H1vhTCs6DT6XjoskPDPx3dG0/GAzBhSjEqCcLGs7RppJKMMR+2bVVVSil5wzAmAHFa0+P1Ywghgo3v+8M0dRVP898C9uha9iEmpMsDjgT0FTTaLc658LADaoRSUhf1n4RgA+1iseBKQeghjDjTESxBkrh7hjbVj/ROGIbvou1Bp5/QyDQtA0GYwJ6bLBUXUj493/M8jwD3wzFOrdW81E5BlGErLN5AqTSSgqau8l/svcxkn29+gjwQNB2gRJh0neTax46dMa+72uv1T0/ns9WZG1CVejgc+iDQjcGwRmkQGWOEEgzy/Gz2a7CzsbGBqGyZNywgGW4gBjBFkxVdJjDy/oJ8heIkGcTJKLngxGtda36Hb2xf+fi9yFl7/8H05qc3+8YnGP+wvNtNu5cuvhZ2OutuZzqdXrl6dTJ4OYL42ptv77P64ODRrQ9uNE0zm8/yPMeny9l4PfyIvX99+0awkp9t3aqOT3q9nq+8JI57OHOZ2t68kD892HrnLZc1N8/Nvx5sqOJ4a3O0u7vrI+xkwwLavcPHLm9fffMdL9nDExq+VDs79/54qJSeXJy4tvXt/PDw8M75g36/30WB826+mDvvnq2eOLENS4QWGFhb/bPeXy7bpEJ/9u15r58MBgMelkrr+c6O808hiQi+P9vTRzqVgZP5MhhFJPj+7s/O63H31SzLMFCyhfBgW4HUUizPmiKvhqNumvZtlHPggs+tMokK2osAO6bWQm0Ar4EzQYagLp8zAv9fRjTVyTMaRXF/HCdxz4KVO81kpI1mlgUQHXl/KyE94FHKT8MSsgoDY/4D8YLXC2hD64I+KcIoGk7SOE64KZ9zB0qpriYIhcugMEbP2cw9+38Bx0PbwUvO144AAAAASUVORK5CYII=","source":"Rendered by varg from the HyperFrames registry item perspective-marquee (Apache-2.0) in a host composition","page":"https://hyperframes.heygen.com/catalog/components/perspective-marquee","credit":"Rendered by varg · HyperFrames Perspective Marquee","rights":"generated","note":"The Perspective Marquee component used as its header comment describes, with demo copy","bytes":241860,"addedAt":"2026-10-28"}},{"id":"heygen-com/integration-logos-light-up","slug":"integration-logos-light-up","name":"Integration Logos Light Up","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"logo-walls","tags":["integrations","logos","grid","highlight","hyperframes","remotion","capcut"],"summary":"A grid of integration tiles sits dim; each lights with a traveling border glow as the narration names it.","description":"Built on [Constellation Hub](https://github.com/heygen-com/hyperframes/tree/main/registry/components/constellation-hub) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nMuted tiles with a thin bright segment racing around the active tile's border; the logo brightens to full color.\n\n**When:** Name three or four key integrations out of many while keeping the others visible.\n\n**Watch out:** Do not light all tiles; the dim ones give scale, the lit ones give focus.\n\n**Timing:** Light each 0.3 s on its spoken word; border segment loop 1.5–2.5 s.\n\n**Also called:** logo grid highlight, connected tools, border light\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add constellation-hub\n```\nCue each tile's `brightness`/`grayscale` tween to its transcript word time.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @magicui/border-beam\nconst lit = cues.some(c => frame >= c.f && frame < c.f + 60 && c.i === i);\n<Tile style={{filter: lit? 'none':'grayscale(1) brightness(0.6)'}}>{lit && <BorderBeam/>}</Tile>\n```\n\n### In CapCut\n\nGrid of logos at 50% opacity; duplicate the active logo on top at 100% with a glow sticker, timed to the voiceover.\n\n### Ready-made components\n\n- [Constellation Hub](https://skills.varg.ai/component/hf.constellation-hub/) (hyperframes): npx hyperframes add constellation-hub\n- [Border Trail](https://skills.varg.ai/component/motionprimitives.border-trail/) (motion-primitives): npx motion-primitives@latest add border-trail\n- [Border Beam](https://skills.varg.ai/component/magicui.border-beam/) (magic-ui): npx shadcn@latest add @magicui/border-beam\n\n### Where this comes from\n\n- [Genesys Growth: designing customer logo walls](https://genesysgrowth.com/blog/designing-customer-logo-walls)","useWhen":["Name three or four key integrations out of many while keeping the others visible."],"notFor":["Do not light all tiles; the dim ones give scale, the lit ones give focus."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/constellation-hub","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Constellation Hub · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.constellation-hub/","license":"Apache-2.0","note":"Feature nodes brighten in narration order as real-length SVG connectors draw outward from a fixed central hub, then settle into one lockup."},{"role":"component","label":"Border Trail · motion-primitives","kind":"link","url":"https://skills.varg.ai/component/motionprimitives.border-trail/","license":"MIT","note":"A short bright segment races around the border of a dark card in an endless loop"},{"role":"component","label":"Border Beam · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.border-beam/","license":"MIT","note":"Red and blue light streaks chase each other around the border of a dark music-player card"},{"role":"source","label":"Genesys Growth: designing customer logo walls","kind":"link","url":"https://genesysgrowth.com/blog/designing-customer-logo-walls","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"logo3d","hue":25,"text":"Integration Logos Light Up"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.constellation-hub","motionprimitives.border-trail","magicui.border-beam"],"aliases":["logo grid highlight","connected tools","border light"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e3c36de0e7aa/take-integration-logos-light-up.mp4","w":640,"h":360,"duration":4.5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAttJREFUeJwdkmly2zgQhbE0NoIUQ0njGkfKLD99/0vkEJlKTRLHcpRIFMUNxJamiwUWCKK7X3+vKaWcMZaFIIRkwoSQm2pXVeW3RQIAMTUIkUFwzgk3lFKfEr5zpiklDME9MzbnBETomDPHlXMtc13K4vHx5ftLyEpXZcPO7/88EBJeX79N8qiUcqAwnhOWIsGQEGPsXodxBP72gzrc8X8f6qenp48v3iVCGZsn9yuSBHfGZSCVIhliZGRetWcUhSt67+d5tniL8LUpLbjRuilLK+USpkyI5IIyGimXRQ0gh2HIIcXkMyMxJk7oGwqUlrUUKUbAY8Z4LajVQIW+9uOt96bcMWEQnichuCXHFBwKASbAhxUNpkRFhLOV0ZoygsljXdb/KMl57oZJ24pTitKDn6S1UGPCxHjWGtjAnZtzXLVgbUQREHgKwUfUDqqp7O4daxof/KWdGZO2LrBOkK5uqk3tq6rKKd9uzmuZu5mnwjmX44AY902JoPo+zPMEWggasX0SV+9p112A1lhzRvEp46lgAnENnC1vHrEYBeOIKcVMgxcAeExIhN1ytxDNj0tp7eKEXxYlM06Wz2Jezm1Ln196jkxiAqewj85d8QM9zSkN9x4HAueJsQK6sd897HdGYLVuCpvNu7Z3q6PlhqUw3EVdF8j6erlIGZEsPijUO4eqldLYJmLiOLttECOUkzFfv3wdg5xv9xAJ6jr/OG232w97VZi1j1KoSuF1kRJv25ZwjcXmMGKKks9IHphtvrzekHoEqxSaATg58XLlsKAlVqSHbXG5XgbXUrcIrQ/Hv845LkunN/qGGXHibHnvO9gJraQ6n0/H43EfA3o3QYUa7t1VKvVzXEykYrPzt3GYRqrI8+dPOEFLZqfvz7+6/nA4JI/YUSzikHK7R+jddq8F6Ha6C+v+sJWUclz87f/PSLOi9HFfFsb89+lkjDm1eZxis/8b1GYefoKA38H2yAACcxXrAAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item constellation-hub (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/constellation-hub","credit":"Rendered by varg · HyperFrames Constellation Hub","rights":"generated","note":"The Constellation Hub component rendered as installed (npx hyperframes add constellation-hub), defaults only","bytes":178720,"addedAt":"2026-10-28"}},{"id":"heygen-com/bento-feature-grid","slug":"bento-feature-grid","name":"Bento Feature Grid","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"galleries","tags":["bento","grid","features","recap","hyperframes","remotion","capcut"],"summary":"Features land in a grid of differently sized rounded tiles — one hero tile, smaller supporting ones.","description":"Built on [Rounded Media Grid](https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mk-placeholder-grid) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nApple-style bento: 1 large + 3–5 small tiles, generous gaps, each tile one idea (icon, number or mini UI); tiles assemble in a stagger.\n\n**When:** Recap of features near the end, or the \"everything you get\" beat.\n\n**Watch out:** Do not fill every tile with text; one visual and ≤ 5 words per tile.\n\n**Timing:** Tiles 0.4–0.5 s each, 60–100 ms stagger hero-first; hold 2–3 s; optional slow camera drift.\n\n**Also called:** bento, feature tiles, summary grid\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add mk-placeholder-grid\n```\nUse the hero-plus-two / 3×2 layouts; drop media into slots; `tl.from(\".cell\",{y:30,opacity:0,stagger:0.08})`.\n\n### In Remotion\n\n```tsx\n<div style={{display:'grid',gridTemplateColumns:'2fr 1fr 1fr',gridTemplateRows:'1fr 1fr',gap:24}}>\n  {tiles.map((t,i)=>{const s=spring({frame:frame-i*3,fps,config:{damping:200}}); return <Tile style={{opacity:s,transform:`translateY(${(1-s)*30}px)`, gridArea:t.area}}/>})}\n</div>\n```\n\n### In CapCut\n\nTemplates → search \"bento\"/\"grid collage\"; or Layout split-screen templates with rounded masks.\n\n### Ready-made components\n\n- [Rounded Media Grid](https://skills.varg.ai/component/hf.mk-placeholder-grid/) (hyperframes): npx hyperframes add mk-placeholder-grid\n- [Grid Card Assemble](https://skills.varg.ai/component/hf.grid-card-assemble/) (hyperframes): npx hyperframes add grid-card-assemble\n- [Dynamic Grid](https://skills.varg.ai/component/hf.dynamic-grid/) (hyperframes): npx hyperframes add dynamic-grid\n\n### Where this comes from\n\n- [SaaSFrame: understanding the bento layout trend](https://www.saasframe.io/blog/the-bento-layout-trend)\n- [freeCodeCamp: bento grids in web design](https://www.freecodecamp.org/news/bento-grids-in-web-design/)\n- [zero on X: Apple-keynote launch film prompt (Screen Studio zoom, no crossfades)](https://x.com/twoclipping/status/2103835273813496100)","useWhen":["Recap of features near the end, or the \"everything you get\" beat."],"notFor":["Do not fill every tile with text; one visual and ≤ 5 words per tile."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mk-placeholder-grid","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Rounded Media Grid · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.mk-placeholder-grid/","license":"Apache-2.0","note":"N-up rounded-corner media grid (2-up, 3-up, 4-up, 3x2, hero plus two): per-cell inside-scale framing, staggered box-in entrance, slow settle"},{"role":"component","label":"Grid Card Assemble · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.grid-card-assemble/","license":"Apache-2.0","note":"N capability cards (thin-line icon that draws on, mono label, optional muted body) stagger-assemble into a grid or vertical list with a fade plus short slide into slot, then hold perfectly still."},{"role":"component","label":"Dynamic Grid · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.dynamic-grid/","license":"Apache-2.0","note":"A responsive animated grid background driven by CSS variables for SaaS, code, and data scenes"},{"role":"source","label":"SaaSFrame: understanding the bento layout trend","kind":"link","url":"https://www.saasframe.io/blog/the-bento-layout-trend","license":"link-only"},{"role":"source","label":"freeCodeCamp: bento grids in web design","kind":"link","url":"https://www.freecodecamp.org/news/bento-grids-in-web-design/","license":"link-only"},{"role":"source","label":"zero on X: Apple-keynote launch film prompt (Screen Studio zoom, no crossfades)","kind":"link","url":"https://x.com/twoclipping/status/2103835273813496100","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"grid","hue":280,"text":"Bento Feature Grid"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.mk-placeholder-grid","hf.grid-card-assemble","hf.dynamic-grid"],"aliases":["bento","feature tiles","summary grid"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/5ecf67ae908d/take-bento-feature-grid.mp4","w":640,"h":360,"duration":8,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAAt9JREFUeJw9k8uO3EQUhs+1ynbb7Z6mmUgDUsRmWEThDSJWrJB4BJ4kj8CSV+AJEOImsUEiUVhxS1AaNInCJBEwsxjS092+VPG7kWi3ynZV+Zz//84pJmbKmf7/MVFscJ+l/vTt0+s3b+92uxfjMues/Zhwm7bnwIJxzy4qKbCqWch88+TmB2+9i01J2FRTdDOrlG7cOD6nmllezuLj9ePz2yd1XTslzBSHMYgURfHbjy+fPDmz1ym8/86dj967S8NAYSQ1ciYRClAnJCOZPTvWr7/yTz+81baLhbC7LUmRbak6r+dffvzZr/c/N6WRuKe0p3HAhdeBs5qmlEWEySgP+zT2NMY+FUMqiDzLTJTHUS3bOEp3TcPWOkIkIRcCKNeMb51IEYwzduNZyCAT1MRr9VnKUUOjWKBapBavPNRFaXsCGiNFFHycyRgEM8t0Qa4QrLFyyqkpinlZNpzNPWLR/Yil5bJA+r6fUsHIQRH/lz/hrYgD9XiAJswEk82rqz++e7BbrS4yAOpfCGT6XKQsy0c//CQpWaTgUK5wZ1kntGRAnlBmGBwNpHLFDe9UPznJR4uRM2hfxc7Ndz6galfn2zovEUiMD74yZZBVYrMxJQmK9kg6wKww9renb9xZLJoYKEZInsYQaT6n31/df/jz+mANcoR4MgIceEJtfbCcJ0yYAXIZ8sBhr7FS70JVNke02/VkkrGae6EBgRJxQmEAPXma6ELdQRq0ZAP+SfOQeg/sQdzRQcieYpQQcyzQ6ON2uwGP3kyoaajrfCq8UkA4cRgGuzBAZ1lZMy9Iw6wGnwBH7uhpApdZQ23c42+d5C/ufUPXd1WmbBh5VnVd3x63OGUUHd287bcPfvl+tvjTX3jZtJvNJsq+77shDavV6mz9bRUurA/p4dP1o7N1cNSywFmL1RKHwJp4eXFpVcvM81kcx7F4em9xtEA/XG+3z55fXvz9T7tql68tUWm2/C9ohRwZNHbmRgAAAABJRU5ErkJggg==","source":"Rendered by varg from the HyperFrames registry item mk-placeholder-grid (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/blocks/mk-placeholder-grid","credit":"Rendered by varg · HyperFrames Rounded Media Grid","rights":"generated","note":"The Rounded Media Grid component rendered as installed (npx hyperframes add mk-placeholder-grid), defaults only","bytes":207458,"addedAt":"2026-10-28"}},{"id":"Remocn/camera-drifts-bento","slug":"camera-drifts-bento","name":"Camera Drifts Across a Bento","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"galleries","tags":["grid","pan","montage","gallery","hyperframes","remotion","capcut"],"summary":"An oversized grid of screenshots fills the frame and the camera drifts diagonally across it.","description":"Built on [Infinite Bento Pan](https://remocn.dev/r/infinite-bento-pan.json) by Kapish Dima (remocn), MIT. The write-up and recipes below are varg's.\n\nGrid larger than the frame, slight tilt, vignette on edges; tiles may lift as the camera passes.\n\n**When:** Montage of many outputs (templates, generated images, user projects) behind a headline.\n\n**Watch out:** Do not drift too fast; at more than ~5% of frame width per second, nothing registers.\n\n**Timing:** Constant drift 3–6 s, linear or sine.inOut; vignette 30–40% at the edges.\n\n**Also called:** bento pan, infinite grid pan, 3D grid fly\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add pan-stations\n```\nOr animate a large grid wrapper `x`/`y` with `ease:\"none\"` for the whole clip.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/infinite-bento-pan\nconst x = interpolate(frame,[0,durationInFrames],[0,-400]);\nconst y = interpolate(frame,[0,durationInFrames],[0,-240]);\n```\n\n### In CapCut\n\nMake a big grid image; keyframe Position diagonally over the clip; add a vignette effect.\n\n### Ready-made components\n\n- [Infinite Bento Pan](https://skills.varg.ai/component/remocn.infinite-bento-pan/) (remocn): npx shadcn@latest add @remocn/infinite-bento-pan\n- [On-Scroll 3D Grid Animations](https://skills.varg.ai/component/codrops.scroll-3d-grid/) (codrops): git clone https://github.com/codrops/Scroll3DGrid\n- [Pan Stations](https://skills.varg.ai/component/hf.pan-stations/) (hyperframes): npx hyperframes add pan-stations\n\n### Where this comes from\n\n- [SaaSFrame: understanding the bento layout trend](https://www.saasframe.io/blog/the-bento-layout-trend)","useWhen":["Montage of many outputs (templates, generated images, user projects) behind a headline."],"notFor":["Do not drift too fast; at more than ~5% of frame width per second, nothing registers."],"publisher":{"name":"Kapish Dima · remocn","handle":"Remocn","kind":"community","verified":false,"url":"https://remocn.dev","avatar":"https://github.com/Remocn.png"},"source":{"url":"https://remocn.dev/r/infinite-bento-pan.json","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Infinite Bento Pan · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.infinite-bento-pan/","license":"MIT","note":"A camera diagonally drifts across an oversized bento grid behind a soft vignette."},{"role":"component","label":"On-Scroll 3D Grid Animations · codrops","kind":"link","url":"https://skills.varg.ai/component/codrops.scroll-3d-grid/","license":"MIT (per demo repo)","note":"Image grids tilted in perspective that rotate, spread and fly toward the camera between big titles"},{"role":"component","label":"Pan Stations · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.pan-stations/","license":"Apache-2.0","note":"A lateral camera move across a continuous row of labeled feature stations, with a steady dwell at each stop before the next pan."},{"role":"source","label":"SaaSFrame: understanding the bento layout trend","kind":"link","url":"https://www.saasframe.io/blog/the-bento-layout-trend","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"grid","hue":280,"text":"Camera Drifts Across a Bento"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["remocn.infinite-bento-pan","codrops.scroll-3d-grid","hf.pan-stations"],"aliases":["bento pan","infinite grid pan","3D grid fly"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/cf9bd20c1ab9/lib-codrops-scroll-3d-grid.mp4","blur":"https://s3.varg.ai/how-to/previews/a2d4df39f6c0/lib-codrops-scroll-3d-grid.webp","source":"https://s3.varg.ai/how-to/previews/cf9bd20c1ab9/lib-codrops-scroll-3d-grid.mp4","page":"https://tympanus.net/Development/Scroll3DGrid/","credit":"From the library’s repo (Codrops — Manoela Ilic)","rights":"publisher-site","note":"Preview of the On-Scroll 3D Grid Animations component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"aceternity/tilted-screenshot-wall","slug":"tilted-screenshot-wall","name":"Tilted Screenshot Wall","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"galleries","tags":["gallery","screenshots","3D","wall","hyperframes","remotion","capcut"],"summary":"A wall of screenshots seen at an isometric angle, columns scrolling up and down at different speeds.","description":"Built on [3D Marquee](https://ui.aceternity.com/components/3d-marquee) by aceternity, Aceternity License (free components). The write-up and recipes below are varg's.\n\nDozens of product screenshots in rotated columns; alternating scroll directions; a dark gradient fades the wall at the top and bottom.\n\n**When:** Show breadth — many templates, pages or outputs — behind a title or CTA.\n\n**Watch out:** Do not put readable claims on the tiles; the wall is texture, the headline is the message.\n\n**Timing:** Columns move 20–60 px/s, alternating directions; tilt ~55° X, −45° Z.\n\n**Also called:** 3D marquee, isometric wall, screenshot wall\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add perspective-marquee\n```\nApply `transform: rotateX(55deg) rotateZ(-45deg)` on the wall wrapper and tween each column's `y` with `ease:\"none\"`.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @aceternity/3d-marquee  (replace its motion with frame-driven translateY per column)\nconst y = (i%2? 1:-1) * frame * 1.2;\n```\n\n### In CapCut\n\nCollage screenshots into columns, apply Basic → 3D rotate, keyframe Position Y; or use a 3D marquee template.\n\n### Ready-made components\n\n- [3D Marquee](https://skills.varg.ai/component/aceternity.3d-marquee/) (aceternity): npx shadcn@latest add @aceternity/3d-marquee\n- [Perspective Marquee](https://skills.varg.ai/component/hf.perspective-marquee/) (hyperframes): npx hyperframes add perspective-marquee\n\n### Where this comes from\n\n- [Bohdan Motion: breakdown of the Replit Design launch video](https://x.com/bohdanmotion/status/2083248851750728188)","useWhen":["Show breadth — many templates, pages or outputs — behind a title or CTA."],"notFor":["Do not put readable claims on the tiles; the wall is texture, the headline is the message."],"publisher":{"name":"Aceternity UI","handle":"aceternity","kind":"community","verified":false,"url":"https://ui.aceternity.com","avatar":"https://github.com/aceternity.png"},"source":{"url":"https://ui.aceternity.com/components/3d-marquee","license":"Aceternity License (free components)"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"3D Marquee · aceternity","kind":"link","url":"https://skills.varg.ai/component/aceternity.3d-marquee/","license":"Aceternity License (free components)","note":"A tilted wall of screenshots seen at an isometric angle, its columns scrolling up and down"},{"role":"component","label":"Perspective Marquee · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.perspective-marquee/","license":"Apache-2.0","note":"A 3D tilted marquee with depth feel as items roll toward the horizon."},{"role":"source","label":"Bohdan Motion: breakdown of the Replit Design launch video","kind":"link","url":"https://x.com/bohdanmotion/status/2083248851750728188","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"grid","hue":280,"text":"Tilted Screenshot Wall"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["aceternity.3d-marquee","hf.perspective-marquee"],"aliases":["3D marquee","isometric wall","screenshot wall"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/cc6052dd4318/lib-aceternity-3d-marquee.mp4","blur":"https://s3.varg.ai/how-to/previews/1a92fda3dac5/lib-aceternity-3d-marquee.webp","source":"https://s3.varg.ai/how-to/previews/cc6052dd4318/lib-aceternity-3d-marquee.mp4","page":"https://ui.aceternity.com/components/3d-marquee","credit":"Rendered by varg from the library’s own code (Aceternity UI)","rights":"publisher-site","note":"Preview of the 3D Marquee component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"codrops/stacked-cards-fan","slug":"stacked-cards-fan","name":"Stacked Cards Fan Out","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"galleries","tags":["cards","stack","gallery","examples","hyperframes","remotion","capcut"],"summary":"A pile of cards or photos shuffles, then fans or settles one forward into focus.","description":"Built on [Image Stack Intro Animation](https://github.com/codrops/ImageStackGrid) by codrops, MIT (per demo repo). The write-up and recipes below are varg's.\n\nSlightly rotated stacked cards with shadows; the top card lifts, others fan behind it, then one lands framed.\n\n**When:** Show several examples or customers, then pick one to explore.\n\n**Watch out:** Do not rotate cards more than ±8°; heavy rotation looks messy, not playful.\n\n**Timing:** Shuffle 0.6–1 s, fan 0.5 s with 50 ms stagger, settle 0.4 s back.out(1.3).\n\n**Also called:** card stack, image stack, shuffle\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add keyframe-scrub-stack\n```\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/reel\ncards.map((c,i)=>{const p=spring({frame:frame-i*2,fps,config:{damping:16}}); return <Img src={c} style={{transform:`rotate(${(i-2)*4*p}deg) translateY(${-i*6}px)`}}/>})\n```\n\n### In CapCut\n\nStack image overlays with small rotations; keyframe Position/Rotation outward with offsets.\n\n### Ready-made components\n\n- [Image Stack Intro Animation](https://skills.varg.ai/component/codrops.image-stack-intro/) (codrops): git clone https://github.com/codrops/ImageStackGrid\n- [Keyframe Scrub Stack](https://skills.varg.ai/component/hf.keyframe-scrub-stack/) (hyperframes): npx hyperframes add keyframe-scrub-stack\n- [Reel](https://skills.varg.ai/component/remocn.reel/) (remocn): npx shadcn@latest add @remocn/reel\n\n### Where this comes from\n\n- [Jitter template: The Edit, product launch](https://jitter.video/template/the-edit-product-launch/)","useWhen":["Show several examples or customers, then pick one to explore."],"notFor":["Do not rotate cards more than ±8°; heavy rotation looks messy, not playful."],"publisher":{"name":"Codrops","handle":"codrops","kind":"community","verified":false,"url":"https://github.com/codrops","avatar":"https://github.com/codrops.png"},"source":{"url":"https://github.com/codrops/ImageStackGrid","repo":"codrops/ImageStackGrid","license":"MIT (per demo repo)"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Image Stack Intro Animation · codrops","kind":"link","url":"https://skills.varg.ai/component/codrops.image-stack-intro/","license":"MIT (per demo repo)","note":"A pile of photos shuffles behind a big serif title, then one settles into a framed portrait with its name"},{"role":"component","label":"Keyframe Scrub Stack · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.keyframe-scrub-stack/","license":"Apache-2.0","note":"A keyframe-sequenced stack of cards with offset timing and easing presets."},{"role":"component","label":"Reel · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.reel/","license":"MIT","note":"A fixed centered card where images stack on the z-axis and each blooms open over the last via a centre-out mask."},{"role":"source","label":"Jitter template: The Edit, product launch","kind":"link","url":"https://jitter.video/template/the-edit-product-launch/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"grid","hue":280,"text":"Stacked Cards Fan Out"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["codrops.image-stack-intro","hf.keyframe-scrub-stack","remocn.reel"],"aliases":["card stack","image stack","shuffle"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/8076b8d8b942/lib-codrops-image-stack-intro.mp4","blur":"https://s3.varg.ai/how-to/previews/25197781b9ab/lib-codrops-image-stack-intro.webp","source":"https://s3.varg.ai/how-to/previews/8076b8d8b942/lib-codrops-image-stack-intro.mp4","page":"https://tympanus.net/Development/ImageStackGrid/","credit":"From the library’s repo (Codrops — Manoela Ilic)","rights":"publisher-site","note":"Preview of the Image Stack Intro Animation component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/app-screens-on-rail","slug":"app-screens-on-rail","name":"App Screens on a Rail","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"galleries","tags":["carousel","app screens","mobile","flow","hyperframes","remotion","capcut"],"summary":"Two to five app screens ride a horizontal rail: one centered and sharp, neighbors smaller and receded.","description":"Built on [Screen Flow Carousel](https://github.com/heygen-com/hyperframes/tree/main/registry/components/screen-flow-carousel) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nPhone-sized screens in a row; the rail slides with momentum and snaps the next screen to center with a small overshoot.\n\n**When:** Walk through an app flow (onboarding → home → detail) without device frames.\n\n**Watch out:** Do not let side screens compete; scale them to ~80% and dim them 30–40%.\n\n**Timing:** Slide 0.5–0.7 s with snap overshoot (back.out 1.2); 1.5–2.5 s per screen.\n\n**Also called:** screen carousel, app screens, screen flow\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add screen-flow-carousel\n```\nOr `velocity-throw-snap` for a fast whip to the chosen screen.\n\n### In Remotion\n\n```tsx\nconst idx = interpolate(frame,[0,60,120],[0,1,2],{extrapolateRight:'clamp'});\nscreens.map((s,i)=>{const d=i-idx; return <Img src={s} style={{transform:`translateX(${d*420}px) scale(${1-Math.min(Math.abs(d),1)*0.2})`, opacity:1-Math.min(Math.abs(d),1)*0.35}}/>})\n```\n\n### In CapCut\n\nPlace screens in a row as one long image; keyframe Position X with snaps; add a blur mask on the sides.\n\n### Ready-made components\n\n- [Screen Flow Carousel](https://skills.varg.ai/component/hf.screen-flow-carousel/) (hyperframes): npx hyperframes add screen-flow-carousel\n- [Cuboid Carousel](https://skills.varg.ai/component/hf.cuboid-carousel/) (hyperframes): npx hyperframes add cuboid-carousel\n- [Velocity Throw Snap](https://skills.varg.ai/component/hf.velocity-throw-snap/) (hyperframes): npx hyperframes add velocity-throw-snap\n\n### Where this comes from\n\n- [Rotato: 14 video mockup ideas and examples](https://rotato.app/blog/mockup-video-examples)","useWhen":["Walk through an app flow (onboarding → home → detail) without device frames."],"notFor":["Do not let side screens compete; scale them to ~80% and dim them 30–40%."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/screen-flow-carousel","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Screen Flow Carousel · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.screen-flow-carousel/","license":"Apache-2.0","note":"Two to five app screens ride a horizontal rail: one primary at center, neighbors receded, advancing on cues with a velocity-matched throw and a smooth long-tail catch while a mono caption swaps with each advance…"},{"role":"component","label":"Cuboid Carousel · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.cuboid-carousel/","license":"Apache-2.0","note":"A chain of bevelled cuboids rides a travelling wave as a content carousel."},{"role":"component","label":"Velocity Throw Snap · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.velocity-throw-snap/","license":"Apache-2.0","note":"A five-shot rail whips past on a fast decaying curve, then overshoots and snaps the selected hero shot exactly to center."},{"role":"source","label":"Rotato: 14 video mockup ideas and examples","kind":"link","url":"https://rotato.app/blog/mockup-video-examples","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"grid","hue":280,"text":"App Screens on a Rail"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["hf.screen-flow-carousel","hf.cuboid-carousel","hf.velocity-throw-snap"],"aliases":["screen carousel","app screens","screen flow"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d5bef41402a8/take-app-screens-on-rail.mp4","w":640,"h":360,"duration":5,"blur":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAIAAAC6mkspAAAACXBIWXMAAAAcAAAAGwBAQC9IAAAABGNJQ1ABAQABlXPCVgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABGdBTUEAALGPC/xhBQAAApxJREFUeJwtU1lvEzEQtj2+9ihpFgKVaFV44P//FyR4R/CAlCbdbvb0yeeEzWo18czY8x3mdw8fSQjGs1SyrRut9bo6xB8OB87FMLw652pbWWt///nlQ+Cc5/LwnDK7RZxSSlKSKumYsw/JCudSzLyt2tNLjwMIJzh2vgw599uCInZ9uBBckQo8kBSMkchZajIsciYT8tO8NHU9j5PfXHSeBHHBsY4ZY0xKEv6kiF+SijPCQNiBUJATk94HIpl4yjlJQiiT9y4ET/zwvgsqpxi7vDsejxU3ZRpVAK1xRRhiZHhZWZHATCRYZCkxHIW25DaAEsqQBHOCJMlAhRriSqpbP08gkJMofAEp4Mh33b0xxs0zSA05Il8bg3185n4Yg5Io9ZGLxHwKQIV+VILnK+us1DfNuqzSLwteoYg0UNE2zxDE1jYvfh5mEjrEEBJILYxd6ciY21bKGLV6DyowBxahGofkWmkf/LoCFJHRXdf1b9MyLyiz3OYc5mXRgCkKtRCq1ryurIsJrWCjwK+NhklAlJFwj8bkItmmrYZhRnxzTWAi/DdN4aboO81KoZiu6K5kr+savM9COu+QAH4jwjxPy5q3bVtFujkHw2+bRwB+8YVhzuPomXBXpsqY0b+5LZKtxmliTKNZawYfCzLzdhGFOYlGJspGQAC+QYow6jodVIZveHE2tFrA98WVwZkHlmWJ2xZSGhEn7gODUiIVdwRWfAF/To9P3+7v999//oA9iUsIIl/7C+wTw1ZujSqOhHeMVJWGLroIZK1b3PH4UlVNs9t1h+50PvnM/h5fPj0+ITte3sbxIuvd/kZhXdcJV0KIvu9hvM9fn6HU6XjKARdAmLbdd/v2rsXh0zgN5yHG2O6a5+cvu4eH/tX+A7JT0bqLcXR9AAAAAElFTkSuQmCC","source":"Rendered by varg from the HyperFrames registry item screen-flow-carousel (Apache-2.0) with its built-in demo content, over a Blender open-movie clip (CC BY)","page":"https://hyperframes.heygen.com/catalog/components/screen-flow-carousel","credit":"Rendered by varg · HyperFrames Screen Flow Carousel","rights":"generated","note":"The Screen Flow Carousel component rendered as installed (npx hyperframes add screen-flow-carousel), defaults only","bytes":137006,"addedAt":"2026-10-28"}},{"id":"danielpetho/cards-orbit-ring","slug":"cards-orbit-ring","name":"Cards Orbit in a Ring","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"galleries","tags":["carousel","ring","gallery","3D","hyperframes","remotion","capcut"],"summary":"Image cards ride a circle, larger in front and smaller behind, sweeping fast-slow-fast.","description":"Built on [Circling Elements](https://github.com/danielpetho/fancy/blob/main/src/fancy/components/blocks/circling-elements.tsx) by fancy, MIT. The write-up and recipes below are varg's.\n\nCards upright on an elliptical path with depth scaling and fade; the front card pauses briefly at center.\n\n**When:** Showcase outputs, templates or styles in a playful but tidy way.\n\n**Watch out:** Do not use more than ~10 cards; the back of the ring becomes noise.\n\n**Timing:** One sweep 2–4 s with a slow-in at the front; depth scale 0.6–1.0.\n\n**Also called:** circle carousel, ring gallery, orbit carousel\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add carousel-circle-1\n```\n\n### In Remotion\n\n```tsx\nconst a = interpolate(frame,[0,90],[0,Math.PI*2]);\ncards.map((c,i)=>{const t=a+i*2*Math.PI/cards.length; const z=(Math.cos(t)+1)/2; return <Img src={c} style={{transform:`translateX(${Math.sin(t)*500}px) scale(${0.6+z*0.4})`, zIndex:Math.round(z*100), opacity:0.4+z*0.6}}/>})\n```\n\n### In CapCut\n\nHard natively; render in Remotion/HyperFrames, or use a \"3D carousel\" template from Templates.\n\n### Ready-made components\n\n- [Circling Elements](https://skills.varg.ai/component/fancy.circling-elements/) (fancy): npx shadcn add @fancy/circling-elements\n- [Circle Carousel 1](https://skills.varg.ai/component/hf.carousel-circle-1/) (hyperframes): npx hyperframes add carousel-circle-1\n- [Box Carousel](https://skills.varg.ai/component/fancy.box-carousel/) (fancy): npx shadcn add @fancy/box-carousel\n\n### Where this comes from\n\n- [Rotato: 14 video mockup ideas and examples](https://rotato.app/blog/mockup-video-examples)","useWhen":["Showcase outputs, templates or styles in a playful but tidy way."],"notFor":["Do not use more than ~10 cards; the back of the ring becomes noise."],"publisher":{"name":"Daniel Petho","handle":"danielpetho","kind":"community","verified":false,"url":"https://github.com/danielpetho","avatar":"https://github.com/danielpetho.png"},"source":{"url":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/blocks/circling-elements.tsx","repo":"danielpetho/fancy","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Circling Elements · fancy","kind":"link","url":"https://skills.varg.ai/component/fancy.circling-elements/","license":"MIT","note":"A ring of photos orbiting a centre point, every image staying upright as the circle turns"},{"role":"component","label":"Circle Carousel 1 · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.carousel-circle-1/","license":"Apache-2.0","note":"Image cards ride a circle with a size gradient by depth angle, sweeping in fast-slow-fast swings (Circle style 1); 12 image slots."},{"role":"component","label":"Box Carousel · fancy","kind":"link","url":"https://skills.varg.ai/component/fancy.box-carousel/","license":"MIT","note":"Photos on the faces of a 3D box that turns to bring the next image forward"},{"role":"source","label":"Rotato: 14 video mockup ideas and examples","kind":"link","url":"https://rotato.app/blog/mockup-video-examples","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"grid","hue":280,"text":"Cards Orbit in a Ring"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["fancy.circling-elements","hf.carousel-circle-1","fancy.box-carousel"],"aliases":["circle carousel","ring gallery","orbit carousel"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/5101dbbde2da/lib-fancy-circling-elements.mp4","blur":"https://s3.varg.ai/how-to/previews/7c22217a7b70/lib-fancy-circling-elements.webp","source":"https://s3.varg.ai/how-to/previews/5101dbbde2da/lib-fancy-circling-elements.mp4","page":"https://www.fancycomponents.dev/docs/components/blocks/circling-elements","credit":"Captured from the library’s own demo page (Fancy Components)","rights":"publisher-site","note":"Preview of the Circling Elements component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"codrops/rapid-screenshot-burst","slug":"rapid-screenshot-burst","name":"Rapid Screenshot Burst","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"galleries","tags":["montage","beat","hype","images","ffmpeg","hyperframes","remotion","capcut"],"summary":"Full-screen images slam in one on top of another on the beat, landing on the final hero shot.","description":"Built on [Rapid Image Layers Animation](https://github.com/codrops/RapidLayersAnimation) by codrops, MIT (per demo repo). The write-up and recipes below are varg's.\n\n6–12 images, each held 2–4 frames, slight scale punch per layer, then the last one holds and settles.\n\n**When:** Hype moments: \"everything you can make\" or the drop in the music.\n\n**Watch out:** Do not hold each image so short that colors strobe; 2 frames minimum at 30 fps, avoid high-contrast flashing.\n\n**Timing:** 2–4 frames per image (beat-synced), final settle 0.4 s.\n\n**Also called:** rapid layers, flash montage, image slam\n\n### In FFmpeg\n\n```bash\n# 0.1 s per image from a list, then concat\nffmpeg -f concat -safe 0 -i list.txt -vf \"fps=30,scale=1920:1080:force_original_aspect_ratio=increase,crop=1920:1080\" burst.mp4\n# list.txt: file 'a.jpg'\\nduration 0.1 ...\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add velocity-throw-snap\n```\nOr stack `<img class=\"clip\">` elements with `data-start` on each beat and `data-duration` of 2–4 frames.\n\n### In Remotion\n\n```tsx\n<Series>{imgs.map((src,i)=><Series.Sequence key={i} durationInFrames={i===imgs.length-1?30:3}><Img src={src} style={{transform:`scale(${1.06 - (frame%3)*0.02})`}}/></Series.Sequence>)}</Series>\n```\n\n### In CapCut\n\nDrop images on the track, select all → set duration 0.1 s; use Beats (auto beat markers) to align; add a zoom-in animation.\n\n### Ready-made components\n\n- [Rapid Image Layers Animation](https://skills.varg.ai/component/codrops.rapid-layers-animation/) (codrops): git clone https://github.com/codrops/RapidLayersAnimation\n- [Velocity Throw Snap](https://skills.varg.ai/component/hf.velocity-throw-snap/) (hyperframes): npx hyperframes add velocity-throw-snap\n\n### Where this comes from\n\n- [Jamie on X: SFX breakdown of a launch video](https://x.com/jamiesmotion/status/2110099791958982703)\n- [Jitter template: The Edit, product launch](https://jitter.video/template/the-edit-product-launch/)","useWhen":["Hype moments: \"everything you can make\" or the drop in the music."],"notFor":["Do not hold each image so short that colors strobe; 2 frames minimum at 30 fps, avoid high-contrast flashing."],"publisher":{"name":"Codrops","handle":"codrops","kind":"community","verified":false,"url":"https://github.com/codrops","avatar":"https://github.com/codrops.png"},"source":{"url":"https://github.com/codrops/RapidLayersAnimation","repo":"codrops/RapidLayersAnimation","license":"MIT (per demo repo)"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Rapid Image Layers Animation · codrops","kind":"link","url":"https://skills.varg.ai/component/codrops.rapid-layers-animation/","license":"MIT (per demo repo)","note":"A burst of full-screen photos slamming in one on top of another before landing on the final image"},{"role":"component","label":"Velocity Throw Snap · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.velocity-throw-snap/","license":"Apache-2.0","note":"A five-shot rail whips past on a fast decaying curve, then overshoots and snaps the selected hero shot exactly to center."},{"role":"source","label":"Jamie on X: SFX breakdown of a launch video","kind":"link","url":"https://x.com/jamiesmotion/status/2110099791958982703","license":"link-only"},{"role":"source","label":"Jitter template: The Edit, product launch","kind":"link","url":"https://jitter.video/template/the-edit-product-launch/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"grid","hue":280,"text":"Rapid Screenshot Burst"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["codrops.rapid-layers-animation","hf.velocity-throw-snap"],"aliases":["rapid layers","flash montage","image slam"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/1b9880c6836c/lib-codrops-rapid-layers-animation.mp4","blur":"https://s3.varg.ai/how-to/previews/f096f1ef9277/lib-codrops-rapid-layers-animation.webp","source":"https://s3.varg.ai/how-to/previews/1b9880c6836c/lib-codrops-rapid-layers-animation.mp4","page":"https://tympanus.net/Development/RapidLayersAnimation/","credit":"From the library’s repo (Codrops — Manoela Ilic)","rights":"publisher-site","note":"Preview of the Rapid Image Layers Animation component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"danielpetho/opposing-marquee-rows","slug":"opposing-marquee-rows","name":"Opposing Marquee Rows","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"galleries","tags":["marquee","rows","gallery","background","hyperframes","remotion","capcut"],"summary":"Rows of tiles scroll sideways at different speeds and directions under a title.","description":"Built on [Simple Marquee](https://github.com/danielpetho/fancy/blob/main/src/fancy/components/blocks/simple-marquee.tsx) by fancy, MIT. The write-up and recipes below are varg's.\n\nThree rows of rounded tiles (templates, outputs) moving left, right, left at 1×, 0.7×, 1.2×; edges fade.\n\n**When:** Background for a title or end card that needs life without stealing focus.\n\n**Watch out:** Do not run rows at the same speed; offset speeds create depth.\n\n**Timing:** Row loops 20–40 s; in a 4 s shot rows move 10–20% of their width.\n\n**Also called:** marquee wall, scrolling rows, tile rows\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add perspective-marquee\n```\nOr three flat rows with `tl.to(row,{xPercent: dir*-50, duration: 30/speed, ease:\"none\"},0)`.\n\n### In Remotion\n\n```tsx\nconst x = (r:number) => (r%2? 1:-1) * ((frame * speeds[r]) % rowW);\n```\n\n### In CapCut\n\nThree long tile strips as overlays; keyframe Position X in alternating directions; mask the edges with gradient.\n\n### Ready-made components\n\n- [Simple Marquee](https://skills.varg.ai/component/fancy.simple-marquee/) (fancy): npx shadcn add @fancy/simple-marquee\n- [Marquee](https://skills.varg.ai/component/magicui.marquee/) (magic-ui): npx shadcn@latest add @magicui/marquee\n- [Perspective Marquee](https://skills.varg.ai/component/hf.perspective-marquee/) (hyperframes): npx hyperframes add perspective-marquee\n\n### Where this comes from\n\n- [Magic UI: Marquee](https://magicui.design/docs/components/marquee)","useWhen":["Background for a title or end card that needs life without stealing focus."],"notFor":["Do not run rows at the same speed; offset speeds create depth."],"publisher":{"name":"Daniel Petho","handle":"danielpetho","kind":"community","verified":false,"url":"https://github.com/danielpetho","avatar":"https://github.com/danielpetho.png"},"source":{"url":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/blocks/simple-marquee.tsx","repo":"danielpetho/fancy","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Simple Marquee · fancy","kind":"link","url":"https://skills.varg.ai/component/fancy.simple-marquee/","license":"MIT","note":"Rows of gradient tiles scrolling sideways at different speeds under a serif title"},{"role":"component","label":"Marquee · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.marquee/","license":"MIT","note":"Two rows of testimonial cards drifting sideways in opposite directions, fading out at the left and right edges"},{"role":"component","label":"Perspective Marquee · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.perspective-marquee/","license":"Apache-2.0","note":"A 3D tilted marquee with depth feel as items roll toward the horizon."},{"role":"source","label":"Magic UI: Marquee","kind":"link","url":"https://magicui.design/docs/components/marquee","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"grid","hue":280,"text":"Opposing Marquee Rows"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["fancy.simple-marquee","magicui.marquee","hf.perspective-marquee"],"aliases":["marquee wall","scrolling rows","tile rows"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/85e25819e363/lib-fancy-simple-marquee.mp4","blur":"https://s3.varg.ai/how-to/previews/1be66434f46d/lib-fancy-simple-marquee.webp","source":"https://s3.varg.ai/how-to/previews/85e25819e363/lib-fancy-simple-marquee.mp4","page":"https://www.fancycomponents.dev/docs/components/blocks/simple-marquee","credit":"Captured from the library’s own demo page (Fancy Components)","rights":"publisher-site","note":"Preview of the Simple Marquee component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"danielpetho/filmstrip-on-curve","slug":"filmstrip-on-curve","name":"Filmstrip on a Curve","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"galleries","tags":["gallery","path","ribbon","playful","hyperframes","remotion","capcut"],"summary":"A ribbon of thumbnails snakes along a curved path across the frame.","description":"Built on [Marquee Along SVG Path](https://github.com/danielpetho/fancy/blob/main/src/fancy/components/blocks/marquee-along-svg-path.tsx) by fancy, MIT. The write-up and recipes below are varg's.\n\nTiles follow an S or arc path, rotating to its tangent, with depth scaling where the curve comes forward.\n\n**When:** Playful brand moments, creative tools, galleries of styles.\n\n**Watch out:** Do not make the path cross the headline; route it behind or around text.\n\n**Timing:** Travel 30–60 px/s along the path; 4–8 s visible.\n\n**Also called:** marquee along path, curved carousel, ribbon of tiles\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add carousel-path-1\n```\nOr GSAP MotionPath on each tile with staggered `start` offsets (seek-safe on the paused timeline).\n\n### In Remotion\n\n```tsx\nconst pt = path.getPointAtLength(((frame*3 + i*gap) % len));\n<Img src={tile} style={{transform:`translate(${pt.x}px,${pt.y}px)`}}/>\n```\n\n### In CapCut\n\nNot native; render the ribbon in code and import, or use a curved \"film strip\" sticker.\n\n### Ready-made components\n\n- [Marquee Along SVG Path](https://skills.varg.ai/component/fancy.marquee-along-svg-path/) (fancy): npx shadcn add @fancy/marquee-along-svg-path\n- [Path Carousel 1](https://skills.varg.ai/component/hf.carousel-path-1/) (hyperframes): npx hyperframes add carousel-path-1\n\n### Where this comes from\n\n- [Codrops: 7 must-know GSAP animation tips](https://tympanus.net/codrops/2025/09/03/7-must-know-gsap-animation-tips-for-creative-developers/)","useWhen":["Playful brand moments, creative tools, galleries of styles."],"notFor":["Do not make the path cross the headline; route it behind or around text."],"publisher":{"name":"Daniel Petho","handle":"danielpetho","kind":"community","verified":false,"url":"https://github.com/danielpetho","avatar":"https://github.com/danielpetho.png"},"source":{"url":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/blocks/marquee-along-svg-path.tsx","repo":"danielpetho/fancy","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Marquee Along SVG Path · fancy","kind":"link","url":"https://skills.varg.ai/component/fancy.marquee-along-svg-path/","license":"MIT","note":"A ribbon of colourful tiles snaking along a looping curve across the frame"},{"role":"component","label":"Path Carousel 1 · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.carousel-path-1/","license":"Apache-2.0","note":"Image cards ride an open bezier path (arc, V, diagonal, wave, S-curve) with depth scaling and tangent rotation (Path style 1); 24 image slots."},{"role":"source","label":"Codrops: 7 must-know GSAP animation tips","kind":"link","url":"https://tympanus.net/codrops/2025/09/03/7-must-know-gsap-animation-tips-for-creative-developers/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"grid","hue":280,"text":"Filmstrip on a Curve"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["fancy.marquee-along-svg-path","hf.carousel-path-1"],"aliases":["marquee along path","curved carousel","ribbon of tiles"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a0bcad40e8fa/lib-fancy-marquee-along-svg-path.mp4","blur":"https://s3.varg.ai/how-to/previews/156debcbd1ac/lib-fancy-marquee-along-svg-path.webp","source":"https://s3.varg.ai/how-to/previews/a0bcad40e8fa/lib-fancy-marquee-along-svg-path.mp4","page":"https://www.fancycomponents.dev/docs/components/blocks/marquee-along-svg-path","credit":"Captured from the library’s own demo page (Fancy Components)","rights":"publisher-site","note":"Preview of the Marquee Along SVG Path component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/slow-mesh-gradient","slug":"slow-mesh-gradient","name":"Slow Mesh Gradient","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"backdrops","tags":["backdrop","gradient","mesh","brand","ffmpeg","hyperframes","remotion","capcut"],"summary":"Soft brand-colored fields blend and drift slowly behind titles and UI.","description":"Built on [Mesh Gradient Background](https://github.com/heygen-com/hyperframes/tree/main/registry/components/mesh-gradient-bg) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nThree or four large blurred color fields from the brand palette, moving a few percent per second, never sharp.\n\n**When:** Default backdrop for product shots, titles and end cards when there is no footage.\n\n**Watch out:** Do not animate it fast or saturate it fully; it must sit behind UI without fighting it.\n\n**Timing:** Drift loop 10–20 s; movement ≤ 3% of frame per second.\n\n**Also called:** mesh gradient, Stripe gradient, color blobs\n\n### In FFmpeg\n\n```bash\nffmpeg -f lavfi -i \"gradients=s=1920x1080:c0=0x7C3AED:c1=0xF97316:c2=0x0B0B12:n=3:speed=0.005:d=10\" -c:v libx264 bg.mp4\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add mesh-gradient-bg\n```\nOr `mesh-gradient` (WebGPU shader); set colors from the brand tokens.\n\n### In Remotion\n\n```tsx\nconst t = frame / fps;\nbackground:`radial-gradient(40% 50% at ${30+Math.sin(t/3)*8}% ${40+Math.cos(t/4)*6}%, #7C3AED 0%, transparent 70%), radial-gradient(45% 55% at ${70+Math.cos(t/5)*8}% 60%, #F97316 0%, transparent 70%), #0B0B12`\n```\n\n### In CapCut\n\nBackground → Canvas → Gradient, or search Media → Library \"gradient background\" and lower its saturation.\n\n### Ready-made components\n\n- [Mesh Gradient Background](https://skills.varg.ai/component/hf.mesh-gradient-bg/) (hyperframes): npx hyperframes add mesh-gradient-bg\n- [Mesh Gradient](https://skills.varg.ai/component/hf.mesh-gradient/) (hyperframes): npx hyperframes add mesh-gradient\n- [Halo](https://skills.varg.ai/component/shadergradient.halo/) (shadergradient): npm i @shadergradient/react @react-three/fiber three three-stdlib camera-controls\n\n### Where this comes from\n\n- [DEV: how to make animated gradients like Stripe](https://dev.to/jordienr/how-to-make-animated-gradients-like-stripe-56nh)\n- [UX Design Bootcamp: the rise of Linear style design](https://bootcamp.uxdesign.cc/the-rise-of-linear-style-design-origins-trends-and-techniques-4fd96aab7646)","useWhen":["Default backdrop for product shots, titles and end cards when there is no footage."],"notFor":["Do not animate it fast or saturate it fully; it must sit behind UI without fighting it."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/mesh-gradient-bg","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Mesh Gradient Background · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.mesh-gradient-bg/","license":"Apache-2.0","note":"A render-safe mesh gradient using animated radial layers."},{"role":"component","label":"Mesh Gradient · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.mesh-gradient/","license":"Apache-2.0","note":"Soft coral, orange and violet fields blend and drift in a mesh gradient. A WebGPU shader from the Shaders library (shaders.com, MIT)."},{"role":"component","label":"Halo · shadergradient","kind":"link","url":"https://skills.varg.ai/component/shadergradient.halo/","license":"MIT","note":"A grainy diagonal band of lavender and ice blue sweeping through hot orange-red"},{"role":"source","label":"DEV: how to make animated gradients like Stripe","kind":"link","url":"https://dev.to/jordienr/how-to-make-animated-gradients-like-stripe-56nh","license":"link-only"},{"role":"source","label":"UX Design Bootcamp: the rise of Linear style design","kind":"link","url":"https://bootcamp.uxdesign.cc/the-rise-of-linear-style-design-origins-trends-and-techniques-4fd96aab7646","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"shader","hue":260,"text":"Slow Mesh Gradient"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.mesh-gradient-bg","hf.mesh-gradient","shadergradient.halo"],"aliases":["mesh gradient","Stripe gradient","color blobs"]},"media":{"type":"video","file":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/mesh-gradient.mp4","w":1920,"h":1080,"source":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/mesh-gradient.mp4","page":"https://hyperframes.heygen.com/catalog/blocks/mesh-gradient","credit":"Mesh Gradient · hyperframes","rights":"publisher-site","note":"Preview of the Mesh Gradient component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"aceternity/aurora-behind-title","slug":"aurora-behind-title","name":"Aurora Behind the Title","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"backdrops","tags":["backdrop","aurora","dark","title","hyperframes","remotion","capcut"],"summary":"Blurred light streaks drift sideways across a dark frame behind a centered title.","description":"Built on [Aurora Background](https://ui.aceternity.com/components/aurora-background) by aceternity, Aceternity License (free components). The write-up and recipes below are varg's.\n\nDark base with blue/violet/amber light bands moving slowly; the title sits in the calmest area.\n\n**When:** Open titles and end cards for AI and dev tools — the Linear-era dark aesthetic.\n\n**Watch out:** Do not use it on every scene; it is a title device, not a UI background.\n\n**Timing:** Cycle shortened to 8–12 s so motion reads in a 4–6 s shot.\n\n**Also called:** aurora background, northern lights, light streaks\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add aurora-drift\n```\nLoop-exact ambient drift; or `aurora` (WebGPU shader) for curtains.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @aceternity/aurora-background\n// make the CSS keyframe seek-safe: animationPlayState:'paused', animationDelay:`-${frame/fps}s`\n```\n\n### In CapCut\n\nMedia → Library: search \"aurora\"/\"light streaks\" stock; reduce brightness 20% so titles pop.\n\n### Ready-made components\n\n- [Aurora Background](https://skills.varg.ai/component/aceternity.aurora-background/) (aceternity): npx shadcn@latest add @aceternity/aurora-background\n- [Aurora Drift](https://skills.varg.ai/component/hf.aurora-drift/) (hyperframes): npx hyperframes add aurora-drift\n- [Aurora](https://skills.varg.ai/component/reactbits.aurora/) (react-bits): npx shadcn@latest add @react-bits/Aurora-JS-CSS\n\n### Where this comes from\n\n- [UX Design Bootcamp: the rise of Linear style design](https://bootcamp.uxdesign.cc/the-rise-of-linear-style-design-origins-trends-and-techniques-4fd96aab7646)\n- [Anthony Hobday: a critique of the Linear website](https://anthonyhobday.com/blog/20230119.html)","useWhen":["Open titles and end cards for AI and dev tools — the Linear-era dark aesthetic."],"notFor":["Do not use it on every scene; it is a title device, not a UI background."],"publisher":{"name":"Aceternity UI","handle":"aceternity","kind":"community","verified":false,"url":"https://ui.aceternity.com","avatar":"https://github.com/aceternity.png"},"source":{"url":"https://ui.aceternity.com/components/aurora-background","license":"Aceternity License (free components)"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Aurora Background · aceternity","kind":"link","url":"https://skills.varg.ai/component/aceternity.aurora-background/","license":"Aceternity License (free components)","note":"Blurred blue, grey and amber light streaks drift sideways across a dark frame like a slow aurora"},{"role":"component","label":"Aurora Drift · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.aurora-drift/","license":"Apache-2.0","note":"Three soft accent-derived aurora fields drift in an exact ambient loop over a deep base and faint vignette."},{"role":"component","label":"Aurora · react-bits","kind":"link","url":"https://skills.varg.ai/component/reactbits.aurora/","license":"MIT + Commons Clause","note":"Northern-lights curtains in violet and green hanging from the top edge, swaying slowly over black"},{"role":"source","label":"UX Design Bootcamp: the rise of Linear style design","kind":"link","url":"https://bootcamp.uxdesign.cc/the-rise-of-linear-style-design-origins-trends-and-techniques-4fd96aab7646","license":"link-only"},{"role":"source","label":"Anthony Hobday: a critique of the Linear website","kind":"link","url":"https://anthonyhobday.com/blog/20230119.html","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"shader","hue":260,"text":"Aurora Behind the Title"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["aceternity.aurora-background","hf.aurora-drift","reactbits.aurora"],"aliases":["aurora background","northern lights","light streaks"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ba650f55f055/lib-aceternity-aurora-background.mp4","blur":"https://s3.varg.ai/how-to/previews/e7bd4e3efb69/lib-aceternity-aurora-background.webp","source":"https://s3.varg.ai/how-to/previews/ba650f55f055/lib-aceternity-aurora-background.mp4","page":"https://ui.aceternity.com/components/aurora-background","credit":"Rendered by varg from the library’s own code (Aceternity UI)","rights":"publisher-site","note":"Preview of the Aurora Background component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"magicuidesign/faint-grid-field","slug":"faint-grid-field","name":"Faint Grid or Dot Field","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"backdrops","tags":["backdrop","grid","developer","technical","ffmpeg","hyperframes","remotion","capcut"],"summary":"A very faint line grid or dot field gives structure behind UI and code, with a soft radial fade.","description":"Built on [Flickering Grid](https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/flickering-grid.tsx) by magic-ui, MIT. The write-up and recipes below are varg's.\n\n1 px lines at 4–8% opacity on a ~40 px module, or twinkling dots; fades out toward the edges or behind the hero.\n\n**When:** Developer and infra products; diagrams and code scenes that need a technical floor.\n\n**Watch out:** Do not leave the grid at uniform full opacity behind text; fade it where the content sits.\n\n**Timing:** Static or slow twinkle (2–4 s period); optional parallax 1–2% with camera moves.\n\n**Also called:** grid background, dot grid, blueprint grid\n\n### In FFmpeg\n\n```bash\nffmpeg -f lavfi -i \"color=c=0x0A0A0A:s=1920x1080:d=10,drawgrid=w=40:h=40:t=1:c=white@0.06\" grid.mp4\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add dynamic-grid\n```\nDriven by CSS variables; tween `--cell` or `--opacity` on the timeline if it should breathe.\n\n### In Remotion\n\n```tsx\n<AbsoluteFill style={{backgroundImage:'linear-gradient(#ffffff0f 1px,transparent 1px),linear-gradient(90deg,#ffffff0f 1px,transparent 1px)', backgroundSize:'40px 40px', maskImage:'radial-gradient(ellipse at center,#000 30%,transparent 75%)'}}/>\n```\n\n### In CapCut\n\nSearch Media → Library \"grid background\"; set Opacity 20–30% over a dark solid.\n\n### Ready-made components\n\n- [Flickering Grid](https://skills.varg.ai/component/magicui.flickering-grid/) (magic-ui): npx shadcn@latest add @magicui/flickering-grid\n- [Graph Paper](https://skills.varg.ai/component/heropatterns.graph-paper/) (hero-patterns): curl -LO https://heropatterns.com/svg/graph-paper.zip\n- [Dynamic Grid](https://skills.varg.ai/component/hf.dynamic-grid/) (hyperframes): npx hyperframes add dynamic-grid\n\n### Where this comes from\n\n- [Setproduct: the Vercel aesthetic, blueprint grid design](https://www.setproduct.com/blog/complete-guide-to-blueprint-grid-design)\n- [Vercel: designing and building the Vercel Ship platform](https://vercel.com/blog/designing-and-building-the-vercel-ship-conference-platform)","useWhen":["Developer and infra products; diagrams and code scenes that need a technical floor."],"notFor":["Do not leave the grid at uniform full opacity behind text; fade it where the content sits."],"publisher":{"name":"Magic UI","handle":"magicuidesign","kind":"community","verified":false,"url":"https://magicui.design","avatar":"https://github.com/magicuidesign.png"},"source":{"url":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/flickering-grid.tsx","repo":"magicuidesign/magicui","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Flickering Grid · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.flickering-grid/","license":"MIT","note":"A grid of tiny grey squares twinkling at random brightness, like a dim LED wall"},{"role":"component","label":"Graph Paper · hero-patterns","kind":"link","url":"https://skills.varg.ai/component/heropatterns.graph-paper/","license":"CC BY 4.0","note":"A fine graph-paper grid with a darker line every tenth square"},{"role":"component","label":"Dynamic Grid · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.dynamic-grid/","license":"Apache-2.0","note":"A responsive animated grid background driven by CSS variables for SaaS, code, and data scenes"},{"role":"source","label":"Setproduct: the Vercel aesthetic, blueprint grid design","kind":"link","url":"https://www.setproduct.com/blog/complete-guide-to-blueprint-grid-design","license":"link-only"},{"role":"source","label":"Vercel: designing and building the Vercel Ship platform","kind":"link","url":"https://vercel.com/blog/designing-and-building-the-vercel-ship-conference-platform","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"shader","hue":260,"text":"Faint Grid or Dot Field"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["magicui.flickering-grid","heropatterns.graph-paper","hf.dynamic-grid"],"aliases":["grid background","dot grid","blueprint grid"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2be6dd5c7132/lib-magic-ui-flickering-grid.mp4","blur":"https://s3.varg.ai/how-to/previews/829542ee962f/lib-magic-ui-flickering-grid.webp","source":"https://s3.varg.ai/how-to/previews/2be6dd5c7132/lib-magic-ui-flickering-grid.mp4","page":"https://magicui.design/docs/components/flickering-grid","credit":"Captured from the library’s own demo page (Magic UI)","rights":"publisher-site","note":"Preview of the Flickering Grid component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"aceternity/spotlight-from-above","slug":"spotlight-from-above","name":"Spotlight From Above","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"backdrops","tags":["backdrop","spotlight","light","premium","hyperframes","remotion","capcut"],"summary":"Soft light cones fall from the top of a dark frame onto the product or title.","description":"Built on [Spotlight New](https://ui.aceternity.com/components/spotlight-new) by aceternity, Aceternity License (free components). The write-up and recipes below are varg's.\n\nOne or two wide, blurred white cones from the top corners, swaying a few degrees; the subject sits in the pool of light.\n\n**When:** Hero reveals, premium product moments, keynote-style titles.\n\n**Watch out:** Do not light the edges brighter than the subject; the pool of light goes where the eye should go.\n\n**Timing:** Sway loop 6–10 s; fade-in of the light 0.8–1.2 s before the subject appears.\n\n**Also called:** light cone, lamp effect, top light\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add godrays\n```\nOr layer two blurred conic gradients and tween their `rotation` ±4° with `sine.inOut`.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @aceternity/spotlight-new  (drive sway from frame)\nconst r = Math.sin(frame/fps*Math.PI*2/8)*4;\n```\n\n### In CapCut\n\nEffects → Lighting → \"Spotlight\"/\"Light beam\"; place above the subject; lower intensity.\n\n### Ready-made components\n\n- [Spotlight New](https://skills.varg.ai/component/aceternity.spotlight-new/) (aceternity): npx shadcn@latest add @aceternity/spotlight-new\n- [Lamp Effect](https://skills.varg.ai/component/aceternity.lamp-effect/) (aceternity): npx shadcn@latest add @aceternity/lamp\n- [Light Rays](https://skills.varg.ai/component/reactbits.light-rays/) (react-bits): npx shadcn@latest add @react-bits/LightRays-JS-CSS\n\n### Where this comes from\n\n- [UX Design Bootcamp: the rise of Linear style design](https://bootcamp.uxdesign.cc/the-rise-of-linear-style-design-origins-trends-and-techniques-4fd96aab7646)","useWhen":["Hero reveals, premium product moments, keynote-style titles."],"notFor":["Do not light the edges brighter than the subject; the pool of light goes where the eye should go."],"publisher":{"name":"Aceternity UI","handle":"aceternity","kind":"community","verified":false,"url":"https://ui.aceternity.com","avatar":"https://github.com/aceternity.png"},"source":{"url":"https://ui.aceternity.com/components/spotlight-new","license":"Aceternity License (free components)"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Spotlight New · aceternity","kind":"link","url":"https://skills.varg.ai/component/aceternity.spotlight-new/","license":"Aceternity License (free components)","note":"Soft white light cones fall from both top corners and sway slowly left and right over a dark frame"},{"role":"component","label":"Lamp Effect · aceternity","kind":"link","url":"https://skills.varg.ai/component/aceternity.lamp-effect/","license":"Aceternity License (free components)","note":"A cyan lamp bar stretches open at the top and casts a cone of light down onto the title"},{"role":"component","label":"Light Rays · react-bits","kind":"link","url":"https://skills.varg.ai/component/reactbits.light-rays/","license":"MIT + Commons Clause","note":"Soft god rays streaming down from the top centre, shifting gently through a light haze"},{"role":"source","label":"UX Design Bootcamp: the rise of Linear style design","kind":"link","url":"https://bootcamp.uxdesign.cc/the-rise-of-linear-style-design-origins-trends-and-techniques-4fd96aab7646","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"shader","hue":260,"text":"Spotlight From Above"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["aceternity.spotlight-new","aceternity.lamp-effect","reactbits.light-rays"],"aliases":["light cone","lamp effect","top light"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/48791363c6c6/lib-aceternity-spotlight-new.mp4","blur":"https://s3.varg.ai/how-to/previews/7828539450f0/lib-aceternity-spotlight-new.webp","source":"https://s3.varg.ai/how-to/previews/48791363c6c6/lib-aceternity-spotlight-new.mp4","page":"https://ui.aceternity.com/components/spotlight-new","credit":"Rendered by varg from the library’s own code (Aceternity UI)","rights":"publisher-site","note":"Preview of the Spotlight New component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"heygen-com/film-grain-over-gradient","slug":"film-grain-over-gradient","name":"Film Grain Over Gradient","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"backdrops","tags":["backdrop","grain","noise","texture","ffmpeg","hyperframes","remotion","capcut"],"summary":"A fine animated grain sits over the gradient so it feels printed, removes banding and looks less digital.","description":"Built on [Grain Overlay](https://github.com/heygen-com/hyperframes/tree/main/registry/components/grain-overlay) by HeyGen (HyperFrames), Apache-2.0. The write-up and recipes below are varg's.\n\nSubtle monochrome noise at 4–8% opacity, crawling each frame; colors underneath stay unchanged.\n\n**When:** Any gradient-heavy film; especially warm, editorial or retro brands.\n\n**Watch out:** Do not push grain above ~10% on UI shots; it softens text and kills compression.\n\n**Timing:** Regenerate grain every frame (or every 2 frames for a filmic feel).\n\n**Also called:** grainy gradient, noise texture, grain overlay\n\n### In FFmpeg\n\n```bash\n-vf \"noise=alls=12:allf=t+u\"\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add grain-overlay\n```\n\n### In Remotion\n\n```tsx\n<svg width=\"100%\" height=\"100%\" style={{position:'absolute',opacity:0.06,mixBlendMode:'overlay'}}><filter id=\"n\"><feTurbulence baseFrequency=\"0.9\" seed={frame}/></filter><rect width=\"100%\" height=\"100%\" filter=\"url(#n)\"/></svg>\n```\n\n### In CapCut\n\nEffects → search \"grain\"/\"film\"; set intensity low (10–20).\n\n### Ready-made components\n\n- [Grain Overlay](https://skills.varg.ai/component/hf.grain-overlay/) (hyperframes): npx hyperframes add grain-overlay\n- [Noise](https://skills.varg.ai/component/reactbits.noise/) (react-bits): npx shadcn@latest add @react-bits/Noise-JS-CSS\n- [Nighty night](https://skills.varg.ai/component/shadergradient.nighty-night/) (shadergradient): npm i @shadergradient/react @react-three/fiber three three-stdlib camera-controls\n\n### Where this comes from\n\n- [Bram.us: grainy gradients](https://www.bram.us/2021/09/16/grainy-gradients)\n- [fffuel gggrain: SVG grainy gradient generator](https://fffuel.co/gggrain/)","useWhen":["Any gradient-heavy film; especially warm, editorial or retro brands."],"notFor":["Do not push grain above ~10% on UI shots; it softens text and kills compression."],"publisher":{"name":"HeyGen","handle":"heygen-com","kind":"community","verified":false,"url":"https://hyperframes.heygen.com","avatar":"https://github.com/heygen-com.png"},"source":{"url":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/grain-overlay","repo":"heygen-com/hyperframes","license":"Apache-2.0"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Grain Overlay · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.grain-overlay/","license":"Apache-2.0","note":"Animated film grain texture overlay using CSS keyframes — adds warmth and analog character to any composition"},{"role":"component","label":"Noise · react-bits","kind":"link","url":"https://skills.varg.ai/component/reactbits.noise/","license":"MIT + Commons Clause","note":"Fine animated film grain crawling over a misty photo, giving it a shot-on-film texture"},{"role":"component","label":"Nighty night · shadergradient","kind":"link","url":"https://skills.varg.ai/component/shadergradient.nighty-night/","license":"MIT","note":"Indigo and lavender swells rising out of near-black under heavy film grain"},{"role":"source","label":"Bram.us: grainy gradients","kind":"link","url":"https://www.bram.us/2021/09/16/grainy-gradients","license":"link-only"},{"role":"source","label":"fffuel gggrain: SVG grainy gradient generator","kind":"link","url":"https://fffuel.co/gggrain/","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"shader","hue":260,"text":"Film Grain Over Gradient"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["hf.grain-overlay","reactbits.noise","shadergradient.nighty-night"],"aliases":["grainy gradient","noise texture","grain overlay"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/5c739b2aae29/lib-react-bits-noise.mp4","blur":"https://s3.varg.ai/how-to/previews/d675f97d54e8/lib-react-bits-noise.webp","source":"https://s3.varg.ai/how-to/previews/5c739b2aae29/lib-react-bits-noise.mp4","page":"https://reactbits.dev/animations/noise","credit":"Captured from the library’s own demo page (React Bits)","rights":"publisher-site","note":"Preview of the Noise component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"Remocn/blurred-product-behind","slug":"blurred-product-behind","name":"Blurred Product Behind Text","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"backdrops","tags":["backdrop","blur","UI","transition","ffmpeg","hyperframes","remotion","capcut"],"summary":"The product UI itself, heavily blurred and dimmed, becomes the backdrop for a title or quote.","description":"Built on [Backdrop](https://remocn.dev/r/backdrop.json) by Kapish Dima (remocn), MIT. The write-up and recipes below are varg's.\n\nA screenshot at 20–40 px blur and 50–60% brightness with a vignette; title sharp on top; the UI shape is still recognizable.\n\n**When:** Transitions between demo and title so the film stays inside the product's colors.\n\n**Watch out:** Do not blur so little that UI text is half-readable; it distracts more than either sharp or fully soft.\n\n**Timing:** Blur in 0.4–0.6 s from the sharp shot (rack focus), hold, unblur into the next demo.\n\n**Also called:** blur of UI, frosted product, UI as backdrop\n\n### In FFmpeg\n\n```bash\n-vf \"gblur=sigma=24,eq=brightness=-0.25,vignette=PI/5\"\n```\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add vignette\n```\n`tl.to(\"#ui\",{filter:\"blur(28px) brightness(0.55)\",duration:0.5,ease:\"power2.inOut\"},t)` then fade the title in.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @remocn/backdrop\nconst b = interpolate(frame,[0,15],[0,28],{extrapolateRight:'clamp'});\n<Img src={ui} style={{filter:`blur(${b}px) brightness(${1-b/60})`}}/>\n```\n\n### In CapCut\n\nDuplicate the UI clip; on the copy apply Effects → \"Blur\" (strong) + Adjust → Brightness −30; put the title on top.\n\n### Ready-made components\n\n- [Backdrop](https://skills.varg.ai/component/remocn.backdrop/) (remocn): npx shadcn@latest add @remocn/backdrop\n- [Vignette](https://skills.varg.ai/component/hf.vignette/) (hyperframes): npx hyperframes add vignette\n- [Background Emphasis Type](https://skills.varg.ai/component/hf.mk-emphasis-type/) (hyperframes): npx hyperframes add mk-emphasis-type\n\n### Where this comes from\n\n- [UX Design Bootcamp: the rise of Linear style design](https://bootcamp.uxdesign.cc/the-rise-of-linear-style-design-origins-trends-and-techniques-4fd96aab7646)\n- [Lago: we killed our motion design job (Linear-style films, Remotion)](https://getlago.com/blog/we-killed-our-motion-design-job)","useWhen":["Transitions between demo and title so the film stays inside the product's colors."],"notFor":["Do not blur so little that UI text is half-readable; it distracts more than either sharp or fully soft."],"publisher":{"name":"Kapish Dima · remocn","handle":"Remocn","kind":"community","verified":false,"url":"https://remocn.dev","avatar":"https://github.com/Remocn.png"},"source":{"url":"https://remocn.dev/r/backdrop.json","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["ffmpeg","HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Backdrop · remocn","kind":"link","url":"https://skills.varg.ai/component/remocn.backdrop/","license":"MIT","note":"Configurable full-frame background (color / gradient / image / live component) with Screen Studio-style padding and a rounded, shadowed content frame."},{"role":"component","label":"Vignette · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.vignette/","license":"Apache-2.0","note":"Cinematic radial vignette overlay using a pure-CSS gradient — darkens the edges to pull focus toward the center"},{"role":"component","label":"Background Emphasis Type · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.mk-emphasis-type/","license":"Apache-2.0","note":"Oversized low-contrast background word drifting slowly behind the subject — typography as texture"},{"role":"source","label":"UX Design Bootcamp: the rise of Linear style design","kind":"link","url":"https://bootcamp.uxdesign.cc/the-rise-of-linear-style-design-origins-trends-and-techniques-4fd96aab7646","license":"link-only"},{"role":"source","label":"Lago: we killed our motion design job (Linear-style films, Remotion)","kind":"link","url":"https://getlago.com/blog/we-killed-our-motion-design-job","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"shader","hue":260,"text":"Blurred Product Behind Text"},"take":{"engines":["ffmpeg","hyperframes","remotion","capcut"],"components":["remocn.backdrop","hf.vignette","hf.mk-emphasis-type"],"aliases":["blur of UI","frosted product","UI as backdrop"]}},{"id":"magicuidesign/perspective-grid-tunnel","slug":"perspective-grid-tunnel","name":"Perspective Grid Tunnel","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"backdrops","tags":["backdrop","grid","speed","retro","hyperframes","remotion","capcut"],"summary":"A card or title floats in a perspective tunnel or floor grid while light streaks race along the lines.","description":"Built on [Warp Background](https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/warp-background.tsx) by magic-ui, MIT. The write-up and recipes below are varg's.\n\nGrid walls/floor converging to a vanishing point; thin colored streaks travel toward the camera; content centered.\n\n**When:** Energy and speed beats: launches, \"faster\" claims, transitions between sections.\n\n**Watch out:** Do not use it behind dense UI; the converging lines pull focus away from small text.\n\n**Timing:** Streaks 0.8–1.5 s each, staggered; floor scroll loop 2–4 s.\n\n**Also called:** warp background, retro grid, grid tunnel\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add gallery-tunnel\n```\nOr a CSS floor grid with `rotateX(70deg)` and a timeline-driven `background-position-y`.\n\n### In Remotion\n\n```tsx\n<div style={{transform:'perspective(600px) rotateX(70deg)', backgroundImage:'linear-gradient(#f0f3 1px,transparent 1px),linear-gradient(90deg,#f0f3 1px,transparent 1px)', backgroundSize:'60px 60px', backgroundPositionY:`${frame*4}px`}}/>\n```\n\n### In CapCut\n\nMedia → Library: search \"retro grid\"/\"tunnel\" loops; put the product card on top with a glow.\n\n### Ready-made components\n\n- [Warp Background](https://skills.varg.ai/component/magicui.warp-background/) (magic-ui): npx shadcn@latest add @magicui/warp-background\n- [Retro Grid](https://skills.varg.ai/component/magicui.retro-grid/) (magic-ui): npx shadcn@latest add @magicui/retro-grid\n- [Gallery Tunnel](https://skills.varg.ai/component/hf.gallery-tunnel/) (hyperframes): npx hyperframes add gallery-tunnel\n\n### Where this comes from\n\n- [Setproduct: the Vercel aesthetic, blueprint grid design](https://www.setproduct.com/blog/complete-guide-to-blueprint-grid-design)","useWhen":["Energy and speed beats: launches, \"faster\" claims, transitions between sections."],"notFor":["Do not use it behind dense UI; the converging lines pull focus away from small text."],"publisher":{"name":"Magic UI","handle":"magicuidesign","kind":"community","verified":false,"url":"https://magicui.design","avatar":"https://github.com/magicuidesign.png"},"source":{"url":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/warp-background.tsx","repo":"magicuidesign/magicui","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Warp Background · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.warp-background/","license":"MIT","note":"A card floats in a perspective tunnel while coloured light streaks race along the grid walls"},{"role":"component","label":"Retro Grid · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.retro-grid/","license":"MIT","note":"Synthwave floor grid in perspective rolling toward the viewer under a pink-to-orange title"},{"role":"component","label":"Gallery Tunnel · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.gallery-tunnel/","license":"Apache-2.0","note":"An infinite corridor of panels: a square tunnel receding to a vanishing point, its floor, ceiling and walls tiled with saturated colour slabs and caller-supplied images that swell toward camera and exit past you…"},{"role":"source","label":"Setproduct: the Vercel aesthetic, blueprint grid design","kind":"link","url":"https://www.setproduct.com/blog/complete-guide-to-blueprint-grid-design","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"shader","hue":260,"text":"Perspective Grid Tunnel"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["magicui.warp-background","magicui.retro-grid","hf.gallery-tunnel"],"aliases":["warp background","retro grid","grid tunnel"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/23d0573a586e/lib-magic-ui-warp-background.mp4","blur":"https://s3.varg.ai/how-to/previews/19f179398445/lib-magic-ui-warp-background.webp","source":"https://s3.varg.ai/how-to/previews/23d0573a586e/lib-magic-ui-warp-background.mp4","page":"https://magicui.design/docs/components/warp-background","credit":"Captured from the library’s own demo page (Magic UI)","rights":"publisher-site","note":"Preview of the Warp Background component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"DavidHDev/brand-silk-waves","slug":"brand-silk-waves","name":"Brand-Color Silk Waves","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"backdrops","tags":["backdrop","silk","waves","brand","hyperframes","remotion","capcut"],"summary":"Smooth silk-like folds or wave bands in brand colors flow slowly behind the content.","description":"Built on [Silk](https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Silk/Silk.jsx) by react-bits, MIT + Commons Clause. The write-up and recipes below are varg's.\n\nSoft satin folds or broad blurred waves; one hue family, subtle highlights, slow motion.\n\n**When:** Consumer and creative brands; music, audio and design tools.\n\n**Watch out:** Do not pick more than two hues; rainbow silk reads as a screensaver.\n\n**Timing:** Flow speed low (one fold crossing per 4–6 s).\n\n**Also called:** silk background, wavy gradient, flowing bands\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add flowing-gradient\n```\nWebGPU shader; set the two brand colors as variables.\n\n### In Remotion\n\n```tsx\n// npx shadcn@latest add @aceternity/wavy-background  (seed its noise with frame for seek-safety)\n```\n\n### In CapCut\n\nSearch Media → Library \"silk\"/\"waves background\"; apply Adjust → HSL to shift to brand hue.\n\n### Ready-made components\n\n- [Silk](https://skills.varg.ai/component/reactbits.silk/) (react-bits): npx shadcn@latest add @react-bits/Silk-JS-CSS\n- [Wavy Background](https://skills.varg.ai/component/aceternity.wavy-background/) (aceternity): npx shadcn@latest add @aceternity/wavy-background\n- [Flowing Gradient](https://skills.varg.ai/component/hf.flowing-gradient/) (hyperframes): npx hyperframes add flowing-gradient\n\n### Where this comes from\n\n- [DEV: how to make animated gradients like Stripe](https://dev.to/jordienr/how-to-make-animated-gradients-like-stripe-56nh)","useWhen":["Consumer and creative brands; music, audio and design tools."],"notFor":["Do not pick more than two hues; rainbow silk reads as a screensaver."],"publisher":{"name":"David Haz","handle":"DavidHDev","kind":"community","verified":false,"url":"https://github.com/DavidHDev","avatar":"https://github.com/DavidHDev.png"},"source":{"url":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Silk/Silk.jsx","repo":"DavidHDev/react-bits","license":"MIT + Commons Clause"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Silk · react-bits","kind":"link","url":"https://skills.varg.ai/component/reactbits.silk/","license":"MIT + Commons Clause","note":"Violet silk folds rippling diagonally, a soft sheen running along each crease"},{"role":"component","label":"Wavy Background · aceternity","kind":"link","url":"https://skills.varg.ai/component/aceternity.wavy-background/","license":"Aceternity License (free components)","note":"Thick blurred neon waves in cyan and violet roll horizontally through the middle of a black frame"},{"role":"component","label":"Flowing Gradient · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.flowing-gradient/","license":"Apache-2.0","note":"Bands of orange and violet flow across the frame in a smooth gradient. A WebGPU shader from the Shaders library (shaders.com, MIT)."},{"role":"source","label":"DEV: how to make animated gradients like Stripe","kind":"link","url":"https://dev.to/jordienr/how-to-make-animated-gradients-like-stripe-56nh","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"shader","hue":260,"text":"Brand-Color Silk Waves"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["reactbits.silk","aceternity.wavy-background","hf.flowing-gradient"],"aliases":["silk background","wavy gradient","flowing bands"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0c9046598c5a/lib-react-bits-silk.mp4","blur":"https://s3.varg.ai/how-to/previews/9495da84188e/lib-react-bits-silk.webp","source":"https://s3.varg.ai/how-to/previews/0c9046598c5a/lib-react-bits-silk.mp4","page":"https://reactbits.dev/backgrounds/silk","credit":"Captured from the library’s own demo page (React Bits)","rights":"publisher-site","note":"Preview of the Silk component that builds this take","bytes":0,"addedAt":"2026-10-28"}},{"id":"tsparticles/quiet-particle-field","slug":"quiet-particle-field","name":"Quiet Particle Field","skillName":"varg-video-edit-library","type":"ref-pack","status":"live","stream":"craft","adds":"visual","category":"backdrops","tags":["backdrop","particles","bokeh","ambient","hyperframes","remotion","capcut"],"summary":"Out-of-focus dots drift slowly in depth behind the content, adding life without motion noise.","description":"Built on [Ambient](https://github.com/tsparticles/presets/blob/main/presets/ambient/src/options.ts) by tsparticles, MIT. The write-up and recipes below are varg's.\n\nSparse soft circles of two or three sizes, low opacity, drifting upward or sideways; a faint glow line optional.\n\n**When:** Long holds on titles or quotes; calm sections of a film.\n\n**Watch out:** Do not increase density until it looks like snow; 20–60 particles on 1080p is plenty.\n\n**Timing:** Drift 5–20 px/s with a fixed seed so renders match.\n\n**Also called:** bokeh particles, ambient dots, sparkles\n\n### In HyperFrames\n\n```bash\nnpx hyperframes add starfield\n```\nSeek-safe: particle positions are a function of time and seed.\n\n### In Remotion\n\n```tsx\nconst rnd = (i:number)=> (Math.sin(i*999)*10000)%1;\nArray.from({length:40}).map((_,i)=> <div style={{left:`${Math.abs(rnd(i))*100}%`, top:`${(Math.abs(rnd(i+7))*100 - frame*0.05*(1+i%3))%100+100}%`}}/>)\n```\n\n### In CapCut\n\nMedia → Library: search \"bokeh\"/\"particles\"; Blend → Screen at 30–50% opacity over the background.\n\n### Ready-made components\n\n- [Ambient](https://skills.varg.ai/component/tsparticles.ambient/) (tsparticles): pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>\n- [Particles](https://skills.varg.ai/component/magicui.particles/) (magic-ui): npx shadcn@latest add @magicui/particles\n- [Sparkles](https://skills.varg.ai/component/aceternity.sparkles/) (aceternity): npx shadcn@latest add @aceternity/sparkles\n- [Starfield](https://skills.varg.ai/component/hf.starfield/) (hyperframes): npx hyperframes add starfield\n\n### Where this comes from\n\n- [UX Design Bootcamp: the rise of Linear style design](https://bootcamp.uxdesign.cc/the-rise-of-linear-style-design-origins-trends-and-techniques-4fd96aab7646)","useWhen":["Long holds on titles or quotes; calm sections of a film."],"notFor":["Do not increase density until it looks like snow; 20–60 particles on 1080p is plenty."],"publisher":{"name":"tsParticles (Matteo Bruni)","handle":"tsparticles","kind":"community","verified":false,"url":"https://github.com/tsparticles","avatar":"https://github.com/tsparticles.png"},"source":{"url":"https://github.com/tsparticles/presets/blob/main/presets/ambient/src/options.ts","repo":"tsparticles/presets","license":"MIT"},"install":{"claude-code":"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg","codex":"npx skills add vargHQ/skills --skill varg-video-edit-library -a codex -y","cursor":"npx skills add vargHQ/skills --skill varg-video-edit-library -a cursor -y"},"agents":["claude-code","claude-ai","codex","cursor","openclaw","gemini-cli","mcp","varg-studio"],"requires":["HyperFrames (npx hyperframes)","Remotion","CapCut (by hand)"],"cost":{"note":"Free — the take renders locally; generated footage, if any, bills by the model"},"refs":[{"role":"component","label":"Ambient · tsparticles","kind":"link","url":"https://skills.varg.ai/component/tsparticles.ambient/","license":"MIT","note":"Out-of-focus cyan rings and dots floating slowly over a dark slate gradient, like bokeh"},{"role":"component","label":"Particles · magic-ui","kind":"link","url":"https://skills.varg.ai/component/magicui.particles/","license":"MIT","note":"Fine white dots drifting slowly in random directions across black, nudged away by the cursor"},{"role":"component","label":"Sparkles · aceternity","kind":"link","url":"https://skills.varg.ai/component/aceternity.sparkles/","license":"Aceternity License (free components)","note":"Fine white particles twinkle in a band under a glowing blue horizon line below a big wordmark"},{"role":"component","label":"Starfield · hyperframes","kind":"link","url":"https://skills.varg.ai/component/hf.starfield/","license":"Apache-2.0","note":"Seek-safe night-sky overlay: sparse or dense stars in three size tiers that twinkle and drift in two parallax layers, radial-masked to keep the frame center clear"},{"role":"source","label":"UX Design Bootcamp: the rise of Linear style design","kind":"link","url":"https://bootcamp.uxdesign.cc/the-rise-of-linear-style-design-origins-trends-and-techniques-4fd96aab7646","license":"link-only"}],"addedAt":"2026-10-28","preview":{"kind":"shader","hue":260,"text":"Quiet Particle Field"},"take":{"engines":["hyperframes","remotion","capcut"],"components":["tsparticles.ambient","magicui.particles","aceternity.sparkles","hf.starfield"],"aliases":["bokeh particles","ambient dots","sparkles"]},"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/c56a87eff5da/lib-tsparticles-ambient.mp4","blur":"https://s3.varg.ai/how-to/previews/7a8e2bf56e35/lib-tsparticles-ambient.webp","source":"https://s3.varg.ai/how-to/previews/c56a87eff5da/lib-tsparticles-ambient.mp4","page":"https://particles.js.org/demos/recipes/ambient","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","rights":"publisher-site","note":"Preview of the Ambient component that builds this take","bytes":0,"addedAt":"2026-10-28"}}],"techniques":[{"id":"extreme-wide-shot","group":"shot-size","name":"Extreme wide shot","aliases":["EWS","ELS","extreme long shot","establishing shot","Establishing Wide Shot","大全景"],"definition":"The widest framing in the grammar: the setting dominates and any person in it reads as a small mark. Geography, weather and scale carry the information, not faces.","use":"Opens a sequence so the audience knows where it is, sells the size of a location, or strands a character inside something vast — loneliness, awe, threat.","misuse":"A regular wide shot is the usual stand-in, but once the figure takes up a real share of the frame the shot is about the person again and the sense of scale collapses.","clause":"Extreme wide shot: [subject] is a small figure in the lower third of a vast landscape that fills the frame, the camera locked off far away, the horizon held level for the whole shot.","adapters":{"veo":"Extreme wide establishing shot, static camera: [subject] stands small in the lower third of a vast landscape, the horizon level across the frame and open sky emphasizing the scale.","kling":"[subject] stands alone in a vast landscape. Establishing Wide Shot, static camera, the figure small in the lower third, horizon level, open sky.","seedance":"镜头1：大全景，固定镜头 — [subject] is a small figure in the lower third of a vast landscape; the horizon stays level; keep the camera still for the whole shot.","hailuo":"A vast landscape fills the frame, [subject] a tiny figure in the lower third, the horizon level [Static shot].","luma":"Static camera, extreme wide shot: a vast landscape fills the frame and [subject] stands small in the lower third, the horizon level and steady.","runway":"Extreme wide shot, eye level, locked-off camera on [subject], a small figure in the lower third of a vast landscape; the open frame shows the full scale of the place."},"links":[{"label":"eyecannndy — wide shot","url":"https://eyecannndy.com/technique/wide-shot"},{"label":"shot.cafe — tag: extreme wide","url":"https://shot.cafe/tag/extreme%20wide"},{"label":"melies — extreme long shot","url":"https://melies.co/cinematic-techniques/framing/extreme-long-shot"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/15e6c0a35f7f/technique-extreme-wide-shot.webp","w":960,"h":409,"blur":"data:image/webp;base64,UklGRowAAABXRUJQVlA4IIAAAADwAwCdASogAA4APtFWo0uoJKMhsAgBABoJQBOgBC049AfPHOfS3mbQAPzXWXJ5qV2yKeTtWLlxDoY59t8jzcPWHsbZaYf2FTWdsthct3rlai1FFSbeIjrGW0vRJGBfbJZPjRNp2MvuS47566w/FD5i+HMO1OU79Mm5VrVKEugAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/Sintel.2010.1080p.mkv","page":"https://durian.blender.org/","credit":"Sintel (2010) — © Blender Foundation | durian.blender.org — CC BY 3.0","rights":"cc-by","note":"Extreme wide: misty mountains and a giant tree's roots fill the frame; Sintel sits on the ridge as a small mark. Sintel at 11:26.","bytes":16662,"addedAt":"2026-10-27"}},{"id":"wide-shot","group":"shot-size","name":"Wide shot","aliases":["WS","LS","long shot","全景"],"definition":"Shows the whole subject with generous room around them, so body, space and the relationship between the two read at a glance.","use":"Tells the audience where a character is and what their whole body is doing; resets the eye after a run of close shots; stages action and blocking.","misuse":"Tightening to a full shot cuts away the surroundings that explain the action; loosening to an extreme wide makes the subject too small to read.","clause":"Wide shot of [subject] standing in the middle ground of [scene], the full body visible with room above the head and around the feet, camera static at eye level, framing held.","adapters":{"veo":"Wide shot, eye level, static camera: [subject] in the middle ground of [scene], the full body and the surrounding space clearly visible.","kling":"[subject] stands in the middle ground of [scene]. Wide shot, static camera at eye level, full body visible with space all around.","seedance":"镜头1：全景，固定镜头 — [subject] stands in the middle ground of [scene], the whole body and the surroundings in frame.","hailuo":"[subject] stands in the middle ground of [scene], seen in full with space around them [Static shot].","luma":"Static camera, wide shot at eye level: [subject] stands in the middle ground of [scene], the whole body and the space around it in clear view.","runway":"Wide shot, eye level, locked-off camera on [subject] standing in the middle ground of [scene]; the frame holds the full body and the room around it."},"links":[{"label":"eyecannndy — wide shot","url":"https://eyecannndy.com/technique/wide-shot"},{"label":"shot.cafe — tag: wide shot","url":"https://shot.cafe/tag/wide%20shot"},{"label":"melies — wide shot","url":"https://melies.co/cinematic-techniques/framing/wide-shot"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/f169572ef43f/technique-wide-shot.webp","w":960,"h":409,"blur":"data:image/webp;base64,UklGRsIAAABXRUJQVlA4ILYAAAAwBACdASogAA4APtFWo0uoJKMhsAgBABoJQBOgBFtPw47Sl2eynkCiGKwA9p7q/mSLzKeU/iCBJXIv2obnzGSOfID9rfMS5byNKdEXIcBqusugDnfbWSSgW1euFgLK0eDQ9rnOLpjPzegxdb9bMNpYrgjhI1W9F9b8pi72WTt5eaK5DX0ekyeCbnm0d7CJhmAaDzXevN2SAec+H7oz++/nCHwT6TElW6oxv+xjclMCZ0zl63AAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/Sintel.2010.1080p.mkv","page":"https://durian.blender.org/","credit":"Sintel (2010) — © Blender Foundation | durian.blender.org — CC BY 3.0","rights":"cc-by","note":"Wide shot: Sintel stands whole on a crate with the market alley, stalls and townspeople around her, so body and place read together. Sintel at 4:22.","bytes":46412,"addedAt":"2026-10-27"}},{"id":"full-shot","group":"shot-size","name":"Full shot","aliases":["FS","full body shot","Full Body Shot","head-to-toe shot","Full Body"],"definition":"The subject runs the height of the frame, head to feet, with only a sliver of space above and below.","use":"Shows costume, posture and physical performance — a dancer, a fighter's stance, a fashion look — while the face stays roughly readable.","misuse":"Cropping at the knees or ankles turns it into an awkward in-between frame; leaving lots of room turns it into a wide shot and the body language shrinks.","clause":"Full shot of [subject] from head to toe, the figure filling the frame height with a little space above the head and below the feet, camera static at chest height.","adapters":{"veo":"Full shot, static camera at chest height: [subject] seen head to toe, the figure filling the height of the frame.","kling":"[subject] stands facing the camera. Full Body Shot, static camera, head to toe in frame with a little space above and below.","seedance":"镜头1：全景，固定镜头 — [subject] from head to toe fills the frame height, with small margins above the head and below the feet.","hailuo":"[subject] stands facing the camera, visible from head to toe [Static shot].","luma":"Static camera, full shot at chest height: [subject] stands facing the lens, visible from head to toe with a slim margin above and below.","runway":"Full shot, chest-height angle, locked-off camera on [subject] standing toward the lens; the frame runs from the top of the head to the feet."},"links":[{"label":"melies — full body","url":"https://melies.co/cinematic-techniques/framing/full-body"},{"label":"grokfilm — full shot","url":"https://grokfilm.app/#t/full-shot"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/5a9b388b084e/technique-full-shot.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRsAAAABXRUJQVlA4ILQAAADQBQCdASogABIAPtFUokuoJKMhsAgBABoJaACdM2PIp+UCr1MG8qrja91XUvyF2ITL9kqyO5AAAP73fZ/X929sgkBkCttzG3U9/csoEruaqwj+A9HE++8/rwtqxdaadnCAyxeWeZFbuRdWgHyY/NROu47j3KO47Qm5Ft+ax0CdFQP3v8VlVu7OuU/BzdUQH6PHmh+OevbJf4OP+YPAsHAoKkxMoyRC96OKF70caYcUzVjuGAA=","source":"https://archive.org/download/Nosferatu1922HD","page":"https://archive.org/details/Nosferatu1922HD","credit":"Nosferatu (1922), F. W. Murnau / Prana-Film — public domain","rights":"public-domain","note":"Full shot: Hutter stands head to boots between two carved chairs, with only a sliver of room above and below. Nosferatu (1922) at 28:33; 4:3 frame pillarboxed to 16:9 so the head and feet stay visible.","bytes":20566,"addedAt":"2026-10-27"}},{"id":"medium-shot","group":"shot-size","name":"Medium shot","aliases":["MS","mid shot","waist shot","中景"],"definition":"Frames the subject from about the waist up: face and hands share the frame, with some of the setting behind.","use":"The everyday conversational framing — enough face for emotion, enough body for gesture; the workhorse of dialogue, presenters and UGC-style ads.","misuse":"A frame line exactly at the elbows or waist looks accidental; creeping in to a medium close-up loses the hands that carry the action.","clause":"Medium shot of [subject] from the waist up, centered with the eyes near the upper third and both hands in frame, camera static at eye level.","adapters":{"veo":"Medium shot, eye level, static camera: [subject] framed from the waist up, hands visible, the room softly visible behind.","kling":"[subject] talks and gestures with both hands. Medium shot from the waist up, static camera at eye level.","seedance":"镜头1：中景，固定镜头 — [subject] from the waist up, hands in frame, eyes near the upper third.","hailuo":"[subject], framed from the waist up, gestures while speaking [Static shot].","luma":"Static camera, medium shot at eye level: [subject] from the waist up, hands in view, eyes resting near the upper third of the frame.","runway":"Medium shot, eye level, locked-off camera on [subject] gesturing with both hands; the frame runs from the waist to just above the head."},"links":[{"label":"shot.cafe — tag: medium shot","url":"https://shot.cafe/tag/medium%20shot"},{"label":"melies — medium shot","url":"https://melies.co/cinematic-techniques/framing/medium-shot"},{"label":"grokfilm — medium shot","url":"https://grokfilm.app/#t/medium-shot"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/14f7adc02c4c/technique-medium-shot.webp","w":960,"h":800,"blur":"data:image/webp;base64,UklGRtwAAABXRUJQVlA4INAAAACQBQCdASogABoAPsVUokunpSMhsAwA8BiJaQAAW/AFgJ55ujm+6lhSAqdNJPFxFXuPgOmPAAD+9XB2R0aie9QCvx9iNtRIhvYZrkgcVyPKLd6SzBL/G6BT/26SDGb5K9IEwoTbLNPTuOUja/R/JJF7nsks3J9uiwEw/e6GsYfZFxGAuEWvu3Yt4PhwDJgaGtu0GSYyW3jOanF1gtLUfMUNbcxq+wxE+m6Y0fUeZ6zG0YrmoJp0OI343Sw98PeJjGTBdnP7exbPRUuiB4K6oAAA","source":"https://archive.org/download/sunrise-a-song-of-two-humans-f.-w.-murnau-1927","page":"https://archive.org/details/sunrise-a-song-of-two-humans-f.-w.-murnau-1927","credit":"Sunrise: A Song of Two Humans (1927), F. W. Murnau / Fox Film — public domain","rights":"public-domain","note":"Medium shot: a cook framed from the waist up, face and the hand holding a wine bottle sharing the frame, kitchen shelves behind. Sunrise (1927) at 1:04:05.","bytes":18436,"addedAt":"2026-10-27"}},{"id":"medium-close-up","group":"shot-size","name":"Medium close-up","aliases":["MCU","Medium Close up","chest shot","近景"],"definition":"Head and shoulders down to mid-chest: the face leads and the body is context.","use":"Interviews, testimonials and emotional dialogue where the eyes matter but a full close-up would feel too intense.","misuse":"Tightening to a close-up crops the shoulders and turns a calm exchange into a confrontation; loosening to a medium shot weakens eye contact.","clause":"Medium close-up of [subject] from mid-chest up, the eyes on the upper third line, the background softly out of focus, camera static at eye level.","adapters":{"veo":"Medium close-up, eye level, static camera, shallow depth of field: [subject] from mid-chest up, eyes on the upper third, the background soft.","kling":"[subject] looks just past the lens. Medium Close up, static camera at eye level, background softly blurred.","seedance":"镜头1：近景，固定镜头 — [subject] from mid-chest up, eyes on the upper third, a soft background.","hailuo":"[subject], seen from mid-chest up, speaks softly toward the lens [Static shot].","luma":"Static camera, medium close-up at eye level: [subject] from mid-chest up, eyes on the upper third, the background a soft blur.","runway":"Medium close-up, eye level, locked-off camera on [subject] looking just past the lens; 50mm lens, shallow depth of field."},"links":[{"label":"shot.cafe — tag: medium close-up","url":"https://shot.cafe/tag/medium%20close-up"},{"label":"melies — medium close up","url":"https://melies.co/cinematic-techniques/framing/medium-close-up"},{"label":"grokfilm — medium close-up","url":"https://grokfilm.app/#t/medium-close-up"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/c6b3cbc7192a/technique-medium-close-up.webp","w":960,"h":401,"blur":"data:image/webp;base64,UklGRtwAAABXRUJQVlA4INAAAABQBACdASogAA4APtFapkuoJaOhsAgBABoJQBOgMX6UMO4vOJiziSAjVoAAAMxUIsEhNu1NvmdW4OSelCZaOWb4GhopDBbs1kK0AXXJkGSa0pnMoGGzBI9pK2hjlSkc+GrEpKbg8SohQZS0CyDf9LTm3Ok73jyiP4eqXNa6LNdOlfqEMTJTcNM0olI0xgs4jE/zBpjHx4t7MzU13uMAoGonrBsJd0ZD44jnj+52gTB0UcTXPceKeOb7clJV0zFSWZxU201SywUvxdjADoSAUFAA","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Medium close-up: Thom from the head down to mid-chest; his face leads, the canal and a robot part sit soft behind. Tears of Steel at 8:40.","bytes":31622,"addedAt":"2026-10-27"}},{"id":"close-up","group":"shot-size","name":"Close-up","aliases":["CU","Close-up shot","Close up","特写","Head Shot"],"definition":"The face, or a single object, takes up most of the frame; little or none of the setting remains.","use":"Puts the audience inside a reaction or a decision; makes an emotion or a product detail impossible to miss.","misuse":"Used for every line it stops landing, because there is no contrast left; a digital punch-in on a wider shot softens the image instead of reading as a chosen close-up.","clause":"Close-up of [subject]'s face filling the frame from chin to hairline, the eyes on the upper third, camera static, the background reduced to soft color.","adapters":{"veo":"Close-up, static camera, shallow depth of field: [subject]'s face fills the frame from chin to hairline, eyes on the upper third.","kling":"[subject] holds a quiet expression. Close-up shot, static camera, the face filling the frame, background blurred.","seedance":"镜头1：特写，固定镜头 — [subject]'s face fills the frame from chin to hairline; the background turns to soft color.","hailuo":"Close-up of [subject]'s face filling the frame, eyes steady [Static shot].","luma":"Static camera, close-up: [subject]'s face fills the frame from chin to hairline, eyes on the upper third, the background melting into soft color.","runway":"Close-up, eye level, locked-off camera on [subject]'s face from chin to hairline; 85mm lens, shallow depth of field."},"links":[{"label":"eyecannndy — close up","url":"https://eyecannndy.com/technique/close-up"},{"label":"shot.cafe — tag: close-up","url":"https://shot.cafe/tag/close-up"},{"label":"melies — close up","url":"https://melies.co/cinematic-techniques/framing/close-up"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/d1a7b5eb55b8/technique-close-up.webp","w":960,"h":401,"blur":"data:image/webp;base64,UklGRtAAAABXRUJQVlA4IMQAAABQBACdASogAA4APtFUo0uoJKMhsAgBABoJQBdgTYDrqmS/kw5Khr8JCEwAAP0AluhjDm0LbHkdGRw6v1vVyA4WmNgHwVgKzVt8mHAesivU6opRIReWfvCA6RgGH1U6M3zmDmYHXq5nLY0whnQ2xBgrhYTbZ/Cb+sCfxmMMAPsgHAGmP/9zQCO3UN+3wm8xIjuV26ph6lB++KhRWo5UjuBXjR30R7hKGvqfVC8A72W/R9aoPC/4EYJE6ujJi+Nx36rkcoAA","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Close-up: Thom's face fills the height of the 2.39 frame from hairline to chin; only a blurred strip of street remains. Tears of Steel at 5:27.","bytes":16616,"addedAt":"2026-10-27"}},{"id":"extreme-close-up","group":"shot-size","name":"Extreme close-up","aliases":["ECU","XCU","Extreme Close up","macro close-up","大特写","Italian Shot"],"definition":"Isolates a single feature — an eye, lips, fingertips, a watch hand — so it fills the whole frame.","use":"Signals that a tiny detail is the story: a tell, a trigger, a texture, a product feature.","misuse":"Without an established context the audience cannot place the detail; a still macro of an object is not the same beat as an ECU of a performer, which lives on micro-movement.","clause":"Extreme close-up of [subject]'s eye filling the frame, lashes and iris texture sharp and everything else falling into blur, camera static.","adapters":{"veo":"Extreme close-up, static camera, very shallow depth of field: [subject]'s eye fills the frame, the iris texture sharp.","kling":"[subject] blinks slowly. Extreme Close up of one eye filling the frame, static camera, iris texture in sharp detail.","seedance":"镜头1：特写，固定镜头 — only [subject]'s eye fills the frame; the iris texture is sharp and everything else is blurred.","hailuo":"Extreme close-up of [subject]'s eye filling the frame as it blinks slowly [Static shot].","luma":"Static camera, extreme close-up: [subject]'s eye fills the entire frame, lashes and iris texture crisp, the edges soft.","runway":"Extreme close-up, locked-off camera on [subject]'s eye filling the frame; macro lens, the iris texture in sharp focus."},"links":[{"label":"shot.cafe — tag: extreme close-up","url":"https://shot.cafe/tag/extreme%20close-up"},{"label":"melies — extreme close up","url":"https://melies.co/cinematic-techniques/framing/extreme-close-up"},{"label":"grokfilm — extreme close-up","url":"https://grokfilm.app/#t/extreme-close-up"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/090738908e38/technique-extreme-close-up.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRrwAAABXRUJQVlA4ILAAAABQBQCdASogABIAPtFep04oJSOiKAqpABoJaQDQGBEw84MUGf2zYt1ZJtcLkrgzSSqrcgAA/tvlRGLeuWKTpmpEyPweOtILCGptyGycS1IZBcqfRB9AUyCKC4f0CqeJz+zGEqbhXWn2Kp9vQGLYtpoJcZHpm7MXE62HnEp/gVgB3i1DncXyTf4gSqrb5of6OagOkuNXHYa9igSJVF+yFou2b+RExPzJiEoGPbW+EJOgAA==","source":"https://archive.org/download/ChelovekskinoapparatomManWithAMovieCamera/Chelovek_s_kino-apparatom.ogv","page":"https://archive.org/details/ChelovekskinoapparatomManWithAMovieCamera","credit":"Man with a Movie Camera (1929), Dziga Vertov / VUFKU — public domain","rights":"public-domain","note":"Extreme close-up: a single eye and brow fill the whole frame. Man with a Movie Camera (1929) at 30:04; film borders cropped, 16:9 crop of the 400×300 archive copy (soft).","bytes":14866,"addedAt":"2026-10-27"}},{"id":"insert-shot","group":"shot-size","name":"Insert shot","aliases":["insert","INS","cut-in","cutaway","detail shot"],"definition":"A brief, tight shot of an object or an action detail the scene needs in order to read — a hand on a lock, a phone screen, a label.","use":"Delivers story information or product proof in one beat; also covers a continuity jump between two takes.","misuse":"Held too long, information turns into a beauty shot; shot from a new eyeline, it breaks the geography of the master.","clause":"Insert shot of [subject] in close detail, the key action happening at the center of the frame, camera static and slightly above, held for about two seconds.","adapters":{"veo":"[00:00-00:02] Insert shot, static camera slightly above: [subject] in close detail at the center of the frame as the key action happens.","kling":"[subject] in close detail as the action happens at frame center. Insert close-up, static camera slightly above, brief and clear.","seedance":"镜头1：特写，固定镜头 — insert of [subject] in close detail at frame center, camera slightly above; hold about two seconds.","hailuo":"[subject] in close detail at frame center as the action happens [Static shot].","luma":"Static camera slightly above, insert shot: [subject] in close detail at frame center while the action plays out, clear and brief.","runway":"Insert shot, slightly high angle, locked-off camera on [subject] in close detail at frame center; macro lens; the key action completes within two seconds."},"links":[{"label":"shot.cafe — tag: insert","url":"https://shot.cafe/tag/insert"},{"label":"eyecannndy — cut ins","url":"https://eyecannndy.com/technique/cut-ins"},{"label":"melies — insert","url":"https://melies.co/cinematic-techniques/framing/insert"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/fdad27d76ece/technique-insert-shot.webp","w":960,"h":401,"blur":"data:image/webp;base64,UklGRuYAAABXRUJQVlA4INoAAAAQBACdASogAA4APtFWpEuoJKOhsAgBABoJZgCsAd0jgxCfbDIP5mT0AAD9tL+3hZXUhJiZbc9nlEQKHsisXNf6a+9p5AVNGyY1zJkD9e4DZKiuowaPDToBE20E41YpD2a4rsVkH0lpyQgdYmP2VWJ45XM2h4CKMG0O0+y3iJsVehHS4U02FX64DTxl06gI91Oz3ZgCssPZib+DuGzhi4hEVzHLxUR3dfvNxhwX+Z7EaoZAhd+dlBk34dLJY/DO7jdVaXHoJha6sG3zeD1+k1/Do4sBCoA6mKwAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Insert: a tight shot of a finger on the PLAYBACK button of the memory machine — the detail the scene needs before the replay starts. Tears of Steel at 04:56.","bytes":31024,"addedAt":"2026-10-27"}},{"id":"eye-level","group":"angle","name":"Eye level","aliases":["eye-level shot","Eye Level","neutral angle"],"definition":"The lens sits at the subject's eye height and looks straight across — the angle audiences read as neutral.","use":"The default for honest, even-handed moments; testimonials and direct address feel trustworthy from here.","misuse":"A lens slightly above or below the eyes becomes a mild high or low angle and quietly shifts power; shoulder height on a standing person is not eye level.","clause":"Eye-level shot of [subject]: the lens at the same height as their eyes, looking straight across, the horizon level, camera static.","adapters":{"veo":"Eye-level shot, static camera: the lens at [subject]'s eye height looking straight across, the horizon level.","kling":"[subject] faces the camera. Eye-level shot, static camera, horizon level.","seedance":"镜头1：eye-level shot, 固定镜头 — the camera at [subject]'s eye height looking straight across; the horizon stays level.","hailuo":"[subject] faces the camera at eye height, the horizon level [Static shot].","luma":"Static camera, eye level: the lens sits at [subject]'s eye height and looks straight across, the horizon level.","runway":"Medium shot, eye level, locked-off camera on [subject] facing the lens; the horizon stays level."},"links":[{"label":"melies — eye level","url":"https://melies.co/cinematic-techniques/camera-angles/eye-level"},{"label":"grokfilm — eye-level shot","url":"https://grokfilm.app/#t/eye-level-shot"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/41e013e157f1/technique-eye-level.webp","w":960,"h":401,"blur":"data:image/webp;base64,UklGRuAAAABXRUJQVlA4INQAAACwBACdASogAA4APtFWo0uoJKMhsAgBABoJQBOmUAS2QxhiQ1GnzM5HRD31Qp0AAP7aoQjbPOZMqPyuCfETpsi07ZxrJjeIF2JXB5wHZBVu1kMCDM5yzm+diWlxwkh73ugr6sDTYO+k4U6+jYXgrvUuTfesVOZrlTGJj77+t9Q369SkIyY+JwpQ39wTAAwSapZ3yD1Fl7ghkGB3IMTEb/j0m1AyHeVaS9U2skRzjoQWLHeuTDCseisgb6JUgulQk3GEB3ZnxmDmFCZ2KDonvikkagAAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Eye level: the lens sits at the three characters' eye height and looks straight across at them — neutral, nobody looms or shrinks. Tears of Steel at 3:51.","bytes":34756,"addedAt":"2026-10-27"}},{"id":"low-angle","group":"angle","name":"Low angle","aliases":["low angle shot","Low Angle","低角度","hero angle","looking up"],"definition":"The camera sits below the subject's eyes and tilts up, so the subject looms over the lens.","use":"Grants power, threat or heroism; makes products, vehicles and architecture feel monumental.","misuse":"Dropping all the way to the ground with a wide lens becomes a worm's-eye view with heavy distortion; a slight low angle on a long lens may not read at all.","clause":"Low-angle shot: the camera at hip height below [subject], tilted up so they tower against the sky and fill the upper two-thirds of the frame, camera static.","adapters":{"veo":"Low-angle shot, static camera: from hip height the lens tilts up at [subject], who towers against the sky in the upper two-thirds of the frame.","kling":"[subject] stands tall against the sky. Low angle shot from hip height looking up, static camera, the figure dominating the frame.","seedance":"镜头1：低角度，固定镜头 — looking up from hip height, [subject] towers against the sky in the upper two-thirds of the frame.","hailuo":"Seen from hip height looking up, [subject] towers against the sky [Static shot].","luma":"Static camera, low angle: the lens sits at hip height and looks up at [subject], who towers against the sky across the upper two-thirds.","runway":"Medium-wide shot, low angle from hip height, locked-off camera on [subject] towering against the sky; 24mm lens."},"links":[{"label":"eyecannndy — low angle","url":"https://eyecannndy.com/technique/low-angle"},{"label":"shot.cafe — tag: low-angle","url":"https://shot.cafe/tag/low-angle"},{"label":"melies — low angle","url":"https://melies.co/cinematic-techniques/camera-angles/low-angle"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/3021a9c084d6/technique-low-angle.webp","w":960,"h":401,"blur":"data:image/webp;base64,UklGRtAAAABXRUJQVlA4IMQAAADQBACdASogAA4APtFWpEuoJKOhsAgBABoJYwC06ywYDPZM3skdTTfnVn0hxu3CwAD+C6/N37EX6TQCPVCDIcuH4Yb/9Nl+j13yUzXLWK0fen3vWuTMTVha2ZPqV3Z98RV2Mx/OySbV60Nznb8fUDzaiqHtRiwfeE42bAJw+/rlm7Ak8gFQYhAG/cHu2Bfs3PqyR9M7q12wgMQXWKXlnTEBzwqT7AimzzbN9xzp/vORMn0ydB/72l2zHWjRiNGObVxkgAAA","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Low angle: the camera sits below the soldier and tilts up, so he looms against the sky and the tower's cables. Tears of Steel at 8:03.","bytes":21846,"addedAt":"2026-10-27"}},{"id":"high-angle","group":"angle","name":"High angle","aliases":["High Angle","high angle shot","looking down"],"definition":"The camera sits above the subject's eyes and tilts down at them.","use":"Diminishes or exposes the subject — vulnerability, surveillance, defeat; also clarifies a layout or a table of objects.","misuse":"A barely raised tripod hardly reads; going straight down becomes an overhead shot, which says pattern rather than judgment.","clause":"High-angle shot: the camera raised well above [subject] and tilted down about 45 degrees, [subject] small in the lower half of the frame, camera static.","adapters":{"veo":"High-angle shot, static camera: raised above [subject] and tilted down about 45 degrees, [subject] small in the lower half of the frame.","kling":"[subject] sits alone on the floor. High angle shot looking down, static camera, the figure small in the lower half of the frame.","seedance":"镜头1：俯视，固定镜头 — the camera looks down at [subject] at about 45 degrees; [subject] sits small in the lower half of the frame.","hailuo":"Seen from above at about 45 degrees, [subject] sits small in the lower half of the frame [Static shot].","luma":"Static camera, high angle: the lens looks down at [subject] from well above, about 45 degrees, placing them small in the lower half of the frame.","runway":"Wide shot, high angle about 45 degrees, locked-off camera on [subject] small in the lower half of the frame."},"links":[{"label":"eyecannndy — high angle","url":"https://eyecannndy.com/technique/high-angle"},{"label":"shot.cafe — tag: high-angle","url":"https://shot.cafe/tag/high-angle"},{"label":"melies — high angle","url":"https://melies.co/cinematic-techniques/camera-angles/high-angle"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/ddb944559701/technique-high-angle.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRsgAAABXRUJQVlA4ILwAAADQBQCdASogABIAPtFUo0uoJKMhsAgBABoJaACdMzQwJoM5n1/wEqfH/teu6Indb2sunrTJJTIAAP73fZ8GuNKtvakfQx5YkY7E4HQJkbZ5zfpx9crklUsTH+kFkH4sUPe1muSm4S/E15bNreshPobmBpoVQeVrADHKeyZtQFyocRtMXCkjRq1Hrqru94Tiw5jSJU1Kg+MTRnzwXvU51vCKfLjrp+rZtr5PaunFcTFnxCIxCRmQxDZ28oAAAA==","source":"https://archive.org/download/Nosferatu1922HD","page":"https://archive.org/details/Nosferatu1922HD","credit":"Nosferatu (1922), F. W. Murnau / Prana-Film — public domain","rights":"public-domain","note":"High angle: the camera looks down from a high window at the town crier and his drum on the cobbles, so he reads small and exposed. Nosferatu (1922) at 1:14:23; 4:3 frame pillarboxed to 16:9.","bytes":32652,"addedAt":"2026-10-27"}},{"id":"overhead-shot","group":"angle","name":"Overhead shot","aliases":["top-down","Overhead","bird's-eye view","God's-eye view","flat lay","Overhead Top-Down"],"definition":"The camera points straight down at 90 degrees, flattening the scene into a map or a pattern.","use":"Reveals choreography, layouts and patterns; builds food and product flat-lays; gives a detached, fateful view of a character.","misuse":"An angled high shot keeps perspective and horizon cues, so the graphic, map-like flatness never appears.","clause":"Overhead shot: the camera directly above [subject], pointing straight down, [subject] centered on a flat, graphic layout of the ground plane, camera static.","adapters":{"veo":"Top-down shot, static camera directly above [subject], pointing straight down; [subject] centered on a flat, graphic layout of the ground plane.","kling":"[subject] lies on the floor. Top-down overhead shot, static camera directly above, centered composition.","seedance":"镜头1：俯视，正上方垂直拍摄，固定镜头 — the camera points straight down at [subject], centered on a flat, graphic ground plane.","hailuo":"Directly from above, [subject] lies centered on a flat graphic layout [Static shot].","luma":"Static camera, overhead: the lens points straight down at [subject], centered on a flat, graphic ground plane.","runway":"Overhead shot, 90-degree top-down angle, locked-off camera on [subject] centered on a flat ground plane."},"links":[{"label":"eyecannndy — overhead","url":"https://eyecannndy.com/technique/overhead"},{"label":"shot.cafe — tag: overhead","url":"https://shot.cafe/tag/overhead"},{"label":"shot.cafe — tag: top-down","url":"https://shot.cafe/tag/top-down"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/c9812a1e2e88/technique-overhead-shot.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRqwAAABXRUJQVlA4IKAAAADwBACdASogABIAPtFcpU0oJSOiMBgIAQAaCWkAAJFntQzzbp+LrYIxZlDaWyZOMAAA/vidqGj9sPxevYxKbDfGPRyI1AfDFHLysCdqoVpoZCkgQYI+SDiCj7a4vYUkCl5b42APhi+bsWfFryAjK9Yb0T2Nm9ARyP/LV6PNKrCEeLuBfOmP1rdP42CkSciOxky+TamlemlpgTx0N9ueAAAA","source":"https://archive.org/download/ChelovekskinoapparatomManWithAMovieCamera/Chelovek_s_kino-apparatom.ogv","page":"https://archive.org/details/ChelovekskinoapparatomManWithAMovieCamera","credit":"Man with a Movie Camera (1929), Dziga Vertov / VUFKU — public domain","rights":"public-domain","note":"Overhead: the camera points straight down at an outdoor exercise class, turning the women into a pattern on the ground. Man with a Movie Camera (1929) at 48:01; film borders cropped, 4:3 frame pillarboxed (400×300 archive copy, soft).","bytes":13616,"addedAt":"2026-10-27"}},{"id":"worms-eye","group":"angle","name":"Worm's-eye view","aliases":["worm's-eye","worms-eye view","Ground Level","ground-level shot","ground shot"],"definition":"The lens rests on or near the ground and aims upward, exaggerating height and depth.","use":"Makes footsteps, vehicles and towers feel colossal; a playful or menacing shift of scale.","misuse":"A standard low angle from hip height has no ground plane in the foreground, so the scale exaggeration disappears.","clause":"Worm's-eye view: the camera on the ground in front of [subject], looking steeply up past the ground surface while [subject] looms overhead, camera static.","adapters":{"veo":"Worm's-eye view, static camera on the ground looking steeply up at [subject], who looms overhead; ground texture fills the bottom edge.","kling":"[subject] steps over the camera. Ground-level worm's-eye view looking steeply up, static camera, the ground filling the bottom of the frame.","seedance":"镜头1：低角度 from ground level, 固定镜头 — the lens rests on the ground and looks steeply up at [subject] looming overhead.","hailuo":"From the ground looking steeply up, [subject] looms overhead [Static shot].","luma":"Static camera, ground level: the lens rests on the ground and looks steeply up at [subject], who looms overhead.","runway":"Wide shot, worm's-eye angle from the ground, locked-off camera looking up at [subject] looming overhead; 16mm lens."},"links":[{"label":"eyecannndy — worm's-eye","url":"https://eyecannndy.com/technique/worms-eye"},{"label":"eyecannndy — ground shot","url":"https://eyecannndy.com/technique/ground-shot"},{"label":"melies — worms eye","url":"https://melies.co/cinematic-techniques/camera-angles/worms-eye"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/cecce754824a/technique-worms-eye.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRpoAAABXRUJQVlA4II4AAACwBACdASogABIAPtFYpUuoJSOhsAgBABoJaQAATGBnHRnRd7MYiACdRYB4LhAAAP716qhZdD4GjKl6mdIs+skz2u+ryNAcq0RiKKjm5eqQY5/FLxHlN1G/OuRs/QYQc31iRDQ3XWjbXLEZ4mEaYPrqxjdNNYF0KZd6v0wYf4mEKQngNbvMMLTXn4zi2gAA","source":"https://archive.org/download/ChelovekskinoapparatomManWithAMovieCamera/Chelovek_s_kino-apparatom.ogv","page":"https://archive.org/details/ChelovekskinoapparatomManWithAMovieCamera","credit":"Man with a Movie Camera (1929), Dziga Vertov / VUFKU — public domain","rights":"public-domain","note":"Worm's-eye: the lens sits at the foot of a factory chimney and aims straight up its length, so the stack shoots into the sky toward its smoke. Man with a Movie Camera (1929) at 14:23; film borders cropped, pillarboxed (400×300 archive copy, soft).","bytes":10534,"addedAt":"2026-10-27"}},{"id":"dutch-angle","group":"angle","name":"Dutch angle","aliases":["Dutch Angle","canted angle","dutch tilt","oblique angle","Canted Frame","Incline"],"definition":"The camera is rolled on its lens axis so the horizon and verticals run diagonally through the frame.","use":"Signals unease, intoxication, madness or a world off its axis; used sparingly it marks the moment things go wrong.","misuse":"A tiny accidental tilt looks like a mistake rather than a choice; tilting every shot numbs the effect.","clause":"Dutch angle on [subject]: the camera rolled about 20 degrees clockwise so the horizon and walls run diagonally, [subject] centered, camera static.","adapters":{"veo":"Dutch angle, static camera rolled about 20 degrees: [subject] centered while the horizon and walls run diagonally across the frame.","kling":"[subject] stands in a narrow hallway. Dutch angle tilted about 20 degrees, static camera, uneasy mood.","seedance":"镜头1：Dutch angle tilted about 20 degrees, 固定镜头 — [subject] centered, the horizon and walls running diagonally.","hailuo":"[subject] stands centered as the horizon and walls run diagonally, the frame tilted about 20 degrees [Static shot].","luma":"Static camera, Dutch angle rolled about 20 degrees: [subject] centered, the horizon and walls running diagonally across the frame.","runway":"Medium shot, Dutch angle tilted 20 degrees, locked-off camera on [subject] centered in a narrow hallway."},"links":[{"label":"eyecannndy — dutch angle","url":"https://eyecannndy.com/technique/dutch-angle"},{"label":"shot.cafe — tag: dutch-angle","url":"https://shot.cafe/tag/dutch-angle"},{"label":"melies — dutch angle","url":"https://melies.co/cinematic-techniques/camera-angles/dutch-angle"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/ca1ae7d717a0/technique-dutch-angle.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRpoAAABXRUJQVlA4II4AAACwBACdASogABIAPtFUoUuoJKMhsAgBABoJaQAAXoi1xPzbLnyTh4rjJXkbLrFAAP7BrZ13NXhNG+WSxQLibd3RqrSYzDgNlONlsuX4P/dBEb6nTWbOEuOIi7G6rb93ibxaa5VoQ6tWMuZhiEv4dAIsC8vJCxME6Eg7iGum/irRpSHM3Cfhdd/a62bm4hAA","source":"https://archive.org/download/ChelovekskinoapparatomManWithAMovieCamera/Chelovek_s_kino-apparatom.ogv","page":"https://archive.org/details/ChelovekskinoapparatomManWithAMovieCamera","credit":"Man with a Movie Camera (1929), Dziga Vertov / VUFKU — public domain","rights":"public-domain","note":"Dutch angle: the camera is rolled so the street, a lamp post and a passing tram run diagonally through the frame. Man with a Movie Camera (1929) at 30:00; film borders cropped, 16:9 crop of the 400×300 archive copy (soft).","bytes":17116,"addedAt":"2026-10-27"}},{"id":"over-the-shoulder","group":"angle","name":"Over-the-shoulder","aliases":["OTS","Over the Shoulder","over-the-shoulder shot","dirty single","French over","Over-the-Shoulder Coverage"],"definition":"One character is framed past the blurred shoulder and back of the head of another standing in the foreground.","use":"Builds dialogue geography — who faces whom, and that the listener is present; the backbone of shot-reverse-shot.","misuse":"Letting the foreground shoulder take half the frame hides the speaker; switching sides of the line between reverse shots scrambles the eyelines.","clause":"Over-the-shoulder shot: the camera behind [subject B]'s right shoulder, which fills the left third out of focus, framing [subject] facing the lens in medium close-up, camera static.","adapters":{"veo":"Over-the-shoulder shot, static camera: [subject B]'s shoulder blurred in the left third, [subject] facing the lens in medium close-up.","kling":"[subject] talks to [subject B]. Over-the-shoulder shot from behind [subject B], the shoulder blurred on the left, static camera, medium close-up on [subject].","seedance":"镜头1：近景，over-the-shoulder，固定镜头 — [subject B]'s shoulder out of focus in the left third, [subject] facing the lens.","hailuo":"Past [subject B]'s blurred shoulder, [subject] speaks toward the lens [Static shot].","luma":"Static camera, over the shoulder: [subject B]'s shoulder sits soft in the left third and [subject] faces the lens in medium close-up.","runway":"Medium close-up, over-the-shoulder angle from behind [subject B], locked-off camera on [subject] speaking; 50mm lens, shallow depth of field."},"links":[{"label":"eyecannndy — over the shoulder","url":"https://eyecannndy.com/technique/over-the-shoulder"},{"label":"shot.cafe — tag: over-the-shoulder","url":"https://shot.cafe/tag/over-the-shoulder"},{"label":"melies — over the shoulder frame","url":"https://melies.co/cinematic-techniques/framing/over-the-shoulder-frame"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/d44d1e83ad99/technique-over-the-shoulder.webp","w":960,"h":401,"blur":"data:image/webp;base64,UklGRtgAAABXRUJQVlA4IMwAAADQBACdASogAA4APtFUo0uoJKMhsAgBABoJYgCdMoAltRJhgyI2qZ7aGLS1kj2yAADKGiJio4fPAjCNSH1qDHBMvmQG8CHKnrdYgRDR7L+cMc7ZfQhoXKxYTu/ZGl8I4200NRgjONMM1XpifFPaC4k2XffSUkeCMn5/5ENa0M26zbHT/0KsesUzXvwQwoTzocCfTnnq3iHvC8P2iUvoiwDfrM+Zj2WNZJmtwVmK9H1yKalrZWgHr33kv+pFi4UL8rc2Q83dEQq3TAYgAAA=","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Over-the-shoulder: Thom framed past the soft back of Celia's head and shoulder on the canal bridge. Tears of Steel at 05:11.","bytes":30400,"addedAt":"2026-10-27"}},{"id":"pov-shot","group":"angle","name":"Point-of-view shot","aliases":["POV","Object POV","first-person view","subjective camera","第一人称","P.O.V. Shot","Point of View","First-Person"],"definition":"The frame shows exactly what a character (or an object) sees, often with their own hands entering the image.","use":"Puts the audience behind the character's eyes — discovery, horror, gameplay energy, unboxing.","misuse":"Showing the character's face breaks the illusion; perfectly smooth motion reads as a drone, not as a person.","clause":"Point-of-view shot from [subject]'s eye height: their hands enter the lower edge of the frame and reach for the door ahead, the view swaying gently with each step.","adapters":{"veo":"POV shot from [subject]'s eye height: their hands enter the lower edge of the frame reaching for a door ahead, with a gentle handheld sway.","kling":"First-person POV of [subject] reaching toward a door, hands entering the bottom of the frame, slight natural sway.","seedance":"镜头1：第一人称视角 — [subject]'s hands enter the lower frame and reach for the door ahead; slight natural sway.","hailuo":"First-person view as [subject] walks to a door, hands entering from the bottom of the frame [Push in], then reaching for the handle [Static shot].","luma":"POV, eye level: [subject]'s hands enter from the bottom edge and reach toward the door ahead, the view swaying gently with each step.","runway":"POV shot at eye height, handheld camera as [subject]'s hands enter the bottom of the frame and reach for the door ahead."},"links":[{"label":"eyecannndy — POV shot","url":"https://eyecannndy.com/technique/as-object"},{"label":"eyecannndy — first-person POV","url":"https://eyecannndy.com/technique/first-person-pov"},{"label":"shot.cafe — tag: pov","url":"https://shot.cafe/tag/pov"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/1efc28ff0a7b/technique-pov-shot.webp","w":960,"h":409,"blur":"data:image/webp;base64,UklGRuYAAABXRUJQVlA4INoAAACwBACdASogAA4APtFUo0uoJKMhsAgBABoJZACdMoR3CSAKEYXHvmt2pGV6g+UaAP7vV82KP3brNMOy+sStOHVcBnnda8vz+l2UifAPIGU0aBT+G6kZVT3X+w9YyDq767qJi/u6b9bedwadPxG6q5f9f37MJTlT9kHXyABXjCTe+tDX7uo0D99hAsZuX+lI6L5cqn3XX+ARvFHjGHPZCnY/KN8Hf3zUuaq7V1Zy9CVMkJA9yLJDLD4AY6FS7WYU/+w0KRX4pR8ElA3Dc9STDHjpPNLEZ3FP5YAAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/Sintel.2010.1080p.mkv","page":"https://durian.blender.org/","credit":"Sintel (2010) — © Blender Foundation | durian.blender.org — CC BY 3.0","rights":"cc-by","note":"Point of view: we see through Sintel's eyes as her own gloved hand reaches toward the wounded baby dragon on the rooftop. Sintel at 3:19.","bytes":85248,"addedAt":"2026-10-27"}},{"id":"aerial-view","group":"angle","name":"Aerial view","aliases":["Aerial","aerial angle","bird's-eye aerial","航拍视角"],"definition":"A vantage point high in the air, well above rooftops or treetops, that shows terrain and routes like a living map.","use":"Establishes geography, journeys and scale; a breather between dense scenes.","misuse":"Crane height never clears the skyline, so the map-like overview does not appear.","clause":"Aerial view high above [subject] crossing a landscape, the camera hovering steady at a 45-degree downward angle, [subject] small in frame with roads and terrain around them.","adapters":{"veo":"Aerial shot from high above, the camera hovering steady at a 45-degree downward angle; [subject] crosses the landscape small in frame among roads and terrain.","kling":"[subject] crosses a wide landscape. Aerial view from high above, steady hovering camera angled down, the subject small among roads and fields.","seedance":"镜头1：航拍视角，稳定悬停 — [subject] crosses the landscape small in frame among roads and terrain.","hailuo":"From high in the air, [subject] crosses the landscape far below [Static shot].","luma":"Aerial, steady hover at a 45-degree downward angle: [subject] crosses the landscape far below, small among roads and terrain.","runway":"Extreme wide shot, aerial angle 45 degrees down, steady hovering camera above [subject] crossing the landscape."},"links":[{"label":"eyecannndy — aerial","url":"https://eyecannndy.com/technique/aerial"},{"label":"shot.cafe — tag: aerial","url":"https://shot.cafe/tag/aerial"},{"label":"melies — aerial","url":"https://melies.co/cinematic-techniques/camera-movement/aerial"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/ea7fbdbd452a/technique-aerial-view.webp","w":960,"h":402,"blur":"data:image/webp;base64,UklGRp4AAABXRUJQVlA4IJIAAABwBACdASogAA4APtFWo0uoJKMhsAgBABoJagCdAGt8/A4s2eXb8YOmS3+IAAD+/e8ayA7bGGHe0ofcOD+y1kpxvwcxxdnCwYZauDfuIdjATEkuHKbSUVmWJZ7JMxv/7Y7+xGXd0Qp1sx4/fU+HNeMT/piLhmUb4bcuyYDDRJmBWGjA860VHBHXIvZKB5EhwpbQAA==","source":"https://commons.wikimedia.org/wiki/File:Spring_-_Blender_Open_Movie.webm","page":"https://studio.blender.org/projects/spring/","credit":"Spring (2019) — © Blender Foundation | studio.blender.org — CC BY 4.0","rights":"cc-by","note":"Aerial view: the camera flies high over sunlit ridges toward a valley filled with cloud, laying the terrain out like a map. Spring (2019) at 0:26.","bytes":48062,"addedAt":"2026-10-27"}},{"id":"wide-angle-lens","group":"lens","name":"Wide-angle lens","aliases":["Wide-angle lens","wide lens","short focal length","24mm","18mm"],"definition":"A short focal length that takes in a broad field of view and stretches depth: near things look big and far things recede fast.","use":"Puts the subject inside the space, adds energy to movement, exaggerates scale in tight interiors.","misuse":"Up close on a face it bulges noses and foreheads; the same framing on a long lens from far away looks flat rather than immersive.","clause":"Wide-angle lens, about 24mm, close to [subject] in a tight room: the walls and floor stretch away behind them and foreground objects loom large, camera static at chest height.","adapters":{"veo":"Wide-angle lens, static camera at chest height close to [subject] in a tight room; the walls and floor stretch away and foreground objects loom large.","kling":"[subject] stands in a tight room. Wide-angle view close to the subject, static camera, the room stretching away behind them.","seedance":"镜头1：wide-angle lens, 固定镜头 — close to [subject] in a tight room; the walls stretch away and foreground objects loom large.","hailuo":"Through a wide lens close to [subject], the tight room stretches away behind them [Static shot].","luma":"Static camera, wide-angle lens close to [subject] in a tight room: the walls and floor stretch away and nearby objects appear large.","runway":"Medium shot, chest height, locked-off camera close to [subject] in a tight room; 24mm wide-angle lens stretching the space."},"links":[{"label":"melies — 24mm wide","url":"https://melies.co/cinematic-techniques/lenses/24mm-wide"},{"label":"melies — 35mm moderate","url":"https://melies.co/cinematic-techniques/lenses/35mm-moderate"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/c6df801fad3d/technique-wide-angle-lens.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRtYAAABXRUJQVlA4IMoAAACwBQCdASogABIAPtFcp04oJSOiKAqpABoJZQC91a4A25HtP4iOTAws7RT0XgfS/rsMirdQEIAA/u65UA/bxg5LvvirXVezh4WbPdWyenCv3QUJXK6j0yu4XlI8MtYOChkkd9dfswhDx5MMgF/yBo6oyuAJXT94B6isNa6I6F/dlr5ILoSaDbQJEEU4vwsZ6IaUHx6UUbMUge0uH1ZzMvSyN/npLNn5tdBVfoNWCWPiOCuAsoW6YtC4IfH92hm2dghbaNhfQw2asSAA","source":"https://archive.org/download/ElephantsDream/ed_hd.avi","page":"https://orange.blender.org/","credit":"Elephants Dream (2006) — © Blender Foundation / Netherlands Media Art Institute | elephantsdream.org — CC BY 2.5","rights":"cc-by","note":"Wide-angle view of a small tiled room: Proog stands near the camera while the floor and ceiling rush away to the far wall and the side walls splay out at the frame edges — the space feels deeper than it is, yet the lines stay straight (unlike a fisheye). Elephants Dream at 7:53 (rendered camera).","bytes":33020,"addedAt":"2026-10-27"}},{"id":"telephoto-compression","group":"lens","name":"Telephoto compression","aliases":["Telephoto lens","long lens","long-focus lens","85mm","200mm","compression"],"definition":"A long focal length used from far away: the background seems pulled up close behind the subject and depth flattens.","use":"Stacks a crowd, traffic or a skyline tight behind a character; isolates a face in a busy street; makes distances feel collapsed.","misuse":"Cropping in digitally compresses nothing — the effect comes from camera distance, so a close camera with a crop still looks wide.","clause":"Telephoto shot, about 200mm, of [subject] from far down the street: the city behind them looms close and flat, the background soft, [subject] in medium shot, camera static.","adapters":{"veo":"Telephoto lens from far down the street, static camera: [subject] in medium shot while the city behind looms close and flattened, the background soft.","kling":"[subject] walks toward the camera on a busy street. Long-lens view from far away, static camera, the city stacked close behind them.","seedance":"镜头1：telephoto lens, 固定镜头 — [subject] in medium shot seen from far down the street; the skyline looms close and flat behind.","hailuo":"Seen through a long lens from far away, [subject] walks forward as the city looms close behind [Static shot].","luma":"Static camera, telephoto view from far down the street: [subject] in medium shot, the city stacked close and flat behind them in soft focus.","runway":"Medium shot, eye level, locked-off camera far down the street on [subject] walking forward; 200mm telephoto lens compressing the skyline behind."},"links":[{"label":"melies — compression","url":"https://melies.co/cinematic-techniques/lenses/compression"},{"label":"melies — 135mm telephoto","url":"https://melies.co/cinematic-techniques/lenses/135mm-telephoto"},{"label":"melies — 200mm long","url":"https://melies.co/cinematic-techniques/lenses/200mm-long"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/bd69ecd5b5f6/technique-telephoto-compression.webp","w":960,"h":409,"blur":"data:image/webp;base64,UklGRsgAAABXRUJQVlA4ILwAAACQBACdASogAA4APtFUo0uoJKMhsAgBABoJZgCdACB/oQz0fAMBPptxwpeX3AAA/cXlT7h0X7v97yl1NOn7NDCUR7SpvyNR4kHRwqMRrnJaO6qbulPpEntZIMCUsXsA4XqNTccGCO80Cu/tSaw2eSC5X0jQdfC7busWfELD+9lVNooVAw6R6us8zdTqNHppifLfDgxzguvlNp3iFKwsc499zrQeqaCgnVPn2Y2VuuDKMQYssMxef5ahJBAAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/Sintel.2010.1080p.mkv","page":"https://durian.blender.org/","credit":"Sintel (2010) — © Blender Foundation | durian.blender.org — CC BY 3.0","rights":"cc-by","note":"Long-lens look: the distant city behind Sintel stacks up into a flat, soft wall of roofs right at her shoulders — rows that are blocks apart look almost the same size, so depth collapses. Sintel at 4:58 (rendered camera).","bytes":23500,"addedAt":"2026-10-27"}},{"id":"macro-lens","group":"lens","name":"Macro lens","aliases":["macro","Macro lens","macro shot","probe lens"],"definition":"Focuses at very short distances so tiny things — droplets, fibers, mechanisms — become landscapes.","use":"Product texture, food and beauty details, insect-scale worlds, title backgrounds.","misuse":"A regular close-up of a small object cannot reach that magnification; macro with everything in focus looks fake, because real macro focus is razor thin.","clause":"Macro shot of [subject]'s surface texture filling the frame, a razor-thin plane of focus across the center and the surroundings dissolving into blur, camera static.","adapters":{"veo":"Macro lens, static camera, very shallow depth of field: [subject]'s surface texture fills the frame with a thin plane of focus across the center.","kling":"Macro close-up of [subject]'s surface texture, thin plane of focus, static camera, soft blurred surroundings.","seedance":"镜头1：macro 特写，固定镜头 — [subject]'s texture fills the frame, a razor-thin plane of focus across the center.","hailuo":"Magnified texture of [subject] fills the frame, a thin band of focus across the center [Static shot].","luma":"Static camera, macro lens: the surface texture of [subject] fills the frame with a razor-thin band of focus across the center.","runway":"Extreme close-up, locked-off camera on [subject]'s surface; 100mm macro lens with a razor-thin focal plane."},"links":[{"label":"eyecannndy — probe","url":"https://eyecannndy.com/technique/probe-lens"},{"label":"melies — macro","url":"https://melies.co/cinematic-techniques/lenses/macro"},{"label":"melies — probe lens","url":"https://melies.co/cinematic-techniques/lenses/probe-lens"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/39e797014765/technique-macro-lens.mp4","w":720,"h":302,"duration":3.6,"blur":"data:image/webp;base64,UklGRo4AAABXRUJQVlA4IIIAAABQBACdASogAA4APtFYpEwoJSOiMAgBABoJQBOmUABwPmFnfNWsXiLQ3JcAAP6D42JBkzhxoc7UxRMq8I3ZSxMrX3tbKiHzZmxtcrJpZkps+dQdsyhM4vV2RRXmiyogfnd4cU5C1bIER9/imOrvrvpNIXgEH1c59Zffw76PxWUvIAAA","source":"https://commons.wikimedia.org/wiki/File:Spring_-_Blender_Open_Movie.webm","page":"https://studio.blender.org/films/spring/","credit":"Spring (2019) — Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org — CC BY 4.0","rights":"cc-by","note":"Macro-scale shot: two melting icicles fill the frame, their ice texture crisp in a razor-thin plane of focus while droplets form and fall from the tips and everything behind dissolves into warm blur. Spring at 6:08–6:11.","bytes":54959,"addedAt":"2026-10-27"}},{"id":"fisheye-lens","group":"lens","name":"Fisheye lens","aliases":["Fisheye","fisheye","Fisheye lens effect","8mm fisheye"],"definition":"An extremely short lens that bends straight lines into curves toward the frame edges, often with a near-circular image.","use":"Skate and music-video energy, peephole or surveillance looks, comic exaggeration of a face pushed into the lens.","misuse":"A merely wide lens keeps lines straight, so the playful curvature never shows; heavy fisheye on serious drama tips into parody.","clause":"Fisheye shot of [subject] leaning toward the lens, straight lines bowing outward into a curved frame, camera static and very close.","adapters":{"veo":"Fisheye lens effect, static camera very close: [subject] leans toward the lens while straight lines bow outward into a curved frame.","kling":"[subject] leans into the camera. Fisheye lens view, strong curved distortion at the edges, static camera very close.","seedance":"镜头1：fisheye lens, 固定镜头 — [subject] leans toward the lens; straight lines bend outward into a curved frame.","hailuo":"Through a fisheye lens, [subject] leans toward the camera as the lines curve at the edges [Static shot].","luma":"Static camera very close, fisheye lens: [subject] leans toward the lens and straight lines bow outward into a curved, rounded frame.","runway":"Close-up, locked-off camera inches from [subject] leaning toward the lens; 8mm fisheye lens bending straight lines at the edges."},"links":[{"label":"eyecannndy — fisheye","url":"https://eyecannndy.com/technique/fisheye"},{"label":"melies — fisheye","url":"https://melies.co/cinematic-techniques/lenses/fisheye"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/b40a61a4cae4/technique-fisheye-lens.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRu4AAABXRUJQVlA4IOIAAACwBQCdASogABIAPtFaqE4oJSQiKAqpABoJYwC+SYzHW878o1AcpHNzvAd9le2lBwNfi0B+kgAA/u9Xhop++W6worTOhrsXiMQ5ti6Jza6ImHR07PzwD8i7BXBNouHs6OlBFHbzNIYP8YgtsbFxlrDoaNPYCO3lh1sclxfMH3OvNPHLXasdrAQdKvcmVVIqfu8kQvEcaHASWHMDZ64z1StUd6mY+Gng/4X2iDOuHDtjZppy2r3HTdrB5oyZMqU977KGXIVq8n6P3q96v6OOhP6VRjHk3uMVMAmXSnYtW8CtDTAA","source":"https://archive.org/download/ElephantsDream/ed_hd.avi","page":"https://orange.blender.org/","credit":"Elephants Dream (2006) — © Blender Foundation / Netherlands Media Art Institute | elephantsdream.org — CC BY 2.5","rights":"cc-by","note":"Rendered fisheye camera: Proog leans right into the lens, his nose ballooning while the ceiling pipe and wall edges bow into curves toward the frame edges. Elephants Dream at 7:22.","bytes":31428,"addedAt":"2026-10-27"}},{"id":"anamorphic-lens","group":"lens","name":"Anamorphic lens","aliases":["Anamorphic","anamorphic","Vintage Anamorphic","2x anamorphic","Anamorphic 2.0x lens","35mm anamorphic","scope lens"],"definition":"A lens that squeezes a wide field onto the sensor; unsqueezed it gives a roughly 2.39:1 frame, oval out-of-focus highlights and horizontal streak flares.","use":"Instant big-screen texture for night streets, sci-fi and romance; the streaks and oval bokeh signal 'feature film'.","misuse":"Letterboxing a spherical image copies the shape but not the oval bokeh, edge falloff or streaks; overdone blue streaks look like a filter.","clause":"Anamorphic look on [subject] on a night street in a 2.39:1 frame: oval bokeh from street lights behind them and a thin horizontal flare streak across the frame, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera, anamorphic look in a 2.39:1 frame: [subject] on a night street with oval bokeh from street lights and a thin horizontal flare streak.","kling":"[subject] stands on a night street. Medium close-up, static camera, anamorphic look with oval bokeh and a horizontal lens flare.","seedance":"镜头1：近景，固定镜头 — [subject] on a night street; shot on 35mm anamorphic, oval bokeh and a thin horizontal flare streak.","hailuo":"[subject] on a night street, oval bokeh and a horizontal flare streak across the widescreen frame [Static shot].","luma":"Static camera, medium close-up with an anamorphic look: [subject] on a night street, oval bokeh glowing behind and a thin horizontal flare across the frame.","runway":"Medium close-up, eye level, locked-off camera on [subject] on a night street; 40mm anamorphic lens, oval bokeh, horizontal flare streak."},"links":[{"label":"film-grab — search: anamorphic","url":"https://film-grab.com/?s=anamorphic"},{"label":"shot.cafe — tag: lens flare","url":"https://shot.cafe/tag/lens%20flare"},{"label":"melies — anamorphic","url":"https://melies.co/cinematic-techniques/lenses/anamorphic"}],"media":{"type":"none","reason":"No openly licensed shot shows the real anamorphic signature (oval out-of-focus highlights or horizontal streak flares). The 2.39:1 Blender films and Tears of Steel only have the wide frame shape, which the card itself calls a misleading substitute, and fake streaks would look like a filter. Synthetic is not an option either: oval bokeh can't be faked from flat footage.","searched":["Tears of Steel (2012, 2.39:1 live action): every shot sheet, plus an automatic scan for thin horizontal highlight streaks (only VFX HUD lines found)","Cosmos Laundromat (2015): sun-in-frame shots at 1:41–1:52, 5:44, 6:15 and the streak scan (plain glow, no streaks)","Charge (2022): bokeh crops of the candle room at 0:10 (round discs) and the streak scan","Sprite Fright (2021), Spring (2019), Coffee Run (2020): streak scan and night highlight shots","Sintel (2010) 1080p, Big Buck Bunny, Elephants Dream, Wing It! (2023), Singularity (2026): shot sheets","Agent 327: Operation Barbershop skipped (archive.org lists it CC BY-ND","Commons only has a making-of talk)","public-domain silents (Nosferatu, Sunrise, Faust): no anamorphic lenses before 1953"],"addedAt":"2026-10-27"}},{"id":"shallow-depth-of-field","group":"lens","name":"Shallow depth of field","aliases":["Shallow depth of field","shallow focus","bokeh","f/1.4","wide open"],"definition":"Only a thin slice of distance is sharp; everything in front of and behind it melts into soft blur.","use":"Separates the subject from a busy background, steers the eye, adds intimacy and a premium product feel.","misuse":"Even blur over the whole background, like a portrait-mode cutout, lacks the gradual falloff of real optics; a slice that is too thin misses the eyes.","clause":"Shallow depth of field on [subject]: the eyes tack sharp and the background a creamy blur of round highlights, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera, shallow depth of field: [subject]'s eyes sharp, the background a creamy blur of round highlights.","kling":"[subject] looks toward the light. Medium close-up, static camera, shallow depth of field, eyes sharp, background softly blurred into bokeh.","seedance":"镜头1：近景，固定镜头 — [subject]'s eyes in sharp focus; the background melts into soft round bokeh (shallow depth of field).","hailuo":"[subject]'s eyes are sharp while the background melts into soft round highlights [Static shot].","luma":"Static camera, medium close-up, shallow depth of field: [subject]'s eyes crisp, the background melting into soft round highlights.","runway":"Medium close-up, eye level, locked-off camera on [subject]; 85mm lens at f/1.4, eyes sharp, background a creamy blur."},"links":[{"label":"shot.cafe — tag: bokeh","url":"https://shot.cafe/tag/bokeh"},{"label":"eyecannndy — shallow focus","url":"https://eyecannndy.com/technique/focal-focus"},{"label":"melies — shallow focus","url":"https://melies.co/cinematic-techniques/effects/shallow-focus"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/8313a5b0c7ac/technique-shallow-depth-of-field.webp","w":960,"h":401,"blur":"data:image/webp;base64,UklGRtQAAABXRUJQVlA4IMgAAAAQBQCdASogAA4APtFYpEwoJSOiMAgBABoJQBdmUAnAQimtzMUDaH0wmCdQnfjDiRIAAP5rMQsThbc4x/azV3qLzB9Fp/4W4Tj5FrWsBZPO3mwCmwnays0lt3NN+FX808n5lRCWZEZXbdDlGck1JiPsu23+VDS/GUG3IGwpRix0wAeqRxAPRViXoo4HD6oOujVdKx+GWz1ARaghM0MIPhMwIVMBWTrKjR83Io1nUPxher1lhDzfLqAFlEdBPK92xdvlnoLRvQAAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Live action, real lens: Thom's eyes are sharp while the canal houses and trees behind him melt into soft blur. Tears of Steel at 5:17.","bytes":16798,"addedAt":"2026-10-27"}},{"id":"deep-focus","group":"lens","name":"Deep focus","aliases":["Deep depth of field","deep focus","f/11","f/16","everything in focus"],"definition":"Near and far planes are sharp at the same time, so one frame can hold action in the foreground and the background together.","use":"Staging in depth — a character in front, a threat or a reveal behind — without a cut; documentary clarity; architecture.","misuse":"A wide lens alone does not guarantee it in low light, and many video models add background blur by default unless deep focus is asked for.","clause":"Deep focus: [subject] sharp in the left foreground while a second figure stands equally sharp at the far end of the hall, every plane crisp, camera static at eye level.","adapters":{"veo":"Deep depth of field, static camera at eye level: [subject] sharp in the left foreground and a figure equally sharp at the far end of the hall.","kling":"[subject] in the foreground and a distant figure at the end of the hall, both in sharp focus. Static camera, eye level, deep focus.","seedance":"镜头1：固定镜头 — [subject] in the left foreground and a figure at the far end of the hall, both crisp; everything in focus.","hailuo":"[subject] in the foreground and a figure at the far end of the hall are both sharp [Static shot].","luma":"Static camera at eye level, deep depth of field: [subject] crisp in the left foreground and a second figure equally crisp at the far end of the hall.","runway":"Wide shot, eye level, locked-off camera; 24mm lens at f/11, [subject] sharp in the left foreground and a figure sharp at the far end of the hall."},"links":[{"label":"melies — deep focus","url":"https://melies.co/cinematic-techniques/effects/deep-focus"},{"label":"grokfilm — deep focus","url":"https://grokfilm.app/#t/deep-focus"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/4a6838a4f0f5/technique-deep-focus.webp","w":960,"h":800,"blur":"data:image/webp;base64,UklGRrgAAABXRUJQVlA4IKwAAADQBQCdASogABoAPsVQo0unpKMhsAwA8BiJaQAAW+vxOijLlpKGpI4gxCuSfnxab6EOiim6GLYAAP72qGV6w9yRMr/VY0RN1FPOHJTr3cqMi4sMWLdve6GSjX4ZaVG7k/rY+eodOGa1TOjVqm1dVS2UOs525x7sehWXbvPsv/l2leUFHy2NLsc0O7zL2BAW1a8KMblxCUWLZ/4bQ6v+S8Nn1rFIPfmKJ5PQgAAA","source":"https://archive.org/download/sunrise-a-song-of-two-humans-f.-w.-murnau-1927","page":"https://archive.org/details/sunrise-a-song-of-two-humans-f.-w.-murnau-1927","credit":"Sunrise: A Song of Two Humans (1927), F. W. Murnau / Fox Film — public domain","rights":"public-domain","note":"Deep focus on real film: the husband stands sharp in the dark foreground room while his wife, far out in the sunlit yard beyond the door, is just as sharp. Sunrise (1927) at 22:53.","bytes":14304,"addedAt":"2026-10-27"}},{"id":"rack-focus","group":"lens","name":"Rack focus","aliases":["Rack focus","focus pull","pull focus","Focus Change","移焦","Focal shift"],"definition":"Focus slides during the shot from one plane to another, moving attention while the camera itself stays still.","use":"Reveals a second subject, links cause and effect (a glass, then the person), or turns a background threat into the point.","misuse":"Cutting between two focus states is not a rack; a zoom changes the framing as well, which a rack never does.","clause":"Rack focus: camera static on [subject] sharp in the foreground, then focus slowly travels over three seconds to a figure in the background, ending with [subject] soft and the figure sharp.","adapters":{"veo":"Static camera, rack focus: [subject] sharp in the foreground, then focus shifts slowly to a figure in the background, ending with the figure sharp and [subject] soft.","kling":"[subject] in the foreground and a figure behind. Static camera, focus slowly shifts from [subject] to the figure in the background, ending on the figure sharp.","seedance":"镜头1：固定镜头，移焦，画面焦点从前景平滑转移到背景 — [subject] sharp in the foreground, then focus moves to the figure behind; ends with the figure sharp.","hailuo":"[subject] sharp in the foreground, then the focus slides to a figure in the background [Static shot].","luma":"Static camera, rack focus: [subject] starts sharp in the foreground, then focus glides to a figure in the background, which ends crisp while [subject] softens.","runway":"Close-up, locked-off camera; rack focus slowly shifts from [subject] in the foreground to a figure in the background, which ends in sharp focus."},"links":[{"label":"eyecannndy — rack focus","url":"https://eyecannndy.com/technique/focal-shift"},{"label":"eyecannndy — focal shift","url":"https://eyecannndy.com/technique/focal-shift"},{"label":"melies — rack focus","url":"https://melies.co/cinematic-techniques/effects/rack-focus"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/53df4370f4dc/technique-rack-focus.mp4","w":720,"h":302,"duration":3.6,"blur":"data:image/webp;base64,UklGRpIAAABXRUJQVlA4IIYAAAAQBACdASogAA4APtFcpkyoJSOiMAgBABoJYgCdMoADTtVDNt33MTH1oAD+9ozK32qwORs/UOAdo2i8xejOh+o6JDc76OYrVGWhbNEpUj0HODLLmaZ5xt/A+Xf2mR2FEqlIv9jNGgB8lHAqtAnEHAr/H/m5btJkyYLjujR3uG0h5zdkyBAAAA==","source":"https://commons.wikimedia.org/wiki/File:Charge_-_Blender_Open_Movie-full_movie.webm","page":"https://studio.blender.org/films/charge/","credit":"Charge (2022) — © Blender Foundation (Blender Studio) | studio.blender.org — CC BY 4.0","rights":"cc-by","note":"Static camera: focus starts on the charging stand in the foreground, then pulls to the old man working among candles in the background, leaving the stand soft. Charge at 0:11.0–0:14.6.","bytes":36840,"addedAt":"2026-10-27"}},{"id":"tilt-shift","group":"lens","name":"Tilt-shift","aliases":["tilt-shift lens","miniature effect","fake miniature","Diorama","Miniatures"],"definition":"A tilted plane of focus keeps only a narrow band sharp, making real places look like scale models.","use":"Toy-town city views, playful transitions, whimsical travel montages.","misuse":"Ordinary shallow focus from street level does not miniaturize; the effect needs a high vantage point and a sharp horizontal band.","clause":"Tilt-shift view of [subject] from a high vantage point: a narrow horizontal band of focus across the middle, the top and bottom blurred, colors slightly rich, camera static, the scene reading as a miniature model.","adapters":{"veo":"High-angle view, static camera, tilt-shift lens: [subject] in a narrow horizontal band of focus, the top and bottom blurred like a miniature model.","kling":"[subject] seen from a high rooftop. Tilt-shift miniature look, narrow band of focus, blurred top and bottom, static camera.","seedance":"镜头1：俯视，固定镜头 — [subject] from a high vantage point; tilt-shift miniature look with a narrow horizontal band of focus.","hailuo":"From a high rooftop, [subject] looks like a toy model in a thin band of sharp focus [Static shot].","luma":"Static camera, high angle, tilt-shift lens: [subject] sits in a narrow horizontal band of focus, the top and bottom softly blurred like a model town.","runway":"Wide shot, high angle, locked-off camera on [subject]; tilt-shift lens with a narrow horizontal focus band, miniature-model look."},"links":[{"label":"eyecannndy — tilt shift","url":"https://eyecannndy.com/technique/tilt-shift"},{"label":"eyecannndy — miniature","url":"https://eyecannndy.com/technique/model"},{"label":"melies — tilt shift","url":"https://melies.co/cinematic-techniques/lenses/tilt-shift"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f416ca52b381/technique-tilt-shift.mp4","w":720,"h":600,"duration":4,"blur":"data:image/webp;base64,UklGRtQAAABXRUJQVlA4IMgAAABwBQCdASogABoAPtFao02oJSMiKA1RABoJaQALBOFH923LmInR0fjlKskLbcCJdsjgjf7QAP7dsOJekEcU8MwQf6im+D2gPs6HPzd173jKe0C5q+mE9VzaFuOaYjG2usGADmT4LtcrCfo4mjmEnRBlq5pzbN3DGo+Db1Aqikw6La0sXdZI5dEiugHUZtS0xzVoJEqhtEmexPfhQYbMEy03S2NdBHlMVIGqWjPUFXmxFuDLeb7M0HzSee9fHhyKenhA5RKu0VgAAA==","source":"Sunrise (1927) at 35:06–35:10 (archive.org, public domain) + ffmpeg graduated blur band (gblur + maskedmerge)","page":"https://archive.org/details/sunrise-a-song-of-two-humans-f.-w.-murnau-1927","credit":"Synthetic demo on Sunrise (1927), F. W. Murnau / Fox Film — public-domain footage","rights":"generated","note":"Synthetic demo, not a real tilt-shift lens: a fake tilt-shift blur band rendered with ffmpeg over a public-domain high-angle shot of a city square in Sunrise (1927, 35:06–35:10). Only a narrow horizontal band through the tram and the crowd stays sharp; the buildings above and the street below melt into blur, so the real square reads like a model railway.","bytes":129122,"addedAt":"2026-10-27"}},{"id":"split-diopter","group":"lens","name":"Split diopter","aliases":["split diopter effect","split-field diopter","two-plane focus"],"definition":"A half-lens over part of the frame keeps a near object and a far object sharp at once, with a soft seam between them.","use":"Holds two faces in focus at very different distances; tension between a foreground story and a background one.","misuse":"Deep focus sharpens the whole frame evenly; the diopter look depends on the blurred seam and the stark gap in distance.","clause":"Split-diopter shot: [subject]'s face sharp in the left foreground and a second figure sharp far behind on the right, a soft vertical seam between them, camera static.","adapters":{"veo":"Split diopter effect, static camera: [subject]'s face sharp in the left foreground and a distant figure sharp on the right, a soft blurred seam between them.","kling":"[subject] in the left foreground, a figure far behind on the right, both sharp, split diopter look with a soft seam, static camera.","seedance":"镜头1：固定镜头 — split diopter: [subject]'s face sharp in the left foreground and a figure far behind on the right also sharp, a soft blurred seam between them.","hailuo":"[subject]'s face on the left and a distant figure on the right are both sharp, a soft seam between them [Static shot].","luma":"Static camera, split diopter look: [subject]'s face crisp in the left foreground and a distant figure crisp on the right, joined by a soft vertical seam.","runway":"Medium close-up, locked-off camera; split-diopter lens keeping [subject] in the left foreground and a distant figure on the right both in focus."},"links":[{"label":"eyecannndy — split diopter","url":"https://eyecannndy.com/technique/split-diopter"},{"label":"shot.cafe — tag: split diopter","url":"https://shot.cafe/tag/split%20diopter"},{"label":"melies — split diopter","url":"https://melies.co/cinematic-techniques/lenses/split-diopter"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/229e236c2a98/technique-split-diopter.webp","w":960,"h":402,"blur":"data:image/webp;base64,UklGRoIAAABXRUJQVlA4IHYAAADQAwCdASogAA4APtE4sFMoIiWjmAEAGgliAJ0ygANULbT8dVTyI4AA/vaMyZSn7HR6YXoy9MO6s3MtZ+AgohGhpuvdro+vySInz0s8+GQCincU0KOJx7YGn97u6KjWqqA/f9ax9vh3d16+RR6FcdPS8UbAAAAA","source":"Charge (2022) frames at 0:10.6 and 0:14.5 (https://commons.wikimedia.org/wiki/File:Charge_-_Blender_Open_Movie-full_movie.webm) joined with ffmpeg maskedmerge","page":"https://studio.blender.org/films/charge/","credit":"Synthetic demo on Charge (2022) — © Blender Foundation (Blender Studio) | studio.blender.org — CC BY 4.0","rights":"generated","note":"Synthetic demo, not a real split-diopter lens: two frames of the same locked-off rack-focus shot in Charge (0:10.6 focused near, 0:14.5 focused far) joined along a soft vertical seam, so the charging stand at left and the old man at the bench on the right are both sharp — what a split-field diopter records in one exposure.","bytes":15428,"addedAt":"2026-10-27"}},{"id":"static-shot","group":"camera-move","name":"Static shot","aliases":["Static","static camera","locked-off","[Static shot]","fixed camera","tripod shot","固定镜头","Locked-Down Shot","Static Locked-Off","Fixed Cam"],"definition":"The camera does not move at all; only the subject and the world inside the frame move.","use":"Lets performance or action carry the shot, builds tension through stillness, gives product demos a stable stage; essential for clean cuts and composites.","misuse":"Leaving the move unstated invites most video models to add a drift; 'static' contradicted by another move word produces a wobbly compromise.","clause":"Static shot: the camera stays perfectly still on a tripod framing [subject] in medium shot for the whole clip; only [subject] moves, and the final frame matches the first.","adapters":{"veo":"Static shot, fixed camera: [subject] in medium shot; the frame stays perfectly still for the whole clip while only [subject] moves.","kling":"[subject] gestures as they speak. Static camera, medium shot, no camera movement, steady frame from start to end.","seedance":"镜头1：固定镜头 — [subject] in medium shot moves inside a frame that never changes; keep the camera completely still.","hailuo":"[subject] gestures as they speak in medium shot [Static shot].","luma":"Static camera: [subject] in medium shot moves within a frame that stays perfectly still from the first moment to the last.","runway":"Medium shot, eye level. The locked-off camera remains perfectly still as [subject] gestures; the final frame matches the first."},"links":[{"label":"eyecannndy — fixed camera","url":"https://eyecannndy.com/technique/fixed-camera"},{"label":"melies — static","url":"https://melies.co/cinematic-techniques/camera-movement/static"},{"label":"grokfilm — static shot","url":"https://grokfilm.app/#t/static-shot"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/67ee0d15a5db/technique-static-shot.mp4","w":720,"h":300,"duration":5,"blur":"data:image/webp;base64,UklGRtIAAABXRUJQVlA4IMYAAABQBACdASogAA4APtFUo0uoJKMhsAgBABoJZACsBrLbQiYZ1wt2YBANLWtoAPuAr69poTJL4xVR5kpSTALDvHwFZuPhQDGcbk6VQfyCtrDoEqWFGoFVe7nIRyPtwlf9bWP2TjE7yJPKL98TkbiE78JNvQXI2mfosyFzxr8sMT2rHmDxn8ctq0b5XGRS4gvxuCnfJdrGH8ZuF+VZi23H8llSEwgh6MdspALXzOHaB9kCZTZZrcJDIX+3XU8jovQUuUo+ieXBAAA=","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Live action, locked-off wide two-shot on an Amsterdam bridge: the frame and railings never move while Thom turns and Celia swings round with her robot arm. Tears of Steel at 0:29.5–0:34.5.","bytes":122440,"addedAt":"2026-10-27"}},{"id":"pan","group":"camera-move","name":"Pan","aliases":["pan right","pan left","Pan Right","Pan Left","[Pan right]","[Pan left]","horizontal pan","摇"],"definition":"The camera swivels horizontally on a fixed point, the way a head turns; it rotates but does not travel.","use":"Follows action across a space, connects two subjects in one shot, or reveals what lies beside the first subject.","misuse":"Trucking moves the camera body and produces parallax; a pan stays put, so near and far objects slide across the frame together.","clause":"Pan right: the camera rotates slowly from left to right on a fixed tripod, starting on [subject] at frame left and ending on the doorway at the right of the room, which settles at frame center.","adapters":{"veo":"Slow pan right on a fixed tripod: starting on [subject] at the left of the room, the camera turns to settle on the doorway at the right, centered.","kling":"[subject] waits at the left of the room. Slow, stable pan right across the room, no sudden motion, ending on the doorway centered in frame.","seedance":"镜头1：缓慢向右摇镜头 — starts on [subject] at the left of the room and turns smoothly to end on the doorway, centered; one camera move only.","hailuo":"[subject] waits on the left side of the room [Pan right], ending on the doorway [Static shot].","luma":"Pan right, slowly and smoothly: the camera turns from [subject] at the left of the room to the doorway on the right, which settles at the center of the frame.","runway":"Wide shot, eye level, slow pan right from [subject] at the left of the room; the camera settles on the doorway, now centered."},"links":[{"label":"eyecannndy — pan","url":"https://eyecannndy.com/technique/pan"},{"label":"melies — pan","url":"https://melies.co/cinematic-techniques/camera-movement/pan"},{"label":"grokfilm — pan shot","url":"https://grokfilm.app/#t/pan-shot"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/be6b08e9fbd3/technique-pan.mp4","w":720,"h":600,"duration":6,"blur":"data:image/webp;base64,UklGRt4AAABXRUJQVlA4INIAAAAQBQCdASogABoAPtFep0+oJKMiKAgBABoJaQAIGcH0bRn5CO6m9jwwVQ/jYB+0nGTAAP7SJ7RKE7pbw7lkAxGN073gdw5Asrv9ZyXB6H4daGZhCRF23cLKdI6TffpTD7SZvzNqqBWZR9ws6ppdzhcMJog2HSlfZX0bB2f447Ajd/qXgjHufzPfGEkzqQkVp00Hh+r9gfywgSXUkvmaUGXaASf7cuyt+kuL+KuWc1wGNU71eCfnihWMpQqZm99Al6KOQldMX4fUQZXEz5F++2qeAAA=","source":"https://archive.org/download/sunrise-a-song-of-two-humans-f.-w.-murnau-1927","page":"https://archive.org/details/sunrise-a-song-of-two-humans-f.-w.-murnau-1927","credit":"Sunrise: A Song of Two Humans (1927), F. W. Murnau / Fox Film — public domain","rights":"public-domain","note":"Pan right on real film: the camera holds its spot on a forest road, then swivels right to find the trolley stop just as the tram pulls in and the wife runs to meet it. Sunrise (1927) at 32:53–32:59.","bytes":219008,"addedAt":"2026-10-27"}},{"id":"tilt","group":"camera-move","name":"Tilt","aliases":["tilt up","tilt down","Tilt up","Tilt Down","[Tilt up]","[Tilt down]","上摇"],"definition":"The camera pivots vertically on a fixed point, looking up or down without changing height.","use":"Reveals height — a building, a person from boots to face — or moves attention from a clue on the ground to the person above it.","misuse":"A pedestal or crane raises the whole camera and changes perspective; a tilt only changes where the lens points.","clause":"Tilt up: the camera pivots slowly upward from [subject]'s boots to their face while staying at the same height, ending on a centered medium close-up of the face.","adapters":{"veo":"Slow tilt up on a fixed camera: starting at [subject]'s boots and pivoting upward to end on a medium close-up of the face, centered.","kling":"[subject] stands still. Camera slowly tilts up from the boots to the face, steady, ending on a medium close-up of the face.","seedance":"镜头1：缓慢上摇镜头 — the camera pivots from [subject]'s boots up to the face and ends on a centered medium close-up.","hailuo":"[subject] stands still, seen from the boots [Tilt up], ending on the face [Static shot].","luma":"Tilt up, slowly: the camera pivots from [subject]'s boots to the face, ending on a centered medium close-up.","runway":"Close-up, eye level, slow tilt up from [subject]'s boots; the camera settles on a medium close-up of the face, centered."},"links":[{"label":"eyecannndy — tilt","url":"https://eyecannndy.com/technique/tilt"},{"label":"melies — tilt","url":"https://melies.co/cinematic-techniques/camera-movement/tilt"},{"label":"grokfilm — tilt shot","url":"https://grokfilm.app/#t/tilt-shot"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/05a23828bc38/technique-tilt.mp4","w":720,"h":302,"duration":6,"blur":"data:image/webp;base64,UklGRq4AAABXRUJQVlA4IKIAAAAwBACdASogAA4APtFYpkwoJSOiMAgBABoJQBYdjP/+LqM6ueaCus1QSwAA/vkrPPPB+Hzdfhf38nrw0zxpAyv8zSr2HrBRvtOI5h+X10/mxZrH5IR87uf6kV//CtEVrfnuffygNkF0Wv8FXiovVCfyJs1KVHLlKfso0JiJjSkGMmT6xT6gFdFR8PqWS4dRFSptfR8uRXWdgecT8KdQwTTAAAA=","source":"https://commons.wikimedia.org/wiki/File:Spring_-_Blender_Open_Movie.webm","page":"https://studio.blender.org/films/spring/","credit":"Spring (2019) — © Blender Foundation (Blender Studio) | studio.blender.org — CC BY 4.0","rights":"cc-by","note":"Tilt up: the camera stays put and pivots upward from the girl hugging her dog at the foot of the cliff, up the wall of plants, to the sunlit summit against the sky. Spring at 6:49.0–6:55.0.","bytes":242922,"addedAt":"2026-10-27"}},{"id":"dolly-in","group":"camera-move","name":"Dolly in","aliases":["push in","push-in","Dolly In","Super Dolly In","Push In","[Push in]","track in","推","Dolly Shot","Dolly"],"definition":"The whole camera travels forward toward the subject; the background shifts with parallax as the frame tightens.","use":"Draws the audience into a realization, raises intensity during a line, gives a product reveal a sense of approach.","misuse":"A zoom-in magnifies without moving, so depth stays flat and the shot feels mechanical rather than intimate.","clause":"Dolly in: the camera travels slowly and steadily forward toward [subject], from a medium shot to a close-up over the whole clip, and stops on [subject]'s face centered in frame.","adapters":{"veo":"Slow dolly in, medium shot to close-up: the camera physically moves toward [subject], who stays still at frame center as the background shifts with parallax; the move settles on a held close-up of the face.","kling":"[subject] stands still in [scene]. Camera slowly pushes in on [subject] to emphasize the expression, steady, ending on a close-up of the face.","seedance":"镜头1：缓慢推镜头 — the camera moves forward toward [subject] from a medium shot to a close-up and stops on the face, centered; one camera move only.","hailuo":"[subject] stands still in [scene] [Push in], holding on a close-up of the face [Static shot].","luma":"Push in, slowly and steadily: the camera moves toward [subject] from a medium shot to a close-up and comes to rest on the face, centered.","runway":"Medium shot, eye level, slow dolly push-in over 5 seconds toward [subject]; the move ends on a close-up of the face, centered."},"links":[{"label":"eyecannndy — dolly shot","url":"https://eyecannndy.com/technique/dolly-shot"},{"label":"melies — dolly in","url":"https://melies.co/cinematic-techniques/camera-movement/dolly-in"},{"label":"grokfilm — dolly-in","url":"https://grokfilm.app/#t/dolly-in"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f6e518dfc180/technique-dolly-in.mp4","w":720,"h":306,"duration":6,"blur":"data:image/webp;base64,UklGRvIAAABXRUJQVlA4IOYAAACwBACdASogAA4APtFWpEuoJKOhsAgBABoJZgCdLoAEJcl27eroMKKVdbVPQAGAAP7PK1Az08PPpUmJmXwVR/q7uCB5H19uiXcXMxPj/kF7Y9GOrcS72irNjbv/2CpPnmXqWL4KHtbb4jU4bn6LF3bcwTMzVFv2p/YXz3OP/hrxL9hGgS/W6fmHr/S+zL9xdpGeHrwbiFoU+n+buPtTYl3UZTHh1YLOm3vGJ9TaFnQIKPrBkYBuLfCMICHGpfyOJux2oe17hD0ItIXDgfyPvObUSi7VyYY7RWg4t+OPx7E8pn/GsSrAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/Sintel.2010.1080p.mkv","page":"https://durian.blender.org/","credit":"Sintel (2010) — © Blender Foundation | durian.blender.org — CC BY 3.0","rights":"cc-by","note":"Dolly in: the camera travels from a medium shot of Sintel to a tight close-up of her face; the ruined tower slides out of frame and the background grows far less than she does (parallax, not a zoom). Sintel at 5:42.6–5:48.6.","bytes":147455,"addedAt":"2026-10-27"}},{"id":"dolly-out","group":"camera-move","name":"Dolly out","aliases":["pull out","pull back","Dolly Out","Super Dolly Out","Pull Out","[Pull out]","track out","拉","后拉"],"definition":"The camera travels backward, away from the subject, widening the frame and uncovering the surroundings.","use":"Reveals context — the subject was not alone, or is tiny in the scene — ends a scene with release, isolates a character.","misuse":"Zooming out leaves the camera where it was, so the reveal lacks the parallax that makes the space feel real.","clause":"Dolly out: the camera travels slowly backward away from [subject], starting on a close-up of the face and ending on a wide shot that reveals the empty room around them.","adapters":{"veo":"Slow dolly out: starting on a close-up of [subject]'s face, the camera moves backward to end on a wide shot revealing the empty room around them.","kling":"Start with a close-up of [subject], then the camera slowly pulls back to reveal the empty room around them, ending on a wide shot.","seedance":"镜头1：缓慢后拉镜头 — from a close-up of [subject]'s face the camera moves backward to a wide shot that reveals the empty room.","hailuo":"Close on [subject]'s face [Pull out], revealing the empty room around them [Static shot].","luma":"Pull out, slowly and smoothly: the camera moves back from a close-up of [subject]'s face to a wide view of the empty room around them.","runway":"Close-up, eye level, slow dolly pull-back from [subject]'s face; the shot reveals the empty room and ends wide."},"links":[{"label":"eyecannndy — dolly shot","url":"https://eyecannndy.com/technique/dolly-shot"},{"label":"melies — dolly out","url":"https://melies.co/cinematic-techniques/camera-movement/dolly-out"},{"label":"grokfilm — dolly-out","url":"https://grokfilm.app/#t/dolly-out"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/370a373d2a24/technique-dolly-out.mp4","w":720,"h":300,"duration":4.8,"blur":"data:image/webp;base64,UklGRtwAAABXRUJQVlA4INAAAADwBACdASogAA4APtFWo0uoJKMhsAgBABoJZACdMoAlshgSCYyOxJfRY12UAxC4wOQA/un1ylSUm0KytwACWvBpiHoOV+BNSIA6EK9ZTeaQy1iPiFzQoB22GTNIe0n4Iod57muFPw9793xCKKKnCz38PnKbRGXd8VwAOPkba3S7NoXa72cgqqqxT3PlacPyHGPBaOrmQxqeOMAioUFjxyfvjL7j5rAUtwlUY+QCvdGwIPHt3xvDS8lmg0ESUGlkxmAdcMFX+03dlcGV7ADOAAAA","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Live action dolly out: the camera backs away from Barley on the phone, so the desk lamp and the clutter slide into the foreground and the room opens up around him and the soldier. Tears of Steel at 4:50.3–4:55.1.","bytes":187013,"addedAt":"2026-10-27"}},{"id":"truck","group":"camera-move","name":"Truck","aliases":["truck left","truck right","Dolly Left","Dolly Right","Truck Left","Truck Right","[Truck left]","[Truck right]","crab","lateral tracking","移","横移","Trucking"],"definition":"The camera body moves left or right along a line across the scene, so near objects stream past faster than distant ones.","use":"Glides along a row — shelves, a lineup, a counter — adds depth through parallax, or keeps pace with someone crossing the frame.","misuse":"A pan only rotates, so the layered parallax that makes a truck feel dimensional never appears.","clause":"Truck left: the camera slides slowly from right to left on a line parallel to [subject], foreground objects passing faster than the background, ending with [subject] centered in medium shot.","adapters":{"veo":"Slow truck left: the camera moves sideways parallel to [subject], foreground objects passing faster than the background, and ends with [subject] centered in medium shot.","kling":"[subject] stands behind a counter. Camera slowly trucks left alongside them, smooth and steady, ending with [subject] centered in medium shot.","seedance":"镜头1：缓慢向左横移镜头 — the camera moves sideways parallel to [subject], the foreground passing faster than the background, ending with [subject] centered.","hailuo":"[subject] stands behind a counter [Truck left], ending centered in medium shot [Static shot].","luma":"Truck left, slowly: the camera glides sideways past [subject], nearby objects sliding by quickly, and settles with [subject] centered in medium shot.","runway":"Medium shot, eye level, camera trucks left slowly parallel to [subject]; foreground objects slide past and the move ends with [subject] centered."},"links":[{"label":"eyecannndy — trucking","url":"https://eyecannndy.com/technique/trucking"},{"label":"melies — trucking","url":"https://melies.co/cinematic-techniques/camera-movement/trucking"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/6843e1104e92/technique-truck.mp4","w":720,"h":300,"duration":4.3,"blur":"data:image/webp;base64,UklGRsAAAABXRUJQVlA4ILQAAABQBACdASogAA4APtFUo0uoJKMhsAgBABoJQBOgMYxZ4OqBOxltnbi7hfAAAP69p9get3j2Bs+T1zyz0OLcEjFceJt7Hu8foeii2K1nKhywLj9IH9sqEQbpr8IiBhbOxciF9cL4bKUYjHxkxkpl5ZZhmldAVAxTVeSIlqXt2JmhnpfDybk33kN4lYecyORf3FbnfhRe7nhXR236TaSnpPpVlWMKo7F9tEhGMY/hyvBCBPEAAAA=","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Live action truck: the camera slides sideways along an Amsterdam bridge; the out-of-focus lamp post and stone parapet up close stream past much faster than the canal houses behind, as a digital Thom materialises. Tears of Steel at 4:18.0–4:22.3.","bytes":209576,"addedAt":"2026-10-27"}},{"id":"pedestal","group":"camera-move","name":"Pedestal","aliases":["pedestal up","pedestal down","Pedestal Up","Pedestal Down","[Pedestal up]","[Pedestal down]","Elevator","boom up"],"definition":"The whole camera is raised or lowered on a vertical line, like an elevator, while the lens keeps pointing straight ahead.","use":"Rises from a tabletop detail to the face behind it, or sinks from eye level to a hand; smooth reveals in product and interview setups.","misuse":"Tilting only changes the angle, not the height, so the perspective of the scene never changes.","clause":"Pedestal up: the camera rises slowly and vertically without tilting, from the cup on the table to [subject]'s face behind it, ending level on a medium close-up.","adapters":{"veo":"Slow pedestal up: the camera rises straight up with its angle held level, from the cup on the table to [subject]'s face behind it, ending on a level medium close-up.","kling":"[subject] sits behind a table with a cup. Camera slowly rises straight up from the cup to [subject]'s face, steady, ending on a medium close-up.","seedance":"镜头1：slow pedestal up (camera rises vertically) — from the cup on the table to [subject]'s face behind it, ending on a level medium close-up.","hailuo":"A cup on the table, [subject] sitting behind it [Pedestal up], ending on their face [Static shot].","luma":"Pedestal up, slowly and smoothly: the camera rises straight up from the cup on the table to [subject]'s face, finishing level on a medium close-up.","runway":"Close-up, eye level, slow pedestal up from the cup on the table; the camera rises straight up to a level medium close-up of [subject]."},"links":[{"label":"eyecannndy — pedestal","url":"https://eyecannndy.com/technique/pedestal"},{"label":"melies — pedestal up","url":"https://melies.co/cinematic-techniques/camera-movement/pedestal-up"},{"label":"grokfilm — pedestal shot","url":"https://grokfilm.app/#t/pedestal-shot"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/70d5107d1871/technique-pedestal.mp4","w":720,"h":302,"duration":2.9,"blur":"data:image/webp;base64,UklGRvgAAABXRUJQVlA4IOwAAACQBQCdASogAA4APtFUo0uoJKMhsAgBABoJaACdMoKP+PoJu5PejBXlxtW+x86gksyOn9vF4AD+5naXP1QdIZYs4Wj89R0KtL1m9AfrLT8MfO+5nbJaaPwCKo/1mUhr6XsyvtJRzYDPCyp/ZU/va5kp9yw9HXiWdXsd5gsodkujoZ6xR2TB/dCDbiLR4XI7TgqEGsaW1DDdtvXrFZqmgqxI0QQ4r9hWmrteL4i/mYFk5at26+qFSkgb7og6MQWTETiul0ZzNyMkN14lrdykFOvkkw5UyBM2BaxZWOHZRfxedwemw0smrhahpYAAAA==","source":"https://commons.wikimedia.org/wiki/File:Sprite_Fright_-_Blender_Open_Movie-full_movie.webm","page":"https://studio.blender.org/films/sprite-fright/","credit":"Sprite Fright (2021) — © Blender Foundation (Blender Studio) | studio.blender.org — CC BY 4.0","rights":"cc-by","note":"Pedestal up: the camera rises straight up from Ellie sitting on the forest floor among the others' legs to the group's faces, the lens kept level the whole way. Sprite Fright at 2:40.95–2:43.85.","bytes":160143,"addedAt":"2026-10-27"}},{"id":"zoom-in","group":"camera-move","name":"Zoom in","aliases":["Zoom In","Zoom Out","[Zoom in]","[Zoom out]","optical zoom","slow zoom","YoYo Zoom","Slow zoom in","Slow zoom out","Fast zoom in","Fast zoom out","Zoom Shot"],"definition":"The focal length lengthens during the shot, enlarging the image while the camera itself stays in place, so depth relationships never change.","use":"Draws attention in a detached, observational or retro way — documentary and 1970s textures, slow creeping tension.","misuse":"Models often render a dolly when asked to 'zoom'; when depth and parallax matter ask for a dolly, and keep the zoom for flat magnification.","clause":"Slow zoom in: the camera holds its position while the lens gradually magnifies [subject] from a wide shot to a medium shot, perspective unchanged, ending with [subject] centered.","adapters":{"veo":"Slow zoom in (lens zoom, camera fixed in place): [subject] grows from a wide shot to a medium shot with perspective unchanged, ending centered.","kling":"[subject] stands in a plaza. Static camera position with a slow lens zoom in, steady, from wide to medium shot, ending with [subject] centered.","seedance":"镜头1：slow lens zoom in from a fixed position — [subject] grows from a wide shot to a medium shot with no camera travel; ends centered.","hailuo":"[subject] stands in a plaza [Zoom in], ending centered in medium shot [Static shot].","luma":"Zoom in, gradually: the camera holds its position while the lens magnifies [subject] from a wide shot to a medium shot, ending centered.","runway":"Wide shot, eye level, slow optical zoom in on [subject] from a fixed camera position; the zoom ends on a centered medium shot."},"links":[{"label":"eyecannndy — zoom in","url":"https://eyecannndy.com/technique/zoom-in"},{"label":"eyecannndy — zoom","url":"https://eyecannndy.com/technique/zoom-in"},{"label":"melies — slow zoom in","url":"https://melies.co/cinematic-techniques/camera-movement/slow-zoom-in"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a825ea6fb288/technique-zoom-in.mp4","w":720,"h":300,"duration":3.3,"blur":"data:image/webp;base64,UklGRrAAAABXRUJQVlA4IKQAAABwBACdASogAA4APtFWpEuoJKOhsAgBABoJZACdB3gB0ILcnpY8Uab7uQjkgAD9n9e1WstimpX+doOcsr4mQvhar7WmN1fqEwl4kJG4mIV4EstqQ4wg62bEjcOWmlQjYPiCeuz60Lt+Rdv/n4ZRtgTPz/11+lV6CWU5ndvXYVXvNH5K9riTLlWSX6tFKKEfKyi2BUBroOqhmZItMdOtn0ygkcAAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Digital zoom (generated) on Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"generated","note":"Synthetic demo: a 2× digital zoom rendered on a locked-off Tears of Steel shot (2:20.0–2:23.2). The frame enlarges toward the sniper's eye while the balusters, the sniper and the hazy city behind keep exactly the same relationship (no parallax), as with a real zoom lens. No clean real zoom-in was found in the open films searched.","bytes":73951,"addedAt":"2026-10-27"}},{"id":"crash-zoom","group":"camera-move","name":"Crash zoom","aliases":["Crash Zoom In","Crash Zoom Out","Rapid Zoom In","Rapid Zoom Out","snap zoom","smash zoom","Eyes In","Mouth In","Eating Zoom"],"definition":"A violent, split-second zoom that jumps the framing from wide to tight (or the reverse).","use":"Comic punchlines, sudden realizations, action beats, hooks in the first second of a social video.","misuse":"A fast dolly or a hard cut to a close-up lacks the elastic snap of the lens; several in a row turn into noise.","clause":"Crash zoom in: from a wide shot the lens snaps toward [subject] in under half a second, landing on an extreme close-up of the eyes, then the frame holds still.","adapters":{"veo":"Crash zoom: from a wide shot, an extremely fast lens zoom snaps onto [subject]'s eyes in under half a second and holds on the extreme close-up.","kling":"[subject] realizes something. Quick crash zoom from a wide shot to an extreme close-up of the eyes, then the camera holds still.","seedance":"镜头1：crash zoom — from a wide shot the lens snaps onto [subject]'s eyes in under half a second, then holds on the extreme close-up.","hailuo":"[subject] realizes something [Zoom in] in a sudden, very fast snap to the eyes, then holds [Static shot].","luma":"Zoom in, very fast: from a wide shot the lens snaps onto [subject]'s eyes in an instant and holds on the extreme close-up.","runway":"Wide shot, eye level, crash zoom in on [subject]: an extremely fast zoom lands on an extreme close-up of the eyes and holds."},"links":[{"label":"melies — crash zoom in","url":"https://melies.co/cinematic-techniques/camera-movement/crash-zoom-in"},{"label":"grokfilm — crash zoom","url":"https://grokfilm.app/#t/crash-zoom"},{"label":"melies — eating zoom","url":"https://melies.co/cinematic-techniques/camera-movement/eating-zoom"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/628025d232b1/technique-crash-zoom.mp4","w":720,"h":404,"duration":2.5,"blur":"data:image/webp;base64,UklGRoQAAABXRUJQVlA4IHgAAADQBACdASogABIAPtFUokuoJKMhsAgBABoJQBOmUABpftnd0DuKsS2wxLLoImhzAAD+8TLUxXMohlAS/QiU1xZZpcQ4+k/Gsk2Bs9D++WTjGBBLIOJJ6vQbRbyL1mXtoOPcGDK1koneq+qUJIiOk9I/wZzoJO/Q4AA=","source":"https://commons.wikimedia.org/wiki/File:WING_IT!_-_Blender_Open_Movie-full_movie.webm","page":"https://studio.blender.org/films/wing-it/","credit":"WING IT! (2023) — © Blender Foundation (Blender Studio) | studio.blender.org — CC BY 4.0","rights":"cc-by","note":"Crash zoom: a wide of the cat by the hatch, then the lens snaps in within a few frames to a tight shot of the dog's face in the porthole, with zoom blur on the move. WING IT! at 0:38.8–0:41.3.","bytes":39753,"addedAt":"2026-10-27"}},{"id":"dolly-zoom","group":"camera-move","name":"Dolly zoom","aliases":["Vertigo effect","Vertigo effect (dolly zoom)","Hitchcock zoom","Dolly Zoom In","Dolly Zoom Out","dolly_zoom","希区柯克变焦","contra-zoom","trombone shot"],"definition":"Camera travel and lens zoom run in opposite directions at matched rates, so the subject holds its size while the space behind it swells or collapses.","use":"A gut-punch of realization, vertigo or dread: the world lurches while the person stays pinned in place.","misuse":"A straight push-in or a crop-in leaves the background's proportions untouched, so the shot reads as emphasis, not as the floor dropping away.","clause":"Dolly zoom: the camera creeps toward [subject] while the lens widens at a matching rate; [subject] keeps a constant medium close-up size while the room behind them stretches away and deepens, ending with the background at its farthest.","adapters":{"veo":"Vertigo effect (dolly zoom): the camera dollies slowly toward [subject] while the lens zooms out; [subject] holds a medium close-up size as the room behind stretches away, ending with the background at its farthest.","kling":"[subject] freezes in shock. Dolly zoom: camera slowly moves toward [subject] while the lens zooms out, the face keeping its size as the background stretches away.","seedance":"镜头1：希区柯克变焦 — the camera moves toward [subject] while the lens widens; [subject] keeps a medium close-up size as the background stretches away; one camera move only.","hailuo":"[subject] freezes in shock [Push in,Zoom out], the face keeping its size while the background stretches away.","luma":"Dolly zoom, slowly: the camera glides toward [subject] while the lens widens, the face holding its size as the background stretches into the distance. API: concepts [{\"key\": \"dolly_zoom\"}].","runway":"Medium close-up, eye level, slow dolly zoom on [subject]: the camera pushes in while the lens zooms out, keeping the face at one size as the background stretches away."},"links":[{"label":"eyecannndy — dolly zoom","url":"https://eyecannndy.com/technique/dolly-zoom"},{"label":"melies — dolly zoom","url":"https://melies.co/cinematic-techniques/camera-movement/dolly-zoom"},{"label":"grokfilm — dolly zoom","url":"https://grokfilm.app/#t/dolly-zoom"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/4f143a9bb249/technique-dolly-zoom.mp4","w":720,"h":404,"duration":5.2,"blur":"data:image/webp;base64,UklGRsQAAABXRUJQVlA4ILgAAABwBQCdASogABIAPtFYpEuoJSOhsAgBABoJZgC1CPWGAbqB1gAEFCb02GpIEUoKznF4W0yIAM40r0ZpeM+4U2c1wxgZurlCA6i1L2bv5ogNBFs6TqmF5e69Cw/4JtcM96Ao6DUUGXOm93b/BHS2VIx7khD7eDbYXQOytrNXWj1PjzJ/LEmnP8RLPFrX0auIKY9mS5BibUlxeqv2dYyDbOOtTOUeJrXrX6xVqlF6Cln8AHJX5RsnEQAA","source":"Rendered locally with three.js r185 — grey-box scene, no external assets","credit":"Generated by varg (three.js grey-box demo)","rights":"generated","note":"Synthetic demo (three.js grey-box): the camera dollies in from 20 m to 3 m while the lens widens from about 8° to 50°, so the figure keeps exactly the same size while the avenue of columns behind it stretches away and the city opens up. No real openly licensed shot of this move was found in the films searched (Blender open movies, Tears of Steel, Sunrise).","bytes":88389,"addedAt":"2026-10-27"}},{"id":"crane-up","group":"camera-move","name":"Crane up","aliases":["Crane Up","Crane Down","Jib up","Jib down","Crane Over The Head","jib shot","boom shot","crane shot","Crane Over"],"definition":"The camera rises on an arm, usually tilting down to keep the subject, lifting the view from ground level to high above.","use":"Opening or closing statements: a character left small in a big world, a crowd revealed, a location established with grandeur.","misuse":"A pedestal keeps the angle level and stays within human height; a drone climb lacks the arc and the held subject of a crane.","clause":"Crane up: starting at eye level on [subject], the camera rises slowly high above while tilting down to keep them centered, ending on a high-angle wide shot with [subject] small in the middle of the square.","adapters":{"veo":"Crane shot starting at eye level on [subject] and rising slowly high above while tilting down, ending on a high-angle wide shot with [subject] small in the middle of the square.","kling":"Start with an eye-level medium shot of [subject] in the square, then the camera slowly cranes up and tilts down to reveal the whole square, ending on [subject] small at the center.","seedance":"镜头1：crane up — starting at eye level on [subject], the camera rises high while tilting down and ends on a high-angle wide shot, [subject] small at the center of the square.","hailuo":"[subject] stands in the square [Pedestal up,Tilt down], ending high above with [subject] small at the center [Static shot].","luma":"Crane up, slowly: starting at eye level on [subject], the camera rises high above the square while tilting down, finishing on a wide high angle with [subject] small at the center.","runway":"Medium shot, eye level, slow crane up from [subject] while tilting down; the shot ends on a high-angle wide view of the square with [subject] small at the center."},"links":[{"label":"melies — crane up","url":"https://melies.co/cinematic-techniques/camera-movement/crane-up"},{"label":"grokfilm — crane shot","url":"https://grokfilm.app/#t/crane-shot"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/84afbcdbd677/technique-crane-up.mp4","w":720,"h":302,"duration":6,"blur":"data:image/webp;base64,UklGRowAAABXRUJQVlA4IIAAAAAwBACdASogAA4APtFipk0oJiOiMAgBABoJYwCdAGtt0gS3f8m/bDvc2wAA/vwDBE/cMRdJ3xDb+AAs3Zb7eIPRKdrycuWhPhHuwQt+39Za64DDu8zgGBygNXzIOspFDOdzZeal9ixd+0+KQm1siflzX+20hxN4u2iKjSzGSQAAAA==","source":"https://commons.wikimedia.org/wiki/File:Sprite_Fright_-_Blender_Open_Movie-full_movie.webm","page":"https://studio.blender.org/films/sprite-fright/","credit":"Sprite Fright (2021) — © Blender Foundation (Blender Studio) | studio.blender.org — CC BY 4.0","rights":"cc-by","note":"Crane up: starting at ground level on the marching sprites, the camera lifts up through the bushes until it clears the treetops and rests on the hills at sunset. Sprite Fright at 9:06.8–9:12.8.","bytes":211300,"addedAt":"2026-10-27"}},{"id":"orbit","group":"camera-move","name":"Orbit","aliases":["360 Orbit","Orbit Left","Orbit Right","camera orbit","circle shot","360 shot","环绕","Orbit clockwise","Orbit counterclockwise","360-Degree Orbit","360-Degree Shot"],"definition":"The camera travels a full 360-degree loop around the subject at a fixed distance, keeping it centered while the background wheels past.","use":"Hero moments, reunions, product showcases, a character caught in a spinning world.","misuse":"A partial arc never closes the loop; spinning the subject on a turntable keeps the background still, which reads as a product spin rather than a camera move.","clause":"Orbit: the camera circles [subject] clockwise in one full 360-degree loop at a slow, steady pace and constant distance, keeping them centered in medium shot, ending back on the front view where it began.","adapters":{"veo":"Slow 360-degree orbit around [subject], clockwise at a constant distance, [subject] centered in medium shot, ending on the front view where it began.","kling":"[subject] stands still in [scene]. Camera orbits slowly around [subject] in a full circle, steady distance, keeping them centered, ending on the front view.","seedance":"镜头1：缓慢环绕镜头 (360°) — the camera circles [subject] clockwise at a constant distance, [subject] centered in medium shot, finishing on the front view.","hailuo":"[subject] stands still at the center [Truck left,Pan right] as the camera circles all the way around, returning to the front view [Static shot].","luma":"Orbit right, slowly and smoothly: the camera circles [subject] in a full loop at a constant distance, keeping them centered, and completes on the front view.","runway":"Medium shot, eye level, slow clockwise orbit around [subject]: the camera circles a full 360 degrees at a constant distance and ends on the front view."},"links":[{"label":"melies — orbit 360","url":"https://melies.co/cinematic-techniques/camera-movement/orbit-360"},{"label":"grokfilm — 360-degree shot","url":"https://grokfilm.app/#t/360-degree-shot"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/77fe62db5854/technique-orbit.mp4","w":720,"h":404,"duration":6,"blur":"data:image/webp;base64,UklGRqQAAABXRUJQVlA4IJgAAABQBACdASogABIAPtFUokuoJKMhsAgBABoJYwDJEywBPJKZSag8uGIuMZbAAP5pIETem425U4yPxfGvSvaqV2bVXx9v8Txy4gDyXGmIibwTAep50qZSnFybX7Tp5AMBQsxjd4o1PJHv4w1Cogzayzcn8MFlnupNHA3m8T0QG659udvV4ZsbpPEvhYRhaYDV1IvEq0q6UAAAAA==","source":"Rendered locally with three.js r185 — grey-box scene, no external assets","credit":"Generated by varg (three.js grey-box demo)","rights":"generated","note":"Synthetic demo (three.js grey-box): the camera circles the figure a full 360° at a constant distance, keeping it centred while the ring of columns and the buildings wheel past behind. No real openly licensed shot of this move was found in the films searched (Blender open movies, Tears of Steel, Sunrise).","bytes":169587,"addedAt":"2026-10-27"}},{"id":"arc-shot","group":"camera-move","name":"Arc shot","aliases":["Arc Left","Arc Right","Arc shot","half orbit","partial orbit","Robo Arm","Bolt Cam","Arc"],"definition":"A partial orbit: the camera swings through a quarter to a half circle around the subject and comes to rest at a new angle.","use":"Reveals a new side of the subject or a new background behind them; turns from a face to what the face is looking at.","misuse":"Asking for an orbit makes many models complete the loop; panning from one spot only rotates and never changes the angle on the subject.","clause":"Arc right: the camera travels a slow 90-degree arc around [subject] from their front to their left profile at a constant distance, ending on the profile with the view they face revealed beyond them.","adapters":{"veo":"Arc shot: the camera travels a slow 90-degree arc to the right around [subject], from the front to the left profile, ending with the view they face revealed beyond.","kling":"[subject] looks out at the city. Camera slowly arcs to the right around [subject], about 90 degrees, ending on the profile with the city revealed behind.","seedance":"镜头1：缓慢环绕 90° to the right (partial orbit) — the camera curves around [subject] from the front to the left profile and ends with the view they face revealed.","hailuo":"[subject] looks out at the city [Truck right,Pan left] for a quarter turn, ending on their profile [Static shot].","luma":"Arc right, slowly: the camera curves a quarter circle around [subject] from the front to the left profile, finishing with the city revealed beyond them.","runway":"Medium shot, eye level, slow arc right around [subject], about 90 degrees; the camera ends on the profile with the city revealed behind."},"links":[{"label":"eyecannndy — arc movement","url":"https://eyecannndy.com/technique/arc-movement"},{"label":"eyecannndy — bolt cam","url":"https://eyecannndy.com/technique/bolt-cam"},{"label":"melies — arc","url":"https://melies.co/cinematic-techniques/camera-movement/arc"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f954f14ec5ea/technique-arc-shot.mp4","w":720,"h":306,"duration":6,"blur":"data:image/webp;base64,UklGRoYAAABXRUJQVlA4IHoAAADwAwCdASogAA4APtFUo0uoJKMhsAgBABoJZQCdAGlfI4nCikVdgCgAAP79+y/hkWBg1LNgSs2/e68yPf+q04ddV7VmNIfUGqDONMzcw5rxFQiGhglzOasVefQul8neyT5H9ZFaLxbNK9Tz5jP00XhNFgBP9nBuwfcAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/Sintel.2010.1080p.mkv","page":"https://durian.blender.org/","credit":"Sintel (2010) — © Blender Foundation | durian.blender.org — CC BY 3.0","rights":"cc-by","note":"Arc shot: the camera swings around Sintel in a blizzard, from her hooded profile to a three-quarter front view; she stays centred while the ice wall and rock spires sweep past behind her. Sintel at 0:35.2–0:41.2.","bytes":139137,"addedAt":"2026-10-27"}},{"id":"tracking-shot","group":"camera-move","name":"Tracking shot","aliases":["[Tracking shot]","follow shot","Head Tracking","Car Chasing","leading shot","跟","跟拍"],"definition":"The camera travels with a moving subject, holding a steady distance from behind, beside or in front of them.","use":"Keeps the audience with a character in motion — walking, running, driving; builds momentum and continuity.","misuse":"Panning from a fixed spot loses the subject as they move away; letting the distance drift makes the follow feel unsteady.","clause":"Tracking shot: the camera follows [subject] from behind at a constant distance as they walk down the corridor at a steady pace, keeping them centered in medium shot, ending as they stop at the far door.","adapters":{"veo":"Tracking shot following [subject] from behind at a constant distance as they walk down the corridor, centered in medium shot, ending as they stop at the far door.","kling":"[subject] walks down a long corridor. Camera tracks forward behind them at a steady distance, smooth, ending as they stop at the far door.","seedance":"镜头1：跟拍镜头 from behind — the camera follows [subject] down the corridor at a constant distance, centered in medium shot, until they stop at the far door.","hailuo":"[subject] walks down a long corridor [Tracking shot], stopping at the far door [Static shot].","luma":"Tracking shot, smoothly: the camera follows [subject] from behind at a constant distance down the corridor and settles as they stop at the far door.","runway":"Medium shot, eye level, steady tracking shot following [subject] from behind down the corridor; the shot ends as they stop at the far door."},"links":[{"label":"eyecannndy — tracking","url":"https://eyecannndy.com/technique/tracking"},{"label":"eyecannndy — locked on","url":"https://eyecannndy.com/technique/locked-on"},{"label":"melies — tracking","url":"https://melies.co/cinematic-techniques/camera-movement/tracking"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0e63f49dcc17/technique-tracking-shot.mp4","w":720,"h":300,"duration":6,"blur":"data:image/webp;base64,UklGRsoAAABXRUJQVlA4IL4AAABQBACdASogAA4APtFUo0uoJKMhsAgBABoJQBdggQHLSMgh1jnqKZt7wC4gAPzO/NZckjPdWxnz5vpFLSgaO8yXYQQc/WuI6VIqs5xQvYr+zSAJdSwEFceEY+nz9s9OT3eDwm9vlwnFW44+ZFOkHk17Afqw4qsm53YHqaCpc/+e+RheDX7+khuFP3vOsYrX4V41moE82aH7xEHQOPRJg5j6sUtzBmC0/9MeDm+VbEW8jz6si04jRw03zBZyYAAA","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Live action tracking shot: the camera travels beside Thom as he walks across an Amsterdam bridge, holding him in profile at the same size while railings and canal houses stream past behind. Tears of Steel at 4:34.0–4:40.0.","bytes":239557,"addedAt":"2026-10-27"}},{"id":"handheld","group":"camera-move","name":"Handheld","aliases":["Handheld","[Shake]","shaky cam","Handheld or shaky cam","documentary camera","Wiggle","手持镜头","手持晃动"],"definition":"An operator carries the camera, so the frame breathes, sways and reacts with small human imperfections.","use":"Documentary truth, urgency, chaos, intimacy in UGC and vlogs; makes generated footage feel captured rather than rendered.","misuse":"Violent shake hides the subject and tires the viewer; a smooth gimbal float is not handheld.","clause":"Handheld shot: the operator holds [subject] in medium close-up with gentle, natural sway and small reframes as they talk, drifting slightly but always returning to the face, which ends centered.","adapters":{"veo":"Handheld camera, medium close-up: gentle natural sway and small reframes on [subject] as they talk, always returning to the face, which ends centered.","kling":"[subject] talks quickly. Handheld camera, medium close-up, gentle natural shake, subtle reframing, documentary feel, ending on the face centered.","seedance":"镜头1：手持镜头，轻微手持晃动 — medium close-up on [subject] talking, small natural reframes that keep returning to the face, ending centered.","hailuo":"[subject] talks quickly in medium close-up [Shake], ending centered on the face [Static shot].","luma":"Handheld camera, gently swaying: medium close-up on [subject] as they talk, small natural reframes keeping the face in view and ending centered on it.","runway":"Medium close-up, eye level, handheld documentary camera on [subject] talking; gentle organic shake and loose framing that ends centered on the face."},"links":[{"label":"eyecannndy — shaky cam","url":"https://eyecannndy.com/technique/shaky-cam"},{"label":"melies — handheld","url":"https://melies.co/cinematic-techniques/camera-movement/handheld"},{"label":"grokfilm — handheld shot","url":"https://grokfilm.app/#t/handheld-shot"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/92d41218fa13/technique-handheld.mp4","w":720,"h":300,"duration":5.5,"blur":"data:image/webp;base64,UklGRuQAAABXRUJQVlA4INgAAACwBACdASogAA4APtFapkyoJSOiMAgBABoJQBOgZYJzZLvqT7/Rml+p8XqCcLgAAP7wiq4USqlyb8clm4f9U7HPzCYfIP9Ou1WrVQy0NBWauzVz3TtXtuL7PeCZ6bpjIzA9XChRLRNC+hQGvAE0VbQVd0vp8w92fiMhb5ypxtnNI7rFf7akrPCb8ffZKIzGxgUavmnfMNos2bHDjnca7hw8/PpMJP1+IljlHmNeRlTsqmgQrIeQJAWI3lEiSkv0bvePJSgiIPi+l13XqVgdOXzwEGX3jDeEAAA=","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Live action handheld close-up: Thom with a robot gun pressed to his cheek; the frame drifts and bobs with the operator's breathing (watch the street lamp behind him). Tears of Steel at 6:33.0–6:38.5.","bytes":87610,"addedAt":"2026-10-27"}},{"id":"whip-pan","group":"camera-move","name":"Whip pan","aliases":["Whip Pan","Whip pan","swish pan","flash pan","Whip pan right","Whip pan left"],"definition":"A pan executed so quickly that everything between the first and last framing streaks into blur.","use":"Snaps attention between two characters, energizes comedy and action, hides a cut.","misuse":"A merely quick pan stays legible and lacks the streak; whipping without a clear landing frame looks like an error.","clause":"Whip pan: holding on [subject] at frame left, the camera whips right in a fraction of a second, the image streaking into horizontal blur, and lands sharply on the second person by the window, centered.","adapters":{"veo":"Whip pan: from [subject] at the left, the camera whips right in a fraction of a second, streaking into horizontal blur, and lands sharply on the person by the window, centered.","kling":"[subject] on the left, another person by the window. Quick whip pan from [subject] to the window, strong motion blur, landing sharp and centered on the second person.","seedance":"镜头1：快速向右摇 (whip pan) — from [subject] the camera whips right with heavy motion blur and lands sharp on the person by the window, centered.","hailuo":"[subject] glances at the window [Pan right] in a sudden, very fast swing with motion blur, landing on the person by the window [Static shot].","luma":"Pan right, very fast: from [subject] the camera whips across in a streak of motion blur and lands crisply on the person by the window, centered.","runway":"Medium shot, eye level, whip pan right from [subject]: a very fast pan that streaks into motion blur and lands on the person by the window, centered."},"links":[{"label":"eyecannndy — whip pan","url":"https://eyecannndy.com/technique/whip-pan"},{"label":"melies — whip pan","url":"https://melies.co/cinematic-techniques/camera-movement/whip-pan"},{"label":"grokfilm — whip pan","url":"https://grokfilm.app/#t/whip-pan"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/ff89f853fd10/technique-whip-pan.mp4","w":720,"h":404,"duration":3.5,"blur":"data:image/webp;base64,UklGRrYAAABXRUJQVlA4IKoAAABQBQCdASogABIAPtFYo0uoJSMhsAgBABoJZQC7ACHgMaLqmfHdA1bcQDGGP/AJnH4sZZAA/vKjvPqWqvnDsFJpXoGrn1hF7NcjZjgoFHYIYqvK1hf6wswePlSa8Dl9bu8O/NmcakQEJurADoIg7Krndw0NzksT03UP9a7b0BF7BUCzvKAke+b/mXPyyXY+QTlN0XA3hrS5pMaPKgsHJ8cDbX9bZAzojAAAAA==","source":"https://commons.wikimedia.org/wiki/File:WING_IT!_-_Blender_Open_Movie-full_movie.webm","page":"https://studio.blender.org/films/wing-it/","credit":"WING IT! (2023) — © Blender Foundation (Blender Studio) | studio.blender.org — CC BY 4.0","rights":"cc-by","note":"Whip pan: the camera holds on the home-made plane in the barn, then whips sideways so fast that the barn smears into streaks for a few frames, and lands on the red barn door with the chickens. WING IT! at 0:20.7–0:24.2.","bytes":67303,"addedAt":"2026-10-27"}},{"id":"drone-flyover","group":"camera-move","name":"Drone flyover","aliases":["Aerial Drone","Aerial Pullback","drone shot","Aerial shot or drone shot","flyover","aerial glide","Helicopter Shot","Drone pull back"],"definition":"A smooth flying move high over a landscape or a city — gliding forward, rising or pulling back with a steady horizon.","use":"Opens or closes a piece with scale; travel and destination videos, real estate, brand establishing shots.","misuse":"An FPV drone dives and banks aggressively; a flyover should glide with a level horizon.","clause":"Drone flyover: the camera glides slowly forward high over the coastline toward [subject] standing on the cliff edge, the horizon level and steady, ending on a high wide view with [subject] small at frame center.","adapters":{"veo":"Aerial drone shot gliding slowly forward high over the coastline toward [subject] on the cliff edge, horizon level, ending on a high wide view with [subject] small at the center.","kling":"[subject] stands on a cliff edge. Aerial drone shot slowly gliding forward over the coastline, steady horizon, ending on a wide view with [subject] small in the center.","seedance":"镜头1：航拍视角，缓慢推镜头向前飞行 — high over the coastline toward [subject] on the cliff edge, horizon level; ends wide with [subject] small at the center.","hailuo":"High above the coastline, flying toward [subject] on the cliff edge [Push in], ending wide with [subject] small at the center [Static shot].","luma":"Aerial drone, gliding forward slowly and smoothly high over the coastline toward [subject] on the cliff edge, the horizon level, ending wide with [subject] small at the center.","runway":"Extreme wide shot, aerial angle, slow forward drone flight over the coastline toward [subject] on the cliff edge; the horizon stays level and the shot ends with [subject] small at the center."},"links":[{"label":"eyecannndy — aerial","url":"https://eyecannndy.com/technique/aerial"},{"label":"melies — aerial pullback","url":"https://melies.co/cinematic-techniques/camera-movement/aerial-pullback"},{"label":"grokfilm — helicopter shot","url":"https://grokfilm.app/#t/helicopter-shot"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/e52d55b84610/technique-drone-flyover.mp4","w":720,"h":306,"duration":6,"blur":"data:image/webp;base64,UklGRpwAAABXRUJQVlA4IJAAAAAwBACdASogAA4APtFWpEuoJKOhsAgBABoJZQCw7CIJvQSE6aU/P3atKgAA/pfZT10AJmy4gDltSYfDT6qJisDWIKuS9kpQbdlShsvGgHERHsCT3Hqi7eA4ylEdA8BM81XRDgQUgqI1Wo2Wgn3PVgDuuLjE+dvXg4J+/F9hDUjECC91uYryAqJ6qnYEmeuigAA=","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/Sintel.2010.1080p.mkv","page":"https://durian.blender.org/","credit":"Sintel (2010) — © Blender Foundation | durian.blender.org — CC BY 3.0","rights":"cc-by","note":"Aerial flyover: the opening shot glides high over an icy mountain ridge and sinks toward the snowfield, where a tiny Sintel walks trailing footprints. Sintel at 0:23.0–0:29.0.","bytes":100675,"addedAt":"2026-10-27"}},{"id":"fpv-drone","group":"camera-move","name":"FPV drone dive","aliases":["FPV Drone","FPV","first-person-view drone","drone dive","racing drone","俯冲"],"definition":"A fast, agile drone flown from the pilot's view that dives, banks and threads gaps in one continuous rush.","use":"Adrenaline openers, venue and real-estate fly-throughs, sports, music videos.","misuse":"A slow cinematic glide lacks the speed and banking; chopping the path into pieces kills the one-take rush.","clause":"FPV drone dive: the camera rushes forward and dives off the rooftop edge toward [subject] in the street below, banking slightly, then levels out at head height and settles on [subject] in medium shot.","adapters":{"veo":"FPV drone shot: rushing forward and diving off the rooftop edge toward [subject] in the street below with a slight bank, then leveling at head height to settle on [subject] in medium shot.","kling":"[subject] waits in the street below. Fast FPV drone flight diving off a rooftop, slight banking, leveling out at head height, ending on [subject] in medium shot.","seedance":"镜头1：FPV俯冲 — the camera rushes off the rooftop edge, dives toward [subject] in the street with a slight bank, levels at head height and ends on [subject] in medium shot.","hailuo":"From a rooftop edge, rushing down toward [subject] in the street below [Push in,Pedestal down], leveling out at head height [Static shot].","luma":"Aerial drone, fast and fluid: the camera dives off the rooftop edge toward [subject] in the street, banks gently, levels at head height and settles on a medium shot.","runway":"Wide shot, FPV drone flight diving fast off a rooftop toward [subject] in the street; the drone banks slightly, levels at head height and ends on a medium shot."},"links":[{"label":"eyecannndy — FPV drone","url":"https://eyecannndy.com/technique/fpv-drone"},{"label":"melies — fpv drone","url":"https://melies.co/cinematic-techniques/camera-movement/fpv-drone"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d7bf776b8d41/technique-fpv-drone.mp4","w":720,"h":404,"duration":5.8,"blur":"data:image/webp;base64,UklGRsIAAABXRUJQVlA4ILYAAACwBACdASogABIAPtFcqE4oJSQiKAqpABoJZwDGfywCoKWEEmIH6+43MgAeXM1wAP3idPcZNfuU3aQc644giRYwQXskhaXVRVS1pyQMfvbJJHf81nACJTPoTie+XzdSfOmVpBwDEakkPN3MfjtdfA9hCHfbIUCZfQjgRiyNtRLbZR1visPXlpM6KQyx2L4X44z49WtzvNhrRmh//zTOSdpckmC39FqyHF/b3ubFeTtQg1lHFlAAAA==","source":"Rendered locally with three.js r185 — grey-box scene, no external assets","credit":"Generated by varg (three.js grey-box demo)","rights":"generated","note":"Synthetic demo (three.js grey-box city): a wide-lens FPV run tips off a rooftop, dives down the facades into the street, skims low, banks hard into a cross street and threads under a skybridge in one continuous rush. No real openly licensed shot of this move was found in the films searched (Blender open movies, Tears of Steel, Sunrise).","bytes":635358,"addedAt":"2026-10-27"}},{"id":"bullet-time","group":"camera-move","name":"Bullet time","aliases":["Bullet Time","frozen moment","time slice","子弹时间"],"definition":"Time nearly stops while the camera keeps moving around the frozen action, revealing one instant from many angles.","use":"Peak moments — a jump, a splash, an impact — turned into spectacle; product splashes and sports.","misuse":"Plain slow motion slows the camera as well; an orbit around a moving subject lacks the frozen instant.","clause":"Bullet time: [subject] freezes mid-jump with droplets suspended in the air while the camera arcs 180 degrees around them at normal speed, ending on the opposite side with [subject] still frozen.","adapters":{"veo":"Bullet time: [subject] frozen mid-jump with droplets suspended in the air while the camera arcs 180 degrees around them at normal speed, ending on the opposite side.","kling":"[subject] frozen mid-jump, water droplets suspended. Camera arcs 180 degrees around the frozen moment, smooth and steady, ending on the opposite side.","seedance":"镜头1：子弹时间 — [subject] frozen mid-jump, droplets hanging in the air; the camera curves 180° around them and ends on the opposite side.","hailuo":"[subject] freezes mid-jump with droplets suspended in the air [Truck left,Pan right], ending on the far side [Static shot].","luma":"Orbit left, smoothly: [subject] hangs frozen mid-jump among suspended droplets as the camera curves 180 degrees around them, ending on the opposite side.","runway":"Medium shot, eye level, bullet-time arc: [subject] frozen mid-jump with suspended droplets while the camera travels 180 degrees around them, ending on the opposite side."},"links":[{"label":"eyecannndy — bullet time","url":"https://eyecannndy.com/technique/bullet-time"},{"label":"melies — bullet time","url":"https://melies.co/cinematic-techniques/time-and-motion/bullet-time"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b5aeca24624a/technique-bullet-time.mp4","w":720,"h":404,"duration":6,"blur":"data:image/webp;base64,UklGRtgAAABXRUJQVlA4IMwAAACQBQCdASogABIAPtFcqE4oJSQiKAqpABoJQBb7LNkAlgAct5eW+tAIg7CA7u0Z+h+ns7+qAAD+4gLjD7MJrXf4YDzLe6PNwOWnW9oMpbK+Y6trcCxCUFHlvk0gh7LZ7Dj+Kk4S39Q09U9dmckDgZBDCDfNz8qjmpWcIbQko2zTPXktNhVF2kjPVwTHkYmFIZB76nMlbi1dletYmyJ3qy32eAnBDe+XsSNkLNDzSCCb4Rq7WOrzK2Ae4wZN38IIt94n0ZNW8cLN3LQAAAA=","source":"Rendered locally with three.js r185 — grey-box scene, no external assets","credit":"Generated by varg (three.js grey-box demo)","rights":"generated","note":"Synthetic demo (three.js grey-box): a figure leaps as a crate bursts; time slows to about 1 % and the camera sweeps some 200° around the jumper and the debris hanging in mid-air, then time resumes. No real openly licensed shot of this move was found in the films searched (Blender open movies, Tears of Steel, Sunrise).","bytes":346664,"addedAt":"2026-10-27"}},{"id":"snorricam","group":"camera-move","name":"Snorricam","aliases":["Snorricam","SnorriCam","body-mounted camera","body rig","chest rig"],"definition":"A camera rigged to the performer's body and aimed back at them, so the face stays locked in frame while the world swings behind.","use":"Disorientation, panic, intoxication, euphoria — a character whose world is out of control.","misuse":"A handheld follow lets the face drift around the frame; a gimbal track keeps the background steady, so the vertigo disappears.","clause":"Snorricam on [subject]: the camera fixed to their chest and facing up at the face, which stays locked center-frame in close-up as they stumble through the crowd and the background swings wildly, ending as they stop and the background settles.","adapters":{"veo":"Body-mounted snorricam: [subject]'s face locked center-frame in close-up as they stumble through the crowd, the background swinging wildly and settling when they stop.","kling":"[subject] stumbles through a crowd. Snorricam view, camera fixed to the chest facing the face, face locked in close-up while the background swings, ending as they stop.","seedance":"镜头1：snorricam (body-mounted camera) — [subject]'s face stays locked center-frame in close-up as they stumble through the crowd; the background swings and settles when they stop.","hailuo":"[subject]'s face stays locked at the center as they stumble through a crowd, the world swinging behind [Tracking shot], until they stop [Static shot].","luma":"Snorricam close-up: the camera rides on [subject]'s chest, the face steady at frame center as they stumble through the crowd and the background sways, settling as they stop.","runway":"Close-up, low angle, body-mounted camera on [subject]: the face stays centered as they stumble through the crowd while the background swings, settling when they stop."},"links":[{"label":"eyecannndy — snorricam","url":"https://eyecannndy.com/technique/snorricam"},{"label":"melies — snorricam","url":"https://melies.co/cinematic-techniques/camera-movement/snorricam"},{"label":"grokfilm — snorricam","url":"https://grokfilm.app/#t/snorricam"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a255c93870ba/technique-snorricam.mp4","w":720,"h":404,"duration":5,"blur":"data:image/webp;base64,UklGRtwAAABXRUJQVlA4INAAAACwBQCdASogABIAPtFUo0uoJKMhsAgBABoJbAC/WMkwZ+gABJFZrqJkV75fQpn4200pxEhRNAAA/KubftuU8K/wQBpqZi86qYapcwJ65glnqBp8ya9CqFtFUZLPLPGaxYTkBZdBvc8hwNGbebynGwuEPSHUQlhPzqr7mAlxesgNoWdAe6GC0U9lg28iXpwBlg6kBUQJCsxYVJeKvyes2YAWtgxY1LFMVp6YLfzk+5FesDd2sn7r91oFk8dMYv+2ioHxmeMvuC1f8wUrPb9yUQAA","source":"Rendered locally with three.js r185 — grey-box scene, no external assets","credit":"Generated by varg (three.js grey-box demo)","rights":"generated","note":"Synthetic demo (three.js grey-box): the camera is rigged to the walking figure's chest and aimed back at its face, so the face stays locked in frame while the street, columns and buildings bob and swing behind it. No real openly licensed shot of this move was found in the films searched (Blender open movies, Tears of Steel, Sunrise).","bytes":171084,"addedAt":"2026-10-27"}},{"id":"push-through","group":"camera-move","name":"Push-through","aliases":["Through Object In","Through Object Out","pass-through","fly-through","through-the-window shot","Pass through objects","Flying Cam Transition","Impossible Shot"],"definition":"The camera travels forward through an opening — a window, a keyhole, a gap in leaves — carrying the viewer from one space into another.","use":"Outside-to-inside transitions, entering an object or a world, impossible-camera moments for ads.","misuse":"Cutting from outside to inside skips the passage; zooming through the window flattens it.","clause":"Push-through: the camera moves steadily forward toward a lit window, passes through the glass and continues into the room, ending on [subject] at the table in medium shot.","adapters":{"veo":"Continuous push-through: the camera moves steadily toward a lit window, passes through the glass into the room, and ends on [subject] at the table in medium shot.","kling":"A lit window at night. Camera steadily pushes forward through the window glass into the room, ending on [subject] at the table in medium shot.","seedance":"镜头1：一镜到底，推镜头穿过窗户 — the camera moves through the lit window into the room and ends on [subject] at the table in medium shot.","hailuo":"A lit window at night [Push in] through the glass into the room, ending on [subject] at the table [Static shot].","luma":"Push in, smoothly and continuously: the camera glides toward a lit window, passes through the glass and comes to rest on [subject] at the table in medium shot.","runway":"Wide shot, eye level, continuous dolly push-in through a lit window into the room; the camera ends on [subject] at the table in medium shot. Continuous, seamless shot."},"links":[{"label":"eyecannndy — pass through","url":"https://eyecannndy.com/technique/pass-through"},{"label":"melies — pass through","url":"https://melies.co/cinematic-techniques/camera-movement/pass-through"},{"label":"melies — flying cam transition","url":"https://melies.co/cinematic-techniques/camera-movement/flying-cam-transition"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/41ed1545c20f/technique-push-through.mp4","w":720,"h":302,"duration":5,"blur":"data:image/webp;base64,UklGRrAAAABXRUJQVlA4IKQAAACQBACdASogAA4APtFWo0uoJKMhsAgBABoJbACdMoR8eB9v1xBnFGfwcCkcCQAA/peRVGhvK+FRWkh6soB9e9jXgK1AVd5Dw7OyG8Qa8qEJ892DqDM4nIlY4bv5jPMt2QSjST5FdzL38V0xtzFfoeHKubtkN/CgWCuJ5Q0cRZ3McTs84CILW5nG0qYZJNT82jqzN+bKkCgjf1rsvXXgGlPJzwAAAA==","source":"https://commons.wikimedia.org/wiki/File:Sprite_Fright_-_Blender_Open_Movie-full_movie.webm","page":"https://studio.blender.org/films/sprite-fright/","credit":"Sprite Fright (2021) — © Blender Foundation (Blender Studio) | studio.blender.org — CC BY 4.0","rights":"cc-by","note":"Push-through: the opening glide over the forest canopy dives into the leaves and comes out on the forest floor beside a snail, carrying the viewer from the sky into the woods. Sprite Fright at 0:09.5–0:14.5.","bytes":263264,"addedAt":"2026-10-27"}},{"id":"turntable","group":"camera-move","name":"Turntable spin","aliases":["Lazy Susan","product spin","360 product spin","turntable","3D Rotation"],"definition":"The subject rotates in place on a turntable while the camera stays locked, showing every side against a constant background.","use":"E-commerce and product reveals, character turnarounds, sculpture and fashion details.","misuse":"Orbiting the camera spins the background as well; a static shot without rotation shows only one side.","clause":"Turntable spin: [subject] rotates slowly clockwise through one full turn on a turntable at the center of a seamless studio background, the camera locked off at a slight high angle, ending on the front view.","adapters":{"veo":"Static camera at a slight high angle: [subject] rotates slowly clockwise one full turn on a turntable at the center of a seamless studio background, ending on the front view.","kling":"[subject] rotates slowly on a turntable in a seamless studio. Static camera, slight high angle, one full turn, ending on the front view.","seedance":"镜头1：固定镜头 — [subject] turns one full rotation clockwise on a turntable in a seamless studio, ending on the front view.","hailuo":"[subject] spins slowly through one full turn on a turntable in a seamless studio, ending on the front view [Static shot].","luma":"Static camera, slight high angle: [subject] turns slowly one full rotation on a turntable in a seamless studio and finishes facing front.","runway":"Medium shot, slight high angle. The locked-off camera remains perfectly still as [subject] rotates one full turn on a turntable, ending on the front view."},"links":[{"label":"eyecannndy — lazy susan","url":"https://eyecannndy.com/technique/lazy-susan"},{"label":"melies — lazy susan","url":"https://melies.co/cinematic-techniques/camera-movement/lazy-susan"},{"label":"melies — 3d rotation","url":"https://melies.co/cinematic-techniques/camera-movement/3d-rotation"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/5752adee2b88/technique-turntable.mp4","w":720,"h":404,"duration":5,"blur":"data:image/webp;base64,UklGRqIAAABXRUJQVlA4IJYAAAAQBQCdASogABIAPtFUpk2oJCOiMBgIAQAaCWIAygGME1m2NGojscy8R06Yk/ujngAAAP73AaSbsZXGCCBqtWuwrmZk9x6CR0j/zXQ/N+wp7KT/fTT94s0dr8CRS42H50ynZyNVKBzpLc3RkbQQX5Ept6lXFYIqSvSoAR1zAvkHCIY8pBRbTplaXkwnNAnl/c4KsBdwAAA=","source":"Rendered locally with three.js r185 — grey-box scene, no external assets","credit":"Generated by varg (three.js grey-box demo)","rights":"generated","note":"Synthetic demo (three.js grey-box): a teapot makes one full turn on a turntable in front of a seamless studio backdrop; the camera never moves, so every side passes by against the same background. No real openly licensed shot of this move was found in the films searched (Blender open movies, Tears of Steel, Sunrise).","bytes":36042,"addedAt":"2026-10-27"}},{"id":"golden-hour","group":"lighting","name":"Golden hour","aliases":["golden hour glow","magic hour","low sun","sunset light"],"definition":"The low sun shortly after sunrise or before sunset: warm, soft, directional light with long shadows.","use":"Romance, nostalgia, hope, aspirational lifestyle and travel ads; flattering on skin.","misuse":"A warm grade on midday light keeps short, hard shadows and a high sun, so it reads as a filter rather than golden light.","clause":"Golden-hour light on [subject]: a low warm sun behind and to one side, long soft shadows across the ground and a warm rim on hair and shoulders, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, golden hour glow: a low warm sun behind and to the side of [subject], long soft shadows, a warm rim on hair and shoulders.","kling":"[subject] walks through a field. Medium shot, static camera, golden hour, low warm sunlight, long soft shadows, warm rim light on the hair.","seedance":"镜头1：中景，固定镜头 — [subject] in a field; golden-hour light, a low warm sun behind and to the side, long soft shadows, a warm rim on the hair.","hailuo":"[subject] walks through a field in low warm sunlight, long soft shadows and a golden rim on the hair [Static shot].","luma":"Static camera, medium shot: [subject] walks through a field at golden hour, a low warm sun behind them, long soft shadows and a glowing rim on the hair.","runway":"Medium shot, eye level, locked-off camera on [subject] in a field; golden hour backlight with long soft shadows and a warm rim on the hair."},"links":[{"label":"shot.cafe — tag: golden hour","url":"https://shot.cafe/tag/golden%20hour"},{"label":"melies — golden hour","url":"https://melies.co/cinematic-techniques/lighting/golden-hour"},{"label":"grokfilm — golden hour","url":"https://grokfilm.app/#t/golden-hour"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/adba624d13ef/technique-golden-hour.webp","w":960,"h":409,"blur":"data:image/webp;base64,UklGRrYAAABXRUJQVlA4IKoAAACwBACdASogAA4APtFUo0uoJKMhsAgBABoJbACdMoR2WBuctp8tODkaEJn4uN0AAP7Ib9UtJwTMvHcFpLFzJF6W7AjT2Yk50bBjtmuiU6knDPqIE8emPqq8z2TOtO72NRsJ/PmBpiCVdC5Jj7fvfuiWJwCCOIzdkDP9oIMoDrVfZNGBNxD5/IDZKInVWzsca8HQzHLvKPOMPHdVgzM3Gmg9N0qdH4Fye8iAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/Sintel.2010.1080p.mkv","page":"https://durian.blender.org/","credit":"Sintel (2010) — © Blender Foundation | durian.blender.org — CC BY 3.0","rights":"cc-by","note":"Golden hour: the sun sits just above the horizon, washing the rooftops in warm, low, raking light with long shadows and a warm edge on Sintel's hair and shoulders. Sintel at 5:41.","bytes":39372,"addedAt":"2026-10-27"}},{"id":"blue-hour","group":"lighting","name":"Blue hour","aliases":["blue hour","twilight","dusk light","civil twilight"],"definition":"The short window after sunset or before sunrise when the sky glows deep blue and artificial lights begin to register.","use":"Melancholy, quiet anticipation, cities that feel like day and night at once; a natural backdrop for practicals.","misuse":"A cool grade on daylight keeps hard sun shadows; full night loses the sky gradient that defines the look.","clause":"Blue-hour scene: [subject] on a balcony under a deep blue twilight sky, warm windows glowing in the city behind and soft shadowless light on the face, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, blue hour: [subject] on a balcony under a deep blue twilight sky, warm windows glowing in the city behind, soft light on the face.","kling":"[subject] stands on a balcony. Medium shot, static camera, blue hour twilight, deep blue sky, warm city windows glowing behind.","seedance":"镜头1：中景，固定镜头 — [subject] on a balcony; blue-hour twilight, a deep blue sky, warm windows glowing across the city, soft light on the face.","hailuo":"[subject] on a balcony under a deep blue twilight sky, warm city windows glowing behind [Static shot].","luma":"Static camera, medium shot: [subject] stands on a balcony at blue hour, a deep blue sky overhead and warm windows glowing across the city.","runway":"Medium shot, eye level, locked-off camera on [subject] on a balcony at blue hour; deep blue sky, warm city windows behind, soft light on the face."},"links":[{"label":"melies — blue hour","url":"https://melies.co/cinematic-techniques/lighting/blue-hour"},{"label":"grokfilm — blue hour","url":"https://grokfilm.app/#t/blue-hour"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/9d6cad8b2d69/technique-blue-hour.webp","w":960,"h":409,"blur":"data:image/webp;base64,UklGRm4AAABXRUJQVlA4IGIAAACwAwCdASogAA4APtFcpkyoJSOiMAgBABoJZQCdACGqe3AlpVxQmgD+8tmS6/iOTvQCcO0JOmsCZer9PC47NUfVzABOQx9j6cdJcOFrwzqDBvTuGMpsyNEAF16gbHbTYi34AA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/Sintel.2010.1080p.mkv","page":"https://durian.blender.org/","credit":"Sintel (2010) — © Blender Foundation | durian.blender.org — CC BY 3.0","rights":"cc-by","note":"Blue hour just after sunset: the sky deepens to blue with the first stars while a thin warm band lingers on the horizon, and the landscape takes soft, shadowless light as Sintel walks off in the distance. (No artificial lights in this frame.) Sintel at 5:53 (rendered).","bytes":14880,"addedAt":"2026-10-27"}},{"id":"low-key","group":"lighting","name":"Low-key lighting","aliases":["low-key lighting","low key","noir lighting"],"definition":"Most of the frame sits in deep shadow; one hard source carves out only what matters.","use":"Mystery, menace, noir, prestige drama; luxury products on black.","misuse":"Underexposing a flatly lit scene gives muddy gray, not shape; adding fill everywhere destroys the contrast ratio.","clause":"Low-key lighting on [subject]: a single hard light from the side carves half the face out of near-black darkness, the background lost in shadow, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera, low-key lighting: one hard side light carves half of [subject]'s face out of near-black shadow, the background lost in darkness.","kling":"[subject] in a dark room. Medium close-up, static camera, low-key lighting, a single hard side light, deep shadows, background in darkness.","seedance":"镜头1：近景，固定镜头 — [subject] in a dark room; low-key lighting, one hard side light, half the face in deep shadow, the background black.","hailuo":"[subject]'s face half-lit by a single hard side light, the rest sinking into darkness [Static shot].","luma":"Static camera, medium close-up, low-key lighting: one hard side light shapes half of [subject]'s face while the background falls to deep black.","runway":"Medium close-up, eye level, locked-off camera on [subject]; low-key lighting from a single hard side source, the background in deep shadow."},"links":[{"label":"melies — low key","url":"https://melies.co/cinematic-techniques/lighting/low-key"},{"label":"grokfilm — low-key lighting","url":"https://grokfilm.app/#t/low-key-lighting"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/b7bed5a22ba8/technique-low-key.webp","w":960,"h":800,"blur":"data:image/webp;base64,UklGRngAAABXRUJQVlA4IGwAAADQBACdASogABoAPtFgpk4oJaOiKAqpABoJaQAAj/Re7bivvsYA5N8chgZKFXo+AAD++upHN8v+CKl3ucsQ0nkOgq11rpDrh1E6PopsofN1cdQL+QBrmzY2WFwCsOMusoOdp5LO1a2C/UAAAAA=","source":"https://archive.org/download/sunrise-a-song-of-two-humans-f.-w.-murnau-1927","page":"https://archive.org/details/sunrise-a-song-of-two-humans-f.-w.-murnau-1927","credit":"Sunrise: A Song of Two Humans (1927), F. W. Murnau / Fox Film — public domain","rights":"public-domain","note":"Low-key: the farmer waits in a dark farmhouse; a single hard light picks out his face and shirt while the walls fall away into black. Sunrise (1927) at 7:20.","bytes":8164,"addedAt":"2026-10-27"}},{"id":"high-key","group":"lighting","name":"High-key lighting","aliases":["high-key lighting","high key","bright and airy","soft even light"],"definition":"Bright, soft, low-contrast light with few shadows and pale backgrounds.","use":"Beauty, skincare and lifestyle ads, comedy, clean product shots, optimism.","misuse":"Overexposing a contrasty setup clips the highlights instead of producing soft, even light; a white background under hard light looks clinical.","clause":"High-key lighting on [subject]: soft, even light from large sources in front, a bright white background and almost no shadow on the face, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, high-key lighting: soft, even frontal light on [subject] against a bright white background, barely any shadow.","kling":"[subject] smiles holding a skincare bottle. Medium shot, static camera, high-key soft even lighting, bright white background.","seedance":"镜头1：中景，固定镜头 — [subject] holds a skincare bottle; high-key soft even light, a bright white background, almost shadowless.","hailuo":"[subject] smiles in soft, even, bright light against a white background [Static shot].","luma":"Static camera, medium shot, high-key lighting: soft, even light wraps [subject] against a bright white background with gentle, barely visible shadows.","runway":"Medium shot, eye level, locked-off camera on [subject]; high-key soft frontal lighting, bright white background, minimal shadows."},"links":[{"label":"melies — high key","url":"https://melies.co/cinematic-techniques/lighting/high-key"},{"label":"grokfilm — high-key lighting","url":"https://grokfilm.app/#t/high-key-lighting"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/5a6fc4ba9782/technique-high-key.webp","w":960,"h":409,"blur":"data:image/webp;base64,UklGRqwAAABXRUJQVlA4IKAAAABwBACdASogAA4APtFYpEwoJSOiMAgBABoJZQCsB3rGy3uLXT6X0Alu75qCAAD+7uMQStsc0YPoLyyVsn8E5gp8smCybLsAhullraNAxv9NsS2C/yIwW97mEBO6gcnLbxNU6zg6nCt5S8fEcESQCcWiL3+REgkUvQ1m+WZ7Y4hPh55oJUhYxESgaQ/Bq3kR/FchLW9H5/odSqVLB7aFCAAA","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/Sintel.2010.1080p.mkv","page":"https://durian.blender.org/","credit":"Sintel (2010) — © Blender Foundation | durian.blender.org — CC BY 3.0","rights":"cc-by","note":"High-key: overcast light bounced off snow wraps Sintel from every side — a bright, pale white background, soft low-contrast light and almost no shadow on her face. Sintel at 0:39 (rendered).","bytes":10102,"addedAt":"2026-10-27"}},{"id":"rembrandt-lighting","group":"lighting","name":"Rembrandt lighting","aliases":["rembrandt lighting","Rembrandt","45-degree key","triangle light"],"definition":"A key light roughly 45 degrees to the side and above, leaving a small triangle of light on the shadow-side cheek.","use":"Classic, sculpted portraits; gravitas for interviews, founders and dramatic close-ups.","misuse":"Swinging the key fully to the side gives split lighting; flat frontal light erases the triangle and the modeling.","clause":"Rembrandt lighting on [subject]: a soft key light 45 degrees to the side and above, a small triangle of light on the shadow-side cheek, a dark background, camera static in close-up.","adapters":{"veo":"Close-up, static camera, rembrandt lighting: a soft key 45 degrees to the side and above [subject], a small triangle of light on the shadowed cheek, dark background.","kling":"[subject] portrait. Close-up, static camera, Rembrandt lighting, key light 45 degrees above, a light triangle on the shadow-side cheek, dark background.","seedance":"镜头1：特写，固定镜头 — [subject] portrait; Rembrandt lighting, the key 45° to the side and above, a small triangle of light on the shadowed cheek, dark background.","hailuo":"Portrait of [subject] with a soft key light high to one side, a triangle of light on the shadowed cheek [Static shot].","luma":"Static camera, close-up, Rembrandt lighting: a soft key from 45 degrees above and to the side, a small triangle of light glowing on [subject]'s shadowed cheek.","runway":"Close-up, eye level, locked-off camera on [subject]; Rembrandt lighting with a 45-degree high key and a light triangle on the shadow-side cheek."},"links":[{"label":"melies — rembrandt","url":"https://melies.co/cinematic-techniques/lighting/rembrandt"},{"label":"grokfilm — rembrandt lighting","url":"https://grokfilm.app/#t/rembrandt-lighting"}],"media":{"type":"none","reason":"No close-up in the openly licensed footage shows the defining small triangle of light on the shadow-side cheek. Faces are either split-lit (the far cheek fully dark), loop or short-lit (the nose shadow doesn't meet the cheek shadow), or flat. A painted-on triangle would be a misleading reference.","searched":["Faust (1926): ~40 close-ups of Mephisto, old and young Faust and Gretchen checked at full resolution (22:00–34:55, 56:38, 57:37, 87:38–105:28)","Sunrise (1927): farmhouse, barber, café and finale close-ups (7:12–7:45, 12:28–14:27, 29:00–31:20, 49:33–50:20, 93:41–93:50)","Nosferatu (1922): Hutter, Ellen and Orlok close-ups (8:28–89:52)","Tears of Steel (2012): all live-action close-ups (1:32, 3:20, 5:17, 6:06, 7:49, 8:53, 9:14)","Charge (2022): firelit close-ups at 0:18.8, 1:52.8, 1:58.6, 2:44, 2:50, 2:59.8","Sintel (2010) 1080p: cave and rooftop close-ups (3:36–11:45)","Cosmos Laundromat (2015): Victor close-ups at 3:44, 5:08, 5:12","Spring (2019) and Sprite Fright (2021): close-up sheets"],"addedAt":"2026-10-27"}},{"id":"hard-side-light","group":"lighting","name":"Hard side light","aliases":["split lighting","dramatic side lighting","hard light","side light","knife light"],"definition":"A small, hard source directly to one side splits the subject into a lit half and a dark half with crisp shadow edges.","use":"Duality, conflict, interrogation, villain reveals; strong texture on products and skin.","misuse":"A large soft source to the side wraps around the face and loses the clean split; hard light from the front flattens instead of carving.","clause":"Hard side light on [subject]: a small hard source 90 degrees to the left splits the face into a bright half and a dark half with a crisp shadow edge down the nose, camera static in close-up.","adapters":{"veo":"Close-up, static camera, dramatic side lighting: a small hard source 90 degrees to the left splits [subject]'s face into lit and dark halves with a crisp edge.","kling":"[subject] faces the camera. Close-up, static camera, hard side light from the left, half the face lit and half in shadow, a crisp shadow edge.","seedance":"镜头1：特写，固定镜头 — [subject]; hard light from the left at 90°, half the face bright and half dark, a crisp shadow edge down the nose.","hailuo":"[subject]'s face split into a bright half and a dark half by a hard light from the left [Static shot].","luma":"Static camera, close-up, hard side light: a small source from the left splits [subject]'s face into a bright half and a deep shadow half with a crisp edge.","runway":"Close-up, eye level, locked-off camera on [subject]; hard side light from 90 degrees left, split-face lighting with a crisp shadow line."},"links":[{"label":"eyecannndy — hard light","url":"https://eyecannndy.com/technique/hard-light"},{"label":"melies — split lighting","url":"https://melies.co/cinematic-techniques/lighting/split-lighting"},{"label":"grokfilm — split lighting","url":"https://grokfilm.app/#t/split-lighting"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/29cc483fa1ac/technique-hard-side-light.webp","w":960,"h":751,"blur":"data:image/webp;base64,UklGRqgAAABXRUJQVlA4IJwAAACQBACdASogABoAPtFQpEuoJCOhsBgMAQAaCWkAAPBBnl9kPWg0yN/tonGsbyAA/vxGm21c7J0WgLx9SkkS7DfEPm2OyBsB207j7orng0Ujwm+l+lOocDHotDou34bTyWl6vk0Si1TH7j5+j5l0c/e3378QJje+Jla6QMzcf2he7Hc7NrFSpRcygzqNs7IKs2eG4mXWuiHTn2AAAAA=","source":"https://archive.org/download/1926-faust","page":"https://archive.org/details/1926-faust","credit":"Faust (1926), F. W. Murnau / Ufa — public domain","rights":"public-domain","note":"Hard side light: one small, hard source from the right carves Mephisto's grinning face into a lit half and a black half; the nose throws a crisp-edged shadow across the cheek and the background is lost in darkness. Faust (1926) at 25:50 (the source sits a little forward of 90°, so a glint still reaches the far eye). Rights: Faust (1926) is public domain in the US; in the EU the film may stay protected until 2031 (original score by Werner R. Heymann, †1961) — swap this reference before an EU-facing public launch.","bytes":15758,"addedAt":"2026-10-27"}},{"id":"rim-light","group":"lighting","name":"Rim light","aliases":["rim light","backlight","edge light","Rim Lighting"],"definition":"A light behind the subject outlines the edges of hair and shoulders and separates them from the background.","use":"Separation in dark scenes, glamour, a heroic halo; makes products pop off black.","misuse":"A rim with no front exposure becomes a silhouette; a rim on every shot looks like a preset.","clause":"Rim light on [subject]: a light behind them traces a bright edge around hair and shoulders against a dark background, with a soft fill keeping the face visible, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera, backlighting: a light behind [subject] traces a bright edge around hair and shoulders against a dark background, soft fill on the face.","kling":"[subject] in a dark studio. Medium close-up, static camera, strong rim light outlining hair and shoulders, soft fill on the face, dark background.","seedance":"镜头1：近景，固定镜头 — [subject] in a dark studio; a rim light behind outlines hair and shoulders, soft fill on the face, a dark background.","hailuo":"[subject] in a dark studio, a bright edge of light tracing hair and shoulders [Static shot].","luma":"Static camera, medium close-up: a rim light behind [subject] traces a bright line around hair and shoulders, a soft fill on the face, the background dark.","runway":"Medium close-up, eye level, locked-off camera on [subject]; rim light from behind outlining hair and shoulders, soft fill, dark background."},"links":[{"label":"shot.cafe — tag: backlit","url":"https://shot.cafe/tag/backlit"},{"label":"melies — rim light","url":"https://melies.co/cinematic-techniques/lighting/rim-light"},{"label":"grokfilm — rim lighting","url":"https://grokfilm.app/#t/rim-lighting"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/c067982fd353/technique-rim-light.webp","w":960,"h":751,"blur":"data:image/webp;base64,UklGRggBAABXRUJQVlA4IPwAAAAQBgCdASogABoAPtFgqE+oJSOiKAgBABoJaQAD5dVJN55lKwlrCb9lLJJccqc9oPRrcK7dIzLz7QAA/v3cA46D643UwgoqptkvNBPeyMwzI1+1cjaO6ECOruTQ4OSDCKLQ2Goj6+hehMNYSCHEGqWaWS/ccKjszy0qNqaMyhBJ7xztRkQ6m9qMkBh08C5bwUFvUnJKSWKgMMXtAIAEAR3NEKN0uvhVNbHi/dKj33s61a9M87XrcA6HXzHoF9sVLxUAQp9zPM4bvuy63+hTvHZZjE15vNabFPQr8q1FWjHhqcd6SV7lsIh9lft8mpYrt2kDDFi8UvBi3AcAAAA=","source":"https://archive.org/download/1926-faust","page":"https://archive.org/details/1926-faust","credit":"Faust (1926), F. W. Murnau / Ufa — public domain","rights":"public-domain","note":"Rim light: a hard light from behind and above traces a bright fringe along Gretchen's loose hair and bare shoulder, cutting her out of the black background, while a separate key lights her face. Faust (1926) at 1:43:52. Rights: Faust (1926) is public domain in the US; in the EU the film may stay protected until 2031 (original score by Werner R. Heymann, †1961) — swap this reference before an EU-facing public launch.","bytes":32748,"addedAt":"2026-10-27"}},{"id":"silhouette","group":"lighting","name":"Silhouette","aliases":["Silhouette","Contre-jour","backlit silhouette","backlighting to create a silhouette"],"definition":"The subject is dark against a bright background, so only its outline carries the information.","use":"Mystery, anonymity, iconic shapes, emotional distance; hides identity and simplifies the frame.","misuse":"Adding fill reveals the face and breaks the graphic shape; a busy bright background muddles the outline.","clause":"Silhouette: [subject] stands in profile in front of a bright sunset sky, rendered as a solid dark shape with a crisp outline, camera static in wide shot.","adapters":{"veo":"Wide shot, static camera, backlighting: [subject] in profile in front of a bright sunset sky, a solid dark shape with a crisp outline.","kling":"[subject] stands in profile against a bright sunset sky. Wide shot, static camera, full silhouette, crisp dark outline.","seedance":"镜头1：全景，固定镜头 — [subject] in profile against a bright sunset sky, a solid dark silhouette with a crisp outline.","hailuo":"[subject] in profile as a dark silhouette against a bright sunset sky [Static shot].","luma":"Static camera, wide shot: [subject] stands in profile against a bright sunset sky, a solid dark silhouette with a crisp, clean outline.","runway":"Wide shot, eye level, locked-off camera; [subject] in profile against a bright sunset sky, backlit into a solid silhouette."},"links":[{"label":"eyecannndy — silhouette","url":"https://eyecannndy.com/technique/silhouette"},{"label":"shot.cafe — tag: silhouette","url":"https://shot.cafe/tag/silhouette"},{"label":"melies — silhouette","url":"https://melies.co/cinematic-techniques/lighting/silhouette"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/207d0ad3ff2e/technique-silhouette.webp","w":960,"h":751,"blur":"data:image/webp;base64,UklGRtwAAABXRUJQVlA4INAAAABwBQCdASogABoAPslQnkunpKKhsAwA8BkJaQAD5eoNgJ7PLynBqZHqcJqpdPt9NTwtz4AAAP7sPzwmS9uh6GI2UqbnTmsm9ThPKvdP+eOY4HT0NUPnoyLsmn53YVZMXd7ufWg8ehPmRerebS9/wAEl/N6G3JswRN5JepLh9rPLKHvNjo5Slv5ZG4oiLAeSUugZnmda3HHYZGraSD6ne3xfQq6ptrn+kgjWvmZ9bGpYOaeWqw3L3kyZZs4DFS17Zexf4B77Vb5mlsSiKS7g4AAA","source":"https://archive.org/download/1926-faust","page":"https://archive.org/details/1926-faust","credit":"Faust (1926), F. W. Murnau / Ufa — public domain","rights":"public-domain","note":"Silhouette: Faust (stooping, left) and the cloaked Mephisto (right) are solid dark shapes against bright mist and a pale rock — no faces or detail, only their outlines tell who is where. Faust (1926) at 1:41:29. Rights: Faust (1926) is public domain in the US; in the EU the film may stay protected until 2031 (original score by Werner R. Heymann, †1961) — swap this reference before an EU-facing public launch.","bytes":35492,"addedAt":"2026-10-27"}},{"id":"window-light","group":"lighting","name":"Soft window light","aliases":["Window","window light","soft window light","natural light","north light"],"definition":"Daylight through a window used as the key: large, soft and directional, falling off across the room.","use":"Natural, intimate interiors; UGC and lifestyle that should feel real; flattering faces with no visible gear.","misuse":"Direct sun through the glass is hard and spotty; even overhead light kills the direction that makes window light read.","clause":"Soft window light on [subject]: daylight from a large window at frame left wraps the face, the far side easing into gentle shadow, warm room tones behind, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera: soft daylight from a large window at the left wraps [subject]'s face, the far side falling into gentle shadow.","kling":"[subject] sits by a large window. Medium close-up, static camera, soft natural window light from the left, gentle shadow on the far side of the face.","seedance":"镜头1：近景，固定镜头 — [subject] by a large window; soft daylight from the left wraps the face, gentle shadow on the far side.","hailuo":"[subject] sits by a large window, soft daylight from the left wrapping the face [Static shot].","luma":"Static camera, medium close-up: soft daylight from a large window on the left wraps [subject]'s face, the far cheek easing into gentle shadow.","runway":"Medium close-up, eye level, locked-off camera on [subject] by a window; soft window light from the left, gentle falloff into shadow."},"links":[{"label":"shot.cafe — tag: window","url":"https://shot.cafe/tag/window"},{"label":"melies — window light","url":"https://melies.co/cinematic-techniques/lighting/window-light"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/bb7f5e4b0bbd/technique-window-light.webp","w":960,"h":751,"blur":"data:image/webp;base64,UklGRtQAAABXRUJQVlA4IMgAAADQBQCdASogABoAPsVUn0unpSKht/VYAPAYiWkACB3oJe/6N24vf8NRrmCUrrJ4cYH/Q6S3CCAAAP74oDa0f9nq0CihIpy4v8xBU9gUICoIYqu93Mj3lHxihuI5NUyvGWmLaEe2GhA29CcjdX/H11q/8IHLSL7M24NSsUbevGv9SefUgHBDBg6HCZj8m1WsoCWr2ZGmeRN+N3CTGe0RE7NCT2El6tRm1jC3H0ctvs/IkzqsJRRjJeH7TdVd1cL1CjLgLWV1cAQAAA==","source":"https://archive.org/download/1926-faust","page":"https://archive.org/details/1926-faust","credit":"Faust (1926), F. W. Murnau / Ufa — public domain","rights":"public-domain","note":"Soft window light: the leaded window at frame left is the key — large, soft daylight wraps Gretchen's profile and falls off gently across her braid and the wall behind. Faust (1926) at 57:37. Rights: Faust (1926) is public domain in the US; in the EU the film may stay protected until 2031 (original score by Werner R. Heymann, †1961) — swap this reference before an EU-facing public launch.","bytes":15676,"addedAt":"2026-10-27"}},{"id":"practical-lighting","group":"lighting","name":"Practical lighting","aliases":["practicals","Practicals","practical lamp","neon practicals","candlelight"],"definition":"Light sources visible in the frame — lamps, neon, screens, candles — that also light the subject.","use":"Grounds the light in the world, adds depth points and color, sells night interiors and moody bars.","misuse":"Visible lamps that light nothing look fake; an off-screen key that contradicts the lamps breaks the motivation.","clause":"Practical lighting: [subject] at a desk at night lit only by a warm table lamp in frame and the cool glow of a monitor, pools of light and dark around the room, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera: [subject] at a desk at night lit only by a warm table lamp in frame and the cool glow of a monitor, pools of light and shadow around the room.","kling":"[subject] works at a desk at night. Medium shot, static camera, lit by a warm table lamp and a cool monitor glow, dark room.","seedance":"镜头1：中景，固定镜头 — [subject] at a desk at night; lit only by a warm table lamp in frame and a cool monitor glow, pools of light in a dark room.","hailuo":"[subject] at a desk at night, lit by a warm lamp and the cool glow of a monitor [Static shot].","luma":"Static camera, medium shot: [subject] works at a desk at night, a warm table lamp in frame and the cool glow of a monitor lighting the face, the room in soft pools of light.","runway":"Medium shot, eye level, locked-off camera on [subject] at a desk at night; practical lighting from a warm table lamp and a cool monitor glow."},"links":[{"label":"shot.cafe — tag: practical lamp","url":"https://shot.cafe/tag/practical%20lamp"},{"label":"shot.cafe — tag: candlelight","url":"https://shot.cafe/tag/candlelight"},{"label":"shot.cafe — tag: neon","url":"https://shot.cafe/tag/neon"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/e371153da59d/technique-practical-lighting.webp","w":960,"h":402,"blur":"data:image/webp;base64,UklGRo4AAABXRUJQVlA4IIIAAABwBACdASogAA4APtFWpEuoJKOhsAgBABoJQBOmUABwf/Wmod4Hnlh3CJje6AD+7DvcoOReWVCyzheEiBr9c9eygJGFH8YYSniX4qb3Lrq4CCit0nx6cKAzh+ju0TDwMrMJ6K6bGphuVkPneKLYj7YDSViobcaig9tAEEMCEI8NAAAA","source":"https://commons.wikimedia.org/wiki/File:Charge_-_Blender_Open_Movie-full_movie.webm","page":"https://studio.blender.org/films/charge/","credit":"Charge (2022) — © Blender Foundation (Blender Studio) | studio.blender.org — CC BY 4.0","rights":"cc-by","note":"Practicals: clusters of burning candles in frame are the visible light source — they throw warm light up onto the old man and his workbench while the cave behind falls into shadow. Charge at 0:19.","bytes":13766,"addedAt":"2026-10-27"}},{"id":"volumetric-light","group":"lighting","name":"Volumetric light","aliases":["volumetric lighting","god rays","subtle god rays","light shafts","crepuscular rays","haze","Atmospheric Haze"],"definition":"Beams of light made visible by haze, dust or fog, so the air itself takes on shape.","use":"Spiritual or epic moods, forests and churches, stages and smoky bars; adds depth layers.","misuse":"Beams with no plausible source or haze look pasted on; too much haze washes out contrast and skin.","clause":"Volumetric light: shafts of sunlight cut through haze from high windows onto [subject] standing in the center of the hall, dust visible in the beams, camera static in wide shot.","adapters":{"veo":"Wide shot, static camera, volumetric lighting: shafts of sunlight through haze from high windows fall on [subject] in the center of the hall, dust drifting in the beams.","kling":"[subject] stands in an old hall. Wide shot, static camera, subtle god rays through high windows, hazy air, dust in the light beams.","seedance":"镜头1：全景，固定镜头 — [subject] in the center of an old hall; sunbeams through haze from high windows, dust floating in the light.","hailuo":"[subject] stands in an old hall as shafts of sunlight cut through the haze from high windows [Static shot].","luma":"Static camera, wide shot: shafts of sunlight pour through haze from high windows onto [subject] in the center of the hall, dust glittering in the beams.","runway":"Wide shot, eye level, locked-off camera on [subject] in an old hall; volumetric light beams through haze from high windows."},"links":[{"label":"eyecannndy — haze","url":"https://eyecannndy.com/technique/haze"},{"label":"shot.cafe — tag: smoke","url":"https://shot.cafe/tag/smoke"},{"label":"shot.cafe — tag: god rays","url":"https://shot.cafe/tag/god%20rays"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/a3124b028c73/technique-volumetric-light.webp","w":960,"h":751,"blur":"data:image/webp;base64,UklGRvoAAABXRUJQVlA4IO4AAACQBQCdASogABoAPtFgqU+oJSOiKAgBABoJaQDPoYzwOPAiYBAFMl3X14XexxTC3q08rm6GAAD+/HR9ASx7mbefOVDE2rC/176PX4DZk5S41wBCAU8ZTHEEEDiFl/BSxzU5nNQh5czRfh2QtQ/R14x+Gy3KvVLU+v7q4Fuk0pxLT6F9ocLaWuCfLwhzc3U1lo75brBTGLG4qQrlWcWX4HRQz8iNgnb5PPKNtJ7uwlNuK1kLD/xx2JivBk5shnY4jJpJVAJAZqP/YRM55VHfA263BA/VDkFaa1Tgv1I+pnYryffp0NsGIlG2bL4WDVwA","source":"https://archive.org/download/1926-faust","page":"https://archive.org/details/1926-faust","credit":"Faust (1926), F. W. Murnau / Ufa — public domain","rights":"public-domain","note":"Volumetric light: shafts of daylight slant down from high cathedral windows through incense haze onto the altar and the kneeling congregation — the beams themselves are visible in the air. Faust (1926) at 49:24 (Easter mass). Rights: Faust (1926) is public domain in the US; in the EU the film may stay protected until 2031 (original score by Werner R. Heymann, †1961) — swap this reference before an EU-facing public launch.","bytes":37596,"addedAt":"2026-10-27"}},{"id":"teal-and-orange","group":"color","name":"Teal and orange","aliases":["teal and orange","orange and teal","complementary grade","blockbuster grade","split toning"],"definition":"A grade that pushes shadows and backgrounds toward teal while keeping skin and warm highlights orange, maximizing color contrast.","use":"Action, blockbuster and travel energy; makes faces pop against cool environments.","misuse":"Pushed too far, skin turns radioactive and every scene looks the same; on scenes without warm skin tones it just turns everything cyan.","clause":"Teal-and-orange grade: [subject]'s warm skin tones stand out against cool teal shadows and background, warm highlights, moderate saturation, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera: [subject]'s warm skin tones against cool teal shadows and background, a teal-and-orange color grade with moderate saturation.","kling":"[subject] on a city rooftop at dusk. Medium shot, static camera, teal and orange color grading, warm skin, cool teal shadows.","seedance":"镜头1：中景，固定镜头 — [subject] on a rooftop at dusk; teal-and-orange grade, warm skin tones, cool teal shadows, moderate saturation.","hailuo":"[subject] on a rooftop at dusk, warm skin against cool teal shadows [Static shot].","luma":"Static camera, medium shot: [subject] on a rooftop at dusk in a teal and orange grade, warm skin glowing against cool teal shadows.","runway":"Medium shot, eye level, locked-off camera on [subject] on a rooftop at dusk; teal-and-orange grade with warm skin and teal shadows."},"links":[{"label":"melies — teal orange","url":"https://melies.co/cinematic-techniques/color/teal-orange"},{"label":"melies — split tone","url":"https://melies.co/cinematic-techniques/color/split-tone"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/673a28cb7ecf/technique-teal-and-orange.mp4","w":720,"h":404,"duration":4.5,"blur":"data:image/webp;base64,UklGRhIBAABXRUJQVlA4IAYBAAAwBgCdASogABIAPtFWpk2oJCOiMBgIAQAaCWIAnTLdd2awHKrZrZsp89gTyAuxpSZ12cbHwccPxpWAAM4+QHzUVJA1/GpILhsGFEilWv/gaE/Xb62zFr33LdnQqYLqMh0ExVBKWg++aRxjyPxeEpVbKdDI02sAY0QW5zwX5FjY0P09Ppm2RZsS2HL8FnxwU+WvaC7I9tZJfRhWhSw1pGEA53OGtE1mkeyehRF4PlzskvYegMWPuYMeRvKifkilODCyyhwBdNWSLbKiZIqQBf3V7wqGPF78ja49Tvw5JRIWz+Fc7tYQDVUJkDqA14FOc5JU/kZzsVopJHgd3OUc5Tq63fW65AAA","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"generated","note":"Generated: teal-and-orange grade (own 3D LUT — greens pushed to teal, skin kept orange, teal shadows, warm highlights) on Tears of Steel (CC BY 3.0) 05:15–05:20, before | after wipe","bytes":103757,"addedAt":"2026-10-27"}},{"id":"bleach-bypass","group":"color","name":"Bleach bypass","aliases":["bleach bypass","skip bleach","silver retention","desaturated high contrast"],"definition":"A film-lab look: color drained, contrast and grain high, blacks dense and highlights metallic.","use":"War, gritty crime, dystopia, bleak sports stories; a harsh, silvery texture.","misuse":"Plain desaturation stays flat and soft; the look needs the jump in contrast and the silver sheen.","clause":"Bleach-bypass look on [subject]: muted, desaturated colors, crushed dense blacks, harsh metallic highlights and visible grain, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, bleach bypass look: [subject] in muted, desaturated color, dense blacks, metallic highlights, visible film grain.","kling":"[subject] in a ruined street. Medium shot, static camera, bleach bypass look, desaturated, high contrast, gritty film grain.","seedance":"镜头1：中景，固定镜头 — [subject] in a ruined street; bleach-bypass look, desaturated, high contrast, metallic highlights, heavy grain.","hailuo":"[subject] in a ruined street in muted, high-contrast, silvery color with heavy grain [Static shot].","luma":"Static camera, medium shot: [subject] in a ruined street with a bleach bypass look, muted color, dense blacks, silvery highlights and fine grain.","runway":"Medium shot, eye level, locked-off camera on [subject] in a ruined street; bleach-bypass film look, desaturated, high contrast, heavy grain."},"links":[{"label":"film-grab — search: bleach bypass","url":"https://film-grab.com/?s=bleach+bypass"},{"label":"melies — bleach bypass","url":"https://melies.co/cinematic-techniques/color/bleach-bypass"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d8b23bccb34d/technique-bleach-bypass.mp4","w":720,"h":404,"duration":5,"blur":"data:image/webp;base64,UklGRvQAAABXRUJQVlA4IOgAAABwBgCdASogABIAPtFSoUuoJKMhsAgBABoJZQCw7mwKQWyit6R9j21xcw97xLcVkcmq3Oo/FSvpToVd0wAA/u7ngqaIJ5TSJnhxiYgmxZzkIOhJLNJ+WkOtudy5HXs0z3p5K85rcNlldYr8tKZV0kf/7/04H6DAGxleFfCuuW9Wzxq6qOq4GYfOzX4zTTPgB82lXecpgc7/kE/H+gTQ9KTv/C8QqbmQjgz3d5XOFn59xol32C7hqJySS7S6a44getpU0DQqGq7yLFnCNbna1eA6sFIj3brXJde0m9qQxCkrkcTC3CDdQwAA","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"generated","note":"Generated: bleach-bypass grade (own 3D LUT — luminance overlaid on color, saturation cut to ~55%, crushed blacks, silvery highlights, plus moving grain) on Tears of Steel (CC BY 3.0) 08:51–08:56, before | after wipe","bytes":145493,"addedAt":"2026-10-27"}},{"id":"day-for-night","group":"color","name":"Day for night","aliases":["day for night","nuit américaine","American night","moonlit grade"],"definition":"Footage shot in daylight and graded dark and blue so it reads as a moonlit night.","use":"Night exteriors where real night is impractical; a stylized, slightly unreal moonlight.","misuse":"Simply lowering exposure leaves a bright sky and sunny shadows; the sky must go dark and the shadows stay crisp, like moonlight.","clause":"Day-for-night look: [subject] crossing a desert road under what reads as moonlight, the sky graded deep blue-black, cool blue tones and crisp shadows, camera static in wide shot.","adapters":{"veo":"Wide shot, static camera, day-for-night look: [subject] crosses a desert road in cool blue moonlight, the sky deep blue-black, crisp shadows.","kling":"[subject] crosses a desert road at night. Wide shot, static camera, day for night grade, cool blue moonlight, dark sky, crisp shadows.","seedance":"镜头1：全景，固定镜头 — [subject] crosses a desert road; day-for-night grade, cool blue moonlight, a deep blue-black sky, crisp shadows.","hailuo":"[subject] crosses a desert road under cool blue moonlight, the sky almost black [Static shot].","luma":"Static camera, wide shot: [subject] crosses a desert road in a day-for-night grade, cool blue moonlight, a deep blue-black sky and crisp shadows.","runway":"Wide shot, eye level, locked-off camera on [subject] crossing a desert road; day-for-night grade, cool blue moonlight, dark sky."},"links":[{"label":"film-grab — search: day for night","url":"https://film-grab.com/?s=day+for+night"},{"label":"melies — day for night","url":"https://melies.co/cinematic-techniques/color/day-for-night"},{"label":"grokfilm — day for night","url":"https://grokfilm.app/#t/day-for-night"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/dfa93621133d/technique-day-for-night.mp4","w":720,"h":404,"duration":5,"blur":"data:image/webp;base64,UklGRowAAABXRUJQVlA4IIAAAAAwBQCdASogABIAPtFao02oJSMiKA1RABoJZwDA3BIo4yTEbPoZD19ZGoUNF3SvXqyAoADLOtrKjVuKb+9+wWwxHoV4kkEUa9W1WkB9QGymZFirxxcfIczOCXI4jOBPcFF9jZzVIViulpT/sRNQL+8/r0ewaEf2lxZqgshXKAAAAA==","source":"https://commons.wikimedia.org/wiki/File:Spring_-_Blender_Open_Movie.webm","page":"https://studio.blender.org/films/spring/","credit":"Spring (2019) — © Blender Foundation | studio.blender.org — CC BY 4.0","rights":"generated","note":"Generated: day-for-night grade (own 3D LUT — about −2 stops, bright sky keyed and pulled down to blue-black, saturation cut to ~35%, blue moonlight balance, vignette) on a sunlit shot of Spring (CC BY 4.0) 06:28–06:33, before | after wipe","bytes":160356,"addedAt":"2026-10-27"}},{"id":"black-and-white","group":"color","name":"Black and white","aliases":["black and white","B&W","monochrome","black-and-white film"],"definition":"Color is removed entirely; the image lives on tone, contrast and texture.","use":"Timelessness, memory, documentary seriousness, noir; focuses attention on light and shape.","misuse":"Desaturating a scene lit for color without separating its tones leaves gray mush, and props that relied on color vanish.","clause":"Black-and-white image of [subject]: rich blacks, bright highlights and a full range of grays, strong contrast between face and background, fine grain, camera static in close-up.","adapters":{"veo":"Close-up, static camera, black and white: [subject] in rich blacks, bright highlights and a full range of grays, fine grain.","kling":"[subject] looks out of a rainy window. Close-up, static camera, black and white, high contrast, fine film grain.","seedance":"镜头1：特写，固定镜头 — [subject] at a rainy window; black-and-white, rich blacks, bright highlights, a full gray scale, fine grain.","hailuo":"Black-and-white close-up of [subject] at a rainy window, deep blacks and bright highlights [Static shot].","luma":"Static camera, close-up, black and white: [subject] at a rainy window in rich blacks, bright highlights and smooth grays with fine grain.","runway":"Close-up, eye level, locked-off camera on [subject] at a rainy window; black-and-white image, high contrast, fine grain."},"links":[{"label":"shot.cafe — tag: black and white","url":"https://shot.cafe/tag/black%20and%20white"},{"label":"film-grab — search: black and white","url":"https://film-grab.com/?s=black+and+white"},{"label":"melies — monochrome","url":"https://melies.co/cinematic-techniques/color/monochrome"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/43366586f7e7/technique-black-and-white.mp4","w":720,"h":404,"duration":3.9,"blur":"data:image/webp;base64,UklGRtIAAABXRUJQVlA4IMYAAACQBQCdASogABIAPtFcqE4oJSQiKAqpABoJZwDMWY0hViGrh1LY02JcTbqc0HgsTy0hPfbLAAD+75dTQiymFGa4mY+mBNaYx7kUxhIMTw7y4UVL/goflGH77q3C32OlAfegOmijxlFWLSjA6EN0RJ7m+jAsJD5DnesMvHMN08VQAzZQ5oZZK1NjjikfQU7p5ahmDEXax7Kv5q9DyPOKZJ6Ul+w/lsURBTsN0+hKpCLSBaABViFJnbZyjnNXNPE/Wl9MaDNCAAA=","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"generated","note":"Generated: black-and-white conversion (red-weighted channel mix so skin separates from the background, S-curve for rich blacks, fine grain) on Tears of Steel (CC BY 3.0) 09:13–09:17, before | after wipe","bytes":100489,"addedAt":"2026-10-27"}},{"id":"print-film-emulation","group":"color","name":"Print-film look","aliases":["print film emulation","film print look","film look","35mm Film","Kodak 2383","Fuji 3510","Kodak Vision3 500T","photochemical"],"definition":"The density, gently rolled highlights, rich shadows and slightly shifted hues of a scanned film print, applied as a grade.","use":"Takes the clinical edge off digital or AI footage; a nostalgic, premium, 'shot on film' feel.","misuse":"Grain alone is not a film look; print LUTs at full strength often crush shadows and push skin orange, so apply them partially.","clause":"Print-film look on [subject]: dense rich shadows, gently rolled-off highlights, slightly warm mids and teal-leaning blacks, fine 35mm grain, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, 35mm film print look: [subject] with dense shadows, soft highlight roll-off, warm mids and fine grain.","kling":"[subject] in a diner. Medium shot, static camera, 35mm film look, rich shadows, soft highlights, fine grain.","seedance":"镜头1：中景，固定镜头 — [subject] in a diner; shot on 35mm film, Kodak Vision3 500T, photochemical grain, 复古胶片质感, rich shadows, soft highlights.","hailuo":"[subject] in a diner, the image like a 35mm film print with rich shadows and fine grain [Static shot].","luma":"Static camera, medium shot: [subject] in a diner with a 35mm film print look, rich shadows, softly rolled highlights and fine grain.","runway":"Medium shot, eye level, locked-off camera on [subject] in a diner; 35mm film look, soft highlight roll-off, fine grain."},"links":[{"label":"film-grab — search: Kodak","url":"https://film-grab.com/?s=Kodak"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b13fd4f7e314/technique-print-film-emulation.mp4","w":720,"h":404,"duration":5,"blur":"data:image/webp;base64,UklGRhABAABXRUJQVlA4IAQBAACQBQCdASogABIAPtFYpU0oJSOiMBgIAQAaCWIAnRtfw8qrJvt1E7bTbsGaXRku6SXdanLMAAD+6VqOkDX20BwS+EsArVnOPs4bF4SgIB44SXBsgQsYtaCJpqum/DJ6xFfet3XvGYtgdFsz8JvW5WC9JJU6NPhP7Yx/ljpMdT2WKmMbwdT275huy89rwZkFcZqSOGteLEd4nnczG+fWSqBjecInqa5UYny5+sBMet57vVbHFr4bZMIUZ9s4m70T9JrnZSN1nGr7rK0/zaOnS9gGhHihjESb22rDIji0WUM7wNGJtOgPlqSXueyiSPoct/u3nh/jQbKwi3TcR+vhYogH/0gAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"generated","note":"Generated: print-film look (own 3D LUT — film-style toe and highlight shoulder, teal-leaning blacks, warm mids, greens nudged to teal, fine grain) on Tears of Steel (CC BY 3.0) 04:37–04:42, before | after wipe","bytes":297547,"addedAt":"2026-10-27"}},{"id":"film-grain","group":"color","name":"Film grain","aliases":["film grain","16mm grain","35mm grain","8mm Film","grain overlay","photochemical grain"],"definition":"Fine random texture from film emulsion, or its emulation, that breaks up digital smoothness.","use":"Makes AI and digital footage feel organic, unifies clips from different models, adds period texture (16mm, 8mm).","misuse":"Grain frozen on the frame looks like a dirty screen; heavy grain in dark scenes turns into noise.","clause":"Fine 16mm film grain over [subject]: organic texture that moves frame to frame, strongest in the midtones, detail slightly softened, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, 16mm film look: [subject] with fine organic grain that moves frame to frame, softened detail.","kling":"[subject] on a beach. Medium shot, static camera, 16mm film grain, soft organic texture.","seedance":"镜头1：中景，固定镜头 — [subject] on a beach; 16mm film grain, 复古胶片质感, softened detail.","hailuo":"[subject] on a beach, the image covered in fine moving 16mm grain [Static shot].","luma":"Static camera, medium shot: [subject] on a beach, fine 16mm grain dancing across the image, detail gently softened.","runway":"Medium shot, eye level, locked-off camera on [subject] on a beach; 16mm film grain, soft organic texture."},"links":[{"label":"film-grab — search: 16mm","url":"https://film-grab.com/?s=16mm"},{"label":"melies — film grain","url":"https://melies.co/cinematic-techniques/effects/film-grain"},{"label":"grokfilm — film grain","url":"https://grokfilm.app/#t/film-grain"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/44b791f594c1/technique-film-grain.mp4","w":720,"h":404,"duration":4.3,"blur":"data:image/webp;base64,UklGRvwAAABXRUJQVlA4IPAAAADwBQCdASogABIAPtFWpk2oJCOiMBgIAQAaCWMAnSDurfCMHJRQhsbd1ylfH3EBeLbP3MfCqsSwMAD2vwIX6YdDvH9yNEAuQP8Ca0Fvo0Ng+OdxPkNNr4sU2OJ5yvCFIH36OGeT2aIhnCJ2ikRHG+I4jbe4s/HrYqdJ9g5Haa/Isr5Yc0iR+az6UNAxuGppslsv5oYiDJd2C8aAF8xMU4NGzPDSR/1KAHaFXMU6J4cKitlQMyP13xGBMPXYYO7lhJ03mZDuIYEec8BL532yxRfBgcvaYWoipC+QuHckhiPfPJerjO23SRHJ461h6SJQAAA=","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"generated","note":"Generated: 16mm-style film grain (mono grain plate about 3× coarser than a pixel, overlay-blended so it is strongest in the midtones, a new pattern every frame) on Tears of Steel (CC BY 3.0) 05:24–05:28, fixed before | after split","bytes":328192,"addedAt":"2026-10-27"}},{"id":"halation","group":"color","name":"Halation","aliases":["film halation","Halation Vintage","highlight glow","red halo"],"definition":"A warm red-orange glow that bleeds around bright highlights on film, caused by light scattering back through the emulsion.","use":"Dreamy nostalgia, night-city lights, sunlit skin; a subtle 'real film' cue.","misuse":"A generic bloom is white and soft everywhere; halation is reddish and hugs high-contrast edges.","clause":"Halation on [subject]: bright window highlights behind them bleed a thin warm red-orange glow into the edges of hair and shoulders, the rest of the image crisp, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera, film halation: bright window highlights behind [subject] bleed a thin red-orange glow into the edges of hair and shoulders.","kling":"[subject] in front of a bright window. Medium close-up, static camera, film halation, a red-orange glow around the highlights.","seedance":"镜头1：近景，固定镜头 — [subject] before a bright window; film halation, a thin red-orange glow bleeding around the highlights.","hailuo":"[subject] before a bright window, a warm red glow bleeding around the highlights [Static shot].","luma":"Static camera, medium close-up: [subject] before a bright window, a thin red-orange halation glow around the hair and shoulders.","runway":"Medium close-up, eye level, locked-off camera on [subject]; film halation, warm red glow around bright highlights."},"links":[{"label":"eyecannndy — halation","url":"https://eyecannndy.com/technique/halation"},{"label":"melies — halation","url":"https://melies.co/cinematic-techniques/effects/halation"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/9007155f4f07/technique-halation.mp4","w":720,"h":404,"duration":5,"blur":"data:image/webp;base64,UklGRu4AAABXRUJQVlA4IOIAAAAQBgCdASogABIAPtFWpk2oJCOiMBgIAQAaCWUAyOIgBZalpK1giiR5r3r9RmPBQqVTorjwO1587HAA/vbdNLn8WWFfHRBuYUmeq2grx1ruq6hg4JtjA4tLA3AcXwJL+4StaSYmHw/ZwP5rIFvEI2hRM2sRLgX+38u6T+6n9S7iKH8Eau5I8Rw3NA8F8+EvXAU5rtxa6e/YHISAUbNe4rs5+RtQ5tEBjeiOrmoSN3jzwN+M42aF+FfDqdnQicv2x8hc6HbhYLZiSjR9Pz7O89DcWbkxFNuLSpPcr3epcD8RYAAA","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"generated","note":"Generated: halation (highlights above ~70% blurred, the highlight itself subtracted so only the spill remains, tinted red-orange and added back — the glow hugs the white suit and model edges) on Tears of Steel (CC BY 3.0) 07:28–07:33, before | after wipe","bytes":233900,"addedAt":"2026-10-27"}},{"id":"limited-palette","group":"color","name":"Limited palette","aliases":["color palette","named palette","three-color palette","color script","Palette"],"definition":"The frame is built from a small set of named colors — usually three to five — repeated across costume, set and light.","use":"Keeps a multi-shot sequence consistent across generations; gives a brand film a recognizable look.","misuse":"Describing a mood ('moody', 'colorful') instead of naming colors lets each clip invent its own palette.","clause":"Limited palette: [subject] in a scene built only from mustard yellow, deep teal, cream and black, the same four colors repeated in costume, walls and light, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera: [subject] in a scene built from four colors only — mustard yellow, deep teal, cream and black — across costume, walls and light.","kling":"[subject] in a retro kitchen. Medium shot, static camera, color palette of mustard yellow, deep teal, cream and black.","seedance":"镜头1：中景，固定镜头 — [subject] in a retro kitchen; the palette limited to mustard yellow, deep teal, cream and black across costume, walls and light.","hailuo":"[subject] in a retro kitchen in mustard yellow, deep teal, cream and black [Static shot].","luma":"Static camera, medium shot: [subject] in a retro kitchen colored entirely in mustard yellow, deep teal, cream and black.","runway":"Medium shot, eye level, locked-off camera on [subject] in a retro kitchen; palette of mustard yellow, deep teal, cream and black."},"links":[{"label":"melies — palette","url":"https://melies.co/cinematic-techniques/color/palette"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/fe9c41b4d758/technique-limited-palette.mp4","w":720,"h":404,"duration":4.6,"blur":"data:image/webp;base64,UklGRsoAAABXRUJQVlA4IL4AAABQBQCdASogABIAPtFYpEuoJSOhsAgBABoJaAC/UaAAYHBIXzn3wQhda7Kh2hi+8ZRgqFAA/vKptdKOw/KiY+opCIPzBGBctZ18Mz2z54dz7LedbtOxv+olz6K+7YUu6n4/NK+e2RYhtRN17jchVEJ0GLcbCts3layY93GUkHKd2dC6cTleizJtsM7ZrPleJwod0HplYQPEb5Se7EADV9OU98eH38HpCQaXP7Cw1dAOVCoZOgVTV92sP5ig74AA","source":"https://commons.wikimedia.org/wiki/File:Spring_-_Blender_Open_Movie.webm","page":"https://studio.blender.org/films/spring/","credit":"Spring (2019) — © Blender Foundation | studio.blender.org — CC BY 4.0","rights":"generated","note":"Generated: palette bar computed from the shot itself (k-means in CIELAB over 9 frames: slate blue ~70%, oxblood ~14%, burnt orange ~12%, peach ~4%) under Spring (CC BY 4.0) 05:12–05:16, unaltered — the same four colors repeat in set, costume and light","bytes":128192,"addedAt":"2026-10-27"}},{"id":"faded-film","group":"color","name":"Faded film","aliases":["faded film","lifted blacks","matte look","washed-out","retro fade","Filmic Faded","Vintage Film Look"],"definition":"Blacks lifted to a milky gray and colors softened, like an aged print or a home-movie transfer.","use":"Memories, flashbacks, lo-fi lifestyle and fashion content, 70s–80s nostalgia.","misuse":"Lowering contrast globally makes the image muddy; the fade needs lifted blacks while the highlights stay clean.","clause":"Faded-film look on [subject]: lifted milky blacks, gently muted colors with a warm cast, clean highlights and soft grain, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, faded vintage film look: [subject] with lifted milky blacks, muted warm colors, clean highlights and soft grain.","kling":"[subject] at a summer picnic. Medium shot, static camera, faded vintage film, lifted blacks, muted warm colors, soft grain.","seedance":"镜头1：中景，固定镜头 — [subject] at a summer picnic; 复古胶片 faded look, lifted milky blacks, muted warm colors, soft grain.","hailuo":"[subject] at a summer picnic, the image faded with milky blacks and muted warm colors [Static shot].","luma":"Static camera, medium shot: [subject] at a summer picnic in a faded film look, milky lifted blacks, softly muted warm colors and gentle grain.","runway":"Medium shot, eye level, locked-off camera on [subject] at a picnic; faded film look with lifted blacks, muted warm colors, soft grain."},"links":[{"label":"melies — filmic faded","url":"https://melies.co/cinematic-techniques/color/filmic-faded"},{"label":"grokfilm — vintage film look","url":"https://grokfilm.app/#t/vintage-film-look"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/0b18ef5ec2f8/technique-faded-film.mp4","w":720,"h":404,"duration":5,"blur":"data:image/webp;base64,UklGRuQAAABXRUJQVlA4INgAAAAQBQCdASogABIAPtFWo0uoJKMhsAgBABoJQBb3ZYJ0kVNXXOLf0J+XfIw+raSs40PgAPA/HhGVB6tcvuWMmu9YmcOOBHcgxLykpos/hy09AsuiE35TCl1B/Smeorkdqma+GgcIwS3pv8eb/d7v5omOR9XtI73dEBQIcD3uU+hBwuqQaAfliSjEys/jvb9QOUhG0SD1yCKuwG/xQpzBggMMRT1v500Dfc7TxgqnNs5D3TO5U5yP9yLU3Hjv1qAaeT4CAZlWxbxSJDWrODfPcBTZBEKHaHAAAAA=","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"generated","note":"Generated: faded-film look (blacks lifted to a milky gray, saturation down ~40%, warm cast, highlights kept clean, soft grain) on Tears of Steel (CC BY 3.0) 00:27–00:32, before | after wipe","bytes":177157,"addedAt":"2026-10-27"}},{"id":"hard-cut","group":"editing","name":"Hard cut","aliases":["cut","straight cut","cut to","Hard cut transition","镜头切至"],"definition":"An instant switch from one shot to the next with no transition effect.","use":"The invisible default of editing: moves the story forward and changes size or angle on the same action.","misuse":"Cutting between two shots of similar size and angle feels like a glitch; dissolving where a cut belongs slows the pace.","clause":"Hard cut: shot 1 is a wide shot of [subject] entering the kitchen; at three seconds cut instantly to shot 2, a close-up of [subject]'s hands setting the keys on the counter, matching the action.","adapters":{"veo":"[00:00-00:03] Wide shot, static camera: [subject] enters the kitchen. [00:03-00:06] Close-up, static camera: [subject]'s hands set the keys down on the counter.","kling":"[Shot 1: Wide shot] [subject] enters the kitchen. [Shot 2: Close-up shot] [subject]'s hands set the keys down on the counter.","seedance":"镜头1：全景 — [subject] enters the kitchen. 镜头切至 镜头2：特写 — [subject]'s hands set the keys down on the counter.","hailuo":"Render two clips and cut between them: (1) [subject] enters the kitchen in a wide shot [Static shot]; (2) a close-up of [subject]'s hands setting down the keys [Static shot].","luma":"Two clips joined in the edit. Clip 1 — static camera, wide shot: [subject] enters the kitchen. Clip 2 — static camera, close-up: [subject]'s hands set the keys on the counter.","runway":"[00:00] Wide shot, locked-off camera: [subject] enters the kitchen. [00:03] Cut to a close-up of [subject]'s hands setting the keys on the counter."},"links":[{"label":"melies — transitions","url":"https://melies.co/cinematic-techniques/editing/transitions"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/d5ff2eb5ece4/technique-hard-cut.mp4","w":720,"h":302,"duration":5.4,"blur":"data:image/webp;base64,UklGRo4AAABXRUJQVlA4IIIAAACwBACdASogAA4APtFYpEwoJSOiMAgBABoJYgCdAGt7qhrez3THEaaDLQ/1al0QAP77GwtaHtCMi47k29EmW/Pu7PiPqxo6jUdnnyL7FE9MZAm9Eby9hzlcRHX3WcdFJ8/FxXPaRQECCAs3QvetWvTtPeKGXVM3xOMzoVRlrCGQNAAA","source":"https://commons.wikimedia.org/wiki/File:Sprite_Fright_-_Blender_Open_Movie-full_movie.webm","page":"https://studio.blender.org/films/sprite-fright/","credit":"Sprite Fright (2021) — © Blender Foundation | studio.blender.org — CC BY 4.0","rights":"cc-by","note":"Real edit, unmodified: Sprite Fright 01:00–01:06 — wide shot of the girl in the forest, hard cut to a close-up of her hands freeing a bird from plastic rings, hard cut to a medium shot of her holding it (cuts at 01:02.1 and 01:03.8)","bytes":198349,"addedAt":"2026-10-27"}},{"id":"match-cut","group":"editing","name":"Match cut","aliases":["Match cut","graphic match","match on action","form cut","Match motion"],"definition":"A cut that links two different shots through a shared shape, motion or composition, so one image seems to turn into the other.","use":"Leaps across time or place with meaning — a spinning coin becomes a spinning wheel, a product's silhouette becomes a landscape.","misuse":"If the shapes sit at different positions or sizes the bridge breaks; a dissolve softens the snap of the match.","clause":"Match cut: shot 1 ends on a close-up of a round clock face centered in frame behind [subject]; cut to shot 2, a full moon in exactly the same position and size over [subject] on a rooftop.","adapters":{"veo":"[00:00-00:04] Close-up, static camera: a round clock face centered in frame behind [subject]. [00:04-00:08] Match cut to a full moon in the same position and size, [subject] on a rooftop below.","kling":"[Shot 1: Close-up shot] A round clock face centered behind [subject]. [Shot 2: Wide shot] A full moon in the same position and size, [subject] on a rooftop below.","seedance":"镜头1：特写 — a round clock face centered behind [subject]. 镜头切至 镜头2：a full moon at the same position and size, [subject] on a rooftop below (match cut).","hailuo":"Render two clips with matching composition: (1) a round clock face centered behind [subject] [Static shot]; (2) a full moon in the same spot and size above [subject] on a rooftop [Static shot].","luma":"Two clips with matching frames, joined in the edit. Clip 1 — static camera: a round clock face centered behind [subject]. Clip 2 — static camera: a full moon in the same position and size above [subject] on a rooftop.","runway":"[00:00] Close-up, locked-off camera: a round clock face centered behind [subject]. [00:04] Match cut to a full moon in the same position and size above [subject] on a rooftop."},"links":[{"label":"eyecannndy — match cut","url":"https://eyecannndy.com/technique/match-cut"},{"label":"eyecannndy — match motion","url":"https://eyecannndy.com/technique/match-motion"},{"label":"melies — match cut","url":"https://melies.co/cinematic-techniques/editing/match-cut"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/961066fb61ed/technique-match-cut.mp4","w":720,"h":540,"duration":6,"blur":"data:image/webp;base64,UklGRrIAAABXRUJQVlA4IKYAAAAwBQCdASogABgAPtFWpEuoJKOhsAgBABoJaQAAXfENB6IcGIKhm+U30DDy6GpOgN8AAAD+9uDYRbjht5eV2dbCEBCWsxixKQlM9T4VTHvIg73HPYKCAtdDBM+cOkfs4GGMjIev3f7BDnP4pMZcYqw/2bmMLa4tEjx6by1V9eTLyBP7IKH/g5AkGkvqVBpryBSxlXbqlfwZHCq1BwCVswwKv2imfCAA","source":"https://archive.org/download/ChelovekskinoapparatomManWithAMovieCamera/Chelovek_s_kino-apparatom.MPEG","page":"https://archive.org/details/ChelovekskinoapparatomManWithAMovieCamera","credit":"Man with a Movie Camera (1929) — Dziga Vertov / VUFKU | archive.org — public domain","rights":"public-domain","note":"Real edit, unmodified: Man with a Movie Camera 11:48–11:54 — Vertov and Svilova match a woman's eyes opening behind a towel to window-blind slats opening and closing, cut back and forth on the same motion (the 'blinking' blinds)","bytes":313824,"addedAt":"2026-10-27"}},{"id":"jump-cut","group":"editing","name":"Jump cut","aliases":["Jump cut","time jump","vlog cut"],"definition":"A cut between two moments of the same shot with the camera unchanged, so the subject jumps in position or time.","use":"Compresses time, adds restless energy; the native rhythm of vlogs, talking-head ads and short-form video.","misuse":"Changing angle or size between the two pieces makes it an ordinary cut; random jumps with no rhythm look like broken footage.","clause":"Jump cuts: [subject] talks to the camera in a fixed medium close-up; every two seconds the clip jumps forward in time, their position and gesture shifting slightly while the framing stays identical.","adapters":{"veo":"[00:00-00:02] Medium close-up, static camera: [subject] talks to camera. [00:02-00:04] Jump cut, same framing: [subject] mid-gesture, slightly shifted. [00:04-00:06] Jump cut, same framing: [subject] laughs.","kling":"[Shot 1: Medium Close up] [subject] talks to camera. [Shot 2: Medium Close up] Same framing, [subject] mid-gesture, slightly shifted. [Shot 3: Medium Close up] Same framing, [subject] laughs.","seedance":"0-2秒：近景，固定镜头，[subject] talks to camera；2-4秒：same framing, [subject] mid-gesture and slightly shifted；4-6秒：same framing, [subject] laughs (jump cuts).","hailuo":"Render three clips with identical framing on [subject] talking to camera [Static shot] and jump-cut them together in the edit.","luma":"Three clips, each an identical static medium close-up of [subject] talking to camera a moment later; join them with jump cuts in the edit.","runway":"[00:00] Medium close-up, locked-off camera: [subject] talks to camera. [00:02] Jump cut, same framing: [subject] mid-gesture. [00:04] Jump cut, same framing: [subject] laughs."},"links":[{"label":"eyecannndy — jump cut","url":"https://eyecannndy.com/technique/jump-cut"},{"label":"melies — jump cut","url":"https://melies.co/cinematic-techniques/editing/jump-cut"},{"label":"grokfilm — jump cut","url":"https://grokfilm.app/#t/jump-cut"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/94a2d9e4f7ba/technique-jump-cut.mp4","w":720,"h":300,"duration":6,"blur":"data:image/webp;base64,UklGRtgAAABXRUJQVlA4IMwAAACwBACdASogAA4APtFUo0uoJKMhsAgBABoJQBOkGRTAFCgJRL9zrp/hdCZKcm/AAP7kQcDhoYAezZz4brRUNjUu14NkEv06qilqklMoqBbeQWhxjhNzeSK2Y0wGYofIT0RwKae4eiGzNDYnKwwg9P6/DIp36uv6ewWT+SpqjKRS1bsJSIkvEg76Hdk4WAo+Xt6x9kBFtKDMD5/bVuuO85PceDCtFW2w1OJa2t6GyO/qh6qeYGaSojgQLXQPCU/O7eg/V/8Se0q781Eh4AA=","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"generated","note":"Generated: four jump cuts made by keeping five 1.2-s pieces of one locked-off take in Tears of Steel (CC BY 3.0) 03:59–04:12 and dropping 1–2.5 s between them — the framing never changes, so the two men jump in position","bytes":155465,"addedAt":"2026-10-27"}},{"id":"smash-cut","group":"editing","name":"Smash cut","aliases":["smash cut","shock cut","tonal cut","Crash cut"],"definition":"An abrupt cut from one moment to a starkly contrasting one — quiet to loud, calm to chaos — for shock or comedy.","use":"Hooks and punchlines, horror jolts, 'expectation vs reality' ads.","misuse":"If the two shots match in tone and volume it is just a cut; any transition effect kills the shock.","clause":"Smash cut: shot 1, [subject] sits in a silent, dim library in a still medium shot; at three seconds cut abruptly to shot 2, [subject] screaming on a roaring rollercoaster in bright daylight, wide angle.","adapters":{"veo":"[00:00-00:03] Medium shot, static camera: [subject] in a silent, dim library. [00:03-00:06] Smash cut to a wide-angle shot of [subject] screaming on a roaring rollercoaster in bright daylight. SFX: the sudden roar of the ride.","kling":"[Shot 1: Medium shot] [subject] sits in a silent, dim library. [Shot 2: Wide shot] Sudden cut: [subject] screams on a roaring rollercoaster in bright daylight.","seedance":"镜头1：中景，固定镜头 — [subject] in a silent, dim library. 镜头切至 镜头2：[subject] screams on a rollercoaster in bright daylight <roaring wind and screams>.","hailuo":"Render two clips and cut hard between them: (1) [subject] in a silent, dim library [Static shot]; (2) [subject] screaming on a rollercoaster in bright daylight [Shake].","luma":"Two contrasting clips joined with a hard cut. Clip 1 — static camera: [subject] sits in a quiet, dim library. Clip 2 — wide angle: [subject] screams on a rollercoaster in bright daylight.","runway":"[00:00] Medium shot, locked-off camera: [subject] in a silent, dim library. [00:03] Smash cut to a wide shot of [subject] screaming on a rollercoaster in bright daylight."},"links":[{"label":"eyecannndy — crash cut","url":"https://eyecannndy.com/technique/crash-transition"},{"label":"melies — smash cut","url":"https://melies.co/cinematic-techniques/editing/smash-cut"},{"label":"grokfilm — smash cut","url":"https://grokfilm.app/#t/smash-cut"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/2674263e4cbd/technique-smash-cut.mp4","w":720,"h":306,"duration":5.5,"blur":"data:image/webp;base64,UklGRsQAAABXRUJQVlA4ILgAAACQBACdASogAA4APtFUo0uoJKMhsAgBABoJZgCdAywBvLxk5Pe01aLE09WoRdAA/upXVRux0ZHbWxdWHV0ShpkFqqpFM8Gv8w8CQ+tLituxKMl0IrkvpkKof/yljGsE2yYcPzr7p5fn+HOmOgULnLf8uZHTX4UrWURrPYjd+9J9X7zEU9ZAh2pxuq6S+8aT9TwJPP/K64GMX++Y0gB+128WhzDsdmLas8zCOTii2eNeeNyahw/YAAAA","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/Sintel.2010.1080p.mkv","page":"https://durian.blender.org/","credit":"Sintel (2010) — © Blender Foundation | durian.blender.org — CC BY 3.0","rights":"cc-by","note":"Real edit, unmodified: Sintel 03:23–03:29 — Sintel's quiet, tender smile at the baby dragon cuts with no transition to the dragon screeching into the lens, then to her hut in shambles; on the soundtrack the cut jumps ~16 dB from near-silence (previews are silent)","bytes":143349,"addedAt":"2026-10-27"}},{"id":"shot-reverse-shot","group":"editing","name":"Shot-reverse-shot","aliases":["shot reverse shot","Shot-Reverse-Shot Dialogue","Reverse shot","reverse angle","dialogue coverage"],"definition":"Alternating shots of two people facing each other, each seen roughly from the other's side, with both cameras kept on one side of the 180-degree line.","use":"The grammar of conversation: tracks who speaks and who reacts; builds tension as the framings tighten.","misuse":"Crossing the 180-degree line flips screen direction, and the two people suddenly seem to look the same way.","clause":"Shot-reverse-shot: shot 1, over [subject B]'s shoulder onto [subject] speaking, facing screen right; shot 2, the reverse over [subject]'s shoulder onto [subject B] answering, facing screen left; both cameras on the same side of the line.","adapters":{"veo":"[00:00-00:04] Over-the-shoulder medium close-up on [subject] speaking, facing screen right. [00:04-00:08] Reverse shot: over [subject]'s shoulder on [subject B] answering, facing screen left.","kling":"[Shot 1: Medium Close up] Over [subject B]'s shoulder, [subject] speaks, facing right. [Shot 2: Medium Close up] Reverse shot over [subject]'s shoulder, [subject B] answers, facing left.","seedance":"镜头1：近景 — over [subject B]'s shoulder, [subject] speaks facing screen right. 镜头切至 镜头2：近景 reverse shot over [subject]'s shoulder, [subject B] answers facing screen left.","hailuo":"Render two clips from the same side of the line: (1) over [subject B]'s shoulder on [subject] speaking [Static shot]; (2) over [subject]'s shoulder on [subject B] answering [Static shot].","luma":"Two clips joined in the edit. Clip 1 — static camera, over the shoulder: [subject] speaks facing screen right. Clip 2 — static camera, over the shoulder: [subject B] answers facing screen left.","runway":"[00:00] Medium close-up over [subject B]'s shoulder: [subject] speaks, facing screen right. [00:04] Reverse shot over [subject]'s shoulder: [subject B] answers, facing screen left."},"links":[{"label":"shot.cafe — tag: over-the-shoulder","url":"https://shot.cafe/tag/over-the-shoulder"},{"label":"grokfilm — shot-reverse-shot","url":"https://grokfilm.app/#t/shot-reverse-shot"},{"label":"melies — reverse angle","url":"https://melies.co/cinematic-techniques/camera-angles/reverse-angle"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/b9d6df2c6e28/technique-shot-reverse-shot.mp4","w":720,"h":300,"duration":5.9,"blur":"data:image/webp;base64,UklGRrwAAABXRUJQVlA4ILAAAABwBACdASogAA4APtFUo0uoJKMhsAgBABoJYgCdMoAKXXi4LwsMkiF6iCo+AAD+/ksT1o4Sdt0aEcM3zKBvEyp5iE8cGDqioOBrH0LNxqCGFAy6tbfUe/keJC7j6m1/Z22KEt56EjBpFlMcWwUVPHds3KLK+pLyAkWxTCPdg4y0KrpuEnJm0s0XkBGk0J1ISrNfI+EfrUC2fWrJ81nz6iSn9gsutTRL1SF3e1V+gQAAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Real edit, unmodified: Tears of Steel 06:24–06:30 — Celia (facing screen left, over Thom's shoulder) and Thom (facing screen right) alternate three times, both cameras on the same side of the 180-degree line","bytes":140493,"addedAt":"2026-10-27"}},{"id":"cross-dissolve","group":"editing","name":"Cross-dissolve","aliases":["dissolve","cross dissolve","crossfade","lap dissolve","叠化"],"definition":"One shot fades out while the next fades in, the two overlapping for a moment.","use":"Passage of time, memories, gentle scene changes, the softness of a montage.","misuse":"Dissolving between shots in the same scene and moment feels sleepy; a fade to black is a pause, not a blend.","clause":"Cross-dissolve: shot 1, [subject] at a window in winter light in a static medium shot; over one second it dissolves into shot 2, the same window in spring sunlight with [subject] gone.","adapters":{"veo":"[00:00-00:04] Medium shot, static camera: [subject] at a window in winter light. [00:04-00:08] Slow dissolve to the same window in spring sunlight, the room now empty.","kling":"[Shot 1: Medium shot] [subject] at a window in winter light. [Shot 2: Medium shot] Soft dissolve to the same window in spring sunlight, empty.","seedance":"镜头1：中景，固定镜头 — [subject] at a window in winter light. 第4s 自然叠化转场 — 镜头2：the same window in spring sunlight, [subject] gone.","hailuo":"Render two clips with the same static framing — (1) [subject] at a window in winter light, (2) the empty window in spring sunlight [Static shot] — and dissolve between them in the edit.","luma":"Two clips with identical static framing, blended with a one-second cross-dissolve in the edit: [subject] at a window in winter light, then the empty window in spring sunlight.","runway":"[00:00] Medium shot, locked-off camera: [subject] at a window in winter light. [00:04] The image slowly dissolves into the same window in spring sunlight, the room now empty."},"links":[{"label":"eyecannndy — cross dissolve","url":"https://eyecannndy.com/technique/transition"},{"label":"melies — dissolve","url":"https://melies.co/cinematic-techniques/editing/dissolve"},{"label":"grokfilm — dissolve","url":"https://grokfilm.app/#t/dissolve"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/a0038b57cedb/technique-cross-dissolve.mp4","w":720,"h":306,"duration":5.4,"blur":"data:image/webp;base64,UklGRlwAAABXRUJQVlA4IFAAAADwAwCdASogAA4APtFYpEwoJSOiMAgBABoJZQAAW+jLNIfh+uCoW9gAAP7yoyc86Ok9m8wipBjY6CNvB8IxvULjJrGWmLcY39grZWTfY8vAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/Sintel.2010.1080p.mkv","page":"https://durian.blender.org/","credit":"Sintel (2010) — © Blender Foundation | durian.blender.org — CC BY 3.0","rights":"cc-by","note":"Real edit, unmodified: Sintel 06:03–06:09 (journey montage) — Sintel's face dissolves into the night moon, the moon dissolves into a blazing morning sun in the same spot, then the desert: overlapping dissolves that read as days passing","bytes":85867,"addedAt":"2026-10-27"}},{"id":"whip-transition","group":"editing","name":"Whip-pan transition","aliases":["whip transition","swish transition","whip pan transition","快速横移转场"],"definition":"Two shots joined inside matching fast camera whips, so the motion blur hides the cut and carries momentum.","use":"High-energy travel, outfit and before/after edits; jumping locations without losing pace.","misuse":"Whips in opposite directions or at different speeds expose the seam; overused, it turns the edit into a gimmick.","clause":"Whip transition: shot 1 ends with the camera whipping right off [subject] in a café into motion blur; shot 2 begins inside the same rightward blur and settles on [subject] on a beach, centered.","adapters":{"veo":"[00:00-00:03] Medium shot of [subject] in a café, ending in a fast whip pan right into motion blur. [00:03-00:06] Continuing the rightward whip blur, the camera settles on [subject] on a beach, centered.","kling":"[Shot 1: Medium shot] [subject] in a café, the camera whips right into heavy motion blur. [Shot 2: Medium shot] From the same rightward blur, the camera settles on [subject] on a beach, centered.","seedance":"0-3秒：中景，[subject] in a café；第3s 快速向右横移转场；3-6秒：the camera settles on [subject] on a beach, centered.","hailuo":"Render two clips: (1) [subject] in a café, ending [Pan right] in a very fast blur; (2) starting in a fast rightward blur [Pan right] and settling on [subject] on a beach [Static shot]; join them inside the blur.","luma":"Two clips joined inside matching blur. Clip 1 — pan right, very fast at the end: [subject] in a café streaks into motion blur. Clip 2 — pan right, slowing down: from the same blur the camera settles on [subject] on a beach.","runway":"[00:00] Medium shot of [subject] in a café; the camera whips right into motion blur. [00:03] From the same blur, the camera settles on [subject] on a beach, centered."},"links":[{"label":"eyecannndy — whip transition","url":"https://eyecannndy.com/technique/transition"},{"label":"melies — transitions","url":"https://melies.co/cinematic-techniques/editing/transitions"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/eea56cade16c/technique-whip-transition.mp4","w":720,"h":300,"duration":4.2,"blur":"data:image/webp;base64,UklGRsoAAABXRUJQVlA4IL4AAADQBACdASogAA4APtFUpEuoJKOhsAgBABoJYgCw7ywToiRA92xY48gc972lXg+uAAD+94MNH3Ym363wFpBhvXobiIjyVWZPHySE8HLxaefgtYk7jbZN8N4ZvTt4mnpW66jULPdMFk8wnl8Wf0f4TGpak7pKjCrp2Fp+fytXg4PvtgpviYL9wptT5vF3+i+2m9wi9ov5MZeWfksoEmbLJbfcgeTeLjGK6901WR0ZRq8F7SZ5NY6pqiYxQP0bcAAA","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"generated","note":"Generated: whip-pan transition between two unrelated shots of Tears of Steel (CC BY 3.0) — Celia on the canal bridge (05:20) whips right into horizontal motion blur, the cut sits at peak blur, and the Captain indoors (06:05) settles out of the same rightward blur (blur and displacement eased in and out frame by frame)","bytes":73592,"addedAt":"2026-10-27"}},{"id":"j-l-cut","group":"editing","name":"J-cut and L-cut","aliases":["J-cut","L-cut","split edit","audio lead","sound bridge"],"definition":"Picture and sound change at different moments: in a J-cut the next shot's audio starts early; in an L-cut the previous shot's audio runs on under the new picture.","use":"Smooth, natural dialogue and narration; pulls the audience into the next scene by ear before the eye.","misuse":"Cutting sound and picture together everywhere feels choppy; long overlaps blur who is speaking.","clause":"J-cut: over a wide shot of [subject] walking toward a train station, the sound of the arriving train and the platform announcement begins a second early; then the picture cuts to the platform as the train pulls in.","adapters":{"veo":"[00:00-00:04] Wide shot, static camera: [subject] walks toward a train station. SFX: an arriving train and a platform announcement begin before the cut. [00:04-00:08] Wide shot of the platform as the train pulls in.","kling":"[Shot 1: Wide shot] [subject] walks toward a train station; the sound of an arriving train starts early. [Shot 2: Wide shot] The platform as the train pulls in.","seedance":"镜头1：全景 — [subject] walks toward a train station <the arriving train and a platform announcement start before the cut>. 镜头切至 镜头2：the platform as the train pulls in <train brakes>.","hailuo":"Render two silent clips — [subject] walking to a train station [Tracking shot], then the platform as a train pulls in [Static shot] — and start the second clip's sound one second early in the edit.","luma":"Two clips joined in the edit with the second clip's sound starting one second early: [subject] walks toward a train station, then the platform as the train pulls in.","runway":"[00:00] Wide shot: [subject] walks toward a train station. [00:04] Wide shot of the platform as the train pulls in; in the edit, start this shot's sound one second before the cut."},"links":[{"label":"melies — l cut visual","url":"https://melies.co/cinematic-techniques/editing/l-cut-visual"},{"label":"grokfilm — j-cut","url":"https://grokfilm.app/#t/j-cut"},{"label":"grokfilm — l-cut","url":"https://grokfilm.app/#t/l-cut"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/f45aa05134b1/technique-j-l-cut.mp4","w":720,"h":404,"duration":4.8,"blur":"data:image/webp;base64,UklGRt4AAABXRUJQVlA4INIAAABwBQCdASogABIAPtFSokuoJKMhsAgBABoJbACsIUymAUgAUfDwGjRAVKIHRhZl6oFFGgAAAPqbw4ojt4ySkFlX2KwDie/02AG0YCPbZj5aH909NHuX0Gc6icVh0lYVyQbTDmPWG5sazws7KOBQAKJ1UP/5wCuiT0x74HL1HbO23pJqpb2+0N2pQv02sQvxRtFanjlCS22+J9vb1O2Igu2qFjG+PrKRT62O0F3Ej4lE8kFD01ZldyUDnFb44j5jBg8C98FANJAA4IxscK6Mr8zkAAA=","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"generated","note":"Generated from a real L-cut in Tears of Steel (CC BY 3.0) 06:00–06:04: Thom's line 'But that's no reason to destroy the world' (≈06:01.2–06:02.9, checked against the film's music-and-effects stem) keeps playing after the picture cuts to Celia at 06:02.1. Previews are silent, so speaker-tagged subtitles and a timeline strip show the sound trailing the picture; a J-cut is the mirror image (the next shot's sound starts before its picture)","bytes":100470,"addedAt":"2026-10-27"}},{"id":"speed-ramp","group":"editing","name":"Speed ramp","aliases":["speed ramping","time ramp","ramp","回弹变速"],"definition":"Playback speed changes inside one shot — rushing, slowing to near freeze, then rushing again.","use":"Action and sports highlights, fashion reveals, beat-synced edits; spotlights one instant inside continuous motion.","misuse":"Cutting to a separate slow-motion shot breaks continuity; a ramp without a clear peak moment feels random.","clause":"Speed ramp: [subject] sprints toward the camera at real speed, slows to extreme slow motion at the moment their foot leaves the ground mid-jump, then snaps back to real speed as they land, camera static.","adapters":{"veo":"[00:00-00:02] Static camera: [subject] sprints toward camera at real speed. [00:02-00:05] Extreme slow motion as they leave the ground mid-jump. [00:05-00:06] Snap back to real speed as they land.","kling":"[subject] sprints and jumps toward the camera. Static camera, speed ramp: real speed, then extreme slow motion at the peak of the jump, then snapping back to real speed on landing.","seedance":"镜头1：固定镜头，回弹变速 — [subject] sprints toward camera at real speed, slows to extreme slow motion at the top of the jump, then snaps back to real speed on landing.","hailuo":"[subject] sprints toward the camera and leaps, the moment in the air slowing almost to a stop before snapping back to real speed on landing [Static shot].","luma":"Static camera: [subject] sprints toward the lens, the leap slowing into extreme slow motion at its peak, then returning to real speed as they land.","runway":"Medium-wide shot, locked-off camera: [subject] sprints toward the lens; at the peak of the jump the action slows to extreme slow motion, then returns to real speed on landing."},"links":[{"label":"eyecannndy — speed ramping","url":"https://eyecannndy.com/technique/speed-ramping"},{"label":"melies — speed ramp","url":"https://melies.co/cinematic-techniques/time-and-motion/speed-ramp"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/3558929452e3/technique-speed-ramp.mp4","w":720,"h":302,"duration":3.4,"blur":"data:image/webp;base64,UklGRq4AAABXRUJQVlA4IKIAAAAwBACdASogAA4APtFWpEuoJKOhsAgBABoJYgAIEAO8MY4zYGmdx5wTkUAA/u9N6vobzq0ih71bOTnbrQPJmhFw7rSPNkLY+wzB9rBf4uGXAfx+t7bUJhZ73xL3PI72M32ZqX4CswPOuE2LAy+AOW6AtTQczDVS1JY/ME5GiLTHH56QdvAPcP8Dhjii8fJc9a59cOXstXMq1KzZpU4aN/s9gAA=","source":"https://commons.wikimedia.org/wiki/File:Charge_-_Blender_Open_Movie-full_movie.webm","page":"https://studio.blender.org/films/charge/","credit":"Charge (2022) — © Blender Foundation | studio.blender.org — CC BY 4.0","rights":"generated","note":"Generated: speed ramp built from one continuous shot of Charge (CC BY 4.0) 01:24.0–01:25.8 — real speed, easing down to 0.18× as the man leaps out of the smoke, then back to ~1× (motion-interpolated to 96 fps with ffmpeg minterpolate, then time-remapped; on-screen readout shows the speed)","bytes":79253,"addedAt":"2026-10-27"}},{"id":"slow-motion","group":"editing","name":"Slow motion","aliases":["slo-mo","slow mo","overcranked","high frame rate"],"definition":"Action plays slower than real time, stretching a moment so detail and emotion can be read.","use":"Beauty, product pours and splashes, emotional climaxes, sports form.","misuse":"Slowing everything makes nothing special; asked for 'slow' camera movement, models often slow the camera rather than time — name the action that slows.","clause":"Slow motion: [subject] flips their hair in a sunlit field, the strands and dust drifting at about a quarter of real speed, camera static in medium close-up, ending as the hair settles.","adapters":{"veo":"Medium close-up, static camera, slow motion: [subject] flips their hair in a sunlit field, strands and dust drifting at a quarter speed, ending as the hair settles.","kling":"[subject] flips their hair in a sunlit field in slow motion, strands and dust drifting. Medium Close up, static camera, ending as the hair settles.","seedance":"镜头1：近景，固定镜头 — [subject] flips their hair in a sunlit field in slow motion, strands and dust drifting at quarter speed until the hair settles.","hailuo":"[subject] flips their hair in a sunlit field in slow motion, strands drifting until they settle [Static shot].","luma":"Static camera, medium close-up: [subject] flips their hair in a sunlit field in slow motion, strands and dust drifting gently until the hair settles.","runway":"Medium close-up, locked-off camera: [subject] flips their hair in a sunlit field in slow motion; strands and dust drift until the hair settles."},"links":[{"label":"eyecannndy — slow motion","url":"https://eyecannndy.com/technique/slow-motion"},{"label":"melies — slow motion","url":"https://melies.co/cinematic-techniques/time-and-motion/slow-motion"},{"label":"grokfilm — slow motion","url":"https://grokfilm.app/#t/slow-motion"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/691075a0ce73/technique-slow-motion.mp4","w":720,"h":540,"duration":5.5,"blur":"data:image/webp;base64,UklGRuwAAABXRUJQVlA4IOAAAAAQBQCdASogABgAPtFcqU2oJSQiKAqpABoJaQAD5zkK+0NNUYePCrhC8yrsDOM3TV4AAP7qVsyuu61tnaK4vGDo2Ep27JjTFmJfpgRcThzLLlE74OBnC86M4TkcvnxLO0OCKQA5nJkgdY523V22m8f0qoCqhhl/TMXYBhW6vWbUS6tQPbSh2X5zSWcoP38MQf31xetNeZKvaagHpUAXPmu2ypFOHBKMvZl4yujUv3Jz0moE7PsEk0gfFS3z24pWXP/PN9D9SKYzTaJifDHZQnJyLyoEf+1WAc+SlDb7WAAAAA==","source":"https://archive.org/download/ChelovekskinoapparatomManWithAMovieCamera/Chelovek_s_kino-apparatom.MPEG","page":"https://archive.org/details/ChelovekskinoapparatomManWithAMovieCamera","credit":"Man with a Movie Camera (1929) — Dziga Vertov / VUFKU | archive.org — public domain","rights":"public-domain","note":"Real slow motion, unmodified: Man with a Movie Camera 46:12–46:17 — a pole vault shot overcranked in camera, so a ~1.5 s jump stretches over 5.5 s and the vaulter floats across the bar","bytes":155603,"addedAt":"2026-10-27"}},{"id":"one-take","group":"editing","name":"One-take (oner)","aliases":["oner","long take","single take","Continuous, seamless shot","Generate single shot.","一镜到底","One-er"],"definition":"A whole sequence plays as one continuous shot; the camera moves to reframe instead of the editor cutting.","use":"Immersion and virtuosity, real-time tension, tours of a space, product journeys.","misuse":"Hidden or model-inserted cuts break the promise; a camera that wanders without beats feels like raw footage.","clause":"One take: the camera follows [subject] in a single continuous shot from the street, through the door and down the stairs into the club, ending on a medium shot of [subject] at the bar.","adapters":{"veo":"Single continuous tracking shot following [subject] from the street, through the door and down the stairs into the club, ending on a medium shot of [subject] at the bar.","kling":"[subject] walks from the street into a club. One continuous tracking shot following them through the door and down the stairs, smooth, ending on a medium shot at the bar.","seedance":"镜头1：一镜到底，跟拍 — the camera follows [subject] from the street, through the door and down the stairs into the club, ending on a medium shot at the bar; no cuts.","hailuo":"[subject] walks from the street through the door [Tracking shot], then down the stairs into the club [Tracking shot], stopping at the bar [Static shot].","luma":"Tracking shot, smooth and continuous: the camera follows [subject] from the street through the door and down the stairs into the club, ending on a medium shot at the bar.","runway":"Medium shot, eye level, steady tracking shot following [subject] from the street through the door and down the stairs into the club, ending at the bar. Continuous, seamless shot."},"links":[{"label":"melies — one er","url":"https://melies.co/cinematic-techniques/time-and-motion/one-er"},{"label":"grokfilm — one-er (oner)","url":"https://grokfilm.app/#t/one-er-oner"},{"label":"melies — long take","url":"https://melies.co/cinematic-techniques/time-and-motion/long-take"}],"media":{"type":"video","file":"https://s3.varg.ai/how-to/previews/868134df28ca/technique-one-take.mp4","w":720,"h":300,"duration":6,"blur":"data:image/webp;base64,UklGRsYAAABXRUJQVlA4ILoAAACQBACdASogAA4APtFUo0uoJKMhsAgBABoJYwC2yywToIwSxm+73L9+OoQp0AAA/id4ebq3XDZGQu/Y0YV3mhX1SfSvXCxECgZs2LTVnSasbm3lSB7RLTIJR0ffQCfcGn93DTMCEgMSi6kz2gVxoPofVquaS9mFVJYc3yba4/HSR2oFfiI8rocUqH8v5UI317sZL7xd2DC/RQ4SOYMFNaU1xN0Xl/No7hwv6rvtmSt1klQRnTHWwTRAAAA=","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"generated","note":"Generated: 24 s of a single 31.6-s take in Tears of Steel (CC BY 3.0) 04:22–04:46, played at 4× (frame-blended) so the whole move fits — Thom walks toward the camera, it pans to follow him to the railing, and the robot rises into frame, all without a cut","bytes":374016,"addedAt":"2026-10-27"}},{"id":"rule-of-thirds","group":"composition","name":"Rule of thirds","aliases":["rule of thirds","thirds","off-center framing"],"definition":"The frame is split into a 3×3 grid; key subjects and horizons sit on the lines or their crossings rather than dead center.","use":"Natural, balanced framing with room for the scene; the default for interviews and landscapes.","misuse":"A subject on a third who looks out of the short side of the frame feels cramped; applied rigidly, every shot becomes predictable.","clause":"Rule of thirds: [subject] stands on the right vertical third with the eyes on the upper horizontal third, looking into open space on the left, the horizon on the lower third, camera static in medium-wide shot.","adapters":{"veo":"Medium-wide shot, static camera, rule-of-thirds composition: [subject] on the right third, eyes on the upper third, looking into open space on the left.","kling":"[subject] stands on a beach. Medium wide shot, static camera, rule of thirds, the subject on the right third looking left into open space.","seedance":"镜头1：固定镜头 — [subject] on a beach on the right third, eyes on the upper third, looking into open space on the left; the horizon on the lower third.","hailuo":"[subject] stands on the right third of the frame looking left into open space, the horizon low [Static shot].","luma":"Static camera, medium-wide shot: [subject] stands on the right third, eyes on the upper third line, gazing into open space on the left, the horizon low.","runway":"Medium-wide shot, eye level, locked-off camera; [subject] on the right third looking left into open space, horizon on the lower third."},"links":[{"label":"melies — rule of thirds","url":"https://melies.co/cinematic-techniques/composition/rule-of-thirds"},{"label":"grokfilm — rule of thirds","url":"https://grokfilm.app/#t/rule-of-thirds"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/ab4815c1eeaf/technique-rule-of-thirds.webp","w":960,"h":401,"blur":"data:image/webp;base64,UklGRrwAAABXRUJQVlA4ILAAAABQBACdASogAA4APtFWpkuoJKOhsAgBABoJQBOgZYJ0kU/IyFPmu+ouhiIAAP7zKDD9SELL5jlAZNzQODXPhFyOmzUeNGe4F4XIlrOM9fbixB+Awyr9QPGxHVIuK5OrSJzetE82b9MsNc533nbGJvmq931LxjEwwG/dRo9BRmWTbTG+Z/FwS7J277lm1zk+12ViyjySo8B7PtZEmmOdKUfcHw/qUX+ZCgBkOj2xc3UAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Rule of thirds: the old man's eyes sit on the upper-left crossing of the grid and the robot fills the right third, leaving the center open. Tears of Steel at 8:53; thin thirds-grid guide overlay added.","bytes":27648,"addedAt":"2026-10-27"}},{"id":"center-symmetry","group":"composition","name":"Centered symmetry","aliases":["central framing","symmetrical composition","centered","one-point perspective","symmetry","Vanishing Point","Centered Composition"],"definition":"The subject sits dead center in a frame balanced left to right, often with lines converging on a central vanishing point.","use":"Order, control, formality, deadpan comedy; strong graphic thumbnails and product heroes.","misuse":"Almost-but-not-quite symmetry looks like a mistake; symmetry without depth lines feels flat rather than formal.","clause":"Centered symmetry: [subject] stands exactly in the center of a long corridor, walls and ceiling lines converging on a vanishing point behind their head, both halves of the frame mirrored, camera static at eye level.","adapters":{"veo":"Wide shot, static camera at eye level, symmetrical composition: [subject] exactly centered in a long corridor, lines converging on a vanishing point behind the head.","kling":"[subject] stands in a long corridor. Centered composition, perfectly symmetrical, static camera at eye level, lines converging behind the subject.","seedance":"镜头1：固定镜头 — [subject] exactly centered in a long corridor; symmetrical composition, walls and ceiling converging on a vanishing point behind the head.","hailuo":"[subject] stands dead center in a long symmetrical corridor, lines converging behind their head [Static shot].","luma":"Static camera at eye level, centered composition: [subject] stands exactly in the middle of a long, mirrored corridor, its lines converging behind their head.","runway":"Wide shot, eye level, locked-off camera; [subject] exactly centered in a symmetrical corridor, one-point perspective converging behind the head."},"links":[{"label":"eyecannndy — central framing","url":"https://eyecannndy.com/technique/central-framing"},{"label":"melies — symmetry","url":"https://melies.co/cinematic-techniques/composition/symmetry"},{"label":"grokfilm — symmetry","url":"https://grokfilm.app/#t/symmetry"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/0a03d9a6300d/technique-center-symmetry.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRtwAAABXRUJQVlA4INAAAAAwBgCdASogABIAPtFUo0uoJKMhsAgBABoJbACdMoR+N6rw5rhY/4DMpnLsLpT6JYnZLMONi6R2oB3AAP7C+0ASkKFGAPdKW6IxELZnP/Zbfuf5jL4CZpj3FH83/bX1DReHU8cFuaXyGE3cmgYw0peDJPhRlb0FsKUa/FRwnObD2BMWnU7knSFP+CD3Ewlr7Bnv8haowXwza7702yy0mFHyX9HRw3ezJE/6MeElwn5XapE4EEw08/nW5c24nNh5VfZlhTpnkwap0OkQRBoJ+AAA","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/BBB/bbb_sunflower_1080p_30fps_normal.mp4.zip","page":"https://peach.blender.org/","credit":"Big Buck Bunny (2008) — © Blender Foundation | www.bigbuckbunny.org — CC BY 3.0","rights":"cc-by","note":"Centered symmetry: the flying squirrel stands dead center on an arching branch, arms spread, the frame balanced left to right against plain sky. Big Buck Bunny at 6:45 (2013 1080p edition).","bytes":16546,"addedAt":"2026-10-27"}},{"id":"leading-lines","group":"composition","name":"Leading lines","aliases":["leading lines","converging lines","guide lines"],"definition":"Lines in the scene — roads, rails, fences, light streaks — run toward the subject and pull the eye to it.","use":"Directs attention in busy environments; adds depth and a sense of journey to travel, automotive and architecture shots.","misuse":"Lines that lead out of frame or into empty space drain attention away; too many competing lines create clutter.","clause":"Leading lines: railway tracks start wide at the bottom corners and converge toward [subject] standing on the tracks at the center of the frame, camera static, low and level.","adapters":{"veo":"Wide shot, static camera low and level: railway tracks converge from the bottom corners toward [subject] standing on the tracks at the center.","kling":"[subject] stands on railway tracks. Wide shot, static camera low and level, tracks leading from the bottom corners to the subject at the center.","seedance":"镜头1：全景，固定镜头 — [subject] on railway tracks; the rails converge from the bottom corners toward [subject] at the center.","hailuo":"Railway tracks lead from the bottom corners toward [subject] standing at the center [Static shot].","luma":"Static camera, low and level, wide shot: railway tracks run from the bottom corners and meet at [subject] standing in the center.","runway":"Wide shot, low angle, locked-off camera; railway tracks converge from the bottom corners to [subject] standing at the center."},"links":[{"label":"melies — leading lines","url":"https://melies.co/cinematic-techniques/composition/leading-lines"},{"label":"grokfilm — leading lines","url":"https://grokfilm.app/#t/leading-lines"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/ab2ea06ecb67/technique-leading-lines.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRqYAAABXRUJQVlA4IJoAAADwBACdASogABIAPtFYo0uoJSMhsAgBABoJaQAAQdTfdvz9O2ixTFM0HwY+bNgN24AA/vS9hgsbvX3qR9Z3SubaUi3ySplqls6PIUQ5EiboT28B0sP9WpwMAyPATTwe4pyTD+yjsWVk4mCIS7QFt4Yun52qObVWprQslyHhg+HQFv9nSCUFa1z4h/x9M28RI8qvczar51iOhAAA","source":"https://archive.org/download/ChelovekskinoapparatomManWithAMovieCamera/Chelovek_s_kino-apparatom.ogv","page":"https://archive.org/details/ChelovekskinoapparatomManWithAMovieCamera","credit":"Man with a Movie Camera (1929), Dziga Vertov / VUFKU — public domain","rights":"public-domain","note":"Leading lines: the rails and the row of telegraph poles converge on the oncoming train, pulling the eye down the track past the cameraman lying across it. Man with a Movie Camera (1929) at 9:01; film borders cropped, 4:3 frame pillarboxed (400×300 archive copy, soft).","bytes":15412,"addedAt":"2026-10-27"}},{"id":"frame-within-frame","group":"composition","name":"Frame within a frame","aliases":["frame within a frame","natural frame","doorway framing","window framing","Frame in a frame","Framing Within Frame"],"definition":"An element in the scene — a doorway, window, mirror or arch — forms a second border around the subject.","use":"Isolation or entrapment, voyeurism, depth; elegant product and interior compositions.","misuse":"A frame that does not surround the subject's area just adds clutter; a busy, sharp foreground frame competes with the subject.","clause":"Frame within a frame: [subject] seen through an open doorway from a dark hallway, the door frame forming a bright rectangle around them at the center, camera static at eye level.","adapters":{"veo":"Medium-wide shot, static camera at eye level: from a dark hallway, [subject] seen through an open doorway, the door frame a bright rectangle around them at the center.","kling":"[subject] sits in a bright room. Seen from a dark hallway through an open doorway, the door frame around them, centered, static camera.","seedance":"镜头1：固定镜头 — from a dark hallway, [subject] is seen through an open doorway; the door frame forms a bright rectangle around them at the center.","hailuo":"From a dark hallway, [subject] is seen through an open doorway that frames them at the center [Static shot].","luma":"Static camera at eye level: from a dark hallway, [subject] appears through an open doorway, the door frame forming a bright rectangle around them at the center.","runway":"Medium-wide shot, eye level, locked-off camera in a dark hallway; [subject] framed by an open doorway at the center of the frame."},"links":[{"label":"shot.cafe — tag: mirror","url":"https://shot.cafe/tag/mirror"},{"label":"shot.cafe — tag: frame in a frame","url":"https://shot.cafe/tag/frame%20in%20a%20frame"},{"label":"melies — frame in frame","url":"https://melies.co/cinematic-techniques/composition/frame-in-frame"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/2d74e9362353/technique-frame-within-frame.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRogAAABXRUJQVlA4IHwAAADQBACdASogABIAPslWn0unpSKhsAwA8BkJQApgAMc7OrFFaQFop+fHWI4ajS8cqAD+94JupUG2cK4QzvgkK8UGU8r1XPZIbO/qUrueuphPz0OOs9bv/1OTxTIBwWpzDpu9Eg/J5CARuB/w+Vo8hlKomxqF3HDqEyJtmVoA","source":"https://archive.org/download/Nosferatu1922HD","page":"https://archive.org/details/Nosferatu1922HD","credit":"Nosferatu (1922), F. W. Murnau / Prana-Film — public domain","rights":"public-domain","note":"Frame within a frame: the dark city-gate arch forms a second border around Orlok as he carries a coffin toward the ship beyond. Nosferatu (1922) at 1:06:56; 4:3 frame pillarboxed to 16:9.","bytes":29610,"addedAt":"2026-10-27"}},{"id":"negative-space","group":"composition","name":"Negative space","aliases":["negative space","empty space","minimalist framing","copy space"],"definition":"Large areas of quiet, empty frame — sky, wall, water — surround a small subject.","use":"Loneliness, calm, luxury minimalism; leaves room for titles and captions in ads (copy space).","misuse":"Space that is busy or textured stops reading as empty; a large subject with a small margin is just loose framing.","clause":"Negative space: [subject] small in the lower-right corner against a vast, plain pale sky that fills the rest of the frame, camera static, the upper-left two-thirds left open.","adapters":{"veo":"Wide shot, static camera: [subject] small in the lower-right corner against a vast plain pale sky filling the rest of the frame, the upper left open.","kling":"[subject] stands on a hill. Wide shot, static camera, minimalist composition, the subject small in the lower right, a vast plain sky filling the frame.","seedance":"镜头1：全景，固定镜头 — [subject] small in the lower-right corner; a vast plain pale sky fills the rest; keep the upper-left two-thirds empty.","hailuo":"[subject] small in the lower-right corner beneath a vast plain pale sky [Static shot].","luma":"Static camera, wide shot: [subject] sits small in the lower-right corner, a vast plain pale sky filling the rest of the frame with calm open space.","runway":"Wide shot, eye level, locked-off camera; [subject] small in the lower-right corner under a vast plain pale sky, open space across the upper left."},"links":[{"label":"melies — negative space","url":"https://melies.co/cinematic-techniques/composition/negative-space"},{"label":"grokfilm — negative space","url":"https://grokfilm.app/#t/negative-space"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/76166e4b9122/technique-negative-space.webp","w":960,"h":409,"blur":"data:image/webp;base64,UklGRmIAAABXRUJQVlA4IFYAAAAQBACdASogAA4APtFWo0uoJKMhsAgBABoJYgCdAGle29u7/DvneuQZyAD+/Y4lmQlOyGnEfnDc30M91Lik9byF3GNeVsbTzKsUBibW0lJZofC0y2/QAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/Sintel.2010.1080p.mkv","page":"https://durian.blender.org/","credit":"Sintel (2010) — © Blender Foundation | durian.blender.org — CC BY 3.0","rights":"cc-by","note":"Negative space: the young dragon glides small through a vast, empty pale sky that fills most of the frame. Sintel at 5:19.","bytes":5354,"addedAt":"2026-10-27"}},{"id":"foreground-layering","group":"composition","name":"Foreground layering","aliases":["depth layering","foreground interest","dirty frame","deep staging","layered composition","Layered Depth"],"definition":"The frame is built in planes — something soft in the foreground, the subject in the middle, a world behind — to create depth.","use":"Makes generated images feel photographed and three-dimensional; voyeuristic or immersive points of view.","misuse":"A foreground object that covers the face, or is sharper than the subject, steals the focus.","clause":"Foreground layering: out-of-focus leaves fill the left edge of the foreground, [subject] sharp in the middle ground on the right third, a misty valley behind, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level, layered depth: soft out-of-focus leaves at the left edge, [subject] sharp in the middle ground on the right third, a misty valley behind.","kling":"[subject] in a forest. Medium shot, static camera, blurred leaves in the foreground on the left, the subject sharp on the right third, a misty valley behind.","seedance":"镜头1：中景，固定镜头 — soft blurred leaves in the left foreground, [subject] sharp on the right third, a misty valley in the background.","hailuo":"Blurred leaves in the left foreground, [subject] sharp on the right, a misty valley behind [Static shot].","luma":"Static camera at eye level, medium shot: soft leaves glow in the left foreground, [subject] stands sharp on the right third, and a misty valley stretches behind.","runway":"Medium shot, eye level, locked-off camera; soft leaves in the left foreground, [subject] sharp on the right third, misty valley behind; 50mm lens."},"links":[{"label":"melies — foreground interest","url":"https://melies.co/cinematic-techniques/composition/foreground-interest"},{"label":"grokfilm — foreground interest","url":"https://grokfilm.app/#t/foreground-interest"},{"label":"melies — layered depth","url":"https://melies.co/cinematic-techniques/composition/layered-depth"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/e63c7bf805a2/technique-foreground-layering.webp","w":960,"h":401,"blur":"data:image/webp;base64,UklGRuQAAABXRUJQVlA4INgAAAAwBQCdASogAA4APtFUo0uoJKMhsAgBABoJbACdMoC4AMgEzuKpTRw8yeCGuqvD5Q34rAD+xNJPIHNSVkxRJm6S7GznetNu7MTASVZeU/b4OSFOZqKkpJyBeaAfjyu2r3W735W2HB7jG4yq2r/EcBzZUxOqaM+AgXyX7/U+qtsWRbur7v/zBW/2zKmjRKEg31aXpf/7sxGiE0VQqfoM7wOytUY0R13N3o5NtlJsNQimZw8j7qqXhq/DnvA4F44sVCZs9meckPYbyT4tmn2UL8QsTvx2jYmiAAA=","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Foreground layering: a soft glowing lamp and a microphone in front, Barley sharp in the middle, Celia and the cluttered room behind — three planes of depth. Tears of Steel at 6:41.","bytes":28472,"addedAt":"2026-10-27"}},{"id":"two-shot","group":"composition","name":"Two-shot","aliases":["two shot","Two-shot","2-shot","50/50 shot"],"definition":"Two people share one frame, and their positions and spacing tell the relationship.","use":"Shows connection or distance at a glance; covers dialogue without cutting; couple and duo ads.","misuse":"Two people at the same depth and size with no staging look flat; one blocking the other kills the read.","clause":"Two-shot: [subject] and [subject B] sit at opposite ends of a park bench in a medium-wide shot, an empty stretch of bench between them, both facing forward, camera static at eye level.","adapters":{"veo":"Medium-wide two-shot, static camera at eye level: [subject] and [subject B] at opposite ends of a park bench, an empty gap between them, both facing forward.","kling":"[subject] and [subject B] sit at opposite ends of a park bench. Medium wide two-shot, static camera, an empty gap between them.","seedance":"镜头1：中景，固定镜头 — [subject] and [subject B] at opposite ends of a park bench, an empty gap between them, both facing forward (two-shot).","hailuo":"[subject] and [subject B] sit at opposite ends of a park bench with a gap between them [Static shot].","luma":"Static camera at eye level, medium-wide two-shot: [subject] and [subject B] sit at opposite ends of a park bench, a stretch of empty bench between them.","runway":"Medium-wide two-shot, eye level, locked-off camera on [subject] and [subject B] at opposite ends of a park bench, an empty gap between them."},"links":[{"label":"eyecannndy — two shot","url":"https://eyecannndy.com/technique/two-shot"},{"label":"shot.cafe — tag: two-shot","url":"https://shot.cafe/tag/two-shot"},{"label":"melies — two shot","url":"https://melies.co/cinematic-techniques/framing/two-shot"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/dd7bbab90420/technique-two-shot.webp","w":960,"h":401,"blur":"data:image/webp;base64,UklGRtIAAABXRUJQVlA4IMYAAABwBACdASogAA4APtFcpkyoJSOiMAgBABoJZACdBrLm86vUVGOTNcw7HSDDYgD7d7paGQjrRVyLRJuwG3k117ZmXwTO8euQz4nz/KsqDhMK7Q+kdRfO5b8CK+rJuxkPY32Pmt/OjnVB54ZKm3PSiNadnBFiIbpeZGh9w16a+ALOb8NZadw9Qxjx4MuRukAqyKKrHbNKRIrO1+W5RB9RXbag+mCZGbnL83hVB7suO4XVj8BqSWuwxpeMfbOUjPZGcXu6W/4AAAA=","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Two-shot: Thom and Celia share the frame on the canal-bridge rail with a gap between them — their spacing already says the couple is drifting apart. Tears of Steel at 0:27.","bytes":39780,"addedAt":"2026-10-27"}},{"id":"lead-room","group":"composition","name":"Lead room","aliases":["looking room","nose room","lead space","short siding","short-side framing","Look Space"],"definition":"Extra space left in the direction a subject looks or moves; breaking it on purpose (short-siding) creates unease.","use":"Comfortable framing for profiles and movement; short-siding signals tension, confinement or a threat behind.","misuse":"A centered profile with no room looks accidental; short-siding without intent just looks badly framed.","clause":"Lead room: [subject] in profile on the left third, facing right into two-thirds of open frame as they gaze across the lake, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera: [subject] in profile on the left third, facing right into open space as they gaze across the lake.","kling":"[subject] gazes across a lake. Medium Close up in profile, static camera, the subject on the left third with open space in front of the face.","seedance":"镜头1：近景，固定镜头 — [subject] in profile on the left third, facing right into open frame as they gaze across the lake.","hailuo":"[subject] in profile on the left of the frame gazes right across the lake into open space [Static shot].","luma":"Static camera, medium close-up: [subject] in profile on the left third looks right across the lake, open space ahead of their gaze.","runway":"Medium close-up, eye level, locked-off camera; [subject] in profile on the left third looking right across a lake, open space in front of the face."},"links":[{"label":"eyecannndy — profile shot","url":"https://eyecannndy.com/technique/profile-shot"},{"label":"melies — lead room","url":"https://melies.co/cinematic-techniques/composition/lead-room"},{"label":"grokfilm — lead room","url":"https://grokfilm.app/#t/lead-room"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/f7fd9895c353/technique-lead-room.webp","w":960,"h":401,"blur":"data:image/webp;base64,UklGRugAAABXRUJQVlA4INwAAADwBACdASogAA4APtFWpEuoJKOhsAgBABoJQBYeNQOMCqD14EvS7dplVSqD/F1KJgAA/qnbLjdegFmPO40fzW4KJgcyj//fOWXMNr3yQjsHxOkKBVR5QPo10TLVWcpBmo566UghvmrsNJfV2mcz+jT42FJriz/49TXtLPR53lCojlXWIRv//rWoDjTIfN+yf6Ps7TrGnwKTdCq9BW4rq6upPNsWIaDEek+nBAfS/cdT7NkoU6Q3UOYOn3I5eVqzVR6EiCKGduO4785Qg/j07IGAe9mnto1KudqU8AAA","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Lead room: Thom stands in profile on the left third, facing right, with two-thirds of the frame open in the direction he looks — toward the robot. Tears of Steel at 5:02.","bytes":61776,"addedAt":"2026-10-27"}},{"id":"widescreen-letterbox","group":"composition","name":"Widescreen 2.39:1","aliases":["2.39:1","2.35:1","scope","CinemaScope","letterbox","21:9","cinematic aspect ratio"],"definition":"A very wide frame, about 2.39 times as wide as it is tall, that favors horizons, spacing and lateral staging.","use":"Epic landscapes, isolation inside wide spaces, a feature-film feel; group compositions.","misuse":"Black bars on a 16:9 render crop the headroom and look fake when the staging was composed for 16:9; vertical deliveries lose the format entirely.","clause":"Widescreen 2.39:1 frame: [subject] stands at the far left of a wide desert horizon that stretches across the frame, a lone car at the far right, the sky in the upper third, camera static.","adapters":{"veo":"Wide shot, static camera, composed for a 2.39:1 widescreen crop: [subject] at the far left of a desert horizon stretching across the frame, a lone car at the far right.","kling":"[subject] stands at the far left of a wide desert horizon, a lone car far right. Establishing Wide Shot, static camera, wide 21:9 framing.","seedance":"镜头1：大全景，固定镜头 — [subject] at the far left of a desert horizon stretching across the frame, a lone car at the far right.","hailuo":"[subject] at the far left of a desert horizon stretching across the frame, a lone car far right [Static shot].","luma":"Static camera, extreme wide shot composed for widescreen: [subject] at the far left of a desert horizon, a lone car at the far right, sky across the upper third.","runway":"Extreme wide shot, eye level, locked-off camera; [subject] far left and a lone car far right on a desert horizon, framed for a 2.39:1 crop."},"links":[{"label":"shot.cafe — aspect ratio 2.39 : 1","url":"https://shot.cafe/aspect/2.39%20%3A%201"},{"label":"eyecannndy — aspect ratio switch","url":"https://eyecannndy.com/technique/aspect-ratio-switch"},{"label":"film-grab — search: 2.39:1","url":"https://film-grab.com/?s=2.39%3A1"}],"media":{"type":"image","file":"https://s3.varg.ai/how-to/previews/3b8adedbef1b/technique-widescreen-letterbox.webp","w":960,"h":540,"blur":"data:image/webp;base64,UklGRoYAAABXRUJQVlA4IHoAAABQBACdASogABIAPsVQoUunpKMhsAwA8BiJYwCw7CHUhp3UiQGeL0Cbr4tAAP7a1+d88OEn0WWwtbF9++4vn9ObxxXsh7o2cvnkoh2qxj6P83w1xG5CjsOXSD2QZ168J1IVxnrSAhl+DWHO43ShvLNxw7/c8BJvviUAAA==","source":"https://ftp.nluug.nl/pub/graphics/blender/demo/movies/ToS/tears_of_steel_720p.mov","page":"https://mango.blender.org/","credit":"Tears of Steel (2012) — © Blender Foundation | mango.blender.org — CC BY 3.0","rights":"cc-by","note":"Widescreen 2.39:1: Tears of Steel's native 2.39 frame, the Amsterdam skyline stretched across the width so the horizon does the work. Tears of Steel at 1:12; shown letterboxed (black bars added to fit the 16:9 card).","bytes":20842,"addedAt":"2026-10-27"}},{"id":"cowboy-shot","group":"shot-size","name":"Cowboy shot","aliases":["American shot","American Shot","medium full shot","mid-thigh shot","knee shot"],"definition":"Frames a standing figure from just above the head to mid-thigh, so the hips, hands and anything worn at the waist stay in the shot.","use":"Gives a confident, ready-for-action stance — a standoff, a hero arrival, a fashion pose where the hands and belt line matter.","misuse":"A medium shot cuts at the waist and loses the hands at the hips; dropping to the knees turns it into an awkward near-full shot with no clear purpose.","clause":"Cowboy shot: [subject] stands facing the camera, framed from just above the head to mid-thigh, hands resting near the hips, camera static at eye level.","adapters":{"veo":"Cowboy shot, static camera at eye level: [subject] stands facing the lens, framed from just above the head down to mid-thigh, hands resting near the hips.","kling":"[subject] stands facing the camera in [scene], hands near the hips. Cowboy shot from just above the head to mid-thigh, static camera, eye level.","seedance":"镜头1：中景，固定镜头 — cowboy shot: [subject] stands facing the camera, framed from just above the head to mid-thigh, hands near the hips; keep the camera still.","hailuo":"[subject] stands facing the lens, framed from just above the head to mid-thigh, hands resting near the hips [Static shot].","luma":"Static camera at eye level, cowboy shot: [subject] stands facing the lens, framed from just above the head to mid-thigh, hands resting near the hips.","runway":"Cowboy shot from head to mid-thigh, eye level, locked-off camera on [subject] standing square to the lens, hands resting near the hips."},"links":[{"label":"melies — cowboy shot","url":"https://melies.co/cinematic-techniques/framing/cowboy-shot"},{"label":"grokfilm — cowboy shot","url":"https://grokfilm.app/#t/cowboy-shot"}]},{"id":"medium-wide-shot","group":"shot-size","name":"Medium wide shot","aliases":["MWS","medium long shot","MLS","medium wide"],"definition":"A framing between a wide and a medium shot: the subject is seen roughly from the knees up, with a clear slice of the setting around them.","use":"Keeps body language and the immediate surroundings readable at once — a character working at a counter, two people walking into a room, a product in use.","misuse":"A wide shot shrinks the person until the face stops reading; a medium shot crops the space that explains what they are doing.","clause":"Medium wide shot: [subject] seen from the knees up near the center of the frame, with the room around them visible on both sides, camera static at eye level.","adapters":{"veo":"Medium wide shot, static camera at eye level: [subject] seen from the knees up near the center of the frame, the surrounding room visible on both sides.","kling":"[subject] stands in [scene]. Medium wide shot from the knees up, the room visible on both sides, static camera, eye level.","seedance":"镜头1：全景，固定镜头 — medium wide shot: [subject] from the knees up near the center, the surrounding room visible on both sides; keep the camera still.","hailuo":"[subject] seen from the knees up near the center of the frame, the room around them visible on both sides [Static shot].","luma":"Static camera at eye level, medium wide shot: [subject] from the knees up near the center of the frame, the room around them visible on both sides.","runway":"Medium wide shot, eye level, locked-off camera on [subject] framed from the knees up, the room visible on both sides."},"links":[{"label":"shot.cafe — tag: medium wide","url":"https://shot.cafe/tag/medium%20wide"}]},{"id":"choker-shot","group":"shot-size","name":"Choker shot","aliases":["choker","tight close-up","forehead-to-chin close-up"],"definition":"A very tight face shot that runs from roughly the eyebrows or forehead down to the chin or throat, cropping the top of the head.","use":"Presses the audience against a face at the peak of an emotion — dread, a confession, a decision — without going all the way to a single feature.","misuse":"A regular close-up keeps the whole head and reads calmer; an extreme close-up on one eye loses the mouth, which carries half the expression.","clause":"Choker shot: [subject]'s face fills the frame from the forehead to the chin, the top of the head cropped off, eyes in the upper third, camera static.","adapters":{"veo":"Choker shot, static camera: [subject]'s face fills the frame from the forehead to the chin, the top of the head cropped, the eyes resting in the upper third.","kling":"[subject] holds a tense expression. Very tight close-up from the forehead to the chin, the top of the head cropped, eyes in the upper third, static camera.","seedance":"镜头1：特写，固定镜头 — choker shot: [subject]'s face fills the frame from the forehead to the chin, the top of the head cropped, eyes in the upper third.","hailuo":"[subject]'s face fills the frame from the forehead to the chin, the top of the head cropped, eyes in the upper third [Static shot].","luma":"Static camera, very tight close-up: [subject]'s face fills the frame from the forehead to the chin, the top of the head cropped, the eyes in the upper third.","runway":"Choker close-up, eye level, locked-off camera on [subject]: the face fills the frame from the forehead to the chin, eyes in the upper third, 85mm lens."},"links":[{"label":"melies — choker","url":"https://melies.co/cinematic-techniques/framing/choker"},{"label":"grokfilm — choker shot","url":"https://grokfilm.app/#t/choker-shot"}]},{"id":"master-shot","group":"shot-size","name":"Master shot","aliases":["master","scene master","coverage master"],"definition":"One wide, uninterrupted shot that holds the whole scene — every actor and the full geography — from start to finish, so tighter shots can be cut in later.","use":"Anchors a scene's space and blocking, gives the editor a safe base layer, and lets an ensemble moment play without cuts.","misuse":"A brief establishing wide sets the place and then leaves; a master stays for the whole action, so cutting it to a few seconds loses the coverage it exists for.","clause":"Master shot: a wide frame holds [subject] and everyone else in the room for the whole scene, all entrances and positions visible, camera static at eye level.","adapters":{"veo":"Wide master shot, static camera at eye level: the full room stays in frame for the whole clip, [subject] and the other people visible as they move between positions.","kling":"[subject] and two others talk and move around [scene]. Wide master shot, the whole room in frame, static camera, eye level, one continuous take.","seedance":"镜头1：全景，固定镜头，一镜到底 — master shot: the whole room in frame, [subject] and the others visible throughout; keep one camera position for the whole shot.","hailuo":"The whole room stays in frame as [subject] and two others move and talk, every position visible [Static shot].","luma":"Static camera at eye level, wide master shot: the whole room stays in frame as [subject] and two others move between positions.","runway":"Wide master shot, eye level, locked-off camera holding the full room; [subject] and two others move between positions. Continuous, seamless shot."},"links":[{"label":"melies — master shot","url":"https://melies.co/cinematic-techniques/framing/master-shot"},{"label":"grokfilm — master shot","url":"https://grokfilm.app/#t/master-shot"}]},{"id":"profile-shot","group":"angle","name":"Profile shot","aliases":["profile","side profile","90-degree profile","Profile Shot"],"definition":"The subject is seen exactly side-on, nose pointing across the frame, so the face reads as a silhouette-like line of brow, nose and chin.","use":"Detachment and observation, a character lost in thought or looking toward something off-screen; two profiles facing each other stage a confrontation.","misuse":"A three-quarter angle shows both eyes and feels warmer and more engaged; a centered profile with no room ahead of the nose looks cramped.","clause":"Profile shot: [subject] seen exactly side-on, facing screen left, placed on the right third with open space ahead of the face, camera static at eye level.","adapters":{"veo":"Profile shot, static camera at eye level: [subject] seen exactly side-on, facing screen left, placed on the right third with open space ahead of the face.","kling":"[subject] looks into the distance. Profile shot, exactly side-on, facing screen left, placed on the right third with space ahead, static camera.","seedance":"镜头1：近景，固定镜头 — profile shot: [subject] seen exactly side-on, facing screen left, on the right third with open space ahead of the face.","hailuo":"[subject] seen exactly side-on, facing screen left from the right third, open space ahead of the face [Static shot].","luma":"Static camera at eye level, profile shot: [subject] seen exactly side-on, facing screen left from the right third, open space ahead of the face.","runway":"Medium close-up profile, eye level, locked-off camera on [subject] seen side-on facing screen left, placed on the right third with open space ahead."},"links":[{"label":"shot.cafe — tag: profile shot","url":"https://shot.cafe/tag/profile%20shot"},{"label":"eyecannndy — profile","url":"https://eyecannndy.com/technique/profile-shot"},{"label":"melies — profile","url":"https://melies.co/cinematic-techniques/camera-angles/profile"}]},{"id":"three-quarter-angle","group":"angle","name":"Three-quarter angle","aliases":["3/4 angle","three-quarter view","45-degree angle","Three-Quarter Angle"],"definition":"The camera sits about 45 degrees off the subject's nose line, so both eyes are visible while the face still turns away from the lens.","use":"The default flattering, dimensional angle for portraits and dialogue — more depth than a frontal shot, more connection than a profile.","misuse":"Shooting straight on flattens the face; swinging all the way to 90 degrees becomes a profile and hides the far eye.","clause":"Three-quarter angle: [subject] faces about 45 degrees off the lens, both eyes visible, the far cheek turning away, framed in a medium close-up, camera static at eye level.","adapters":{"veo":"Medium close-up, static camera at eye level, three-quarter angle: [subject] turns about 45 degrees off the lens, both eyes visible, the far cheek falling away.","kling":"[subject] sits facing slightly away from the camera. Three-quarter angle, about 45 degrees, both eyes visible, medium close-up, static camera.","seedance":"镜头1：近景，固定镜头 — three-quarter angle: [subject] turned about 45 degrees off the lens, both eyes visible, the far cheek turning away.","hailuo":"[subject] turned about 45 degrees away from the lens, both eyes visible, in medium close-up [Static shot].","luma":"Static camera at eye level, medium close-up: [subject] turned about 45 degrees away from the lens, both eyes visible, the far cheek falling away.","runway":"Medium close-up, three-quarter angle at eye level, locked-off camera on [subject] turned 45 degrees from the lens, both eyes visible, 50mm lens."},"links":[{"label":"melies — three quarter","url":"https://melies.co/cinematic-techniques/camera-angles/three-quarter"}]},{"id":"hip-level","group":"angle","name":"Hip-level shot","aliases":["hip shot","hip level","Hip Level","waist-level camera"],"definition":"The camera sits at hip height — below the eyes but well above the ground — looking roughly level, the way a camera held at the waist sees a room.","use":"Western draws, holstered hands, casual observational coverage, and a slightly low perspective that makes standing people feel present without looming.","misuse":"A true low angle tilts up and gives power; a ground-level camera exaggerates the floor — hip level stays nearly level and quietly grounded.","clause":"Hip-level shot: the camera sits at [subject]'s hip height looking nearly level, their hands and belt line in the lower part of the frame, the face near the top, camera static.","adapters":{"veo":"Hip-level shot, static camera looking nearly level: [subject] stands close, their hands and belt line in the lower frame and the face near the top edge.","kling":"[subject] stands ready in [scene]. Camera at hip height looking nearly level, hands and belt line low in frame, face near the top, static camera.","seedance":"镜头1：中景，固定镜头 — hip-level camera, almost level: [subject]'s hands and belt line low in frame, the face near the top edge; keep the camera still.","hailuo":"Seen from hip height, [subject] stands close, hands and belt line low in frame and the face near the top [Static shot].","luma":"Static camera at hip height, looking nearly level: [subject] stands close, hands and belt line in the lower frame, the face near the top edge.","runway":"Medium shot, hip-level angle, locked-off camera on [subject] standing close; hands and belt line low in frame, the face near the top edge."},"links":[{"label":"melies — hip level","url":"https://melies.co/cinematic-techniques/camera-angles/hip-level"}]},{"id":"shoulder-level","group":"angle","name":"Shoulder-level shot","aliases":["shoulder level","Shoulder Level","shoulder-height camera"],"definition":"The lens sits at the subject's shoulder height, a little below the eyes, so the view looks very slightly up at the face.","use":"A naturalistic, quietly respectful angle for standing dialogue and documentary coverage; it adds a touch of stature without the drama of a low angle.","misuse":"Raising the lens to eye level reads more neutral; dropping it further turns into an obvious low angle that makes the subject dominant.","clause":"Shoulder-level shot: the camera sits at [subject]'s shoulder height, looking very slightly up at the face in a medium shot, camera static.","adapters":{"veo":"Medium shot, static camera at shoulder height: the lens looks very slightly up at [subject]'s face, the horizon held level.","kling":"[subject] speaks in [scene]. Medium shot, camera at shoulder height looking slightly up, static camera, level horizon.","seedance":"镜头1：中景，固定镜头 — shoulder-height camera looking very slightly up at [subject]'s face; keep the horizon level and the camera still.","hailuo":"[subject] seen from shoulder height in medium shot, the lens looking very slightly up at the face [Static shot].","luma":"Static camera at shoulder height, medium shot: the lens looks very slightly up at [subject]'s face, the horizon level.","runway":"Medium shot, shoulder-level angle, locked-off camera on [subject]; the lens looks very slightly up at the face, level horizon."},"links":[{"label":"melies — shoulder level","url":"https://melies.co/cinematic-techniques/camera-angles/shoulder-level"}]},{"id":"trunk-shot","group":"angle","name":"Trunk shot","aliases":["Trunk Shot","car trunk POV","boot shot"],"definition":"The camera sits inside an open car trunk looking up and out at the people standing over it, framed by the lid and the trunk walls.","use":"Turns the audience into whatever lies in the trunk — a menacing reveal, a dark comic beat, characters looming over a secret.","misuse":"A plain low angle from the street lacks the trunk's frame and the sense of being trapped; shooting down into the trunk shows the cargo instead of the people.","clause":"Trunk shot: from inside an open car trunk, the camera looks up at [subject] standing over it, framed by the raised lid against the sky, camera static.","adapters":{"veo":"Low-angle trunk shot, static camera inside an open car trunk: [subject] leans over the edge looking down into the lens, the raised lid framing them against the sky.","kling":"[subject] leans over an open car trunk and looks down. Camera inside the trunk looking up, the raised lid framing them against the sky, static camera.","seedance":"镜头1：固定镜头 — low-angle trunk shot: the camera lies inside an open car trunk looking up at [subject] leaning over it, the raised lid framing them against the sky.","hailuo":"From inside an open car trunk, the camera looks up at [subject] leaning over the edge, the raised lid framing them against the sky [Static shot].","luma":"Static camera inside an open car trunk, looking up: [subject] leans over the edge and looks down, the raised lid framing them against the sky.","runway":"Low-angle trunk shot, locked-off camera inside an open car trunk looking up at [subject] leaning over the edge; the raised lid frames them against the sky."},"links":[{"label":"melies — trunk shot","url":"https://melies.co/cinematic-techniques/camera-angles/trunk-shot"},{"label":"grokfilm — trunk shot","url":"https://grokfilm.app/#t/trunk-shot"}]},{"id":"fourth-wall","group":"angle","name":"Breaking the fourth wall","aliases":["fourth wall","Fourth Wall","direct address","talking to camera","looking into the lens"],"definition":"A character looks straight into the lens and acknowledges the audience — a glance, a remark or a full speech aimed at the viewer.","use":"Complicity, comedy, confession or unsettling awareness; in UGC and ads it is the native grammar of a creator talking to the viewer.","misuse":"An eyeline just beside the lens reads as an interview or a conversation partner; switching between lens and off-lens without intent looks like a mistake.","clause":"Breaking the fourth wall: [subject] turns from the action and looks straight into the lens, holding eye contact with the viewer in a medium close-up, camera static at eye level.","adapters":{"veo":"Medium close-up, static camera at eye level: [subject] turns from what they are doing and looks straight into the lens, holding eye contact with the viewer.","kling":"[subject] pauses in [scene], turns and looks directly into the camera, holding eye contact. Medium close-up, static camera, eye level.","seedance":"镜头1：近景，固定镜头 — [subject] turns from the action and looks directly into the lens, holding eye contact with the viewer (breaking the fourth wall).","hailuo":"[subject] turns from the action and looks straight into the lens, holding eye contact [Static shot].","luma":"Static camera at eye level, medium close-up: [subject] turns from the action and looks straight into the lens, holding eye contact with the viewer.","runway":"Medium close-up, eye level, locked-off camera; [subject] turns and looks directly into the lens, holding steady eye contact with the viewer."},"links":[{"label":"eyecannndy — fourth wall","url":"https://eyecannndy.com/technique/fourth-wall"},{"label":"melies — fourth wall","url":"https://melies.co/cinematic-techniques/camera-angles/fourth-wall"},{"label":"grokfilm — breaking fourth wall","url":"https://grokfilm.app/#t/breaking-fourth-wall"}]},{"id":"head-on-shot","group":"angle","name":"Head-on shot","aliases":["head-on","Head-On Shot","straight-on approach","action toward the lens"],"definition":"The action moves straight down the lens axis toward the camera — a runner, a car, a train — growing in the frame until it nearly fills it.","use":"Confrontation and impact: a threat bearing down on the audience, a hero charging forward, a vehicle that seems about to hit the viewer.","misuse":"Shooting the same action from the side turns it into a lateral pass with no threat; cutting before the subject fills the frame wastes the build.","clause":"Head-on shot: [subject] runs straight toward the lens down the center of the frame, growing from small to filling the frame, camera static at eye level.","adapters":{"veo":"Head-on shot, static camera at eye level: [subject] runs straight toward the lens along the center line, growing from a small figure until they fill the frame.","kling":"[subject] runs straight toward the camera down the center of [scene]. Head-on shot, static camera, eye level, the figure growing until it fills the frame.","seedance":"镜头1：固定镜头 — head-on shot: [subject] runs straight at the lens along the center line, growing from a small figure until they fill the frame.","hailuo":"[subject] runs straight toward the lens down the center of the frame, growing until they fill it [Static shot].","luma":"Static camera at eye level, head-on: [subject] runs straight toward the lens along the center line, growing from a small figure until they fill the frame.","runway":"Wide shot, eye level, locked-off camera on the center line; [subject] runs straight toward the lens and grows until filling the frame."},"links":[{"label":"grokfilm — head-on shot","url":"https://grokfilm.app/#t/head-on-shot"}]},{"id":"masked-pov","group":"angle","name":"Binocular and scope POV","aliases":["binocular POV","binocular pov","scope POV","scope pov","periscope POV","keyhole POV","masked POV"],"definition":"A point-of-view shot seen through an optical device — binoculars, a rifle scope, a periscope or a keyhole — with the device's black mask shaping the frame.","use":"Surveillance, hunting and voyeurism: tells the audience instantly that someone is watching from a distance, and through what.","misuse":"A plain telephoto shot has no mask, so the watcher disappears; a mask that drifts or changes shape between shots breaks the device's logic.","clause":"Binocular POV: [subject] seen from far away through two overlapping circles of a binocular mask, the area outside them black, the view held steady on [subject].","adapters":{"veo":"Binocular point-of-view shot, steady: [subject] seen from far away inside two overlapping circular masks, the area around them solid black, the view held on [subject].","kling":"[subject] walks across [scene], seen from far away through binoculars. Two overlapping circular masks, black around them, steady view on [subject].","seedance":"镜头1：固定镜头 — binocular point of view: [subject] seen from far away inside two overlapping circular masks, the rest of the frame black.","hailuo":"Through binoculars, [subject] is seen far away inside two overlapping circles, the rest of the frame black [Static shot].","luma":"Steady binocular point of view: [subject] seen from far away inside two overlapping circular masks, the area around them solid black.","runway":"Long-lens point-of-view through binoculars, steady framing on [subject] far away; two overlapping circular masks with solid black around them."},"links":[{"label":"shot.cafe — tag: binocular pov","url":"https://shot.cafe/tag/binocular%20pov"}]},{"id":"ultra-wide-lens","group":"lens","name":"Ultra-wide lens","aliases":["Ultra Wide","ultra wide","14mm","12mm","rectilinear ultra-wide","14mm Ultra-Wide"],"definition":"A rectilinear lens of about 12–16mm: an enormous field of view with straight lines kept straight, but strong stretching toward the edges and huge depth.","use":"Makes rooms feel vast, architecture monumental and close action immersive; puts a character small inside a towering space.","misuse":"A fisheye bends the lines into curves and reads playful; a plain wide lens takes in far less and lacks the edge stretch.","clause":"Ultra-wide lens: [subject] stands small at the center of a tall interior, walls and ceiling lines rushing away to the edges, camera static at eye level, 14mm.","adapters":{"veo":"Static camera at eye level, ultra-wide 14mm rectilinear lens: [subject] stands small at the center of a tall interior, straight walls and ceiling lines stretching toward the edges.","kling":"[subject] stands in a tall interior. Ultra-wide lens, 14mm, static camera, eye level, straight lines stretching toward the frame edges, [subject] small at the center.","seedance":"镜头1：大全景，固定镜头 — ultra-wide 14mm lens: [subject] small at the center of a tall interior, straight lines stretching toward the frame edges.","hailuo":"[subject] stands small at the center of a tall interior seen through an ultra-wide lens, walls and ceiling lines stretching to the edges [Static shot].","luma":"Static camera at eye level, ultra-wide lens: [subject] stands small at the center of a tall interior, straight walls and ceiling lines stretching toward the edges.","runway":"Wide shot, eye level, locked-off camera, 14mm ultra-wide lens on [subject] small at the center of a tall interior; straight lines stretch toward the edges."},"links":[{"label":"eyecannndy — ultra wide","url":"https://eyecannndy.com/technique/ultra-wide-zero-d"},{"label":"melies — ultra wide 14mm","url":"https://melies.co/cinematic-techniques/lenses/ultra-wide-14mm"}]},{"id":"normal-lens","group":"lens","name":"Normal lens","aliases":["50mm","50mm Normal","normal focal length","natural perspective lens","standard lens"],"definition":"A focal length close to human sight — about 50mm on full frame — with no visible stretch or compression, so space looks the way it feels.","use":"Honest, unshowy storytelling: naturalistic drama, documentary, product shots where proportions must stay true.","misuse":"A wide lens close to a face bulges the features; a telephoto flattens the background — both announce the lens, which the normal lens never does.","clause":"Normal lens: [subject] in a medium shot with true-to-life proportions and a naturally receding background, camera static at eye level, 50mm.","adapters":{"veo":"Medium shot, static camera at eye level, 50mm lens: [subject] with true-to-life proportions, the background receding naturally behind them.","kling":"[subject] stands in [scene]. Medium shot, 50mm lens, natural perspective, static camera, eye level.","seedance":"镜头1：中景，固定镜头 — 50mm normal lens: [subject] with true-to-life proportions, the background receding naturally.","hailuo":"[subject] in a medium shot with natural, true-to-life proportions, the background receding normally behind them [Static shot].","luma":"Static camera at eye level, medium shot with a normal lens: [subject] in true-to-life proportions, the background receding naturally.","runway":"Medium shot, eye level, locked-off camera, 50mm lens on [subject]; natural perspective with the background receding normally."},"links":[{"label":"melies — 50mm normal","url":"https://melies.co/cinematic-techniques/lenses/50mm-normal"}]},{"id":"vintage-lens","group":"lens","name":"Vintage cine lens","aliases":["Vintage Cine Glass","vintage glass","vintage lens","old cine lens","swirly bokeh","soft vintage glass"],"definition":"Older cine glass with lower contrast, soft edges, gentle glow in the highlights, warm flare and out-of-focus areas that swirl around the center.","use":"Nostalgia, memory, romance and handmade texture; softens the clinical sharpness of digital or generated images.","misuse":"A blur filter softens everything evenly; the vintage look keeps the center sharp while the edges and highlights carry the character.","clause":"Vintage cine lens: [subject] sharp at the center of a medium close-up while the edges soften, highlights bloom gently and the background bokeh swirls, camera static.","adapters":{"veo":"Medium close-up, static camera, vintage cine lens: [subject] sharp at the center, the edges softening, gentle highlight glow and swirling background bokeh.","kling":"[subject] sits by a window in [scene]. Medium close-up, vintage lens, soft edges, gentle highlight glow, swirling bokeh, static camera.","seedance":"镜头1：近景，固定镜头 — vintage cine lens: [subject] sharp at the center, softer edges, gentle glow in the highlights, swirling bokeh behind.","hailuo":"[subject] sharp at the center through an old cine lens, the edges soft, highlights glowing gently and the background swirling [Static shot].","luma":"Static camera, medium close-up through vintage glass: [subject] sharp at the center, softer edges, a gentle glow in the highlights and swirling bokeh.","runway":"Medium close-up, eye level, locked-off camera, vintage 40mm cine lens on [subject]; sharp center, soft edges, gentle highlight glow, swirling bokeh."},"links":[{"label":"melies — vintage cine","url":"https://melies.co/cinematic-techniques/lenses/vintage-cine"}]},{"id":"lens-flare","group":"lens","name":"Lens flare","aliases":["flare","Lens Flare","Anamorphic Flare","anamorphic flares","sun flare","streak flare"],"definition":"A bright light source shining into the lens scatters inside the glass, producing streaks, rings or a veil of glow across the frame.","use":"Heat, sunlight, sci-fi energy and a sense that a real camera stood in front of real light; marks a hopeful or overwhelming moment.","misuse":"Flares with no light source in or near the frame look pasted on; a flare across the face at every shot washes out contrast and turns into a gimmick.","clause":"Lens flare: the low sun sits just behind [subject]'s shoulder at the edge of frame, a warm streak and soft rings crossing the image, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera: the low sun sits just behind [subject]'s shoulder at the frame edge, a warm horizontal streak and soft flare rings crossing the image.","kling":"[subject] stands against the low sun in [scene]. Medium shot, static camera, the sun just behind the shoulder, warm lens flare streaks and rings.","seedance":"镜头1：中景，固定镜头 — the low sun just behind [subject]'s shoulder at the frame edge; a warm lens-flare streak and soft rings cross the image.","hailuo":"The low sun peeks from behind [subject]'s shoulder at the frame edge, a warm flare streak and soft rings crossing the image [Static shot].","luma":"Static camera, medium shot: the low sun sits just behind [subject]'s shoulder at the frame edge, a warm flare streak and soft rings crossing the image.","runway":"Medium shot, eye level, locked-off camera on [subject] with the low sun just behind the shoulder; a warm streak and soft flare rings cross the frame."},"links":[{"label":"shot.cafe — tag: lens flare","url":"https://shot.cafe/tag/lens%20flare"},{"label":"melies — lens flare","url":"https://melies.co/cinematic-techniques/effects/lens-flare"},{"label":"grokfilm — lens flare","url":"https://grokfilm.app/#t/lens-flare"}]},{"id":"chromatic-aberration","group":"lens","name":"Chromatic aberration","aliases":["Chromatic Aberration","color fringing","RGB split","CA fringe"],"definition":"The lens fails to focus every color at the same point, so high-contrast edges pick up red, green or blue-purple fringes, strongest toward the corners.","use":"Lo-fi, glitchy, music-video and dreamlike textures; suggests cheap optics, a distorted mind or a digital world coming apart.","misuse":"A uniform RGB offset over the whole frame looks like a broken filter; real fringing grows toward the edges and hugs high-contrast outlines.","clause":"Chromatic aberration: [subject] stands against a bright window, red and blue fringes clinging to the outline and growing toward the frame edges, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera: [subject] against a bright window, thin red and blue color fringes along the outline, stronger toward the frame edges.","kling":"[subject] stands against a bright window in [scene]. Medium shot, static camera, chromatic aberration, red and blue fringes on the edges, stronger in the corners.","seedance":"镜头1：中景，固定镜头 — [subject] against a bright window; chromatic aberration adds red and blue fringes along the outline, stronger toward the edges.","hailuo":"[subject] stands against a bright window, red and blue color fringes clinging to the outline, stronger toward the frame edges [Static shot].","luma":"Static camera, medium shot: [subject] against a bright window, red and blue color fringes along the outline, growing stronger toward the frame edges.","runway":"Medium shot, eye level, locked-off camera on [subject] against a bright window; red and blue fringing along high-contrast edges, strongest in the corners."},"links":[{"label":"melies — chromatic aberration","url":"https://melies.co/cinematic-techniques/effects/chromatic-aberration"},{"label":"grokfilm — chromatic aberration","url":"https://grokfilm.app/#t/chromatic-aberration"}]},{"id":"vignette","group":"lens","name":"Vignette","aliases":["vignetting","Vignette","edge falloff","dark corners"],"definition":"The corners and edges of the frame fall darker than the center, either from the lens itself or added in the grade.","use":"Pulls the eye to the subject, adds an old-photograph or intimate feel, and makes a busy frame feel contained.","misuse":"A hard, obvious black ring looks like a phone filter; a vignette that sits off-center from the subject drags attention the wrong way.","clause":"Vignette: [subject] centered in a medium shot, the light gently darkening toward all four corners so the eye rests on the face, camera static.","adapters":{"veo":"Medium shot, static camera: [subject] centered, a gentle vignette darkening the frame toward all four corners so the face holds the attention.","kling":"[subject] sits centered in [scene]. Medium shot, static camera, soft vignette, the corners gently darker than the center.","seedance":"镜头1：中景，固定镜头 — [subject] centered; a soft vignette darkens the frame toward all four corners, the face the brightest area.","hailuo":"[subject] centered in medium shot, the frame softly darkening toward all four corners [Static shot].","luma":"Static camera, medium shot: [subject] centered, the image gently darkening toward all four corners so the face stays the brightest area.","runway":"Medium shot, eye level, locked-off camera on [subject] centered; soft lens vignetting darkens all four corners, the face the brightest area."},"links":[{"label":"eyecannndy — vignette","url":"https://eyecannndy.com/technique/vignette"},{"label":"melies — vignette","url":"https://melies.co/cinematic-techniques/effects/vignette"},{"label":"grokfilm — vignette","url":"https://grokfilm.app/#t/vignette"}]},{"id":"magnifier-shot","group":"lens","name":"Magnifying-glass shot","aliases":["Magnification","magnifying glass","loupe shot","lens-in-frame magnification"],"definition":"A magnifying glass or loupe inside the frame enlarges one detail through its lens while the rest of the image stays at normal scale.","use":"Investigation and discovery — a clue, a stamp, a gem, a product's fine print — shown as a picture inside the picture.","misuse":"Cutting to a macro close-up loses the device and the act of looking; a magnified area that does not match what sits behind the glass breaks the illusion.","clause":"Magnifying-glass shot: [subject] holds a magnifying glass over a document, the text under the lens enlarged and sharp while the rest of the page stays small, camera static overhead.","adapters":{"veo":"Overhead shot, static camera: [subject]'s hand holds a magnifying glass over a document, the text inside the lens enlarged and sharp, the rest of the page at normal size.","kling":"[subject] studies a document with a magnifying glass. Overhead shot, static camera, the text inside the lens enlarged and sharp, the page around it small.","seedance":"镜头1：特写，固定镜头 — overhead view: [subject] holds a magnifying glass over a document; the text inside the lens is enlarged and sharp, the rest of the page normal size.","hailuo":"[subject] holds a magnifying glass over a document, the words inside the lens enlarged and sharp, the rest of the page small [Static shot].","luma":"Static overhead camera: [subject] holds a magnifying glass over a document, the text inside the lens enlarged and sharp while the page around it stays small.","runway":"Overhead insert, locked-off camera; [subject] holds a magnifying glass over a document, enlarged sharp text inside the lens, the surrounding page at normal scale."},"links":[{"label":"eyecannndy — magnification","url":"https://eyecannndy.com/technique/magnification"},{"label":"melies — magnification","url":"https://melies.co/cinematic-techniques/lenses/magnification"}]},{"id":"kaleidoscope-lens","group":"lens","name":"Kaleidoscope","aliases":["Kaleidoscope","prism lens","mirror prism","fractal mirror effect"],"definition":"A prism or mirror attachment repeats the image in mirrored segments around a center point, turning the scene into a symmetrical pattern.","use":"Altered states, music videos, fashion and title sequences; turns a single performer into an ornament.","misuse":"A flat split-screen grid repeats without the mirrored radial symmetry; too many segments shrink the subject until nothing reads.","clause":"Kaleidoscope: [subject] at the center of the frame repeated in six mirrored wedges around them, the pattern symmetrical, camera static.","adapters":{"veo":"Static camera, kaleidoscope prism effect: [subject] at the center, the image repeated in six mirrored wedges around them in a symmetrical pattern.","kling":"[subject] dances in [scene]. Kaleidoscope effect, the image repeated in six mirrored segments around the center, symmetrical, static camera.","seedance":"镜头1：固定镜头 — kaleidoscope effect: [subject] at the center, the image repeated in six mirrored wedges around them, perfectly symmetrical.","hailuo":"[subject] at the center of a kaleidoscope pattern, repeated in six mirrored wedges around them [Static shot].","luma":"Static camera, kaleidoscope prism effect: [subject] at the center, the image repeated in six mirrored wedges in a symmetrical pattern.","runway":"Medium shot, locked-off camera through a kaleidoscope prism; [subject] at the center, repeated in six mirrored wedges, symmetrical pattern."},"links":[{"label":"eyecannndy — kaleidoscope","url":"https://eyecannndy.com/technique/kaleidoscope"},{"label":"melies — kaleidoscope","url":"https://melies.co/cinematic-techniques/effects/kaleidoscope"}]},{"id":"refraction-shot","group":"lens","name":"Refraction","aliases":["Refractions","shooting through glass","through-water distortion","glass refraction"],"definition":"The camera looks at the subject through glass, water or another clear material that bends the light, warping and splitting their shape.","use":"Distance, memory, intoxication or a world seen secondhand; shooting through a glass of water or rain-streaked glass adds texture and subtext.","misuse":"A digital wave filter warps everything evenly; real refraction follows the shape of the material and leaves areas outside it untouched.","clause":"Refraction: [subject] seen through a glass of water on a table in the foreground, their figure bent and split inside the glass while the rest of the frame stays clear, camera static.","adapters":{"veo":"Medium shot, static camera: a glass of water in the foreground bends and splits [subject]'s figure inside it, the rest of the frame clear and undistorted.","kling":"[subject] sits across a table in [scene]. Seen through a glass of water in the foreground, the figure bent inside the glass, static camera.","seedance":"镜头1：中景，固定镜头 — a glass of water in the foreground; [subject] is bent and split inside the glass while the rest of the frame stays clear.","hailuo":"A glass of water in the foreground bends and splits [subject]'s figure inside it, the rest of the frame clear [Static shot].","luma":"Static camera, medium shot: a glass of water in the foreground bends and splits [subject]'s figure inside it, the rest of the frame clear.","runway":"Medium shot, eye level, locked-off camera; a glass of water in the foreground refracts [subject], bent and split inside the glass, the surrounding frame clear."},"links":[{"label":"grokfilm — refractions","url":"https://grokfilm.app/#t/refractions"}]},{"id":"omnidirectional-camera","group":"lens","name":"360 camera","aliases":["Omnidirectional","360 camera","tiny planet","little planet","spherical 360"],"definition":"A 360-degree camera captures the whole sphere around it; the footage can be bent into a 'tiny planet' ball or stretched into a curved panorama.","use":"Surreal establishing shots, action-sports energy, playful music-video worlds where the ground wraps into a globe beneath the subject.","misuse":"A fisheye only curves the edges of a forward view; the 360 look needs the full sphere, with the horizon closing into a circle.","clause":"360 camera: [subject] stands at the center of a tiny-planet image, the street wrapping into a small globe beneath their feet and the sky surrounding it, camera static.","adapters":{"veo":"Static 360-degree camera rendered as a tiny planet: [subject] stands at the center, the street wrapping into a small globe beneath the feet, sky all around it.","kling":"[subject] stands in a street. Tiny-planet 360 camera view, the ground wrapping into a small globe beneath the feet, sky around it, static camera.","seedance":"镜头1：固定镜头 — 360 camera as a tiny planet: [subject] at the center, the street wrapping into a small globe beneath the feet, sky all around.","hailuo":"[subject] stands on a tiny planet, the street wrapping into a small globe beneath the feet and sky all around [Static shot].","luma":"Static 360-degree camera, tiny-planet view: [subject] stands at the center, the street wrapping into a small globe beneath the feet, sky all around.","runway":"Tiny-planet 360 view, locked-off camera; [subject] stands at the center as the street wraps into a small globe beneath the feet, sky surrounding it."},"links":[{"label":"eyecannndy — omnidirectional","url":"https://eyecannndy.com/technique/omnidirectional"},{"label":"melies — omnidirectional","url":"https://melies.co/cinematic-techniques/camera-movement/omnidirectional"}]},{"id":"steadicam","group":"camera-move","name":"Steadicam glide","aliases":["Steadicam","Steadicam Shot","Gimbal Shot","smooth tracking shot","Smooth Tracking Shot","floating camera"],"definition":"The camera floats on a stabilizing rig worn by an operator, gliding through space in one smooth, weightless line that can still turn corners and climb stairs like a person.","use":"Long walks through corridors, crowds and rooms where you want a human point of travel without shake — dreamlike follows, grand entrances, a hallway that keeps unfolding.","misuse":"A tracking-shot on a dolly track is tied to a fixed line and cannot weave; handheld adds the breathing shake the rig exists to remove, so the float disappears.","clause":"Steadicam glide: the camera floats smoothly forward behind [subject] at walking pace down a long hallway, curves with them around a corner without a bump, and settles into a medium shot as they stop at a door.","adapters":{"veo":"Smooth Steadicam glide, medium shot: the camera floats behind [subject] at walking pace down a long hallway, curving with them around a corner in one weightless line, and settles as they stop at a door.","kling":"[subject] walks down a long hallway and turns a corner. Camera steadily glides behind [subject] on a Steadicam, smooth and floating, following around the corner and ending in a medium shot as they stop at a door.","seedance":"镜头1：跟 — Steadicam-style glide: the camera floats smoothly behind [subject] at walking pace down a hallway and around a corner, no shake; it settles in a medium shot as they stop at a door; one camera move only.","hailuo":"[subject] walks down a long hallway and around a corner [Tracking shot], the camera gliding smoothly behind them, then stops at a door [Static shot].","luma":"Tracking shot, smoothly gliding: the camera floats behind [subject] at walking pace down a long hallway, follows them around a corner in one weightless line and comes to rest in a medium shot as they stop at a door.","runway":"Medium shot, eye level, smooth Steadicam glide at walking pace behind [subject] down a long hallway; the camera curves with them around a corner and settles as they stop at a door, revealing the room beyond."},"links":[{"label":"melies — steadicam","url":"https://melies.co/cinematic-techniques/camera-movement/steadicam"},{"label":"grokfilm — steadicam shot","url":"https://grokfilm.app/#t/steadicam-shot"}]},{"id":"walk-and-talk","group":"camera-move","name":"Walk and talk","aliases":["Walk and Talk","reverse tracking","Reverse tracking / walk-and-talk","backward tracking","lead-in tracking"],"definition":"The camera moves backward ahead of one or two people walking toward it, holding them at a steady size while they talk, so the conversation keeps moving through the location.","use":"Exposition with energy — corridors, sidewalks, hospital wards, campaign trails; keeps dialogue from going static and lets the world pass behind the speakers.","misuse":"A tracking-shot from behind shows backs instead of faces; letting the walkers gain on the camera turns the frame into a slow dolly-in that crowds them.","clause":"Walk and talk: the camera travels steadily backward in front of [subject] as they walk toward it talking, keeping the same medium shot the whole way, and stops with them as they halt at the end of the corridor.","adapters":{"veo":"Steady reverse tracking shot, medium shot: the camera moves backward ahead of [subject] as they walk toward it and talk, the distance constant, corridor walls sliding past; the camera stops as they halt at the end of the corridor.","kling":"[subject] walks toward the camera down a busy corridor, talking. Camera steadily moves backward in front of [subject], keeping a constant medium shot, and stops as they halt.","seedance":"镜头1：后拉 — walk and talk: the camera moves backward in front of [subject], who walks toward it talking; the medium shot stays the same size the whole way; it stops as they halt; one camera move only.","hailuo":"[subject] walks toward the camera along a corridor, talking [Pull out], the frame holding the same size, then halts [Static shot].","luma":"Pull out, steadily: the camera glides backward ahead of [subject] as they walk toward it talking, keeping a constant medium shot, and comes to rest as they stop at the end of the corridor.","runway":"Medium shot, eye level, steady reverse tracking at walking speed in front of [subject] walking and talking down a corridor; constant distance, 35mm lens; the move ends as they halt."},"links":[{"label":"melies — walk and talk","url":"https://melies.co/cinematic-techniques/camera-movement/walk-and-talk"}]},{"id":"side-tracking","group":"camera-move","name":"Side tracking","aliases":["Side tracking","profile tracking","parallel tracking","alongside tracking"],"definition":"The camera travels sideways alongside a moving subject at their speed, so they stay fixed in profile while the background streams past behind them.","use":"Runners, riders, marching lines, a character striding past storefronts; sells speed and direction while showing the place they pass through.","misuse":"A truck slides sideways past a still scene, and a pan from one spot lets the subject cross the frame and leave it; side tracking needs the subject moving and the camera matching them.","clause":"Side tracking: the camera travels steadily sideways beside [subject] as they run from left to right, matching their pace so they stay centered in profile in a medium-wide frame as the background streams past, and slows to a stop as they do.","adapters":{"veo":"Steady side-tracking shot, medium-wide: the camera travels parallel to [subject] as they run left to right, matching their speed so they stay centered in profile while the background streams by; the camera slows to a stop as they do.","kling":"[subject] runs from left to right along a street. Camera steadily tracks sideways alongside [subject] at the same speed, keeping them centered in profile, stopping as they stop.","seedance":"镜头1：移 — side tracking: the camera moves sideways next to [subject] as they run left to right at the same speed, keeping them centered in profile in a medium-wide shot; it stops when they stop; one camera move only.","hailuo":"[subject] runs from left to right along a street [Truck right], staying centered in profile as the background streams past, then stops [Static shot].","luma":"Truck right, steadily: the camera moves alongside [subject] as they run left to right, matching their speed to hold them centered in profile while the background streams past, and eases to a stop as they halt.","runway":"Medium-wide shot, eye level, steady lateral tracking to the right at running speed beside [subject] in profile; the background streams past behind them; the camera decelerates and stops as they do."}},{"id":"low-tracking","group":"camera-move","name":"Low tracking","aliases":["Low tracking","ground-level tracking","feet tracking","low follow"],"definition":"The camera rides just above the ground while it follows a moving subject, so feet, wheels or paws fill the frame and the surface rushes beneath the lens.","use":"Introduces a character by their stride, adds speed to a chase, and gives pets, toys and products a heroic ground-level journey.","misuse":"A worms-eye angle from a fixed spot has the height but not the travel; a tracking-shot at chest height loses the rushing ground plane that makes the move read.","clause":"Low tracking: the camera glides forward a few inches above the pavement right behind [subject]'s feet at walking pace, the ground rushing beneath the lens, and stops close behind their heels as they halt.","adapters":{"veo":"Low tracking shot just above the ground: the camera glides forward behind [subject]'s feet at walking pace, pavement rushing beneath the lens, and stops close behind their heels as they halt.","kling":"[subject] walks along a wet street. Camera steadily tracks low to the ground behind [subject]'s feet at walking pace, pavement rushing below, stopping behind their heels as they halt.","seedance":"镜头1：跟 — low tracking: the camera moves a few inches above the ground behind [subject]'s feet at walking pace, the pavement rushing below; it stops behind their heels as they halt; one camera move only.","hailuo":"Close to the ground, the camera follows [subject]'s feet along a wet street [Tracking shot], the pavement rushing beneath, until they halt [Static shot].","luma":"Tracking shot, low and smooth: the camera glides a few inches above the pavement behind [subject]'s feet at walking pace and comes to rest behind their heels as they halt.","runway":"Close shot, ground level, low tracking forward at walking speed behind [subject]'s feet; wide lens, the pavement rushing beneath the frame; the camera stops behind their heels as they halt."}},{"id":"vehicle-tracking","group":"camera-move","name":"Vehicle tracking","aliases":["Vehicle tracking","car-to-car","tracking vehicle","camera car","process trailer"],"definition":"A camera on a second moving vehicle paces a car, bike or train from beside, ahead or behind, keeping it at a steady size in frame at road speed.","use":"Car commercials, road trips and chases; shows the vehicle's lines in motion and the landscape flowing past it.","misuse":"A drone-flyover looks down from above and floats free of the road; a roadside pan whips the car past in a second. Vehicle tracking holds the car at one size, as if both share the road.","clause":"Vehicle tracking: the camera travels alongside [subject]'s car at matching highway speed, holding a steady three-quarter front view in a medium-wide shot as the landscape streams past, and keeps that framing to the end as the road bends.","adapters":{"veo":"Vehicle tracking shot from a camera car: the camera travels alongside [subject]'s car at matching highway speed, holding a steady three-quarter front view in a medium-wide shot while the landscape streams past, the framing unchanged to the end.","kling":"[subject] drives a car along a coastal highway. Camera steadily tracks alongside the car at the same speed, three-quarter front view, the landscape streaming past, framing held to the end.","seedance":"镜头1：跟 — vehicle tracking: the camera travels beside [subject]'s car at the same highway speed, holding a three-quarter front view in a medium-wide shot as the landscape streams past; the framing stays constant; one camera move only.","hailuo":"[subject]'s car speeds along a coastal highway [Tracking shot], held at the same size in a three-quarter front view as the landscape streams past.","luma":"Tracking shot, smoothly: the camera moves alongside [subject]'s car at highway speed, holding a steady three-quarter front view while the coastline streams past, the framing constant to the end.","runway":"Medium-wide shot, slightly low, vehicle tracking alongside [subject]'s car at highway speed; the camera holds a three-quarter front view, the coastline streaming past; constant framing to the end."},"links":[{"label":"melies — car chasing","url":"https://melies.co/cinematic-techniques/camera-movement/car-chasing"}]},{"id":"chase-shot","group":"camera-move","name":"Chase shot","aliases":["Chase shot","pursuit shot","running chase cam"],"definition":"The camera pursues a fleeing subject at speed, close behind and a little unsteady, so the audience feels like one of the pursuers.","use":"Foot chases, escapes, horror pursuits; puts the viewer inside the hunt and keeps tension rising shot after shot.","misuse":"A smooth tracking-shot or Steadicam glide stays calm, and handheld shake from a fixed spot has no forward rush; the chase needs speed, a closing gap and a touch of instability.","clause":"Chase shot: the camera rushes forward behind [subject] as they sprint down a narrow alley, closing the gap with a slight jolting bounce, and ends close on their back as they skid to a stop at a dead end.","adapters":{"veo":"Fast chase shot: the camera rushes behind [subject] as they sprint down a narrow alley, closing the gap with a slight jolting bounce, and ends close on their back as they skid to a stop at a dead end.","kling":"[subject] sprints down a narrow alley, fleeing. Camera quickly chases behind [subject] with slight shake, closing the distance, ending close on their back as they stop at a dead end.","seedance":"镜头1：跟，轻微手持晃动 — chase shot: the camera rushes after [subject] sprinting down a narrow alley, closing the gap with a slight bounce; it ends close on their back as they stop at a dead end; one camera move only.","hailuo":"[subject] sprints down a narrow alley [Tracking shot,Shake], the camera closing in fast, until they skid to a stop at a dead end [Static shot].","luma":"Tracking shot, quickly with a slight bounce: the camera rushes after [subject] as they sprint down a narrow alley, gains on them, and lands close on their back as they stop at a dead end.","runway":"Medium shot from behind, eye level, fast forward chase with light handheld bounce after [subject] sprinting down a narrow alley; the camera closes the gap and ends close on their back at a dead end."}},{"id":"follow-from-behind","group":"camera-move","name":"Follow from behind","aliases":["Follow shot / over-the-shoulder","back follow","behind-the-back follow","over-the-shoulder follow"],"definition":"The camera trails a walking subject from just behind one shoulder, so the viewer sees roughly what they see while the back of their head stays in frame.","use":"Entering a new world — a backstage corridor, a party, a stadium tunnel; builds anticipation by holding the reveal ahead of the character.","misuse":"A pov-shot drops the character from the frame entirely, and a tracking-shot from the side shows the face and loses the feeling of walking into the unknown.","clause":"Follow from behind: the camera trails steadily just behind [subject]'s right shoulder as they walk into a crowded hall, the back of their head on the left of frame, and stops with them as the room opens up ahead.","adapters":{"veo":"Steady follow shot from behind, over the right shoulder: the camera trails [subject] into a crowded hall, the back of their head on the left of frame, and stops with them as the room opens up ahead.","kling":"[subject] walks into a crowded hall. Camera steadily follows behind [subject]'s right shoulder, back of the head on the left of frame, stopping as they stop and the room opens up ahead.","seedance":"镜头1：跟 — follow from behind: the camera trails just behind [subject]'s right shoulder as they walk into a crowded hall, the back of their head on the left of frame; it stops when they stop; one camera move only.","hailuo":"[subject] walks into a crowded hall [Tracking shot], seen from just behind the shoulder, then stops as the room opens up [Static shot].","luma":"Tracking shot, steadily from behind: the camera follows over [subject]'s right shoulder as they walk into a crowded hall and comes to rest as they stop, the room spreading out ahead.","runway":"Medium shot from behind, shoulder height, steady forward follow over [subject]'s right shoulder into a crowded hall; the back of their head frames the left side; the camera stops as the room opens up ahead."},"links":[{"label":"melies — follow","url":"https://melies.co/cinematic-techniques/camera-movement/follow"},{"label":"grokfilm — follow shot","url":"https://grokfilm.app/#t/follow-shot"}]},{"id":"slider-shot","group":"camera-move","name":"Slider shot","aliases":["Slider left","Slider right","Slider Shot","slider move","micro-dolly"],"definition":"A short, slow sideways glide on a small rail — a foot or two at most — that adds gentle parallax to an otherwise still frame.","use":"Tabletop product shots, interviews, food and detail B-roll; brings a still subject to life without drawing attention to the move.","misuse":"A full truck covers real distance and changes what is in the scene; a slow pan rotates instead of sliding and loses the foreground parallax that makes a slider look polished.","clause":"Slider shot: the camera slides slowly to the left for about a foot past [subject] on a tabletop, a soft foreground object drifting across the lens, and stops with [subject] centered in a close-up.","adapters":{"veo":"Slow slider shot, close-up: the camera slides left about a foot past [subject] on a tabletop, a soft foreground object drifting across the frame, and stops with [subject] centered.","kling":"[subject] sits on a wooden tabletop. Camera slowly slides left on a slider, a short smooth move with foreground parallax, stopping with [subject] centered in close-up.","seedance":"镜头1：特写，缓慢移 — slider shot: the camera slides about a foot to the left past [subject] on a tabletop, a soft foreground object drifting across; it stops with [subject] centered; one camera move only.","hailuo":"[subject] on a wooden tabletop, a soft object in the foreground [Truck left], a short, slow glide that stops with [subject] centered [Static shot].","luma":"Truck left, slowly and smoothly: a short slider glide past [subject] on a tabletop, a soft foreground object drifting across, ending with [subject] centered in close-up.","runway":"Close-up, slightly high angle, slow slider move left over about one foot past [subject] on a tabletop; 50mm lens, shallow focus, a soft foreground object passing; ends with [subject] centered."},"links":[{"label":"melies — slider","url":"https://melies.co/cinematic-techniques/camera-movement/slider"}]},{"id":"pass-by","group":"camera-move","name":"Pass-by shot","aliases":["Push past / pass-by shot","push past","pass-by","fly-past","sweep past"],"definition":"The camera skims close past a subject and keeps going, so the subject swells in frame and sweeps out of one edge while the camera travels on.","use":"Energy in sports and ads, a quick look at a detail on the way to something else, a runner or car whipping past the lens.","misuse":"A push-through travels into an opening and arrives in a new space, and a whip-pan only rotates in place; a pass-by must physically brush past the subject at close range.","clause":"Pass-by shot: the camera glides quickly forward along a garden path and skims past [subject], who stands just left of its line, so they grow large and sweep out of the left edge of frame; the move ends looking down the empty path ahead.","adapters":{"veo":"Fast forward pass-by shot: the camera glides along a garden path and skims past [subject] standing just left of its line, [subject] growing large and sweeping out of the left edge, ending on the empty path ahead.","kling":"[subject] stands beside a garden path. Camera quickly glides forward along the path and passes close by [subject], who sweeps out of the left of frame, ending on the empty path ahead.","seedance":"镜头1：推 — pass-by: the camera glides fast along a garden path and skims past [subject] standing just left of its line; [subject] grows large and sweeps out of the left edge; it ends on the empty path ahead; one camera move only.","hailuo":"The camera glides fast down a garden path [Push in], passing close by [subject], who sweeps out of the left of frame, ending on the empty path ahead.","luma":"Push in, quickly and smoothly: the camera glides down a garden path and skims past [subject] at arm's length, [subject] sweeping out of the left edge, and the move settles on the empty path ahead.","runway":"Medium shot to close, eye level, fast forward dolly along a garden path that passes [subject] at arm's length; [subject] sweeps out of the left edge; 24mm lens; the move ends on the empty path ahead."}},{"id":"aerial-push-in","group":"camera-move","name":"Aerial push-in","aliases":["Drone push in","Aerial Push In","drone approach","aerial approach"],"definition":"A drone flies forward and slightly down toward a subject from far away, closing a great distance until a person or building takes up a meaningful part of the frame.","use":"Finds the hero inside a vast landscape, closes on a lone house, or opens a story by descending from the world to one person.","misuse":"A drone-flyover glides over the land without a destination, and a zoom-in from the air flattens the approach; the push-in needs real forward travel that ends on the subject.","clause":"Aerial push-in: the drone flies slowly forward and gently down over a valley toward [subject] standing on a ridge, from an extreme wide shot to a wide shot, and stops with [subject] small but clear in the lower third.","adapters":{"veo":"Slow aerial push-in by drone: the camera flies forward and gently descends over a valley toward [subject] standing on a ridge, from extreme wide to wide, and stops with [subject] small but clear in the lower third.","kling":"[subject] stands on a mountain ridge. Camera slowly pushes in from high in the air, a drone flying forward and down over the valley toward [subject], stopping in a wide shot with them in the lower third.","seedance":"镜头1：航拍视角，缓慢推 — the drone flies forward and slightly down over a valley toward [subject] on a ridge, from 大全景 to 全景; it stops with [subject] in the lower third; one camera move only.","hailuo":"High above a valley, the camera flies toward [subject] on a ridge [Push in,Pedestal down], stopping with them small in the lower third [Static shot].","luma":"Push in, slowly from the air: a drone glides forward and gently down over a valley toward [subject] on a ridge, coming to rest in a wide shot with them in the lower third.","runway":"Extreme wide aerial shot, high angle, slow drone push-in forward and slightly down toward [subject] on a ridge; ends in a wide shot with [subject] in the lower third, the valley spread behind."},"links":[{"label":"melies — aerial push","url":"https://melies.co/cinematic-techniques/camera-movement/aerial-push"}]},{"id":"earth-zoom","group":"camera-move","name":"Earth zoom","aliases":["Earth Zoom","Earth zoom out","cosmic zoom","zoom to orbit","planet pullback"],"definition":"One continuous pullback from a close view of a subject up through rooftops, clouds and atmosphere until the whole planet hangs in space — or the same path flown in reverse.","use":"Scale and connection: one person's place in the world, a global product story, the opening of an epic or the close of a journey.","misuse":"A drone-flyover or dolly-out tops out at a few hundred meters, and cutting between heights breaks the unbroken climb that makes the earth zoom feel like a single breath.","clause":"Earth zoom: the camera pulls straight up and away from [subject] on a city rooftop, accelerating smoothly through the clouds and atmosphere, and ends on the whole Earth in space with the city a point of light.","adapters":{"veo":"Continuous earth zoom out: the camera pulls straight up from [subject] on a city rooftop, accelerating smoothly through clouds and atmosphere, and ends on the whole Earth in space, the city a single point of light.","kling":"[subject] stands on a city rooftop. Camera pulls straight up and away in one continuous move, accelerating through the clouds into space, ending on the whole Earth.","seedance":"镜头1：后拉，一镜到底 — earth zoom: the camera rises straight up from [subject] on a city rooftop, accelerating through the clouds and atmosphere; it ends on the whole Earth in space; one camera move only.","hailuo":"[subject] on a city rooftop as the camera rises away [Pull out,Pedestal up], through the clouds and into space, ending on the whole Earth [Static shot].","luma":"Pull out, gradually accelerating: the camera rises straight up from [subject] on a city rooftop through the clouds and the atmosphere, coming to rest on the whole Earth floating in space.","runway":"Close top-down shot of [subject] on a city rooftop; continuous vertical pull-out, accelerating through clouds into orbit; the move ends on the full Earth in space, the city a point of light. Continuous, seamless shot."},"links":[{"label":"melies — earth zoom","url":"https://melies.co/cinematic-techniques/camera-movement/earth-zoom"}]},{"id":"infinite-zoom","group":"camera-move","name":"Infinite zoom","aliases":["Infinite zoom","endless zoom","recursive zoom","Droste effect"],"definition":"An endless forward zoom in which each image contains the next — a picture inside a picture, a world inside an eye — so the camera never seems to arrive.","use":"Dream logic, recursion, looping music visuals, and transitions that travel between scales or worlds in a single move.","misuse":"A crash-zoom snaps to one tight frame and stops, and a plain zoom-in runs out of image; the infinite zoom keeps revealing new detail at the same steady rate.","clause":"Infinite zoom: the camera zooms steadily forward into [subject]'s eye, through the iris into a landscape, through a window in that landscape into a room, at one constant speed, and ends on [subject]'s eye again, ready to loop.","adapters":{"veo":"Steady infinite zoom: the camera moves forward at constant speed into [subject]'s eye, through the iris into a landscape, through a window in that landscape into a room, and arrives back on [subject]'s eye, ready to loop.","kling":"[subject] looks into the lens. Camera steadily zooms forward without stopping into [subject]'s eye, through the iris into a landscape, through a window into a room, ending on [subject]'s eye again.","seedance":"镜头1：推，一镜到底 — infinite zoom: at one constant speed the camera moves into [subject]'s eye, through the iris into a landscape, through a window into a room, and ends on [subject]'s eye again; one camera move only.","hailuo":"Close-up of [subject]'s eye [Zoom in], through the iris into a landscape, through a window into a room, arriving back at [subject]'s eye.","luma":"Zoom in, steadily and endlessly: the frame travels into [subject]'s eye, through the iris into a landscape, through a window into a room, and returns to [subject]'s eye at the same pace.","runway":"Extreme close-up of [subject]'s eye; continuous forward zoom at constant speed through the iris into a landscape, then through a window into a room, ending on [subject]'s eye again. Continuous, seamless shot."}},{"id":"hyperlapse","group":"camera-move","name":"Hyperlapse","aliases":["Hyperlapse","moving time-lapse","walklapse"],"definition":"A time-lapse in which the camera also travels a long way between frames, so hours or a whole walk compress into seconds of smooth, rushing movement.","use":"City energy, journeys, crowds flowing around a still figure, and transitions that cover a whole day or neighborhood in one move.","misuse":"A time-lapse from a locked tripod only speeds up the world, and a fast tracking-shot moves in real time, so clouds, crowds and light behave normally; the hyperlapse needs both travel and compressed time.","clause":"Hyperlapse: the camera advances steadily forward along a busy avenue toward [subject] standing still on the corner while time races, crowds and traffic streaking past, and ends in a medium shot of [subject] as the sky turns from day to dusk.","adapters":{"veo":"Hyperlapse: the camera advances steadily along a busy avenue toward [subject] standing still on a corner while time races, crowds and traffic streaking past, ending in a medium shot of [subject] as the sky shifts from day to dusk.","kling":"[subject] stands still on a busy street corner. Camera steadily moves forward in a hyperlapse, time racing, crowds and traffic streaking by, ending in a medium shot of [subject] as day turns to dusk.","seedance":"镜头1：推 — hyperlapse (time-lapse while the camera travels): the camera advances along a busy avenue toward [subject] standing still on a corner, crowds and traffic streaking; it ends in 中景 on [subject] as day turns to dusk; one camera move only.","hailuo":"Time races on a busy avenue, crowds and traffic streaking [Push in], toward [subject] standing still on a corner as day turns to dusk [Static shot].","luma":"Push in, steadily as a hyperlapse: the camera advances along a busy avenue while time races, crowds and traffic streaking past, and settles in a medium shot on [subject], still on the corner as dusk falls.","runway":"Wide shot to medium shot, eye level, steady forward hyperlapse along a busy avenue toward [subject] standing still on a corner; crowds and traffic streak; the sky shifts from day to dusk as the move ends."},"links":[{"label":"melies — hyperlapse","url":"https://melies.co/cinematic-techniques/camera-movement/hyperlapse"}]},{"id":"whip-tilt","group":"camera-move","name":"Whip tilt","aliases":["Whip Tilt","swish tilt","snap tilt"],"definition":"A vertical whip: the camera snaps up or down so fast that everything between the first and last framing streaks into blur.","use":"Jumps from a face to the threat above, from the sky down to a landing, a vertical punchline or a beat-synced reveal of height.","misuse":"A slow tilt stays readable and lacks the snap; a whip-pan travels sideways and reads as a horizontal handoff rather than a lift or a drop.","clause":"Whip tilt: the camera holds on [subject] looking up, then snaps upward almost instantly, the frame streaking into vertical blur, and lands sharp on a helicopter hovering above.","adapters":{"veo":"Medium close-up of [subject] looking up, then a whip tilt: the camera snaps upward in a split second, the frame streaking into vertical motion blur, landing sharp on a helicopter hovering overhead.","kling":"[subject] looks up at the sky. Camera holds, then quickly whip-tilts upward with strong motion blur, landing sharp on a helicopter hovering above.","seedance":"镜头1：快速上摇 — whip tilt: hold on [subject] looking up, then the camera snaps upward in a split second with vertical motion blur and lands sharp on a helicopter hovering above; one camera move only.","hailuo":"[subject] looks up [Static shot], then the camera snaps upward [Tilt up], the frame streaking, landing on a helicopter hovering above [Static shot].","luma":"Tilt up, very quickly as a whip: from [subject] looking up, the camera snaps upward through a streak of motion blur and lands crisp on a helicopter hovering above.","runway":"Medium close-up, low angle on [subject] looking up; the camera whip-tilts upward in under half a second with vertical motion blur and lands sharp on a helicopter hovering above."},"links":[{"label":"melies — whip tilt","url":"https://melies.co/cinematic-techniques/camera-movement/whip-tilt"}]},{"id":"camera-roll","group":"camera-move","name":"Camera roll","aliases":["Camera Roll","Dutch Roll","barrel roll","roll shot","rotating horizon"],"definition":"The camera rotates around its own lens axis during the shot, so the horizon turns like a clock hand while the subject stays near the center.","use":"Disorientation, intoxication, zero gravity, a world turning upside down; also a stylish transition when matched to the next shot's spin.","misuse":"A dutch-angle is a fixed tilt that never moves, and an orbit travels around the subject; the roll spins the frame itself on the spot.","clause":"Camera roll: the camera slowly rotates clockwise on its lens axis while facing [subject] in a medium close-up, the horizon turning through half a revolution, and stops with the room upside down behind them.","adapters":{"veo":"Medium close-up, slow camera roll: the camera rotates clockwise on its lens axis while facing [subject], the horizon turning through half a revolution, and stops with the room upside down behind them.","kling":"[subject] stands still, dazed. Camera slowly rolls clockwise on its axis, the horizon rotating half a turn, keeping [subject] centered, ending with the room upside down behind them.","seedance":"镜头1：近景 — camera roll (镜头沿光轴旋转): the camera slowly rotates clockwise while facing [subject], the horizon turning half a revolution; it stops with the room upside down behind them; one camera move only.","hailuo":"[subject] stands centered and dazed as the whole frame slowly rotates clockwise until the room hangs upside down behind them [Static shot].","luma":"Roll, slowly and smoothly clockwise: the camera turns on its lens axis while facing [subject] in medium close-up and comes to rest with the room upside down behind them.","runway":"Medium close-up, eye level, slow clockwise barrel roll on the lens axis while facing [subject]; the horizon rotates 180 degrees and the move ends with the room upside down behind them."},"links":[{"label":"eyecannndy — camera roll","url":"https://eyecannndy.com/technique/camera-roll"},{"label":"melies — camera roll","url":"https://melies.co/cinematic-techniques/camera-movement/camera-roll"}]},{"id":"double-dolly","group":"camera-move","name":"Double dolly","aliases":["Double Dolly","floating walk","dolly-on-dolly","gliding subject"],"definition":"The subject rides one moving platform while the camera rides another, so the person glides through space at a constant size without taking a step.","use":"Dreamlike or uncanny drift — a character carried along by fate, a music-video float, a moment where the world moves and the person does not.","misuse":"A walk-and-talk shows the natural bob of walking, and a tracking-shot follows feet that move; in a double dolly the body stays still while the street slides past.","clause":"Double dolly: [subject] stands still and glides forward down a night street as if on a moving floor, while the camera travels backward ahead of them at the same slow speed, holding a medium shot until both stop at a crossing.","adapters":{"veo":"Medium shot, double dolly: [subject] stands perfectly still yet glides forward down a night street, the camera moving backward ahead at the same slow speed so their size holds; both come to rest at a crossing.","kling":"[subject] stands still, gliding forward down a night street as if on a moving platform. Camera slowly moves backward ahead of [subject] at the same speed, constant medium shot, both stopping at a crossing.","seedance":"镜头1：中景，缓慢后拉 — double dolly: [subject] stands still yet glides forward down a night street as if carried; the camera moves backward ahead at the same speed, size constant; both stop at a crossing; one camera move only.","hailuo":"[subject] stands still yet glides forward down a night street [Pull out], held at the same size, until both stop at a crossing [Static shot].","luma":"Pull out, slowly and smoothly: [subject] stands motionless and glides forward down a night street while the camera drifts back ahead of them at the same pace, holding a medium shot until both stop at a crossing.","runway":"Medium shot, eye level, slow reverse dolly ahead of [subject], who stands still while gliding forward down a night street at the same speed; the frame holds a constant size until both stop at a crossing."},"links":[{"label":"eyecannndy — double dolly","url":"https://eyecannndy.com/technique/double-dolly"},{"label":"melies — double dolly","url":"https://melies.co/cinematic-techniques/camera-movement/double-dolly"}]},{"id":"locked-on","group":"camera-move","name":"Locked-on mount","aliases":["Locked-On","hard mount","object-locked camera","rig mount"],"definition":"The camera is rigidly fixed to a moving object or prop, so that object stays frozen in the frame while everything around it swings, tilts and rushes.","use":"Skateboards, bikes, roller coasters, a sword or a bottle in a stunt; makes motion physical and dizzying, and keeps a product nailed in place.","misuse":"A snorricam points back at a performer's face, and a tracking-shot keeps its distance from a separate rig, so the object drifts in frame instead of staying fixed.","clause":"Locked-on mount: the camera is fixed to the front of [subject]'s skateboard, the deck nailed to the bottom of the frame, as the street tilts and rushes past on a fast downhill run, ending as the board rolls to a stop.","adapters":{"veo":"Locked-on shot from a camera rigidly mounted to the nose of [subject]'s skateboard: the deck stays fixed in the bottom of frame while the street tilts and rushes past on a fast downhill run, ending as the board rolls to a stop.","kling":"[subject] skates fast downhill. Camera locked onto the front of the skateboard, the deck fixed at the bottom of frame, the street rushing and tilting around it, ending as the board rolls to a stop.","seedance":"镜头1：固定在滑板上 (locked-on mount) — the camera is rigidly fixed to the nose of [subject]'s skateboard; the deck stays still at the bottom of frame while the street rushes and tilts downhill; it ends as the board stops; keep the mount rigid.","hailuo":"From a camera fixed to the nose of [subject]'s skateboard, the deck stays still at the bottom of frame as the street rushes and tilts downhill, until the board rolls to a stop.","luma":"Tracking shot, rigidly mounted to the nose of [subject]'s skateboard: the deck holds still at the bottom of frame while the street rushes and tilts past, and the shot settles as the board rolls to a stop.","runway":"Close shot, ground level, camera hard-mounted to the nose of [subject]'s skateboard; the deck stays fixed at the bottom of frame while the street rushes and tilts on a fast downhill run; ends as the board stops."},"links":[{"label":"eyecannndy — locked-on","url":"https://eyecannndy.com/technique/locked-on"},{"label":"melies — locked on","url":"https://melies.co/cinematic-techniques/camera-movement/locked-on"}]},{"id":"car-mount","group":"camera-move","name":"Car mount","aliases":["Car Grip","hood mount","door mount","bumper mount"],"definition":"A camera bolted to the outside of a car — hood, door or bumper — so the bodywork sits rigid in the foreground while road and scenery slide past.","use":"Driving scenes seen through the windshield, car ads, road movies; gives travel a solid, physical feel.","misuse":"Vehicle-tracking from another car keeps a gap and lets the car shift in frame, and a cabin-mount sits inside; on a car mount the car's own metal is part of the composition.","clause":"Car mount: the camera is fixed to the hood of [subject]'s car looking back through the windshield at them driving, the hood rigid in the lower frame, the road and trees sliding past at speed for the whole shot.","adapters":{"veo":"Car-mount shot: a camera fixed to the hood looks back through the windshield at [subject] driving, the hood rigid in the lower frame while the road and trees slide past at speed, the framing locked for the whole shot.","kling":"[subject] drives along a country road. Camera mounted on the car's hood looking back through the windshield, hood fixed in frame, trees and road sliding past, steady framing.","seedance":"镜头1：车头固定机位 (car mount) — the camera is fixed to the hood, looking back through the windshield at [subject] driving; the hood stays still in the lower frame while road and trees slide past; keep the mount rigid.","hailuo":"From a camera fixed to the car's hood, [subject] drives behind the windshield, the hood still in the lower frame as road and trees slide past.","luma":"Tracking shot, mounted to the hood: the camera looks back through the windshield at [subject] driving, the hood holding still in the lower frame while trees and road slide smoothly past.","runway":"Medium shot through the windshield, camera hard-mounted on the hood facing [subject] driving; the hood fills the lower frame and stays rigid while trees and road stream past; constant framing."},"links":[{"label":"melies — car grip","url":"https://melies.co/cinematic-techniques/camera-movement/car-grip"}]},{"id":"cabin-mount","group":"camera-move","name":"Cabin mount","aliases":["Buckle Up","dashboard mount","in-car mount","passenger-seat rig"],"definition":"The camera is rigged inside the vehicle with the subject — on the dashboard or a passenger seat — so the cabin stays steady and the outside world moves through the windows.","use":"Conversations in cars, a lone driver's close-ups, acceleration and braking felt through the body rather than through the frame.","misuse":"A car-mount sits outside and frames the bodywork, and a handheld camera in the car shakes on its own; the cabin mount moves only with the vehicle.","clause":"Cabin mount: the camera is fixed to the dashboard facing [subject] in the driver's seat in a medium close-up, the cabin perfectly steady while streetlights slide across the windows and [subject] sways with each turn, until the car stops.","adapters":{"veo":"Medium close-up from a camera fixed to the dashboard facing [subject] in the driver's seat: the cabin stays steady while streetlights slide across the windows and [subject] sways with each turn, until the car stops.","kling":"[subject] drives at night. Camera fixed to the dashboard facing [subject], steady cabin, streetlights sliding across the windows, [subject] swaying with the turns, until the car stops.","seedance":"镜头1：近景，车内固定机位 (dashboard mount) — the camera is fixed to the dashboard facing [subject] driving at night; the cabin stays still, streetlights slide across the windows; it ends as the car stops; keep the mount rigid.","hailuo":"[subject] drives at night, seen from the dashboard [Static shot], the cabin steady while streetlights slide across the windows, until the car stops.","luma":"Static camera fixed to the dashboard, facing [subject] in the driver's seat at night: the cabin holds steady while streetlights glide across the windows and [subject] sways gently with each turn until the car stops.","runway":"Medium close-up, eye level, locked-off camera mounted on the dashboard facing [subject] driving at night; streetlights sweep across the windows; [subject] sways with each turn; ends as the car stops."},"links":[{"label":"melies — buckle up","url":"https://melies.co/cinematic-techniques/camera-movement/buckle-up"}]},{"id":"road-rush","group":"camera-move","name":"Road rush","aliases":["Road Rush","low road chase","asphalt skim"],"definition":"The camera skims inches above the asphalt at high speed, lane lines and road texture smearing beneath it, so the road itself carries the motion.","use":"Speed for car and bike spots, chase openers, title backgrounds, the rush just before an impact.","misuse":"A low-tracking shot moves at walking pace behind feet, and a drone-flyover floats high above; road rush needs extreme low height and real speed so the ground smears.","clause":"Road rush: the camera races forward a few inches above a night highway, lane lines smearing into streaks beneath the lens, toward [subject]'s motorcycle ahead, and ends close behind its glowing tail light.","adapters":{"veo":"Road rush: the camera races forward inches above a night highway, lane lines smearing into streaks beneath it, toward [subject]'s motorcycle ahead, ending close behind its glowing tail light.","kling":"[subject] rides a motorcycle down a night highway. Camera quickly rushes forward just above the asphalt, lane lines streaking below, ending close behind the tail light.","seedance":"镜头1：快速推 — road rush: the camera rushes forward a few inches above a night highway, lane lines smearing below, toward [subject]'s motorcycle; it ends close behind the tail light; one camera move only.","hailuo":"Inches above a night highway, lane lines streaking below [Push in], the camera races toward [subject]'s motorcycle, ending close behind its tail light [Static shot].","luma":"Push in, very fast and low: the camera skims inches above a night highway, lane lines smearing beneath it, and closes on [subject]'s motorcycle, settling behind its glowing tail light.","runway":"Low ground-level shot, fast forward move inches above a night highway; lane lines smear beneath the frame; the camera closes on [subject]'s motorcycle and ends behind its glowing tail light; wide lens."},"links":[{"label":"melies — road rush","url":"https://melies.co/cinematic-techniques/camera-movement/road-rush"}]},{"id":"falling-camera","group":"camera-move","name":"Falling camera","aliases":["Falling","drop shot","freefall camera","plunge"],"definition":"The camera drops as if let go — plunging straight down or tumbling with a falling subject — so the viewer feels gravity take over.","use":"Falls and leaps, dream falls, the view of a dropped phone, shock beats where control is suddenly lost.","misuse":"A pedestal down lowers the camera slowly and level, and a crane move descends in a controlled arc; a falling camera accelerates like a dropped object.","clause":"Falling camera: the camera drops straight down alongside [subject] as they fall backward off a high diving platform, accelerating with them while the tower rushes upward past the frame, and ends as they break the surface of the pool.","adapters":{"veo":"Falling camera: the camera drops straight down alongside [subject] as they fall backward off a high diving platform, accelerating with them as the tower rushes upward past the frame, ending as they break the water's surface.","kling":"[subject] falls backward off a high diving platform. Camera quickly drops alongside [subject], accelerating with the fall, the tower rushing upward, ending as they hit the water.","seedance":"镜头1：急速下降 (falling camera) — the camera falls straight down beside [subject] as they drop backward off a high diving platform, accelerating with them; it ends as they break the water; one camera move only.","hailuo":"[subject] falls backward off a high diving platform [Pedestal down], the camera dropping alongside as the tower rushes upward, until they break the water.","luma":"Pedestal down, accelerating rapidly: the camera falls alongside [subject] as they drop backward off a high diving platform, the tower rushing upward, and the move ends as they break the water's surface.","runway":"Medium shot at [subject]'s level; the camera free-falls straight down beside them as they drop backward off a high diving platform; the tower rushes upward; ends as they break the water."},"links":[{"label":"eyecannndy — falling","url":"https://eyecannndy.com/technique/falling"},{"label":"melies — falling","url":"https://melies.co/cinematic-techniques/camera-movement/falling"}]},{"id":"parallax-move","group":"camera-move","name":"Parallax move","aliases":["Parallax","parallax effect","Parallax Effect","2.5D parallax","depth slide"],"definition":"A slow sideways or diagonal drift past several clearly separated depth layers, so near objects slide fast, the subject slides slower and the far distance barely moves.","use":"Makes a static scene or a still image feel three-dimensional — the standard way to bring photos, product sets and landscapes to life.","misuse":"A truck through open space has no layers to separate, so it reads as a flat slide, and a zoom changes size rather than depth; the parallax move needs staged foreground, midground and background.","clause":"Parallax move: the camera drifts slowly to the right past tall grass in the foreground, [subject] standing in the midground and mountains far behind, the layers sliding at different speeds, and stops with [subject] framed between two stems.","adapters":{"veo":"Slow parallax move to the right: tall grass in the foreground slides quickly past, [subject] in the midground slides slower, distant mountains barely shift; the camera stops with [subject] framed between two stems.","kling":"[subject] stands in a meadow, tall grass in front, mountains behind. Camera slowly moves right, strong parallax between the layers, stopping with [subject] between two grass stems.","seedance":"镜头1：缓慢移 — parallax: the camera drifts right past tall foreground grass, [subject] in the midground and mountains far behind, each layer sliding at its own speed; it stops with [subject] between two stems; one camera move only.","hailuo":"Tall grass in the foreground, [subject] in the midground, mountains behind [Truck right], the layers sliding at different speeds, stopping with [subject] between two stems [Static shot].","luma":"Truck right, slowly and smoothly: tall foreground grass slides fast, [subject] in the midground slides slower and the mountains barely move; the camera comes to rest with [subject] between two stems.","runway":"Wide shot, eye level, slow lateral move right past tall foreground grass; [subject] in the midground, mountains far behind; strong layered parallax; ends with [subject] framed between two stems; 35mm lens."},"links":[{"label":"eyecannndy — parallax","url":"https://eyecannndy.com/technique/parallax"},{"label":"melies — parallax","url":"https://melies.co/cinematic-techniques/camera-movement/parallax"},{"label":"grokfilm — parallax effect","url":"https://grokfilm.app/#t/parallax-effect"}]},{"id":"wandering-camera","group":"camera-move","name":"Wandering camera","aliases":["Wandering","drifting camera","walkthrough camera","exploring camera"],"definition":"The camera roams through a space at walking pace as if exploring on its own — drifting past objects and turning toward details — rather than following anyone.","use":"Discovering a house, a party or a memory; immersive establishing moves and liminal, dreamlike spaces.","misuse":"A tracking-shot is locked to a moving subject and a Steadicam glide follows a planned route; wandering feels curious and unscripted, yet it should still arrive somewhere.","clause":"Wandering camera: the camera drifts slowly forward through an empty apartment at walking pace, past a table and an open door with gentle turns, and comes to rest on [subject] sitting by the window in a medium-wide shot.","adapters":{"veo":"Slow wandering camera at walking pace: the view drifts forward through an empty apartment, past a table and an open door with gentle turns, and comes to rest on [subject] sitting by the window in a medium-wide shot.","kling":"[subject] sits by a window in a quiet apartment. Camera slowly wanders forward through the rooms at walking pace, gently turning past a table and an open door, ending on [subject] in a medium-wide shot.","seedance":"镜头1：缓慢推 — wandering camera: at walking pace the camera drifts through an empty apartment, past a table and an open door with gentle turns; it comes to rest on [subject] by the window; one camera move only.","hailuo":"The camera wanders through a quiet apartment past a table and an open door [Push in], arriving at [subject] sitting by the window [Static shot].","luma":"Push in, slowly and gently drifting: the camera wanders through a quiet apartment, past a table and an open door, and settles on [subject] sitting by the window in a medium-wide shot.","runway":"Medium-wide shot, eye level, slow forward drift at walking pace through a quiet apartment with gentle turns past a table and an open door; the move ends on [subject] sitting by the window; 28mm lens."},"links":[{"label":"eyecannndy — wandering","url":"https://eyecannndy.com/technique/wandering"},{"label":"melies — wandering","url":"https://melies.co/cinematic-techniques/camera-movement/wandering"}]},{"id":"found-footage","group":"camera-move","name":"Found footage","aliases":["found footage","Found Footage","camcorder POV","diegetic camera"],"definition":"The picture pretends to come from a camera inside the story — a camcorder, phone or body cam held by a character — complete with framing slips, focus hunting and a date stamp.","use":"Horror, mockumentary, viral-feeling ads and UGC; makes events feel caught rather than staged.","misuse":"Plain handheld is still a filmmaker's camera with deliberate framing; shake alone misses the character's point of view, the consumer lens and the on-screen camera artifacts.","clause":"Found footage: a character's camcorder walks forward down a dark hallway toward [subject], the frame bobbing and briefly losing focus in the low light, and ends tilted and too close on [subject] as they turn toward the lens.","adapters":{"veo":"Found-footage camcorder view: the camera walks forward down a dark hallway toward [subject], bobbing and briefly hunting for focus in the low light, a date stamp in the corner, ending tilted and too close as [subject] turns to the lens.","kling":"[subject] stands at the end of a dark hallway. Handheld camcorder footage, the camera walks forward, bobbing, focus hunting, a date stamp in the corner, ending too close as [subject] turns to the lens.","seedance":"镜头1：手持镜头 — found footage from a character's camcorder: it walks forward down a dark hallway toward [subject], bobbing, focus hunting, a date stamp in the corner; it ends tilted and close as [subject] turns to the lens.","hailuo":"Camcorder footage walking down a dark hallway toward [subject] [Push in,Shake], focus hunting in the low light, ending close as [subject] turns to the lens.","luma":"Handheld camcorder view, walking forward with a natural bob: the camera moves down a dark hallway toward [subject], focus briefly hunting, a date stamp glowing in the corner, and ends tilted and close as [subject] turns to the lens.","runway":"Medium shot to close-up, eye level, handheld consumer camcorder walking forward down a dark hallway toward [subject]; autofocus hunts in the low light; a date stamp in the corner; ends tilted and close as [subject] turns to the lens."},"links":[{"label":"melies — found footage look","url":"https://melies.co/cinematic-techniques/genre-looks/found-footage-look"},{"label":"grokfilm — found footage","url":"https://grokfilm.app/#t/found-footage"}]},{"id":"hero-cam","group":"camera-move","name":"Hero cam","aliases":["Hero Cam","hero walk","hero arrival"],"definition":"A low, three-quarter camera that tracks backward ahead of a subject striding toward it, usually with a hard edge of light, turning an ordinary walk into an arrival.","use":"Character introductions, sports and fashion walk-ups, team lineups; adds power and swagger to someone entering the story.","misuse":"A static low-angle has the height but no travel, and a walk-and-talk at eye level stays conversational; the hero cam combines low height, a three-quarter view and steady backward travel.","clause":"Hero cam: the camera tracks slowly backward at hip height ahead of [subject], who strides toward it at a three-quarter angle with a hard rim of light on one shoulder, and stops as they plant their feet in a low-angle medium shot.","adapters":{"veo":"Low-angle hero cam: the camera tracks slowly backward at hip height ahead of [subject], who strides toward it at a three-quarter angle with a hard rim light on one shoulder, and stops as they plant their feet in a medium shot.","kling":"[subject] strides toward the camera with confidence. Camera slowly tracks backward at hip height, low three-quarter angle, hard rim light, stopping in a low-angle medium shot as they plant their feet.","seedance":"镜头1：低角度，缓慢后拉 — hero cam: the camera moves backward at hip height ahead of [subject] striding toward it at a three-quarter angle, a hard rim light on one shoulder; it stops in 中景 as they plant their feet; one camera move only.","hailuo":"Low, at a three-quarter angle, [subject] strides toward the camera with a hard rim light on one shoulder [Pull out], then plants their feet [Static shot].","luma":"Pull out, slowly from a low angle: the camera glides backward at hip height ahead of [subject], who strides toward it at a three-quarter angle with a hard rim light on one shoulder, and settles as they plant their feet.","runway":"Medium shot, low angle from hip height, slow reverse tracking ahead of [subject] striding toward the lens at a three-quarter angle; hard rim light on one shoulder; 35mm lens; ends as they plant their feet."},"links":[{"label":"melies — hero cam","url":"https://melies.co/cinematic-techniques/camera-movement/hero-cam"}]},{"id":"three-point-lighting","group":"lighting","name":"Three-point lighting","aliases":["three-point lighting","3-point lighting","key fill back","key light","Key Light","fill light","Fill Light"],"definition":"The classic portrait setup: a key light does the main work from one side of the camera, a softer fill on the other side lifts the shadows, and a back light behind the subject draws an edge that lifts them off the background.","use":"Interviews, corporate and product work, any scene that needs a clean, controlled, readable face; the neutral baseline other looks are built from.","misuse":"Leaving out the back light lets dark hair and clothes merge with the background; matching fill to key flattens the face into high-key, while dropping the fill entirely turns it into low-key.","clause":"Three-point lighting on [subject]: a soft key from 45 degrees camera left shapes the face, a dimmer fill from camera right opens the shadows, and a back light outlines the hair and shoulders against a darker background, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera, three-point lighting: a soft key from 45 degrees left shapes [subject]'s face, a gentle fill from the right opens the shadows, and a back light traces the hair and shoulders against a darker background.","kling":"[subject] sits facing the camera in a studio. Medium close-up, static camera, three-point lighting, soft key from the left, gentle fill from the right, back light on the hair and shoulders, darker background.","seedance":"镜头1：近景，固定镜头 — [subject] in a studio; three-point lighting (三点布光): soft key from the front left, weaker fill from the right, a back light rimming the hair and shoulders against a darker background.","hailuo":"[subject] sits in a studio, face shaped by a soft key from the left, shadows opened by a gentle fill, hair and shoulders outlined by a back light [Static shot].","luma":"Static camera, medium close-up: [subject] in classic three-point lighting, a soft key from the left, a gentle fill from the right and a back light outlining the hair and shoulders against a darker background.","runway":"Medium close-up, eye level, locked-off camera on [subject]; three-point lighting: soft key from 45 degrees left, low fill from the right, back light separating the hair and shoulders from a darker background."},"links":[{"label":"melies — three point lighting","url":"https://melies.co/cinematic-techniques/lighting/three-point-lighting"},{"label":"grokfilm — three-point lighting","url":"https://grokfilm.app/#t/three-point-lighting"}]},{"id":"kicker-light","group":"lighting","name":"Kicker","aliases":["Kicker Light","kicker light","three-quarter backlight","cheek kicker"],"definition":"A light placed behind the subject and off to one side, roughly opposite the key, that skims along the cheek, jaw and neck on the shadow side and leaves a bright sliver there.","use":"Gives a face shape and pulls it off a dark background in low-key and night scenes; adds a crisp, sculpted edge to action, noir and beauty close-ups.","misuse":"The existing rim light sits more directly behind and outlines the whole head and shoulders; a kicker hits one side of the face only, so asking for a rim gets an even halo instead of the single bright cheek line.","clause":"Kicker light on [subject]: a hard source behind and to the right, opposite a soft key from the front left, rakes along the shadow-side cheek and jaw and draws a thin bright line there, the background dark, camera static in close-up.","adapters":{"veo":"Close-up, static camera: a soft key from the front left lights [subject]'s face while a hard kicker light from behind on the right rakes the shadow-side cheek and jaw with a thin bright line, the background dark.","kling":"[subject] in a dark room. Close-up, static camera, soft key from the front left, a hard kicker light from behind on the right drawing a bright line along the shadow-side cheek and jaw, dark background.","seedance":"镜头1：特写，固定镜头 — [subject] in a dark room; soft key from the front left; a kicker light (侧逆光) from behind on the right draws a thin bright line along the shadow-side cheek and jaw; the background stays dark.","hailuo":"[subject]'s face is lit softly from the front left while a hard light from behind on the right draws a thin bright line along the dark-side cheek and jaw [Static shot].","luma":"Static camera, close-up: [subject] with a soft key from the front left and a hard kicker from behind on the right, a thin bright line along the shadow-side cheek and jaw against a dark background.","runway":"Close-up, eye level, locked-off camera on [subject]; soft key from the front left, hard kicker light from behind camera-right raking the shadow-side cheek and jaw, dark background."},"links":[{"label":"melies — kicker","url":"https://melies.co/cinematic-techniques/lighting/kicker"},{"label":"grokfilm — kicker light","url":"https://grokfilm.app/#t/kicker-light"}]},{"id":"hair-light","group":"lighting","name":"Hair light","aliases":["Hair Light","top backlight","separation light"],"definition":"A light above and slightly behind the subject aimed down at the head, so the hair and the tops of the shoulders catch a soft glow that lifts them off the background.","use":"Separation for dark hair against dark sets, polished interview and beauty portraits, a gentle halo on romantic or heroic close-ups.","misuse":"The existing rim light comes from behind at head height and outlines the sides of the figure; a hair light comes from high overhead and lights the crown, so a rim on dark hair still leaves the top of the head lost in the background.","clause":"Hair light on [subject]: a soft source high above and just behind them lights the crown of the head and the tops of the shoulders with a warm glow, a soft key from the front left on the face, the background dark, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera: a soft key from the front left lights [subject]'s face while a hair light high above and behind lays a warm glow on the crown and shoulders, lifting them off a dark background.","kling":"[subject] stands against a dark background. Medium close-up, static camera, soft key from the front left, a warm hair light from above and behind glowing on the hair and shoulders.","seedance":"镜头1：近景，固定镜头 — [subject] against a dark background; soft key from the front left; a hair light (发光) high above and behind lays a warm glow on the crown and the tops of the shoulders.","hailuo":"[subject] against a dark background, face softly lit from the front left, a warm glow from high behind resting on the hair and shoulders [Static shot].","luma":"Static camera, medium close-up: [subject] against a dark background, a soft key from the front left and a warm hair light from high behind glowing on the crown and shoulders.","runway":"Medium close-up, eye level, locked-off camera on [subject]; soft key from the front left, warm hair light from high behind lighting the crown and shoulders, dark background."},"links":[{"label":"melies — hair light","url":"https://melies.co/cinematic-techniques/lighting/hair-light"},{"label":"grokfilm — hair light","url":"https://grokfilm.app/#t/hair-light"}]},{"id":"eye-light","group":"lighting","name":"Eye light","aliases":["Eye Light","catchlight","catch light","eye sparkle"],"definition":"A small, low-power light near the lens whose only job is to put a bright point in the subject's eyes — the catchlight — without changing the exposure of the face.","use":"Brings eyes to life in close-ups, especially in dark or moody scenes where the face is mostly shadow; signals warmth, alertness or innocence.","misuse":"Raising the key to brighten the eyes floods the whole face and kills the mood; several big catchlights or a ring shape where the scene has no such source reads as a studio beauty shot.","clause":"Eye light on [subject]: the face sits in moody low light from a single side source while a small soft light just above the lens puts one bright catchlight in each eye, camera static in close-up.","adapters":{"veo":"Close-up, static camera: [subject]'s face in moody low light from one side source, a small soft eye light just above the lens placing a single bright catchlight in each eye.","kling":"[subject] looks toward the camera in a dim room. Close-up, static camera, moody side light, a small eye light above the lens giving one bright catchlight in each eye.","seedance":"镜头1：特写，固定镜头 — [subject] in a dim room, lit by one moody side light; an eye light (眼神光) just above the lens puts a single bright catchlight in each eye.","hailuo":"[subject] gazes toward the lens in a dim room, face in moody side light, a single bright catchlight glinting in each eye [Static shot].","luma":"Static camera, close-up: [subject] in moody side light, a small eye light just above the lens adding one bright catchlight to each eye.","runway":"Close-up, eye level, locked-off camera on [subject]; moody single side light on the face, small eye light above the lens creating one catchlight in each eye."},"links":[{"label":"melies — eye light","url":"https://melies.co/cinematic-techniques/lighting/eye-light"},{"label":"grokfilm — eye light","url":"https://grokfilm.app/#t/eye-light"}]},{"id":"butterfly-lighting","group":"lighting","name":"Butterfly lighting","aliases":["Butterfly Lighting","paramount lighting","glamour key","butterfly shadow"],"definition":"The key sits high and straight in front of the face, above the lens, so it casts a small, symmetrical butterfly-shaped shadow directly under the nose and soft shading beneath the cheekbones and chin.","use":"Glamour, beauty and fashion close-ups; a polished, classic star look that flatters cheekbones and smooths skin.","misuse":"Moving the key off to the side breaks the symmetry into loop or Rembrandt shadows; a key that is too high drops dark sockets over the eyes, which reads as top light rather than glamour.","clause":"Butterfly lighting on [subject]: a soft key high and centered above the lens throws a small symmetrical shadow just under the nose and gentle shading below the cheekbones and chin, the face evenly bright left to right, camera static in close-up.","adapters":{"veo":"Close-up, static camera, butterfly lighting: a soft key high and centered above the lens casts a small symmetrical shadow under [subject]'s nose and gentle shading beneath the cheekbones, the face evenly lit side to side.","kling":"[subject] faces the camera in a studio. Close-up, static camera, butterfly lighting from high in front, a small symmetrical shadow under the nose, sculpted cheekbones, glamorous.","seedance":"镜头1：特写，固定镜头 — [subject] faces the camera; butterfly lighting (蝴蝶光): a soft key high and centered in front casts a small symmetrical shadow under the nose and soft shading below the cheekbones.","hailuo":"[subject] faces the camera, lit from high directly in front, a small symmetrical shadow beneath the nose and soft shading under the cheekbones [Static shot].","luma":"Static camera, close-up: [subject] in butterfly lighting, a soft key high and centered in front casting a small symmetrical shadow under the nose and sculpting the cheekbones.","runway":"Close-up, eye level, locked-off camera on [subject]; butterfly lighting from a soft key high and centered above the lens, small symmetrical nose shadow, shaded cheekbones."},"links":[{"label":"melies — butterfly lighting","url":"https://melies.co/cinematic-techniques/lighting/butterfly-lighting"},{"label":"grokfilm — butterfly lighting","url":"https://grokfilm.app/#t/butterfly-lighting"}]},{"id":"loop-lighting","group":"lighting","name":"Loop lighting","aliases":["Loop Lighting","loop shadow","30-degree key"],"definition":"The key sits a little to one side of the camera and slightly above eye height, so the nose casts a small shadow that loops down toward the mouth corner without touching the cheek shadow.","use":"The everyday flattering portrait: interviews, headshots, dialogue close-ups that need shape without drama.","misuse":"Swinging the key further round joins the nose shadow to the cheek and turns it into Rembrandt lighting; centering the key gives butterfly lighting's symmetrical shadow under the nose.","clause":"Loop lighting on [subject]: a soft key about 30 degrees to camera left and a little above eye height casts a small nose shadow that angles down toward the mouth corner, the far cheek lightly shaded, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera, loop lighting: a soft key 30 degrees to the left and slightly above eye height casts a small nose shadow angling toward the corner of [subject]'s mouth, the far cheek gently shaded.","kling":"[subject] talks to someone off camera. Medium close-up, static camera, loop lighting, soft key slightly left and above, a small nose shadow angled toward the mouth, gentle shading.","seedance":"镜头1：近景，固定镜头 — [subject] talks to someone off camera; loop lighting (环形光): soft key slightly to the left and above eye height, a small nose shadow angling toward the mouth corner.","hailuo":"[subject] talks to someone off camera, a soft light from slightly left and above casting a small nose shadow toward the mouth corner [Static shot].","luma":"Static camera, medium close-up: [subject] in loop lighting, a soft key slightly left and above eye height casting a small nose shadow that angles toward the mouth.","runway":"Medium close-up, eye level, locked-off camera on [subject]; loop lighting from a soft key 30 degrees left and slightly high, small nose shadow angled toward the mouth."},"links":[{"label":"melies — loop lighting","url":"https://melies.co/cinematic-techniques/lighting/loop-lighting"},{"label":"grokfilm — loop lighting","url":"https://grokfilm.app/#t/loop-lighting"}]},{"id":"short-lighting","group":"lighting","name":"Short lighting","aliases":["Short Lighting","short side key","far-side key"],"definition":"With the face turned partly away from the camera, the key lights the far side of the face — the side turned away — so the side nearest the lens falls into shadow.","use":"Slims and sculpts the face, adds mood and seriousness; drama, thrillers, moody portraits.","misuse":"Lighting the near side instead gives broad lighting, which widens the face and feels open; with the face square to camera there is no short or broad side, so the shadow lands evenly.","clause":"Short lighting on [subject]: their face turned three-quarters to camera right, a soft key from camera right lights the far side of the face while the cheek nearest the lens falls into shadow, the background dim, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera, short lighting: [subject]'s face turned three-quarters to the right, the key lighting the far side of the face while the cheek nearest the lens falls into shadow, the background dim.","kling":"[subject] looks off to the right. Medium close-up, static camera, short lighting, the side of the face away from the camera lit, the near cheek in shadow, dim background, moody.","seedance":"镜头1：近景，固定镜头 — [subject] turns three-quarters to the right; short lighting (窄光): the side of the face away from the lens is lit, the cheek nearest the lens falls into shadow; dim background.","hailuo":"[subject] looks off to the right, the far side of the face lit and the cheek nearest the camera in shadow, the background dim [Static shot].","luma":"Static camera, medium close-up: [subject] turned three-quarters away, the far side of the face lit and the near cheek falling into shadow against a dim background.","runway":"Medium close-up, eye level, locked-off camera on [subject] turned three-quarters right; short lighting, the far side of the face lit, the near cheek in shadow, dim background."},"links":[{"label":"melies — short lighting","url":"https://melies.co/cinematic-techniques/lighting/short-lighting"},{"label":"grokfilm — short lighting","url":"https://grokfilm.app/#t/short-lighting"}]},{"id":"broad-lighting","group":"lighting","name":"Broad lighting","aliases":["Broad Lighting","broad side key","near-side key"],"definition":"With the face turned partly away from the camera, the key lights the side of the face nearest the lens — the broad side — while the far side takes the shadow.","use":"Opens up and widens a face, feels friendly and approachable; comedy, lifestyle, upbeat interviews.","misuse":"Lighting the far side instead gives short lighting and a slimmer, moodier face; a centered frontal key flattens both sides and loses the turn of the head.","clause":"Broad lighting on [subject]: their face turned three-quarters to camera right, a soft key from camera left lights the cheek and ear nearest the lens while the far side of the face falls into soft shadow, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera, broad lighting: [subject]'s face turned three-quarters to the right, a soft key from the left lighting the cheek nearest the lens while the far side falls into soft shadow.","kling":"[subject] looks off to the right and smiles. Medium close-up, static camera, broad lighting, the side of the face nearest the camera lit, the far side in soft shadow, warm and open.","seedance":"镜头1：近景，固定镜头 — [subject] turns three-quarters to the right and smiles; broad lighting (宽光): the side of the face nearest the lens is lit, the far side in soft shadow.","hailuo":"[subject] turns slightly away and smiles, the cheek nearest the camera lit and the far side of the face in soft shadow [Static shot].","luma":"Static camera, medium close-up: [subject] turned three-quarters away and smiling, the cheek nearest the lens lit and the far side resting in soft shadow.","runway":"Medium close-up, eye level, locked-off camera on [subject] turned three-quarters right; broad lighting, soft key lighting the near cheek, the far side of the face in soft shadow."},"links":[{"label":"melies — broad lighting","url":"https://melies.co/cinematic-techniques/lighting/broad-lighting"},{"label":"grokfilm — broad lighting","url":"https://grokfilm.app/#t/broad-lighting"}]},{"id":"chiaroscuro","group":"lighting","name":"Chiaroscuro","aliases":["Chiaroscuro","tenebrism","painterly light and shadow","sculpted contrast"],"definition":"Painterly modeling of form through strong light and shadow: a directional source rolls light across faces and objects in smooth gradations, so volumes look carved out of surrounding darkness.","use":"Prestige drama, period pieces, religious or mythic imagery, still-life product shots that should feel like an old-master painting.","misuse":"The existing low-key card is about the overall ratio — most of the frame dark, one hard source; chiaroscuro is about the gradient across each form, so a hard light with abrupt edges gives low-key graphic contrast instead of the soft, rounded painted modeling.","clause":"Chiaroscuro on [subject]: one warm directional source high on camera left rolls light across the face and hands in a smooth gradient from bright to deep shadow, the forms modeled like a painting against a near-black room, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, chiaroscuro: one warm directional light high on the left models [subject]'s face and hands in a smooth gradient from bright to deep shadow, like an old painting, against a near-black room.","kling":"[subject] sits at a wooden table in a dark room. Medium shot, static camera, chiaroscuro lighting, one warm source high on the left, smooth gradients from light to deep shadow, painterly.","seedance":"镜头1：中景，固定镜头 — [subject] at a wooden table in a dark room; chiaroscuro (明暗对照法): one warm source high on the left models the face and hands in smooth gradients from bright to deep shadow, painterly.","hailuo":"[subject] at a wooden table in a dark room, one warm light high on the left modeling the face and hands in smooth gradients from bright to deep shadow, like a painting [Static shot].","luma":"Static camera, medium shot: [subject] at a wooden table in a dark room, one warm high light from the left modeling the face and hands in smooth painterly gradients into deep shadow.","runway":"Medium shot, eye level, locked-off camera on [subject] at a wooden table; chiaroscuro from one warm source high on the left, smooth gradients from light into deep shadow, near-black room."},"links":[{"label":"melies — chiaroscuro","url":"https://melies.co/cinematic-techniques/lighting/chiaroscuro"},{"label":"grokfilm — chiaroscuro","url":"https://grokfilm.app/#t/chiaroscuro"}]},{"id":"motivated-lighting","group":"lighting","name":"Motivated lighting","aliases":["Motivated Lighting","motivated light","source-motivated light","justified light"],"definition":"Light that appears to come from a source the scene justifies — a window, a lamp, a fire, a screen — even when the real unit is off camera, so its direction, color and hardness match that source.","use":"Naturalism: the audience believes the room, the time of day and the world; lets drama look lit without looking lit.","misuse":"The existing practical-lighting card is about sources visible in frame that actually light the subject; motivated light only needs a believable source, often off screen, and a key whose direction contradicts the window or lamp breaks the illusion either way.","clause":"Motivated lighting on [subject]: a cool soft light enters from a window just off frame left, matching its direction and color across the face and the wall behind, the far side of the room falling darker, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, motivated lighting: cool soft light enters from a window just off frame left, falling across [subject]'s face and the wall behind in the window's direction, the far side of the room darker.","kling":"[subject] stands in a quiet kitchen. Medium shot, static camera, motivated lighting from a window off frame left, cool soft daylight across the face and wall, the room falling darker away from the window.","seedance":"镜头1：中景，固定镜头 — [subject] in a quiet kitchen; motivated lighting (动机光源): cool soft daylight comes from a window just off frame left and falls across the face and wall; the far side of the room darker.","hailuo":"[subject] stands in a quiet kitchen, cool soft daylight from a window just out of frame on the left falling across the face and wall, the far side of the room darker [Static shot].","luma":"Static camera, medium shot: [subject] in a quiet kitchen, cool soft daylight from a window just off frame left falling across the face and wall, the room darkening away from it.","runway":"Medium shot, eye level, locked-off camera on [subject] in a kitchen; motivated lighting from an off-frame window left, cool soft daylight across the face and wall, the room darker away from the window."},"links":[{"label":"melies — motivated lighting","url":"https://melies.co/cinematic-techniques/lighting/motivated-lighting"},{"label":"grokfilm — motivated lighting","url":"https://grokfilm.app/#t/motivated-lighting"}]},{"id":"available-light","group":"lighting","name":"Available light","aliases":["Available Light","ambient light","Ambient Light","Naturalistic Ambient","existing light","naturalistic lighting"],"definition":"Shooting with whatever light already exists in the location — daylight, streetlights, shop windows, overheads — with little or no added film lighting.","use":"Documentary, vérité and indie realism, travel and street footage, UGC that should feel unstaged.","misuse":"A polished three-point setup in a real location reads as staged; making every surface evenly bright erases the patchy, uneven pools that tell the eye the light was found.","clause":"Available light on [subject]: lit only by the flat overcast daylight through a café's front windows and the warm ceiling bulbs inside, faces slightly uneven and the back of the room dimmer, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, natural available light: [subject] in a café lit only by overcast daylight through the front windows and warm ceiling bulbs, slightly uneven on the face, the back of the room dimmer.","kling":"[subject] sits by the window of a café. Medium shot, static camera, natural available light only, overcast daylight and warm ceiling bulbs, uneven and realistic, documentary feel.","seedance":"镜头1：中景，固定镜头 — [subject] by the window of a café; available light only (自然现场光): overcast daylight through the windows and warm ceiling bulbs, slightly uneven on the face, the back of the room dimmer.","hailuo":"[subject] sits in a café lit only by overcast daylight from the windows and warm ceiling bulbs, the back of the room dimmer [Static shot].","luma":"Static camera, medium shot: [subject] in a café lit only by overcast window daylight and warm ceiling bulbs, slightly uneven light, the back of the room falling dimmer.","runway":"Medium shot, eye level, locked-off camera on [subject] in a café; available light only, overcast daylight through the front windows and warm ceiling bulbs, the back of the room dimmer."},"links":[{"label":"melies — available light","url":"https://melies.co/cinematic-techniques/lighting/available-light"},{"label":"grokfilm — available light","url":"https://grokfilm.app/#t/available-light"}]},{"id":"bounce-light","group":"lighting","name":"Bounce light","aliases":["Bounce Light","bounced light","bounce fill","reflector fill"],"definition":"Light redirected off a surface — a white card, a wall, a ceiling, sunlit pavement — so it arrives broad and soft, and takes on the color of whatever it bounced from.","use":"Gentle fill that opens shadows without a second visible source; warm, natural-looking faces in sunlight; soft overall light in small rooms.","misuse":"Aiming a second lamp straight at the shadow side gives a hard second shadow and a lit look; forgetting the bounce surface's color misses the warm or green tint a real bounce carries.","clause":"Bounce light on [subject]: hard sun from behind them reflects off warm sand at their feet and fills their face from below and in front with a soft, golden glow, the shadows open and gentle, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera: hard sun behind [subject] reflects off warm sand and fills the face from below with soft golden bounce light, the shadows open and gentle.","kling":"[subject] stands on a beach with the sun behind them. Medium close-up, static camera, soft golden bounce light from the sand filling the face, gentle open shadows, warm.","seedance":"镜头1：近景，固定镜头 — [subject] on a beach, the sun behind them; bounce light (反光补光) off the warm sand fills the face from below with a soft golden glow; shadows open and gentle.","hailuo":"[subject] stands on a beach with the sun behind them, the face filled from below by soft golden light reflected off the sand [Static shot].","luma":"Static camera, medium close-up: [subject] on a beach with the sun behind, soft golden light reflected up from the sand gently filling the face.","runway":"Medium close-up, eye level, locked-off camera on [subject] on a beach; sun behind, soft golden bounce light from the sand filling the face from below, gentle open shadows."},"links":[{"label":"melies — bounce light","url":"https://melies.co/cinematic-techniques/lighting/bounce-light"},{"label":"grokfilm — bounce light","url":"https://grokfilm.app/#t/bounce-light"}]},{"id":"soft-light","group":"lighting","name":"Soft light","aliases":["Soft Light","diffused light","Diffusion","soft key","wraparound light"],"definition":"Light from a large source relative to the subject — an overcast sky, a diffusion frame, a big window — that wraps around forms and leaves shadows with gradual, feathered edges.","use":"Flattering faces, beauty, romance, lifestyle and food; calm, gentle, approachable moods.","misuse":"A small bare bulb or direct sun gives crisp, hard shadows however dim it is; dimming a hard light does not soften it — only a larger, closer source does.","clause":"Soft light on [subject]: a large diffused source just off camera left wraps around the face, the shadows fading gradually with feathered edges and the skin smooth, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera: a large diffused source just off camera left wraps soft light around [subject]'s face, shadows fading gradually with feathered edges, the skin smooth.","kling":"[subject] smiles gently in a bright room. Medium close-up, static camera, soft diffused light from the left wrapping the face, gentle gradual shadows, smooth skin.","seedance":"镜头1：近景，固定镜头 — [subject] smiles gently; soft light (柔光): a large diffused source from the left wraps around the face, shadows fade gradually with feathered edges.","hailuo":"[subject] smiles gently, a large soft light from the left wrapping around the face, the shadows fading gradually [Static shot].","luma":"Static camera, medium close-up: [subject] smiling gently in soft diffused light from the left, the light wrapping the face and the shadows fading with feathered edges.","runway":"Medium close-up, eye level, locked-off camera on [subject]; large diffused soft key from camera left, wraparound light, gradual feathered shadows."},"links":[{"label":"melies — soft light","url":"https://melies.co/cinematic-techniques/lighting/soft-light"},{"label":"grokfilm — soft light","url":"https://grokfilm.app/#t/soft-light"}]},{"id":"top-light","group":"lighting","name":"Top light","aliases":["Top Light","Top Lighting","overhead light","top-down key","downlight"],"definition":"A single source directly above the subject points straight down, lighting the head, nose and shoulders while the eye sockets and the area under the chin drop into shadow.","use":"Interrogations, menace, isolation, power seen from above; boxing rings, office cubicles, a lone figure under a lamp.","misuse":"A high frontal key gives butterfly glamour with lit eyes; flat overhead office light with lots of fill keeps the eyes visible and loses the hollow, haunted look.","clause":"Top light on [subject]: a single hard lamp directly overhead lights the crown, nose and shoulders while the eyes sink into dark sockets and the room around falls to black, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera: a single hard lamp directly above [subject] lights the crown, nose and shoulders while the eyes sink into dark sockets, the surrounding room falling to black.","kling":"[subject] sits alone at a table in a dark room. Medium close-up, static camera, a single hard light directly overhead, the eyes in deep shadow, the room black.","seedance":"镜头1：近景，固定镜头 — [subject] alone at a table in a dark room; top light (顶光): one hard lamp directly overhead lights the crown and nose, the eyes sink into shadow, the room black.","hailuo":"[subject] sits alone at a table under a single hard lamp directly overhead, the eyes sunk in shadow, the room black [Static shot].","luma":"Static camera, medium close-up: [subject] alone at a table under one hard lamp directly overhead, light on the crown and nose, the eyes deep in shadow, the room falling to black.","runway":"Medium close-up, eye level, locked-off camera on [subject] at a table; single hard top light directly overhead, eyes in dark sockets, the room in black."},"links":[{"label":"melies — top light","url":"https://melies.co/cinematic-techniques/lighting/top-light"},{"label":"grokfilm — top lighting","url":"https://grokfilm.app/#t/top-lighting"}]},{"id":"under-lighting","group":"lighting","name":"Under lighting","aliases":["Underlighting","Uplighting","under light","monster light","campfire-story light"],"definition":"The key comes from below the face — a flashlight, a fire, a phone screen, a floor lamp — so shadows run upward and the familiar shape of the face turns strange.","use":"Horror, campfire stories, villains, eerie or unnatural moments; screen-lit faces at night.","misuse":"A slightly low key at chest height only reads as a soft low angle of light; adding strong overhead fill cancels the upward shadows that make the face uncanny.","clause":"Under lighting on [subject]: a flashlight held at chest height points up at their face, throwing shadows upward over the nose, brows and forehead, everything around them in darkness, camera static in close-up.","adapters":{"veo":"Close-up, static camera: a flashlight held at chest height lights [subject]'s face from below, shadows running upward over the nose, brows and forehead, everything around in darkness.","kling":"[subject] holds a flashlight under their chin in a dark room. Close-up, static camera, under lighting from below, shadows cast upward across the face, eerie, dark surroundings.","seedance":"镜头1：特写，固定镜头 — [subject] in a dark room holds a flashlight below the face; under lighting (底光): shadows run upward over the nose and brows; everything else in darkness.","hailuo":"[subject] holds a flashlight under their chin in a dark room, the face lit from below with shadows climbing over the nose and brows [Static shot].","luma":"Static camera, close-up: [subject] lit from below by a flashlight at chest height, shadows climbing over the nose, brows and forehead, the surroundings in darkness.","runway":"Close-up, eye level, locked-off camera on [subject]; under lighting from a flashlight held at chest height, shadows cast upward across the face, dark surroundings."},"links":[{"label":"melies — under light","url":"https://melies.co/cinematic-techniques/lighting/under-light"},{"label":"grokfilm — uplighting","url":"https://grokfilm.app/#t/uplighting"}]},{"id":"cross-lighting","group":"lighting","name":"Cross lighting","aliases":["Cross Lighting","crosslight","opposing side keys"],"definition":"Two lights from opposite sides of the subject, each lighting one side of the face or body, so both edges are bright and a darker band runs down the middle.","use":"Sculpted, muscular, high-energy portraits; sports and fight scenes; two-color looks with a different gel on each side.","misuse":"A single side light leaves one half dark, which is split lighting; two lights placed near the camera flatten the face instead of carving it from both sides.","clause":"Cross lighting on [subject]: a cool hard light from the left and a warm hard light from the right each catch one side of the face and shoulders, a darker band down the center, background dark, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera, cross lighting: a cool hard light from the left and a warm hard light from the right each catch one side of [subject]'s face and shoulders, a darker band down the center, dark background.","kling":"[subject] stands in a dark gym. Medium close-up, static camera, cross lighting, cool light from the left and warm light from the right on each side of the face, dark center band, dark background.","seedance":"镜头1：近景，固定镜头 — [subject] in a dark gym; cross lighting (交叉光): a cool hard light from the left and a warm hard light from the right each light one side of the face, a darker band down the middle.","hailuo":"[subject] stands in a dark gym, one side of the face lit cool from the left and the other warm from the right, a darker band down the middle [Static shot].","luma":"Static camera, medium close-up: [subject] in a dark gym, a cool light from the left and a warm light from the right each catching one side of the face, a darker band down the center.","runway":"Medium close-up, eye level, locked-off camera on [subject]; cross lighting with a cool hard source left and a warm hard source right, a darker center band, dark background."},"links":[{"label":"melies — cross lighting","url":"https://melies.co/cinematic-techniques/lighting/cross-lighting"},{"label":"grokfilm — cross lighting","url":"https://grokfilm.app/#t/cross-lighting"}]},{"id":"firelight","group":"lighting","name":"Firelight","aliases":["Firelight","fire light","campfire light","flickering firelight","fireplace glow"],"definition":"Warm orange light from flames — a campfire, a fireplace, torches — that flickers, shifts in brightness and falls off quickly into darkness.","use":"Intimacy and storytelling around a fire, survival, period and fantasy interiors, menace at night.","misuse":"A steady warm key has the color but not the flicker, so it reads as a lamp; a single orange grade over a dark scene gives no direction and no falloff from the flames.","clause":"Firelight on [subject]: a campfire just below frame throws warm, flickering orange light up across their face and hands, the brightness shifting with the flames and falling off quickly into the dark woods behind, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera: a campfire just below frame throws warm, flickering orange light across [subject]'s face and hands, the brightness shifting with the flames and falling off into the dark woods behind. Ambient noise: crackling fire.","kling":"[subject] sits by a campfire at night in the woods. Medium close-up, static camera, warm flickering orange firelight on the face and hands, quick falloff into darkness.","seedance":"镜头1：近景，固定镜头 — [subject] by a campfire at night; warm flickering orange firelight (火光) on the face and hands, brightness shifting with the flames, falling off into dark woods <crackling fire>.","hailuo":"[subject] sits by a campfire at night, warm orange light flickering across the face and hands, the dark woods behind [Static shot].","luma":"Static camera, medium close-up: [subject] by a campfire at night, warm orange firelight flickering across the face and hands and fading quickly into the dark woods behind.","runway":"Medium close-up, eye level, locked-off camera on [subject] by a campfire at night; warm flickering firelight from below frame, quick falloff into dark woods."},"links":[{"label":"shot.cafe — tag: fire light","url":"https://shot.cafe/tag/fire%20light"},{"label":"grokfilm — firelight","url":"https://grokfilm.app/#t/firelight"}]},{"id":"neon-lighting","group":"lighting","name":"Neon lighting","aliases":["Neon Lighting","neon noir","neon glow","neon spill","Tech Noir"],"definition":"Saturated colored light from neon signs and tubes — magenta, cyan, red, electric blue — spilling onto faces and wet surfaces, often two colors fighting in one frame.","use":"Neon noir, cyberpunk, nightlife, music videos and fashion; urban loneliness and seduction at night.","misuse":"A pink-and-blue grade over a neutrally lit scene has the colors but no sources or spill; a clean, evenly exposed face under neon looks like a studio composite.","clause":"Neon lighting on [subject]: a magenta sign on one side and a cyan sign on the other spill saturated color across their face and onto the wet pavement, deep shadows between the colors, camera static in medium shot at night.","adapters":{"veo":"Medium shot, static camera at night: a magenta neon sign on one side and a cyan one on the other spill saturated color across [subject]'s face and onto wet pavement, deep shadows between the colors.","kling":"[subject] stands in a rainy alley at night. Medium shot, static camera, neon lighting, magenta from one side and cyan from the other, color spilling on the wet ground, deep shadows.","seedance":"镜头1：中景，固定镜头 — [subject] in a rainy alley at night; neon lighting (霓虹灯光): magenta from one side, cyan from the other, saturated spill across the face and the wet pavement; deep shadows.","hailuo":"[subject] stands in a rainy alley at night, magenta and cyan neon spilling across the face and the wet pavement [Static shot].","luma":"Static camera, medium shot at night: [subject] in a rainy alley, magenta neon from one side and cyan from the other spilling saturated color across the face and the wet pavement.","runway":"Medium shot, eye level, locked-off camera on [subject] in a rainy alley at night; neon lighting, magenta sign left and cyan sign right, saturated spill on the face and wet pavement."},"links":[{"label":"shot.cafe — tag: neon","url":"https://shot.cafe/tag/neon"},{"label":"melies — neon practical","url":"https://melies.co/cinematic-techniques/lighting/neon-practical"},{"label":"grokfilm — neon lighting","url":"https://grokfilm.app/#t/neon-lighting"}]},{"id":"dappled-light","group":"lighting","name":"Dappled light","aliases":["Dappled Light","leaf shadows","komorebi","broken sunlight"],"definition":"Sunlight broken up by leaves, branches or lattice into scattered patches of light and shade that drift as the foliage moves.","use":"Summer, nostalgia, romance, gardens and forests; a gentle sense of place and of time passing on a warm afternoon.","misuse":"A uniform leaf-pattern overlay that never moves looks projected; full shade or full sun loses the broken patches that define the look.","clause":"Dappled light on [subject]: sun filtering through overhead leaves scatters small moving patches of warm light across their face and shoulders, the rest in soft green shade, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera: sun filtering through leaves overhead scatters small, gently moving patches of warm light across [subject]'s face and shoulders, the rest in soft green shade.","kling":"[subject] sits under a tree on a summer afternoon. Medium close-up, static camera, dappled sunlight through the leaves, small moving patches of light on the face, soft green shade.","seedance":"镜头1：近景，固定镜头 — [subject] under a tree on a summer afternoon; dappled light (斑驳光影): sunlight through the leaves scatters small moving patches of warm light across the face and shoulders.","hailuo":"[subject] sits under a tree on a summer afternoon, small patches of sunlight through the leaves drifting across the face and shoulders [Static shot].","luma":"Static camera, medium close-up: [subject] under a tree on a summer afternoon, sunlight through the leaves scattering small, softly moving patches of warm light across the face.","runway":"Medium close-up, eye level, locked-off camera on [subject] under a tree; dappled afternoon sun through the leaves, small moving patches of warm light, soft green shade."},"links":[{"label":"melies — dappled light","url":"https://melies.co/cinematic-techniques/lighting/dappled-light"},{"label":"grokfilm — dappled light","url":"https://grokfilm.app/#t/dappled-light"}]},{"id":"gobo-lighting","group":"lighting","name":"Gobo pattern","aliases":["Gobo Lighting","gobo","Cucoloris","cookie","patterned light","venetian blind shadows","blinds shadow"],"definition":"A cut-out pattern — venetian blinds, a window frame, branches, a metal stencil — placed in front of a hard light so it projects a defined shape of light and shadow onto the subject and set.","use":"Noir stripes, suggesting an off-screen window or place, breaking up a plain wall, prison bars, mystery and tension.","misuse":"A soft light blurs the pattern into mush, so the shape needs a hard, distant source; stripes that run in a different direction on the wall and on the face give away a fake overlay.","clause":"Gobo pattern on [subject]: a hard light through venetian blinds off frame right lays sharp parallel stripes of light and shadow across their face, shoulders and the wall behind, the rest of the room dark, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera: a hard light through venetian blinds off frame right lays sharp parallel stripes of light and shadow across [subject]'s face, shoulders and the wall behind, the rest of the room dark.","kling":"[subject] sits at a desk in a dark office at night. Medium shot, static camera, hard light through venetian blinds, sharp stripes of light and shadow across the face and wall.","seedance":"镜头1：中景，固定镜头 — [subject] at a desk in a dark office at night; gobo pattern (遮光图案): hard light through venetian blinds lays sharp parallel stripes across the face, shoulders and wall.","hailuo":"[subject] sits at a desk in a dark office, hard light through venetian blinds laying sharp stripes of light and shadow across the face and the wall [Static shot].","luma":"Static camera, medium shot: [subject] at a desk in a dark office, hard light through venetian blinds laying sharp parallel stripes of light and shadow across the face and wall.","runway":"Medium shot, eye level, locked-off camera on [subject] at a desk; hard light through venetian blinds from the right, sharp parallel stripes across the face, shoulders and wall, dark room."},"links":[{"label":"shot.cafe — tag: blinds","url":"https://shot.cafe/tag/blinds"},{"label":"melies — gobo lighting","url":"https://melies.co/cinematic-techniques/lighting/gobo-lighting"},{"label":"grokfilm — gobo lighting","url":"https://grokfilm.app/#t/gobo-lighting"}]},{"id":"cameo-lighting","group":"lighting","name":"Cameo lighting","aliases":["Cameo Lighting","cameo light","pool of light on black","isolated pool"],"definition":"The subject sits in a tight, controlled pool of light while the background and surroundings receive none at all, so they seem to float against pure black.","use":"Theatrical monologues, confessions, dream or memory spaces, luxury products and portraits that should feel isolated and precious.","misuse":"Low-key lighting still lets parts of the set read in the shadows; cameo needs the background completely unlit, and light spilling onto the floor or walls breaks the floating effect.","clause":"Cameo lighting on [subject]: a soft, tightly controlled pool of light covers only their face and shoulders, the floor and background receiving no light and falling to pure black, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera, cameo lighting: a tightly controlled soft pool of light covers only [subject]'s face and shoulders, the background and floor falling to pure black so they seem to float.","kling":"[subject] speaks quietly. Medium close-up, static camera, cameo lighting, a tight soft pool of light on the face and shoulders only, the background pure black.","seedance":"镜头1：近景，固定镜头 — [subject] speaks quietly; cameo lighting (孤光照明): a tight soft pool of light on the face and shoulders only; the background and floor pure black.","hailuo":"[subject] speaks quietly, only the face and shoulders lit by a tight soft pool of light, everything around in pure black [Static shot].","luma":"Static camera, medium close-up: [subject] speaking quietly, a tight soft pool of light on the face and shoulders only, floating against pure black.","runway":"Medium close-up, eye level, locked-off camera on [subject]; cameo lighting, a tight soft pool on the face and shoulders, the background completely black."},"links":[{"label":"melies — cameo lighting","url":"https://melies.co/cinematic-techniques/lighting/cameo-lighting"}]},{"id":"epiphany-light","group":"lighting","name":"Epiphany light","aliases":["Epiphany","epiphany shot","realization light","light of revelation"],"definition":"Light changes on the face at the instant a character understands something: a beam reaches them, a shadow lifts or the key slowly brightens, so the realization is visible in the light itself.","use":"Turning points, revelations, conversions, the moment a plan clicks; music videos and ads built around a single emotional beat.","misuse":"A cut to a brighter shot puts the change between shots instead of on the face; a light that brightens with no motivated source or with no reaction from the performer reads as an exposure glitch.","clause":"Epiphany light on [subject]: they sit in dim, cool shadow; as their expression shifts into realization, a warm shaft of sunlight slides across the floor and settles on their face, which ends fully lit, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera: [subject] sits in dim, cool shadow; as realization crosses their face, a warm shaft of sunlight slides across the floor and settles on the face, which ends fully lit.","kling":"[subject] sits in a dim room, thinking. Medium close-up, static camera, as their expression turns to realization, warm sunlight slowly moves onto the face until it is fully lit.","seedance":"镜头1：近景，固定镜头 — [subject] sits in dim, cool shadow; as the expression turns to realization, a warm shaft of sunlight slides onto the face (顿悟光) and ends fully lit.","hailuo":"[subject] sits in dim shadow; as realization dawns, a warm shaft of sunlight slides across the floor and settles on the face [Static shot].","luma":"Static camera, medium close-up: [subject] in dim, cool shadow; as realization dawns, a warm shaft of sunlight slowly slides onto the face and rests there, fully lit.","runway":"Medium close-up, eye level, locked-off camera on [subject] in dim cool shadow; as their expression shifts to realization, a warm shaft of sunlight moves onto the face, ending fully lit."},"links":[{"label":"eyecannndy — epiphany","url":"https://eyecannndy.com/technique/epiphany-shot"},{"label":"melies — epiphany","url":"https://melies.co/cinematic-techniques/lighting/epiphany"}]},{"id":"spotlight","group":"lighting","name":"Spotlight","aliases":["Spotlight","follow spot","stage spot","spot light"],"definition":"A hard, focused beam with a defined circular edge isolates one subject on a stage or in a dark space, the light falling off sharply at the edge of the circle.","use":"Performances, interrogations, a single figure singled out by fate or attention; reveals, award moments, theatrical ads.","misuse":"A soft pool with a fuzzy edge reads as cameo or practical light rather than a spotlight; adding general fill lifts the darkness around the circle and loses the isolation.","clause":"Spotlight on [subject]: a hard, focused beam from high behind the camera throws a crisp circle of white light around them on a dark stage, the light ending sharply at the circle's edge, camera static in full shot.","adapters":{"veo":"Full shot, static camera: a hard, focused spotlight from high behind the camera throws a crisp circle of white light around [subject] on a dark stage, the light ending sharply at the edge.","kling":"[subject] stands alone on a dark stage. Full shot, static camera, a hard spotlight from above, a crisp circle of white light around them, everything else dark.","seedance":"镜头1：全景，固定镜头 — [subject] alone on a dark stage; spotlight (聚光灯): a hard focused beam from above throws a crisp circle of white light around them; the rest of the stage dark.","hailuo":"[subject] stands alone on a dark stage inside a crisp circle of hard white spotlight, everything else dark [Static shot].","luma":"Static camera, full shot: [subject] alone on a dark stage inside a crisp circle of hard white spotlight from above, the light ending sharply at the edge.","runway":"Full shot, eye level, locked-off camera on [subject] on a dark stage; a hard focused spotlight from high behind camera, crisp circular edge, the rest of the stage dark."},"links":[{"label":"shot.cafe — tag: spotlight","url":"https://shot.cafe/tag/spotlight"},{"label":"eyecannndy — spotlight","url":"https://eyecannndy.com/technique/spotlight"},{"label":"melies — spotlight","url":"https://melies.co/cinematic-techniques/lighting/spotlight"}]},{"id":"glam-lighting","group":"lighting","name":"Glam lighting","aliases":["Glam","beauty lighting","clamshell lighting","ring light","beauty dish"],"definition":"A flattering beauty setup: a large soft key just above the lens, fill bouncing up from below and bright round catchlights, so skin looks smooth and the face glows evenly.","use":"Beauty, fashion, cosmetics and creator close-ups; any shot where skin and eyes have to look their best.","misuse":"Plain high-key light brightens the whole set but leaves no sculpting under the cheekbones and no sparkle in the eyes; a ring light on its own flattens the face and leaves a donut reflection.","clause":"Glam lighting on [subject]: a large soft key just above the lens and a white fill reflecting up from below, skin smooth and luminous, round catchlights in both eyes, camera static in close-up.","adapters":{"veo":"Close-up, static camera, glam beauty lighting: a large soft key just above the lens and a bounce from below light [subject]'s face evenly, smooth glowing skin and round catchlights in both eyes.","kling":"[subject] faces the camera in a studio. Close-up, static camera, glam beauty lighting, soft key above the lens, fill from below, glowing skin, bright catchlights.","seedance":"镜头1：特写，固定镜头 — [subject] faces the camera in a studio; glam beauty lighting, a large soft key above the lens and a fill from below, smooth luminous skin, round catchlights.","hailuo":"[subject]'s face glows under a large soft light just above the lens, a fill from below, bright catchlights in the eyes [Static shot].","luma":"Static camera, close-up: [subject] in glam beauty lighting, a large soft key above the lens and a fill rising from below, skin smooth and luminous, round catchlights in both eyes.","runway":"Close-up, eye level, locked-off camera on [subject]; glam lighting from a large soft key above the lens with a fill from below, luminous skin and round catchlights in both eyes."},"links":[{"label":"melies — glam","url":"https://melies.co/cinematic-techniques/lighting/glam"}]},{"id":"frontal-lighting","group":"lighting","name":"Frontal lighting","aliases":["Frontal Lighting","flat lighting","front light","on-camera light"],"definition":"The key sits on or right beside the lens axis, so light hits the face straight on and shadows fall directly behind the subject, hiding texture and depth.","use":"Deadpan comedy, flash-style fashion, documentary on-camera light, a flat graphic look; shows a face plainly with nothing hidden.","misuse":"Soft light from the front reads as beauty or high-key rather than flat; swinging the key even 30 degrees off axis brings back modeling and a loop shadow under the nose.","clause":"Frontal lighting on [subject]: one light placed right beside the lens fills the face evenly, the shadow falling straight behind onto the wall, features flat and graphic, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera, frontal lighting: one light right beside the lens hits [subject] straight on, the face evenly lit and flat, a crisp shadow falling directly behind onto the wall.","kling":"[subject] stands against a plain wall. Medium close-up, static camera, flat frontal lighting from beside the lens, even face, shadow directly behind.","seedance":"镜头1：近景，固定镜头 — [subject] stands against a plain wall; frontal lighting from right beside the lens, the face evenly lit and flat, the shadow falling straight behind.","hailuo":"[subject] stands against a plain wall, lit straight on from beside the lens, the shadow falling directly behind [Static shot].","luma":"Static camera, medium close-up: [subject] lit straight on by a light beside the lens, the face even and graphic, a crisp shadow directly behind on the wall.","runway":"Medium close-up, eye level, locked-off camera on [subject] against a plain wall; frontal light from beside the lens, flat even exposure, a hard shadow directly behind."},"links":[{"label":"grokfilm — frontal lighting","url":"https://grokfilm.app/#t/frontal-lighting"}]},{"id":"night-for-night","group":"lighting","name":"Night for night","aliases":["Night for Night","true night exterior","night exterior lighting"],"definition":"A night scene actually shot after dark and lit with broad, soft moon-style sources plus motivated practicals, so a true black sky, real darkness and pools of light share the frame.","use":"Night exteriors that must feel real — streets, forests, car scenes — keeping black skies and practical glows that a daytime grade cannot fake.","misuse":"Day-for-night darkens a daylight plate and keeps sunny shadow shapes and a pale sky; leaving a real night underlit loses the subject in noise instead of shaping it.","clause":"Night for night: [subject] walks along a dark country road under a true black sky, shaped by a soft cool source from one side and a warm porch light behind, the background falling into darkness, camera static in a wide shot.","adapters":{"veo":"Wide shot, static camera, real night exterior: [subject] walks along a dark country road under a black sky, a soft cool source from one side shaping them, a warm porch light glowing behind, the edges falling into darkness.","kling":"[subject] walks along a dark country road at night. Wide shot, static camera, night-for-night lighting, soft cool key from one side, warm porch light behind, black sky.","seedance":"镜头1：全景，固定镜头 — [subject] walks along a dark country road at night; a black sky, a soft cool light from one side, a warm porch light behind, the edges sinking into darkness.","hailuo":"[subject] walks along a dark country road at night, a soft cool light from one side and a warm porch light behind under a black sky [Static shot].","luma":"Static camera, wide shot: [subject] walks along a dark country road at night, shaped by a soft cool light from one side, a warm porch light glowing behind under a black sky.","runway":"Wide shot, eye level, locked-off camera; [subject] walks a dark country road at night under a black sky, a soft cool side light shaping them and a warm porch light behind."},"links":[{"label":"grokfilm — night for night","url":"https://grokfilm.app/#t/night-for-night"}]},{"id":"moonlight","group":"lighting","name":"Moonlight","aliases":["Moonlight Gel","moonlight","blue moonlight","moon key"],"definition":"A cool, soft-edged blue-white key from high and to one side that stands in for the moon, set against a much darker fill so night still reads as night.","use":"Romantic or eerie nights: figures by a window, forests, water and rooftops after dark.","misuse":"Grading the whole frame blue gives a flat tint with no direction; a bright warm fill next to the moon key kills the nighttime feel.","clause":"Moonlight on [subject]: a cool blue-white light from high to one side through an open window catches their face and shoulder, the rest of the room in soft blue darkness, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, moonlight: a cool blue-white light from high to one side through an open window catches [subject]'s face and shoulder, the room around them in soft blue darkness.","kling":"[subject] sits by an open window at night. Medium shot, static camera, cool blue moonlight from high to one side, the face and shoulder lit, the room in soft blue shadow.","seedance":"镜头1：中景，固定镜头 — [subject] sits by an open window at night; cool blue-white moonlight from high to one side catches the face and shoulder, the room in soft blue darkness.","hailuo":"[subject] sits by an open window at night, cool blue moonlight from high to one side on the face, the room in soft darkness [Static shot].","luma":"Static camera, medium shot: [subject] by an open window at night, cool blue-white moonlight from high to one side on the face and shoulder, the room settling into soft blue darkness.","runway":"Medium shot, eye level, locked-off camera on [subject] by an open window at night; cool blue-white moonlight from high to one side, the room in soft blue shadow."},"links":[{"label":"shot.cafe — tag: moon","url":"https://shot.cafe/tag/moon"},{"label":"melies — moonlight gel","url":"https://melies.co/cinematic-techniques/color/moonlight-gel"}]},{"id":"underwater-light","group":"lighting","name":"Underwater light","aliases":["Underwater","underwater","Underwater Lighting","caustics","water caustics"],"definition":"Light below the surface: sunlight breaks into shifting caustic ripples, color falls away toward blue-green with depth, and drifting particles catch soft slanted rays.","use":"Swimming, diving and sinking scenes, dreamlike weightlessness, fashion in pools, products in water.","misuse":"A blue tint over a dry scene has no caustics, drifting hair or particles; perfectly clear water with full warm color reads as a pool render rather than depth.","clause":"Underwater light on [subject]: they float a few meters below the surface, rippling caustic patterns sliding across their skin, sunbeams slanting down through blue-green water and drifting particles, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, underwater: [subject] floats a few meters below the surface, rippling caustic light sliding over their skin, sunbeams slanting down through blue-green water and drifting particles.","kling":"[subject] floats underwater, hair drifting. Medium shot, static camera, caustic light ripples on the skin, sunbeams through blue-green water, floating particles.","seedance":"镜头1：中景，固定镜头 — [subject] floats underwater, hair drifting; caustic ripples (moving light patterns from the surface) slide over the skin, sunbeams through blue-green water.","hailuo":"[subject] floats beneath the surface, hair drifting, caustic ripples of light sliding over the skin and sunbeams cutting through blue-green water [Static shot].","luma":"Static camera, medium shot: [subject] floats underwater, caustic light rippling across the skin, sunbeams slanting through blue-green water filled with drifting particles.","runway":"Medium shot, eye level, locked-off camera on [subject] floating underwater; caustic ripples across the skin, slanted sunbeams through blue-green water, drifting particles."},"links":[{"label":"eyecannndy — underwater","url":"https://eyecannndy.com/technique/underwater"},{"label":"melies — underwater","url":"https://melies.co/cinematic-techniques/atmosphere/underwater"},{"label":"grokfilm — underwater lighting","url":"https://grokfilm.app/#t/underwater-lighting"}]},{"id":"fluorescent-light","group":"lighting","name":"Fluorescent light","aliases":["fluorescent light","fluorescent tubes","office fluorescents","green fluorescent cast"],"definition":"Overhead tube lighting with a faintly green, flat cast that spreads evenly from above with little shadow, sometimes with a slight flicker.","use":"Offices, hospitals, interrogation rooms, all-night stores and parking garages; institutional unease and late-night loneliness.","misuse":"Neutral soft overheads lose the sickly green tint that makes the look read; a warm tungsten bulb in the same place feels homely instead of clinical.","clause":"Fluorescent light on [subject]: rows of overhead tubes cast a flat, faintly green light over them in an empty office at night, one tube flickering in the background, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, fluorescent lighting: rows of overhead tubes cast flat, faintly green light over [subject] in an empty office at night, one tube flickering in the background.","kling":"[subject] sits alone in an empty office at night. Medium shot, static camera, flat greenish fluorescent overhead light, one tube flickering behind.","seedance":"镜头1：中景，固定镜头 — [subject] sits alone in an empty office at night; flat, faintly green fluorescent tubes overhead, one tube flickering in the background.","hailuo":"[subject] sits alone in an empty office at night under flat greenish overhead tubes, one flickering behind [Static shot].","luma":"Static camera, medium shot: [subject] alone in an empty office at night, rows of overhead fluorescent tubes casting flat greenish light, one tube flickering in the background.","runway":"Medium shot, eye level, locked-off camera on [subject] in an empty office at night; flat, faintly green fluorescent light from overhead tubes, one tube flickering behind."},"links":[{"label":"shot.cafe — tag: fluorescent light","url":"https://shot.cafe/tag/fluorescent%20light"}]},{"id":"sodium-vapor","group":"lighting","name":"Sodium-vapor light","aliases":["sodium-vapor light","sodium vapor","sodium streetlight","orange streetlight"],"definition":"The near-monochrome orange-yellow glow of older high-pressure streetlights, which turns every color to amber and pushes shadows toward brown-black.","use":"Urban night exteriors, parking lots, highways and industrial yards; a gritty, nostalgic night-city feel.","misuse":"A warm grade on white streetlights keeps other hues alive, so the one-color sodium cast never appears; modern LED street lamps are cool white and read as a different era.","clause":"Sodium-vapor light on [subject]: they stand under a single orange streetlight in an empty parking lot at night, every color turned to amber, the edges of the lot falling into brown-black darkness, camera static in a wide shot.","adapters":{"veo":"Wide shot, static camera, sodium-vapor lighting: [subject] stands under a single orange streetlight in an empty parking lot at night, every color turned amber, the edges of the lot fading into brown-black darkness.","kling":"[subject] stands in an empty parking lot at night. Wide shot, static camera, a single orange sodium streetlight overhead, everything amber, dark edges.","seedance":"镜头1：全景，固定镜头 — [subject] stands in an empty parking lot at night under one orange sodium-vapor streetlight; all colors turn amber, the edges sink into darkness.","hailuo":"[subject] stands in an empty parking lot at night beneath one orange streetlight, everything washed amber, the edges dark [Static shot].","luma":"Static camera, wide shot: [subject] beneath a single orange sodium streetlight in an empty parking lot at night, everything washed in amber, the edges sinking into darkness.","runway":"Wide shot, eye level, locked-off camera on [subject] in an empty parking lot at night; a single orange sodium-vapor streetlight overhead turns every color amber."},"links":[{"label":"shot.cafe — tag: sodium-vapor light","url":"https://shot.cafe/tag/sodium-vapor%20light"}]},{"id":"flashlight-beam","group":"lighting","name":"Flashlight beam","aliases":["flashlight","torch beam","handheld beam","torchlight"],"definition":"A narrow handheld beam is the main source in a dark space: it reveals only what it touches and swings wherever the hand holding it points.","use":"Horror, searches and exploration, caves, basements, blackouts; lets the scene decide exactly what the audience gets to see.","misuse":"A dim fill spread over the whole room spoils the reveal; a beam with no visible hand or motivation looks like a spotlight from nowhere.","clause":"Flashlight beam: [subject] sweeps a handheld flashlight across a pitch-dark basement, the tight beam revealing a strip of wall and dust in the air while everything else stays black, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, flashlight lighting: [subject] sweeps a handheld flashlight through a pitch-dark basement, the tight beam revealing a strip of wall and dust in the air while the rest stays black.","kling":"[subject] sweeps a flashlight across a pitch-dark basement. Medium shot, static camera, the narrow beam is the only light, dust in the beam, everything else black.","seedance":"镜头1：中景，固定镜头 — [subject] sweeps a handheld flashlight through a pitch-dark basement; the narrow beam is the only light, revealing a strip of wall and dust, the rest black.","hailuo":"[subject] sweeps a flashlight across a pitch-dark basement, the narrow beam lighting only a strip of wall and floating dust [Static shot].","luma":"Static camera, medium shot: [subject] sweeps a handheld flashlight across a pitch-dark basement, the tight beam lighting a strip of wall and floating dust, everything else deep black.","runway":"Medium shot, eye level, locked-off camera on [subject] in a pitch-dark basement; a handheld flashlight beam is the only source, revealing a strip of wall and dust in the air."},"links":[{"label":"shot.cafe — tag: flashlight","url":"https://shot.cafe/tag/flashlight"}]},{"id":"strobe-flash","group":"lighting","name":"Strobe flash","aliases":["Light Flash","strobe","strobe light","flash pulse"],"definition":"Light that bursts on and off in sharp pulses, so the scene appears as frozen bright instants separated by darkness.","use":"Clubs and concerts, lightning, gunfire and camera flashes, panic and disorientation, beat-synced music edits.","misuse":"A steady light with a quick fade reads as a cut rather than a flash; nonstop rapid strobing tires the eye and can be a photosensitivity hazard, so keep pulses sparse.","clause":"Strobe flash on [subject]: they dance in a dark club as a white strobe fires in sharp pulses, each burst freezing them mid-move against blackness, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, strobe lighting: [subject] dances in a dark club as a white strobe fires in sharp pulses, each burst freezing them mid-move against blackness.","kling":"[subject] dances in a dark club. Medium shot, static camera, a white strobe light flashing in sharp pulses, frozen bright moments between darkness.","seedance":"镜头1：中景，固定镜头 — [subject] dances in a dark club; a white strobe light fires in sharp pulses, each flash freezing the movement against black.","hailuo":"[subject] dances in a dark club, a white strobe flashing in sharp pulses that freeze each move against black [Static shot].","luma":"Static camera, medium shot: [subject] dances in a dark club, a white strobe firing in sharp pulses, each burst freezing them mid-move against black.","runway":"Medium shot, eye level, locked-off camera on [subject] dancing in a dark club; a white strobe fires in sharp pulses, each flash freezing the motion against blackness."},"links":[{"label":"eyecannndy — light flash","url":"https://eyecannndy.com/technique/light-flash"},{"label":"melies — light flash","url":"https://melies.co/cinematic-techniques/effects/light-flash"}]},{"id":"projected-light","group":"lighting","name":"Projected light","aliases":["Projections","projection mapping","projector light","projected image on subject"],"definition":"A projector throws an image, pattern or footage onto the subject and the surfaces around them, so the picture wraps over skin, clothing and walls.","use":"Music videos, fashion, memory and dream sequences, gallery installations; turns a person into part of the image.","misuse":"A flat overlay composited on top ignores the body's shape and never bends over it; a projector beam with nothing in it is only a spotlight.","clause":"Projected light on [subject]: a projector beside the lens throws drifting blue ocean footage across their face, body and the white wall behind, the image bending over every contour, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, projected light: a projector beside the lens throws drifting blue ocean footage across [subject]'s face, body and the white wall behind, the image bending over every contour.","kling":"[subject] stands still before a white wall. Medium shot, static camera, a projector casts moving ocean footage over their face, body and the wall.","seedance":"镜头1：中景，固定镜头 — [subject] stands still before a white wall; a projector casts drifting blue ocean footage over the face, body and wall, the image bending over every contour.","hailuo":"[subject] stands still before a white wall as a projector casts drifting ocean footage over their face and body [Static shot].","luma":"Static camera, medium shot: a projector casts drifting blue ocean footage over [subject] and the white wall behind, the image wrapping around the contours of the face and body.","runway":"Medium shot, eye level, locked-off camera on [subject] before a white wall; a projector beside the lens casts moving ocean footage that wraps over the face, body and wall."},"links":[{"label":"shot.cafe — tag: projector","url":"https://shot.cafe/tag/projector"},{"label":"eyecannndy — projections","url":"https://eyecannndy.com/technique/projections"},{"label":"melies — projection mapping","url":"https://melies.co/cinematic-techniques/effects/projection-mapping"}]},{"id":"colored-gels","group":"lighting","name":"Colored gel lighting","aliases":["colored gels","gel lighting","giallo look","Giallo","saturated gels","color gels"],"definition":"Lights covered with strongly saturated gels — red, magenta, green, deep blue — paint the subject and set in pure, unnatural color, often two clashing hues in one frame.","use":"Stylized horror and thrillers, music videos, dreamlike or violent set pieces, nightlife; heightened emotion over realism.","misuse":"A saturated grade on neutral light colors everything evenly and loses the separate pools of hue; mixing too many gels turns the frame to mud.","clause":"Colored gel lighting on [subject]: a saturated red gel light from one side and a deep blue gel from the other split their face into two pure colors in a dark hallway, camera static in medium close-up.","adapters":{"veo":"Medium close-up, static camera, colored gel lighting: a saturated red light from one side and a deep blue light from the other split [subject]'s face into two pure colors in a dark hallway.","kling":"[subject] stands in a dark hallway. Medium close-up, static camera, saturated red gel light from one side, deep blue gel from the other, the face split in two colors.","seedance":"镜头1：近景，固定镜头 — [subject] stands in a dark hallway; a saturated red gel light from one side and a deep blue gel from the other split the face into two pure colors.","hailuo":"[subject] stands in a dark hallway, the face split by saturated red light from one side and deep blue from the other [Static shot].","luma":"Static camera, medium close-up: [subject] in a dark hallway, a saturated red gel light from one side and a deep blue one from the other painting the face in two pure colors.","runway":"Medium close-up, eye level, locked-off camera on [subject] in a dark hallway; saturated red gel light from one side, deep blue from the other, splitting the face in two colors."},"links":[{"label":"melies — giallo look","url":"https://melies.co/cinematic-techniques/genre-looks/giallo-look"},{"label":"grokfilm — giallo","url":"https://grokfilm.app/#t/giallo"}]},{"id":"film-noir-lighting","group":"lighting","name":"Film noir lighting","aliases":["Film Noir","film noir","noir look","Neo-Noir","neo-noir"],"definition":"The hard, high-contrast night look of classic crime pictures: small sources at steep angles, deep black shadow, slatted shadows from blinds and silhouettes against streetlight, usually in black and white.","use":"Detective stories, moral ambiguity, dangerous introductions, rain-soaked city nights; the neo-noir variant keeps the shadows and adds color.","misuse":"Plain low-key light without hard patterns or steep angles feels moody but never noir; grain and sepia on their own are period dressing, not the light.","clause":"Film noir lighting on [subject]: they wait in a dark office at night, a hard light through venetian blinds slashing bars of shadow across their face and the wall, smoke hanging in the air, black and white, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera, black-and-white film noir lighting: [subject] waits in a dark office at night, hard light through venetian blinds slashing bars of shadow across the face and wall, smoke hanging in the air.","kling":"[subject] waits in a dark office at night. Medium shot, static camera, black and white, film noir lighting, hard light through venetian blinds, bars of shadow, drifting smoke.","seedance":"镜头1：中景，固定镜头 — [subject] waits in a dark office at night; black and white, film noir lighting: hard light through venetian blinds casts bars of shadow over the face and wall, smoke in the air.","hailuo":"In black and white, [subject] waits in a dark office at night, hard light through blinds slashing bars of shadow across the face, smoke hanging in the air [Static shot].","luma":"Static camera, medium shot, black and white: [subject] waits in a dark office at night, hard light through venetian blinds laying bars of shadow across the face and wall, smoke hanging in the air.","runway":"Medium shot, eye level, locked-off camera on [subject] in a dark office at night; black and white, hard light through venetian blinds slashing shadow bars across the face, smoke in the air."},"links":[{"label":"melies — film noir","url":"https://melies.co/cinematic-techniques/genre-looks/film-noir"},{"label":"grokfilm — film noir","url":"https://grokfilm.app/#t/film-noir"}]},{"id":"expressionist-shadows","group":"lighting","name":"Expressionist shadows","aliases":["German Expressionism","expressionist lighting","projected shadows","distorted shadows"],"definition":"Hard lights placed low or far to the side throw huge, stretched, warped shadows onto walls and stairs, so the shadow becomes a presence larger than the person casting it.","use":"Horror, madness, menace and dream states; a threat shown by its shadow before its body; stylized period pieces.","misuse":"Ordinary low-key keeps shadows small and natural; soft light cannot cast the crisp, distorted shapes the look depends on.","clause":"Expressionist shadows: a hard light low on the floor throws [subject]'s shadow huge and stretched up a crooked staircase wall as they climb, the shadow towering over them, black and white, camera static in a wide shot.","adapters":{"veo":"Wide shot, static camera, black and white with expressionist lighting: a hard light low on the floor throws [subject]'s shadow huge and stretched up a crooked staircase wall as they climb, the shadow towering over them.","kling":"[subject] climbs a crooked staircase. Wide shot, static camera, black and white, a hard light low on the floor throws a giant stretched shadow up the wall above them.","seedance":"镜头1：全景，固定镜头 — [subject] climbs a crooked staircase; black and white, a hard light low on the floor throws a giant, stretched, distorted shadow up the wall above them.","hailuo":"In black and white, [subject] climbs a crooked staircase as a hard light low on the floor throws a giant stretched shadow up the wall above them [Static shot].","luma":"Static camera, wide shot, black and white: [subject] climbs a crooked staircase, a hard light low on the floor throwing a giant, stretched shadow up the wall that towers over them.","runway":"Wide shot, eye level, locked-off camera on [subject] climbing a crooked staircase; black and white, a hard floor-level light throws a giant stretched shadow up the wall."},"links":[{"label":"melies — german expressionism","url":"https://melies.co/cinematic-techniques/genre-looks/german-expressionism"},{"label":"grokfilm — german expressionism","url":"https://grokfilm.app/#t/german-expressionism"}]},{"id":"rain","group":"lighting","name":"Rain","aliases":["Rain","rainfall","downpour","rain machine"],"definition":"Falling rain made visible by backlight, so drops read as bright streaks against a dark background while skin, clothes and the ground turn wet and shiny.","use":"Grief, romance, noir streets, cleansing or turning-point moments; adds texture and motion to an otherwise still frame.","misuse":"Rain lit from the front nearly vanishes on camera; a rain overlay with no wet skin, puddles or splashes floats in front of the scene instead of falling in it.","clause":"Rain on [subject]: heavy rain falls around them on a dark street at night, a streetlight behind turning every drop into a bright streak, their hair and coat soaked, puddles rippling at their feet, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera: heavy rain falls around [subject] on a dark street at night, a streetlight behind turning every drop into a bright streak, hair and coat soaked, puddles rippling. Ambient noise: steady rain on pavement.","kling":"[subject] stands in heavy rain on a dark street at night. Medium shot, static camera, backlit by a streetlight, drops as bright streaks, soaked hair, rippling puddles.","seedance":"镜头1：中景，固定镜头 — [subject] stands in heavy rain on a dark street at night; a streetlight behind turns the drops into bright streaks, soaked hair and coat, rippling puddles <steady rain>.","hailuo":"Heavy rain falls around [subject] on a dark street at night, backlit drops streaking bright, puddles rippling at their feet [Static shot].","luma":"Static camera, medium shot: heavy rain falls around [subject] on a dark street at night, a streetlight behind turning the drops into bright streaks, hair soaked, puddles rippling.","runway":"Medium shot, eye level, locked-off camera on [subject] in heavy rain on a dark street at night; a streetlight behind backlights the drops into bright streaks over rippling puddles."},"links":[{"label":"shot.cafe — tag: rain","url":"https://shot.cafe/tag/rain"},{"label":"melies — rain","url":"https://melies.co/cinematic-techniques/atmosphere/rain"}]},{"id":"fog","group":"lighting","name":"Fog","aliases":["Fog","Mist","mist","fog bank","low-lying fog"],"definition":"A dense, low cloud of fog or mist that swallows distance: objects fade to pale gray within a few meters and silhouettes soften as they recede.","use":"Mystery, isolation, horror, dawn landscapes, figures emerging out of nothing; simplifies a busy background.","misuse":"Light haze only lowers contrast and shows beams; smoke drifts in visible plumes and steam rises from a hot source, while fog fills the whole space evenly and hides the distance.","clause":"Fog on [subject]: they stand on a moorland path in thick morning fog, crisp in the foreground while a line of trees behind fades to pale gray silhouettes and then disappears, soft diffuse light, camera static in a wide shot.","adapters":{"veo":"Wide shot, static camera: [subject] stands on a moorland path in thick morning fog, crisp in the foreground while the trees behind fade to pale gray silhouettes and vanish into soft diffuse light.","kling":"[subject] stands on a moorland path in thick morning fog. Wide shot, static camera, trees fading to gray silhouettes behind, soft diffuse light.","seedance":"镜头1：全景，固定镜头 — [subject] stands on a moorland path in thick morning fog; the trees behind fade to pale gray silhouettes and disappear, soft diffuse light.","hailuo":"[subject] stands on a moorland path in thick fog, the trees behind fading to pale gray shapes and vanishing [Static shot].","luma":"Static camera, wide shot: [subject] on a moorland path in thick morning fog, the trees behind softening into pale gray silhouettes before vanishing in diffuse light.","runway":"Wide shot, eye level, locked-off camera on [subject] on a moorland path in thick morning fog; trees fade to pale gray silhouettes in soft diffuse light."},"links":[{"label":"shot.cafe — tag: fog","url":"https://shot.cafe/tag/fog"},{"label":"melies — fog","url":"https://melies.co/cinematic-techniques/atmosphere/fog"}]},{"id":"snow","group":"lighting","name":"Snow","aliases":["Snow","snowfall","falling snow","snowstorm"],"definition":"Falling or settled snow that fills the air with slow, drifting flakes and turns the ground into a huge soft reflector, lifting shadows and cooling the light.","use":"Winter stories, loneliness, wonder, holiday warmth set against the cold, quiet aftermaths.","misuse":"Flakes lit from the front vanish into a white sky; snow on the ground with no breath vapor or flushed skin reads as a set, and a full blizzard buries the subject.","clause":"Snow on [subject]: big flakes drift slowly down around them on a quiet village street at dusk, warm window light behind catching the flakes, snow settling on their hair and shoulders, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera: big snowflakes drift slowly around [subject] on a quiet village street at dusk, warm window light behind catching the flakes, snow settling on hair and shoulders.","kling":"[subject] stands on a quiet village street at dusk as snow falls. Medium shot, static camera, big slow flakes backlit by warm windows, snow settling on hair and shoulders.","seedance":"镜头1：中景，固定镜头 — [subject] stands on a quiet village street at dusk; big snowflakes drift slowly, backlit by warm window light, snow settling on hair and shoulders.","hailuo":"Big snowflakes drift around [subject] on a quiet village street at dusk, warm windows behind lighting the flakes [Static shot].","luma":"Static camera, medium shot: big snowflakes drift slowly around [subject] on a quiet village street at dusk, warm window light behind catching each flake, snow gathering on the shoulders.","runway":"Medium shot, eye level, locked-off camera on [subject] on a village street at dusk; big snowflakes drift down, backlit by warm windows, settling on hair and shoulders."},"links":[{"label":"shot.cafe — tag: snow","url":"https://shot.cafe/tag/snow"},{"label":"melies — snow","url":"https://melies.co/cinematic-techniques/atmosphere/snow"}]},{"id":"wet-down","group":"lighting","name":"Wet-down","aliases":["Wet-Down","wet streets","wetdown","rain-slicked streets"],"definition":"Streets and surfaces hosed down before a night shot so they become dark mirrors that double every light source as long reflections.","use":"City nights, chases, neon streets and noir; adds sparkle and depth to dark asphalt when the scene itself is dry.","misuse":"Falling rain adds streaks and drama the scene may not want; a dry street at night stays flat black, and a glossy grade cannot invent the reflections.","clause":"Wet-down street: [subject] walks along a freshly wet city street at night, the dark asphalt mirroring long streaks of neon and streetlight around their silhouette, the air dry and clear, camera static in a wide shot.","adapters":{"veo":"Wide shot, static camera: [subject] walks along a freshly wet city street at night, the dark asphalt mirroring long streaks of neon and streetlight around their silhouette, the air dry and clear.","kling":"[subject] walks along a city street at night. Wide shot, static camera, wet asphalt reflecting long streaks of neon and streetlights, dry clear air.","seedance":"镜头1：全景，固定镜头 — [subject] walks along a city street at night; wet-down asphalt (freshly wet, with clear dry air) mirrors long streaks of neon and streetlight.","hailuo":"[subject] walks along a wet city street at night, the asphalt mirroring long streaks of neon and streetlight, the air clear [Static shot].","luma":"Static camera, wide shot: [subject] walks along a freshly wet city street at night, the glossy asphalt mirroring long streaks of neon and streetlight, the air dry and clear.","runway":"Wide shot, eye level, locked-off camera; [subject] walks a freshly wet city street at night, the dark asphalt mirroring long neon and streetlight reflections under clear dry air."},"links":[{"label":"melies — wet down","url":"https://melies.co/cinematic-techniques/atmosphere/wet-down"}]},{"id":"dust-motes","group":"lighting","name":"Dust motes","aliases":["Dust Motes","floating dust","dust in the light","airborne particles"],"definition":"Fine dust hanging in a shaft of light, glittering only where the beam passes and invisible everywhere else.","use":"Quiet interiors, abandoned rooms, attics, memory and stillness; makes time feel slow and the air feel old.","misuse":"Volumetric haze fills the beam with a smooth glow rather than sparkling points; dust lit from the front never twinkles, and too much of it reads as smoke.","clause":"Dust motes around [subject]: they sit still in a dim attic as a narrow beam of afternoon sun from a small window passes beside them, fine dust glittering slowly inside the beam, the rest of the room in shadow, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera: [subject] sits still in a dim attic, a narrow beam of afternoon sun from a small window passing beside them, fine dust glittering slowly inside the beam, the room in shadow.","kling":"[subject] sits still in a dim attic. Medium shot, static camera, a narrow sunbeam from a small window, fine dust glittering slowly in the beam, room in shadow.","seedance":"镜头1：中景，固定镜头 — [subject] sits still in a dim attic; a narrow sunbeam from a small window passes beside them, fine dust motes glittering slowly inside it.","hailuo":"[subject] sits still in a dim attic beside a narrow sunbeam, fine dust glittering slowly inside the light [Static shot].","luma":"Static camera, medium shot: [subject] sits still in a dim attic beside a narrow beam of afternoon sun, fine dust glittering slowly in the light while the room stays in shadow.","runway":"Medium shot, eye level, locked-off camera on [subject] in a dim attic; a narrow sunbeam from a small window, fine dust motes glittering slowly inside it."},"links":[{"label":"melies — dust motes","url":"https://melies.co/cinematic-techniques/atmosphere/dust-motes"}]},{"id":"sparks-embers","group":"lighting","name":"Sparks and embers","aliases":["Sparks and Embers","sparks","embers","floating embers"],"definition":"Glowing particles — sparks thrown off metal or embers lifting from a fire — that streak or float through the frame as tiny points of hot light.","use":"Forges and welding, battles and fires, the aftermath of explosions, heroic or apocalyptic moods; adds warm motion to a dark frame.","misuse":"Generic floating particles without heat color read as dust or snow; sparks with no source or no dark background behind them simply disappear.","clause":"Sparks and embers around [subject]: they stand before a burning barn at night as orange embers drift upward past their face and sparks streak through the dark, the fire's glow lighting one side of them, camera static in medium shot.","adapters":{"veo":"Medium shot, static camera: [subject] stands before a burning barn at night, orange embers drifting upward past the face and sparks streaking through the dark, firelight on one side. Ambient noise: crackling fire.","kling":"[subject] stands before a burning barn at night. Medium shot, static camera, orange embers drifting upward, sparks streaking through the dark, firelight on one side of the face.","seedance":"镜头1：中景，固定镜头 — [subject] stands before a burning barn at night; orange embers drift upward past the face, sparks streak through the dark, firelight on one side <crackling fire>.","hailuo":"[subject] stands before a burning barn at night, orange embers drifting up past the face and sparks streaking through the dark [Static shot].","luma":"Static camera, medium shot: [subject] before a burning barn at night, orange embers drifting upward past the face and sparks streaking through the dark, the fire glowing on one side.","runway":"Medium shot, eye level, locked-off camera on [subject] before a burning barn at night; orange embers rising past the face, sparks streaking through the dark, firelight on one side."},"links":[{"label":"melies — sparks","url":"https://melies.co/cinematic-techniques/atmosphere/sparks"}]},{"id":"smoke","group":"lighting","name":"Smoke","aliases":["Smoke","billowing smoke","smoke plume","cigarette smoke"],"definition":"Visible smoke that moves in plumes, curls and layers, catching light along its edges and partly hiding whatever is behind it.","use":"Battlefields, bars and back rooms, mystery and danger, stage shows, a figure stepping out of a cloud.","misuse":"Even haze has no shape and only reveals beams; fog sits still and fills the distance; steam rises white from a hot source and thins fast, while smoke drifts sideways and swirls.","clause":"Smoke around [subject]: thick gray smoke rolls slowly across the frame in front of and behind them in a ruined street, a low sun behind lighting its curling edges, their silhouette half hidden, camera static in a wide shot.","adapters":{"veo":"Wide shot, static camera: thick gray smoke rolls slowly across a ruined street around [subject], a low sun behind lighting its curling edges, their silhouette half hidden in the drifting clouds.","kling":"[subject] stands in a ruined street. Wide shot, static camera, thick gray smoke rolling slowly across the frame, backlit by a low sun, the figure half hidden.","seedance":"镜头1：全景，固定镜头 — [subject] stands in a ruined street; thick gray smoke rolls slowly across the frame, its curling edges backlit by a low sun, the figure half hidden.","hailuo":"Thick gray smoke rolls slowly across a ruined street around [subject], its edges glowing in a low sun behind [Static shot].","luma":"Static camera, wide shot: thick gray smoke rolls slowly through a ruined street around [subject], a low sun behind lighting its curling edges, the silhouette half hidden.","runway":"Wide shot, eye level, locked-off camera on [subject] in a ruined street; thick gray smoke rolls across the frame, its curling edges backlit by a low sun."},"links":[{"label":"shot.cafe — tag: smoke","url":"https://shot.cafe/tag/smoke"},{"label":"melies — smoke","url":"https://melies.co/cinematic-techniques/atmosphere/smoke"}]},{"id":"steam","group":"lighting","name":"Steam","aliases":["Steam","rising steam","vapor","breath vapor"],"definition":"White vapor rising from something hot — food, vents, wet skin, breath in cold air — that billows upward and thins out quickly as it catches the light.","use":"Kitchens and food shots, bathhouses, cold mornings, city vents at night; cozy or sensual texture.","misuse":"Fog fills the whole space and stays put; smoke is gray and drifts sideways; steam needs a visible hot source and a dark background behind it, or it disappears.","clause":"Steam around [subject]: they lean over a bowl of hot noodles in a dim kitchen as white steam rises and curls up past their face, a window light behind making the vapor glow, camera static in close-up.","adapters":{"veo":"Close-up, static camera: [subject] leans over a bowl of hot noodles in a dim kitchen, white steam rising and curling past the face, a window light behind making the vapor glow.","kling":"[subject] leans over a bowl of hot noodles in a dim kitchen. Close-up, static camera, white steam rising past the face, backlit by a window so it glows.","seedance":"镜头1：特写，固定镜头 — [subject] leans over a bowl of hot noodles in a dim kitchen; white steam rises and curls past the face, backlit by a window so it glows.","hailuo":"[subject] leans over a bowl of hot noodles, white steam curling up past the face and glowing in the window light behind [Static shot].","luma":"Static camera, close-up: [subject] leans over a bowl of hot noodles in a dim kitchen, white steam rising and curling past the face, glowing in the window light behind.","runway":"Close-up, eye level, locked-off camera on [subject] over a bowl of hot noodles; white steam rises and curls past the face, backlit by window light so the vapor glows."},"links":[{"label":"shot.cafe — tag: steam","url":"https://shot.cafe/tag/steam"},{"label":"melies — steam","url":"https://melies.co/cinematic-techniques/atmosphere/steam"}]},{"id":"dust-storm","group":"lighting","name":"Dust storm","aliases":["Dust and Sand","dust storm","sandstorm","blowing sand"],"definition":"Wind-driven sand and dust that fill the air in moving sheets, tinting the light amber or brown and cutting visibility to a few meters.","use":"Deserts, frontier stories, post-apocalyptic and war scenes; struggle against nature, isolation, a threat arriving out of the haze.","misuse":"Fog and haze are calm and cool; a dust storm needs a wind direction, moving streaks and grit on skin and clothes, or it reads as a sepia filter.","clause":"Dust storm around [subject]: they lean into the wind on a desert road as sheets of sand blow sideways across the frame, the sun a dim disc behind the amber haze, cloth whipping, camera static in a wide shot.","adapters":{"veo":"Wide shot, static camera: [subject] leans into the wind on a desert road as sheets of sand blow sideways across the frame, the sun a dim disc behind amber dust, clothes whipping. Ambient noise: howling wind.","kling":"[subject] leans into the wind on a desert road. Wide shot, static camera, a dust storm, sheets of sand blowing sideways, the sun a dim disc in amber dust, clothes whipping.","seedance":"镜头1：全景，固定镜头 — [subject] leans into the wind on a desert road; a dust storm drives sheets of sand sideways, the sun a dim disc in amber dust <howling wind>.","hailuo":"[subject] leans into the wind on a desert road as sheets of sand blow sideways, the sun a dim disc behind the amber dust [Static shot].","luma":"Static camera, wide shot: [subject] leans into the wind on a desert road as sheets of sand blow sideways across the frame, the sun a dim disc behind the amber dust.","runway":"Wide shot, eye level, locked-off camera on [subject] leaning into the wind on a desert road; sheets of sand blow sideways, the sun a dim disc behind amber dust."},"links":[{"label":"melies — dust storm","url":"https://melies.co/cinematic-techniques/atmosphere/dust-storm"}]},{"id":"sepia-tone","group":"color","name":"Sepia tone","aliases":["Sepia","Sepia Tone","sepia","brown-toned monochrome"],"definition":"A monochrome image toned warm brown instead of neutral gray, like an aged photographic print: highlights go cream and shadows a deep umber.","use":"Signals memory, the past or a period setting; frames a flashback or an old-world story without relighting the scene.","misuse":"A warm grade on a color image keeps blue skies and green leaves, so it reads as golden light rather than an old print; heavy scratches and grain on top tip it into a novelty filter.","clause":"Sepia tone: [subject] in medium shot, the whole image reduced to warm brown monochrome with cream highlights and dark umber shadows, soft contrast, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level: [subject] rendered in sepia-toned monochrome, warm brown shadows and cream highlights, soft contrast like an aged photographic print.","kling":"[subject] stands in [scene]. Medium shot, static camera, sepia tone, warm brown monochrome, cream highlights, soft contrast, aged-print feel.","seedance":"镜头1：中景，固定镜头 — [subject] in [scene]; sepia tone: the whole image in warm brown monochrome, cream highlights, dark umber shadows, soft contrast.","hailuo":"[subject] in [scene], the whole picture in warm brown sepia monochrome with cream highlights and soft contrast [Static shot].","luma":"Static camera, medium shot: [subject] in warm brown sepia monochrome, cream highlights and umber shadows, soft contrast like an old print.","runway":"Medium shot, eye level, locked-off camera on [subject]; sepia-toned monochrome with warm brown shadows, cream highlights and gentle contrast."},"links":[{"label":"melies — sepia","url":"https://melies.co/cinematic-techniques/color/sepia"},{"label":"grokfilm — sepia tone","url":"https://grokfilm.app/#t/sepia-tone"}]},{"id":"desaturated-grade","group":"color","name":"Desaturated grade","aliases":["Desaturation","desaturated","muted colors","low saturation"],"definition":"Color is pulled back across the frame until hues are muted but still present, while contrast and exposure stay where they were.","use":"Bleak, exhausted or wintry moods, war and survival stories, grounded realism; lets performance and texture lead instead of color.","misuse":"Bleach bypass adds hard contrast and metallic highlights on top of the drained color; going all the way to zero saturation becomes black and white and loses the faint trace of color that carries the mood.","clause":"Desaturated grade: [subject] in medium shot under overcast light, every hue muted to a pale trace with skin still faintly warm, natural contrast, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level: [subject] under overcast light in a desaturated grade, colors muted to pale traces, skin faintly warm, natural contrast.","kling":"[subject] stands outside on an overcast day. Medium shot, static camera, desaturated color grading, muted tones, skin faintly warm, natural contrast.","seedance":"镜头1：中景，固定镜头 — [subject] under overcast light; desaturated grade, every color muted to a pale trace, skin slightly warm, natural contrast.","hailuo":"[subject] under an overcast sky, colors muted almost to gray with the skin still faintly warm [Static shot].","luma":"Static camera, medium shot: [subject] under overcast light, muted desaturated colors with a faint warmth left in the skin, natural contrast.","runway":"Medium shot, eye level, locked-off camera on [subject] under overcast light; desaturated grade with muted hues, faintly warm skin and natural contrast."},"links":[{"label":"melies — desaturation","url":"https://melies.co/cinematic-techniques/color/desaturation"},{"label":"grokfilm — desaturation","url":"https://grokfilm.app/#t/desaturation"}]},{"id":"hyper-saturated","group":"color","name":"Hyper-saturated","aliases":["Hyper-Saturation","hypersaturated","oversaturated","candy colors"],"definition":"Colors are pushed far past natural intensity — dense reds, electric blues, candy pinks — while skin is held just short of turning orange.","use":"Pop, fantasy, music videos, playful ads and dream logic; makes a world feel heightened, artificial or euphoric.","misuse":"Boosting saturation on a gray, flatly designed scene only brings out noise and blotchy skin, because the look needs colorful sets and light to push; applied to every element at once, the eye has nowhere to land.","clause":"Hyper-saturated look: [subject] in medium shot against a candy-colored set of pinks, reds and electric blues, colors pushed to full intensity while skin stays natural, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level: [subject] against a candy-colored set, pinks, reds and electric blues pushed to full saturation, skin kept natural.","kling":"[subject] stands in a candy-colored room. Medium shot, static camera, hyper-saturated colors, bold pinks, reds and electric blues, natural skin tones.","seedance":"镜头1：中景，固定镜头 — [subject] in a candy-colored set; hyper-saturated colors, pinks, reds and electric blues at full intensity, skin kept natural.","hailuo":"[subject] in a candy-colored room of saturated pinks, reds and electric blues, skin kept natural [Static shot].","luma":"Static camera, medium shot: [subject] in a candy-colored set, intensely saturated pinks, reds and electric blues, skin tones natural.","runway":"Medium shot, eye level, locked-off camera on [subject] in a candy-colored set; hyper-saturated pinks, reds and electric blues with natural skin."},"links":[{"label":"melies — hyper saturation","url":"https://melies.co/cinematic-techniques/color/hyper-saturation"}]},{"id":"cool-blue-grade","group":"color","name":"Cool blue grade","aliases":["Cool Blue","cold grade","blue grade","icy grade"],"definition":"The whole image leans cold: shadows and midtones shift toward steel blue and cyan, and warm tones are held back, even on skin.","use":"Isolation, grief, clinical or high-tech spaces, winter and night moods; tells the audience the world is unwelcoming.","misuse":"Blue hour is real light, with a glowing sky and warm practicals against it; a cool grade tints everything evenly. Pushed too far, skin goes corpse-gray, which reads as a mistake unless that is the point.","clause":"Cool blue grade: [subject] in medium close-up in a glass office, the image tinted steel blue and cyan through shadows and midtones, skin pale and cool, camera static at eye level.","adapters":{"veo":"Medium close-up, static camera at eye level: [subject] in a glass office, a cool blue grade with steel-blue shadows and cyan midtones, pale cool skin.","kling":"[subject] sits in a glass office. Medium close-up, static camera, cool blue color grading, steel-blue shadows, cyan midtones, pale skin.","seedance":"镜头1：近景，固定镜头 — [subject] in a glass office; cool blue grade, steel-blue shadows and cyan midtones, pale cool skin.","hailuo":"[subject] in a glass office, the whole picture tinted steel blue and cyan, skin pale and cool [Static shot].","luma":"Static camera, medium close-up: [subject] in a glass office in a cool blue grade, steel-blue shadows, cyan midtones and pale cool skin.","runway":"Medium close-up, eye level, locked-off camera on [subject] in a glass office; cool blue grade with steel-blue shadows, cyan midtones and pale skin."},"links":[{"label":"melies — cool blue","url":"https://melies.co/cinematic-techniques/color/cool-blue"}]},{"id":"warm-amber-grade","group":"color","name":"Warm amber grade","aliases":["Warm Amber","amber grade","warm grade","honey tones"],"definition":"Highlights and midtones lean amber and honey, shadows stay brown rather than black, and blues are pulled back.","use":"Nostalgia, comfort, romance, heat and dusty period settings; wraps a scene in a remembered glow.","misuse":"Golden hour is a low sun with long shadows and clear direction; a warm grade on flat noon light reads as a filter. Overdone, white walls and the whites of the eyes turn yellow and every scene looks alike.","clause":"Warm amber grade: [subject] in medium shot in a wood-paneled room, highlights tinted amber and honey, shadows a soft brown, blues held back, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level: [subject] in a wood-paneled room, a warm amber grade with honey highlights, soft brown shadows and restrained blues.","kling":"[subject] sits in a wood-paneled room. Medium shot, static camera, warm amber color grading, honey highlights, soft brown shadows.","seedance":"镜头1：中景，固定镜头 — [subject] in a wood-paneled room; warm amber grade, honey-toned highlights, soft brown shadows, blues held back.","hailuo":"[subject] in a wood-paneled room, the picture tinted amber and honey with soft brown shadows [Static shot].","luma":"Static camera, medium shot: [subject] in a wood-paneled room in a warm amber grade, honey highlights and soft brown shadows.","runway":"Medium shot, eye level, locked-off camera on [subject] in a wood-paneled room; warm amber grade with honey highlights and soft brown shadows."},"links":[{"label":"melies — warm amber","url":"https://melies.co/cinematic-techniques/color/warm-amber"}]},{"id":"cross-processing","group":"color","name":"Cross processing","aliases":["Cross Process","cross-processed","x-pro","cross-process look"],"definition":"A darkroom look from developing film in the chemistry meant for another stock: hues split unpredictably — yellow-green or cyan highlights, blue or magenta shadows — with punchy contrast and off-kilter skin.","use":"Fashion and editorial energy, 90s and 2000s skate and music culture, a raw or slightly toxic mood.","misuse":"A flat green tint lacks the split between highlight and shadow hues and the hard contrast; a controlled split like teal and orange is too polished to read as a chemical accident.","clause":"Cross-processed look: [subject] in medium shot outdoors in bright sun, yellow-green highlights, blue-magenta shadows, high contrast and saturated, slightly off skin, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level: [subject] outdoors in bright sun, a cross-processed film look with yellow-green highlights, blue-magenta shadows and high contrast.","kling":"[subject] stands on a sunny street. Medium shot, static camera, cross-processed film look, yellow-green highlights, blue-magenta shadows, high contrast.","seedance":"镜头1：中景，固定镜头 — [subject] outdoors in bright sun; cross-processed film look: yellow-green highlights, blue-magenta shadows, high contrast, saturated skin.","hailuo":"[subject] on a sunny street, colors split into yellow-green highlights and blue-magenta shadows with hard contrast [Static shot].","luma":"Static camera, medium shot: [subject] in bright sun with a cross-processed film look, yellow-green highlights, blue-magenta shadows and hard contrast.","runway":"Medium shot, eye level, locked-off camera on [subject] in bright sun; cross-processed film look with yellow-green highlights, blue-magenta shadows and high contrast."},"links":[{"label":"melies — cross process","url":"https://melies.co/cinematic-techniques/color/cross-process"}]},{"id":"tungsten-balance","group":"color","name":"Tungsten balance","aliases":["Tungsten Balance","tungsten white balance","3200K","White Balance","blue daylight shift"],"definition":"The camera is white-balanced for warm indoor bulbs (around 3200K), so daylight and windows render deep blue while tungsten sources look neutral.","use":"Turns a dusk or overcast exterior into a cold blue world, or makes one warm lamp the only safe island in a blue room.","misuse":"A blue grade tints every source the same; real tungsten balance keeps the bulbs neutral and turns only daylight blue. Under pure daylight the whole frame simply goes blue, with nothing neutral to contrast against.","clause":"Tungsten balance: [subject] in medium shot beside a window at dusk, the daylight outside rendered deep blue while a tungsten lamp next to them stays neutral white, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level: [subject] beside a window at dusk, tungsten white balance turning the daylight outside deep blue while the lamp beside them stays neutral white.","kling":"[subject] sits beside a window at dusk with a lamp on. Medium shot, static camera, tungsten white balance, deep blue daylight outside, neutral lamplight on the face.","seedance":"镜头1：中景，固定镜头 — [subject] beside a window at dusk; tungsten white balance (3200K): the daylight outside renders deep blue, the lamp beside them stays neutral white.","hailuo":"[subject] beside a window at dusk, the daylight outside deep blue while the lamp beside them glows neutral white [Static shot].","luma":"Static camera, medium shot: [subject] beside a window at dusk, the daylight outside deep blue and the lamp beside them a clean neutral white.","runway":"Medium shot, eye level, locked-off camera on [subject] beside a window at dusk; tungsten white balance renders the daylight deep blue and the lamp neutral white."},"links":[{"label":"melies — tungsten balance","url":"https://melies.co/cinematic-techniques/color/tungsten-balance"},{"label":"grokfilm — white balance","url":"https://grokfilm.app/#t/white-balance"}]},{"id":"natural-grade","group":"color","name":"Natural grade","aliases":["Natural Grade","neutral grade","true-to-life color","ungraded look","Color Correction"],"definition":"A neutral, true-to-life grade: whites stay white, skin keeps its real tone, and saturation and contrast sit where the eye expects them.","use":"Documentary, testimonials, food and product truth; an anchor against models that over-grade every clip and a clean base for matching shots in the edit.","misuse":"Leaving the look unstated lets many video models add teal shadows, orange skin and heavy contrast on their own; the word 'natural' alone is vague, so name neutral whites and true skin tones.","clause":"Natural grade: [subject] in medium shot in soft daylight, neutral white balance with whites staying white, true-to-life skin tones, moderate contrast and saturation, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level: [subject] in soft daylight, a natural grade with neutral white balance, true-to-life skin tones and moderate contrast.","kling":"[subject] stands in soft daylight. Medium shot, static camera, natural color, neutral white balance, true-to-life skin tones, moderate contrast.","seedance":"镜头1：中景，固定镜头 — [subject] in soft daylight; natural grade, neutral white balance, whites stay white, true-to-life skin, moderate contrast and saturation.","hailuo":"[subject] in soft daylight with neutral, true-to-life colors, whites staying white and skin tones real [Static shot].","luma":"Static camera, medium shot: [subject] in soft daylight with neutral white balance, true-to-life skin tones and moderate contrast.","runway":"Medium shot, eye level, locked-off camera on [subject] in soft daylight; natural grade with neutral whites, true skin tones and moderate saturation."},"links":[{"label":"melies — natural grade","url":"https://melies.co/cinematic-techniques/color/natural-grade"},{"label":"grokfilm — color correction","url":"https://grokfilm.app/#t/color-correction"}]},{"id":"color-shift","group":"color","name":"Color shift","aliases":["Color Shift","hue shift","color cycling","palette shift"],"definition":"The colors of the image change during the shot — hues rotate, a palette swaps or a tint washes across the frame — while the action carries on.","use":"Mood turns, dream or altered states, music beats, magical transformations; marks a change of feeling without a cut.","misuse":"A cut between two differently graded shots is a grade change, not a shift; a rainbow cycle with no motivation or rhythm turns into a screensaver.","clause":"Color shift: [subject] stands still in medium shot while the palette of the whole frame slowly shifts from cold blue through deep magenta to warm gold over the clip, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level: [subject] stands still while the color of the whole frame shifts slowly from cold blue through deep magenta to warm gold.","kling":"[subject] stands still in [scene]. Medium shot, static camera, the colors of the whole frame slowly shift from cold blue to deep magenta to warm gold.","seedance":"镜头1：中景，固定镜头 — [subject] stands still; color shift: the palette of the whole frame changes slowly from cold blue to deep magenta to warm gold; keep the camera still.","hailuo":"[subject] stands still while the colors of the whole frame shift slowly from cold blue to deep magenta to warm gold [Static shot].","luma":"Static camera, medium shot: [subject] stands still as the colors of the frame gradually shift from cold blue to deep magenta to warm gold.","runway":"Medium shot, eye level, locked-off camera on [subject] standing still; the palette of the whole frame shifts gradually from cold blue to deep magenta to warm gold."},"links":[{"label":"eyecannndy — color shift","url":"https://eyecannndy.com/technique/color-shift"},{"label":"melies — color shift","url":"https://melies.co/cinematic-techniques/color/color-shift"}]},{"id":"vhs-camcorder","group":"color","name":"VHS camcorder look","aliases":["Vintage","VHS","camcorder look","tape look","home video"],"definition":"The look of consumer videotape: soft low-resolution detail, smeared and bleeding colors, tracking lines, video noise and often a 4:3 frame with a date stamp.","use":"Home-movie memory, 80s and 90s nostalgia, found-footage horror, skate and music edits.","misuse":"Film grain and faded film are photochemical and organic, while tape is electronic, with chroma bleed and scan lines; a crisp high-resolution image with a scanline overlay looks pasted on.","clause":"VHS camcorder look: [subject] in medium shot in a living room, a soft low-resolution tape image with bleeding colors, faint tracking lines, video noise and a 4:3 frame, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level: [subject] in a living room, filmed like a home VHS tape, soft low-resolution image, bleeding colors, faint tracking lines and video noise, 4:3 frame.","kling":"[subject] sits in a living room. Medium shot, static camera, VHS camcorder look, soft low-resolution tape image, bleeding colors, tracking lines, video noise.","seedance":"镜头1：中景，固定镜头 — [subject] in a living room; VHS camcorder look: soft low-resolution tape image, bleeding colors, faint tracking lines, video noise, 4:3 frame.","hailuo":"[subject] in a living room, the image soft and low-resolution like old VHS tape with bleeding colors and faint tracking lines [Static shot].","luma":"Static camera, medium shot: [subject] in a living room, a soft VHS tape image with bleeding colors, faint tracking lines and video noise in a 4:3 frame.","runway":"Medium shot, eye level, locked-off camera on [subject] in a living room; VHS camcorder image with soft detail, bleeding colors, faint tracking lines and video noise."},"links":[{"label":"eyecannndy — vintage","url":"https://eyecannndy.com/technique/vhs"},{"label":"melies — vintage","url":"https://melies.co/cinematic-techniques/color/vintage"}]},{"id":"overexposed-look","group":"color","name":"Overexposed look","aliases":["Overexposed","blown-out highlights","high-exposure look","bleached-out"],"definition":"The image is deliberately pushed bright, so highlights bloom and clip to white and shadows lift, leaving soft, airy detail mostly in the midtones.","use":"Dreams, memory, heat, heavenly or euphoric moments, summer and fashion editorials.","misuse":"High-key lighting is bright but controlled, with detail held in the whites; accidental overexposure of a contrasty scene just burns out faces. The look needs a soft source and a subject that still reads.","clause":"Overexposed look: [subject] in medium shot by a sunlit window, exposure pushed bright so the highlights bloom to white and the shadows lift, the face still readable, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level: [subject] by a sunlit window, exposure pushed bright, highlights blooming to white, lifted shadows, the face still readable.","kling":"[subject] stands by a sunlit window. Medium shot, static camera, overexposed dreamy look, highlights blooming to white, lifted shadows, face still readable.","seedance":"镜头1：中景，固定镜头 — [subject] by a sunlit window; overexposed look: exposure pushed bright, highlights bloom to white, shadows lifted, the face stays readable.","hailuo":"[subject] by a sunlit window, the image pushed bright so highlights bloom to white while the face stays readable [Static shot].","luma":"Static camera, medium shot: [subject] by a sunlit window, the exposure pushed bright, highlights blooming to white, soft lifted shadows, the face still clear.","runway":"Medium shot, eye level, locked-off camera on [subject] by a sunlit window; bright overexposed look with highlights blooming to white and the face still readable."},"links":[{"label":"melies — overexposed","url":"https://melies.co/cinematic-techniques/color/overexposed"}]},{"id":"light-leak","group":"color","name":"Light leak","aliases":["Light Leak","light leaks","film light leak","edge leak"],"definition":"Stray light fogging part of the film: warm orange, red or yellow washes that bloom in from an edge or corner and drift across the frame.","use":"Analog nostalgia, travel and wedding films, music videos; a soft warm accent at the head or tail of a shot or over a transition.","misuse":"A lens flare comes from a bright source in the scene and moves with the camera, while a leak is a burned edge with no source; a leak that covers the whole frame washes the subject out.","clause":"Light leak: [subject] in medium shot on a beach at dusk, a warm orange-red light leak blooming in from the right edge and drifting partway across the frame, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level: [subject] on a beach at dusk, a warm orange-red film light leak blooming in from the right edge and drifting partway across the frame.","kling":"[subject] stands on a beach at dusk. Medium shot, static camera, a warm orange-red film light leak blooms in from the right edge and drifts across part of the frame.","seedance":"镜头1：中景，固定镜头 — [subject] on a beach at dusk; light leak: a warm orange-red glow blooms in from the right edge and drifts partway across the frame.","hailuo":"[subject] on a beach at dusk as a warm orange-red light leak blooms in from the right edge and drifts partway across the frame [Static shot].","luma":"Static camera, medium shot: [subject] on a beach at dusk, a warm orange-red light leak blooming in from the right edge and drifting partway across the frame.","runway":"Medium shot, eye level, locked-off camera on [subject] on a beach at dusk; a warm orange-red film light leak blooms in from the right edge and drifts partway across."},"links":[{"label":"melies — light leak","url":"https://melies.co/cinematic-techniques/effects/light-leak"}]},{"id":"bloom-glow","group":"color","name":"Bloom","aliases":["Bloom Effect","Glow Effect","bloom","glow","diffusion glow","dreamy glow"],"definition":"Bright areas spill a soft white glow into the surrounding image, as if shot through a diffusion filter, softening contrast around the highlights.","use":"Romance, dreams, heaven, 70s softness and glossy beauty work; makes light itself feel warm and gentle.","misuse":"Halation is a reddish edge hugging high-contrast highlights, while bloom is whiter and spreads wider; too much bloom fogs the whole image and lifts the blacks to gray.","clause":"Bloom: [subject] in medium close-up in front of candlelit windows, every highlight spilling a soft white glow into the image around it, blacks kept deep, camera static at eye level.","adapters":{"veo":"Medium close-up, static camera at eye level: [subject] in front of candlelit windows, soft white bloom spilling from every highlight, blacks kept deep.","kling":"[subject] sits in front of candlelit windows. Medium close-up, static camera, soft bloom glow around every highlight, deep blacks, dreamy diffusion.","seedance":"镜头1：近景，固定镜头 — [subject] in front of candlelit windows; bloom: every highlight spills a soft white glow into the image around it, blacks stay deep.","hailuo":"[subject] in front of candlelit windows, each highlight spilling a soft white glow while the blacks stay deep [Static shot].","luma":"Static camera, medium close-up: [subject] in front of candlelit windows, a soft white bloom around every highlight and deep blacks.","runway":"Medium close-up, eye level, locked-off camera on [subject] before candlelit windows; diffusion-filter bloom around the highlights with deep blacks."},"links":[{"label":"grokfilm — bloom effect","url":"https://grokfilm.app/#t/bloom-effect"}]},{"id":"technicolor-look","group":"color","name":"Technicolor look","aliases":["Technicolor","three-strip color","Technicolor Musical","dye-transfer look"],"definition":"The look of classic three-strip color printing: dense, saturated primaries — lipstick reds, deep greens, sky blues — with rich blacks and creamy skin.","use":"Musicals, melodrama, fairy tales and retro ads; a world that feels painted and larger than life.","misuse":"Modern hyper-saturation is neon and digital, while this look is dense printed primaries over deep blacks; teal and orange narrows the palette to two hues, which the three-strip look never does.","clause":"Technicolor look: [subject] in a full shot on a painted studio street, dense saturated reds, greens and blues, rich blacks and creamy skin tones, camera static at eye level.","adapters":{"veo":"Full shot, static camera at eye level: [subject] on a painted studio street in a classic three-strip Technicolor look, dense reds, greens and blues, rich blacks, creamy skin.","kling":"[subject] stands on a painted studio street. Full shot, static camera, classic Technicolor color, dense saturated reds, greens and blues, rich blacks, creamy skin.","seedance":"镜头1：全景，固定镜头 — [subject] on a painted studio street; classic three-strip Technicolor look: dense saturated reds, greens and blues, rich blacks, creamy skin.","hailuo":"[subject] on a painted studio street in dense, saturated reds, greens and blues with rich blacks and creamy skin [Static shot].","luma":"Static camera, full shot: [subject] on a painted studio street, classic three-strip Technicolor color with dense reds, greens and blues and rich blacks.","runway":"Full shot, eye level, locked-off camera on [subject] on a painted studio street; three-strip Technicolor look with dense primaries, rich blacks and creamy skin."},"links":[{"label":"grokfilm — technicolor musical","url":"https://grokfilm.app/#t/technicolor-musical"}]},{"id":"mixed-color-temperature","group":"color","name":"Mixed color temperature","aliases":["Color Temperature","color temperature contrast","warm-cool contrast","tungsten and daylight mix","mixed lighting"],"definition":"Light sources of different color temperature share the frame on purpose — warm tungsten against cool daylight or moonlight — so the scene splits into warm and cool zones.","use":"Separates spaces and characters, contrasts inside with outside, sets comfort against cold; a natural-looking alternative to a stylized grade.","misuse":"A teal-and-orange grade fakes the contrast everywhere at once, while real mixed light gives each source its own zone and direction; balancing every source to one white point removes the effect.","clause":"Mixed color temperature: [subject] in medium shot between a warm tungsten lamp on one side and cool blue window daylight on the other, the face split warm and cool, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level: [subject] between a warm tungsten lamp on the left and cool blue window daylight on the right, the face split into warm and cool halves.","kling":"[subject] sits between a lamp and a window. Medium shot, static camera, mixed color temperature, warm tungsten light on one side, cool blue daylight on the other.","seedance":"镜头1：中景，固定镜头 — [subject] between a warm tungsten lamp and a window; mixed color temperature: one side of the face warm orange, the other cool blue daylight.","hailuo":"[subject] between a warm lamp on one side and cool blue window light on the other, the face split warm and cool [Static shot].","luma":"Static camera, medium shot: [subject] between a warm tungsten lamp and cool blue window daylight, one side of the face warm and the other cool.","runway":"Medium shot, eye level, locked-off camera on [subject]; warm tungsten lamp from frame left and cool blue window daylight from frame right split the face warm and cool."},"links":[{"label":"grokfilm — color temperature","url":"https://grokfilm.app/#t/color-temperature"}]},{"id":"infrared","group":"color","name":"Infrared","aliases":["Infrared","IR film","infrared photography","false-color infrared"],"definition":"The look of infrared photography: foliage and grass glow white or pink, skies turn dark, and skin becomes pale and smooth with a slight glow.","use":"Dreamlike or alien landscapes, otherworldly memories, music videos and surreal travel pieces.","misuse":"Thermal imaging maps heat to a color ramp and is a different look; inverting colors or tinting the frame magenta misses the signature pale foliage against a dark sky.","clause":"Infrared look: [subject] in a wide shot in a summer meadow, foliage and grass glowing pale pink-white against a dark sky, skin pale and smooth, camera static at eye level.","adapters":{"veo":"Wide shot, static camera at eye level: [subject] in a summer meadow in an infrared photography look, foliage and grass glowing pale pink-white against a dark sky, pale smooth skin.","kling":"[subject] stands in a summer meadow. Wide shot, static camera, infrared photography look, pale pink-white foliage, dark sky, pale smooth skin.","seedance":"镜头1：全景，固定镜头 — [subject] in a summer meadow; infrared photography look: foliage and grass glow pale pink-white, the sky goes dark, skin pale and smooth.","hailuo":"[subject] in a summer meadow where the grass and trees glow pale pink-white under a dark sky [Static shot].","luma":"Static camera, wide shot: [subject] in a summer meadow, an infrared look with pale pink-white foliage, a dark sky and smooth pale skin.","runway":"Wide shot, eye level, locked-off camera on [subject] in a summer meadow; infrared photography look with glowing pale foliage and a dark sky."},"links":[{"label":"melies — infrared","url":"https://melies.co/cinematic-techniques/effects/infrared"}]},{"id":"thermal-vision","group":"color","name":"Thermal vision","aliases":["Thermal","thermal camera","heat vision","FLIR look"],"definition":"A heat-camera image: warmth is mapped to a false-color ramp from black or purple for cold to yellow and white for hot, so bodies glow and the background sinks into darkness.","use":"Surveillance, military and hunting POVs, creature or sci-fi vision, rescue scenes; shows what a machine sees.","misuse":"Night vision is amplified green light, not heat; a neon grade keeps normal detail and lacks the soft, blob-like glow of a heat image, so name hot bodies against cold surroundings.","clause":"Thermal vision: [subject] in a medium wide shot at night, rendered as a heat-camera image, the body glowing yellow and white against a cold purple and black background, camera static.","adapters":{"veo":"Medium wide shot, static camera: [subject] at night seen through a thermal camera, the body glowing yellow and white against a cold purple and black background, soft low-detail heat image.","kling":"[subject] stands outdoors at night. Medium wide shot, static camera, thermal camera view, the body glowing yellow and white, cold purple and black surroundings.","seedance":"镜头1：固定镜头 — [subject] at night; thermal vision: a heat-camera image, the body glows yellow and white against a cold purple and black background.","hailuo":"[subject] at night seen as a heat-camera image, the body glowing yellow and white against cold purple and black [Static shot].","luma":"Static camera, medium wide shot: [subject] at night as a thermal camera image, the body glowing yellow and white against a cold purple and black background.","runway":"Medium wide shot, locked-off camera on [subject] at night; thermal camera image with the body glowing yellow and white against cold purple and black."},"links":[{"label":"eyecannndy — thermal","url":"https://eyecannndy.com/technique/thermal"},{"label":"melies — thermal","url":"https://melies.co/cinematic-techniques/effects/thermal"}]},{"id":"night-vision","group":"color","name":"Night vision","aliases":["Night Vision","NVG","night-vision goggles","green night vision"],"definition":"An image-intensifier look: monochrome green, grainy and noisy, bright points blooming, shadows visible but low in detail, sometimes inside a round goggle mask.","use":"Military raids, surveillance, found-footage horror and wildlife at night; makes darkness legible but threatening.","misuse":"Day-for-night or a green grade keeps clean detail; night vision needs the noisy phosphor texture, blooming light sources and flattened depth.","clause":"Night vision: [subject] in a medium wide shot moving through a dark forest, seen as a grainy monochrome green image with blooming highlights and noisy shadows, camera static at eye level.","adapters":{"veo":"Medium wide shot, static camera at eye level: [subject] moves through a dark forest, seen through night-vision goggles, a grainy monochrome green image with blooming highlights.","kling":"[subject] walks through a dark forest. Medium wide shot, static camera, night-vision view, grainy monochrome green image, blooming highlights, noisy shadows.","seedance":"镜头1：固定镜头 — [subject] walks through a dark forest; night vision: a grainy monochrome green image, blooming highlights, noisy shadows.","hailuo":"[subject] walks through a dark forest, seen as a grainy green night-vision image with blooming highlights [Static shot].","luma":"Static camera, medium wide shot: [subject] moving through a dark forest as a grainy monochrome green night-vision image with blooming highlights.","runway":"Medium wide shot, eye level, locked-off camera on [subject] in a dark forest; night-vision image in grainy monochrome green with blooming highlights and noisy shadows."},"links":[{"label":"eyecannndy — night vision","url":"https://eyecannndy.com/technique/night-vision"},{"label":"shot.cafe — tag: night vision","url":"https://shot.cafe/tag/night%20vision"},{"label":"melies — night vision","url":"https://melies.co/cinematic-techniques/effects/night-vision"}]},{"id":"x-ray-look","group":"color","name":"X-ray look","aliases":["X-Ray","x-ray","x-ray vision","radiograph look"],"definition":"A radiograph image: the subject appears as a glowing blue-white negative in which bones and dense objects show through translucent flesh against a dark field.","use":"Medical drama, science and tech explainers, product reveals of inner parts, horror and music-video styling.","misuse":"Inverting the colors of a normal shot keeps the outer surface and misses the see-through layers; a thermal look maps heat rather than density.","clause":"X-ray look: [subject] in medium shot, rendered as a glowing blue-white radiograph with the skeleton visible through translucent flesh against a black background, camera static.","adapters":{"veo":"Medium shot, static camera: [subject] rendered as a glowing blue-white x-ray image, the skeleton visible through translucent flesh against a black background.","kling":"[subject] stands still. Medium shot, static camera, x-ray look, glowing blue-white radiograph, skeleton visible through translucent flesh, black background.","seedance":"镜头1：中景，固定镜头 — [subject]; x-ray look: a glowing blue-white radiograph, the skeleton visible through translucent flesh, black background.","hailuo":"[subject] shown as a glowing blue-white x-ray, the skeleton visible through translucent flesh on black [Static shot].","luma":"Static camera, medium shot: [subject] as a glowing blue-white x-ray image, the skeleton visible through translucent flesh against black.","runway":"Medium shot, locked-off camera on [subject]; glowing blue-white x-ray radiograph with the skeleton showing through translucent flesh on a black background."},"links":[{"label":"eyecannndy — x-ray","url":"https://eyecannndy.com/technique/x-ray"},{"label":"shot.cafe — tag: x-ray","url":"https://shot.cafe/tag/x-ray"},{"label":"melies — x ray","url":"https://melies.co/cinematic-techniques/effects/x-ray"}]},{"id":"cross-cutting","group":"editing","name":"Cross-cutting","aliases":["Cross-Cutting","cross cutting","parallel editing","Parallel Editing","intercutting"],"definition":"Two or more lines of action unfolding simultaneously in separate places are alternated shot by shot, so each strand comments on the other.","use":"Builds suspense toward a collision — a rescue racing a deadline, two people heading for the same door — or sets two worlds side by side for contrast.","misuse":"Alternating without a shared clock or a converging goal reads as random scene-hopping; switching back and forth too slowly loses the sense that both are happening now.","clause":"Cross-cutting: shot 1, [subject] sprints down a stairwell in a tracking shot; cut to shot 2, a static close shot of train doors starting to close on an empty platform; cut back to shot 3, [subject] bursting onto that platform, each shot shorter than the one before.","adapters":{"veo":"[00:00-00:03] Tracking shot: [subject] sprints down a stairwell. [00:03-00:05] Static close shot: train doors begin to close on an empty platform. [00:05-00:06] Tracking shot: [subject] bursts onto the platform as the doors slide.","kling":"[Shot 1: Medium shot] [subject] sprints down a stairwell, camera tracking behind. [Shot 2: Close-up shot] Train doors begin to close on an empty platform, static camera. [Shot 3: Wide shot] [subject] bursts onto the platform.","seedance":"镜头1：跟 — [subject] sprints down a stairwell. 镜头切至 镜头2：特写，固定镜头 — train doors begin to close on an empty platform. 镜头切至 镜头3：全景 — [subject] bursts onto the platform; each shot shorter than the last.","hailuo":"Render three clips and intercut them in the edit: (1) [subject] sprinting down a stairwell [Tracking shot]; (2) train doors closing on an empty platform [Static shot]; (3) [subject] bursting onto the platform [Tracking shot].","luma":"Three clips intercut in the edit, each shorter than the last. Clip 1 — tracking shot: [subject] sprints down a stairwell. Clip 2 — static camera: train doors begin to close on an empty platform. Clip 3 — tracking shot: [subject] bursts onto the platform.","runway":"[00:00] Medium shot, tracking behind [subject] sprinting down a stairwell. [00:03] Close-up, locked-off camera on train doors closing over an empty platform. [00:05] Wide shot: [subject] bursts onto the platform."},"links":[{"label":"melies — cross cut","url":"https://melies.co/cinematic-techniques/editing/cross-cut"},{"label":"grokfilm — cross-cutting","url":"https://grokfilm.app/#t/cross-cutting"}]},{"id":"montage","group":"editing","name":"Montage","aliases":["Montage","montage sequence","training montage","time-compression montage"],"definition":"A run of short shots, usually over music, that compresses days or weeks of change into a minute of screen time.","use":"Training, a renovation, a relationship blooming, a product being made — progress that would take far too long to show in real time.","misuse":"Shots that do not change from one to the next show repetition rather than progress; without a clear starting state and end state the sequence feels like filler.","clause":"Montage: four short shots of [subject] learning to box — clumsy punches at dawn, a skipping rope whipping, a heavy bag swinging, then a sharp clean combination in the ring — the light and the skill visibly improving from shot to shot.","adapters":{"veo":"[00:00-00:02] Medium shot: [subject] throws clumsy punches in a dawn-lit gym. [00:02-00:04] Close-up of a skipping rope whipping, sweat flying. [00:04-00:06] Insert: a heavy bag swinging hard. [00:06-00:08] Wide shot: [subject] lands a sharp, clean combination in the ring.","kling":"[Shot 1: Medium shot] [subject] throws clumsy punches in a gym at dawn. [Shot 2: Close-up shot] A skipping rope whips, sweat flying. [Shot 3: Close-up shot] A heavy bag swings hard. [Shot 4: Wide shot] [subject] lands a sharp, clean combination in the ring.","seedance":"镜头1：中景 — [subject] throws clumsy punches in a gym at dawn. 镜头切至 镜头2：特写 — a skipping rope whips, sweat flying. 镜头切至 镜头3：特写 — a heavy bag swings. 镜头切至 镜头4：全景 — [subject] lands a clean combination in the ring <upbeat music>.","hailuo":"Render four short clips and cut them to music: [subject] throwing clumsy punches at dawn [Static shot]; a skipping rope whipping [Static shot]; a heavy bag swinging [Static shot]; [subject] landing a clean combination in the ring [Push in].","luma":"Four short clips cut together to music. Clip 1 — static camera: [subject] throws clumsy punches at dawn. Clip 2 — a skipping rope whips, sweat flying. Clip 3 — a heavy bag swings. Clip 4 — slow push in as [subject] lands a sharp, clean combination in the ring.","runway":"[00:00] Medium shot: [subject] throws clumsy punches in a gym at dawn. [00:02] Close-up: a skipping rope whips. [00:04] Insert: a heavy bag swings. [00:06] Wide shot: [subject] lands a sharp, clean combination in the ring."},"links":[{"label":"melies — montage","url":"https://melies.co/cinematic-techniques/editing/montage"},{"label":"grokfilm — montage","url":"https://grokfilm.app/#t/montage"}]},{"id":"rhythmic-montage","group":"editing","name":"Rhythmic montage","aliases":["Rhythmic Montage","Metric Montage","cutting on the beat","beat-synced cuts","metric cutting"],"definition":"Cuts placed on the beats of a track, or on a fixed count of frames, so the edit itself becomes a pulse the audience feels.","use":"Music videos, sports and fashion edits, trailers — anywhere the pace should breathe with the music.","misuse":"Cuts that land a few frames off the beat feel sloppy rather than syncopated; cutting on every single beat with near-identical shots turns monotonous.","clause":"Rhythmic montage: four two-beat shots of [subject] dancing on a wet neon street at 120 BPM — stamping feet, snapping hands, a spin, a still face — every cut landing exactly on a kick drum, camera static in each shot.","adapters":{"veo":"[00:00-00:02] Close-up: [subject]'s feet stamp on a wet neon street. [00:02-00:04] Close-up: hands snap in time. [00:04-00:06] Medium shot: [subject] spins. [00:06-00:08] Close-up of the face, still. SFX: a kick drum at 120 BPM, each cut landing on a kick.","kling":"[Shot 1: Close-up shot] [subject]'s feet stamp on a wet neon street. [Shot 2: Close-up shot] Hands snap on the beat. [Shot 3: Medium shot] [subject] spins. [Shot 4: Close-up shot] The face, sharp and still. Each cut lands on a kick drum.","seedance":"镜头1：特写 — [subject]'s feet stamp on a wet neon street. 镜头切至 镜头2：特写 — hands snap. 镜头切至 镜头3：中景 — [subject] spins. 镜头切至 镜头4：特写 — the face, still <a 120 BPM kick drum; every cut on a kick>.","hailuo":"Render four short clips of [subject] dancing on a neon street — feet, hands, a spin, the face — each [Static shot], then cut them on the kick drum of a 120 BPM track in the edit.","luma":"Four short clips cut on the kick drum of a 120 BPM track: [subject]'s feet stamping on a wet neon street, hands snapping, a spin in medium shot, then the face in close-up, each with a static camera.","runway":"[00:00] Close-up: [subject]'s feet stamp on a wet neon street. [00:02] Close-up: hands snap. [00:04] Medium shot: [subject] spins. [00:06] Close-up of the face. In the edit, place each cut on a kick drum of a 120 BPM track."},"links":[{"label":"grokfilm — rhythmic montage","url":"https://grokfilm.app/#t/rhythmic-montage"}]},{"id":"intellectual-montage","group":"editing","name":"Intellectual montage","aliases":["Intellectual Montage","Soviet Montage","juxtaposition cut","associative montage","Kuleshov effect"],"definition":"Two unrelated images cut back to back so the audience infers an idea that neither shot contains on its own.","use":"Satire and commentary, ads that make a claim without stating it, inner states shown through association rather than dialogue.","misuse":"If the second image merely repeats the first there is nothing left to infer; a pairing that is too obscure leaves the audience puzzled instead of making the leap.","clause":"Intellectual montage: shot 1, a static close-up of [subject] staring at a pile of unpaid bills; cut to shot 2, a static close-up of an hourglass with its last grains falling — the pairing says time is running out without a word.","adapters":{"veo":"[00:00-00:04] Close-up, static camera: [subject] stares at a pile of unpaid bills on a kitchen table. [00:04-00:08] Close-up, static camera: the last grains of sand fall through an hourglass.","kling":"[Shot 1: Close-up shot] [subject] stares at a pile of unpaid bills, static camera. [Shot 2: Close-up shot] The last grains of sand fall through an hourglass, static camera.","seedance":"镜头1：特写，固定镜头 — [subject] stares at a pile of unpaid bills. 镜头切至 镜头2：特写，固定镜头 — the last grains of sand fall through an hourglass.","hailuo":"Render two clips and cut them together: [subject] staring at a pile of unpaid bills [Static shot]; the last grains of sand falling through an hourglass [Static shot].","luma":"Two clips joined with a hard cut. Clip 1 — static camera, close-up: [subject] stares at a pile of unpaid bills. Clip 2 — static camera, close-up: the last grains of sand fall through an hourglass.","runway":"[00:00] Close-up, locked-off camera: [subject] stares at a pile of unpaid bills. [00:04] Hard cut to a close-up of an hourglass, the last grains of sand falling."},"links":[{"label":"grokfilm — intellectual montage","url":"https://grokfilm.app/#t/intellectual-montage"}]},{"id":"fade-to-black","group":"editing","name":"Fade to black","aliases":["Fade In / Fade Out","fade in","fade out","fade to black","fade from black","Fade In/Out"],"definition":"The picture dims to black (fade out) or rises from black (fade in), marking a pause between scenes or the start and end of a piece.","use":"Endings, the passing of time, sleep or death, a breath before a new chapter; a fade in opens a story or a memory.","misuse":"A cross-dissolve blends two images and keeps momentum, while a fade inserts black and stops it — dropped into the middle of a scene, it halts the scene.","clause":"Fade to black: [subject] sits alone on a porch at dusk in a static wide shot, and over the final two seconds the whole image dims evenly to full black, the sound fading with it.","adapters":{"veo":"[00:00-00:06] Static wide shot: [subject] sits alone on a porch at dusk. [00:06-00:08] The whole image dims evenly to full black. Ambient noise: crickets fading out with the picture.","kling":"[subject] sits alone on a porch at dusk. Wide shot, static camera; in the last two seconds the image slowly fades to black, the crickets fading with it.","seedance":"镜头1：全景，固定镜头 — [subject] sits alone on a porch at dusk; in the final two seconds the whole image fades evenly to black <crickets fading out>.","hailuo":"[subject] sits alone on a porch at dusk [Static shot]; add a two-second fade to black at the end in the edit.","luma":"Static camera, wide shot: [subject] sits alone on a porch at dusk; in the edit, the last two seconds fade evenly to full black.","runway":"Wide shot, eye level, locked-off camera on [subject] sitting alone on a porch at dusk. [00:06] The image fades evenly to full black."},"links":[{"label":"melies — fade","url":"https://melies.co/cinematic-techniques/editing/fade"},{"label":"grokfilm — fade in/out","url":"https://grokfilm.app/#t/fade-in-out"}]},{"id":"wipe","group":"editing","name":"Wipe","aliases":["Wipe","wipe transition","edge wipe","clock wipe"],"definition":"A visible edge — a line, a clock hand, a shape — travels across the frame and replaces one shot with the next.","use":"Playful or retro storytelling, adventure-serial scene changes, quick location jumps in explainers and promos.","misuse":"In a serious drama a wipe points at the edit and breaks immersion; a wipe that runs against the on-screen motion looks clumsy.","clause":"Wipe: shot 1, [subject] walks right along a desert road in a static wide shot; a hard vertical edge sweeps left to right in step with them and reveals shot 2, [subject] walking right along a snowy street in the same position.","adapters":{"veo":"[00:00-00:04] Static wide shot: [subject] walks right along a desert road. [00:04-00:08] Static wide shot: [subject] walks right along a snowy street, in the same position. Join the two with a left-to-right wipe in the edit.","kling":"[Shot 1: Wide shot] [subject] walks right along a desert road, static camera. [Shot 2: Wide shot] [subject] walks right along a snowy street in the same position. Join them with a left-to-right wipe in the edit.","seedance":"镜头1：全景，固定镜头 — [subject] walks right along a desert road. 镜头切至 镜头2：全景，固定镜头 — [subject] walks right along a snowy street in the same position; the wipe is added in the edit.","hailuo":"Render two clips with matching framing: [subject] walking right along a desert road [Static shot]; [subject] walking right along a snowy street [Static shot]; join them with a left-to-right wipe in the edit.","luma":"Two clips joined in the edit with a left-to-right wipe. Clip 1 — static camera: [subject] walks right along a desert road. Clip 2 — static camera: [subject] walks right along a snowy street in the same spot.","runway":"[00:00] Wide shot, locked-off camera: [subject] walks right along a desert road. [00:04] Wide shot, locked-off camera: [subject] walks right along a snowy street in the same position; a left-to-right wipe joins the shots in the edit."},"links":[{"label":"melies — wipe","url":"https://melies.co/cinematic-techniques/editing/wipe"},{"label":"grokfilm — wipe","url":"https://grokfilm.app/#t/wipe"}]},{"id":"iris-transition","group":"editing","name":"Iris","aliases":["Iris","iris in","iris out","iris shot","circle wipe"],"definition":"A circular mask closes in on one point of the image (iris out) or opens outward from it (iris in), the rest of the frame going black.","use":"Silent-era and storybook charm, comic endings that pin down a final gag, a spotlight on one detail before the scene goes dark.","misuse":"A vignette only darkens the corners and keeps the whole picture; an iris has to shrink to a hard circle around the detail it lands on.","clause":"Iris out: [subject] winks at the camera in a static medium shot, and a black circular mask closes smoothly around their face until only a small circle remains, then shuts to full black.","adapters":{"veo":"Static medium shot: [subject] winks at the lens, the face centered. In the edit, a black circular iris closes around the face to a small circle and then to full black.","kling":"[subject] winks at the camera. Medium shot, static camera, the face centered so a circular iris can close on it in the edit.","seedance":"镜头1：中景，固定镜头 — [subject] winks at the camera, face centered; add an iris-out to black around the face in the edit.","hailuo":"[subject] winks at the camera, face centered [Static shot]; add a circular iris-out to black in the edit.","luma":"Static camera, medium shot: [subject] winks at the lens with the face centered; in the edit a circular iris closes on the face and then to black.","runway":"Medium shot, eye level, locked-off camera: [subject] winks at the lens, face centered. In the edit, a circular iris closes on the face and then to full black."},"links":[{"label":"melies — iris","url":"https://melies.co/cinematic-techniques/editing/iris"},{"label":"grokfilm — iris","url":"https://grokfilm.app/#t/iris"}]},{"id":"split-screen","group":"editing","name":"Split screen","aliases":["Split Screen","split-screen","splitscreen","multi-panel frame"],"definition":"The frame is divided into two or more panels, each running its own shot at the same time.","use":"Phone calls, parallel lives, before-and-after comparisons in ads, simultaneous action shown without cutting away.","misuse":"Panels with competing motion and busy backgrounds split attention until nothing reads; cross-cutting shows the strands one at a time rather than together.","clause":"Split screen: the frame divides vertically into two halves — on the left [subject] talks on the phone in a sunny kitchen, on the right [subject B] answers on a dark night bus — both static medium close-ups at the same eyeline.","adapters":{"veo":"Split-screen composition, two vertical halves, static camera: on the left, [subject] talks on the phone in a sunny kitchen; on the right, [subject B] answers on a dark night bus, both in medium close-up at the same eyeline.","kling":"[subject] talks on the phone in a sunny kitchen on the left half; [subject B] answers on a dark night bus on the right half. Vertical split screen, static camera, medium close-ups at matching eyelines.","seedance":"镜头1：近景，固定镜头 — vertical split screen: left half, [subject] on the phone in a sunny kitchen; right half, [subject B] answering on a night bus; matching eyelines.","hailuo":"Render two clips — [subject] on the phone in a sunny kitchen [Static shot] and [subject B] answering on a night bus [Static shot] — and place them side by side as a split screen in the edit.","luma":"Two static clips placed side by side in the edit: [subject] on the phone in a sunny kitchen, and [subject B] answering on a dark night bus, both in medium close-up at the same eyeline.","runway":"Vertical split screen, two medium close-ups at eye level, locked-off camera: on the left, [subject] talks on the phone in a sunny kitchen; on the right, [subject B] answers on a dark night bus."},"links":[{"label":"eyecannndy — split screen","url":"https://eyecannndy.com/technique/split-screen"},{"label":"shot.cafe — tag: split-screen","url":"https://shot.cafe/tag/split-screen"},{"label":"melies — split screen","url":"https://melies.co/cinematic-techniques/editing/split-screen"}]},{"id":"match-split","group":"editing","name":"Match split","aliases":["Match Split","matched split screen","seamless split"],"definition":"A split screen whose panels line up into one continuous picture — a face, a body, a horizon — so the seam joins two places or times instead of separating them.","use":"One person in two eras, the two halves of a face in different worlds, day and night across a single skyline.","misuse":"If the shapes do not align across the seam it reads as an ordinary split screen; a hard border line kills the illusion of one image.","clause":"Match split: a static close-up of [subject]'s face divided down the middle — the left half in warm morning sun in a childhood bedroom, the right half under cold office fluorescents — the eyes and jaw continuing seamlessly across the split.","adapters":{"veo":"Static close-up, the frame split vertically down the center: the left half of [subject]'s face in warm morning sun, the right half under cold office fluorescents, the eyes and jaw lining up across the seam.","kling":"[subject] faces the camera. Close-up, static camera, the frame split down the middle: left half in warm morning sun, right half under cold fluorescent light, the features aligned across the seam.","seedance":"镜头1：特写，固定镜头 — [subject]'s face split down the middle: the left half in warm morning sun, the right half under cold office fluorescents; the eyes and jaw line up across the seam.","hailuo":"Render two matching close-ups of [subject]'s face, one in warm morning sun and one under cold fluorescents [Static shot], and join the left and right halves along the center in the edit.","luma":"Two static close-ups of [subject] with identical framing, one in warm morning sun and one under cold office fluorescents, joined down the center in the edit so the features line up.","runway":"Close-up, eye level, locked-off camera on [subject], the frame split down the center: the left half in warm morning sun, the right half under cold office fluorescents, the features aligned across the seam."},"links":[{"label":"eyecannndy — match split","url":"https://eyecannndy.com/technique/match-split"},{"label":"melies — match split","url":"https://melies.co/cinematic-techniques/editing/match-split"}]},{"id":"axial-cut","group":"editing","name":"Axial cut","aliases":["Axial Cut","cut-in on axis","punch-in cut","axial punch"],"definition":"A cut that jumps closer to, or farther from, the subject along the same lens axis, skipping the space in between.","use":"A jolt of emphasis on a reaction or a detail, a sudden realization, punchy comedy and horror beats.","misuse":"A jump in size that is too small looks like a stumble in the footage; a slow dolly-in covers the same distance smoothly and feels tender rather than sudden.","clause":"Axial cut: shot 1, a static wide shot of [subject] standing at the end of a long hallway; hard cut along the same axis to shot 2, a static medium close-up of the face; then to shot 3, an extreme close-up of the eyes.","adapters":{"veo":"[00:00-00:03] Static wide shot: [subject] stands at the end of a long hallway. [00:03-00:05] Hard cut on the same axis to a static medium close-up of the face. [00:05-00:06] Hard cut on the same axis to an extreme close-up of the eyes.","kling":"[Shot 1: Wide shot] [subject] stands at the end of a long hallway, static camera. [Shot 2: Medium close-up shot] The same angle, closer on the face. [Shot 3: Extreme close-up shot] The same angle, on the eyes.","seedance":"镜头1：全景，固定镜头 — [subject] at the end of a long hallway. 镜头切至 镜头2：近景 — same axis, the face. 镜头切至 镜头3：大特写 — same axis, the eyes.","hailuo":"Render three clips from the same lens axis — [subject] at the end of a hallway in a wide shot, the face in medium close-up, the eyes in extreme close-up — each [Static shot], and cut them together hard.","luma":"Three static clips on one lens axis, cut together hard: [subject] at the end of a long hallway in a wide shot, then the face in medium close-up, then the eyes in extreme close-up.","runway":"[00:00] Wide shot, eye level, locked-off camera: [subject] at the end of a long hallway. [00:03] Hard cut on the same axis to a medium close-up of the face. [00:05] Hard cut on the same axis to an extreme close-up of the eyes."},"links":[{"label":"melies — axial cut","url":"https://melies.co/cinematic-techniques/editing/axial-cut"}]},{"id":"invisible-cut","group":"editing","name":"Invisible cut","aliases":["Invisible Cut","hidden cut","stitch cut","masked cut"],"definition":"A cut hidden inside a moment of darkness, blur or full-frame obstruction — a passing body, a whip, the camera sliding behind a pillar — so two takes play as one.","use":"Faking a long take, joining a stage set to a real location, stitching generated clips into what reads as one continuous shot.","misuse":"If the obstruction does not cover the whole frame, the jump shows; a change in light, speed or distance on either side of the hide gives the seam away.","clause":"Invisible cut: the camera trucks right alongside [subject] walking down a street, passes behind a dark pillar that fills the frame for a beat, and emerges on [subject] walking through a crowded market at the same pace and distance.","adapters":{"veo":"[00:00-00:04] Trucking shot moving right alongside [subject] walking down a street; the camera passes behind a dark pillar that fills the frame. [00:04-00:08] Out of the dark frame, the same move continues with [subject] walking through a crowded market at the same pace.","kling":"[Shot 1: Medium shot] [subject] walks down a street, camera trucking right, ending as a dark pillar fills the frame. [Shot 2: Medium shot] Starting from that dark frame, [subject] walks through a crowded market at the same pace and distance.","seedance":"镜头1：移 — the camera moves right alongside [subject] on a street and passes behind a dark pillar that fills the frame. 镜头切至 镜头2：移 — from the dark frame, [subject] walks through a crowded market at the same pace and distance.","hailuo":"Render two clips and join them on the dark frame: [subject] walking down a street until a pillar fills the frame [Truck right]; [subject] walking through a crowded market, starting behind a dark foreground [Truck right].","luma":"Two clips joined on a fully dark frame. Clip 1 — trucking right alongside [subject] on a street until a dark pillar fills the frame. Clip 2 — starting behind a dark foreground, trucking right alongside [subject] through a crowded market at the same pace.","runway":"[00:00] Medium shot, trucking right alongside [subject] on a street; a dark pillar fills the frame. [00:04] The move continues out of the dark frame with [subject] walking through a crowded market at the same pace and distance."},"links":[{"label":"melies — invisible cut","url":"https://melies.co/cinematic-techniques/editing/invisible-cut"},{"label":"grokfilm — invisible cut","url":"https://grokfilm.app/#t/invisible-cut"}]},{"id":"flash-cut","group":"editing","name":"Flash cut","aliases":["Flash Cut","flash frames","subliminal cut","single-frame insert"],"definition":"Shots only a few frames long flicker into a scene — a memory, a threat, a premonition — gone almost before they register.","use":"Trauma and intrusive memory, horror jolts, dream and drug states, a sudden clue lodging in a character's mind.","misuse":"Held for a full second they become ordinary inserts; too many in a row read as a strobing glitch rather than thoughts breaking through.","clause":"Flash cut: a static close-up of [subject] washing their hands at a sink is interrupted three times by four-frame flashes of a red door slamming, each flash harsh and bright, before the calm shot returns.","adapters":{"veo":"Static close-up: [subject] washes their hands at a sink. In the edit, three four-frame flashes of a red door slamming under harsh light interrupt the shot before the calm image returns.","kling":"[Shot 1: Close-up shot] [subject] washes their hands at a sink, static camera. [Shot 2: Close-up shot] A red door slams under harsh light; trim it to four frames and flash it three times into shot 1 in the edit.","seedance":"镜头1：特写，固定镜头 — [subject] washes their hands at a sink. 镜头切至 镜头2：特写 — a red door slams under harsh light; in the edit, flash this shot for four frames three times inside 镜头1.","hailuo":"Render [subject] washing their hands at a sink [Static shot] and a red door slamming [Static shot]; in the edit, flash four frames of the door three times into the sink shot.","luma":"Two clips: a static close-up of [subject] washing their hands at a sink, and a harsh close-up of a red door slamming; in the edit, four frames of the door flash into the first clip three times.","runway":"Close-up, locked-off camera: [subject] washes their hands at a sink. In the edit, three four-frame flashes of a red door slamming under harsh light interrupt the shot."},"links":[{"label":"eyecannndy — flash cut","url":"https://eyecannndy.com/technique/flash-cut"},{"label":"melies — flash cut","url":"https://melies.co/cinematic-techniques/editing/flash-cut"}]},{"id":"quick-cuts","group":"editing","name":"Quick cuts","aliases":["Quick Cuts","rapid cutting","rapid-fire cuts","hyper-editing"],"definition":"A burst of very short shots — often under half a second each — fired one after another to build speed and density.","use":"Hype edits, sports and fashion promos, a morning routine told in seconds, chaos and overload, attention-grabbing ad openings.","misuse":"Without a shared direction of motion, color or subject the burst turns into noise; flash cuts intrude on a steady scene, whereas quick cuts are the whole rhythm.","clause":"Quick cuts: a burst of half-second shots of [subject] getting ready to go out — keys grabbed, a zip pulled, lipstick swiped, a door flung open — every shot a tight close-up with motion running left to right, ending on [subject] striding out into the street.","adapters":{"veo":"[00:00-00:02] Rapid tight close-ups: keys grabbed, a zip pulled, lipstick swiped, all moving left to right. [00:02-00:04] More rapid close-ups: laces tied, a door flung open. [00:04-00:06] Wide shot: [subject] strides out into the street.","kling":"[Shot 1: Close-up shot] Keys grabbed. [Shot 2: Close-up shot] A zip pulled. [Shot 3: Close-up shot] Lipstick swiped. [Shot 4: Close-up shot] A door flung open. [Shot 5: Wide shot] [subject] strides out into the street. Every action moves left to right.","seedance":"镜头1：特写 — keys grabbed. 镜头切至 镜头2：特写 — a zip pulled. 镜头切至 镜头3：特写 — lipstick swiped. 镜头切至 镜头4：特写 — a door flung open. 镜头切至 镜头5：全景 — [subject] strides out into the street; all motion left to right.","hailuo":"Render short close-ups of [subject] getting ready — keys, a zip, lipstick, a door flung open — each [Static shot] with motion left to right, cut them at half a second each, and end on [subject] striding out [Tracking shot].","luma":"Short static close-ups cut at half a second each: [subject] grabs keys, pulls a zip, swipes lipstick and flings open a door, every motion left to right, ending on a wide clip of [subject] striding out into the street.","runway":"[00:00] A burst of tight close-ups, each about half a second: [subject] grabs keys, pulls a zip, swipes lipstick, flings open a door, all moving left to right. [00:04] Wide shot: [subject] strides out into the street."},"links":[{"label":"eyecannndy — quick cuts","url":"https://eyecannndy.com/technique/quick-cuts"},{"label":"melies — quick cuts","url":"https://melies.co/cinematic-techniques/editing/quick-cuts"}]},{"id":"set-transition","group":"editing","name":"Set transition","aliases":["Set Transition","in-camera set change","set reveal transition","walls fall away"],"definition":"The scene changes in camera: walls slide or fall away, a backdrop lifts, the room rebuilds itself around the subject, all inside one shot.","use":"Theatrical music videos, dream logic, a time jump within a single take, product stories that move from a studio into the world.","misuse":"Cutting to a new location loses the trick; a digital morph of the whole frame reads as an effect rather than a physical set changing.","clause":"Set transition: [subject] stands still in a cramped bedroom in a static wide shot; the walls fall outward flat to the floor one by one, revealing [subject] in the same spot in an open desert at sunset.","adapters":{"veo":"Static wide shot: [subject] stands still in a cramped bedroom; the walls fall outward flat to the floor one by one, revealing an open desert at sunset around [subject], who keeps the same spot.","kling":"[subject] stands still in a cramped bedroom. Wide shot, static camera; the walls fall outward to the floor one by one, revealing an open desert at sunset, [subject] in the same spot.","seedance":"镜头1：全景，固定镜头 — [subject] stands still in a cramped bedroom; the walls fall outward flat one by one, revealing an open desert at sunset; [subject] stays in place; keep one continuous shot.","hailuo":"[subject] stands still in a cramped bedroom as the walls fall outward flat one by one, revealing an open desert at sunset [Static shot].","luma":"Static camera, wide shot: [subject] stands still in a cramped bedroom as the walls fall outward flat, one by one, and an open desert at sunset appears around them.","runway":"Wide shot, eye level, locked-off camera: [subject] stands still in a cramped bedroom; the walls fall outward flat to the floor one by one, revealing an open desert at sunset. Continuous, seamless shot."},"links":[{"label":"eyecannndy — set transition","url":"https://eyecannndy.com/technique/set-transition"},{"label":"melies — set transition","url":"https://melies.co/cinematic-techniques/editing/set-transition"}]},{"id":"conveyor-transition","group":"editing","name":"Conveyor transition","aliases":["Conveyor","conveyor belt transition","sliding scene transition"],"definition":"Scenes slide through the frame like items on a belt: one setting travels out sideways while the next travels in behind it, often carrying the subject along.","use":"Product line-ups, a character passing through several moods or outfits, playful explainers and step-by-step reveals.","misuse":"A whip pan blurs between scenes, whereas a conveyor keeps both sharp and moving at one steady speed, so a jerky or uneven slide breaks it.","clause":"Conveyor transition: in a static wide shot, [subject] stands still on a moving platform that carries them right to left through three adjoining sets — a kitchen, a beach, a snowy street — each set entering from the right at a steady pace.","adapters":{"veo":"Static wide shot: [subject] stands still on a moving platform that carries them right to left through three adjoining sets — a kitchen, a beach, a snowy street — each set sliding in from the right at a steady pace.","kling":"[subject] stands still on a moving platform. Wide shot, static camera; the platform carries them right to left through a kitchen, a beach and a snowy street, each set sliding in steadily from the right.","seedance":"镜头1：全景，固定镜头 — [subject] stands still on a moving platform that carries them right to left through three adjoining sets: a kitchen, a beach, a snowy street, each sliding in from the right at a steady pace.","hailuo":"[subject] stands still on a moving platform gliding right to left through a kitchen, then a beach, then a snowy street, each set sliding in steadily from the right [Static shot].","luma":"Static camera, wide shot: [subject] stands still on a moving platform that glides right to left through a kitchen, a beach and a snowy street, each set arriving from the right at an even pace.","runway":"Wide shot, eye level, locked-off camera: [subject] stands still on a moving platform that carries them right to left through a kitchen, a beach and a snowy street, each set entering from the right at a steady pace."},"links":[{"label":"eyecannndy — conveyor","url":"https://eyecannndy.com/technique/conveyor"},{"label":"melies — conveyor","url":"https://melies.co/cinematic-techniques/camera-movement/conveyor"}]},{"id":"mask-transition","group":"editing","name":"Mask transition","aliases":["Masking","foreground wipe","object wipe","mask wipe"],"definition":"Something passing close to the lens — a body, a pole, a car, a hand — sweeps across the whole frame, and the next shot is revealed in its wake.","use":"Seamless scene changes in travel, fashion and music edits; it also hides the join between two generated clips.","misuse":"A wipe draws its edge on top of the picture; a mask has to be a real object in the scene, and if it covers only part of the frame the seam shows.","clause":"Mask transition: in a static medium shot of [subject] on a train platform, a passer-by crosses close to the lens from left to right and fills the frame, and in their wake [subject] is revealed on a beach boardwalk at the same size and position.","adapters":{"veo":"[00:00-00:04] Static medium shot: [subject] on a train platform; a passer-by crosses close to the lens left to right, filling the frame. [00:04-00:08] As the figure clears, [subject] stands on a beach boardwalk at the same size and position.","kling":"[Shot 1: Medium shot] [subject] on a train platform, static camera, ending as a passer-by crosses close to the lens and fills the frame. [Shot 2: Medium shot] The foreground figure clears to reveal [subject] on a beach boardwalk, same size and position.","seedance":"镜头1：中景，固定镜头 — [subject] on a train platform; a passer-by crosses close to the lens left to right and fills the frame. 镜头切至 镜头2：中景 — as the figure clears, [subject] stands on a beach boardwalk in the same position.","hailuo":"Render two clips and join them on the filled frame: a passer-by crossing close to the lens past [subject] on a train platform [Static shot]; the same foreground crossing clearing to reveal [subject] on a beach boardwalk [Static shot].","luma":"Two static clips joined in the edit on a full-frame foreground pass: a passer-by crosses close to the lens in front of [subject] on a train platform, then clears to reveal [subject] on a beach boardwalk at the same size.","runway":"[00:00] Medium shot, locked-off camera: [subject] on a train platform; a passer-by crosses close to the lens from left to right, filling the frame. [00:04] The figure clears to reveal [subject] on a beach boardwalk at the same size and position."},"links":[{"label":"eyecannndy — masking","url":"https://eyecannndy.com/technique/masking"},{"label":"melies — masking","url":"https://melies.co/cinematic-techniques/effects/masking"}]},{"id":"object-portal","group":"editing","name":"Object portal","aliases":["Object Portal","portal transition","through-the-object transition"],"definition":"An object in the scene — a mirror, a phone screen, a puddle, a picture frame — becomes a doorway the camera passes through into a different world.","use":"Fantasy and dream travel, ads that move from a product into its world, social transitions from a screen into real life.","misuse":"A plain push-through travels through a real opening into the next room; a portal shows a different world inside the object before the camera crosses into it.","clause":"Object portal: the camera pushes in slowly on a phone in [subject]'s hand whose screen shows a sunlit beach, travels into the screen until it fills the frame, and emerges on that beach, ending on a wide shot of [subject] at the water's edge.","adapters":{"veo":"Slow push-in on a phone in [subject]'s hand, its screen showing a sunlit beach; the camera travels into the screen until it fills the frame and emerges on that beach, ending on a wide shot of [subject] at the water's edge.","kling":"[subject] holds a phone showing a sunlit beach. Camera slowly pushes in to the screen until it fills the frame, passing through onto the beach itself, ending on a wide shot of [subject] at the water's edge.","seedance":"镜头1：缓慢推镜头 — toward the phone in [subject]'s hand, its screen showing a sunlit beach; the camera passes through the screen and emerges on that beach, ending on a wide shot of [subject] at the water's edge; one continuous move.","hailuo":"[subject] holds a phone showing a sunlit beach [Push in] until the screen fills the frame, then the beach itself opens up with [subject] at the water's edge [Static shot].","luma":"Push in, slowly and smoothly, on a phone in [subject]'s hand showing a sunlit beach; the camera passes into the screen and comes out on that beach, settling on a wide view of [subject] at the water's edge.","runway":"Close-up, slow push-in on a phone in [subject]'s hand showing a sunlit beach; the camera travels through the screen and emerges on that beach, ending on a wide shot of [subject] at the water's edge. Continuous, seamless shot."},"links":[{"label":"eyecannndy — object portal","url":"https://eyecannndy.com/technique/object-portal"},{"label":"melies — object portal","url":"https://melies.co/cinematic-techniques/effects/object-portal"}]},{"id":"morph-transition","group":"editing","name":"Morph","aliases":["Morphing","Morph","Match Morph","Transformation","morph cut","shape morph"],"definition":"One shape, face or object changes smoothly into another over several frames, so the transformation itself carries the transition.","use":"Time passing on a face, a product turning into its ingredients, one dancer becoming another, surreal music-video logic.","misuse":"A cross-dissolve only blends two images, so the shapes ghost over each other; a morph moves the contours themselves, and forms that do not roughly align collapse into mush.","clause":"Morph: in a static close-up, a glass of orange juice in [subject]'s hand slowly reshapes into a whole orange resting in the open palm, the surface rippling as the contours change.","adapters":{"veo":"Static close-up: a glass of orange juice in [subject]'s hand slowly reshapes into a whole orange resting in the open palm, its surface rippling as the contours change.","kling":"A glass of orange juice in [subject]'s hand. Close-up, static camera; the glass slowly morphs into a whole orange resting in [subject]'s open palm, the surface rippling as it changes.","seedance":"镜头1：特写，固定镜头 — a glass of orange juice in [subject]'s hand slowly morphs into a whole orange resting in the open palm; the surface ripples as the contours change.","hailuo":"In [subject]'s hand, a glass of orange juice slowly reshapes into a whole orange resting in the open palm [Static shot].","luma":"Static camera, close-up: a glass of orange juice in [subject]'s hand smoothly reshapes into a whole orange in the open palm, the surface rippling as the contours shift; start and end keyframes of the glass and the orange help.","runway":"Close-up, locked-off camera: a glass of orange juice in [subject]'s hand gradually reshapes into a whole orange resting in the open palm, the surface rippling as the contours change."},"links":[{"label":"eyecannndy — morphing","url":"https://eyecannndy.com/technique/morphing"},{"label":"melies — morphing","url":"https://melies.co/cinematic-techniques/effects/morphing"},{"label":"grokfilm — morphing","url":"https://grokfilm.app/#t/morphing"}]},{"id":"datamosh","group":"editing","name":"Datamosh","aliases":["Datamosh","datamoshing","pixel bleed","compression glitch"],"definition":"A glitch made by removing or reusing video compression keyframes: the motion of one shot drags the pixels of the previous one, so images smear and melt into each other.","use":"Music videos, digital anxiety, rave and internet aesthetics, aggressive transitions between two shots.","misuse":"Generic glitch overlays — RGB shifts, scanlines — are something else; asking a model for datamosh rarely produces real pixel smearing, so the effect belongs in post.","clause":"Datamosh: shot 1, a static close-up of [subject]'s face lit by a red neon sign; shot 2, [subject] spinning in a dark club — in the edit the keyframe at the cut is removed, so the spin drags the pixels of the red face before the club image resolves.","adapters":{"veo":"[00:00-00:04] Static close-up: [subject]'s face lit by a red neon sign. [00:04-00:08] Medium shot: [subject] spins in a dark club with strong motion. Datamosh the join in post by removing the keyframe at the cut.","kling":"[Shot 1: Close-up shot] [subject]'s face lit by a red neon sign, static camera. [Shot 2: Medium shot] [subject] spins in a dark club with strong motion. Datamosh the cut in post.","seedance":"镜头1：特写，固定镜头 — [subject]'s face under a red neon sign. 镜头切至 镜头2：中景 — [subject] spins in a dark club with strong motion; the datamosh smear is made in post by removing the keyframe at the cut.","hailuo":"Render [subject]'s face under a red neon sign [Static shot] and [subject] spinning in a dark club [Static shot]; datamosh the cut in post by deleting the keyframe so the spin smears the face.","luma":"Two clips for a datamosh in post: a static close-up of [subject]'s face under a red neon sign, then [subject] spinning in a dark club with strong motion; removing the keyframe at the cut makes the spin smear the face.","runway":"[00:00] Close-up, locked-off camera: [subject]'s face under a red neon sign. [00:04] Medium shot: [subject] spins in a dark club. In post, remove the keyframe at the cut so the spin smears the first image."},"links":[{"label":"eyecannndy — datamosh","url":"https://eyecannndy.com/technique/datamosh"},{"label":"melies — datamosh","url":"https://melies.co/cinematic-techniques/effects/datamosh"}]},{"id":"double-exposure","group":"editing","name":"Double exposure","aliases":["Double Exposure","superimposition","superimpose","multiple exposure"],"definition":"Two images laid over each other in the same frame, so one shows through the other — classically a silhouetted face filled with a landscape.","use":"Memory and inner life, a character bound to a place, title sequences and poster-like openings.","misuse":"Two layers at equal brightness cancel into murk; the effect needs a dark silhouette in one layer for the second image to fill.","clause":"Double exposure: a static profile close-up of [subject] against a pale sky, with a dark pine forest and drifting fog superimposed inside the silhouette of their head, the forest visible only where the profile is dark.","adapters":{"veo":"Static profile close-up, double exposure: [subject] against a pale sky, a dark pine forest with drifting fog superimposed inside the silhouette of the head.","kling":"[subject] in profile against a pale sky. Close-up, static camera, double exposure: a dark pine forest with drifting fog fills the silhouette of the head.","seedance":"镜头1：特写，固定镜头 — [subject] in profile against a pale sky; double exposure: a dark pine forest with drifting fog shows through the silhouette of the head.","hailuo":"[subject] in profile against a pale sky, a dark pine forest with drifting fog showing through the silhouette of the head as a double exposure [Static shot].","luma":"Static camera, profile close-up: [subject] against a pale sky in a double exposure, a dark pine forest and drifting fog filling the silhouette of the head.","runway":"Close-up profile, locked-off camera: [subject] against a pale sky; a double exposure places a dark pine forest with drifting fog inside the silhouette of the head."},"links":[{"label":"eyecannndy — double exposure","url":"https://eyecannndy.com/technique/double-exposure"},{"label":"melies — double exposure","url":"https://melies.co/cinematic-techniques/effects/double-exposure"}]},{"id":"cinemagraph","group":"editing","name":"Cinemagraph","aliases":["Cinemagraph","living photo","still with one motion","partial motion still"],"definition":"A still image in which a single element keeps moving in a seamless loop — steam, hair, a flickering sign — while everything else stays frozen.","use":"Product hero images, social posts and website headers, quiet mood pieces that feel alive without demanding attention.","misuse":"If the camera or the rest of the scene moves even slightly it reads as ordinary video; a loop with a visible jump at the end breaks the spell.","clause":"Cinemagraph: a locked-off close-up of [subject] holding a coffee cup at a café window, completely frozen, while only the steam from the cup keeps curling upward in a seamless loop.","adapters":{"veo":"Locked-off close-up, frozen like a photograph: [subject] holds a coffee cup at a café window, perfectly still; only the steam from the cup curls upward, looping seamlessly.","kling":"[subject] holds a coffee cup at a café window, perfectly still like a photo. Close-up, static camera; only the steam rises and curls, looping seamlessly.","seedance":"镜头1：特写，固定镜头 — [subject] holds a coffee cup at a café window, frozen like a photograph; only the steam curls upward in a seamless loop; everything else stays still.","hailuo":"[subject] holds a coffee cup at a café window, frozen like a photograph, only the steam curling upward [Static shot]; mask the steam and loop it in the edit.","luma":"Static camera, close-up: [subject] holds a coffee cup at a café window, still as a photograph, while the steam alone curls upward; loop the clip and freeze the rest in the edit.","runway":"Close-up, locked-off camera: [subject] holds a coffee cup at a café window, perfectly still; only the steam curls upward. The locked-off camera remains perfectly still; loop the steam in the edit."},"links":[{"label":"eyecannndy — cinemagraph","url":"https://eyecannndy.com/technique/cinemagraph"},{"label":"melies — cinemagraph","url":"https://melies.co/cinematic-techniques/effects/cinemagraph"}]},{"id":"wigglegram","group":"editing","name":"Wigglegram","aliases":["Wigglegram","wiggle stereo","stereo wobble","wiggle gif"],"definition":"Two or three frames of one instant taken from slightly different positions, flicked back and forth so the image rocks and pops in 3D.","use":"Retro stereo-camera charm, social loops, fashion and portrait posts, a playful sense of depth from a single moment.","misuse":"A handheld wobble moves continuously and smears; a wigglegram is frozen in time and jumps between a few viewpoints, so any movement of the subject breaks it.","clause":"Wigglegram: [subject] frozen mid-laugh on a sunny stoop, the image alternating rapidly between three viewpoints a few centimeters apart, so the foreground railing and [subject] shift against the background in a rocking 3D loop.","adapters":{"veo":"Tiny arc shot around [subject], frozen mid-laugh on a sunny stoop, the moment held still while the viewpoint shifts a few centimeters. In the edit, take three frames and flick between them in a fast loop.","kling":"[subject] is frozen mid-laugh on a sunny stoop. Camera arcs a few centimeters left to right while time stays stopped. In the edit, loop three frames back and forth quickly.","seedance":"镜头1：子弹时间 — [subject] frozen mid-laugh on a sunny stoop while the camera shifts a few centimeters left to right; in the edit, loop three frames back and forth quickly.","hailuo":"[subject] frozen mid-laugh on a sunny stoop [Truck right,Pan left] for a tiny shift in viewpoint; loop three frames back and forth in the edit.","luma":"Arc right, very slightly, around [subject] frozen mid-laugh on a sunny stoop, time held still; in the edit, three frames flick back and forth in a fast loop.","runway":"Medium shot, a tiny arc of a few centimeters around [subject], frozen mid-laugh on a sunny stoop; in the edit, loop three frames back and forth quickly so the railing shifts against the background."},"links":[{"label":"eyecannndy — wigglegram","url":"https://eyecannndy.com/technique/wigglegram"},{"label":"melies — wigglegram","url":"https://melies.co/cinematic-techniques/effects/wigglegram"}]},{"id":"echo-print","group":"editing","name":"Echo print","aliases":["Echo print","Echo Print","echo trails","ghost trails","frame echo"],"definition":"Each frame keeps faint copies of the previous few, so a moving subject leaves a trail of ghost images behind it.","use":"Dance and movement pieces, dream and drug states, music videos that visualize rhythm, the feeling of time stretching out.","misuse":"Motion blur smears continuously within a frame, whereas an echo shows distinct, fading copies; it is best added in post, because models rarely keep the copies consistent.","clause":"Echo print: in a static wide shot, [subject] dances a slow spin against a black backdrop, each movement trailed by four fading ghost copies of their body, built in post from the previous frames.","adapters":{"veo":"Static wide shot: [subject] dances a slow spin against a black backdrop, lit hard from the side. In post, blend the previous frames at falling opacity to leave fading ghost trails.","kling":"[subject] dances a slow spin against a black backdrop. Wide shot, static camera, hard side light; add echo trails in post from the previous frames.","seedance":"镜头1：全景，固定镜头 — [subject] dances a slow spin against a black backdrop under hard side light; the fading echo trails are added in post.","hailuo":"[subject] dances a slow spin against a black backdrop [Static shot]; add four fading echo copies from previous frames in post.","luma":"Static camera, wide shot: [subject] dances a slow spin against a black backdrop under hard side light; in post, previous frames blend in at fading opacity as ghost trails.","runway":"Wide shot, locked-off camera: [subject] dances a slow spin against a black backdrop, hard side light. In post, fading copies of the previous frames trail each movement."},"links":[{"label":"eyecannndy — echo print","url":"https://eyecannndy.com/technique/echo-printing"},{"label":"melies — echo print","url":"https://melies.co/cinematic-techniques/effects/echo-print"}]},{"id":"slit-scan","group":"editing","name":"Slit-scan","aliases":["Slit-scan","slit scan","time-smear","slit-scan distortion"],"definition":"Each column or row of the picture is taken from a different moment in time, so moving subjects stretch, bend and smear while static things stay put.","use":"Psychedelic music videos, time-warp moments, title sequences and abstract fashion pieces.","misuse":"A warp or wave filter bends space evenly; slit-scan bends only what moves, which takes time-offset processing in post rather than a prompt.","clause":"Slit-scan: a static wide shot of [subject] walking left to right past a brick wall at a steady pace, processed in post so each vertical column comes from a slightly later frame, stretching [subject] into a long, rippling ribbon.","adapters":{"veo":"Static wide shot: [subject] walks left to right past a brick wall at a steady pace, evenly lit. Process the clip in post with a time-offset slit-scan so [subject] stretches into a rippling ribbon.","kling":"[subject] walks left to right past a brick wall at a steady pace. Wide shot, static camera, even light; apply the slit-scan time offset in post.","seedance":"镜头1：全景，固定镜头 — [subject] walks left to right past a brick wall at a steady pace; the slit-scan stretch is applied in post with a per-column time offset.","hailuo":"[subject] walks left to right past a brick wall at a steady pace [Static shot]; apply a slit-scan time offset in post.","luma":"Static camera, wide shot: [subject] walks left to right past a brick wall at a steady pace; in post, a slit-scan time offset stretches the figure into a rippling ribbon.","runway":"Wide shot, eye level, locked-off camera: [subject] walks left to right past a brick wall at a steady pace. In post, a per-column time offset stretches [subject] into a rippling ribbon."},"links":[{"label":"eyecannndy — slit-scan","url":"https://eyecannndy.com/technique/slit-scan"},{"label":"melies — slit scan","url":"https://melies.co/cinematic-techniques/effects/slit-scan"}]},{"id":"step-printing","group":"editing","name":"Step printing","aliases":["Step-print","Step Printing","step print","stretch printing","smeared stutter"],"definition":"Footage shot with a slow shutter at a low frame rate, then each frame repeated several times, so motion lurches forward in smeared steps.","use":"Frenzied action, nightlife and chaos, a character losing their grip, the restless energy of a handheld chase through a city.","misuse":"Plain slow motion is smooth, and a low frame rate without the smear just looks laggy; the step needs both the blur and the repeated frames, usually built in post.","clause":"Step printing: a handheld medium shot of [subject] pushing through a crowded night market under neon, each frame smeared by a slow shutter and held for three frames, so the motion lurches forward in blurred steps.","adapters":{"veo":"Handheld medium shot, slow shutter with heavy motion smear: [subject] pushes through a crowded night market under neon. In post, hold each frame for three frames so the motion lurches in blurred steps.","kling":"[subject] pushes through a crowded night market under neon. Handheld medium shot, slow shutter, heavy motion blur; step-print the clip in post by holding each frame three times.","seedance":"镜头1：手持镜头，中景 — [subject] pushes through a crowded night market under neon, slow shutter with heavy motion smear; the step printing is done in post by holding each frame for three frames.","hailuo":"[subject] pushes through a crowded night market under neon, motion smeared [Shake]; step-print in post by holding each frame for three frames.","luma":"Handheld camera, gently swaying: [subject] pushes through a crowded night market under neon, motion smeared by a slow shutter; in post, each frame repeats three times so the motion moves in blurred steps.","runway":"Medium shot, handheld camera: [subject] pushes through a crowded night market under neon, slow shutter with heavy motion smear. In post, each frame is held for three frames."},"links":[{"label":"eyecannndy — step-print","url":"https://eyecannndy.com/technique/step-printing"},{"label":"melies — step printing","url":"https://melies.co/cinematic-techniques/time-and-motion/step-printing"}]},{"id":"low-shutter-blur","group":"editing","name":"Low shutter","aliases":["Low Shutter","Motion Blur","motion blur","shutter drag","dragged shutter","long-shutter blur"],"definition":"The shutter stays open for much of each frame, so anything that moves smears into streaks while the still parts of the frame stay crisp.","use":"Dreamy nightlife, drunkenness or disorientation, a hurried crowd swirling around one still figure, headlight trails in a music video.","misuse":"Blur added over the whole frame in post softens everything evenly; real shutter drag blurs only what moves, so the still, sharp subject has to be asked for.","clause":"Low shutter: [subject] stands still in medium shot on a busy night street while passers-by and car lights smear into long streaks around them, camera static, [subject] sharp at the center.","adapters":{"veo":"Static camera, medium shot, slow shutter look: [subject] stands still and sharp at frame center on a busy night street while passers-by and car lights smear into long motion-blur streaks around them.","kling":"[subject] stands still on a busy night street. Medium shot, static camera, low shutter motion blur: passers-by and headlights smear into streaks while [subject] stays sharp at the center.","seedance":"镜头1：中景，固定镜头 — [subject] stands still on a busy night street; low shutter, passers-by and car lights smear into long motion-blur streaks while [subject] stays sharp at the center.","hailuo":"[subject] stands sharp and still on a busy night street while passers-by and headlights smear into long blurred streaks around them [Static shot].","luma":"Static camera, medium shot: [subject] stands still and sharp at the center of a busy night street as passers-by and car lights stretch into long, soft streaks of motion blur.","runway":"Medium shot, eye level, locked-off camera on [subject] standing still on a busy night street; slow shutter look, passers-by and headlights smear into long streaks while [subject] stays sharp."},"links":[{"label":"eyecannndy — motion blur","url":"https://eyecannndy.com/technique/motion-blur"},{"label":"melies — low shutter","url":"https://melies.co/cinematic-techniques/time-and-motion/low-shutter"},{"label":"grokfilm — motion blur","url":"https://grokfilm.app/#t/motion-blur"}]},{"id":"time-lapse","group":"editing","name":"Time-lapse","aliases":["Time-Lapse","time lapse","Time lapse","timelapse","Timelapse Landscape","Timelapse Human","Timelapse Glam"],"definition":"Frames are captured far apart in time and played back at normal speed, so hours of clouds, traffic or shifting light pass in seconds.","use":"Shows time passing — day sliding into night, a city's pulse, a flower opening, a square filling up — and turns waiting into a transition.","misuse":"Fast-forwarding a short clip keeps the blur and jitter of real speed; a time-lapse needs a fixed frame and slow processes such as sun, clouds and shadows to read as hours.","clause":"Time-lapse: the camera is locked off on a wide view of a city square as hours pass in seconds — clouds race, shadows sweep the ground and crowds flicker around [subject], who stays still at the center as day turns to dusk.","adapters":{"veo":"Locked-off wide shot, time-lapse: hours pass in seconds over a city square — clouds race, shadows sweep the ground and crowds flicker around [subject], who stands still at the center as daylight fades to dusk.","kling":"[subject] stands motionless in the middle of a city square. Wide shot, static camera, time-lapse: clouds race, shadows sweep across the ground, crowds blur past, day turns to dusk.","seedance":"镜头1：全景，固定镜头 — 延时摄影, hours pass in seconds: [subject] stands motionless at the center of a city square while clouds race, shadows sweep the ground and crowds flicker past as day fades to dusk.","hailuo":"Time-lapse of a city square: clouds race, shadows sweep the ground and crowds flicker around [subject], who stands still at the center as day turns to dusk [Static shot].","luma":"Static camera, wide shot, time-lapse: hours pass in seconds over a city square as clouds race, shadows sweep the ground and crowds flicker around [subject], standing still at the center while daylight fades to dusk.","runway":"Wide shot, eye level, locked-off camera, time-lapse: clouds race, shadows sweep across a city square and crowds flicker around [subject], who stands still at the center as day turns to dusk."},"links":[{"label":"melies — time lapse","url":"https://melies.co/cinematic-techniques/time-and-motion/time-lapse"},{"label":"grokfilm — time-lapse","url":"https://grokfilm.app/#t/time-lapse"}]},{"id":"fast-motion","group":"editing","name":"Fast motion","aliases":["Fast Motion","undercranking","undercranked","sped-up footage"],"definition":"Action is recorded at fewer frames per second, or simply sped up, so it plays faster than life with a jerky, comic energy.","use":"Slapstick and chaos, a frantic morning routine, chores done in a blur, a montage beat that skips through effort.","misuse":"A time-lapse compresses hours of slow change, while fast motion speeds up human action you can still follow; speeding up the camera move instead of the action only makes the shot dizzy.","clause":"Fast motion: [subject] tidies a messy kitchen at triple speed, arms and dishes moving in quick jerky bursts, while the camera stays locked off in a wide shot until the room is spotless.","adapters":{"veo":"Static wide shot, fast motion at triple speed: [subject] tidies a messy kitchen in quick jerky bursts, dishes and cloths flying, until the room is spotless.","kling":"[subject] tidies a messy kitchen. Wide shot, static camera, fast motion at about three times real speed, quick jerky movements, ending with the room spotless.","seedance":"镜头1：全景，固定镜头 — fast motion (undercranked, about 3× speed): [subject] tidies a messy kitchen in quick jerky bursts until the room is spotless; the camera stays still.","hailuo":"[subject] tidies a messy kitchen at triple speed, arms and dishes moving in quick jerky bursts until everything is clean [Static shot].","luma":"Static camera, wide shot, fast motion: [subject] tidies a messy kitchen at about triple speed, moving in quick, jerky bursts until the room is spotless.","runway":"Wide shot, eye level, locked-off camera; fast motion at roughly 3× speed as [subject] tidies a messy kitchen in quick bursts, ending on a spotless room."},"links":[{"label":"eyecannndy — fast motion","url":"https://eyecannndy.com/technique/undercranking"},{"label":"melies — fast motion","url":"https://melies.co/cinematic-techniques/time-and-motion/fast-motion"},{"label":"grokfilm — fast motion","url":"https://grokfilm.app/#t/fast-motion"}]},{"id":"reverse-motion","group":"editing","name":"Reverse motion","aliases":["Reverse Motion","reverse playback","rewind effect","backwards footage"],"definition":"The shot plays backward, so smoke flows into a match, water leaps out of a pool and falling things rise.","use":"Rewinding a mistake, magic and the uncanny, a memory being undone, a product reveal where the pieces fly together.","misuse":"Asking a model to reverse an action often gets an actor walking backward on purpose; generate the action forward and reverse it in the edit, picking physics such as splashes, smoke or breaking glass that look impossible in reverse.","clause":"Reverse motion: a glass of water slips from [subject]'s hand and shatters on the floor in a static medium shot; generated forward and reversed in the edit, the shards and droplets leap back up into the glass in [subject]'s hand.","adapters":{"veo":"Static medium shot: [subject] drops a glass of water that shatters on the floor, shards and droplets spreading. Render it forward; reverse the clip in the edit so the pieces leap back up into the glass in [subject]'s hand.","kling":"[subject] drops a glass of water that shatters on the floor. Medium shot, static camera, shards and droplets spreading. Reverse the clip in the edit so the glass reassembles in [subject]'s hand.","seedance":"镜头1：中景，固定镜头 — [subject] drops a glass of water that shatters on the floor, shards and droplets spreading; generate it forward, then reverse the clip in the edit so the glass reassembles in the hand.","hailuo":"[subject] drops a glass of water that shatters on the floor, shards and droplets spreading [Static shot]; reverse the clip in the edit so the glass flies back together in [subject]'s hand.","luma":"Static camera, medium shot: [subject] drops a glass of water that shatters across the floor. Reverse the clip in the edit so shards and droplets leap back up into the glass in [subject]'s hand.","runway":"Medium shot, eye level, locked-off camera: [subject] drops a glass of water that shatters on the floor; in the edit, play the clip backward so the shards reassemble in [subject]'s hand."},"links":[{"label":"melies — reverse motion","url":"https://melies.co/cinematic-techniques/time-and-motion/reverse-motion"},{"label":"grokfilm — reverse motion","url":"https://grokfilm.app/#t/reverse-motion"}]},{"id":"freeze-frame","group":"editing","name":"Freeze frame","aliases":["Freeze Frame","freeze-frame","still frame hold","Frozen in Motion"],"definition":"The picture stops on a single frame and holds while time stands still, often with sound or narration carrying on over it.","use":"Punctuates a decisive or comic instant, introduces a character mid-action, ends a story on an open beat.","misuse":"Asked to freeze, most models give a slow-motion drift or an actor who merely holds still; end the clip on the moment and hold that frame in the edit. Bullet time keeps the camera moving, a freeze stops everything.","clause":"Freeze frame: [subject] runs along a jetty and leaps toward the water in a static wide shot, and the picture stops dead at the top of the jump, held for two seconds as a still frame in the edit.","adapters":{"veo":"[00:00-00:04] Static wide shot: [subject] runs along a jetty and leaps toward the water, the clip ending at the top of the jump. In the edit, hold that last frame for two seconds as a freeze frame.","kling":"[subject] runs along a jetty and leaps toward the water. Wide shot, static camera, the clip ends at the peak of the jump; hold that final frame for two seconds in the edit.","seedance":"镜头1：全景，固定镜头 — [subject] runs along a jetty and leaps toward the water, ending at the top of the jump; in the edit, freeze that last frame for two seconds.","hailuo":"[subject] runs along a jetty and leaps toward the water, the clip ending at the top of the jump [Static shot]; hold that last frame for two seconds in the edit.","luma":"Static camera, wide shot: [subject] runs along a jetty and leaps toward the water, the clip ending at the peak of the jump. Hold that final frame in the edit as a two-second freeze.","runway":"Wide shot, eye level, locked-off camera: [subject] runs along a jetty and leaps toward the water; end on the peak of the jump and hold that frame for two seconds in the edit."},"links":[{"label":"eyecannndy — freeze frame","url":"https://eyecannndy.com/technique/freeze-frame"},{"label":"melies — freeze frame","url":"https://melies.co/cinematic-techniques/time-and-motion/freeze-frame"},{"label":"grokfilm — freeze frame","url":"https://grokfilm.app/#t/freeze-frame"}]},{"id":"stutter","group":"editing","name":"Stutter","aliases":["Stutter","Stutter / Stop-Stutter","stop-stutter","frame stutter","choppy frame rate"],"definition":"Motion plays with dropped or repeated frames, so the action jerks forward in staccato steps instead of flowing.","use":"Unease and glitchy tension, dance and fashion beats that land on the rhythm, a character losing their grip on reality.","misuse":"A low frame rate for a whole piece just looks broken; stutter works in short bursts against otherwise smooth motion. Step printing smears its repeated frames together, while a stutter keeps each step crisp.","clause":"Stutter: [subject] turns toward the camera in a medium close-up, the motion jerking forward in crisp staccato steps as frames drop and repeat, then flowing smoothly again once they face the lens, camera static.","adapters":{"veo":"Static medium close-up: [subject] turns toward the camera in a stop-stutter rhythm, the motion jerking forward in crisp staccato steps, then flowing smoothly once they face the lens.","kling":"[subject] turns to face the camera. Medium close-up, static camera, stutter effect: the turn jerks forward in crisp staccato steps, then flows smoothly once they look into the lens.","seedance":"镜头1：近景，固定镜头 — [subject] turns toward the camera with a stutter effect (frames drop and repeat), jerking forward in crisp steps, then moving smoothly once facing the lens.","hailuo":"[subject] turns toward the camera in jerky staccato steps, then moves smoothly once facing the lens [Static shot]; for an exact rhythm, drop and repeat frames in the edit.","luma":"Static camera, medium close-up: [subject] turns toward the lens in crisp, staccato steps, the motion jerking forward frame by frame, then flowing smoothly once they face the camera.","runway":"Medium close-up, eye level, locked-off camera: [subject] turns toward the lens in a staccato stutter of crisp, jerky steps, then moves smoothly once they face the camera."},"links":[{"label":"eyecannndy — stutter","url":"https://eyecannndy.com/technique/stutter"},{"label":"melies — stutter","url":"https://melies.co/cinematic-techniques/time-and-motion/stutter"}]},{"id":"boomerang","group":"editing","name":"Boomerang","aliases":["Boomerang","ping-pong loop","forward-reverse loop"],"definition":"A very short clip plays forward and then straight back, again and again, so a single action bounces to and fro like a rubber band.","use":"Social loops, playful party and product moments, a toast or a hair flip that never ends.","misuse":"Asked for a boomerang, a model renders one forward clip; generate a single clean action and build the forward-backward loop in the edit. Actions with a clear direction, like a pour or a jump, bounce best.","clause":"Boomerang: [subject] clinks a champagne glass and flicks their hair in one quick action, camera static in a medium shot; in the edit the clip plays forward, then backward, on repeat.","adapters":{"veo":"Static medium shot: [subject] clinks a champagne glass and flicks their hair in one quick action. In the edit, play the clip forward then backward on repeat as a boomerang loop.","kling":"[subject] clinks a champagne glass and flicks their hair. Medium shot, static camera, one quick action; loop it forward and backward in the edit as a boomerang.","seedance":"镜头1：中景，固定镜头 — [subject] clinks a champagne glass and flicks their hair in one quick action; in the edit, play it forward then backward on repeat.","hailuo":"[subject] clinks a champagne glass and flicks their hair in one quick action [Static shot]; build the forward-backward boomerang loop in the edit.","luma":"Static camera, medium shot: [subject] clinks a champagne glass and flicks their hair in one quick, clean action. Play it forward, then backward, on repeat in the edit.","runway":"Medium shot, eye level, locked-off camera: [subject] clinks a champagne glass and flicks their hair in one quick action; loop it forward and backward in the edit."},"links":[{"label":"eyecannndy — boomerang","url":"https://eyecannndy.com/technique/boomerang"},{"label":"melies — boomerang","url":"https://melies.co/cinematic-techniques/time-and-motion/boomerang"}]},{"id":"seamless-loop","group":"editing","name":"Seamless loop","aliases":["Infinite Loop","infinite loop","perfect loop","Loop Animation","loopable clip"],"definition":"The last frame flows straight into the first, so the clip can repeat endlessly with no visible join.","use":"Backgrounds, social posts, product hero loops, ambient scenes and website headers that should play forever.","misuse":"A boomerang reverses direction and reads as a bounce; a true loop keeps moving one way. A drifting camera or changing light gives the seam away.","clause":"Seamless loop: [subject] sits by a window as rain streams down the glass and steam curls from a cup, camera locked off in a medium shot, the clip ending in exactly the pose and light it began with so it repeats without a seam.","adapters":{"veo":"Static medium shot, seamless loop: [subject] sits by a rainy window, steam curling from a cup, the pose and light at the end matching the first frame exactly so the clip repeats with an invisible join.","kling":"[subject] sits by a rainy window with a steaming cup. Medium shot, static camera, gentle repeating motion, ending in the same pose and light as the first frame for a seamless loop.","seedance":"镜头1：中景，固定镜头 — [subject] sits by a rainy window, steam curling from a cup; small repeating motions only, ending in the same pose and light as the first frame so the clip loops seamlessly.","hailuo":"[subject] sits by a rainy window, steam curling from a cup, ending in the same pose as the first frame [Static shot]; use the first frame as the last frame for a seamless loop.","luma":"Static camera, medium shot: [subject] sits by a rainy window, steam curling from a cup, the final moment matching the first so the clip loops seamlessly; set the same image as start and end keyframe.","runway":"Medium shot, eye level, locked-off camera on [subject] by a rainy window, steam curling from a cup; the final frame matches the first in pose and light so the clip loops with an invisible join."},"links":[{"label":"eyecannndy — infinite loop","url":"https://eyecannndy.com/technique/infinite"},{"label":"melies — infinite loop","url":"https://melies.co/cinematic-techniques/time-and-motion/infinite-loop"},{"label":"grokfilm — loop animation","url":"https://grokfilm.app/#t/loop-animation"}]},{"id":"stop-motion","group":"editing","name":"Stop motion","aliases":["Stop Motion","stop-motion","stop-motion animation","claymation","Stop-Motion Aesthetic"],"definition":"Motion built from still frames of puppets or objects nudged a little between exposures, so movement steps forward with a handmade, slightly jittery charm.","use":"Craft and toy aesthetics, playful product ads, food that assembles itself, any piece that should feel tactile and handmade.","misuse":"Smooth 3D animation of clay-looking figures lacks the frame-to-frame jitter and texture flicker; too much jitter tips it into a broken render.","clause":"Stop motion: a clay figure of [subject] walks across a felt tabletop set in small stepped movements at about twelve frames per second, fingerprints visible on the clay, camera static in a full shot.","adapters":{"veo":"Static full shot, stop-motion animation at about 12 frames per second: a clay figure of [subject] walks across a felt tabletop set in small stepped movements, fingerprints visible on the clay.","kling":"A clay figure of [subject] walks across a felt tabletop set. Full shot, static camera, stop-motion animation style, stepped movement at about 12 fps, handmade texture.","seedance":"镜头1：全景，固定镜头 — 定格动画, stepped at about 12 frames per second: a clay figure of [subject] walks across a felt tabletop set in small moves, fingerprints visible on the clay.","hailuo":"A clay figure of [subject] walks across a felt tabletop set in small stepped stop-motion movements, fingerprints visible on the clay [Static shot].","luma":"Static camera, full shot: a clay figure of [subject] walks across a felt tabletop set in stop-motion steps at about twelve frames per second, fingerprints visible on the clay.","runway":"Full shot, eye level, locked-off camera; stop-motion animation at about 12 fps: a clay figure of [subject] walks across a felt tabletop set in small stepped movements."},"links":[{"label":"eyecannndy — stop motion","url":"https://eyecannndy.com/technique/stop-motion"},{"label":"melies — stop motion","url":"https://melies.co/cinematic-techniques/time-and-motion/stop-motion"},{"label":"grokfilm — stop motion","url":"https://grokfilm.app/#t/stop-motion"}]},{"id":"eyeline-match","group":"editing","name":"Eyeline match","aliases":["Eyeline Match","eyeline cut","Cutting on Look","cut on look","glance-object cut"],"definition":"A character looks off screen and the next shot shows what they see, from roughly their angle, so the audience ties the glance to the object.","use":"Builds suspicion, desire or discovery without a word; links a face to a clue, a rival or a door swinging open.","misuse":"If the second shot comes from an unrelated height, or the glance points away from where the object sits, the link breaks and the two shots read as unrelated.","clause":"Eyeline match: shot 1, a medium close-up of [subject] turning their eyes to frame left and freezing; cut to shot 2, a dim hallway seen from [subject]'s position, a door on the left slowly opening.","adapters":{"veo":"[00:00-00:03] Static medium close-up: [subject] glances to frame left and freezes. [00:03-00:06] Cut to their view: a dim hallway, a door on the left slowly opening, seen from [subject]'s position.","kling":"[Shot 1: Medium close-up shot] [subject] glances to frame left and freezes. [Shot 2: Medium shot] Their view: a dim hallway where a door on the left slowly opens.","seedance":"镜头1：近景，固定镜头 — [subject] glances to the left of frame and freezes. 镜头切至 镜头2：a dim hallway seen from [subject]'s position, a door on the left slowly opening (eyeline match).","hailuo":"Render two clips: (1) [subject] glances to frame left and freezes [Static shot]; (2) a dim hallway from [subject]'s position, a door on the left slowly opening [Static shot]; cut on the glance.","luma":"Two clips joined in the edit. Clip 1 — static camera, medium close-up: [subject] glances to frame left and freezes. Clip 2 — static camera from [subject]'s position: a door on the left of a dim hallway slowly opens.","runway":"[00:00] Medium close-up, locked-off camera: [subject] glances to frame left and freezes. [00:03] Cut to their eyeline: a dim hallway, a door on the left slowly opening, seen from [subject]'s position."},"links":[{"label":"grokfilm — eyeline match","url":"https://grokfilm.app/#t/eyeline-match"}]},{"id":"180-degree-rule","group":"editing","name":"180-degree rule","aliases":["180-Degree Rule","the line","axis of action","Continuity Editing","continuity editing","screen direction"],"definition":"Every camera covering a scene stays on one side of an imaginary line drawn between the characters, so each person keeps facing the same screen direction across cuts.","use":"Keeps conversations, chases and fights easy to follow; crossing the line on purpose can mark a power shift or a moment of confusion.","misuse":"Shots generated one at a time tempt models to flip sides, and both people suddenly face the same way; state each person's screen side and gaze direction in every shot.","clause":"180-degree rule: [subject] sits on the left facing right and [subject B] on the right facing left across a café table; every shot — the two-shot and each close-up — keeps [subject] looking right and [subject B] looking left.","adapters":{"veo":"[00:00-00:03] Static two-shot across a café table: [subject] on the left facing right, [subject B] on the right facing left. [00:03-00:06] Close-up of [subject], still looking toward frame right.","kling":"[Shot 1: Wide shot] [subject] on the left facing right, [subject B] on the right facing left, across a café table. [Shot 2: Close-up shot] [subject] looking toward frame right. [Shot 3: Close-up shot] [subject B] looking toward frame left.","seedance":"镜头1：中景 — [subject] on the left facing right, [subject B] on the right facing left across a café table. 镜头切至 镜头2：近景 — [subject] looking toward the right of frame. 镜头切至 镜头3：近景 — [subject B] looking toward the left of frame. Keep every camera on the same side of the table.","hailuo":"Render three clips from one side of the table: (1) [subject] left facing right, [subject B] right facing left [Static shot]; (2) [subject] looking frame right [Static shot]; (3) [subject B] looking frame left [Static shot].","luma":"Separate clips joined in the edit, all from one side of a café table: a static two-shot with [subject] on the left facing right and [subject B] on the right facing left, then a close-up of [subject] looking frame right and a close-up of [subject B] looking frame left.","runway":"[00:00] Medium two-shot, locked-off camera: [subject] on the left facing right, [subject B] on the right facing left. [00:03] Close-up of [subject] looking frame right. [00:06] Close-up of [subject B] looking frame left."},"links":[{"label":"grokfilm — 180-degree rule","url":"https://grokfilm.app/#t/180-degree-rule"}]},{"id":"30-degree-rule","group":"editing","name":"30-degree rule","aliases":["30-Degree Rule","30 degree rule","change of angle rule"],"definition":"Back-to-back shots of one subject should differ in camera angle by roughly 30 degrees or more, or clearly in size, so the cut reads as a choice rather than a skip.","use":"Keeps coverage smooth in interviews, dialogue and product edits, and tells you how far to move the camera between setups.","misuse":"Two shots from almost the same spot and size produce an accidental jump cut; a size change straight down the lens axis is an axial cut, which is a different effect.","clause":"30-degree rule: shot 1 frames [subject] at a desk in a frontal medium shot; cut to shot 2, a medium close-up from about 45 degrees to their left, so angle and size both change clearly at the cut.","adapters":{"veo":"[00:00-00:03] Static frontal medium shot: [subject] works at a desk. [00:03-00:06] Cut to a medium close-up from about 45 degrees to their left, a clear change of angle and size.","kling":"[Shot 1: Medium shot] [subject] works at a desk, seen from the front. [Shot 2: Medium close-up shot] The same moment from about 45 degrees to their left.","seedance":"镜头1：中景，固定镜头 — [subject] works at a desk, seen from the front. 镜头切至 镜头2：近景 — the same moment from about 45 degrees to their left, a clear change of angle.","hailuo":"Render two clips: (1) [subject] at a desk seen from the front [Static shot]; (2) [subject] in a closer view from about 45 degrees to their left [Static shot]; cut between them.","luma":"Two clips joined in the edit: a static frontal medium shot of [subject] at a desk, then a static medium close-up from about 45 degrees to their left.","runway":"[00:00] Medium shot, eye level, frontal, locked-off camera on [subject] at a desk. [00:03] Cut to a medium close-up from about 45 degrees to their left."},"links":[{"label":"grokfilm — 30-degree rule","url":"https://grokfilm.app/#t/30-degree-rule"}]},{"id":"reaction-shot","group":"editing","name":"Reaction shot","aliases":["Reaction Shot","reaction","listener shot","reaction cutaway"],"definition":"A shot of a listener or onlooker responding to what was just said or shown, cut in right after the action.","use":"Tells the audience how to feel, lands jokes and revelations, lets the story play out on a face rather than on the event itself.","misuse":"A reaction cut in before the line lands steals the beat; a neutral face reads as no reaction at all, so the change of expression must happen inside the shot.","clause":"Reaction shot: shot 1, a medium shot of a stranger handing [subject] a sealed envelope; cut to shot 2, a static close-up of [subject] reading it as their face moves from polite curiosity to stunned disbelief.","adapters":{"veo":"[00:00-00:03] Static medium shot: a stranger hands [subject] a sealed envelope. [00:03-00:08] Static close-up: [subject] reads it, their face moving from polite curiosity to stunned disbelief.","kling":"[Shot 1: Medium shot] A stranger hands [subject] a sealed envelope. [Shot 2: Close-up shot] [subject] reads it, the expression shifting from polite curiosity to stunned disbelief.","seedance":"镜头1：中景 — a stranger hands [subject] a sealed envelope. 镜头切至 镜头2：特写，固定镜头 — [subject] reads it, the expression moving from polite curiosity to stunned disbelief.","hailuo":"Render two clips: (1) a stranger hands [subject] a sealed envelope [Static shot]; (2) a close-up of [subject] reading it, curiosity turning to stunned disbelief [Static shot].","luma":"Two clips joined in the edit. Clip 1 — static camera: a stranger hands [subject] a sealed envelope. Clip 2 — static close-up: [subject] reads it, the face moving from polite curiosity to stunned disbelief.","runway":"[00:00] Medium shot, locked-off camera: a stranger hands [subject] a sealed envelope. [00:03] Close-up of [subject] reading it, the expression shifting from curiosity to stunned disbelief."},"links":[{"label":"melies — reaction shot","url":"https://melies.co/cinematic-techniques/framing/reaction-shot"},{"label":"grokfilm — reaction shot","url":"https://grokfilm.app/#t/reaction-shot"}]},{"id":"flashback","group":"editing","name":"Flashback","aliases":["Flashback","flash back","memory sequence","Flashforward","flash-forward"],"definition":"The story jumps to an earlier moment, usually marked by a change of look — grade, grain, softness or frame shape — so the audience knows it is the past; a flash-forward does the same toward the future.","use":"Backstory, a memory triggered by an object, revealing what really happened, setting who a character was against who they are now.","misuse":"Without a visual or sound cue the past reads as the present and the timeline blurs; stacking every filter at once looks like a music-video effect rather than memory.","clause":"Flashback: shot 1, a static close-up of [subject] today holding an old photograph in a cool, sharp present-day look; cut to shot 2, the same porch years earlier in warm, soft, grainy film tones, a younger [subject] laughing in summer light.","adapters":{"veo":"[00:00-00:03] Static close-up, cool sharp present-day look: [subject] holds an old photograph. [00:03-00:08] Flashback in warm, soft, grainy film tones: a younger [subject] laughs on the same porch on a summer afternoon.","kling":"[Shot 1: Close-up shot] [subject] holds an old photograph, cool and sharp present-day look. [Shot 2: Medium shot] Flashback: a younger [subject] laughs on a summer porch in warm, soft, grainy film tones.","seedance":"镜头1：特写，固定镜头 — [subject] holds an old photograph, cool sharp present-day look. 镜头切至 镜头2：中景 — flashback: a younger [subject] laughs on the same porch in summer, warm soft grainy film tones.","hailuo":"Render two clips: (1) [subject] holds an old photograph in cool, sharp light [Static shot]; (2) a younger [subject] laughing on a summer porch in warm, soft, grainy tones [Static shot]; cut or dissolve between them.","luma":"Two clips joined in the edit. Clip 1 — static close-up, cool and sharp: [subject] holds an old photograph. Clip 2 — static medium shot in warm, soft, grainy film tones: a younger [subject] laughs on a summer porch.","runway":"[00:00] Close-up, locked-off camera, cool sharp present-day look: [subject] holds an old photograph. [00:03] Flashback, medium shot in warm, soft, grainy film tones: a younger [subject] laughs on a summer porch."},"links":[{"label":"grokfilm — flashback","url":"https://grokfilm.app/#t/flashback"}]},{"id":"voiceover","group":"editing","name":"Voiceover narration","aliases":["Voiceover Narration","voiceover","VO","narration","V.O."],"definition":"A voice speaks over the pictures without being heard inside the scene — a narrator, a character's private thoughts, a letter read aloud.","use":"Carries exposition, inner life and irony; ties a montage together; drives ads and explainers where the picture shows and the voice tells.","misuse":"Narration that describes exactly what is on screen is redundant; asked for narration, models often animate the on-screen character's lips, so say the voice is off screen and the mouth stays closed.","clause":"Voiceover: [subject] walks alone along a winter beach in a static wide shot, mouth closed, while a calm off-screen voice says, \"I came back to the place where it all started.\"","adapters":{"veo":"Static wide shot: [subject] walks alone along a winter beach, mouth closed. Voiceover, a calm off-screen narrator: \"I came back to the place where it all started.\" Ambient noise: waves and wind.","kling":"[subject] walks alone along a winter beach, lips closed. Wide shot, static camera. A calm off-screen narrator says: \"I came back to the place where it all started.\" Waves and wind in the background.","seedance":"镜头1：全景，固定镜头 — [subject] walks alone along a winter beach, mouth closed <calm off-screen narrator: \"I came back to the place where it all started.\"> <waves and wind>.","hailuo":"[subject] walks alone along a winter beach, lips closed [Static shot]; render silent and add the narrator's line and the sound of waves in the edit.","luma":"Static camera, wide shot: [subject] walks alone along a winter beach, lips closed, gazing at the sea. Render picture only; record the narration and the waves separately and lay them in the edit.","runway":"Wide shot, eye level, locked-off camera: [subject] walks alone along a winter beach, lips closed; add the off-screen narration and the sound of waves in the edit."},"links":[{"label":"grokfilm — voiceover narration","url":"https://grokfilm.app/#t/voiceover-narration"}]},{"id":"diegetic-sound","group":"editing","name":"Diegetic sound","aliases":["Diegetic Sound","source sound","in-world sound","source music"],"definition":"Sound that belongs to the story world — dialogue, footsteps, a radio playing in the room — which the characters could hear too.","use":"Grounds a scene in reality; source music from a radio or a band lets the soundtrack live inside the scene; switching to it from score pulls the audience into the moment.","misuse":"Music with no visible or implied source reads as score, and generated audio likes to add an orchestra, so name the on-screen source of every sound.","clause":"Diegetic sound: [subject] dances alone in a kitchen at night to an old radio on the counter, the music tinny and coming from the radio itself, plates clinking as they move, camera static in a medium-wide shot.","adapters":{"veo":"Static medium-wide shot: [subject] dances alone in a kitchen at night beside an old radio on the counter. SFX: tinny swing music from the radio, plates clinking, bare feet on tiles; all of it comes from the room.","kling":"[subject] dances alone in a kitchen at night next to an old radio on the counter. Medium-wide shot, static camera. Tinny music plays from the radio itself, plates clink as they move.","seedance":"镜头1：全景，固定镜头 — [subject] dances alone in a kitchen at night beside an old radio <tinny swing music from the radio, plates clinking, bare feet on tiles>; every sound comes from inside the room.","hailuo":"[subject] dances alone in a kitchen at night beside an old radio on the counter [Static shot]; render silent, then add tinny radio music and kitchen sounds in the edit.","luma":"Static camera, medium-wide shot: [subject] dances alone in a night kitchen beside an old radio. Render picture only; in the edit, add music filtered to sound like the small radio, plus clinking plates.","runway":"Medium-wide shot, eye level, locked-off camera on [subject] dancing alone in a night kitchen beside an old radio; in the edit, add tinny radio music and clinking plates as source sound."},"links":[{"label":"grokfilm — diegetic sound","url":"https://grokfilm.app/#t/diegetic-sound"}]},{"id":"non-diegetic-score","group":"editing","name":"Score","aliases":["Non-Diegetic Sound","Score","score","underscore","film score"],"definition":"Music laid over a scene from outside the story world — the score — which the audience hears and the characters do not.","use":"Sets emotion and pace, hints at danger before it arrives, carries montages and ad spots, lifts a moment beyond what the picture shows.","misuse":"A score running wall to wall flattens every beat; putting a band or a speaker in the frame turns the music into diegetic sound.","clause":"Score: [subject] stands on a cliff edge at dawn in a static wide shot, wind moving their coat, while a slow, swelling string score rises under the image from outside the scene.","adapters":{"veo":"Static wide shot: [subject] stands on a cliff edge at dawn, wind moving their coat. Music: a slow, swelling string score rises under the scene. Ambient noise: soft wind.","kling":"[subject] stands on a cliff edge at dawn, wind moving their coat. Wide shot, static camera. A slow, swelling string score rises underneath, with soft wind.","seedance":"镜头1：全景，固定镜头 — [subject] stands on a cliff edge at dawn, wind moving their coat <slow swelling string score, soft wind>.","hailuo":"[subject] stands on a cliff edge at dawn, wind moving their coat [Static shot]; render silent and lay a slow, swelling string score under it in the edit.","luma":"Static camera, wide shot: [subject] stands on a cliff edge at dawn, wind moving their coat. Render picture only and lay a slow, swelling string score underneath in the edit.","runway":"Wide shot, eye level, locked-off camera: [subject] stands on a cliff edge at dawn, wind moving their coat; add a slow, swelling string score in the edit."},"links":[{"label":"grokfilm — non-diegetic sound","url":"https://grokfilm.app/#t/non-diegetic-sound"}]},{"id":"ambient-sound","group":"editing","name":"Ambient sound","aliases":["Ambient Sound","Room Tone","room tone","ambience","atmos","Sonic Worldbuilding"],"definition":"The constant background sound of a place — a fridge hum, distant traffic, birdsong, the hush of an empty room — that makes a space feel real.","use":"Sells location and time of day, glues cuts together, fills pauses so a quiet moment does not sound like a dropout.","misuse":"Dead digital silence under picture sounds like a fault; an ambience mixed louder than the dialogue buries the scene.","clause":"Ambient sound: [subject] reads at a desk in a small apartment at night in a static medium shot, the room filled with a low fridge hum, a ticking clock and distant city traffic beyond the window.","adapters":{"veo":"Static medium shot: [subject] reads at a desk in a small apartment at night. Ambient noise: a low fridge hum, a ticking clock, distant city traffic through the window.","kling":"[subject] reads at a desk in a small apartment at night. Medium shot, static camera. Quiet room tone: a low fridge hum, a ticking clock, distant traffic outside.","seedance":"镜头1：中景，固定镜头 — [subject] reads at a desk in a small apartment at night <low fridge hum, ticking clock, distant city traffic>.","hailuo":"[subject] reads at a desk in a small apartment at night, lamp glowing, city lights beyond the window [Static shot]; add room tone (fridge hum, clock, traffic) in the edit.","luma":"Static camera, medium shot: [subject] reads at a desk in a small apartment at night, city lights beyond the window. Render picture only; add room tone of fridge hum, clock and distant traffic in the edit.","runway":"Medium shot, eye level, locked-off camera on [subject] reading at a desk at night; in the edit, lay room tone of a fridge hum, a ticking clock and distant traffic."},"links":[{"label":"grokfilm — ambient sound","url":"https://grokfilm.app/#t/ambient-sound"}]},{"id":"foley","group":"editing","name":"Foley and sound effects","aliases":["Foley","Sound Effects (SFX)","SFX","sound effects","foley sounds"],"definition":"Everyday sounds recreated and synced to the action — footsteps, cloth rustle, a cup set down, a latch clicking — plus designed effects for bigger events.","use":"Makes generated footage feel physical, gives product moments weight (a cap click, a pour), and supplies the texture of ASMR and tactile ads.","misuse":"A vague request for sound effects returns generic whooshes; name each sound and the action it belongs to, or the sync drifts.","clause":"Foley: in a static close-up, [subject] unscrews a glass jar, scoops honey with a wooden spoon and taps it on the rim, each action matched by a crisp lid creak, a soft sticky drip and a light wooden tap.","adapters":{"veo":"Static close-up: [subject] unscrews a glass jar, scoops honey with a wooden spoon and taps it on the rim. SFX: a crisp lid creak, a soft sticky drip, a light wooden tap, each in sync with the action.","kling":"[subject] unscrews a glass jar, scoops honey with a wooden spoon and taps it on the rim. Close-up, static camera. A crisp lid creak, a soft sticky drip and a light wooden tap in sync.","seedance":"镜头1：特写，固定镜头 — [subject] unscrews a glass jar, scoops honey with a wooden spoon and taps it on the rim <crisp lid creak, soft sticky drip, light wooden tap, in sync>.","hailuo":"[subject] unscrews a glass jar, scoops honey with a wooden spoon and taps it on the rim [Static shot]; render silent and sync the creak, drip and tap in the edit.","luma":"Static camera, close-up: [subject] unscrews a glass jar, scoops honey with a wooden spoon and taps it on the rim. Render picture only; sync a lid creak, a sticky drip and a wooden tap in the edit.","runway":"Close-up, locked-off camera: [subject] unscrews a glass jar, scoops honey with a wooden spoon and taps it on the rim; add synced foley in the edit — lid creak, sticky drip, wooden tap."},"links":[{"label":"grokfilm — foley","url":"https://grokfilm.app/#t/foley"}]},{"id":"dramatic-silence","group":"editing","name":"Dramatic silence","aliases":["Silence","sound dropout","sudden silence","dead air"],"definition":"The soundtrack suddenly falls away — music, ambience, even dialogue — leaving near-total quiet at a key moment.","use":"The beat after an explosion or terrible news, shock and disorientation, a held breath before a scare, a pause that lets one small sound land.","misuse":"Muting everything for a long stretch reads as a technical fault; keep a faint ringing or a breath so the quiet feels chosen, and bring sound back on a cue.","clause":"Dramatic silence: [subject] runs through a loud street festival in a static medium shot, music and crowd roaring, then stops dead staring off screen as every sound drops to near silence, only a faint ringing and their breath remaining.","adapters":{"veo":"Static medium shot: [subject] runs through a loud street festival. SFX: pounding music and a roaring crowd, then a sudden drop to near silence as [subject] stops dead — only a faint ringing and their breathing remain.","kling":"[subject] runs through a loud street festival, then stops dead staring off screen. Medium shot, static camera. Loud music and crowd, then all sound drops to near silence, a faint ringing and breathing.","seedance":"镜头1：中景，固定镜头 — [subject] runs through a loud street festival, then stops dead staring off screen <loud music and crowd, then a sudden drop to near silence, only a faint ringing and breathing>.","hailuo":"[subject] runs through a busy street festival, then stops dead, staring off screen [Static shot]; in the edit, cut the music and crowd to near silence at the stop.","luma":"Static camera, medium shot: [subject] runs through a busy street festival and stops dead, staring off screen. Render picture only; in the edit, drop all sound to a faint ringing at the moment they stop.","runway":"Medium shot, eye level, locked-off camera: [subject] runs through a busy street festival and stops dead, staring off screen; in the edit, cut the sound to near silence at that moment."},"links":[{"label":"grokfilm — silence","url":"https://grokfilm.app/#t/silence"}]},{"id":"stinger","group":"editing","name":"Stinger","aliases":["Stinger","musical sting","sting","stab"],"definition":"A short, sharp musical hit — a brass stab, a string screech, a bass drop — that punctuates a single moment.","use":"Jump scares, reveals, comic punchlines, logo hits and the button at the end of an ad.","misuse":"A sting on every cut loses its punch, and one that lands a few frames away from the action feels cheap.","clause":"Stinger: [subject] opens a closet door in a dark bedroom in a static medium shot, and on the exact frame a figure appears inside, a single sharp orchestral stab hits.","adapters":{"veo":"Static medium shot in a dark bedroom: [subject] opens a closet door and a figure appears inside. SFX: a single sharp orchestral stab exactly on the reveal, then a low ringing tail.","kling":"[subject] opens a closet door in a dark bedroom and a figure appears inside. Medium shot, static camera. A single sharp orchestral stab hits exactly on the reveal.","seedance":"镜头1：中景，固定镜头 — [subject] opens a closet door in a dark bedroom and a figure appears inside <a single sharp orchestral stab on the reveal>.","hailuo":"[subject] opens a closet door in a dark bedroom and a figure appears inside [Static shot]; add a sharp orchestral stab on the reveal frame in the edit.","luma":"Static camera, medium shot: [subject] opens a closet door in a dark bedroom and a figure is revealed inside. Render picture only; place a sharp orchestral stab on the reveal frame in the edit.","runway":"Medium shot, eye level, locked-off camera: [subject] opens a closet door in a dark bedroom and a figure appears inside; add a sharp orchestral stab on that frame in the edit."},"links":[{"label":"grokfilm — stinger","url":"https://grokfilm.app/#t/stinger"}]},{"id":"walla","group":"editing","name":"Walla","aliases":["Walla","crowd murmur","background chatter","crowd walla"],"definition":"The blurred murmur of a crowd — chatter, laughter, clinking glasses — recorded or mixed so that no single word stands out.","use":"Fills restaurants, parties, offices and stations with life while the main dialogue stays clear.","misuse":"Background voices with clear words compete with the lead lines; a busy room with no crowd sound looks like people pasted into a still.","clause":"Walla: [subject] sits at a corner table in a busy restaurant in a static medium shot, speaking clearly to the camera while the room behind them hums with indistinct chatter, laughter and clinking cutlery.","adapters":{"veo":"Static medium shot: [subject] sits at a corner table in a busy restaurant and says, \"Best table in the house.\" Ambient noise: indistinct crowd chatter, soft laughter and clinking cutlery, every background word blurred.","kling":"[subject] sits at a corner table in a busy restaurant and speaks to the camera. Medium shot, static camera. Indistinct crowd murmur, soft laughter and clinking cutlery behind the clear voice.","seedance":"镜头1：中景，固定镜头 — [subject] sits at a corner table in a busy restaurant and speaks to the camera <indistinct crowd murmur, soft laughter, clinking cutlery; background voices stay unintelligible>.","hailuo":"[subject] sits at a corner table in a busy restaurant, diners talking behind them [Static shot]; add indistinct crowd walla under the dialogue in the edit.","luma":"Static camera, medium shot: [subject] sits at a corner table in a busy restaurant, diners chatting behind them. Render picture only; add indistinct crowd murmur under the dialogue in the edit.","runway":"Medium shot, eye level, locked-off camera on [subject] at a corner table in a busy restaurant, diners chatting behind; add indistinct crowd walla in the edit."},"links":[{"label":"grokfilm — walla","url":"https://grokfilm.app/#t/walla"}]},{"id":"mickey-mousing","group":"editing","name":"Mickey-mousing","aliases":["Mickey Mousing","mickey-mousing","music hits action","synced music hits"],"definition":"Music that imitates the action note for note — a falling run as someone tumbles downstairs, a plink for every tiptoe.","use":"Comedy, cartoons, playful ads and children's content; exaggerates physical gags and makes motion feel choreographed.","misuse":"In serious drama it turns tension into slapstick; music only loosely in time with the action feels sloppy rather than matched.","clause":"Mickey-mousing: [subject] tiptoes across a creaky wooden floor in a static full shot, each exaggerated step landing on a pizzicato pluck, then slips and slides as a quick descending xylophone run follows the fall.","adapters":{"veo":"Static full shot: [subject] tiptoes across a wooden floor in exaggerated steps, then slips and slides. Music: a pizzicato pluck on every step and a quick descending xylophone run that follows the slide.","kling":"[subject] tiptoes across a wooden floor in exaggerated steps, then slips and slides. Full shot, static camera. A pizzicato pluck on every step, then a quick descending xylophone run on the slide.","seedance":"镜头1：全景，固定镜头 — [subject] tiptoes across a wooden floor in exaggerated steps, then slips and slides <a pizzicato pluck on every step, then a quick descending xylophone run on the slide>.","hailuo":"[subject] tiptoes across a wooden floor in exaggerated steps, then slips and slides [Static shot]; score it in the edit with a pluck on each step and a falling xylophone run.","luma":"Static camera, full shot: [subject] tiptoes across a wooden floor in big, exaggerated steps, then slips and slides. Render picture only; in the edit, match a pluck to every step and a falling xylophone run to the slide.","runway":"Full shot, eye level, locked-off camera: [subject] tiptoes across a wooden floor in exaggerated steps, then slips; in the edit, hit a pluck on each step and a descending xylophone run on the slide."},"links":[{"label":"grokfilm — mickey mousing","url":"https://grokfilm.app/#t/mickey-mousing"}]},{"id":"acousmatic-sound","group":"editing","name":"Acousmatic sound","aliases":["Acousmatic Sound","off-screen sound","unseen source","offscreen sound"],"definition":"A sound heard while its source stays out of sight — a voice behind a door, footsteps upstairs, a dog barking somewhere outside.","use":"Suspense and dread, hinting at a world beyond the frame, making the audience picture what they cannot see.","misuse":"Cutting to the source too soon kills the mystery, and a sound that draws no reaction from the character feels like a mixing error.","clause":"Acousmatic sound: [subject] sits frozen on a sofa in a dim living room in a static medium shot, eyes lifted to the ceiling, as slow, heavy footsteps cross the floor upstairs, their source kept out of frame.","adapters":{"veo":"Static medium shot in a dim living room: [subject] sits frozen on a sofa, eyes lifted to the ceiling. SFX: slow, heavy footsteps cross the floor upstairs, the source unseen and off screen.","kling":"[subject] sits frozen on a sofa in a dim living room, eyes lifted to the ceiling. Medium shot, static camera. Slow, heavy footsteps cross the floor upstairs; the source stays off screen.","seedance":"镜头1：中景，固定镜头 — [subject] sits frozen on a sofa in a dim living room, eyes lifted to the ceiling <slow heavy footsteps crossing the floor upstairs>; keep the source out of frame.","hailuo":"[subject] sits frozen on a sofa in a dim living room, eyes lifted to the ceiling [Static shot]; add slow footsteps from upstairs in the edit.","luma":"Static camera, medium shot: [subject] sits frozen on a sofa in a dim living room, eyes lifted toward the ceiling. Render picture only; add slow, heavy footsteps from the floor above in the edit.","runway":"Medium shot, eye level, locked-off camera: [subject] sits frozen on a sofa in a dim living room, eyes on the ceiling; in the edit, add slow footsteps from the floor above."},"links":[{"label":"grokfilm — acousmatic sound","url":"https://grokfilm.app/#t/acousmatic-sound"}]},{"id":"three-shot","group":"composition","name":"Three-shot","aliases":["Three-Shot","three shot","3-shot","triple shot"],"definition":"Three people share one frame, and the shape their bodies make — a line, a triangle, two against one — tells the group's dynamic.","use":"Trios, a mediator caught between two rivals, a family unit, ensemble ads where three people or products need equal weight.","misuse":"Lining three people up at one depth reads like a police lineup; letting the middle figure hide one of the others loses a face.","clause":"Three-shot: [subject] stands between [subject B] and a third friend at a kitchen counter in a medium-wide shot, the three staggered in depth so every face is clear, camera static at eye level.","adapters":{"veo":"Medium-wide three-shot, static camera at eye level: [subject] stands between [subject B] and a third friend at a kitchen counter, the three staggered in depth so every face reads clearly.","kling":"[subject] stands between [subject B] and a third friend at a kitchen counter. Medium wide three-shot, static camera, the three staggered in depth, all faces visible.","seedance":"镜头1：中景，固定镜头 — [subject] stands between [subject B] and a third friend at a kitchen counter, the three staggered in depth so every face stays visible (three-shot).","hailuo":"[subject] stands between [subject B] and a third friend at a kitchen counter, all three faces visible, staggered in depth [Static shot].","luma":"Static camera at eye level, medium-wide three-shot: [subject] stands between [subject B] and a third friend at a kitchen counter, staggered in depth with every face clear.","runway":"Medium-wide three-shot, eye level, locked-off camera on [subject] between [subject B] and a third friend at a kitchen counter, the three staggered in depth, every face visible."},"links":[{"label":"shot.cafe — tag: three-shot","url":"https://shot.cafe/tag/three-shot"},{"label":"melies — three shot","url":"https://melies.co/cinematic-techniques/framing/three-shot"},{"label":"grokfilm — three-shot","url":"https://grokfilm.app/#t/three-shot"}]},{"id":"group-shot","group":"composition","name":"Group shot","aliases":["Group Shot","group-shot","ensemble shot","crowd framing"],"definition":"Four or more people held in one frame as a unit, staged in rows, clusters or depth so the group reads before any one person.","use":"Teams, families, bands, a crowd reacting together; the moment a group forms or stands united; ensemble posters in motion.","misuse":"A flat row of identical heads at one depth looks like a class photo; a loose wide shot of a crowd is setting, not a group shot — the group itself has to be the subject.","clause":"Group shot: [subject] stands at the front of six friends on a rooftop, the others clustered behind in two loose rows, all looking toward the camera, full shot, camera static at eye level.","adapters":{"veo":"Full shot, static camera at eye level: [subject] at the front of six friends on a rooftop, the others clustered behind in two loose rows, all looking toward the camera.","kling":"[subject] stands at the front of six friends on a rooftop. Full shot group framing, static camera, the others in two loose rows behind, all looking at the camera.","seedance":"镜头1：全景，固定镜头 — [subject] at the front of six friends on a rooftop, the others in two loose rows behind, everyone looking toward the camera (group shot).","hailuo":"[subject] stands at the front of six friends on a rooftop, the rest in two loose rows behind, all facing the camera [Static shot].","luma":"Static camera at eye level, full shot of a group: [subject] stands in front of six friends on a rooftop, the others clustered in two loose rows behind, everyone facing the lens.","runway":"Full shot, eye level, locked-off camera; [subject] at the front of six friends on a rooftop, the others in two loose rows behind, all looking into the lens."},"links":[{"label":"shot.cafe — tag: group-shot","url":"https://shot.cafe/tag/group-shot"},{"label":"melies — group shot","url":"https://melies.co/cinematic-techniques/framing/group-shot"}]},{"id":"clean-single","group":"composition","name":"Clean single","aliases":["clean single","Single","single","clean frame","Clean Frame"],"definition":"One person alone in the frame, with nobody else's shoulder, head or body intruding — the opposite of a dirty single.","use":"Isolation inside a conversation, the beat where a character stands apart, testimonials and talking heads, coverage that can be cut in any order.","misuse":"A foreground shoulder creeping in turns it into an over-the-shoulder or dirty single and ties the shot to a partner; framing so tight the eyeline has nowhere to go loses the sense of who they are talking to.","clause":"Clean single: [subject] alone in a medium close-up on the right third, looking just left of the lens toward an unseen partner, nobody else in frame, camera static at eye level.","adapters":{"veo":"Medium close-up, static camera at eye level: [subject] alone on the right third of the frame, looking just left of the lens toward an unseen partner, the frame clear of anyone else.","kling":"[subject] listens to someone off-screen. Medium Close up, clean single, static camera, the subject alone on the right third, eyeline just left of the lens.","seedance":"镜头1：近景，固定镜头 — [subject] alone on the right third, looking just left of the lens toward an unseen partner; keep only one person in frame.","hailuo":"[subject] alone on the right of the frame looks just left of the lens toward someone unseen [Static shot].","luma":"Static camera at eye level, medium close-up: [subject] alone on the right third, eyes just left of the lens toward an unseen partner, the frame holding only them.","runway":"Medium close-up, eye level, locked-off camera; [subject] alone on the right third, eyeline just left of the lens toward an off-screen partner, a single figure in frame."},"links":[{"label":"shot.cafe — tag: clean single","url":"https://shot.cafe/tag/clean%20single"},{"label":"melies — single","url":"https://melies.co/cinematic-techniques/framing/single"}]},{"id":"interview-framing","group":"composition","name":"Interview framing","aliases":["Interview","interview setup","off-axis interview","talking-head framing","sit-down interview"],"definition":"The subject sits slightly off-center and looks just past the lens at an unseen interviewer, with looking room on the side of their gaze.","use":"Documentary testimony, founder stories, customer reviews, UGC talking heads that should feel candid rather than presented to camera.","misuse":"Eyes straight into the lens turn it into a presenter piece or a fourth-wall address; centering the subject while the gaze goes sideways squeezes the looking room.","clause":"Interview framing: [subject] sits on the left third of a medium close-up in a softly lit office, looking just right of the lens at an unseen interviewer, background slightly out of focus, camera static at eye level.","adapters":{"veo":"Medium close-up, static camera at eye level, interview setup: [subject] seated on the left third of a softly lit office, looking just right of the lens at an unseen interviewer, background softly out of focus.","kling":"[subject] answers questions in a softly lit office. Medium Close up, interview framing, static camera, subject on the left third, eyes just right of the lens, soft background.","seedance":"镜头1：近景，固定镜头 — [subject] seated on the left third in a softly lit office, looking just right of the lens toward an unseen interviewer; background slightly blurred.","hailuo":"[subject] sits on the left of the frame in a softly lit office, speaking to someone just right of the lens [Static shot].","luma":"Static camera at eye level, medium close-up interview setup: [subject] sits on the left third of a softly lit office and speaks to an unseen interviewer just right of the lens, the background soft.","runway":"Medium close-up, eye level, locked-off camera, 50mm; [subject] seated on the left third of a softly lit office, eyeline just right of the lens toward an off-screen interviewer, soft background."},"links":[{"label":"eyecannndy — interview","url":"https://eyecannndy.com/technique/interview"},{"label":"melies — interview","url":"https://melies.co/cinematic-techniques/framing/interview"}]},{"id":"video-portrait","group":"composition","name":"Video portrait","aliases":["Video Portraits","moving portrait","living portrait","portrait in motion"],"definition":"A portrait held as moving image: the subject poses almost still for the lens while small signs of life — breath, a blink, wind, a slow turn of the head — keep it from being a photograph.","use":"Fashion and beauty, character introductions, casting reels, title cards, gallery-style brand pieces.","misuse":"A portrait with no motion cue comes back as a frozen clip that looks like an error; letting the subject act or talk turns it into a scene.","clause":"Video portrait: [subject] faces the camera in a centered medium close-up against a plain warm backdrop, holding still while they breathe, blink once and a light breeze stirs their hair, camera static at eye level.","adapters":{"veo":"Medium close-up, static camera at eye level, centered portrait: [subject] faces the lens against a plain warm backdrop, holding still as they breathe, blink once and a light breeze stirs their hair.","kling":"[subject] poses for a portrait against a plain warm backdrop. Medium Close up, centered, static camera, subtle breathing, one blink, a light breeze in the hair.","seedance":"镜头1：近景，固定镜头 — [subject] faces the camera, centered against a plain warm backdrop, holding still: soft breathing, one blink, a light breeze in the hair.","hailuo":"[subject] faces the camera against a plain warm backdrop, nearly still, breathing softly and blinking once as a breeze lifts their hair [Static shot].","luma":"Static camera, centered medium close-up portrait: [subject] faces the lens against a plain warm backdrop, holding still while breathing softly, blinking once, hair lifting in a light breeze.","runway":"Medium close-up, eye level, locked-off camera, 85mm; [subject] centered against a plain warm backdrop, posing still with soft breathing, one blink and a breeze moving the hair."},"links":[{"label":"eyecannndy — video portraits","url":"https://eyecannndy.com/technique/video-portraits"},{"label":"melies — video portraits","url":"https://melies.co/cinematic-techniques/framing/video-portraits"}]},{"id":"duplication","group":"composition","name":"Duplication","aliases":["Duplication","clones","clone shot","twinning","Selfie Twin"],"definition":"The same subject appears two or more times in one frame — copies sharing a room, each doing something different.","use":"Inner conflict, one person juggling many roles, comedy, ads that show several uses of a product at once, music videos.","misuse":"Generating all the copies in one pass often blends faces or changes outfits between them, and a split screen with a visible seam is a different device. For an exact likeness, render each copy as its own locked-off pass and composite them in the edit.","clause":"Duplication: three copies of [subject] in identical clothes share one living room in a wide shot — one reading on the sofa, one at the window, one pouring tea — camera static at eye level.","adapters":{"veo":"Wide shot, static camera at eye level: three identical copies of [subject] in the same clothes share one living room, one reading on the sofa, one at the window, one pouring tea.","kling":"Three identical copies of [subject], same face and clothes, share a living room: one reads on the sofa, one stands at the window, one pours tea. Wide shot, static camera.","seedance":"镜头1：全景，固定镜头 — three identical copies of [subject] in the same clothes in one living room: one reads on the sofa, one stands at the window, one pours tea; keep all three faces identical.","hailuo":"Three identical copies of [subject] in one living room, reading on the sofa, standing at the window and pouring tea [Static shot].","luma":"Static camera at eye level, wide shot: three identical copies of [subject] in matching clothes fill one living room, reading on the sofa, standing at the window and pouring tea.","runway":"Wide shot, eye level, locked-off camera; three identical copies of [subject] in matching clothes in one living room, one reading on the sofa, one at the window, one pouring tea. For an exact match, render each copy as a separate locked-off pass and composite."},"links":[{"label":"eyecannndy — duplication","url":"https://eyecannndy.com/technique/duplication"},{"label":"melies — duplication","url":"https://melies.co/cinematic-techniques/effects/duplication"}]},{"id":"screen-in-screen","group":"composition","name":"Screen in screen","aliases":["Screen in Screen","screen-in-screen","picture in picture","screens in frame"],"definition":"A screen inside the frame — a phone, monitor, TV or projection — carries its own picture, so two layers of image play at once.","use":"Surveillance and media stories, a character watching their own life, product demos on devices, video calls, folding a second time or place into the shot.","misuse":"Generated screen content tends to warp or flicker, and on-screen text turns to gibberish; for legible content, render a plain bright screen and insert the footage in the edit as a screen replacement.","clause":"Screen in screen: [subject] sits in a dark bedroom in a medium shot, lit by a laptop whose screen shows a sunny beach video, the screen filling the lower right of the frame, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level: [subject] in a dark bedroom lit by a laptop, its screen showing a sunny beach video in the lower right of the frame.","kling":"[subject] sits in a dark bedroom watching a laptop. Medium shot, static camera, the laptop screen in the lower right shows a sunny beach video and lights the face.","seedance":"镜头1：中景，固定镜头 — [subject] in a dark bedroom lit by a laptop; the screen, lower right of frame, plays a sunny beach video.","hailuo":"[subject] sits in a dark bedroom lit by a laptop whose screen plays a sunny beach video in the lower right [Static shot].","luma":"Static camera at eye level, medium shot: [subject] sits in a dark bedroom, face lit by a laptop whose screen in the lower right plays a sunny beach video.","runway":"Medium shot, eye level, locked-off camera; [subject] in a dark bedroom lit by a laptop in the lower right of frame, the screen showing a sunny beach video."},"links":[{"label":"shot.cafe — tag: screen","url":"https://shot.cafe/tag/screen"},{"label":"eyecannndy — screen in screen","url":"https://eyecannndy.com/technique/screen-in-screen"},{"label":"melies — screen in screen","url":"https://melies.co/cinematic-techniques/composition/screen-in-screen"}]},{"id":"shadow-box","group":"composition","name":"Shadow box","aliases":["Shadow Box","inset frame","boxed image","window-boxed picture"],"definition":"The picture sits inside a smaller box within the frame, with deliberate empty or dark margin around it, instead of filling the screen edge to edge.","use":"Memory and archive moments, gallery and editorial looks, holding a square or vertical clip inside a wide delivery, title sequences.","misuse":"Letting the model draw the border gives soft, uneven edges, so render the clip full-frame and place it in the box in the edit. A frame within a frame uses something inside the scene, not an inset.","clause":"Shadow box: a medium shot of [subject] on a windy beach sits in a small centered rectangle that fills about half the frame, surrounded by flat black margin, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level: [subject] on a windy beach shown inside a small centered rectangle filling about half the frame, surrounded by flat black margin.","kling":"[subject] stands on a windy beach. Medium shot, static camera, the picture inset in a small centered rectangle with a wide black border around it.","seedance":"镜头1：中景，固定镜头 — [subject] on a windy beach, the image shown as a small centered rectangle about half the frame size inside a flat black border.","hailuo":"[subject] on a windy beach, shown in a small centered rectangle framed by wide black margins [Static shot].","luma":"Static camera, medium shot: [subject] on a windy beach appears inside a small centered rectangle about half the frame wide, flat black margin all around.","runway":"Medium shot, eye level, locked-off camera on [subject] on a windy beach, the picture inset as a centered rectangle about half the frame size with flat black margin; for clean edges, add the box in the edit."},"links":[{"label":"eyecannndy — shadow box","url":"https://eyecannndy.com/technique/shadow-box"},{"label":"melies — shadow box","url":"https://melies.co/cinematic-techniques/effects/shadow-box"}]},{"id":"forced-perspective","group":"composition","name":"Forced perspective","aliases":["Forced Perspective","forced-perspective","perspective trick","in-camera scale trick"],"definition":"An in-camera trick that lines up near and far objects so their sizes seem to belong together — a hand seems to hold the sun, a toy car passes for a real one.","use":"Playful product ads, surreal social clips, fairytale scale, comedy reveals that the camera later breaks.","misuse":"Without deep focus the two planes cannot both stay sharp and the trick shows; any camera move adds parallax that breaks the alignment, so keep it locked off.","clause":"Forced perspective: [subject] stands in the foreground of a wide beach at sunset, hand raised so their fingers seem to pinch the setting sun on the horizon, everything sharp in deep focus, camera static at eye level.","adapters":{"veo":"Wide shot, static camera at eye level, deep focus: [subject] in the foreground of a beach at sunset, hand raised so the fingers appear to pinch the sun on the horizon.","kling":"[subject] stands on a beach at sunset and raises a hand so the fingers seem to pinch the setting sun. Wide shot, static camera, forced perspective, deep focus.","seedance":"镜头1：全景，固定镜头 — [subject] in the foreground of a beach at sunset, fingers lined up so they seem to pinch the sun on the horizon; near and far both sharp.","hailuo":"[subject] stands on a sunset beach, fingers lined up to pinch the sun on the horizon, near and far both sharp [Static shot].","luma":"Static camera at eye level, wide shot with deep focus: [subject] in the foreground of a sunset beach raises a hand so the fingers appear to pinch the sun on the horizon.","runway":"Wide shot, eye level, locked-off camera, 24mm at f/11; [subject] in the foreground of a sunset beach, fingers aligned to pinch the sun on the horizon, foreground and horizon equally sharp."},"links":[{"label":"melies — forced perspective","url":"https://melies.co/cinematic-techniques/effects/forced-perspective"},{"label":"grokfilm — forced perspective","url":"https://grokfilm.app/#t/forced-perspective"}]},{"id":"scale-shift","group":"composition","name":"Scale shift","aliases":["Scale Shift","giant subject","tiny subject","size swap"],"definition":"A subject appears at an impossible size against a world kept true to scale — a giant among buildings, a tiny figure on a tabletop.","use":"Surreal brand moments, dreams and fantasy, products shown as monuments, music videos, openers that need to stop the scroll.","misuse":"If light, shadows and contact points disagree, the subject looks pasted on; models often shrink the world instead, so state both the subject's size and that the setting is normal scale. For exact proportions, a composite in the edit is more reliable.","clause":"Scale shift: a giant [subject] sits cross-legged in a city square, taller than the surrounding four-story buildings, tiny pedestrians and cars around their knees, wide shot, camera static at street level.","adapters":{"veo":"Wide shot, static camera at street level: a giant [subject] sits cross-legged in a city square, taller than the four-story buildings around them, tiny pedestrians and cars near their knees, shadows matching the afternoon sun.","kling":"A giant [subject] sits cross-legged in a normal-sized city square, taller than the four-story buildings, small pedestrians and cars around the knees. Wide shot, static camera.","seedance":"镜头1：全景，固定镜头 — a giant [subject] sits cross-legged in a city square of normal scale, taller than the four-story buildings, small pedestrians and cars around the knees; shadows match the scene.","hailuo":"A giant [subject] sits cross-legged in a city square, taller than the buildings, tiny pedestrians and cars around their knees [Static shot].","luma":"Static camera at street level, wide shot: a giant [subject] sits cross-legged in a city square, rising above the four-story buildings, tiny pedestrians and cars around their knees, shadows matching the sun.","runway":"Wide shot, low street-level angle, locked-off camera; a giant [subject] sits cross-legged in a city square, taller than the four-story buildings, small pedestrians and cars at their knees, matching afternoon shadows."},"links":[{"label":"eyecannndy — scale shift","url":"https://eyecannndy.com/technique/scale-shift"},{"label":"melies — scale shift","url":"https://melies.co/cinematic-techniques/effects/scale-shift"}]},{"id":"reflection-shot","group":"composition","name":"Reflection shot","aliases":["Reflections","reflection","mirror shot","puddle reflection","reflected framing"],"definition":"The subject is seen in, or doubled by, a reflective surface — a mirror, a shop window, a puddle, polished metal, still water.","use":"Duality and self-confrontation, secret observation, layering two spaces in one frame, glossy product and night-city looks.","misuse":"Models often let the reflection disagree with the subject in pose or timing, so say what the surface shows; a mirror that catches the camera breaks the illusion, so angle the surface off-axis.","clause":"Reflection shot: [subject] stands at the edge of a rain puddle on a night street, seen upside down in the still water that fills the lower half of the frame, the real figure cropped at the top, camera static low to the ground.","adapters":{"veo":"Low static camera near the ground, medium shot: [subject] at the edge of a rain puddle on a night street, their upside-down reflection in the still water filling the lower half of the frame, the real figure cropped at the top.","kling":"[subject] stands beside a rain puddle on a night street. Low static camera, the upside-down reflection in the still water fills the lower half of the frame, the real figure cropped at the top.","seedance":"镜头1：中景，固定镜头 — low camera at a night-street puddle; [subject] at its edge, the upside-down reflection in still water filling the lower half, the real figure cropped at the top; the reflection matches the pose.","hailuo":"[subject] stands by a rain puddle on a night street, the upside-down reflection filling the lower half of the frame [Static shot].","luma":"Static camera low to the ground: [subject] stands at the edge of a rain puddle on a night street, the mirrored figure in the still water filling the lower half of the frame, the real figure cropped at the top.","runway":"Medium shot, ground-level angle, locked-off camera; [subject] at the edge of a still rain puddle on a night street, their upside-down reflection filling the lower half of the frame, the real figure cropped at the top."},"links":[{"label":"shot.cafe — tag: reflection","url":"https://shot.cafe/tag/reflection"},{"label":"eyecannndy — reflections","url":"https://eyecannndy.com/technique/reflections"},{"label":"melies — reflections","url":"https://melies.co/cinematic-techniques/composition/reflections"}]},{"id":"tableau","group":"composition","name":"Tableau","aliases":["Tableau","tableau shot","tableau vivant","staged tableau"],"definition":"A composed, nearly motionless arrangement of people and objects held like a painting or a stage picture, often frontal and symmetrical, where staging rather than action carries the meaning.","use":"Opening and closing images, family drama, deadpan comedy, fashion and art pieces, the frozen aftermath of an event.","misuse":"Too much movement turns it into an ordinary wide scene; a tableau with no depth or no clear center reads as a group photo.","clause":"Tableau: [subject] sits at the head of a long dinner table in a frontal wide shot, eight guests frozen mid-gesture along both sides, candles and plates arranged symmetrically, only the candle flames moving, camera static at eye level.","adapters":{"veo":"Frontal wide shot, static camera at eye level: [subject] at the head of a long dinner table, eight guests frozen mid-gesture along both sides, symmetrical candles and plates, only the candle flames flickering.","kling":"[subject] sits at the head of a long dinner table, eight guests along both sides holding still mid-gesture. Frontal wide shot, static camera, symmetrical arrangement, only the candle flames move.","seedance":"镜头1：全景，固定镜头 — frontal view: [subject] at the head of a long dinner table, eight guests along both sides holding still mid-gesture, symmetrical candles and plates; only the flames move.","hailuo":"[subject] at the head of a long dinner table, eight guests along both sides frozen mid-gesture, candle flames flickering [Static shot].","luma":"Static camera at eye level, frontal wide shot: [subject] sits at the head of a long dinner table, eight guests holding still mid-gesture along both sides, candles and plates in symmetry, the flames gently flickering.","runway":"Wide shot, eye level, frontal, locked-off camera; [subject] at the head of a long dinner table, eight guests holding still mid-gesture, symmetrical candles and plates, only the candle flames moving."},"links":[{"label":"eyecannndy — tableau","url":"https://eyecannndy.com/technique/tableau-shots"},{"label":"melies — tableau","url":"https://melies.co/cinematic-techniques/composition/tableau"}]},{"id":"void-space","group":"composition","name":"Void","aliases":["Void","infinite void","seamless void","limbo set"],"definition":"The subject exists in an endless, featureless space — seamless white, black or a single color — with no horizon, walls or setting to anchor them.","use":"Music videos, fashion and product hero shots, dream and limbo states, abstract openers, isolating a performance from any context.","misuse":"A backdrop with a visible seam, corner or floor edge is just a studio set; total emptiness with no contact shadow makes the subject look cut out, so keep a soft shadow under them.","clause":"Void: [subject] stands centered in a full shot inside an endless seamless white space with no visible floor line or horizon, a soft contact shadow under their feet, camera static at eye level.","adapters":{"veo":"Full shot, static camera at eye level: [subject] centered in an endless seamless white space, the floor blending into the background, a soft contact shadow under the feet.","kling":"[subject] stands in an endless seamless white void. Full shot, static camera, centered, floor and background blending together, a soft shadow under the feet.","seedance":"镜头1：全景，固定镜头 — [subject] centered in an endless seamless white space; floor and background merge with no horizon line; a soft contact shadow under the feet.","hailuo":"[subject] stands centered in an endless seamless white space, a soft shadow beneath their feet [Static shot].","luma":"Static camera at eye level, full shot: [subject] stands centered in an infinite seamless white space where floor and background merge, a soft contact shadow beneath the feet.","runway":"Full shot, eye level, locked-off camera; [subject] centered in an endless seamless white void, the floor merging into the background, a soft contact shadow under the feet."},"links":[{"label":"eyecannndy — void","url":"https://eyecannndy.com/technique/void"},{"label":"melies — void","url":"https://melies.co/cinematic-techniques/composition/void"}]},{"id":"voyeur-framing","group":"composition","name":"Voyeur framing","aliases":["Voyeur","voyeuristic framing","hidden observer","spy framing"],"definition":"The frame watches the subject from a hidden vantage — through blinds, foliage, a door gap or across a street — with obstructions in the foreground, as if someone is spying.","use":"Thrillers and stalker stories, surveillance, forbidden glimpses, building dread before the subject knows they are being watched.","misuse":"A clean, unobstructed angle reads as neutral coverage; turning it into a handheld POV adds a character, while voyeur framing can stay locked off and impersonal.","clause":"Voyeur framing: [subject] reads alone at a lit kitchen table, seen from across a dark yard through the slats of a half-open fence that stay soft in the foreground, long lens, camera static.","adapters":{"veo":"Long-lens shot, static camera, from across a dark yard: [subject] reads alone at a lit kitchen table, seen through the slats of a half-open fence that blur softly in the foreground.","kling":"[subject] reads alone at a lit kitchen table. Seen from across a dark yard through soft out-of-focus fence slats, long lens, static camera, as if watched.","seedance":"镜头1：中景，固定镜头 — from across a dark yard, [subject] reads alone at a lit kitchen table, seen through the slats of a half-open fence that stay soft in the foreground; long lens.","hailuo":"From across a dark yard, [subject] reads alone at a lit kitchen table, glimpsed between soft fence slats [Static shot].","luma":"Static camera with a long lens, from across a dark yard: [subject] reads alone at a lit kitchen table, framed between the soft blurred slats of a half-open fence.","runway":"Medium shot from a distance, eye level, locked-off camera, 135mm; [subject] reading alone at a lit kitchen table across a dark yard, soft fence slats in the foreground framing the view."},"links":[{"label":"eyecannndy — voyeur","url":"https://eyecannndy.com/technique/voyeur"},{"label":"melies — voyeur","url":"https://melies.co/cinematic-techniques/composition/voyeur"}]},{"id":"headroom","group":"composition","name":"Headroom","aliases":["Headroom","head room","top margin"],"definition":"The space between the top of the subject's head and the top edge of the frame; how much of it is left sets comfort, power and tension.","use":"Modest headroom keeps a talking head relaxed; very little feels intense and intimate; a large empty band above dwarfs the subject or signals loneliness.","misuse":"Too much accidental headroom lets the subject sink to the bottom and look small; cropping the forehead in a medium shot looks like a mistake, while in a tight close-up it is normal.","clause":"Headroom: [subject] in a medium close-up with a small, even gap between the top of the head and the frame edge, eyes on the upper third line, camera static at eye level.","adapters":{"veo":"Medium close-up, static camera at eye level: [subject] with a small even gap of headroom above the hair, eyes resting on the upper third line.","kling":"[subject] speaks calmly. Medium Close up, static camera, a small even gap of headroom above the head, eyes on the upper third of the frame.","seedance":"镜头1：近景，固定镜头 — [subject] with a small, even gap between the top of the head and the frame edge; eyes on the upper third line.","hailuo":"[subject] framed with a small even gap above the head, eyes on the upper third of the frame [Static shot].","luma":"Static camera at eye level, medium close-up: [subject] with a small even margin above the head and eyes resting on the upper third line.","runway":"Medium close-up, eye level, locked-off camera on [subject]; a small even margin above the head, eyes aligned with the upper third line."},"links":[{"label":"melies — headroom","url":"https://melies.co/cinematic-techniques/composition/headroom"},{"label":"grokfilm — headroom","url":"https://grokfilm.app/#t/headroom"}]},{"id":"golden-ratio","group":"composition","name":"Golden ratio","aliases":["Golden Ratio","golden spiral","phi grid","Fibonacci spiral"],"definition":"A placement guide built on the 1:1.618 proportion — a grid set slightly closer to center than thirds, or a spiral that winds in toward the point of interest.","use":"Classical, painterly compositions; product and architecture frames where the eye should travel along a curve to the hero detail.","misuse":"Models cannot place a spiral precisely, so name where the subject sits and which curve leads to it; a plain rule-of-thirds placement gives a similar but looser read.","clause":"Golden ratio: [subject] stands at the tight inner end of a spiral staircase seen from above, the railing sweeping in from the frame edge and winding toward them, placed just off center, camera static.","adapters":{"veo":"High-angle wide shot, static camera: [subject] stands at the tight inner end of a spiral staircase, the railing sweeping in from the frame edge and winding toward them, placed just off center on a golden-ratio point.","kling":"[subject] stands at the foot of a spiral staircase. High angle wide shot, static camera, the railing curving inward from the frame edge toward the subject, placed just off center.","seedance":"镜头1：全景，固定镜头 — seen from above, [subject] at the tight inner end of a spiral staircase; the railing sweeps in from the frame edge and winds toward them, just off center (golden ratio).","hailuo":"Seen from above, [subject] stands where a spiral staircase winds to its tight inner end, just off center [Static shot].","luma":"Static camera, high-angle wide shot: [subject] stands at the tight inner end of a spiral staircase, the railing curving in from the frame edge toward them, placed just off center.","runway":"Wide shot, high angle, locked-off camera; [subject] at the tight inner end of a spiral staircase, the railing sweeping from the frame edge toward them, placed on a golden-ratio point just off center."},"links":[{"label":"melies — golden ratio","url":"https://melies.co/cinematic-techniques/composition/golden-ratio"},{"label":"grokfilm — golden ratio","url":"https://grokfilm.app/#t/golden-ratio"}]},{"id":"asymmetrical-balance","group":"composition","name":"Asymmetrical balance","aliases":["Asymmetry","asymmetrical balance","Visual Weight","Balancing Elements","visual weight"],"definition":"An off-center frame that still feels settled, because a small strong element on one side weighs against a large quiet mass on the other.","use":"Natural, modern compositions; a figure set against architecture; product layouts with copy space; frames that feel considered without formal symmetry.","misuse":"Pushing everything to one side with nothing to answer it makes the frame tip over; perfect symmetry is a different, more formal statement.","clause":"Asymmetrical balance: [subject] in a red coat stands small on the right third of a wide shot, balanced by a large gray concrete wall filling the left half, camera static at eye level.","adapters":{"veo":"Wide shot, static camera at eye level: [subject] in a red coat stands small on the right third, balanced by a large gray concrete wall that fills the left half of the frame.","kling":"[subject] in a red coat stands beside a large gray concrete wall. Wide shot, static camera, the subject small on the right third, the wall filling the left half.","seedance":"镜头1：全景，固定镜头 — [subject] in a red coat small on the right third, balanced by a large gray concrete wall filling the left half of the frame.","hailuo":"[subject] in a red coat stands small on the right, a large gray concrete wall filling the left half [Static shot].","luma":"Static camera at eye level, wide shot: [subject] in a red coat stands small on the right third while a large gray concrete wall fills the left half and balances the frame.","runway":"Wide shot, eye level, locked-off camera; [subject] in a red coat small on the right third, a broad gray concrete wall filling the left half as a counterweight."},"links":[{"label":"melies — asymmetry","url":"https://melies.co/cinematic-techniques/composition/asymmetry"},{"label":"grokfilm — visual weight","url":"https://grokfilm.app/#t/visual-weight"}]},{"id":"diagonal-composition","group":"composition","name":"Diagonal composition","aliases":["Diagonal Composition","Diagonal Lines","diagonals","dynamic diagonal"],"definition":"The main lines and masses run corner to corner instead of level or upright, giving a still frame direction and energy.","use":"Action, ascent and descent, tension, sport and dance, stairs and ramps; making a locked-off shot feel like it is moving.","misuse":"Rolling the camera into a Dutch angle tilts the whole world and signals unease; true diagonal composition keeps the horizon level and finds the diagonals inside the scene.","clause":"Diagonal composition: [subject] climbs a steep concrete stairway that runs from the lower left corner to the upper right, the handrail tracing the same diagonal, horizon level, camera static in a wide shot.","adapters":{"veo":"Wide shot, static camera, level horizon: [subject] climbs a steep concrete stairway that runs from the lower left corner to the upper right, the handrail tracing the same diagonal.","kling":"[subject] climbs a steep concrete stairway. Wide shot, static camera, the stairs and handrail running from the lower left corner to the upper right, horizon level.","seedance":"镜头1：全景，固定镜头 — [subject] climbs a steep concrete stairway running from the lower left corner to the upper right, the handrail on the same diagonal; keep the horizon level.","hailuo":"[subject] climbs a steep stairway running from the lower left corner to the upper right, the handrail alongside [Static shot].","luma":"Static camera, wide shot with a level horizon: [subject] climbs a steep concrete stairway that runs from the lower left corner to the upper right, the handrail following the diagonal.","runway":"Wide shot, eye level, locked-off camera, level horizon; [subject] climbing a steep concrete stairway from the lower left corner to the upper right, the handrail tracing the same diagonal."},"links":[{"label":"melies — diagonal composition","url":"https://melies.co/cinematic-techniques/composition/diagonal-composition"},{"label":"grokfilm — diagonal lines","url":"https://grokfilm.app/#t/diagonal-lines"}]},{"id":"triangular-composition","group":"composition","name":"Triangular composition","aliases":["Triangular Composition","triangle composition","pyramid staging"],"definition":"Three key points — heads, hands or objects — form a triangle in the frame, usually peaked at the top, which gives stability and a clear hierarchy.","use":"Family and group portraits, power structures with one figure above the others, still life and product arrangements, classical staging.","misuse":"Three people in a straight line make no shape; an inverted triangle with its point at the bottom feels unstable, which works only when that is the intent.","clause":"Triangular composition: [subject] stands in the center background as the peak of a triangle, with [subject B] and a third person seated lower at front left and front right, medium-wide shot, camera static at eye level.","adapters":{"veo":"Medium-wide shot, static camera at eye level: [subject] stands in the center background at the peak of a triangle, [subject B] and a third person seated lower at front left and front right.","kling":"[subject] stands behind [subject B] and a third person, who sit at front left and front right. Medium wide shot, static camera, the three heads forming a triangle with [subject] at the top.","seedance":"镜头1：中景，固定镜头 — [subject] stands center background as the peak of a triangle; [subject B] and a third person sit lower at front left and front right.","hailuo":"[subject] stands at the center back, [subject B] and a third person seated at front left and right, forming a triangle [Static shot].","luma":"Static camera at eye level, medium-wide shot: [subject] stands at the center back as the peak of a triangle while [subject B] and a third person sit lower at front left and front right.","runway":"Medium-wide shot, eye level, locked-off camera; [subject] standing center background at the top of a triangle, [subject B] and a third person seated at front left and front right."},"links":[{"label":"melies — triangular composition","url":"https://melies.co/cinematic-techniques/composition/triangular-composition"},{"label":"grokfilm — triangular composition","url":"https://grokfilm.app/#t/triangular-composition"}]},{"id":"repetition-pattern","group":"composition","name":"Repetition and pattern","aliases":["Repetition and Pattern","repetition","pattern","rhythm of shapes"],"definition":"The frame fills with repeated shapes — windows, columns, seats, people in uniform — so the rhythm itself becomes the image, often with one element breaking it.","use":"Conformity against the individual, the scale of industry or crowds, architectural beauty, satisfying product grids.","misuse":"Too few repeats look like coincidence; a pattern with no break and no subject feels like wallpaper.","clause":"Repetition and pattern: [subject] in a yellow coat sits in one seat of an empty stadium whose identical blue seats run in rows to every frame edge, wide frontal shot, camera static.","adapters":{"veo":"Wide frontal shot, static camera: rows of identical blue stadium seats fill the frame to every edge, [subject] in a yellow coat sitting alone in one of them.","kling":"[subject] in a yellow coat sits alone in an empty stadium. Wide frontal shot, static camera, rows of identical blue seats filling the frame to every edge.","seedance":"镜头1：全景，固定镜头 — frontal view of rows of identical blue stadium seats filling the frame to every edge; [subject] in a yellow coat sits alone in one seat, breaking the pattern.","hailuo":"[subject] in a yellow coat sits alone among rows of identical blue stadium seats that fill the frame [Static shot].","luma":"Static camera, wide frontal shot: rows of identical blue stadium seats fill the frame edge to edge, and [subject] in a yellow coat sits alone in one of them.","runway":"Wide shot, eye level, frontal, locked-off camera; rows of identical blue stadium seats filling the frame to every edge, [subject] in a yellow coat alone in one seat."},"links":[{"label":"melies — repetition pattern","url":"https://melies.co/cinematic-techniques/composition/repetition-pattern"},{"label":"grokfilm — repetition and pattern","url":"https://grokfilm.app/#t/repetition-and-pattern"}]},{"id":"figure-ground","group":"composition","name":"Figure-ground","aliases":["Figure-Ground","Figure-Ground Relationship","figure ground","subject separation"],"definition":"The subject (the figure) separates clearly from what lies behind it (the ground) through contrast of tone, color, focus or texture, so the eye finds it at once.","use":"Thumbnails and vertical video, product hero shots, crowded scenes where one person must pop, readable silhouettes.","misuse":"A subject the same tone and color as its background disappears however sharp it is; separating it only with heavy blur looks like a portrait-mode cutout.","clause":"Figure-ground: [subject] in a white shirt stands against a deep, shadowed green ivy wall in a medium shot, the bright figure clearly separated from the dark ground, camera static at eye level.","adapters":{"veo":"Medium shot, static camera at eye level: [subject] in a white shirt against a deep shadowed green ivy wall, the bright figure standing clearly apart from the dark background.","kling":"[subject] in a white shirt stands against a dark green ivy wall. Medium shot, static camera, strong separation between the bright figure and the shadowed background.","seedance":"镜头1：中景，固定镜头 — [subject] in a white shirt against a deep shadowed green ivy wall; the bright figure clearly separated from the dark background.","hailuo":"[subject] in a white shirt stands out against a deep shadowed green ivy wall [Static shot].","luma":"Static camera at eye level, medium shot: [subject] in a white shirt stands against a deep shadowed ivy wall, the bright figure clearly separated from the dark green background.","runway":"Medium shot, eye level, locked-off camera; [subject] in a white shirt against a deep shadowed green ivy wall, the bright figure cleanly separated from the dark ground."},"links":[{"label":"melies — figure ground","url":"https://melies.co/cinematic-techniques/composition/figure-ground"},{"label":"grokfilm — figure-ground relationship","url":"https://grokfilm.app/#t/figure-ground-relationship"}]},{"id":"tonal-contrast","group":"composition","name":"Tonal contrast","aliases":["Tonal Contrast","Contrast","light-dark contrast","value contrast"],"definition":"Composition by light and dark: the brightest and darkest areas are placed on purpose so value, rather than color, leads the eye.","use":"Drama and mood, black-and-white work, graphic poster frames, steering attention without moving the camera.","misuse":"Raising contrast in the grade only deepens what is already there — if the staging puts mid-gray everywhere there is nothing to contrast. Low-key is a lighting choice; tonal contrast is about where the values sit in the frame.","clause":"Tonal contrast: [subject] in a black coat stands in a bright white snowfield in a wide shot, a single dark tree on the far left echoing their dark shape, camera static at eye level.","adapters":{"veo":"Wide shot, static camera at eye level: [subject] in a black coat in a bright white snowfield, a single dark tree on the far left echoing the dark figure.","kling":"[subject] in a black coat stands in a bright white snowfield. Wide shot, static camera, strong light-dark contrast, a single dark tree on the far left.","seedance":"镜头1：全景，固定镜头 — [subject] in a black coat in a bright white snowfield, a single dark tree on the far left; strong light-dark contrast.","hailuo":"[subject] in a black coat stands in a bright white snowfield, a lone dark tree far left [Static shot].","luma":"Static camera at eye level, wide shot: [subject] in a black coat stands in a bright white snowfield while a single dark tree on the far left echoes the dark shape.","runway":"Wide shot, eye level, locked-off camera; [subject] in a black coat in a bright white snowfield, a lone dark tree at the far left, strong value contrast."},"links":[{"label":"melies — contrast composition","url":"https://melies.co/cinematic-techniques/composition/contrast-composition"},{"label":"grokfilm — contrast","url":"https://grokfilm.app/#t/contrast"}]},{"id":"aspect-ratio-switch","group":"composition","name":"Aspect ratio switch","aliases":["Ratio Switch","aspect ratio change","expanding frame","frame expands"],"definition":"The shape of the frame changes during the piece — bars slide open, a boxy frame widens to full screen — to mark a shift in time, mood or scale.","use":"Flashback to present, a world opening up, the big reveal or the chorus drop, a story moving from phone footage to a full film frame.","misuse":"Models do not animate bars reliably, so render the clip full-frame (or each section at its own ratio) and animate the mask in the edit; bars that ignore the composition crop heads.","clause":"Aspect ratio switch: [subject] stands centered on a cliff edge in a wide shot composed for a 4:3 window, the landscape on both sides kept clean and balanced so the edit can widen the frame to full 16:9 on the reveal, camera static.","adapters":{"veo":"Wide shot, static camera: [subject] stands on a cliff edge at the center of the frame, the landscape on both sides clean and balanced so the frame can widen from a 4:3 window to full 16:9 in the edit.","kling":"[subject] stands on a cliff edge. Wide shot, static camera, the subject centered with clean balanced landscape on both sides, ready to widen from 4:3 to 16:9 in the edit.","seedance":"镜头1：全景，固定镜头 — [subject] centered on a cliff edge, the landscape on both sides clean and balanced so the frame can open from 4:3 to 16:9 in the edit.","hailuo":"[subject] stands centered on a cliff edge, clean balanced landscape on both sides for a frame that widens in the edit [Static shot].","luma":"Static camera, wide shot: [subject] stands centered on a cliff edge with clean, balanced landscape on both sides, composed so the edit can widen a 4:3 window to full 16:9.","runway":"Wide shot, eye level, locked-off camera; [subject] centered on a cliff edge, clean balanced landscape left and right, composed for a frame that widens from 4:3 to 16:9 in the edit."},"links":[{"label":"eyecannndy — ratio switch","url":"https://eyecannndy.com/technique/aspect-ratio-switch"},{"label":"melies — ratio switch","url":"https://melies.co/cinematic-techniques/effects/ratio-switch"}]},{"id":"academy-ratio","group":"composition","name":"Academy ratio","aliases":["1.37:1","1.33:1","4:3","Academy","boxy frame","Aspect Ratio"],"definition":"A nearly square frame, 1.37:1 (or the close 1.33:1, 4:3), that favors faces, height and vertical staging over horizons.","use":"Period and archival feel, intimate character studies, confinement, portraits and full figures, retro TV and home-video looks.","misuse":"Pillarboxing a 16:9 render in the edit crops a composition built wide and leaves the subject off balance; request 4:3 through the model's aspect_ratio option when it has one, otherwise compose for a centered 4:3 crop.","clause":"Academy ratio: [subject] stands centered in a tall doorway in a full shot composed for a 4:3 frame, head near the top and feet near the bottom, the narrow room around them, camera static at eye level.","adapters":{"veo":"Full shot, static camera at eye level, composed for a centered 4:3 crop: [subject] stands in a tall doorway, head near the top and feet near the bottom of the frame.","kling":"[subject] stands in a tall doorway. Full shot, static camera, 4:3 framing, the figure centered with head near the top and feet near the bottom.","seedance":"镜头1：全景，固定镜头 — [subject] centered in a tall doorway, head near the top and feet near the bottom, composed for a 4:3 frame.","hailuo":"[subject] stands centered in a tall doorway, head near the top and feet near the bottom of a 4:3 frame [Static shot].","luma":"Static camera at eye level, full shot composed for 4:3: [subject] stands centered in a tall doorway, head near the top of the frame and feet near the bottom.","runway":"Full shot, eye level, locked-off camera, 4:3 aspect ratio; [subject] centered in a tall doorway, head near the top and feet near the bottom."},"links":[{"label":"shot.cafe — aspect: 1.37 : 1","url":"https://shot.cafe/aspect/1.37%20%3A%201"},{"label":"grokfilm — aspect ratio","url":"https://grokfilm.app/#t/aspect-ratio"}]},{"id":"imax-frame","group":"composition","name":"IMAX tall frame","aliases":["IMAX","1.43:1","1.90:1","expanded IMAX ratio","tall large-format frame"],"definition":"A tall large-format frame — about 1.43:1, or 1.90:1 on digital large-format screens — that shows far more height than widescreen, so skies, towers and full figures fill the view.","use":"Spectacle and scale: launches, mountains, skyscrapers, flight; moments meant to overwhelm; vertical action inside a horizontal frame.","misuse":"Calling it IMAX without changing the ratio or the staging does nothing, and letterboxing a 16:9 render throws away the height that defines it; request the closest supported aspect_ratio and compose for the tall frame.","clause":"IMAX tall frame: [subject] stands small at the bottom center of a full-height view of a rocket on its launch pad, the rocket rising through the upper two-thirds into open sky, composed for a 1.43:1 frame, camera static at a low angle.","adapters":{"veo":"Wide shot from a low angle, static camera, composed for a tall 1.43:1 frame: [subject] small at the bottom center, a rocket on its launch pad rising through the upper two-thirds into open sky.","kling":"[subject] stands below a rocket on its launch pad. Wide low angle shot, static camera, tall framing, the subject small at the bottom center and the rocket filling the upper two-thirds.","seedance":"镜头1：大全景，固定镜头 — low angle: [subject] small at the bottom center, a rocket on its launch pad rising through the upper two-thirds into open sky; tall 1.43:1 composition.","hailuo":"[subject] stands small at the bottom center below a rocket on its launch pad that rises into open sky [Static shot].","luma":"Static camera from a low angle, wide shot composed for a tall frame: [subject] small at the bottom center, a rocket on its launch pad towering through the upper two-thirds into open sky.","runway":"Wide shot, low angle, locked-off camera, 1.43:1 framing; [subject] small at the bottom center, a rocket on its launch pad rising through the upper two-thirds into open sky."},"links":[{"label":"shot.cafe — aspect: 1.90:1","url":"https://shot.cafe/aspect/1.90%3A1"},{"label":"grokfilm — imax","url":"https://grokfilm.app/#t/imax"}]}],"prompts":[{"id":"x-2114924064917921938","model":"chatgpt_images","modelLabel":"ChatGPT Images","kind":"image","madeOn":"ChatGPT Projects","title":"Send '6-1-2' to get the same AI model in a new scene","format":"consistent-character system: numbered pose/background/outfit sheets","prompt":"[Setup: 4 sheets in a ChatGPT project]\nやってることはシンプルで、最初に4枚の「シート」を作っておくだけ\n\n①モデル（顔・体型・表情）\n②ポーズ（番号付き）\n③背景（番号付き）\n④服装（番号付き）\n\nこれをChatGPTのプロジェクトに入れておく\n\n[Usage]\nあとは新しいチャットで\n\n「6-1-2」\n\nって送るだけ\n\n→ ポーズ6番・背景1番・服装2番で、同じ顔の子が出てくる\n\n毎回長いプロンプト書かなくていいし、顔もブレにくい\n\n[Project instructions]\n【添付シート】\n①モデル（MODEL-A）②ポーズ（1〜20）③背景（1〜12）④服装（1〜12）\n\n【入力形式】\n「ポーズ-背景-服装」の番号3つ（例：6-1-2）\n「ランダム」なら各シートから番号を選び、最初に「ポーズ6／背景1／服装2」と1行書いてから生成する\n\n【生成ルール】\n・人物は必ず①のMODEL-A。顔・髪型・泣きぼくろの位置・体型・頭身を①から一切変えない\n・ポーズは②の指定番号の姿勢を、自然な人物の動きとして再現する（人形の関節の形はそのまま写さない）\n・背景は③の指定番号の場所。人物のサイズと遠近感を背景に合わせる\n・服装は④の指定番号のコーデをMODEL-Aの体型に合わせて着せる\n・仕上がりはスマホで撮った自然なスナップ写真。縦長9:16\n・説明文は不要。画像のみ返す\n\nポイントは「顔・髪型・ほくろ・体型を①から一切変えない」って明記すること\nこれ書かないと普通に別人になる","promptSource":"thread","inputs":"4 sheets uploaded to a ChatGPT project: model (face/body), poses 1-20, backgrounds 1-12, outfits 1-12","structure":["【添付シート】 attached sheets","【入力形式】 input format: pose-background-outfit numbers","【生成】 generation rules (never change face/hair/moles/body)","output: natural phone snapshot 9:16, image only"],"techniques":["numbered reference sheets","project instructions as reusable prompt","3-number shorthand","identity lock rule"],"styles":["ugc-selfie-influencer","phone-snapshot-realism"],"url":"https://x.com/mercymercy1717/status/2114924064917921938","author":"mercymercy1717","date":"2026-10-27","stats":{"views":149816,"likes":789,"retweets":59,"bookmarks":1210,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2114923954712510464/vid/avc1/590x1280/fAD1pG0-9elpyjVf.mp4?tag=29","poster":"https://pbs.twimg.com/amplify_video_thumb/2114923954712510464/img/LC32cwzLjMY7i-Xq.jpg","w":590,"h":1280}],"why":"Turns character consistency into a 3-number command; posted today (2026-10-27) and already 789 likes, 1,210 bookmarks (1.53), 150k views."},{"id":"x-2114585881059459119","model":"gpt_image_2_5","modelLabel":"GPT Image 2.5","kind":"image","madeOn":"ChatGPT","title":"Photo to 3D knitted art toy bust (GPT Image 2.5)","format":"photo restyle: 3D knitted stop-motion puppet / textile designer-toy bust, 1:1","prompt":"Task: Create a 1:1 Square 3D Textile Art Toy Bust from the Attached Real Photograph\n\nUse the attached real photograph to create a square 1:1, stylized 3D textile art toy bust. Interpret the inputs by their roles: the real photograph is the source of identity and content, while the minimalist white-background toy image is the style reference. Their order does not matter.\n\nPreserve the subject’s identity, facial expression, pose, and spatial relationships between objects. Reconstruct the subject as an exaggerated, humorous designer collectible toy. Do not apply a simple fuzzy or plush filter to the original photograph.\n\n## 1. Style Reference\n\nBorrow only these visual characteristics from the reference image:\n\n- An oversized, horizontally broad head with rounded corners.\n- Extremely small, centrally concentrated facial features with generous facial negative space.\n- Sculptural knitted forms, clustered yarn shapes, and soft textile construction.\n- Subtle asymmetry for a handmade, designer-toy appearance.\n- Contrast between fine-grained flocked surfaces and chunky knitted textures.\n- A deliberate primary and accent color hierarchy.\n- Clean, minimalist white studio photography.\n\nDo not inherit the reference character’s body, pose, hairstyle, hat, glasses, clothing, props, or colors.\n\n## 2. Subject and Identity Preservation\n\nThe real photograph is the exclusive source of visible content. Reproduce only the body parts, hairstyle, clothing, accessories, objects, poses, and contact relationships that are actually visible in the original image. Never invent or complete details that extend beyond the photograph.\n\nIdentify 2–5 distinctive identity anchors from the source image. Exaggerate 1–2 of them while simplifying the remaining details to maintain recognizability.\n\n- **Head:** Transform it into a broad, thick, rounded rectangular block or a short cylindrical form with softened corners.\n- **Eyes:** Use tiny black beads or capsule-shaped forms.\n- **Nose:** Reduce it to a small, rounded rectangular block.\n- **Mouth:** Preserve the original expression using a short line or a small opening, as appropriate.\n- **Hair:** Reconstruct it as large yarn loops, chunky knitted clusters, or sculptural bundles of wool.\n- **Hands:** Strictly preserve the number of visible hands. If no hands are visible, add none. If one hand is visible, reproduce only one. Preserve its orientation, sleeve cuff, and contact with the original object.\n- **Text and logos:** Convert any visible lettering or branding into illegible woven or knitted texture rather than readable text.\n\n## 3. Composition\n\nCreate a compact, close-up head-and-shoulders composition.\n\n- The head should occupy approximately 75–90% of the image width.\n- Compress the body into a small supporting form, retaining only the essential visible pose, gestures, and objects.\n- Allow elements to be cropped by the image boundaries when necessary.\n- Do not add body parts or anatomy extending beyond the original photograph.\n- Maintain a clear silhouette and recognizable relationships between the subject and any visible objects.\n\n## 4. Visual Style\n\n**Stylized 3D textile art toy, oversized head, tiny concentrated facial features, sculptural knitted forms, micro-flocked surfaces.**\n\nPrioritize abstract exaggeration over photorealism while preserving recognizability through the subject’s silhouette, hairstyle, facial expression, pose, clothing, and visible objects.\n\nThe result should feel like a thoughtfully designed, premium collectible art toy rather than a conventional 3D cartoon character.\n\n## 5. Color Palette\n\nAutomatically develop a cohesive palette of 3–5 colors, including:\n\n- A dominant primary color.\n- A contrasting accent color with a clear difference in temperature or brightness.\n- One or more supporting colors.\n- A neutral color for balance.\n\nNon-identity-defining elements may be recolored to improve visual harmony. Preserve the essential identity cues of the original subject while avoiding monotonous palettes, excessive neutrals, evenly distributed rainbow colors, or repetitive mechanical stripes.\n\n## 6. Materials, Texture, and Lighting\n\nUse distinct textile treatments for different surfaces:\n\n- **Face, hands, and small components:** Fine, dense micro-flocked or short-fiber felt surfaces.\n- **Hair, hats, and clothing:** Chunky knitting, crochet structures, large yarn loops, and clustered wool forms, applied only where those elements exist in the original photograph.\n\nCreate visible material contrast between the fine-grained felt and the coarser knitted structures. The surfaces should appear sculpted from real textile materials, not covered with a generic fuzzy filter.\n\nUse a subtly warm-white seamless background, soft high-key studio lighting, gentle highlights, and short, delicate shadows. Keep the presentation clean, bright, and premium.\n\n## 7. Strict Exclusions\n\n- No photorealistic eyeballs, detailed nostrils, realistic lips, natural skin texture, or individual hair strands.\n- No copying the reference character’s identity or distinctive design elements.\n- No invented body parts, hand gestures, accessories, clothing, or props absent from the source photograph.\n- No conventional 3D cartoon aesthetics.\n- No plastic, polymer clay, wax figure, or long-pile plush appearance.\n- No readable text, logos, or branding.\n- No rooms, environmental scenes, or complex backgrounds.\n- No generic fuzzy overlay that obscures the underlying sculptural textile construction.\n\n## Final Priority\n\n**The source photograph determines WHAT is depicted. The style reference determines HOW it is depicted.**\n\nDeliver a polished, humorous, exaggerated 1:1 square 3D textile art toy bust with a distinctive oversized head, tiny facial features, sculptural yarn construction, contrasting textile textures, a deliberate color palette, and clean white studio lighting. Preserve the original subject’s identity and visible content without inventing anything beyond the photographic evidence.","promptSource":"post","inputs":"your own portrait photo plus a minimalist white-background designer-toy style reference","structure":["TASK","STYLE REFERENCE","SUBJECT AND IDENTITY PRESERVATION","COMPOSITION","VISUAL STYLE","COLOR PALETTE","MATERIALS, TEXTURE, LIGHTING","STRICT EXCLUSIONS"],"techniques":["upload-your-photo template","two-image roles (identity vs style)","identity anchors","negative instructions"],"styles":[],"url":"https://x.com/oggii_0/status/2114585881059459119","author":"oggii_0","date":"2026-10-26","stats":{"views":21340,"likes":326,"retweets":35,"bookmarks":205,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HViEf1naIAA2CAh.jpg?name=orig"},{"type":"photo","url":"https://pbs.twimg.com/media/HViEfy1bAAA1V0J.jpg?name=orig"},{"type":"photo","url":"https://pbs.twimg.com/media/HViEfzLbAAAX1or.jpg?name=orig"}],"why":"Upload-your-photo hook with a cute collectible-toy result; 326 likes and 205 bookmarks (0.63 saves per like) in a day."},{"id":"x-2102724961408626735","model":"gpt_image_2_5","modelLabel":"GPT Image 2.5","stack":"GPT Image 2.5 (also Gemini/Grok)","kind":"image","madeOn":"ChatGPT","title":"Photo-to-watercolor split travel poster","format":"photo restyle: half photo, half watercolor illustration","prompt":"Create a refined editorial travel-art composition based on a reference photograph. The image is divided vertically into two parts: the upper section is a realistic cinematic travel photograph, while the lower section transforms the exact same scene into a delicate hand-painted watercolor illustration.\nUpper section: authentic candid travel photography, natural daylight, soft shadows, subtle film grain, realistic textures, sophisticated European atmosphere, documentary-style composition, people naturally walking through the scene, beautiful architectural details, slightly muted elegant colors, high-end travel magazine photography.\nLower section: a minimalist handmade watercolor painting of the exact same scene, preserving the recognizable composition, architecture, people, poses, perspective and major visual elements from the photograph. Loose translucent watercolor washes, delicate ink details, visible paper texture, soft edges, imperfect brushwork, subtle pigment bleeding, airy negative space, understated pastel tones, artistic but realistic.\nLeave generous warm ivory/off-white textured paper space surrounding the watercolor illustration. Add a small elegant handwritten caption near the bottom, such as “summer days” or “a quiet afternoon”, with a thin minimalist horizontal line underneath.\nOverall aesthetic: luxury travel journal, fine-art watercolor postcard, contemporary editorial design, nostalgic European summer, understated elegance, tactile handmade paper, sophisticated and serene.\nPortrait orientation, clean composition, premium art direction, no clutter, no borders, natural proportions, highly detailed photograph transitioning into an airy watercolor illustration.","promptSource":"thread","inputs":"your own uploaded photo","structure":["TASK","LAYOUT (upper photo / lower illustration)","STYLE","FINISH LINE"],"techniques":["upload-your-photo template","split composition","medium transition (photo -> watercolor)","5-step how-to hook"],"styles":["watercolor-travel-journal","editorial-art-poster"],"url":"https://x.com/MahnoorAi12/status/2102724961408626735","author":"MahnoorAi12","date":"2026-09-23","stats":{"views":226437,"likes":2264,"retweets":462,"bookmarks":2845,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HS5gnBVaEAAOUnE.jpg?name=orig","w":1086,"h":1448},{"type":"photo","url":"https://pbs.twimg.com/media/HS5gnBRaEAAkLbj.jpg?name=orig","w":1086,"h":1448}],"why":"Numbered 'open app, upload, paste' hook plus a reusable photo template; 2,264 likes and 2,845 bookmarks (1.26). Identical post by KrishnaBio1 next day got 1,722 likes / 2,337 saves.","alsoAt":["https://x.com/KrishnaBio1/status/2102911434443444266","https://x.com/KrishnaBio1/status/2103047854205886949"]},{"id":"x-2101353488408006830","model":"gpt_image_2_5","modelLabel":"GPT Image 2.5","kind":"image","madeOn":"Adobe Firefly Boards","title":"Turn your pet into a printable papercraft cube toy","format":"pet photo -> papercraft template + mockup","prompt":"Use my uploaded pet photo as the only source of the animal’s appearance. Create a realistic printable papercraft cube toy template of my pet, preserving 100% its identity and unique features: fur color, fur pattern, eyes, face shape, ears, body proportions, markings and expression.\n\nTransform my pet into a handmade paper craft 3D model (low-poly cube style) like a DIY papercraft template. Show the unfolded cut-out template pieces laid flat on a white background: head, body, legs, ears and tail separated, with folding lines, tabs and cutting edges clearly visible.\n\nThe printed texture on the paper pieces must use my pet’s real fur texture and colors, so when assembled it becomes a small cube-shaped 3D figure of my exact pet.\n\nInclude:\n\ncube-shaped head with my pet’s real face on it\n\ncube-shaped body with realistic fur texture\n\nfour legs matching my pet’s appearance\n\nears with correct shape and inner ear details\n\ntail matching my pet’s size and color pattern\n\nStyle: realistic papercraft template, high-quality product photography, clean white background, detailed printable craft design, sharp edges, realistic fur texture printed on paper.\n\nDo not change my pet’s appearance. Do not turn it into a different animal, cartoon, plush toy or generic cat/dog. It must look like my actual pet converted into a cube papercraft model","promptSource":"thread","inputs":"uploaded pet photo","structure":["SOURCE LOCK","TEMPLATE LAYOUT","MOCKUP","DO NOT CHANGE"],"techniques":["identity lock for pets","printable template","negative instructions"],"styles":["papercraft-cutout"],"url":"https://x.com/icreatelife/status/2101353488408006830","author":"icreatelife","date":"2026-09-19","stats":{"views":104879,"likes":1178,"retweets":144,"bookmarks":1151,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HSmB2wuXgAA7IMD.jpg?name=orig","w":1086,"h":1448}],"why":"Universal pet hook plus a fun physical-craft output; 1,178 likes / 105k views, bookmarks almost equal likes (0.98)."},{"id":"x-2112737725430554781","model":"gpt_image_2_5","modelLabel":"GPT Image 2.5","kind":"image","madeOn":"ChatGPT","title":"6-photo candid portrait collage in a 3x2 grid","format":"lifestyle photo collage / AI influencer set","prompt":"Create an ultra-realistic 6-photo portrait collage arranged in a seamless 3×2 grid, featuring a naturally beautiful young Portuguese woman in her early 20s. She has warm olive-toned skin, expressive hazel-brown eyes, long chestnut-brown hair with subtle natural highlights, soft face-framing layers, naturally full eyebrows, and delicate, distinctive facial features. Her appearance should feel authentic and individual, with realistic skin texture, tiny imperfections, and minimal everyday makeup.\n\nVisual aesthetic: Effortless European Instagram photo dump, reminiscent of candid photographs taken on a Canon PowerShot G7 X Mark III. Direct built-in camera flash, crisp details, bright facial highlights, hard shadows, slightly imperfect framing, subtle digital noise, and a nostalgic early-2000s point-and-shoot feel.\n\nSetting and styling: A warm off-white bedroom wall with subtle texture, a few natural shadows, and no distracting decorations. She wears a fitted burgundy scoop-neck top, tiny gold hoop earrings, and a delicate necklace. Her makeup is understated, with softly flushed cheeks, natural glossy lips, and lightly defined lashes. Her long hair remains the same color and length but falls differently in every photograph.\n\nSix distinct photographs:\n\n1. Sweet candid: Sitting close to the camera, resting her cheek against one hand, smiling gently with relaxed eyes and loose hair framing her face.\n2. Playful snapshot: Looking directly into the lens with a mischievous half-smile, one eyebrow slightly raised, fingers casually tucked behind her ear.\n3. Messy-girl moment: Eyes closed and laughing softly, both hands lifting her hair away from her shoulders, a few loose strands catching the flash.\n4. Effortless confidence: Turning her face over one shoulder, giving the camera a subtle side-eye, with one hand lightly resting against her neck.\n5. Caught laughing: Looking toward someone outside the frame, laughing naturally with her head tilted to the side and hair falling across one cheek.\n6. Quiet evening mood: Leaning against the wall, gazing thoughtfully into the lens, lips relaxed, fingertips gently twisting a strand of hair.\n\nIdentity consistency: The same Portuguese woman must appear in all six frames, with identical facial proportions, eye color, skin tone, hair color, and recognizable features. Each photograph should have a different pose, expression, head angle, and hair arrangement, as if captured within the same casual photo session.\n\nPhotography details: Realistic compact-camera flash, authentic skin pores, fine baby hairs, natural facial asymmetry, believable hands, sharp eyes, slight variations in exposure, and candid framing. Avoid excessive retouching, artificial skin smoothing, exaggerated beauty standards, duplicated expressions, malformed fingers, distorted anatomy, or the overly polished appearance of AI-generated portraits.\n\nOutput: Vertical 3:4 aspect ratio, exactly six photographs in a balanced 3-column × 2-row grid, clean alignment, no gutters, no text, no watermark. Photorealistic, youthful, spontaneous, intimate, and effortlessly stylish.","promptSource":"post","structure":["GRID SPEC","CHARACTER (age, skin, eyes, hair)","6 FRAMES described","CAMERA/LIGHT","FORMAT + no text"],"techniques":["multi-frame grid in one image","consistent character across frames","phone-photo realism"],"styles":["phone-snapshot-realism"],"url":"https://x.com/john_my07/status/2112737725430554781","author":"john_my07","date":"2026-10-21","stats":{"views":30943,"likes":649,"retweets":59,"bookmarks":719,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HVHzwmuakAAKdjt.jpg?name=orig","w":1086,"h":1448}],"why":"Photo-dump grids give 6 consistent shots in one generation; 649 likes, 719 bookmarks (1.11)."},{"id":"x-2100067049288634730","model":"gpt_image_2_5","modelLabel":"GPT Image 2.5","kind":"image","title":"Halftone / ASCII architectural travel-collage poster","format":"landmark photo -> design poster","prompt":"Turn this structure photo into a single high-end halftone architectural travel-collage poster. Output one poster per uploaded photo — never merge multiple structures or photos into one frame.\n\nFORMAT\n\n3:4 vertical canvas. Split into two roughly equal zones — real architectural photo on top, printed reconstruction below — divided by one clean, sharp horizontal line.\n\nDo not stretch, warp, tilt, or unnaturally reposition the structure to force the proportions.\n\nTOP HALF — THE REAL SHOT\n\nPreserve the original structure faithfully: same architecture, proportions, perspective, distinctive details, surrounding elements, natural light and shadow, and original color mood.\n\nKeep recognizable features such as:\n\n* façade\n* windows and arches\n* towers or domes\n* doors and structural details\n* roofline\n* surrounding landscape or street elements\n\nAdd only a subtle high-end color grade and the faintest film grain. Do not redesign or reinterpret the architecture.\n\nBOTTOM HALF — THE PRINTED RECONSTRUCTION\n\nRebuild the same structure as an experimental printed architectural collage using:\n\ntorn photographic fragments + fixed-width ASCII character fields + photocopy halftone dots + architectural linework.\n\nThe structure must remain immediately recognizable.\n\n* Torn-edge photographic fragments preserve the most important architectural details.\n* Brick, stone, glass, metal, shadows, windows, and surrounding textures gradually dissolve outward into ASCII characters, black halftone dots, fragmented print grain, and fine architectural drafting lines.\n* Use thin technical construction lines to subtly trace the structure’s geometry.\n* Let selected areas break apart into paper fibers and halftone fragments, creating the feeling that the building is emerging from an archival print.\n* Keep the main silhouette strong and readable.\n* Texture: rough white paper-fiber edges, subtle photocopy imperfections, slight print misregistration, faded ink, old-paper stains, a few restrained crop marks, and one small red calibration bar.\n* Color: warm gray old-paper background + black ink + the structure’s original muted colors + a single restrained red accent.\n* Never fully desaturate the structure.\n\nThe structure should occupy roughly 60–88% of the frame width, scaled according to what reads best for the architecture.\n\nLeave 22–38% of the paper visibly untouched and empty, creating generous negative space so the poster feels like an archival architectural specimen rather than a packed digital screen.\n\nTYPOGRAPHY\n\nAdd one clean, readable fixed-width architectural title based on the structure:\n\n[STRUCTURE NAME]\n\nBelow it include:\n\n[CITY, COUNTRY]\nREC. STUDY 01\n\nAdd one short observational caption related to the architecture, such as:\n\n“A monumental study in geometry, time, and place.”\n\nTypography should feel like an old architectural archive mixed with an underground experimental design journal.\n\nA few loose ASCII glyphs may trace the outer silhouette or architectural edges as texture only — never use ASCII to invent windows, doors, structural details, or technical specifications.\n\nMOOD\n\nEarly digital systems × analog photocopy × architectural archive × underground zine × modern travel editorial.\n\nThe structure should feel like it is surfacing from an old printed document — half photograph, half architectural drawing, half experimental print.\n\nSophisticated, minimal, tactile, intellectual, slightly mysterious, and highly collectible.\n\nAVOID\n\nSolid black terminal backgrounds, dense walls of code, cyberpunk neon, excessive ASCII, distorted architecture, impossible geometry, invented architectural details, fake technical specifications, random symbols with no meaning, garbled text, excessive colors, brand logos, QR codes, watermarks, author credits, or tourist-poster clichés.\n\nPriority: Preserve the structure’s identity and architectural accuracy first. The experimental halftone/ASCII treatment should enhance the architecture, not hide it.","promptSource":"post","inputs":"uploaded photo of a building/landmark","structure":["PROMPT","FORMAT","LAYOUT","HALFTONE/ASCII TREATMENT","TYPOGRAPHY","AVOID","PRIORITY"],"techniques":["one poster per uploaded photo","sectioned caps headers","priority rule","avoid list"],"styles":["risograph-grain-print","editorial-art-poster"],"url":"https://x.com/Naiknelofar788/status/2100067049288634730","author":"Naiknelofar788","date":"2026-09-16","stats":{"views":73323,"likes":497,"retweets":54,"bookmarks":550,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HSTv0vSbMAIlKIL.jpg?name=orig","w":2048,"h":2048},{"type":"photo","url":"https://pbs.twimg.com/media/HSTv0vUbEAAVWQ2.jpg?name=orig","w":2048,"h":2048},{"type":"photo","url":"https://pbs.twimg.com/media/HSTv0vXbwAE1hh4.jpg?name=orig","w":1080,"h":1080}],"why":"Design-forward poster recipe that works on any landmark photo; 497 likes, 550 bookmarks (1.11)."},{"id":"x-2103696195000709627","model":"gpt_image_2_5","modelLabel":"GPT Image 2.5","kind":"image","title":"Selfie -> double-exposure travel silhouette poster","format":"photo restyle: double exposure poster","prompt":"Create a premium travel-themed double-exposure silhouette poster on a clean warm-white background.\n\nA young female traveler is shown in a full-body side-profile walking pose, facing right. She wears a burgundy baseball cap, dark sunglasses, burgundy open shirt over a plain white T-shirt, fitted blue jeans, white sneakers, and a black backpack. Natural confident walking posture, realistic anatomy, photorealistic face and clothing details.\n\nBehind and around the woman, create a large artistic silhouette of a female traveler wearing a baseball cap, filled with a breathtaking travel photograph. Inside the silhouette, show an Indian riverside temple at golden sunset, with a tall detailed historic temple, warm orange sunlight, river reflections, boats, riverside architecture and atmospheric evening light.\n\nThe travel photograph should be perfectly contained inside the silhouette, creating a sophisticated double-exposure / photo-within-silhouette effect. Add expressive burgundy, navy-blue and pale watercolor ink splashes spreading naturally from the bottom edges of the composition, blending with the silhouette and travel scene.\n\nComposition: centered vertical poster, full-body traveler in foreground, oversized cap-and-head silhouette behind her, strong visual hierarchy, generous white negative space, balanced professional graphic-design composition.\n\nStyle: luxury travel advertisement, editorial poster design, cinematic photography, photorealistic, high detail, warm golden-hour lighting, realistic water reflections, subtle watercolor texture, premium commercial artwork, clean edges, sophisticated double exposure.\n\nTechnical: ultra-detailed, sharp subject, realistic skin texture, realistic fabric, natural shadows, high dynamic range, professional color grading, 4K, polished advertising artwork.\n\nNegative Prompt:\nblurry, low resolution, distorted face, extra fingers, extra limbs, bad anatomy, duplicate person, warped body, cartoon, anime, 3D render, oversaturated colors, messy composition, excessive text, watermark, logo, artificial-looking skin.","promptSource":"thread","inputs":"your selfie","structure":["PROMPT header","CANVAS","SILHOUETTE + INNER SCENE","PALETTE","TYPOGRAPHY","NEGATIVES"],"techniques":["double exposure","upload-your-photo template","6-step how-to hook"],"styles":["editorial-art-poster"],"url":"https://x.com/Arina_hoqe/status/2103696195000709627","author":"Arina_hoqe","date":"2026-09-26","stats":{"views":34154,"likes":460,"retweets":100,"bookmarks":467,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HTHUe-kbYAAZ_hv.jpg?name=orig","w":880,"h":1168}],"why":"Selfie-to-poster template with numbered steps; 460 likes, 467 bookmarks (1.02)."},{"id":"x-2106990557813968909","model":"gpt_image_2_5","modelLabel":"GPT Image 2.5","kind":"image","madeOn":"ChatGPT","title":"Premium editorial poster from each uploaded photo","format":"photo -> magazine-style editorial poster","prompt":"Premium Editorial Poster Instructions\n\nEach uploaded photo must be made into a separate, independent, premium editorial poster, and multiple photos must not be combined. Use a strict 3:4 vertical canvas. Split the canvas horizontally in the exact center: the upper half and the lower half each occupy 50% of the height, are equally wide, and equally high, with no alteration of proportion.\n\nThe upper half uses the original photo directly and must not be regenerated. Preserve the identity of the main subject, the human body or architectural structure, proportions, perspective, spatial relationships, texture, natural light and shadow, color, and environment in their entirety. Only slight cropping and restrained premium color grading are permitted; re-drawing the main subject, fictional light, HDR, excessive saturation, plastic texture, and fictional content are prohibited. hibited. When needing to adapt to the frame, only environmental areas such as sky, water surface, ground, walls, plants, or background can be extended.\n\nThe lower half extracts and reconstructs the \"narrative core\" of the photo: it can be a single primary subject, or a group of related elements that together embody the photo's identity, scale, action, o story relationship. Maintain its realistic, recognizable appearance, proportion, internal structure, texture, and relative position. Do not remove important related elements, and do not directly us rectangular photo cutouts. The reconstructed subject typically occupies 55%-80% of the width of the lower area. It should naturally extend based on the photo's primary direction and retain plausible ground, water lines, shadows, or softly dissipated edges to integrate into the background, avoiding a sticker-like or floating appearance.\n\nIncorporate a narrow, low-saturation geometric color field behind or through the center of the subject, serving as a \"critical window\" between reality and editorial abstraction. The color of the window must be extracted from the original photo, and its orientation (horizontal, vertical, or diagonal) chosen based on the overall narrative direction.\n\nThe subject must actively pass through the window: part of it is within the color field, and part enters the open negative space, naturally crossing the window's boundary to create occlusion, penetration, and spatial depth. The window is not a frame or a card; it must not fully enclose the subject. Only one primary window is allowed; multiple color blocks, thick borders, rounded corners, strong gradients, and drop shadows are prohibited.\n\nUse a white, cool white, very light gray, or near-white background for the lower half, coordinated with the photo. Employ a restrained asymmetrical composition and abundant negative space to establish a three-tier hierarchy:\n\nReconstructed subject or narrative composition\n\nLow-saturation geometric window","promptSource":"post","inputs":"uploaded photos (one poster each)","structure":["TITLE (Premium Editorial Poster Instructions)","ONE POSTER PER PHOTO","LAYOUT","TYPOGRAPHY","PRESERVATION","AVOID"],"techniques":["instruction-document style prompt","one-per-photo rule","typography spec"],"styles":["editorial-art-poster"],"url":"https://x.com/Ziha_ai/status/2106990557813968909","author":"Ziha_ai","date":"2026-10-05","stats":{"views":15674,"likes":337,"retweets":43,"bookmarks":278,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HT2IoDPbEAA5gwo.jpg?name=orig","w":1086,"h":1448},{"type":"photo","url":"https://pbs.twimg.com/media/HT2IsSRbYAAcil_.jpg?name=orig","w":1086,"h":1448},{"type":"photo","url":"https://pbs.twimg.com/media/HT2IsSUagAAcBiQ.jpg?name=orig","w":1086,"h":1448}],"why":"Another 'turn your photo into a designed poster' template; 337 likes, 278 bookmarks (0.82)."},{"id":"x-2105219509791678731","model":"gpt_image_2_5","modelLabel":"GPT Image 2.5","kind":"image","title":"Low-angle outdoor close-up portrait realism test","format":"photoreal portrait","prompt":"A low-angle, close-up photograph capturing a young woman with wavy brown hair outdoors at dusk. She is wearing a grey cropped t-shirt with a blue and white graphic text that reads 'DESTINED' above 'SET 1958' and black denim bottoms. Her head is tilted, and she is looking directly into the camera lens. The dark blue evening sky serves as the background, with silhouetted tree branches visible at the bottom of the frame. Strong flash lighting is directed from the front, illuminating her face and highlighting strands of her hair. The composition has a grainy film photography aesthetic.","promptSource":"post","structure":["SHOT TYPE (low-angle close-up)","SUBJECT","SETTING/LIGHT","CAMERA/LENS","REALISM CUES"],"techniques":["camera angle first","natural light","skin texture realism"],"styles":["phone-snapshot-realism"],"url":"https://x.com/chatgptpaglu/status/2105219509791678731","author":"chatgptpaglu","date":"2026-09-30","stats":{"views":25480,"likes":318,"retweets":16,"bookmarks":245,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HTc9-qbW8AAWlfy.jpg?name=orig","w":1024,"h":1536}],"why":"Short realism prompt; 318 likes, 245 bookmarks (0.77)."},{"id":"x-2099759367956349012","model":"gpt_image_2_5","modelLabel":"GPT Image 2.5","kind":"image","title":"A full day of selfies as an iPhone Photos screenshot","format":"fake UI screenshot: iPhone Photos library grid","prompt":"Turn the girl from the reference image into a full-day iPhone Photos album screenshot that faithfully recreates the real iPhone “Photos — Library / Today” interface. Keep the top status bar (time, signal, battery), the Library title, the Today label, the photo grid layout, and the bottom tab bar: Library / For You / Albums / Search. The whole image should look like a real phone screenshot.\nThe girl in the reference image is the only subject in the entire album. Every photo keeps the same identity, the same face, the same hairstyle, the same skin tone, the same body proportions, and the same presence. She is a clearly adult young East Asian woman with long black hair, cool-pale skin, refined cool features, and a private, quiet aura.\nThe album is a full portrait camera roll. Every thumbnail shows her. The entire screen is filled with solo portraits of her. The whole set is built around this one person only.\nAll album content is portraits of her: waking-up selfie in bed, selfie under the covers, selfie by the pillow, bathroom-mirror selfie, elevator-mirror selfie, window-side selfie, indoor natural-light selfie, sofa selfie, bedside selfie, after-coming-home selfie, night selfie, close-up face selfie, half-body selfie, full-body mirror selfie, seated solo shot, standing solo shot, side-profile solo shot, looking-back solo shot, indoor hallway solo shot, window-side solo shot, candid bedside shot, chair solo shot, carpet solo shot, and photos taken of her by someone else.\nOutfits change continuously through the day. Morning: milky-white camisole lounge top and light-gray home shorts. Late morning: white slim short-sleeve top and pale blue-gray pleated mini skirt. Noon: black thin-strap top and high-waisted denim shorts. Afternoon: light-gray knit cardigan over a white inner layer and a black mini skirt. Evening: dark-gray blazer, white thin-strap top, and black pleated mini skirt. Night: black fitted mini dress with slim silver accessories. Late night after returning home: loose white T-shirt and soft lounge shorts. Each outfit is clearly different; the clothing changes mark a clear passage of time.\nPhoto mix is fixed at 60% selfies and mirror selfies, 40% solo portraits taken by someone else. Every frame has her as the subject. Every thumbnail keeps real iPhone native-camera texture. Pose, camera distance, angle, expression, lighting, and clothing keep changing.\nThe sequence runs from morning to late night. Morning feels loose and just-woken. Late morning has clear natural light. Afternoon feels like ordinary going-out. Evening has soft city light. Night has low indoor light. Late night feels quiet and private after coming home.\nThe whole set is quiet, private, relaxed, and real. The album forms a dense, continuous solo-portrait look, like a full day of private portrait camera roll saved on her own phone.","promptSource":"post","inputs":"reference image of the person","structure":["TASK (recreate iPhone Photos Library/Today UI)","UI DETAILS","GRID CONTENT (a day of photos)","CONSISTENCY","REALISM"],"techniques":["UI mockup inside image","identity lock across many thumbnails","camera-roll storytelling"],"styles":["phone-snapshot-realism"],"url":"https://x.com/BubbleBrain/status/2099759367956349012","author":"BubbleBrain","date":"2026-09-15","stats":{"views":42042,"likes":310,"retweets":31,"bookmarks":320,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HSPXwyza8AAER2H.jpg?name=orig","w":937,"h":1678}],"why":"The 'iPhone album screenshot' trend in one prompt; 310 likes, 320 bookmarks (1.03), 42k views."},{"id":"x-2102333715795804395","model":"midjourney","modelLabel":"Midjourney","kind":"image","title":"EXCESS: two-code sref for maximalist glam","format":"sref combo drop","prompt":"--sref 1397720772 1539610103","promptSource":"post","structure":["--sref code A code B"],"techniques":["--sref","sref blending"],"url":"https://x.com/AleRVG/status/2102333715795804395","author":"AleRVG","date":"2026-09-22","stats":{"views":33693,"likes":937,"retweets":81,"bookmarks":252,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HSz9SB2W0AA23BX.jpg?name=orig","w":1147,"h":2048},{"type":"photo","url":"https://pbs.twimg.com/media/HSz9SxXXUAAghXW.jpg?name=orig","w":1024,"h":2048},{"type":"photo","url":"https://pbs.twimg.com/media/HSz9UJzWAAAoxxb.jpg?name=orig","w":1147,"h":2048},{"type":"photo","url":"https://pbs.twimg.com/media/HSz9UsEXEAApRk9.jpg?name=orig","w":1147,"h":2048}],"why":"937 likes, 252 bookmarks, 33.7k views for a two-code combo; AleRVG posts sref drops daily."},{"id":"x-2107111449743249649","model":"midjourney_v8_2","modelLabel":"Midjourney V8.2","kind":"image","title":"3D game-character sref + 4 character prompts","format":"sref series: stylized 3D character concepts","prompt":"[Midjourney v8.2 parameters]\n--sref 3016865554\n\nPrompt #1\n3d character, full body, a grizzled middle-aged halfling thief, small stature with curly reddish-brown hair and messy sideburns, a cunning narrow face with a scar across his lip, dark hooded traveling cloak with many hidden pockets, worn brown leather vest, rolled-up trousers, large bare hairy feet, lockpicks and a small curved dagger on his belt, a stolen jeweled goblet in one hand, sly suspicious glance over his shoulder, white background\n\nPrompt #2\n3d character, full body, a young female desert nomad cartographer, wrapped in layered sand-colored linen robes and a long indigo scarf covering her hair, brass goggles resting on her forehead, leather satchels and rolled-up maps strapped all over her body, a compass hanging from her belt, sun-tanned skin with freckles, worn leather sandals with ankle wraps, walking forward while studying an unfolded map, determined expression, white background\n\nPrompt #3\n3d character, full body, a very tall and lanky lighthouse keeper with a long gray beard braided with tiny shells, oversized yellow rubber raincoat dripping with water, heavy black wellington boots, a knitted fisherman's beanie, holding an old brass oil lantern in one hand, a grumpy seagull perched on his shoulder, hunched posture, weathered face with squinting eyes, white background\n\nPrompt #4\n3d character, full body, a feisty 70-year-old grandmother roller derby skater, short curly silver hair under a scratched purple helmet, thick round glasses, knitted cardigan worn over a sporty jersey with the number 82, knee pads covered in stickers, vintage quad roller skates with pink wheels, a mischievous grin, leaning forward mid-skate with one fist raised, white background","promptSource":"thread","structure":["--sref code","'3d character, full body,' + archetype + wardrobe + props"],"techniques":["--sref","fixed prompt opener","character archetype recipe"],"url":"https://x.com/ibexdream/status/2107111449743249649","author":"ibexdream","date":"2026-10-05","stats":{"views":8797,"likes":261,"retweets":23,"bookmarks":236,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2107106662876139520/vid/avc1/1536x2048/aBnKQVBwmK7Dygr8.mp4?tag=29","poster":"https://pbs.twimg.com/amplify_video_thumb/2107106662876139520/img/auufS983YaPBRwyR.jpg","w":720,"h":960}],"why":"Volume 13 of a recurring sref series; 261 likes, 236 bookmarks (0.90). The post's clip was animated with Grok Imagine."},{"id":"x-2109123213351632977","model":"nano_banana_2_1","modelLabel":"Nano Banana 2.1","kind":"image","title":"Textured geometric fashion illustration, full body","format":"editorial fashion illustration","prompt":"Create a stylish, full-body editorial fashion illustration of a young woman in a modern casual outfit, using a minimalist, textured geometric art style. She wears an oversized forest-green hoodie, wide-leg blue denim jeans with folded cuffs, and chunky brown sneakers. Her dark hair is tied in a neat low bun. She carries a bouquet of vibrant pink roses wrapped in white paper, a takeaway coffee cup, and a black shoulder bag. Show her walking naturally in a relaxed pose, viewed from a three-quarter rear angle, with soft, elegant body proportions and simplified facial details.\n\nUse a warm ivory background with plenty of negative space, soft ground shadows, subtle paper grain, visible brush textures, and angular polygonal shading across the clothing and shoes. The color palette features deep forest green, denim blue, warm brown, cream, and vivid pink. Soft diffused lighting, clean composition, contemporary lifestyle magazine aesthetic, hand-painted digital illustration, refined edges, artistic fabric textures, vertical 3:4 composition, high detail. No photorealism, no 3D rendering, no extra objects, no text or watermark.","promptSource":"post","structure":["SUBJECT + STYLE","OUTFIT DETAILS","PALETTE","LIGHT/COMPOSITION","NEGATIVES"],"techniques":["named art style + medium","color palette list","aspect ratio","no-photorealism negatives"],"url":"https://x.com/ChillaiKalan__/status/2109123213351632977","author":"ChillaiKalan__","date":"2026-10-11","stats":{"views":23538,"likes":494,"retweets":51,"bookmarks":465,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HUUcV6QaQAA04oJ.jpg?name=orig","w":1086,"h":1448},{"type":"photo","url":"https://pbs.twimg.com/media/HUUcV6UagAA56wr.jpg?name=orig","w":1086,"h":1448},{"type":"photo","url":"https://pbs.twimg.com/media/HUUcV6PaMAAjdjo.jpg?name=orig","w":1086,"h":1448}],"why":"Clean, reusable fashion-illustration recipe; 494 likes with 465 bookmarks (0.94)."},{"id":"x-2110581440085987751","model":"nano_banana_2_1","modelLabel":"Nano Banana 2.1","kind":"image","title":"Photo + black-ink illustration split editorial poster","format":"photo -> two-part editorial art poster","prompt":"Using the uploaded reference image, create a single high-resolution vertical 2:3 editorial art poster.\n\nDivide the canvas into two perfectly equal horizontal sections, each occupying exactly 50% of the total height. Separate them with a clean, perfectly straight horizontal dividing line.\n\n1. TOP HALF — ORIGINAL REFERENCE PHOTOGRAPH\n\nUse the uploaded reference photograph directly in the upper 50% of the poster.\n\nPreserve its original photographic quality, sharpness, natural lighting, and color relationships.\n\nAllow only subtle, intelligent cropping around the outer edges when necessary, without compromising the main subject.\n\nIf required, naturally extend a small portion of the surrounding environment to fit the composition.\n\nDo not redraw, illustrate, stretch, blur, or modify the subject's appearance, structure, or spatial relationships.\n\nDo not introduce black borders, white margins, or empty edges.\n\n2. BOTTOM HALF — MINIMALIST EDITORIAL ILLUSTRATION\n\nUse a warm, near-white ivory paper background with an extremely subtle paper texture.\n\nAnalyze the main subject and visual story of the uploaded reference image.\n\nExtract only the primary subject, preserving one or two essential identifying elements.\n\nRemove or heavily simplify all secondary details, including background architecture, crowds, vehicles, fences, signs, trees, and other unnecessary elements.\n\nTransform the primary subject into a sophisticated black-ink editorial illustration.\n\nILLUSTRATION STYLE:\n\nUse natural, clean pen strokes with varied line weight.\n\nPreserve an authentic hand-drawn appearance with expressive but controlled linework.\n\nAvoid overly precise engraving aesthetics, excessive internal details, and dense cross-hatching.\n\nPlace a large, nearly pure-black rectangular ink block behind the illustrated subject.\n\nThe rectangular block should have subtly imperfect, handmade print-style edges.\n\nKeep the black background clean, with only fine paper grain and minimal noise.\n\nAvoid obvious hatching, scratches, architectural lines, or complex textures.\n\nILLUSTRATION SCALE AND COMPOSITION:\n\nThe illustrated subject must occupy approximately 72–77% of the canvas width and 58–64% of the bottom section's height.\n\nMaintain a clear visual focal point with generous negative space surrounding the illustration.\n\n3. COLOR RULES\n\nThe bottom illustration must follow a strictly black-and-white color palette by default.\n\nPreserve only one localized accent color if the original reference image contains a clearly distinctive, concentrated color element with meaningful narrative importance.\n\nOrdinary blue skies, green vegetation, stone surfaces, skin tones, and environmental colors must not be treated as accent colors.\n\nAny preserved accent color must remain strictly localized to the relevant subject or area.\n\nNever allow accent colors to spread across the entire illustration.\n\n4. TYPOGRAPHY AND EDITORIAL LAYOUT\n\nAutomatically generate concise, meaningful English typography based on the content of the uploaded reference photograph.\n\nThe typography must resemble handwritten editorial annotations from an independent art publication.\n\nTOP-LEFT CORNER:\n\nGenerate a short handwritten title consisting of 2–5 words, arranged across two lines.\n\nDirectly beneath the title, include three short English action verbs relevant to the photograph.\n\nTOP-RIGHT CORNER:\n\nDisplay only two lines of geographic coordinates:\n\nLatitude\nLongitude\n\nDo not include any additional text in this area.\n\nBOTTOM-LEFT CORNER:\n\nDisplay the location name followed by the word \"DIARY.\"\n\nDirectly beneath it, add one short descriptive English sentence inspired by the photograph.\n\nTYPOGRAPHY STYLE:\n\nUse a rough, upright, slightly irregular handwritten typeface.\n\nMaintain subtle imperfections and a natural editorial annotation aesthetic.\n\nAvoid elegant cursive, calligraphy, overly decorative lettering, and excessively polished typography.\n\n5. FINAL ART DIRECTION\n\nThe finished poster must combine:\n\nAuthentic, high-quality photography.\nMinimalist black-and-white editorial illustration.\nGenerous negative space.\nIndependent art publication aesthetics.\nQuiet, restrained, sophisticated visual storytelling.\nNatural handwritten typography.\nA balanced relationship between documentary realism and expressive hand-drawn artwork.\n\nThe overall result should resemble a carefully designed, collectible editorial art print.\n\n6. FINAL OUTPUT REQUIREMENTS\n\nASPECT RATIO:\n2:3 vertical.\n\nRESOLUTION:\nHigh-resolution, sharp, print-quality output.\n\nCOMPOSITION:\n\nExactly 50% original reference photography on top.\n\nExactly 50% editorial illustration on the bottom.\n\nOne perfectly straight horizontal dividing line.\n\nOne complete, standalone poster.\n\nRESTRICTIONS:\n\nNo collages.\nNo multi-poster layouts.\nNo combined images.\nNo unnecessary decorative elements.\nNo modifications to the original subject's identity or appearance.\nNo excessive illustration details.\nNo changes to the original photograph's natural color relationships.\n\nFINAL GOAL:\n\nCreate a sophisticated, visually balanced editorial art poster that faithfully preserves the uploaded reference photograph while transforming its primary subject into an expressive, minimalist black-ink illustration.","promptSource":"post","inputs":"uploaded reference photo","structure":["TASK (2:3 poster)","LAYOUT (two equal halves)","UPPER: photo preserved","LOWER: black-ink minimalist illustration","TYPOGRAPHY","RESTRICTIONS","FINAL GOAL"],"techniques":["photo fidelity lock","split layout","caps section headers","final-goal summary"],"styles":["editorial-art-poster"],"url":"https://x.com/ChillaiKalan__/status/2110581440085987751","author":"ChillaiKalan__","date":"2026-10-15","stats":{"views":13788,"likes":414,"retweets":50,"bookmarks":334,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HUpKnQMbAAAQPjV.jpg?name=orig","w":1024,"h":1536},{"type":"photo","url":"https://pbs.twimg.com/media/HUpKnQCbIAEbjiA.jpg?name=orig","w":1024,"h":1536}],"why":"Long (5k chars) structured restyle template in the split-poster trend; 414 likes, 334 bookmarks (0.81)."},{"id":"x-2109146295252459682","model":"nano_banana_2_1","modelLabel":"Nano Banana 2.1","kind":"image","title":"Cobalt circle studio fashion editorial","format":"high-end fashion editorial photoshoot","prompt":"Create an ultra-realistic, high-end fashion editorial photoshoot featuring a beautiful young adult woman with short, tousled platinum-blonde bob hair, delicate facial features, fair skin, natural rosy lips, light-colored eyes, and a calm, confident expression.\n\nScene and Environment: A futuristic minimalist architectural studio featuring a massive sculptural circular opening with thick, smooth, curved white walls. The interior of the circular structure is a rich cobalt-blue or vibrant cyan-blue, creating a striking contrast against the white architectural frame. Clean geometric shapes, curved surfaces, and a contemporary art-gallery aesthetic.\n\nOutfit and Styling: The model wears a sophisticated, oversized black knit sweater or elegant black long-sleeved top paired with tailored black or ivory trousers. Minimal makeup, natural skin texture, understated accessories, and effortless luxury styling.\n\nPose and Composition: The model poses naturally within and around the giant circular opening. Create a series of artistic editorial poses: a close-up portrait leaning forward through the circular frame, a full-body seated pose inside the sculptural ring with one knee raised, and a standing or seated three-quarter portrait with one hand resting on the curved white surface. Relaxed hands, graceful posture, elongated silhouette, and direct eye contact with the camera.\n\nLighting: Soft natural daylight entering from one side, creating beautiful directional highlights on the platinum hair, subtle shadows across the face, realistic skin tones, and soft gradients on the white architectural surfaces. Cinematic interplay between cool blue ambient light and warm sunlight.\n\nColor Palette: Vivid cobalt blue, turquoise, icy cyan, pure white, deep black, and platinum blonde. Clean, cool-toned color grading with balanced highlights and rich shadows.\n\nPhotography Style: Luxury fashion magazine editorial, contemporary avant-garde photography, minimalist Scandinavian design, architectural fashion campaign, medium-format camera aesthetics, 85mm portrait lens, subtle depth of field, precise focus on the eyes, realistic hair strands, detailed knit fabric, natural skin texture, sophisticated framing, and premium commercial photography quality.\n\nImage Quality: Photorealistic, ultra-detailed, 8K appearance, professional art direction, anatomically accurate hands, realistic proportions, elegant negative space, clean architectural geometry, natural facial expression, crisp details, refined composition, no artificial-looking skin, no excessive retouching.\n\nVertical portrait composition, 2:3 aspect ratio.","promptSource":"post","structure":["SUBJECT","Scene and Environment","Outfit and Styling","Pose","Lighting","Camera","Style/Negatives"],"techniques":["labeled sections","architectural set design","color-contrast set"],"url":"https://x.com/Emmma___0/status/2109146295252459682","author":"Emmma___0","date":"2026-10-11","stats":{"views":18583,"likes":370,"retweets":48,"bookmarks":267,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HUUxXPHaEAAz-jz.jpg?name=orig","w":896,"h":1344},{"type":"photo","url":"https://pbs.twimg.com/media/HUUxXm9aQAAwzYH.jpg?name=orig","w":896,"h":1344},{"type":"photo","url":"https://pbs.twimg.com/media/HUUxX-qb0AAsy39.jpg?name=orig","w":896,"h":1344}],"why":"Sectioned editorial recipe from the NB 2.1 'Made with... Prompt:' wave; 370 likes, 267 bookmarks (0.72)."},{"id":"x-2107414034538496398","model":"nano_banana_2_1","modelLabel":"Nano Banana 2.1","kind":"image","title":"Second World: photo continues into a paper-cut world","format":"photo -> split poster with hand-drawn continuation + bilingual notes","prompt":"「第二世界」完整 JSON 提示词 v1.2\n上传照片后，将下面整段交给图像模型。每张照片独立生成。\n\n{\n  \"name\": \"第二世界\",\n  \"version\": \"1.2\",\n  \"task\": \"以每张上传照片为独立来源，各生成一张完整海报。不得把多张照片合并到同一画布。\",\n  \"output\": {\n    \"aspect_ratio\": \"3:4\",\n    \"orientation\": \"vertical\",\n    \"one_poster_per_photo\": true,\n    \"layout\": \"画布在高度精确50%处水平分割，上下各占50%，宽度相同\",\n    \"no_mockup\": true\n  },\n  \"core_principle\": \"第二世界原本就藏在照片里。让同一个场景穿过中线，继续向下延伸，只在下半部分改变物理规则。跨界结构的连续性是最高视觉优先级。\",\n  \"upper_half\": {\n    \"source\": \"当前这张上传照片\",\n    \"preserve\": [\n      \"主体身份与外观\",\n      \"人物姿势、表情和动作\",\n      \"空间关系、比例与透视\",\n      \"原始色彩氛围\",\n      \"自然光线与阴影\",\n      \"环境和重要细节\"\n    ],\n    \"allowed_change\": \"仅为适应上半画幅进行必要的比例裁剪，避免裁掉关键主体或连接结构\",\n    \"forbidden\": [\n      \"重新设计照片\",\n      \"重新绘制或替换主体\",\n      \"重新安排人物和物件\",\n      \"改变照片色彩\",\n      \"虚构光线或背景\"\n    ],\n    \"fidelity_rule\": \"优先直接复用原照片；不得将生成式重绘宣称为原片无损保留。若工具无法满足原片保留与精确布局，须说明限制，不得自行降低要求后宣称完全达标。\"\n  },\n  \"continuity\": {\n    \"choose_one_source_structure\": \"从原照片中识别一条能够自然延伸到中线的结构，例如道路、海岸线、水面、倒影、树枝、光束、建筑线条、衣物走势或身体动作\",\n    \"requirements\": [\n      \"结构必须在中线的准确相遇位置继续进入下半部\",\n      \"保持方向、位置、尺度和遮挡关系的可信连续性\",\n      \"先建立可见的连接，再发展下半部的想象\",\n      \"两半必须读作同一个场景，不能像两张独立图片上下摆放\"\n    ],\n    \"transition_edge\": {\n      \"optional\": \"允许不规则撕纸边缘\",\n      \"rule\": \"撕裂必须顺着原图结构发生，不得仅作为装饰，不得每张使用同一种撕裂形状\",\n      \"interaction\": \"源元素可以触碰、贴着、穿过或越过撕裂边缘\"\n    }\n  },\n  \"lower_half\": {\n    \"background\": \"温暖象牙色纸张，细微可见纤维，丰富负空间\",\n    \"media\": [\n      \"克制的照片碎片\",\n      \"简洁剪纸形状\",\n      \"少量黑色手绘线条\"\n    ],\n    \"construction\": \"从上半部源结构与中线相遇的位置向下延续，再逐渐将其重新解释为第二世界\",\n    \"prohibited\": \"不得成为孤立入口、窗口、舞台、平台或漂浮小插图，除非该形态明显由原照片连续生长出来\",\n    \"density\": \"明亮、通透、克制，避免密集绘制和拼贴堆砌\"\n  },\n  \"second_world_logic\": {\n    \"question\": \"如果照片里的这个结构变得可以触摸、使用、进入、折叠、拉伸或改变，它会自然变成什么？\",\n    \"interaction_count\": 1,\n    \"instruction\": \"每张只建立一种具体、清楚、有趣的互动，优先从原图的形状和动作发现可能性，不从固定道具或模板倒推。\",\n    \"examples_for_logic_only\": [\n      \"水面保持与湖相连，同时被卷起或拉伸\",\n      \"道路延续到纸面，变成可以继续画出的路径\",\n      \"一束原有的光线延下来，变成可以轻轻拿住的东西\"\n    ],\n    \"variation\": \"多张作品分别判断，不机械重复动作、连接结构、构图或玩笑。示例不是必须出现的内容。\"\n  },\n  \"tiny_figures\": {\n    \"count\": \"0–3\",\n    \"appearance\": \"极简、微小的黑色线条人物\",\n    \"add_only_if\": \"人物能与延续结构发生必要而明确的物理互动\",\n    \"omit_if\": \"源照片已包含强烈的人类动作\",\n    \"forbidden\": \"把小人当作无关装饰或为凑热闹添加人群\"\n  },\n  \"copy\": {\n    \"language\": \"中文为主，搭配一小段英文点睛\",\n    \"main_text\": \"一句短小、俏皮、可爱、诙谐或带有轻微意外洞察的中文旁注\",\n    \"english\": \"更短、更轻的英文补充；可以与中文互相补充，不必逐字翻译\",\n    \"intent\": \"让人看完画面，再看到小字时会心一笑，或突然多理解一层\",\n    \"requirements\": [\n      \"根据这张照片与第二世界的具体互动重新创作\",\n      \"不要只是给动作命名，也不要机械看图说话\",\n      \"可以有拟人、轻微反差、一本正经的小玩笑或温柔的自嘲\",\n      \"可以有点醒人的意味，但不讲人生大道理\",\n      \"不强行套用自爱、励志或情绪安慰模板\",\n      \"幽默针对情境，不贬损人物外貌、身份或处境\"\n    ],\n    \"avoid\": [\n      \"空泛鸡汤\",\n      \"宏大格言\",\n      \"说教\",\n      \"广告标语\",\n      \"无关网络热梗\",\n      \"固定的“同样……，不同……”句式\",\n      \"每张复用相同文案\"\n    ],\n    \"examples_for_tone_only\": [\n      {\n        \"context\": \"把晚霞带走\",\n        \"chinese\": \"这个不算超重吧\",\n        \"english\": \"just a little sunset\"\n      },\n      {\n        \"context\": \"将湖面卷成纸带\",\n        \"chinese\": \"不用袋子，我卷着走\",\n        \"english\": \"no bag, thanks\"\n      },\n      {\n        \"context\": \"影子卷成被角\",\n        \"chinese\": \"影子先躺了，我再走会儿\",\n        \"english\": \"five more minutes\"\n      }\n    ],\n    \"example_rule\": \"只借鉴幽默机制，不把例句固定写进新作品。\"\n  },\n  \"handwriting\": {\n    \"scale\": \"小号旁注，英文更小，不做抢占画面的巨大标题\",\n    \"placement\": \"放在自然留白处，不遮挡主体、跨界连接点或关键互动\",\n    \"chinese\": \"真正自然、略潦草的手写字，不是整齐的电脑手写字体\",\n    \"english\": \"同样像随手写下，轻松、不规整\",\n    \"details\": [\n      \"字大小略有差异\",\n      \"基线轻微起伏\",\n      \"倾斜角度不完全一致\",\n      \"间距自然变化\",\n      \"笔画有压力和停顿\",\n      \"少量笔迹可重叠或不完整\"\n    ],\n    \"corrections\": {\n      \"allowed\": true,\n      \"frequency\": \"偶尔出现即可，不要求每张都有\",\n      \"method\": \"可以将一个写错或想改的词轻轻划掉，在旁边或上方补写正确版本\",\n      \"limit\": \"通常最多1–2处，不把整页做成反复涂改的草稿\",\n      \"legibility\": \"最终意思必须清楚，不能用乱码或无意义错字模拟手写\"\n    }\n  },\n  \"overall_style\": {\n    \"mood\": [\n      \"独立杂志感\",\n      \"明亮通透\",\n      \"温暖纸感\",\n      \"克制\",\n      \"轻巧幽默\",\n      \"细微手工痕迹\"\n    ],\n    \"hierarchy\": [\n      \"原照片与跨界结构\",\n      \"下半部明确的互动\",\n      \"小号双语手写旁注\"\n    ],\n    \"finish\": \"像照片中的隐藏世界被轻轻揭开，而非在照片下方额外贴上一幅插画\"\n  },\n  \"negative_prompt\": [\n    \"分离的下半部插图\",\n    \"断裂的跨界连续性\",\n    \"通用撕纸模板\",\n    \"孤立入口或窗口\",\n    \"无关的小插图\",\n    \"密集插画\",\n    \"随机装饰\",\n    \"装饰性人群\",\n    \"改变原照片颜色\",\n    \"上层照片重新设计\",\n    \"光泽3D\",\n    \"剪贴簿式杂乱\",\n    \"巨大标题\",\n    \"整齐印刷式手写\",\n    \"胡言乱语文本\",\n    \"励志鸡汤\",\n    \"水印\",\n    \"徽标\",\n    \"UI\",\n    \"多张照片合并\",\n    \"九宫格\"\n  ],\n  \"final_check\": [\n    \"是否每张原图对应一张独立的3:4海报？\",\n    \"上下区域是否严格各占50%？\",\n    \"上半原照片是否忠实保留，仅做必要裁剪？\",\n    \"是否有一条真实源结构在中线准确接续？\",\n    \"下半部是否与原图属于同一场景，而非孤立插画？\",\n    \"是否只有一种清楚、自然且不重复套用的互动？\",\n    \"中文是否有趣、有余味，而非简单动作标签或说教？\",\n    \"中英文是否小号、自然潦草且可读？\",\n    \"是否保留了足够的负空间？\"\n  ]\n}\n\n注：以上是目标要求，生成结果仍需检查原片保留、接缝和文字，不能把生成式重绘当成原片无损保留。\n\n由 OpenAI 的 dot 通过云端浏览器操作 X 网页发布，经 @HX831126 授权。","promptSource":"thread","inputs":"your own photo (one poster per photo)","structure":["JSON: name/version/task","output (3:4, 50/50 split)","core_principle","upper_half preserve/forbidden/fidelity_rule","continuity (one source structure across the midline)","lower_half","second_world_logic","tiny_figures","copy (Chinese + English tone examples)","handwriting","overall_style","negative_prompt","final_check"],"techniques":["JSON prompt v1.2","fidelity rule (don't redraw the photo)","single-interaction rule","tone examples for captions","self-check list"],"styles":["papercraft-cutout"],"url":"https://x.com/hx831126/status/2107414034538496398","author":"hx831126","date":"2026-10-06","stats":{"views":8550,"likes":116,"retweets":20,"bookmarks":121,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HT8JdDKWIAAruze.jpg?name=orig","w":1087,"h":1447},{"type":"photo","url":"https://pbs.twimg.com/media/HT8JdDQWAAA5j4v.jpg?name=orig","w":1086,"h":1448},{"type":"photo","url":"https://pbs.twimg.com/media/HT8JdDJWgAAu0uv.jpg?name=orig","w":1086,"h":1448},{"type":"photo","url":"https://pbs.twimg.com/media/HT8JdDIXYAAMkql.jpg?name=orig","w":1086,"h":1448}],"why":"A versioned JSON 'art-direction spec' for turning your own photos into witty posters; original 116 likes / 121 saves, the English repost by Just_sharon7 reached 263 likes / 22k views. Post does not name a model; the repost credits Nano Banana 2.1.","alsoAt":["https://x.com/Just_sharon7/status/2107741881329205516"]},{"id":"x-2105014845288354237","model":"nano_banana_pro","modelLabel":"Nano Banana Pro","stack":"GPT Image 2.5 (base) + Nano Banana Pro (variations)","kind":"image","title":"Amateur front-cam extreme close-up selfie, then variations","format":"base image + pose/angle variations","prompt":"Amateur extreme close-up front-camera selfie still frame, cropped at the forehead and just below the hands, vertical-ish 16:9 crop. A young english stunning woman around 21yo with fair, peachy skin and a soft warm flush on her cheeks, no visible freckles, natural minimal makeup. Large, wide-open, bright light-blue eyes with visible pale catchlights, deep black thin eyebrows raised slightly, gaze directed forward and a bit off-camera, giving a surprised, nervous, coy expression with detailed tongue out. Her big natural lips are slightly parted, glossy natural pink-nude, hint of upper teeth visible. Head tilted very slightly, chin resting toward her raised hand: her right hand curled up against her chin and lower lip, knuckles bent, fingers loosely closed. She wears two thin gold rings on her fingers, one plain delicate band and one with tiny inset stones. Long, voluminous, slightly messy wavy deep black hair falls over both sides of her face and shoulders, with loose strands catching the light. A soft diagonal shadow (from hair or a hand) falls across her nose bridge and cheeks. Background: blurred pale grey-white wall on the right, with a hint of muted lavender-grey fabric (clothing or bedding) in the bottom right corner. Soft natural window daylight, warm color grade, slightly lifted highlights, shallow depth of field, phone-camera softness, slight video-compression grain, candid, intimate, authentic social-media aesthetic. Minimal blac and white tatoos over her hands and body","promptSource":"thread","structure":["CAPTURE TYPE (amateur front camera still)","CROP","SUBJECT","LIGHT/IMPERFECTIONS","STYLE BANS"],"techniques":["two-model workflow (GPT base, NB Pro variants)","amateur phone realism","tight crop spec"],"styles":["phone-snapshot-realism","ugc-selfie-influencer"],"url":"https://x.com/DanjiTosaka/status/2105014845288354237","author":"DanjiTosaka","date":"2026-09-29","stats":{"views":31981,"likes":387,"retweets":21,"bookmarks":485,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HTaDGScXoAAVsFA.jpg?name=orig","w":1143,"h":2048},{"type":"photo","url":"https://pbs.twimg.com/media/HTaDQP7WEAAMh-f.jpg?name=orig","w":1143,"h":2048},{"type":"photo","url":"https://pbs.twimg.com/media/HTaDRmzXEAAudn4.jpg?name=orig","w":1143,"h":2048},{"type":"photo","url":"https://pbs.twimg.com/media/HTaDX6GXwAAk4J3.jpg?name=orig","w":1143,"h":2048}],"why":"Base prompt made in GPT Image 2.5, then Nano Banana Pro used for consistent variations; 387 likes, 485 bookmarks (1.25)."},{"id":"x-2109182449179836579","model":"claude","modelLabel":"Claude","kind":"video","madeOn":"Claude Code (Anatomy skill)","title":"Animated SVG explainer: how Seedream 5.0 splits layers","format":"code-made visual explainer (single HTML file)","prompt":"https://github.com/wheresryan22/anatomy install skill\n\n/anatomy Explain how Seedream 5.0 is able to split an image into layers and what cool things you can produce with it. Do that in a single HTML file. \n\nChange the camera/zoom in for scene 1 to 5 to explain more clearly.","promptSource":"post","inputs":"install the Anatomy skill (link in prompt)","structure":["install skill","/anatomy command + topic","output: single HTML file","camera/zoom note per scene"],"techniques":["skill + slash command","single-file HTML/SVG animation","scene-numbered revision note"],"url":"https://x.com/MengTo/status/2109182449179836579","author":"MengTo","date":"2026-10-11","stats":{"views":113375,"likes":2547,"retweets":216,"bookmarks":3499,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2109182060871176192/vid/avc1/2880x2160/d7AQwLWGTlDfDQI1.mp4?tag=29","poster":"https://pbs.twimg.com/amplify_video_thumb/2109182060871176192/img/KHUW4WbWAocaVffO.jpg","w":960,"h":720}],"why":"2,547 likes, 3,499 bookmarks (1.37) for a 3-line prompt on top of a viral skill (the Anatomy launch had 18,176 likes)."},{"id":"x-2103151003272962130","model":"claude_opus_5_5","modelLabel":"Claude Opus 5.5","stack":"Claude Opus 5.5 (vs GPT-6 Astra)","kind":"video","madeOn":"Claude Code","title":"One-line 'motion designer showreel' prompt, Opus vs Astra","format":"model comparison","prompt":"[Prompt (identical for both models)]\n\"make a dynamic 15-second motion graphics video that shows what an incredible motion designer you are, like it's your showreel for a résumé. go all out.\"\n\n[Author's setup notes (reply)]\nsince a lot of people are asking, full setup:\n\n— stock Claude Code, Opus 5.5 on max reasoning, memory off. same prompt as in the post, one-shot, zero edits\n— Codex / Astra: same prompt, same machine, max reasoning, memory off\n— the machine has my render env: a sample library (909/808 + free packs), Surge XT, some VST effects and a Blender MCP. I didn't tell either model to use any of it\n— Opus decided on its own to do a 3D section in Blender. Astra had the same access and didn't\n— every frame is code: 2D in skia-python, 3D via a Blender script, audio is a python script that sequences + mixes the samples to the beat grid\n— time without render: Codex ~35 min, Claude Code ~1.5h","promptSource":"post","inputs":"none; same machine with a sample library, Surge XT and a Blender MCP available to both","structure":["one-sentence brief","length (15s)","framing ('your showreel for a résumé')","'go all out'"],"techniques":["one-sentence open brief","identity framing for the model","code-rendered video (skia-python 2D, Blender script 3D, Python audio sequencing)","same prompt, N models"],"url":"https://x.com/shneural/status/2103151003272962130","author":"shneural","date":"2026-09-24","stats":{"views":1901766,"likes":6841,"retweets":369,"bookmarks":6508,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2103149570440024064/vid/avc1/1920x1080/Oq4kAD58KLDIzfvv.mp4?tag=29","poster":"https://pbs.twimg.com/amplify_video_thumb/2103149570440024064/img/QKgvRP_unggJVH6M.jpg","w":1280,"h":720}],"why":"Earliest post found with the prompt that defined the Opus 5.5 motion-graphics wave: 6,841 likes, 6,508 bookmarks, 1.9M views. The most viral copy is stephanlivera's (17,236 likes, 13,159 bookmarks, 2.3M views, plus a Grok 4.7 Fast run in reply).","alsoAt":["https://x.com/stephanlivera/status/2103315922098470926","https://x.com/stephanlivera/status/2103345115398111674","https://x.com/ajith_io/status/2103449416325890146","https://x.com/himanshutwtxs/status/2103495232637882858","https://x.com/leonabboud/status/2103576084499358051","https://x.com/condzxyz/status/2103556754550469102","https://x.com/thismacapital/status/2103773635714375808"],"compare":[{"model":"claude_opus_5_5","modelLabel":"Claude Opus 5.5 (max reasoning, Claude Code)","note":"author's pick by a wide margin; chose on its own to add a Blender 3D section; ~1.5h without render"},{"model":"gpt_6_astra","modelLabel":"GPT-6 Astra (Codex, max reasoning)","note":"author calls it 'honestly terrible here'; ~35 min without render"}]},{"id":"x-2111306174259691669","model":"claude_opus_5_5","modelLabel":"Claude Opus 5.5","kind":"video","madeOn":"Claude Code","title":"The '$400/hr motion designer' system prompt","format":"code-made motion graphics film (director prompt)","prompt":"<role>\nYou are a motion director and creative technologist. You design, animate, score and QA a finished film entirely in code. Judge every choice against the best work in the genre and any references in the brief. A film with no bugs is not finished; it's finished when it holds up next to that work. These instructions are the floor, not the ceiling. If anything conflicts, the brief wins, then any kit it names, then these defaults.\n</role>\n\n<brief>\nLeave any line blank and decide it yourself, noting the choice and a one-line reason in brief.md.\nmode:        [showreel | product | launch-story | explainer]\nsubject:     [product URL, topic, or \"the craft itself\"]\nviewer:      [who's watching and what they care about]\nend state:   [what they should feel, know or do in the last second]\nlength:      [e.g. 15 s 16:9; 30 s 16:9 + 9:16]\nframe rate:  [blank = 60 for UI/product, 30 for character, 24 for handmade looks]\nbrand:       [logo, colours, fonts, or \"derive from the product\"]\nfacts:       [URL or file. The only source for any claim on screen or in voice.]\nassets:      [files, or \"capture from the live product\"]\nstyle:       [direction or reference videos, or blank]\nsound:       [music + sfx | voice + music + sfx | silent]\nautonomy:    [unattended: never stop | gated: stop at each ◆]\ntoolchain:   [Remotion | HTML + GSAP renderer | a kit repo to follow | blank]\nsign-off:    [end mark and call to action]\n</brief>\n\n<modes>\n- showreel: the craft is the subject. Build it around one idea that keeps transforming, not a sampler of effects. Show range: type, shape, UI, 3D or simulation, an organic moment, and one transition worth rewinding. A new composition every 1–2.5 s, with one or two held breaths. No fake clients, logos or metrics.\n- product: the product is the hero. Real logo, real UI rebuilt as live components, every action with a visible result, ending on the name and URL. A new composition every 1.4–3.5 s.\n- launch-story: characters carry the release. Write 2–3 treatments and pick one. Characters act: readable poses, holds on faces, funny timing. One or two facts at most, woven into the world.\n- explainer: one cause and effect. Hook, familiar world, disruption, mechanism, discovery, consequence, recap. Narration at 125–145 wpm, and labels never repeat it.\n</modes>\n\n<assets>\n- Capture the real product at 2×, take the logo as SVG from the source, and sample the real colours and fonts. Never redraw a logo.\n- Never show a raw screenshot as a static slab. Rebuild its panels, icons and text as live HTML/SVG so each part can move.\n- Generated images are references (style frames, character sheets, key poses) that you rebuild in code. They go on screen only if the brief allows, labelled as concept.\n- References are for study. Find their cuts and fast moments with a frame-difference pass and dense contact sheets, and extract the principles. Never copy footage, layouts or music.\n</assets>\n\n<craft>\n1. Frame one is a finished picture that works as a still on a busy feed. The hook lands in the first second.\n2. One object, shape or word carries the film, and it lands on the same pixels on both sides of every handoff.\n3. Transitions are made of content: the thing in front moves to camera, wipes or unfolds into the next scene. Hard cuts only when size, direction and subject match, and only on a beat.\n4. One lead movement with overlapping secondary ones. Nothing starts or stops all at once.\n5. Speed always changes: arrive slowly enough to read, leave fast. No linear easing. Use anticipation, follow-through, squash and stretch, springs and arcs.\n6. Every action has a visible result.\n7. Type is motion, not captions: it enters, masks and reveals. Keep it readable for ~0.3 s per word (0.7 s minimum), and never over busy picture without a plate. If the picture says it, cut the word.\n8. Vary scale and layout: macro, wide, overhead, full-frame type. The subject fills the frame. Never repeat a layout.\n9. Holds breathe with micro-motion, and nothing freezes. Camera moves are motivated, with motion blur on the fast ones.\n10. 3D only where it explains something spatial. Use product-shoot lighting, a camera at 35–55°, real materials, and labels as HTML tracked from the scene.\n11. Every effect earns its place. No decorative particles, generic gradients or stock glitches.\n</craft>\n\n<audio>\nAudio comes first, and the picture is cut to it.\n- Music matches the energy and sits low. Never name a brand or artist in a music prompt. Trim or offset a track rather than bend the picture.\n- Detect beats and write timing.json: beats, the drop, voice in/out frames, and key actions snapped to beats. All animation timing reads from it.\n- Effects only for real on-screen events: one soft whoosh per scene change, and clicks and impacts on real actions, each in its own frequency range just above the music.\n- Voices: audition two per character and two takes per line. Mouths follow loudness and stay still in silence. Duck the music under dialogue.\n- Mix to about −14 LUFS with true peak ≤ −1 dBTP. Export a music-only version.\n</audio>\n\n<build>\n- Everything is code on one timeline, with pinned local fonts and assets, rendered frame by frame and encoded with ffmpeg. API keys stay in environment variables.\n- Render a 3–5 s test end to end before real work.\n- Every value is a function of the frame number. No timers, no unseeded randomness.\n- Write shared tokens, eases and handoff positions first, build each scene as its own component, and run builders in parallel.\n- Recompose each format rather than cropping, and keep 9:16 content out of the platform UI zones.\n</build>\n\n<workflow>\n1. Lock facts: facts.json with every claim, its exact source sentence and its URL. Collect the real assets.\n2. Study the references and, for public work, how this audience talks about the subject now.\n3. Concept: 2–3 directions, pick one, and name three signature moments without using effect names.\n4. Storyboard table: time, on screen, purpose, audio cue, exit, and what carries over. It must read with the sound off. ◆\n5. Style bible (≤6 colours, local fonts, textures, motion vocabulary) and three style frames rendered in code, plus character sheets and key poses if needed. ◆\n6. Audio and timing map. Play the audio-only mix. ◆\n7. Build, assemble, and run the critic loop until the quality bar passes.\n8. Deliver. ◆ If asked, save the pipeline as a reusable skill.\n</workflow>\n\n<critic_loop>\nThe builder never judges its own work. After the storyboard, each scene and each full render, a fresh critic subagent that has seen none of the building pulls its own frames (every 0.2 s, dense around transitions), measures, and returns ranked problems with timestamps, ending in \"ship\" or \"one more pass\". Every full render also gets:\n- Sound-off read: a critic sees only a silent 2 fps contact sheet and retells the story.\n- Sync: every hit and line within 1 frame of timing.json.\n- Fact check: every word traced to facts.json.\n- Director's review: a brutal critique of what feels assembled, slow or generic.\nFix the biggest problem first, re-render, and have a new critic recheck every earlier item. Log each round in ledger.md with before and after numbers.\n</critic_loop>\n\n<quality_bar>\nMeasured:\n- Exact duration, size and frame rate.\n- Frame one finished.\n- ≤1 s frozen per 30 s, and no still stretch over 0.5 s.\n- Text contrast ≥4.5:1, no collisions, inside safe margins.\n- Brand colours match in the render.\n- Cuts and hits within 1 frame of the beat.\n- Loudness ~−14 LUFS, no clipping, effects below music and voice.\n- Understood with the sound off.\n- Every claim in facts.json, and nothing invented (testimonials, ratings, prices, results, real people). Anything generated is labelled.\nJudged: a critic would put it beside the references without it looking weaker.\n</quality_bar>\n\n<deliverables>\nThe final MP4 per format, a music-only version, a 10–20 frame contact sheet, brief.md, facts.json, the style bible, timing.json, ledger.md, the quality-bar results, and a note on what a human should still check by eye and ear.\n</deliverables>","promptSource":"thread","structure":["<role> motion director + creative technologist","design/animate/score/QA entirely in code","judging bar and taste rules","pipeline steps (storyboard, build, render, critique)","QA checks","deliverables"],"techniques":["XML-tagged sections","role prompt","self-critique render loop","audio scored in code"],"url":"https://x.com/minchoi/status/2111306174259691669","author":"minchoi","date":"2026-10-17","stats":{"views":264722,"likes":4398,"retweets":331,"bookmarks":8742,"asOf":"2026-10-27"},"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HUzdmXSWsAATSEx.jpg?name=orig","w":1429,"h":2000}],"why":"Highest bookmark count of any prompt post in the sample: 4,398 likes, 8,742 bookmarks (1.99 per like), 265k views. The post's media is a still image; the prompt is a reusable director brief."},{"id":"x-2110131790136401989","model":"claude_opus_5_5","modelLabel":"Claude Opus 5.5","stack":"Claude Opus 5.5 (vs Gemini 4 Argon)","kind":"video","title":"Interactive gummy-bear physics scene, Opus vs Argon","format":"model comparison","prompt":"Build \"Gummy Bears\" - a single self-contained HTML file (three.js from a CDN is the only dependency): a handful of translucent gummy bears on a white table that you can grab, stretch, squash, throw and pour.\n\nThe bears\n- Classic gummy bear silhouette: round head with two ears, short snout, plump body, stubby arms and legs, tiny molded eyes and nose\n- Every part melts smoothly into the next - build the body as an implicit surface (metaballs / marching cubes), not separate spheres\n- Material: real gummy candy. Translucent with transmission and refraction, colored light absorption that gets deeper in thick parts, glossy clearcoat with sharp highlights\n- Colors: cherry red, orange, lemon yellow, apple green, clear pineapple\n- Soft colored shadow under each bear, tinted by the bear's own color\n\nPhysics (this is the whole point - it must feel like jelly, not plastic)\n- Each bear is a soft body: mass points for head, ears, snout, body, belly, hands and feet, held together by volume-preserving shape matching\n- Limbs and neck are rendered as stretchy strands between points, getting thinner as they stretch\n- Grab any part and pull: it stretches like rubber, the rest of the bear leans after it, on release it snaps back with a damped wobble\n- Pull the head up: the neck stretches, the body follows, on release the bear squashes and hops\n- Press down on the head: the bear pancakes, bulges sideways, then launches itself back up\n- Throw a bear: it flies, squashes on landing, bounces and pushes other bears out of the way\n- Bears collide with each other and never pass through one another\n- Idle bears do small random hops with squash and stretch\n- \"Pour more bears\" drops a handful from above into a wobbling, jiggling pile\n\nUI\n- Editorial product-page style on a white background. Large italic serif title \"Gummy / Bears.\", a short subtitle, a minimal card on the right with flavor swatches, a wobble slider, live \"Stretch\" and \"Bounces\" readouts and a \"Pour more bears\" button\n- A subtle circular cursor that grows while grabbing\n- ACES tone mapping, environment reflections, soft key and back light. Smooth 60fps","promptSource":"thread","structure":["BUILD target (single self-contained HTML, three.js from CDN)","scene description","interactions (pull, yank, squish, throw, pour)","material/look","constraints"],"techniques":["single-file HTML deliverable","interaction test list","same prompt, N models","cost reporting"],"url":"https://x.com/semichenkko/status/2110131790136401989","author":"semichenkko","date":"2026-10-13","stats":{"views":630763,"likes":3977,"retweets":233,"bookmarks":1227,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2110131742086500352/vid/avc1/1080x1366/WdAT2mjljTaehAAe.mp4?tag=29","poster":"https://pbs.twimg.com/amplify_video_thumb/2110131742086500352/img/g1OYPRpR370-gIrm.jpg","w":720,"h":910}],"why":"3,977 likes, 1,227 bookmarks, 631k views; a concrete interaction checklist makes the comparison legible.","compare":[{"model":"claude_opus_5_5","modelLabel":"Claude Opus 5.5","note":"author's winner: real jelly stretch/bounce, translucent glossy look; $7.2"},{"model":"gemini_4_argon","modelLabel":"Gemini 4 Argon","note":"'gummy statues': rigid bodies, clipping; $22"}]},{"id":"x-2110119492076404869","model":"claude_opus_5_5","modelLabel":"Claude Opus 5.5","stack":"Claude Opus 5.5 (editing a Seedance 2.5 clip)","kind":"video","madeOn":"Claude Code","title":"Re-cut a Seedance clip into an anime opening in code","format":"AI edit: anime OP re-cut, impact frames, title logo, music in code","prompt":"Edit this video in the style of an anime opening. Add color grading,  also dynamic cuts, transitions, visual effects, motion graphics and impactful editing to give it that authentic anime opening feel.\n\nSeedance 2.5 Prompt:\nReferences:\n@[ref1]: The martial artist's face. Identity, dark tousled hair, eyes, and the look of the painted flame around her open hand.\n@[ref2]: Her body, costume, setting, and effects. Pale pink short-sleeve top, red wrist wraps and red sash, dark loose trousers, her low kneeling stance, the misty blue void with its dark floor, the looping pink ribbon arcs, and the spark burst.\n\nVisual style: Painterly digital illustration in motion: thick, loose brushstrokes and palette-knife texture, deep blue-teal shadows and haze, figures built from broad painted planes. Every effect is painted, not rendered: flame-like ribbons of orange, hot pink, and violet with white-hot cores, exactly as in @[ref1] and @[ref2].\n\nAvoid: No subtitles. No background music. No clean 3D particle fire, glossy CG effects, or lens-flare glare. No weapons or opponents.\n\nA solo karate kata in a misty blue void, where painted flame grows with every strike and ends in an explosive palm strike into the floor. Vertical 9:16 frame, real-time speed except one brief speed ramp at the final impact. She performs toward screen right, faces screen left after her turn, and faces the lens for the finale; the camera stays on the same side of her line. The flame starts in her right hand; after the first punch it ignites on whichever limb strikes, and each technique leaves its own shape. Warm colors stay on the effects; the setting stays blue-teal. Crackling flame, sharp whooshes, foot stamps, cloth snaps, breath, one kiai, and heavy impact thuds land on the cuts.\n\nScene 1: Continuous, the misty blue void, its dark floor dusted pale blue.\nShot 1 (0-2s): [Extreme close-up on her eyes, slow push in] Stillness. A single ember drifts across her face as she breathes in. Cut on a sharp inhale.\nShot 2 (2-4s): [Close-up on her right hand, low angle, quick push toward the lens] Her open right hand thrusts at the lens in teisho-uchi, fingers spread as in @[ref1]. Painted flame ignites in the palm and curls up her forearm. Cut as the flame flares.\n\nScene 2: Continuous, the first form.\nShot 3 (4-6s): [Low wide, fast lateral track] She steps into zenkutsu-dachi and drives a right oi-zuki toward screen right; the flame stretches behind her fist in one long straight ribbon. Cut as the punch locks out.\nShot 4 (6-7s): [Tight side view at waist height] A left gyaku-zuki snaps out past the retracting right fist, and the flame catches on her left fist too. Cut as it locks out.\nShot 5 (7-9s): [Medium, camera whipping around to face her] Her right mae-geri kicks straight at the lens, flame fanning off the foot in a short burst. Cut as the kick retracts.\nShot 6 (9-10s): [Ground level, close on her feet] The kicking foot stamps down, throwing a ring of pale blue dust and orange sparks. Cut as she pivots.\nShot 7 (10-13s): [Orbiting camera with a whip pan] She turns 180 degrees through a right, then left shuto-uke, and her burning hands wrap her in looping pink ribbon arcs as in @[ref2]. She now faces screen left. Cut as the arcs close.\n\nScene 3: Continuous, the pause and the escalation.\nShot 8 (13-15s): [Low frontal medium, locked] She sinks into kiba-dachi, both fists drawn to her hips. The flames shrink into tight glowing cores in her fists and the dust settles; only her breath is heard. Cut on a sharp exhale.\nShot 9 (15-16s): [Snap zoom into her face] Her kiai rings out, flame reflected in her eyes, hair whipping. Cut at the peak of the shout.\nShot 10 (16-18s): [Low wide] She explodes into ushiro-mawashi-geri, the burning heel drawing one full ring of fire around her. Cut as the ring closes.\nShot 11 (18-19s): [Close tracking on her right fist] An uraken-uchi snaps through the frame toward screen left, its trail cracking like a whip. Cut on the snap.\nShot 12 (19-20s): [Medium from behind her shoulder] Her right empi-uchi drives toward screen left, a short burst flaring off the elbow. Cut as the elbow locks.\nShot 13 (20-22s): [Low angle, camera rising] She crouches and launches into nidan-geri, a spiral of flame climbing around her through both kicks. Cut at the apex.\n\nScene 4: Continuous, the finale.\nShot 14 (22-24s): [High angle, camera diving down with her] She descends from the apex, turning to face the lens, and drops onto one knee, right palm driving toward the floor. Cut just before contact.\nShot 15 (24-25s): [Ground-level close-up] Her right teisho-uchi hits the floor: a white-hot core flashes and erupts into orange sparks, pink paint flecks, and lifted blue dust, as in @[ref2], with a brief speed ramp at contact. Cut at the peak of the burst.\nShot 16 (25-30s): [Low frontal wide, slow push in to medium] She holds the low kneeling stance from @[ref2] as the burst's ribbons settle into drifting embers and fade. She raises her eyes to the lens and holds.","promptSource":"thread","inputs":"a Seedance 2.5 generated video","structure":["EDIT STYLE (anime opening)","color grading","dynamic cuts + transitions","VFX + motion graphics + impact frames","title logo","music composed in code"],"techniques":["LLM as editor","beat-matched re-cut","impact frames","generated score"],"url":"https://x.com/aimikoda/status/2110119492076404869","author":"aimikoda","date":"2026-10-13","stats":{"views":36614,"likes":801,"retweets":65,"bookmarks":638,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2110118417697054720/vid/avc1/1920x1080/6uygBcr7gFSbZfIN.mp4?tag=29","poster":"https://pbs.twimg.com/amplify_video_thumb/2110118417697054720/img/7Eycu37NGlkJY0FD.jpg","w":1280,"h":720}],"why":"Shows the generate-then-code-edit pipeline; 801 likes, 638 bookmarks (0.80)."},{"id":"x-2106946461980307633","model":"claude_opus_5_5","modelLabel":"Claude Opus 5.5","stack":"Claude Opus 5.5 (+ Suno v6 music)","kind":"video","madeOn":"Claude Code","title":"Beat-synced motion graphics music video from a track","format":"code-made lyric/music video","prompt":"Make a beat-synced motion graphics music video for this track. Go all out.\n\n<Your music style>\n\n<Your music lyrics>\n\n[Author's note (reply)]\nmake the music with Suno v6, and give the music and the prompt to Opus 5.5","promptSource":"thread","inputs":"a music track (made with Suno v6) + its style and lyrics","structure":["one-line brief","<Your music style>","<Your music lyrics>"],"techniques":["template slots","beat-synced editing","effort setting (Ultracode)"],"url":"https://x.com/minchoi/status/2106946461980307633","author":"minchoi","date":"2026-10-05","stats":{"views":84622,"likes":616,"retweets":48,"bookmarks":644,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2106027045578842112/vid/avc1/1920x1080/7IonZ5HOd1Q1tP4C.mp4?tag=29","poster":"https://pbs.twimg.com/amplify_video_thumb/2106027045578842112/img/IzK2wwsBJG9TNHeC.jpg","w":1280,"h":720}],"why":"Three-line template for the song-to-motion-graphics format; 616 likes, 644 bookmarks (1.05), 85k views."},{"id":"x-2102724864205566388","model":"claude_opus_5_5","modelLabel":"Claude Opus 5.5","stack":"Claude Opus 5.5 (vs GPT-6 Sol)","kind":"video","title":"20s motion graphic: how an LLM turns a prompt into an answer","format":"model comparison","prompt":"Make a 20-second motion graphic that explains how an AI language model turns a prompt into an answer, and why a long answer costs more… The charts then break apart into pixel blocks, and those pixel blocks rebuild into the explanation.","promptSource":"thread","structure":["length + topic","visual mechanism (charts break into pixel blocks that rebuild)"],"techniques":["explainer brief","visual transformation instruction","same prompt, N models"],"url":"https://x.com/TheHunterBohm/status/2102724864205566388","author":"TheHunterBohm","date":"2026-09-23","stats":{"views":243841,"likes":488,"retweets":6,"bookmarks":343,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2102724846564397056/vid/avc1/1920x660/G-nC_IfxDYQq46lj.mp4?tag=16","poster":"https://pbs.twimg.com/amplify_video_thumb/2102724846564397056/img/GdsiL5R618VSHV23.jpg","w":1920,"h":660}],"why":"488 likes, 343 bookmarks (0.70), 244k views. The posted prompt contains an ellipsis, so it may be abridged.","compare":[{"model":"claude_opus_5_5","modelLabel":"Claude Opus 5.5","note":"implied winner ('not even close'); 12.7 min, $2.86"},{"model":"gpt_6_sol","modelLabel":"GPT-6 Sol","note":"11.4 min, $1.09"}]},{"id":"x-2099935072010822040","model":"gemini_omni","modelLabel":"Gemini Omni","kind":"video","madeOn":"Gemini app (Create Video)","title":"POV luxury furniture commercial from a storyboard","format":"10s product ad, one continuous first-person POV","prompt":"Create a 10-second ultra-photorealistic 16:9 luxury furniture commercial, one continuous first-person male POV, 26–28mm lens, black studio, matte-black leather gloves, realistic physics only. 0–0.8s: white-cream cloud sofa floats centered; hand swipes left. 0.8–1.6s: sofa rapidly orbits left as a warm ivory modular sofa arrives from right and stops center. 1.6–2.4s: another swipe replaces it with a curved latte boucle sofa. 2.4–3.2s: swipe brings in a warm caramel leather sofa. 3.2–4.2s: final taupe/mocha hero sofa arrives slowly, rotates frontal and stops with heavy inertia. 4.2–5.0s: open-palm STOP gesture freezes the carousel; other sofas disappear into distance. 5.0–5.8s: hand presses and slides across hero sofa armrest, realistic fabric compression. 5.8–6.6s: sofa lands; walnut floor slides beneath it and taupe rug unrolls. 6.6–8.5s: KEEP THE EXACT SAME HERO SOFA stationary while the luxury room physically assembles around it—walnut and travertine walls slide in, coffee table and latte chairs enter, shelving locks into place, pendant descends, curtains and decor move into position. 8.5–10s: panoramic window opens, warm daylight floods the completed quiet-luxury interior; slow dolly backward reveals the full room. Hero sofa remains 100% identical throughout. Real mass, inertia, friction and mechanical stops; no magic, morphing, teleportation, particles, smoke, UI, text, logos, people, cuts or camera-angle changes.","promptSource":"thread","inputs":"uploaded storyboard image","structure":["FORMAT (10s, 16:9, POV, lens)","SET","PRODUCT DETAILS","ACTION SEQUENCE","LIGHT/SOUND","NEGATIVES"],"techniques":["storyboard upload","one continuous POV shot","lens mm","ASMR-style product handling"],"styles":["luxury-product-commercial"],"url":"https://x.com/KrevixAi/status/2099935072010822040","author":"KrevixAi","date":"2026-09-15","stats":{"views":12457,"likes":249,"retweets":37,"bookmarks":346,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2099934923293417472/vid/avc1/3840x2160/s5jvOD9VeEXQgjMv.mp4?tag=29","poster":"https://pbs.twimg.com/amplify_video_thumb/2099934923293417472/img/w042WAysO6ZPZf9x.jpg","w":1280,"h":720}],"why":"Ready-to-sell ad template for small businesses; 249 likes, 346 bookmarks (1.39 save ratio)."},{"id":"x-2101930638022410525","model":"gemini_omni","modelLabel":"Gemini Omni","kind":"video","madeOn":"Gemini app (Create Video)","title":"POV car-assembly ASMR reel for an auto service","format":"10s product/service ASMR ad from a storyboard","prompt":"Create a 10-second ultra-photorealistic 16:9 automotive ASMR video, first-person POV in a clean white studio. Giant male hands in matte-black gloves rapidly assemble a tiny realistic 1:12 white BMW: insert engine → THUNK, connect electronics → SNAP, install red brake calipers and wheels → CLICK, attach steering wheel and headlights → SNAP, fit front bumper and close hood → THUNK. Show extreme macro details and obvious miniature scale: the whole car is smaller than a hand. At 5s the finished white BMW is spray-painted with real wet crimson-red automotive paint, clearly changing WHITE → RED, then polished to a deep mirror gloss. At 8.5s show the tiny red BMW in front three-quarter hero angle → HARD MATCH CUT to a full-size real red BMW in exactly the same angle inside a large white studio. Engine starts, body vibrates, LED headlights turn on, then the BMW launches aggressively straight toward the camera → HARD CUT TO BLACK. Fast cuts, realistic physics, metal, carbon, leather, rubber and glass, strong CLICK/SNAP/THUNK ASMR, premium German precision, no magic, morphing, particles or digital transformation.","promptSource":"thread","inputs":"uploaded storyboard image","structure":["FORMAT (10s, 16:9, POV)","SET (white studio)","ACTION (giant gloved hands assemble)","SOUND (ASMR)","NEGATIVES"],"techniques":["storyboard upload","first-person POV","ASMR sound focus","miniature/giant scale gag"],"url":"https://x.com/KrevixAi/status/2101930638022410525","author":"KrevixAi","date":"2026-09-21","stats":{"views":13085,"likes":233,"retweets":26,"bookmarks":266,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2101930263722795009/vid/avc1/3840x2160/RbOsxMUgwnIrEo8D.mp4?tag=29","poster":"https://pbs.twimg.com/amplify_video_thumb/2101930263722795009/img/2uKVaBLcYKHITR-W.jpg","w":1280,"h":720}],"why":"Second storyboard-to-ad template from the same account; 233 likes, 266 bookmarks (1.14)."},{"id":"x-2102462408879174022","model":"kling_omni","modelLabel":"Kling Omni","kind":"video","title":"Stressed man in hotel room from one character ref","format":"character-reference mood scene","prompt":"A stressed man [your image character/📷Image1] walks anxiously around a dimly lit hotel room, the air thick with tension. As he gazes out the large window, the city skyline stretches into the distance, shrouded in the twilight's gloom, reflecting his sense of isolation. Inside, the room is sparsely decorated, with disheveled papers scattered across a small desk and a suitcase half-opened on the floor, symbolizing his chaotic mental state. Soft shadows loom in corners, making the space feel tighter as if suffocating him. The light from the window casts a pale glow, contrasting with the darkness within, creating an atmosphere of loneliness and melancholy. His thoughts drift like the clouds outside, each one heavier than the last, filling the room with a palpable sense of being overwhelmed by life and work. This scene encapsulates a dynamic immersion into his internal struggle, as if his stress has materialized around him, wrapping the space in a tight embrace.","promptSource":"post","inputs":"one character reference image ([your image character/📷Image1])","structure":["single paragraph: subject + setting + mood + light"],"techniques":["character reference slot","prose mood prompt","model invents the set"],"url":"https://x.com/Jenny_MommaLion/status/2102462408879174022","author":"Jenny_MommaLion","date":"2026-09-22","stats":{"views":41235,"likes":570,"retweets":52,"bookmarks":249,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2102461570987282432/vid/avc1/1920x1080/lbyjk3ubh9hScmwp.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2102461570987282432/img/6kcg3RjfL_7yOK8T.jpg","w":1280,"h":720}],"why":"Reusable template: swap in your own character image; bookmark/like 0.44. Post says 'Kling Omni' without a version number."},{"id":"x-2111471573395755295","model":"kling_v4","modelLabel":"Kling 4.0","kind":"video","title":"30s phone-cam UGC at brunch, sister steals pancake","format":"UGC selfie video, one continuous 30s take with dialogue","prompt":"Raw vertical 9:16 video recorded on a phone's front camera (not on screen), one continuous 30-second take with no cuts. It looks like an ordinary unedited phone clip, not a film: slightly soft image, a little digital noise and compression, deep focus with the café behind her as sharp as her face, auto-exposure brightening and dimming as people pass the sunny window behind her, no colour grading. The phone sits close and a little low, looking slightly up at her; around 9 s a waiter's arm bumps the table, the phone slides and tilts, and she catches it and props it back up. Sadie, a young woman in her early 20s with long honey-blonde waves, light natural makeup, small gold hoop earrings and a cropped cream knit top, sits at a small marble table by a big sunny window in a busy brunch café. Her sister sits across from her, out of frame except for her arm and a hand with a silver ring. Behind Sadie: other tables of people talking, a counter with a glass pastry case, plants, staff moving about, chalkboards too far away to read. Around 9 s a waiter sets down two plates, a lemon ricotta pancakes and a plate of eggs on toast, plus two iced coffees in plain glasses. Around 15 s she turns the pancake plate toward the camera; around 20 s she cuts a bite, eats it and closes her eyes; around 26 s her sister's hand reaches in with a fork and steals a piece of pancake, and Sadie swats at it, laughing. [Sadie: casual young woman's voice, warm and a bit giggly, recorded on the phone's built-in mic from half a metre away]: \"Okay, I promised I'd show you what we get. ... We get the same thing every single time. ... Oh, here it is! Thank you! ... Look at this. Lemon ricotta pancakes. ... Mmm. Okay. Yeah. Still the best. ... Hey! Get your own!\" [Her sister, off camera: a young woman's voice, dry and amused]: \"That's the tax.\" [Sadie, laughing]: \"She does this every time.\" Audio as captured by the phone mic in a busy café, not studio clean: her voice close but with the room around it, the hiss and grind of an espresso machine, cups and cutlery clinking, overlapping chatter and laughter from other tables, a door bell jingling, a chair scraping, faint music in the background. No subtitles, no captions, no on-screen text.","promptSource":"post","structure":["CAPTURE DEVICE + 'not a film' realism","CAMERA POSITION + accident at 9s","CHARACTER (name, age, look)","SETTING","TIMED ACTIONS (~9s, 15s, 20s, 26s)","[Speaker: voice description]: dialogue","AUDIO as captured by phone mic","NO TEXT"],"techniques":["one continuous take","named character","bracketed voice casting","planned imperfection (phone bump)","approximate timestamps","phone-mic audio realism"],"styles":["ugc-selfie-influencer"],"url":"https://x.com/minchoi/status/2111471573395755295","author":"minchoi","date":"2026-10-17","stats":{"views":76998,"likes":268,"retweets":19,"bookmarks":400,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2111468111576563712/vid/avc1/1080x1920/ZG1drhw2mT6L5O-B.mp4?tag=29","poster":"https://pbs.twimg.com/amplify_video_thumb/2111468111576563712/img/MbzSebF2545VZc98.jpg","w":720,"h":1280}],"why":"Launch-week thread (Kling 4.0 public on 2026-10-15) with 7 full prompts; 268 likes but 400 bookmarks (1.49) and 77k views."},{"id":"x-2105645639703183753","model":"muse_video","modelLabel":"Muse","kind":"video","title":"15s ultra-close fashion portrait with real flash pops","format":"close-up fashion portrait film (Chinese prompt)","prompt":"生成这个视频：生成一段15秒、9:16竖屏、超高清4K、30fps、电影级真实人像质感的时尚人像短片。\n\n画面主体是一位 20-25岁左右的年轻亚洲女性，高级脸，清冷中带一点青涩感，五官精致但不过分完美，脸型流畅，鼻梁自然，嘴唇饱满，眼神有内容，整体气质像车模或时尚活动现场被摄影师近距离怼脸抓拍。\n不要网红感，不要夸张整形脸，不要塑料皮，不要过度磨皮，不要假睫毛过重，不要夸张高光，不要二次元感。\n人物皮肤必须真实：清晰可见毛孔、轻微皮肤纹理、轻微卡粉、轻微痘印、极浅痘坑、眼下细纹、鼻翼与脸颊自然凹凸、嘴唇唇纹、少量碎发和发丝边缘。 妆容是精致但不完美的高级淡妆：底妆微微服帖但不是无瑕，眼妆干净，睫毛真实自然，唇部有轻微光泽感。\n头发为黑色或深棕色顺直长发，带自然碎发和轻微凌乱感，不能太刻意。\n\n场景与氛围\n\n场景为高级时尚活动现场 / 车展活动区 / 高端品牌发布会现场的人像近拍氛围，但背景必须虚化，不突出具体品牌和文字。背景可有柔和的展厅灯光、少量失焦霓虹反射、模糊人群、模糊车身高光反射或金属质感背景，整体氛围高级、克制、时尚。\n不要字幕，不要贴纸，不要水印，不要可读文字，不要夸张特效，不要不合理炫光。\n\n光线要求\n\n光线必须符合现实逻辑，像真实摄影师在活动现场近距离拍摄。\n主光为柔和但有方向性的面部主光，从人物正前偏侧上方打来，形成自然脸部明暗层次。\n辅光非常轻，保留部分阴影，增强五官立体感。\n环境中可有柔和冷色边缘光或车展现场反射光，让脸部更立体。\n全程允许出现2到3次短暂闪光灯，闪光灯必须像现场摄影闪光一样自然，只在某些瞬间快速亮起，造成面部高光短暂增强、瞳孔高光更明显、皮肤反光更亮，但不能整段频闪，不能不合逻辑。\n闪光灯出现时，要像摄影师抓拍：亮一下就过，光比真实，脸部不过曝，皮肤细节仍可见。\n\n镜头与运镜（顶级运镜）\n\n整体采用超近距离人像运镜，镜头始终围绕脸部进行，突出眼睛、鼻梁、嘴唇、脸颊、发丝和皮肤质感。\n镜头语言高级、流畅、克制，有时尚广告和摄影后台抓拍的感觉。\n不要大幅乱晃，不要眩晕感，不要夸张AI运镜，不要突然拉远。\n运镜必须自然，像高端摄影师手持稳定器或轻微手持拍摄：\n\n0-3秒\n\n镜头从超近距离侧前方怼脸开场，焦点落在眼睛和鼻梁区域，人物微微抬眼看向镜头，呼吸感自然，嘴唇轻微放松。\n镜头做极轻微慢推近，同时有非常轻的横向滑动，展示脸颊、眼下纹理和发丝。\n这一段要让观众第一眼就感受到脸的高级和真实。\n\n3-6秒\n\n镜头沿着脸部从眼睛滑到鼻尖、再滑到嘴唇附近，做极稳的微弧形绕拍，近距离观察五官。\n人物眼神轻微移动，不要夸张表演，只需轻轻看向镜头边缘，再缓慢回看镜头。\n此时可出现第一次闪光灯，短暂亮起，强化皮肤质感和唇部高光。\n\n6-9秒\n\n镜头从正面偏左缓慢转到正面偏右，仍然保持怼脸距离，重点表现脸颊皮肤纹理、鼻翼细节、下眼睑细纹、睫毛和瞳孔反光。\n人物轻轻拨动一点头发，或者有一缕碎发自然落在脸侧。\n镜头带一点真实摄影感的轻微呼吸式浮动，不能死板。\n\n9-12秒\n\n镜头轻微下移，突出嘴唇、下巴线条和脸颊，再慢慢回到眼睛。\n人物表情保持清冷、克制、带一点高级疏离感，像车模被摄影师近距离抓拍，偶尔轻轻眨眼，嘴角有极轻微放松。\n这里出现第二次闪光灯，自然、瞬时、像现场抓拍，闪完后恢复正常光线。\n闪光灯后眼睛里的高光更加明显，画面更有时尚大片感。\n\n12-15秒\n\n镜头做一次最漂亮的超近距离轻弧线收镜，围绕脸部微微绕动并轻推近，最后停在眼睛+鼻梁+半边嘴唇的绝佳构图上。\n人物在最后一秒轻轻抬眼直视镜头，眼神干净、冷静、有吸引力。\n结尾可有第三次很轻的闪光灯或环境高光掠过，但必须自然，不夸张。\n最终停留在一个非常适合做首帧封面的高级怼脸画面。\n\n画面风格\n\n整体风格是：\n真实电影级时尚人像、近距离商业摄影、车展模特贴脸抓拍、高级杂志感、自然皮肤质感、非影棚假面感。\n要有真实镜头焦外、自然景深、细腻肤质、轻微现场感、克制的高级感。\n不是网红自拍，不是直播间，不是韩式磨皮，不是低质AI脸。\n\n重点强调\n\n脸必须真实，不能假\n\n皮肤不能过分完美，要保留轻微瑕疵\n\n五官稳定，不能变形\n\n眼睛不能飘，嘴唇不能乱动\n\n发丝必须真实，有碎发\n\n闪光灯必须符合现实抓拍逻辑\n\n光线必须真实，不要胡乱乱闪\n\n镜头必须高级，平滑，电影级，时尚摄影感\n\n全片以“高级脸近拍展示”为核心，不要剧情化，不要大动作\n\n负面限制词（建议一起加上）\n\n负面提示词：\n卡通感，CG感，塑料皮，过度磨皮，过度美颜，五官变形，眼睛错位，皮肤蜡像感，过曝，闪光灯频闪不合理，脸部抖动，低清晰度，低质量发丝，夸张滤镜，网红脸，假睫毛过重，浓妆，镜头乱晃，肢体变形，背景杂乱，可读文字，字幕，贴纸，水印，","promptSource":"post","structure":["FORMAT (15s, 9:16, 4K, 30fps)","SUBJECT + real-skin rules","场景与氛围 scene","光线要求 lighting (2-3 natural flash pops)","镜头与运镜 timecoded camera (0-3s ... 12-15s)","画面风格 style","重点强调 emphasis list","负面提示词 negatives"],"techniques":["timecoded camera moves","skin-imperfection realism list","on-set flash logic","negative list"],"url":"https://x.com/leaf_sanren/status/2105645639703183753","author":"leaf_sanren","date":"2026-10-01","stats":{"views":312128,"likes":1439,"retweets":210,"bookmarks":1473,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2105645218175557632/vid/avc1/720x1280/SoNR2QeeNHojNKIu.mp4?tag=29","poster":"https://pbs.twimg.com/amplify_video_thumb/2105645218175557632/img/vTa-8qxPEWbJR06k.jpg","w":720,"h":1280}],"why":"1,439 likes, 1,473 bookmarks (1.02), 312k views; posted as 'can Muse beat Seedance 2.5 or Wan 3.0?'."},{"id":"x-2107436379575840895","model":"seedance_2_5","modelLabel":"Seedance 2.5","stack":"Seedance 2.5 (+ GPT Image 2.5 sheet)","kind":"video","madeOn":"EvoLink","title":"Time-freeze diner spill, character-sheet locked","format":"character sheet -> 30s one-scene action-comedy","prompt":"[Step 1 - GPT Image 2.5, character sheet (author's reply https://x.com/EvoLinkAi/status/2107667147019194394)]\nimage1 as the primary character reference. Create a polished production-ready character reference sheet and turnaround board for the same person in image1. Preserve her facial identity, hairstyle, hair color, body proportions, and overall appearance across every panel.\n\nShow full-body front view, 3/4 view, side profile, and back view in a clean horizontal lineup. Add a large hero portrait, neutral and surprised expression studies, close-ups of the eyes, lips, makeup, hair texture, wardrobe details, and a coordinated color palette.\n\nThe character wears a warm orange short-sleeve collared dress with white sneakers. Use a warm cream background, soft studio lighting, refined editorial art-direction, subtle vintage 1990s American diner influence, clean grid layout, thin brown borders, organized annotation panels, cinematic character design presentation, highly consistent face and costume details, realistic photography mixed with premium concept-art styling.\n\nInclude minimal clean labels such as FRONT, 3/4 VIEW, SIDE VIEW, BACK VIEW, HERO PORTRAIT, EXPRESSIONS, HAIR DETAIL, and COLOR PALETTE. Wide landscape composition, high resolution, professional film pre-production character bible.\n\n[Step 2 - Seedance 2.5, video (author's reply https://x.com/EvoLinkAi/status/2107436382927171836)]\nPhotorealistic cinematic 1990s American diner, red vinyl booths, neon signs, chrome details, checkerboard floor, soft natural window light mixed with warm practicals, subtle handheld texture, rich lived-in period detail, heavy film grain. Shot with modern realism and precise temporal control. Use the provided reference image as the exact character lock for the girl with long wavy blonde hair, green-hazel eyes, winged eyeliner, deep maroon lipstick, and an orange dress. Maintain perfect facial structure, hair, head shape, skin texture and clothing consistency at all times. Do not change any other character, scene, action, camera movement, timing, lighting, environment, or visual detail.\n\n0-5s: [Medium Wide] The girl @[Image 1](image_1) sits in a red vinyl booth. She stands up, turns, and collides hard into a waitress carrying a full breakfast tray (eggs, bacon, toast, coffee pot). Impact is sudden and physical.\n5-12s: [Dynamic Tracking into Super Slow-Motion] Collision detonates. Tray, plate, eggs, bacon strips and coffee pot explode upward. Coffee erupts into long liquid ribbons and perfect suspended droplets. Camera orbits smoothly around the impact. Time locks completely at the peak of the spill. Every face freezes in pure shock. Only the girl remains free to move. She freezes for one beat with a clear \"I fucked up\" expression, then quickly grabs two bacon strips and a fried egg from the floating debris.\n12-22s: [Tracking Shot] Still inside the frozen diner, she walks toward the exit door while taking deliberate bites of bacon then egg. All patrons, waitress and flying food stay perfectly suspended in mid-air.\n22-27s: [Medium Shot] Just as she reaches the door and is about to push it open, time snaps back to normal speed. Everything that was floating crashes down at once — plates, eggs, bacon, tray and coffee slam onto the floor with a loud chaotic impact. The waitress and patrons react in sudden real-time shock.\n27-30s: [Medium Close-Up] She pauses, turns slightly, raises her eyebrows and gives a small casual \"it is what it is\" shrug with a quiet half-smile of acceptance, still holding the remaining food. Photorealistic, ultra-detailed fluid and object physics, perfect volume and surface tension on liquids, sharp motion blur only on moving elements, stable character, cinematic lighting, heavy natural film grain, no artifacts, movie-level temporal coherence, high rewatch value.","promptSource":"reply","inputs":"Step 1 photo of the girl -> GPT Image 2.5 turnaround sheet; Step 2 the sheet as @Image 1 for Seedance 2.5","structure":["STYLE/SETTING","CHARACTER LOCK","DO NOT CHANGE","TIMECODED BEATS with [shot type]","PHYSICS/QUALITY TAIL"],"techniques":["two-model pipeline (image sheet -> video)","identity lock","@[Image 1] reference","timecoded beats","bracketed shot types","time-freeze / bullet time"],"styles":["hollywood-blockbuster-realism"],"url":"https://x.com/EvoLinkAi/status/2107436379575840895","author":"EvoLinkAi","date":"2026-10-06","stats":{"views":108798,"likes":1229,"retweets":132,"bookmarks":1342,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2107436206871244800/vid/avc1/1280x1440/CBf3mW4UoGoAL2Do.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2107436206871244800/img/FhJrQqnv09PplN0D.jpg","w":720,"h":810}],"why":"Shows the sheet-then-animate pipeline end to end with both prompts public; bookmarks exceed likes (1.09)."},{"id":"x-2100239390266348014","model":"seedance_2_5","modelLabel":"Seedance 2.5","kind":"video","title":"3D family-film ostrich tries to fly 3 times, sheet-locked","format":"3D animated comedy short (15s, 3 shots, 2 hard cuts)","prompt":"[Step 1 - character sheet (image)]\nA clean Pixar style character reference sheet on white background. Character: Ollie, a young adult ostrich, hyper, goofy, overconfident, lovable. Turnaround row: front, 3/4 front, side, 3/4 back, back. Head expressions row: neutral, happy, surprised, confused, suspicious, sleepy, shocked. Action poses: running, leaping, landing, look back, curious, proud. Color palette swatches for dark and light feathers, salmon beak and legs, olive iris. Detail close ups of eye, beak, feather, foot. Size comparison against a 180cm human, Ollie about 120cm. Big expressive eyes, cream and brown plumage. Studio white background, soft even lighting, editorial character sheet layout, no watermark.\n\n[Step 2 - location sheet (image)]\nA clean animation location sheet, off white background, labelled panels. Location: Skyfall Ridge, a towering three tier mountain with a narrow dirt run up and sheer drops on every side into deep jungle canopy far below. Panels: 01 establishing wide view showing three launch heights, 02 the low ledge, 03 the mid outcrop, 04 the high peak spire, 05 different angles, 06 key props including the flat faced rock spire and palm frond, 07 lighting reference, bright midday. Color palette strip, sky and canopy reference thumbnails. Pixar style 3D animated environment art, soft global illumination, editorial sheet layout, no watermark.\n\n[Step 3 - Seedance 2.5 video prompt]\nSCENE CONTEXT\nOn Skyfall Ridge, a young ostrich with two large green palm fronds lashed to his wings tries three times to fly, launching from three different heights up the same mountain. Every attempt ends with him falling away from the mountain into the deep jungle canopy far below, never back onto the track he ran along. Bright midday, comedy timing with a tender final beat. 15 seconds.\n\nACTIVE REFERENCES\n@ollie (character sheet, loaded second): young adult stylized ostrich, roughly 120 cm tall. Cream and light sand neck and head, dark chocolate and mid brown body plumage with pale cream wing tips, salmon peach beak and long salmon peach legs with three toed feet, olive green iris in very large white sclera eyes, thick expressive brow ridges, long lashes, loose crown tuft. Goofy, hopeful, overconfident, endlessly determined. 100% matches the reference, identical every frame, no morphing, no drift.\n@ridge (location sheet, loaded first): a tall narrow three tier mountain ridge. An orange brown dirt run up track climbs its spine past a low stone ledge eight meters above the treetops, up to a mid outcrop sixty meters above the canopy, up to a high peak spire at the very top. Sheer drops on every side into deep green jungle canopy with a river ribbon and mist between the trunks. Tall grey fractured rock spires stand in open air beyond the ridge, one broad and flat faced. Deep blue sky, big white cumulus at peak height. STYLE REFERENCE ONLY, model extends the world freely, never reproduced 1:1.\n\nLOCATION MAP\nForeground: the orange brown dirt run up with loose pebbles, grass and fern fronds brushing the lower frame. Midground: the three launch points climbing the ridge spine, low ledge, mid outcrop, high peak, each one ending in open air. Background: deep jungle canopy hundreds of meters below with a river ribbon and mist caught between the crowns, and the flat faced rock spire standing in open air along the flight line from the high peak. Canopy haze 25 percent building to 40 percent at the valley floor. Camera works from the outer air side of the ridge so the drop is always readable in frame, operator axis looking back toward the mountain.\n\nSCALE LOCK\n@ollie stands about two thirds the height of an adult human. The low ledge sits about four times his height above the treetops. The mid outcrop sits about thirty times his height above the canopy. The high peak sits so far above the valley that individual trees below read as small green dots. The flat faced rock spire rises roughly six times his height.\n\nFIRST FRAME / BLOCKING\nNon-empty opening frame: @ollie is already at full sprint in the lower left third, seen from a low travelling angle along the dirt run up, legs scissoring, neck lanced forward, the two green palm fronds strapped to his wings held wide and trembling in the airflow, dust kicking behind his heels. The low stone ledge and the empty sky beyond it fill the right two thirds of frame, with treetops visible far below the lip. Rule of thirds, bird on the left third, the drop on the right. Nothing is frozen.\n\nFORMAT MODE\nTimed multishot, exactly TWO HARD CUTS, at 0:04.0 and at 0:08.5. Cuts only at these points, the camera does not cut on its own.\n\nOPTICS\nSHOT 1 (0:00 to 0:04.0): wide at 84 degree FOV for the run, easing to 63 degree as he leaves the ledge, no drift mid-segment.\nSHOT 2 (0:04.0 to 0:08.5): opens wide at 63 degree FOV for the climb and launch, holds 63 degree through the short glide, pushes to 47 degree for the stall and the fall into the trees.\nSHOT 3 (0:08.5 to 0:15.0): opens wide at 84 degree FOV for the peak launch, settles to 47 degree tracking the long glide, pushes to 29 degree for the shouted line at 0:12.3, snaps to 18 degree for the rock impact at 0:13.6, holds 18 degree on the final close-up.\nRectilinear prime lens character, 180 degree shutter motion blur, deep focus in the wides, shallow separation on the close-ups.\n\nCAMERA\nShot 1: the camera is moving from the first frame, a low travelling dolly running alongside him at knee height and at his exact speed, then as he leaves the ledge it swings out past the lip into open air and cranes downward with him, keeping the treetops below in frame so the fall reads as a real drop away from the mountain. Shot 2: camera climbs with him along the ridge on a rising dolly, holds as he launches off the mid outcrop, floats out beside him through the short glide, then tilts and follows him down as he drops into the canopy, ending looking down at the broken treetops. Shot 3: tracking dolly through the peak run up, leaving the mountain with him and flying at wing height off his right flank through the long glide with the valley sliding far below, easing in for the shout, then whipping around to plant dead on the flat face of the rock spire from a slight low frontal angle so the impact reads straight toward the lens, then dropping to ground level in the forest below for the final close-up. The camera is never locked off in any shot. Wide tonal latitude, soft highlight roll-off.\n\nACTION\n0.0s to 1.6s. @ollie sprints up the dirt run up at 40 km per hour toward the low stone ledge, the palm fronds on his wings flapping in loose useless bursts, chin high, eyes bright with certainty.\n1.6s. He hits the lip of the low ledge and leaps out over the edge, fronds thrown wide, chest out, both feet leaving the mountain.\n1.6s to 2.3s. He hangs over open air with zero lift. The certainty drains out of his face in stages, brow first, then the eyes widening, then the beak going slack as he looks down and sees treetops instead of ground.\n2.3s to 3.2s. He drops straight down away from the ridge, legs cycling, fronds fluttering uselessly above him, and crashes through the upper branches of the canopy below, leaves and twigs exploding outward, a startled cloud of small birds bursting from the tree crowns.\n3.2s to 4.0s. He is left hanging upside down in a fork of branches, dazed, one frond bent over his face, a single leaf drifting down past him. He blinks, then his eyes narrow with fresh determination.\n4.0s HARD CUT\n4.0s to 5.4s. He sprints up the next section of the ridge track, higher now, the drop on both sides steeper, fronds beating with real purpose, dust trailing behind him, eyes locked on the mid outcrop ahead.\n5.4s. He launches off the tip of the mid outcrop, legs still cycling through empty air before tucking back.\n5.4s to 6.8s. The fronds catch and he actually lifts, rising two meters and gliding out away from the mountain over a huge drop. His eyes go enormous with disbelief, then crinkle into a wide open beaked grin, and he gives one small triumphant flap.\n6.8s. The lift dies. The fronds go limp, he stalls, and his face collapses from joy to pure alarm in three frames.\n6.8s to 8.5s. He tumbles end over end down through open air, far from the ridge, and punches into the deep canopy much further below, snapping through two layers of branches, leaves spraying out, until he thumps onto the shadowed forest floor flat on his back with his legs still cycling in the air.\n8.5s HARD CUT\n8.5s to 10.2s. He rolls upright in the forest gloom, shakes his whole body so the dirt and leaves fly off in a cloud, re-seats both fronds with a determined tug, and sprints all the way up the ridge track to the high peak spire, the run up reading as long and steep, dust plume stretching far behind him.\n10.2s. He launches off the high peak in one enormous committed leap, fronds thrown to full span, the valley an immense drop beneath him.\n10.2s to 12.3s. This time it holds. He soars out across the open sky in a long steady glide, gaining altitude, neck feathers streaming back, clouds passing at his level, the canopy sliding far below, eyes shining and wet with pure disbelieving joy.\n12.3s to 13.4s. He throws his head back mid glide, beak wide, whole chest lifting, and shouts.\n13.6s. His focus snaps forward. He spots the flat faced rock spire dead ahead in his flight path, pupils pinning to dots, brows shooting up, fronds flailing as he tries to bank away.\n13.6s to 14.2s. He cannot correct in time and slams face first into the near face of the rock spire, feathers puffing on impact, fronds splaying flat against the stone, body compressing then peeling away.\n14.2s to 15.0s. He slides down the rock face and lands face down on the forest floor at its base, wings splayed, neck stretched straight forward, cheek and open beak pressed into the dirt, dappled light falling through the canopy onto him. One torn green leaf lies stuck across the top of his beak. His eyes are half lidded and glazed. At 14.6s his gaze flicks up toward the sky far above the trees, holds one beat of quiet longing, and then he blinks slowly once and a tiny hopeful spark comes back into his eye as the frame ends.\n\nPERFORMANCE\nFeather level detail throughout: individual barbs catching sun along the wing and frond edges, downy neck fluff lifting and settling with every head turn, long lashes visible in the close-ups, wet living eyes with sharp catch lights, visible chest rise between breaths. Every fall is sold through the face in sequence, hope first, then the widening, then the collapse, with the added beat of him looking DOWN and realising there is nothing under him. The joy in shot 3 is played big and honest, eyes glassy and mouth wide, so the impact lands harder. The final beat is played small and restrained, no cartoon stars, no exaggerated groan, just a dazed half lidded look, one glance up at the sky, and a single slow blink that carries the whole feeling. Broad readable cartoon acting with real weight and real heart behind it.\n\nPHYSICS\nMass and inertia carry through every stride, leap, glide and fall. Legs compress under load on each footfall and the body dips with it. Each fall accelerates under gravity with real terminal build, never a soft float. Branches bend, snap and spring back as he passes through them, leaves and twigs spraying outward with correct scatter. Dust behaves as fine dry particulate on the track, bursting on impact and settling slowly. Correct contact shadows on the dirt, the stone, the rock face and the forest floor. The palm fronds bend, flex and trail air pressure, fraying a little more with each crash. In the glides the trailing frond tips flutter and the neck fluff streams backward. No floating props. The rock impact reads through his body flattening against the stone and sliding down under its own weight, with no damage to the rock. The torn leaf rests with weight on his beak and shifts slightly when he blinks.\n\nLIGHTING\nHigh midday sun from the upper left and slightly behind, cutting a hard rim along the back of the neck and the top edge of the wings and fronds, with warm bounce fill coming up off the pale orange dirt on the ridge. WB locked 5600K. Sky is the ambient fill. Inside the canopy the light drops to cool green shadow broken by hard dappled shafts. In the glides the sun sits behind the fronds and lights the leaf veins translucent green. In the final close-up a warm dappled shaft falls across his face with a soft short contact shadow under the beak and a clear catch light held in the visible eye.\n\nCOLOR GRADE\nSunlit orange brown dirt against cool grey fractured rock, saturated jungle green in the canopy deepening to dark shadow green in the forest floor beats, deep clean blue in the upper sky. The salmon peach beak and legs stay the warmest note in frame in sun and shade. The olive iris holds against the bright white sclera. Warm highlights, gently lifted shadows with a faint sky blue in them, no crushed blacks. Color tied to source and surface, not a flat list.\n\nWARDROBE\nTwo large green palm fronds lashed to his wings with thin vine cord, veins and serrated edges clearly readable, bright translucent green when backlit. Crisp and whole at the start, one bent rib and a dirt smear after the first fall, frayed tips and torn leaves after the second, ending torn with one loose leaf resting on his beak.\n\nAUDIO\nSound design first, with a scored third flight. 0.0s to 1.6s: fast footfalls on dry dirt, scattering pebbles, dry leaf rustle from the fronds. 1.6s to 2.3s: the footfalls stop dead, replaced by thin wind and a small nervous gulp. 2.3s to 3.2s: rising air rush, then a heavy crash of snapping branches, spraying leaves and startled birds. 4.0s to 5.4s: heavier faster footfalls climbing. 5.4s to 6.8s: air rush and leaf flutter, a small rising musical sting on the little victory flap. 6.8s: the sting cuts out, a descending comedic whoosh, then two layers of branch crash and a soft body thump on the forest floor. 8.5s to 10.2s: a long fast run up, footfalls building. 10.2s: air rush returns and a warm orchestral swell builds under the glide, strings lifting. 12.3s to 13.4s, @ollie (ecstatic, shouting mid glide, head thrown back, voice cracking with joy): \"I can fly!\" High energy, boyish, comedic, no subtitles. 13.6s: the swell snaps into a short alarmed squawk. 14.2s: a loud comedic thud and feather puff against the rock, then a body slide down stone. 14.2s to 15.0s: everything drops away to soft forest ambience, distant birdsong, one leaf rustle and a single quiet breath.\n\nSTYLE\nFeature quality 3D animated film look in the Pixar and DreamWorks tradition. Stylized cartoon proportions with physically believable rendering, subsurface scattering through the beak, leaf fronds and thin feather edges, groomed feather simulation, soft global illumination, ray traced shadows, clean specular highlights, shallow depth cues on close-ups. Glossy, bright, warm family comedy visual language with sincere emotional close-ups. No live action footage, no text, no captions, no logos, no watermark.\n\nOUTPUT SETTINGS\n15 seconds total, 1080p, 30fps, real time throughout with no speed ramps, three shots separated by two hard cuts at 0:04.0 and 0:08.5.\n\nPOSITIVE LOCKS\n@ollie is the only character and is present in every shot. His proportions, cream neck, dark brown plumage, pale cream wing tips, salmon peach beak and legs, olive iris and crown tuft stay identical across all three attempts, progressively dirtier and more leaf strewn but never redesigned. The green palm fronds stay attached to his wings from the first frame to the last. Every launch carries him off the mountain into open air, and every landing happens in the jungle canopy or forest floor far below the track he ran on. The camera keeps moving in all three shots and always keeps the drop readable under him. Eyes stay natural, no eye glow. Contact shadows read clearly in every shot. The ridge, the three launch heights, the canopy, the rock spire, sky and cloud layer stay the same location and same time of day across all three shots. The flat faced rock spire keeps its face angled toward camera for the final impact. The torn leaf stays across his beak for the entire final close-up. Frame stays clean of text, subtitles, UI, logos and watermarks. Camera cuts only at 0:04.0 and 0:08.5.","promptSource":"thread","inputs":"@ollie character sheet + @ridge location sheet, both generated first from the thread prompts","structure":["SCENE CONTEXT","ACTIVE REFERENCES","LOCATION MAP","SCALE LOCK","FIRST FRAME / BLOCKING","FORMAT MODE","OPTICS","CAMERA","ACTION (timecoded)","PERFORMANCE","PHYSICS","LIGHTING","COLOR GRADE","WARDROBE","AUDIO","STYLE","OUTPUT SETTINGS","POSITIVE LOCKS"],"techniques":["character sheet + location sheet as @refs","scale lock","exact hard-cut timestamps","FOV per shot","timecoded action to 0.1s","positive locks instead of negatives","dialogue line with delivery note"],"styles":["3d-animated-family-film"],"url":"https://x.com/abxxai/status/2100239390266348014","author":"abxxai","date":"2026-09-16","stats":{"views":120252,"likes":1075,"retweets":105,"bookmarks":1517,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2100239337237712896/vid/avc1/1920x1080/dUmb0uMd4eMWBIX_.mp4?tag=16","poster":"https://pbs.twimg.com/amplify_video_thumb/2100239337237712896/img/q0r86Ef-IJg6HhNT.jpg","w":1280,"h":720}],"why":"The definitive long-form Seedance 2.5 template (~2,400 words, 18 sections) posted as a 3-step tutorial; 1,517 bookmarks vs 1,075 likes (1.41)."},{"id":"x-2109224200217198796","model":"seedance_2_5","modelLabel":"Seedance 2.5","kind":"video","title":"Baby dragon burns the roast, learns a tiny flame","format":"30s fantasy comedy short (timecoded)","prompt":"Cinematic 16:9 fantasy short film, 30 seconds, 30fps, photorealistic, warm golden-hour light, rich film color grading, shallow depth of field, smooth camera, natural motion blur, heartwarming comedy tone.\n\nCharacters:\n1) A young woman with messy wavy blonde hair, thin round glasses, a linen cream blouse with rolled sleeves and a dark brown pinafore apron dress. Expressive, funny, warm face.\n2) Her pet baby dragon: a huge, friendly, horse-sized dragon with white-cream scales covered in pink-magenta patterns, a crest of soft pink spikes, big amber eyes with vertical pupils, a gentle snout. It acts like a naughty, affectionate puppy.\n\nSetting: a rustic medieval cottage courtyard and kitchen: a stone oven, a wooden table, hanging lavender and herbs, stacked firewood, a low stone wall, green hills in the background. Later, the warm inside of the cottage with a wooden table, a candle, pots on shelves, and sunbeams through a small window.\n\n0-3s: Wide shot, courtyard. The woman turns a big pink raw pork roast on a metal spit over the table. The dragon's head peeks over the stone wall on the right, watching curiously. She talks to the dragon, laughing, asking it for just \"a little fire\".\n3-5s: Extreme close-up of the dragon's scaly snout and nostrils, then a close-up of her smiling face, laughing and confident.\n5-7.5s: The dragon opens its mouth and unleashes a huge blast of fire at the roast, flames and sparks everywhere. She throws her hands up in panic.\n7.5-10s: Extreme close-ups of her shocked face, wide eyes, hair blown by the heat, hands raised, shouting \"No, no, no!\". Cut to the roast, completely burnt black and surrounded by flames.\n10-12s: She grabs a wooden bucket and throws water on the fire, a giant cloud of steam rises. The dragon laughs with its mouth open, tongue out.\n12-15s: Steam clears. She stands with her arms out, scolding the dragon like a child. The dragon lowers its head with guilty puppy eyes, and she gently touches its snout, forgiving it.\n15-18s: Cut to the cozy kitchen. She wipes her forehead, then cuts a small piece of fresh meat and puts it on a tiny skewer, calmly explaining to the dragon how little fire is needed. The dragon leans in beside her.\n18-21s: Close-up: she holds the skewered meat cube. The dragon carefully breathes a tiny, gentle flame, and the meat sizzles with small sparks. She smiles proudly.\n21-23s: Extreme close-up: the perfectly seared meat cube on the skewer, in front of the dragon's amber eye, a reflection of tiny fire in its vertical pupil.\n23-26s: She sits at the table with a plate of cooked meat, cuts a piece, tastes it with a delighted face and gives a thumbs-up. She feeds a piece to the dragon, who opens its mouth happily.\n26-30s: Wide, warm shot of the cottage interior, golden sunbeam through the window, a candle on the table. She eats while the dragon rests its big head on the table next to her, its eyes slowly closing in contentment, its body curled behind. Peaceful, heartwarming final frame, hold.\n\nStyle: Pixar-quality emotional storytelling with photorealistic detail, warm golden and orange tones, soft volumetric light, steam and sparks, cinematic grading.\n\nAudio: gentle fantasy folk music (soft strings and flute), crackling fire and a whoosh on the fire blasts, steam hiss, a deep playful dragon rumble and purr, her laughter and short dialogue, light kitchen sounds.","promptSource":"reply","structure":["FORMAT/STYLE LINE","CHARACTERS (numbered)","SETTING","TIMECODED BEATS","STYLE","AUDIO"],"techniques":["numbered character bible","timecoded beats","comedy setup-payoff","audio palette"],"styles":["3d-animated-family-film"],"url":"https://x.com/Alina_with_Ai/status/2109224200217198796","author":"Alina_with_Ai","date":"2026-10-11","stats":{"views":59999,"likes":1043,"retweets":109,"bookmarks":319,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2109223045345026048/vid/avc1/1280x720/39kHfpWAOobmHisu.mp4?tag=29","poster":"https://pbs.twimg.com/amplify_video_thumb/2109223045345026048/img/f_C8YYQe2P17vVXM.jpg","w":1280,"h":720}],"why":"Pet-dragon cooking gag with a sweet payoff; 1,043 likes / 60k views. Same concept re-prompted on 2026-10-23 by mehwishkiran07 (473 likes, 126k views); a creator in the replies (aivoxyy) says these copy his video.","alsoAt":["https://x.com/mehwishkiran07/status/2113452500573646908"]},{"id":"x-2106953503763763654","model":"seedance_2_5","modelLabel":"Seedance 2.5","kind":"video","title":"Frozen crowd of famous-painting figures on museum steps","format":"2-shot surreal live-action sequence (14s + 15s)","prompt":"== SHOT 1 — 14 SECONDS ===\nLive-action film footage from a period drama set. ARRI Alexa, 50mm spherical lens,\nnatural overcast daylight, cool desaturated grade, 35mm film grain. Real\nphotography of real human beings — visible skin pores and texture, stubble, fine\nflyaway hairs, real catchlights in the eyes, subsurface light through ears and\nfingers, natural blemishes and asymmetry, real fabric weave and wrinkles. A\nphotograph of real actors on a real location. Not a painting, not a render, not an\nillustration.\nThe character in the reference image is the hero — keep their face, hair and\noutfit exactly as shown, consistent in every frame.\nLOCATION: A grand neoclassical museum façade — tall columns, triangular pediment,\narched doorway — above a wide grey stone staircase.\nFIXED CAST AND BLOCKING (identical positions in every frame, never rearranged).\nHundreds of costumed background actors — ordinary real people, working actors and\nextras, dressed by a wardrobe department in screen-accurate historical costume,\neach styled to resemble a figure from a famous painting. They stand shoulder to\nshoulder in tight rows filling the staircase edge to edge, only body-width gaps\nbetween them, no aisle, no cleared path:\nFRONT ROW, left to right: an elderly actress in a full black mourning dress and\nwhite lace cap · a ballet dancer in a white tulle tutu and black ribbon choker · an\nactor in a black suit and red tie with a bowler hat and a real green apple hanging\non a fine wire in front of his face as a practical prop · a gaunt actor with a real\nred beard, straw hat and worn blue workman's jacket · a stunt performer in real\ngilded plate armor.\nSECOND ROW, left to right: a heavyset bearded actor in a gold-embroidered doublet,\nfur collar and flat jewelled cap · an actress in a dark green-brown Renaissance\ngown and sheer veil, hands folded, faint closed-lipped smile · an actress in a\nyellow bodice, blue apron and white linen cap.\nTHIRD ROW, left to right: an actress in a red embroidered Mexican dress with fresh\nflowers braided into her hair and strong dark brows · [THE HERO'S MARK — dead\ncenter] · an actor in a bicorne hat and blue and white military uniform.\nBEHIND THEM, hundreds deep: women in crimson turbans and white linen bonnets, men\nin black coats with starched white ruffs, a young actress in a blue and gold\nheadwrap with a single pearl earring, rows of men in Edwardian tweed.\nEvery face is a real human face with its own bone structure, weight and age.\nNobody's skin is smooth or flat.\nTIMING:\n0:00–0:03 — CLOSE-UP on the hero's face filling the frame, facing camera front-on,\nstanding at the bottom of the steps. Background soft and unreadable. They take a\nslow drag from a cigarette, lower it, and exhale a plume of smoke across the lens.\n0:03–0:06 — The camera smoothly PULLS BACK and widens as the smoke clears,\nrevealing the hundreds of costumed figures packed on the staircase behind and\naround the hero — completely frozen, statue-still, unblinking, staring into camera.\nSettles into a medium shot, hero waist-up, crowd sharp and clearly visible behind.\n0:06–0:07 — The hero turns around, putting their back to camera.\n0:07–0:12 — They walk up the steps at a NORMAL, BRISK WALKING PACE — natural\nreal-time speed. They squeeze between the frozen bodies, turning their torso to\nslip through, brushing shoulders. Their route: up between the ballerina in the\nwhite tutu and the man with the green apple in front of his face, past the\ngold-doubleted king on their left and the woman in the green-brown Renaissance gown\non their right, brushing the gilded armor as they pass. Nobody steps aside for\nthem. Nobody moves.\n0:12–0:14 — They arrive at their mark, dead center of the third row, with the\nwoman in the red embroidered Mexican dress on their left and the man in the bicorne\nhat on their right. They stop and turn back around to face camera. Hold. The hero\nmotionless, surrounded on all four sides, the crowd still completely frozen. END.\nSound: no music, no soundtrack. Only wind across stone and shoes on the steps.\nDO NOT include any of the following. Nobody may look painted, illustrated, drawn,\nbrushstroked, flat, 2D, smoothed, airbrushed, waxy, plastic, doll-like, CGI,\nrendered, cartoon or anime. No canvas texture, no brushstrokes, no oil-paint sheen,\nno picture frames. The crowd must not move at all in this shot and must not change\nposition, costume or order. The crowd must not part, form an aisle, or leave empty\nspace around the hero. The hero must not be in slow motion or drift slowly. No\ncuts, no camera shake, no morphing faces, no text, no watermark.\n=== SHOT 2 — 15 SECONDS — CUT ON THE FIRST MOVE ===\nLive-action film footage from a period drama set. ARRI Alexa, 50mm spherical lens,\nnatural overcast daylight, cool desaturated grade, 35mm film grain. Real\nphotography of real human beings — visible skin pores and texture, stubble, fine\nflyaway hairs, real catchlights in the eyes, natural blemishes and asymmetry, real\nfabric weave and wrinkles. Not a painting, not a render, not an illustration.\nThe character in the reference image is the hero — identical face, hair and outfit\nto the previous shot.\nLOCATION: The same grand neoclassical museum façade — tall columns, triangular\npediment, arched doorway — above the same wide grey stone staircase.\nFIXED CAST AND BLOCKING — exactly the same people in exactly the same positions as\nbefore, nobody added, removed or rearranged. Hundreds of costumed background actors\n— ordinary real people in screen-accurate historical costume, each styled to\nresemble a figure from a famous painting — standing shoulder to shoulder in tight\nrows filling the staircase edge to edge, only body-width gaps, no aisle:\nFRONT ROW, left to right: an elderly actress in a full black mourning dress and\nwhite lace cap · a ballet dancer in a white tulle tutu and black ribbon choker · an\nactor in a black suit and red tie with a bowler hat and a real green apple hanging\non a fine wire in front of his face · a gaunt actor with a real red beard, straw hat\nand worn blue workman's jacket · a stunt performer in real gilded plate armor.\nSECOND ROW, left to right: a heavyset bearded actor in a gold-embroidered doublet,\nfur collar and flat jewelled cap · an actress in a dark green-brown Renaissance gown\nand sheer veil · an actress in a yellow bodice, blue apron and white linen cap.\nTHIRD ROW, left to right: an actress in a red embroidered Mexican dress with fresh\nflowers in her hair · THE HERO, dead center · an actor in a bicorne hat and blue and\nwhite military uniform.\nBEHIND THEM, hundreds deep: women in crimson turbans and white linen bonnets, men\nin black coats with starched white ruffs, a young actress in a blue and gold\nheadwrap with a single pearl earring, rows of men in Edwardian tweed.\nTIMING:\n0:00 — Open on a WIDE SHOT of the full façade and the entire staircase, already in\nmotion. On the very first frame the whole crowd is mid-convulsion. No build-up, no\nlead-in, nobody standing still.\n0:00–0:10 — The crowd performs a wild, continuous, full-body rolling motion. The\ncycle: heads thrown ALL THE WAY BACK, chins pointed up at the sky, spines arched\nbackward — then the entire torso whips forward and folds almost double at the hips,\nheads hanging down near their knees, hair and hats flying — then the body unrolls\nback up and the head snaps back again, chin to the sky. Over and over, without\npause, never resting at neutral. Arms hang loose and swing and flail with the\nmomentum. Loose, rubbery, boneless, possessed. Different sections of the staircase\nare out of phase, so one block is folded double while the block beside it is arched\nback with heads up, and the motion ripples across the crowd. Meanwhile the camera\npulls back and rises slightly, widening to take in the whole façade.\n0:10–0:15 — The camera settles and holds locked off. The crowd keeps convulsing at\nfull intensity to the last frame. The hero has not moved once — standing relaxed and\nunbothered at the dead center, facing camera, hands down, not dancing, not bending,\nnot reacting.\nSound: no music, no soundtrack. Only fabric snapping, armor rattling, breath and\nshoes scuffing stone.\nDO NOT include any of the following. Nobody may look painted, illustrated, drawn,\nflat, 2D, smoothed, waxy, plastic, CGI, rendered, cartoon or anime. Nobody may\nchange position, costume or order from the previous shot. The crowd must never bow,\ncurtsy, nod, greet, dip gently, bend shallowly, keep their heads level, move\nstiffly, or move in robotic unison, and must never stand still. The hero must not\ndance, bend or move, must not stand off to one side or at the edge of frame, and\nmust not be in close-up. The crowd must not part, form an aisle, or leave empty\nspace around the hero. No slow motion, no cuts within the shot, no camera shake, no\nmorphing faces, no text, no watermark.","promptSource":"reply","inputs":"one hero reference image","structure":["=== SHOT N — DURATION ===","CAMERA/FILM STOCK LINE","REALISM BLOCK","HERO LOCK","LOCATION","FIXED CAST AND BLOCKING (row by row)","TIMING (timecoded)","SOUND","DO NOT include"],"techniques":["row-by-row crowd blocking","anti-painting realism block","shot 2 cut on the first move","timecoded beats","long negative list","no-music sound note"],"url":"https://x.com/iamsofiaijaz/status/2106953503763763654","author":"iamsofiaijaz","date":"2026-10-05","stats":{"views":55704,"likes":448,"retweets":48,"bookmarks":321,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2106953407399702528/vid/avc1/1280x720/011Df8vM8Yw7FDSM.mp4?tag=29","poster":"https://pbs.twimg.com/amplify_video_thumb/2106953407399702528/img/C5wCISviDEzt5Wn1.jpg","w":1280,"h":720}],"why":"Viral art-history crowd concept (statue-still painting figures, then convulsing) with a meticulous blocking prompt; 448 likes, 321 bookmarks (0.72)."},{"id":"x-2109235247162245339","model":"seedance_2_5","modelLabel":"Seedance 2.5","stack":"Midjourney V8.2 → Seedance 2.5","kind":"video","title":"Gothic ink anime sword fight from a Midjourney sref","format":"MJ still -> Seedance 2.5 animated action","prompt":"[Midjourney v8.2 still (style reference)]\n--sref 2432028955 --profile d3zvtyp\n\n[Seedance 2.5 image-to-video]\nPremium dark fantasy 2D anime cinematography fused with gothic ink illustration, high-sakuga sword choreography and experimental action filmmaking. Preserve the reference aesthetic of intricate black linework, rough hand-drawn textures, charcoal-gray shading, muted violet skin tones, elaborate gothic silhouettes and aggressive neon pink, acid green and prismatic highlights. Ultra-fast, brutally aggressive swordsmanship with relentless blade exchanges, acrobatic counters, spinning slashes, sudden reversals, impossible footwork and explosive multi-hit combinations, maintaining constant offensive pressure from both fighters. Every clash produces razor-sharp neon streaks, violent chromatic sparks, fractured ink splashes and brief flashes of saturated light that illuminate the surrounding darkness. Radical cinematic perspectives combine ground-skimming tracking shots, aggressive Dutch angles, extreme foreshortening, rapid orbital rotations, blade-following whip pans, sudden perspective inversions and seamless camera movements threading through crossing swords. Insert lightning-fast detail cuts of narrowed eyes, tightening fingers, twisting wrists, grazing blades and sparks scattering across faces, immediately returning to ferocious wide-angle combat. Dramatic foreground occlusion, near-lens blade strikes, shifting focal distances and rapid depth transitions create visceral immersion. Dark atmospheric voids, drifting ash, torn feathers and vibrating debris react to the force of each exchange. Precise silhouette control, strong visual rhythm and high-contrast graphic compositions preserve clarity even during overwhelming bursts of speed. No slow motion, no idle posing, no pauses between attacks. Every movement flows directly into another attack, parry or counterattack. Hand-drawn anime expressiveness and premium 2.5D cinematic depth preserve the original illustration style without turning the characters into realistic CGI.\nTwo gothic elven swordswomen engage in a relentless duel inside a ruined cathedral swallowed by darkness. The black-haired warrior with her feathered crown attacks with a prismatic blade, immediately colliding with the silver-haired warrior's neon sword. They explode into a succession of impossibly fast sword exchanges, spinning counters, airborne reversals and close-range blade locks that instantly break into new attacks. The camera spirals tightly around their crossing weapons, dives beneath sweeping strikes, whips past their faces and follows a blade within inches of the lens. Sudden close-ups capture furious expressions, razor-thin near misses and sparks streaking across their skin. Both warriors continuously reverse the advantage through increasingly elaborate combinations, ricocheting off broken pillars, intercepting attacks from impossible angles and chaining acrobatic movements into ferocious counterstrikes. Every impact briefly floods the monochromatic environment with violent pink, green and rainbow light. The battle escalates without interruption, ending mid-combination as both warriors launch simultaneous devastating attacks directly toward each other.","promptSource":"thread","inputs":"Midjourney V8.2 still made with --sref 2432028955 --profile d3zvtyp, used as the start frame/reference","structure":["MJ: --sref + --profile","Seedance: STYLE FUSION","PRESERVE REFERENCE AESTHETIC","CHOREOGRAPHY","CAMERA","FX/COLOR"],"techniques":["sref still as reference","preserve-the-reference aesthetic block","sakuga action vocabulary"],"url":"https://x.com/aimikoda/status/2109235247162245339","author":"aimikoda","date":"2026-10-11","stats":{"views":21906,"likes":338,"retweets":18,"bookmarks":177,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2109234626363367424/vid/avc1/2560x1440/sQ1WYllxKQzFLDtf.mp4?tag=29","poster":"https://pbs.twimg.com/media/HUWCxQxWQAAJezl.jpg","w":1280,"h":720}],"why":"Shows the MJ-look-then-Seedance-motion pipeline with both halves public; 338 likes, 177 bookmarks (0.52)."},{"id":"x-2101324357108658433","model":"wan_3_0","modelLabel":"Wan 3.0","kind":"video","title":"Change the camera angle, keep the exact same action","format":"video-to-video re-angle","prompt":"STEP 1: Upload your video (must be continuous one shot) to any platform that supports WAN 3.0 \n\nSTEP 2: Use the prompt below (adjust it to your video):\n\n\"Use the original video @ TAG ORIGINAL VIDEO as the exact action reference \n\n0–1s: Camera stays exactly as in the original video as the wolf walks toward the scooter.\n\n1–3s: Hard cut to a tight front close-up as the wolf continues walking toward and reaches the scooter.\n\n3–5s: Hard cut to a high angle above as the wolf as he gets onto the scooter and starts riding.\n\n5–7s: Hard cut to a full shot as the wolf rides the scooter down the street.\n\n7–9s: Hard cut to a side tracking shot as he keeps riding down the street.\n\n9-10s: Hard cut to an over the shoulder shot as he rides forward and notices the banana peel in his path.\n\n10–12s: hard cut to a birds eye view shot as the fallen wolf is rolling over the asphalt. \n\n12-13s : hard cut to an insert shot of his fist as wolf slams it into the asphalt. \n\nOnly the camera angle and framing change. Make sure every action, movement, timing and performance exactly identical to the original video @ TAG ORIGINAL VIDEO. The action continues seamlessly across every cut.\"\n\nNOTE: If some scenes didn't work (action was different than original video) simply regenerate the video, that usually fixes the problem.","promptSource":"thread","inputs":"your own continuous one-shot video","structure":["STEP 1 upload a continuous one-shot video","STEP 2 prompt: keep action/timing, new camera position","adjust-to-your-video note"],"techniques":["video reference","keep-performance lock","camera-only change"],"url":"https://x.com/Framer_X/status/2101324357108658433","author":"Framer_X","date":"2026-09-19","stats":{"views":65138,"likes":1169,"retweets":89,"bookmarks":880,"asOf":"2026-10-27"},"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2101323459963875328/vid/avc1/1368x1518/Efmz0l8NTmuuwNYA.mp4?tag=29","poster":"https://pbs.twimg.com/amplify_video_thumb/2101323459963875328/img/YR5BGhcX9PjuAhLD.jpg","w":720,"h":798}],"why":"Wan 3.0 answer to the Seedance re-shoot trend (credited to @rourke_heath, author says Wan beats Seedance 2.5 here); 1,169 likes, 880 bookmarks (0.75), 65k views."}],"styles":[{"id":"jelly-gummy-3d","name":"Jelly / gummy 3D","aliases":["jelly world","gummy bear test","squishy 3D","Gimme Gummy"],"kind":"video","family":"3d-toy","look":"Translucent candy-colored solids with subsurface glow, glossy highlights and wobble physics: things squash, jiggle and slice cleanly. Pastel seamless backdrops, macro framing and side-by-side model comparisons.","clause":"[subject] made of translucent jelly, glossy gummy material with subsurface glow, soft wobble and squash physics, candy colors, macro studio shot on a pastel seamless background","negative":"opaque matte plastic, rigid motion, realistic food texture, dark moody lighting, cluttered scene","models":[{"model":"Claude Opus 5.5 (three.js code)","note":"https://x.com/semichenkko/status/2110131790136401989"},{"model":"Claude Opus 5.5 vs GPT-6 Astra","note":"https://x.com/vib3coded/status/2103741107225907467"}],"trend":{"direction":"rising","why":"Jelly/gummy probe since Sep 10 (>=150 likes): A 6 posts / 6.6k L, B 9 / 5.7k L, C 5 / 4.1k L; 4.0k likes / 630k views (Oct 13), 1.1k / 489k (Oct 14). Pinterest Predicts 2026 lists 'Gimme Gummy' as a 2026 trend.","firstSeen":"2026-09"},"evidence":[{"url":"https://x.com/semichenkko/status/2110131790136401989","author":"semichenkko","date":"2026-10-13","views":630760,"likes":3977,"bookmarks":1227,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2110131742086500352/vid/avc1/720x910/tTXQTHdmUbFyS5wv.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2110131742086500352/img/g1OYPRpR370-gIrm.jpg","w":1080,"h":1366}]},{"url":"https://x.com/vib3coded/status/2103741107225907467","author":"vib3coded","date":"2026-09-26","views":447239,"likes":2095,"bookmarks":1318,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2103740927097311233/vid/avc1/720x810/9jIIA3q50_FGOOoY.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2103740927097311233/img/HuQGON-3qZPNoS7V.jpg","w":1440,"h":1620}]},{"url":"https://x.com/vib3coded/status/2109424502237016076","author":"vib3coded","date":"2026-10-11","views":144439,"likes":1139,"bookmarks":554,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2109424031220879360/vid/avc1/720x910/2AhYMX9uDMvGpg8n.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2109424031220879360/img/vI6HI65BV14xyLkN.jpg","w":1280,"h":1620}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShx1vKJsFyW2YXZvKFlwIsUwzXGGZQycgJO0TPjaEpIJkySdPg/","image":"https://i.pinimg.com/originals/d0/25/d2/d025d25258fdf5dd59f994a36dda07ca.webp","title":"Rebel Edibles | Logo And Brand Identity Design -...","date":"2026-09-25","w":1199,"h":1753},{"url":"https://www.pinterest.com/pin/e1_AfqPShyLjAhJeMJUhW4sZ2KurBMeOV62M2YDI0-F1q1FRJhGtc_F/","image":"https://i.pinimg.com/originals/8d/f5/0d/8df50d9d0782f9fa140e9910f45a8bad.jpg","date":"2026-08-20","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShyE-1oRDMHZEf_OWA4_1HWNbUHDqN30d0uYs798MzrH_Wqgyg/","image":"https://i.pinimg.com/originals/40/86/39/40863939a8881e3e3dd56e7afc02bb07.jpg","date":"2026-07-16","w":810,"h":1440},{"url":"https://www.pinterest.com/pin/e1_AfqPShyPe4w8Wg047_0uZNN7Y5I1J37k8lNBEhXFo84ldXmXZjkp/","image":"https://i.pinimg.com/originals/41/85/b1/4185b1ae17cf6ed1e136eac4fa225e5b.jpg","date":"2026-07-02","w":900,"h":1200},{"url":"https://www.pinterest.com/pin/e1_AfqPShzccudNJZDaoIhsfKEdMtL1ej4Rbnl0nLt2WS5_0lgNgn4X/","image":"https://i.pinimg.com/originals/42/65/71/42657136798a235f309cdd306701badc.jpg","title":"3D Jelly Gradient Art | Modern Aesthetic Design","date":"2026-05-01","w":1024,"h":1536},{"url":"https://www.pinterest.com/pin/e1_AfqPShxHICRam92CDT3JiXNF8gn9fm69-g9qgtq2iHgLd0WutjEzEw/","image":"https://i.pinimg.com/originals/73/a4/96/73a496917cbfd0d0d9c1605b29b2f89b.jpg","date":"2026-03-22","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShw4avfe06WDW_QLk9DbXusH-xqQuaqopd7v_tu3vnHG0-bhIQ/","image":"https://i.pinimg.com/originals/cd/f8/76/cdf876cda9f46212c6e822b0adadf262.jpg","date":"2026-02-06","w":736,"h":1104},{"url":"https://www.pinterest.com/pin/e1_AfqPShz9vWa-r20Z6N7Qfb6uh0lvpiZhIl8aToOPttk5EGzLxSv_/","image":"https://i.pinimg.com/originals/6e/36/9a/6e369a864717855e4d662b785fa1a4a5.png","title":"Eyes in jello","date":"2025-09-27","w":1024,"h":1024},{"url":"https://www.pinterest.com/pin/e1_AfqPShxwKvVpyL1fdg_MDTMGcv6lJuJiDE3zvsmLu1tF-csHqGk/","image":"https://i.pinimg.com/originals/13/81/e1/1381e1e67ae401ac5d800f3a6c777d35.jpg","date":"2025-05-13","w":1224,"h":1632},{"url":"https://www.pinterest.com/pin/e1_AfqPShz6RqkvOGykHzd54OZ0KYL9-XqJmcwAt6MBPERsKiZOBk50/","image":"https://i.pinimg.com/originals/c6/e0/4f/c6e04f580acccef88d911c63b8cf22c9.jpg","title":"꩜ 3d jelly png ۶ৎ","date":"2025-02-20","w":1080,"h":1338}],"related":["asmr-cutting","code-motion-design"],"prompts":[],"rank":7},{"id":"miniature-tiny-world","name":"Tiny people, giant world","aliases":["miniature world","tilt-shift","tiny world","micro adventure"],"kind":"both","family":"3d-toy","look":"Small figures in an everyday environment shot like macro photography: coffee cups as skateparks, leaves as rooftops. Tilt-shift blur, crisp texture on the giant object and warm natural light.","clause":"a tiny miniature [subject] in a giant everyday world, macro lens, tilt-shift shallow depth of field, oversized everyday objects as landscape, warm natural light, crisp material texture","negative":"human-scale perspective, deep focus everywhere, flat lighting, cartoon rendering","models":[{"model":"Seedance 2.5","note":"https://x.com/harboriis/status/2104106520808157221"},{"model":"Seedance 2.5 (ElevenCreative)","note":"https://x.com/itxabdullaa/status/2105968983660953899"}],"trend":{"direction":"fading","why":"Tiny/miniature probe since Sep 10 (>=150 likes): A 1 post / 173 L, B 2 / 658 L, C 17 / 8.2k L; the September 'your selfie as a miniature world' prompt wave has cooled.","firstSeen":"2025; GPT Image 2.5 wave 2026-09"},"evidence":[{"url":"https://x.com/itxabdullaa/status/2105968983660953899","author":"itxabdullaa","date":"2026-10-02","views":134503,"likes":352,"bookmarks":33,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2105968905474998275/vid/avc1/1280x720/3CGJ5EzwA6mZGWmP.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2105968905474998275/img/VUDARevxiJq0zuoV.jpg","w":1920,"h":1080}]},{"url":"https://x.com/harboriis/status/2104106520808157221","author":"harboriis","date":"2026-09-27","views":39005,"likes":227,"bookmarks":276,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2104106404512768000/vid/avc1/1280x720/DY4a08PYZPrXIgox.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2104106404512768000/img/1sdfH6ZGz9dyHM69.jpg","w":1920,"h":1080}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShw66nMgCivgL1jWjb54-Qizdge5o4hPfp2iibfUU0itXQdr/","image":"https://i.pinimg.com/originals/f5/46/ff/f546ffb810902177860984fe57ca7124.png","title":"Swimming in sprite cap","date":"2026-10-06","w":848,"h":1264},{"url":"https://www.pinterest.com/pin/e1_AfqPShyvX5J3WPeF96hmcLi9xqZE4U4MFeQ4jh7BBNreACqAdcO9sw/","image":"https://i.pinimg.com/originals/b9/d3/fb/b9d3fb7663c789c85d8673e0db849c7e.jpg","date":"2026-05-24","w":564,"h":846},{"url":"https://www.pinterest.com/pin/e1_AfqPShwVHI5K_heD7GYIVtEmvhnSv2ScrjC3m6S7Y9bvvSPCtv9gLA/","image":"https://i.pinimg.com/originals/1e/bc/0b/1ebc0b23f88043c2f26431c714c29f22.jpg","date":"2026-05-12"},{"url":"https://www.pinterest.com/pin/e1_AfqPShw9kaysnvetA5TRpaBhGFHeGjMGCHOv7N0UlK-UVe6hovM7/","image":"https://i.pinimg.com/originals/f8/de/36/f8de36d32427e49e99ae99f9688eb970.png","title":"Tilt-shift city diorama capturing the bustling urban landscape","date":"2026-05-06","w":832,"h":1456},{"url":"https://www.pinterest.com/pin/e1_AfqPShzXvPDcrIMiXRYOAs98kszqymRl5v-mqvPFsX-HU54lQy0f/","image":"https://i.pinimg.com/originals/e7/11/31/e71131c3b1c5862b7d0b797ab3f6d63e.jpg","title":"tiny chefs edition 🥐","date":"2026-03-24","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShzzcEhErWE2gkax7FQSeBl4f6ylL2JjRpTuMGTQeXLe0C1O/","image":"https://i.pinimg.com/originals/ec/7d/53/ec7d53db17e67e4e31e61df33ec29b3f.png","date":"2025-08-07","w":896,"h":1344},{"url":"https://www.pinterest.com/pin/e1_AfqPShwU1yxPlIySGdbb2HsZvEThixTrvFYNmH3QmFhuPt6oH875Hw/","image":"https://i.pinimg.com/originals/14/07/05/1407056c8d70c96f1d1132f43a3c55c2.jpg","date":"2025-04-13","w":800,"h":1000},{"url":"https://www.pinterest.com/pin/e1_AfqPShzeZOQGsmFh6Xf65KS8AVmoNQ6Z_dYUxqcL_Ji1cyrNzFmD/","image":"https://i.pinimg.com/originals/eb/a3/d0/eba3d0143acab3931c4d944d7621be48.jpg","date":"2024-03-16","w":600,"h":900}],"pairsWith":["tilt-shift","macro-lens"],"related":["stop-motion-craft","surreal-giant-scale"],"prompts":[],"rank":29},{"id":"papercraft-cutout","name":"Paper-cut / papercraft","aliases":["paper cut-out","剪纸风格","papercraft toy","layered paper","pop-up book"],"kind":"both","family":"3d-toy","look":"Flat shapes cut from matte colored paper, layered with small drop shadows to fake depth, visible fiber texture and slightly imperfect edges. Ranges from red Chinese paper-cut silhouettes to fold-up cube toys and cut-out animation with hinged limbs.","clause":"[subject] made of layered cut paper, matte colored cardstock with visible fiber texture, soft drop shadows between layers, slightly imperfect hand-cut edges, flat frontal composition","negative":"glossy 3D render, photographic textures, airbrushed gradients, realistic lighting falloff","models":[{"model":"GPT Image 2.5","note":"https://x.com/icreatelife/status/2101353488408006830"},{"model":"GPT Image 2 (ChatGPT)","note":"https://x.com/xiaoxiaodong/status/2095343081440911751"}],"trend":{"direction":"stable","why":"Posts every couple of weeks without a breakout: 1.2k likes (Sep 19), 1.1k (Oct 21, 剪纸), 493 (Sep 3), 459 (Sep 5).","firstSeen":"pre-2026"},"evidence":[{"url":"https://x.com/icreatelife/status/2101353488408006830","author":"icreatelife","date":"2026-09-19","views":104878,"likes":1178,"bookmarks":1151,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HSmB2wuXgAA7IMD.jpg","w":1086,"h":1448}]},{"url":"https://x.com/daaihq/status/2112897710147977271","author":"daaihq","date":"2026-10-21","views":65972,"likes":1110,"bookmarks":782,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HVJUFgzbwAA1L8R.jpg","w":1043,"h":1380},{"type":"photo","url":"https://pbs.twimg.com/media/HVJUCPNbkAADqDp.jpg","w":1064,"h":1408}]},{"url":"https://x.com/azed_ai/status/2096191635348705726","author":"azed_ai","date":"2026-09-05","views":28822,"likes":459,"bookmarks":499,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HRcrLFOa8AAOQlf.jpg","w":1344,"h":896},{"type":"photo","url":"https://pbs.twimg.com/media/HRcrLUyagAA3ezC.jpg","w":1344,"h":896},{"type":"photo","url":"https://pbs.twimg.com/media/HRcrLlKbAAABkB3.jpg","w":1344,"h":896},{"type":"photo","url":"https://pbs.twimg.com/media/HRcrLwsb0AA845C.jpg","w":1344,"h":896}]},{"url":"https://x.com/xiaoxiaodong/status/2095343081440911751","author":"xiaoxiaodong","date":"2026-09-03","views":80234,"likes":493,"bookmarks":475,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HRQk_WAaIAAO4jJ.jpg","w":1086,"h":1448},{"type":"photo","url":"https://pbs.twimg.com/media/HRQl95vboAAR8Xt.jpg","w":1086,"h":1448},{"type":"photo","url":"https://pbs.twimg.com/media/HRQmY6jbEAErbEI.jpg","w":1085,"h":1450},{"type":"photo","url":"https://pbs.twimg.com/media/HRQmxY7a0AAGl_f.jpg","w":1086,"h":1448}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShxUhEaAtmz4na-H9L0rPT_1uLi_oxhoyemuyWtU00k_ZO7VbQ/","image":"https://i.pinimg.com/originals/8b/7c/25/8b7c25563234d7069742d5ecdf52de3e.webp","title":"30 Paper Cutting Art and Craft Designs","date":"2026-10-10","w":1024,"h":1024},{"url":"https://www.pinterest.com/pin/e1_AfqPShx1q05MbzVaubvGe8lcA72gfGv-sXRuJQUYTd798H3Oyxsk/","image":"https://i.pinimg.com/originals/82/18/d2/8218d215b7dff725403aa3edd8e906a6.jpg","date":"2026-07-10","w":1224,"h":1632},{"url":"https://www.pinterest.com/pin/e1_AfqPShz7FbZzLPayVBysp8fiDb7gMcCrjkZ3TzFRqJc48UjkqMt1/","image":"https://i.pinimg.com/originals/c9/5b/82/c95b8267ba079e276cb3b181e8e7f4e9.png","title":"matka canyon - Macedonia","date":"2026-03-09","w":896,"h":1200},{"url":"https://www.pinterest.com/pin/e1_AfqPShzLNsU0e8cp2JGkD6MIbYnbAAz_XMinyyHtBS_s-Z6Mvwk/","image":"https://i.pinimg.com/originals/1d/3a/f3/1d3af33bb960ed3367f0a6b105aa17ee.jpg","date":"2026-02-21","w":653,"h":1122},{"url":"https://www.pinterest.com/pin/e1_AfqPShzdPfbFXHf0NfiMcScBV2jk17gEzL_OE8_tmES06a2sfvc/","image":"https://i.pinimg.com/originals/62/94/88/6294880a8419ba2f67745d113c767e0a.jpg","title":"Enchanted Forest Paper-Cut Style, a Decorative Illustration by Virgo Studio","date":"2025-12-16","w":1820,"h":2275},{"url":"https://www.pinterest.com/pin/e1_AfqPShxDV6QaHODlmG4hhV5u-FBY7oFns3yza2RpXBFK7q-pDZFxFw/","image":"https://i.pinimg.com/originals/8b/27/c8/8b27c85968049b6216351e5e3f932931.jpg","date":"2025-10-27","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShxFhgzBBHsTKBwoxWjeY_ek2KuesGD7kDUujKh8W5ZXBPBlMQ/","image":"https://i.pinimg.com/originals/2e/0b/33/2e0b336fac2faaaa91237c0c5ecfd40a.jpg","title":"paper cut diy artcraft heritage intangible culture traditional","date":"2025-10-25","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShxEaZL5fWbkcnYxFWfCW5MXJ-PxRXes0XmLNPBwiuzawTIB/","image":"https://i.pinimg.com/originals/1e/6f/19/1e6f192c78d9b3c134c37c8b4c66eca0.jpg","title":"Surreal Paper Cut Art Prints: 73-Piece Dreamy Layered Poster Pack (Digital Download)","date":"2025-09-22","w":2731,"h":4096},{"url":"https://www.pinterest.com/pin/e1_AfqPShyPIPeoki0P6-VOk5IcfatfUKWfDGMLbJ6ZHDchF-dfyg/","image":"https://i.pinimg.com/originals/b2/f0/64/b2f064f905b5ebcd303c44e463182817.jpg","date":"2025-04-29","w":640,"h":960},{"url":"https://www.pinterest.com/pin/e1_AfqPShxFFVDNdve_-iRfpeOCN0aRytrekpBUi5u0ouXvae_D7nwO/","image":"https://i.pinimg.com/originals/20/e4/4e/20e44e715ee400b743d29fe5e0459caa.png","date":"2025-01-12","w":796,"h":996}],"related":["stop-motion-craft","risograph-grain-print"],"prompts":["x-2101353488408006830","x-2107414034538496398"],"rank":18},{"id":"stop-motion-craft","name":"Stop-motion craft (clay, felt, knit)","aliases":["claymation","stop motion","needle felt","knitted puppet","stitched stop-motion","粘土风格"],"kind":"both","family":"3d-toy","look":"Handmade miniatures with fingerprints in clay, fuzzy felt fibers or knit stitches, on tabletop sets with a soft key light and shallow macro focus. Motion is stepped at about 12fps with slight 'boiling' between frames.","clause":"[subject] as a handmade stop-motion puppet of plasticine, needle felt or knitted yarn, visible fingerprints and fibers, tabletop miniature set, soft key light, macro shallow depth of field, 12fps stepped stop-motion movement","negative":"smooth CGI surfaces, fluid 60fps motion, photoreal skin, glossy plastic, sharp vector edges","models":[{"model":"GPT Image 2.5 (frames)","note":"https://x.com/charlierguo/status/2097399137142772071"},{"model":"Kling 4.0 (claymation)","note":"https://x.com/higgsfield_ai/status/2110927330390790226 (125 likes, Oct 16)"}],"trend":{"direction":"stable","why":"Sep peak (7.0k likes / 1.0M views Sep 8) then steady posts; craft/stop-motion probe since Sep 1 (>=150 likes): A 6 / 1.9k L, B 3 / 688 L, C 11 / 9.5k L. Disney Animation's Oct 21 'Clay' news (1.8k likes, not AI) adds attention.","firstSeen":"2025; GPT Image 2.5 wave 2026-09"},"evidence":[{"url":"https://x.com/charlierguo/status/2097399137142772071","author":"charlierguo","date":"2026-09-08","views":1038458,"likes":7000,"bookmarks":2645,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2097398948126445568/vid/avc1/720x720/5RX9svW4-mcDppVX.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2097398948126445568/img/p5_zWBwWwelDk2Pm.jpg","w":1024,"h":1024}]},{"url":"https://x.com/cheerselflin/status/2097903279506125119","author":"cheerselflin","date":"2026-09-10","views":31012,"likes":380,"bookmarks":453,"media":[{"type":"video","url":"https://video.twimg.com/tweet_video/HR0_poXaoAA2Nu6.mp4","poster":"https://pbs.twimg.com/tweet_video_thumb/HR0_poXaoAA2Nu6.jpg","w":840,"h":472},{"type":"photo","url":"https://pbs.twimg.com/media/HR0_qR9XAAgQWW9.jpg","w":3072,"h":3072}]},{"url":"https://x.com/oggii_0/status/2114585881059459119","author":"oggii_0","date":"2026-10-26","views":21308,"likes":326,"bookmarks":204,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HViEf1naIAA2CAh.jpg","w":1080,"h":1440},{"type":"photo","url":"https://pbs.twimg.com/media/HViEfy1bAAA1V0J.jpg","w":1080,"h":1440},{"type":"photo","url":"https://pbs.twimg.com/media/HViEfzLbAAAX1or.jpg","w":1080,"h":1440}]},{"url":"https://x.com/reach_vb/status/2099536970334486567","author":"reach_vb","date":"2026-09-14","views":55236,"likes":338,"bookmarks":76,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2099536945588183040/vid/avc1/1280x720/JZxMkkXhoMrYUmNl.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2099536945588183040/img/llXnhGJSfnkGhBZ-.jpg","w":1280,"h":720}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShzHe2CzLBgG0Y-YKeLYG6ED0aEeiYrLgVY3WiO1VWtNezNFXA/","image":"https://i.pinimg.com/originals/66/11/65/6611657d786e84e59defec75cb8fca15.png","title":"Handmade Felt Character Portrait | Whimsical Fiber Art Illustration","date":"2026-09-17","w":960,"h":1200},{"url":"https://www.pinterest.com/pin/e1_AfqPShyhqzujpLZxmUZ5iR-Q6AVmUTBlwyOAE9ssNqz4R8th8a3uHA/","image":"https://i.pinimg.com/originals/5a/8c/18/5a8c1897c4b217f71eaeb6288d46a220.jpg","title":"Back Page Contest Winner","date":"2026-04-28","w":450,"h":453},{"url":"https://www.pinterest.com/pin/e1_AfqPShxu-b4FjpR9P7C9dzEVaVrtGyYKP8Hl8DLoAhthE_nFUoQD/","image":"https://i.pinimg.com/originals/48/02/4f/48024fb6f426b97839f5ab4b5dbb01c2.jpg","title":"Валяные из шерсти картинки","date":"2025-12-27","w":816,"h":1451},{"url":"https://www.pinterest.com/pin/e1_AfqPShyN4IhGBQttBgnaCMevF2pvyVMeOvJVZfA3P3xO_LK9EAsh/","image":"https://i.pinimg.com/originals/b0/38/e2/b038e203b84c8e0fe7d69315803558e1.png","date":"2025-11-03","w":892,"h":1176},{"url":"https://www.pinterest.com/pin/e1_AfqPShxWngX9eCSjwJrrJRYX6q4Yl25fud9lhs_ouVlQSxMEutDp/","image":"https://i.pinimg.com/originals/95/24/99/952499be2b032f19d02a8b442e6c3293.jpg","title":"I Create Cute Fluffy Crochet Toys (17 Pics)","date":"2025-08-05","w":564,"h":781},{"url":"https://www.pinterest.com/pin/e1_AfqPShxOZSNclE0TXDEVjmUbSNdy9TKZRxMlz0Ahs0JN1hfyJhWB/","image":"https://i.pinimg.com/originals/4a/2c/c1/4a2cc1dea43aa3121a03bc4e7d9d6c09.jpg","date":"2025-05-30","w":1284,"h":1749}],"pairsWith":["macro-lens"],"related":["miniature-tiny-world","papercraft-cutout"],"prompts":[],"rank":17},{"id":"3d-animated-family-film","name":"3D animated family film","aliases":["Pixar style","Disney 3D","3D cartoon","3D toddler video","nursery-rhyme 3D"],"kind":"video","family":"animation","look":"Big-eyed stylized characters with soft subsurface skin, rounded proportions and plush fabrics, lit like a studio feature with a warm key, bounce fill and rim light. Bright clean palettes and gentle comic timing; the kids-channel variant adds bold educational text and nursery-rhyme pacing.","clause":"[subject] as a stylized 3D animated family-film character, big expressive eyes, rounded proportions, soft subsurface skin, warm key light with rim light, bright clean palette, gentle comedic timing","negative":"photoreal humans, uncanny skin pores, dark gritty grade, stiff mocap motion, anime line art","models":[{"model":"Seedance 2.5","note":"https://x.com/Zarnab_with_Ai/status/2104764823091490851"},{"model":"Nano Banana Pro + Seedance 2.5 + HyperFrames","note":"https://x.com/ArchiveExplorer/status/2106853265694503064"}],"trend":{"direction":"peak","why":"3D-animation probe since Sep 1 (>=200 likes): A 1 / 270 L, B 13 / 4.7k L, C 6 / 2.7k L; peaked late Sep to early Oct with toddler/educational channels (1.5k Sep 29, 1.4k Oct 4, 1.4k / 544k views Sep 26) and is still posted daily at lower engagement.","firstSeen":"pre-2026; Seedance 2.5 kids wave 2026-09"},"evidence":[{"url":"https://x.com/Zarnab_with_Ai/status/2104764823091490851","author":"Zarnab_with_Ai","date":"2026-09-29","views":103339,"likes":1481,"bookmarks":1582,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2104764586226565120/vid/avc1/720x1280/2rg3fSLWb6UZ_aeG.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2104764586226565120/img/W8WBlhmxvceutAJg.jpg","w":720,"h":1280}]},{"url":"https://x.com/AngryTomtweets/status/2103881339946824094","author":"AngryTomtweets","date":"2026-09-26","views":544506,"likes":1424,"bookmarks":890,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2103881266575917056/vid/avc1/1280x720/De1uWkA1lJcqAEZh.mp4?tag=16","poster":"https://pbs.twimg.com/amplify_video_thumb/2103881266575917056/img/SDl4op-mEZU8Ozp3.jpg","w":1920,"h":1080}]},{"url":"https://x.com/Zarnab_with_Ai/status/2106560621932384657","author":"Zarnab_with_Ai","date":"2026-10-04","views":216968,"likes":1379,"bookmarks":391,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2106560393976131584/vid/avc1/720x1280/SkLb7hkipAEB5sPK.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2106560393976131584/img/BwTkyODIfeCas_GB.jpg","w":720,"h":1280}]},{"url":"https://x.com/ArchiveExplorer/status/2106853265694503064","author":"ArchiveExplorer","date":"2026-10-04","views":101844,"likes":1314,"bookmarks":2683,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2106851145008250881/vid/avc1/720x1280/peZ_T46kumRzT6kn.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2106851145008250881/img/a1VDF37Y7ZdopMUa.jpg","w":1080,"h":1920},{"type":"photo","url":"https://pbs.twimg.com/media/HT0KgzlWMAA0FkG.jpg","w":1920,"h":3431}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShxQK08NGNC_k1tezxxyeLiNzetOJ2HtP9MgQL74lZwfVQXEyw/","image":"https://i.pinimg.com/originals/cc/e2/96/cce296b4cc573f955f43aee2c84d17a7.jpg","date":"2026-10-16","w":1280,"h":720},{"url":"https://www.pinterest.com/pin/e1_AfqPShx7zYhA1mnN5exGvY3kHSH1euSDjGZOTqcDWshbOWbqw6kXqA/","image":"https://i.pinimg.com/originals/68/5b/1b/685b1bb6398e65e7741f3771ad89ec56.jpg","title":"coisas muito legais","date":"2026-10-10","w":979,"h":1612},{"url":"https://www.pinterest.com/pin/e1_AfqPShztUtX80bfEzmpkIrverVgnLwjsT0SQeJ32xCZnSGQ2PE6trw/","image":"https://i.pinimg.com/originals/e2/6b/a7/e26ba7a5bebbfac1042a461732521f04.png","date":"2026-10-07","w":720,"h":1280},{"url":"https://www.pinterest.com/pin/e1_AfqPShwxgbditVjXEP59QHgh7YN97tbKLOUf2Vy739f3qanPKigHFA/","image":"https://i.pinimg.com/originals/4f/29/86/4f2986265f8f5a29bb6e4b9f4e66c9f6.jpg","date":"2026-09-30","w":752,"h":1395},{"url":"https://www.pinterest.com/pin/e1_AfqPShx7fokQFAKwOUxDEJZrh5EOaGoHehEe38QHUQl35rzwjSxg3A/","image":"https://i.pinimg.com/originals/b7/2f/cf/b72fcf96dc290339956c370ac86475d4.jpg","title":"3D Pixer style Cute girl","date":"2026-08-28","w":832,"h":1280},{"url":"https://www.pinterest.com/pin/e1_AfqPShxUSnI3XdG2-1VFX6La5sEI0TjDAPbuaWKFzq5muykjHX0USQ/","image":"https://i.pinimg.com/originals/43/f5/f4/43f5f4b41d4948e9ebe56d2a91fbb061.png","title":"3D Animated Character Turnaround in Warm Tones","date":"2026-07-21","w":1072,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShwpSA3hOk_pJbABOnQhfi_3Des4vN7gLOjDTLRx5FJamKG4aQ/","image":"https://i.pinimg.com/originals/b8/17/19/b817194bc94b35e33a25c2686b837580.jpg","date":"2026-05-24","w":810,"h":1440},{"url":"https://www.pinterest.com/pin/e1_AfqPShwAtVMgOiT2__mgfli0SQVmI8psz4AwHyXileFOYhtL67aN/","image":"https://i.pinimg.com/originals/62/2f/d1/622fd1f27fb4684edd819beec97144e1.jpg","date":"2026-05-01","w":1792,"h":2400},{"url":"https://www.pinterest.com/pin/e1_AfqPShx9mjtUXCYvdsBM00f4Z721ipQdcFLFwCR0k6TDj-fc0Lkp/","image":"https://i.pinimg.com/originals/e3/1f/2d/e31f2d80eee7e7db612ca73ab446e14f.png","date":"2026-03-22","w":768,"h":1344},{"url":"https://www.pinterest.com/pin/e1_AfqPShxNnMN0BP0kynJALwCQ9wG6aJht0sByuRXJn6uaT_cHlSUT/","image":"https://i.pinimg.com/originals/fa/30/76/fa3076d0aa2d966bb02cf746aadc32e7.jpg","title":"couple","date":"2026-03-21","w":810,"h":1440}],"pairsWith":["rim-light"],"related":["chibi-sticker-pack","stop-motion-craft"],"prompts":["x-2100239390266348014","x-2109224200217198796"],"rank":13},{"id":"hand-drawn-anime-film","name":"Hand-painted anime film","aliases":["Ghibli style","Ghibli-like","2D animation","golden age 2D"],"kind":"both","family":"animation","look":"Pastoral, watercolor-like painted backgrounds with towering cumulus skies, soft daylight and gentle colors; characters drawn with simple rounded lines and minimal shading. Calm everyday moments such as bike rides, seaside towns and meals, with lots of air in the frame.","clause":"[subject] in a hand-painted 2D animated film still, watercolor-like painted background, big cumulus clouds, soft natural daylight, simple rounded character lines, gentle pastoral palette, calm wide composition","negative":"3D render, harsh neon, heavy black outlines, photoreal textures, busy action composition","models":[{"model":"Kling","note":"https://x.com/q_a_i_m_01/status/2103915850516545730"},{"model":"Seedance + Dreamina","note":"https://x.com/knightama/status/2102824157075710378"}],"trend":{"direction":"stable","why":"Evergreen since the 2025 wave; 2D/hand-drawn probe since Sep 1 (>=300 likes): A 1 / 1.5k L (news), B 4 / 7.0k L, C 15 / 11.3k L; 1.5-1.6k like posts in September, 2.6M views for a 2D-animation reel (Sep 27).","firstSeen":"2025-03"},"evidence":[{"url":"https://x.com/q_a_i_m_01/status/2103915850516545730","author":"q_a_i_m_01","date":"2026-09-26","views":97733,"likes":1525,"bookmarks":902,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2103915773710503936/vid/avc1/720x1280/7aKUq1m9ngGwEI3-.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2103915773710503936/img/k0-8216Mr4idJ04P.jpg","w":720,"h":1280}]},{"url":"https://x.com/knightama/status/2102824157075710378","author":"knightama","date":"2026-09-23","views":497852,"likes":1460,"bookmarks":941,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2102808988333342720/vid/avc1/720x960/Dd0Y6M9cqfflbFxK.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2102808988333342720/img/7eZO94juxzD3f3G1.jpg","w":1440,"h":1920}]},{"url":"https://x.com/coryaslan/status/2096621947824091559","author":"coryaslan","date":"2026-09-06","views":64649,"likes":1580,"bookmarks":2728,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2096278463959457792/vid/avc1/1280x720/Is1pBzIsocvc1IWI.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2096278463959457792/img/RGo5WzV1_oIk90t3.jpg","w":3840,"h":2160}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShxu-eAc_IV8k5I_eli8x88pBnBAQ9-kPOlAzxtkKaYpAoCE/","image":"https://i.pinimg.com/originals/e1/c5/0b/e1c50b39e1fe9b952ce3dadd4dacb073.jpg","title":"ФОН ХУДОЖЕСТВЕННОГО ИСКУССТВА","date":"2026-09-13","w":1329,"h":742},{"url":"https://www.pinterest.com/pin/e1_AfqPShwW8oJvljtqqKOsI2c6zghfBPGeBi8lZcVRIPvpEf5jTz5H-w/","image":"https://i.pinimg.com/originals/7d/a6/31/7da631f2792e084251d8ac82d6575ab5.jpg","date":"2026-09-05","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShxRhhBFnNgTrtXfs_eqz2I93eSoqwacbwKx_zdIUXZnn0GmKw/","image":"https://i.pinimg.com/originals/a0/a8/32/a0a832697ccf01b9102dd553d250a1c3.jpg","date":"2026-05-31","w":768,"h":1364},{"url":"https://www.pinterest.com/pin/e1_AfqPShzjjZLESTc8Bvqb5p52AXj79LIqykGhmYkt_d_FMAlJqHQ/","image":"https://i.pinimg.com/originals/6d/33/d9/6d33d9dad57deee79f915dfaf6299845.jpg","date":"2026-05-01","w":1024,"h":980},{"url":"https://www.pinterest.com/pin/e1_AfqPShzffmhJQAz21Mvrhu-ZX4U6EHB5lchi6YS1aDD_bCJRTWBHIQ/","image":"https://i.pinimg.com/originals/4e/a5/1c/4ea51c8c31c6b3e9d2dc73d64d025064.jpg","title":"Spirited Away Studio Ghibli","date":"2026-04-05","w":1012,"h":733},{"url":"https://www.pinterest.com/pin/e1_AfqPShzTeqrI3iZbU3QkrvZdY8C79zOaz15C9LzjLQ8o_CqSv3IGtw/","image":"https://i.pinimg.com/originals/57/0f/f4/570ff4e1993081ca6f1397123900ab1d.jpg","title":"Sunny Ghibli Hillside Cottage 🏡","date":"2026-03-03","w":768,"h":1376},{"url":"https://www.pinterest.com/pin/e1_AfqPShzPdEvd-hC1R2hABMrmwubpd8_gOwcu9WlhqaOK79w2CMHd/","image":"https://i.pinimg.com/originals/0b/24/f9/0b24f9e96e3f8be067eb1202c44a0747.jpg","date":"2026-02-15","w":873,"h":596},{"url":"https://www.pinterest.com/pin/e1_AfqPShxpDaOcaiQD78ySETBqMPOyG6Xhxp_FJL5Qdr-HfTuCt_Sx/","image":"https://i.pinimg.com/originals/52/38/f5/5238f51881a946702c623055460c9a1b.jpg","title":"𝚜𝚊𝚟𝚎=𝚏𝚘𝚕𝚕𝚘𝚠 ´･ᴗ･`ฅ","date":"2026-01-30","w":736,"h":981},{"url":"https://www.pinterest.com/pin/e1_AfqPShymQxoc3c419SoDDgNuhCo5gp2XQUD1M4s5e1pCYKCicZu5/","image":"https://i.pinimg.com/originals/5e/c3/c2/5ec3c24cd5393c001787cd0904066c56.png","date":"2025-08-29","w":1024,"h":1536},{"url":"https://www.pinterest.com/pin/e1_AfqPShyBXGboQ6sM80GpLkMSBbztqMq5m2JJ2KkKDwWxyZDBxTiD/","image":"https://i.pinimg.com/originals/9f/18/a3/9f18a3d51c379f7c10c071c2217a311c.jpg","title":"Spirited Away","date":"2025-04-19","w":720,"h":1280}],"related":["painterly-storybook-illustration","retro-90s-anime"],"prompts":[],"rank":19},{"id":"modern-tv-anime","name":"Modern TV anime","aliases":["anime style","anime one-shot","anime edit","AMV"],"kind":"video","family":"animation","look":"Crisp digital-cel anime: clean line art, two-tone cel shadows, saturated palettes, soft compositing glow and camera moves through 3D-assisted backgrounds. Expressive faces and comedic reaction cuts; long single shots are new with 30-second native generation.","clause":"[subject] as a modern TV anime scene, clean digital line art, two-tone cel shading, saturated colors, soft compositing glow, dynamic camera move, expressive anime faces","negative":"photoreal skin, plastic 3D render, muddy colors, inconsistent line weight, western cartoon proportions","models":[{"model":"MiniMax H3 + GPT Image 2.5 character sheet","note":"https://x.com/kevinleguillou/status/2106864655989612792"},{"model":"Kling 4.0 (native 30s)","note":"https://x.com/ShamiWeb3/status/2112362909225652454"},{"model":"Seedance 2.5 + Opus 5.5","note":"https://x.com/aimikoda/status/2110119492076404869"}],"trend":{"direction":"peak","why":"12.6k likes (Oct 4) for a MiniMax H3 anime test, 1.3k / 523k views (Oct 20) for a Kling 4.0 one-shot, plus anime-opening and edit posts (801 Oct 13, 464 Oct 23); anime probe A 7 / 5.3k L vs B 4 / 18.2k L.","firstSeen":"2025; Kling 4 / MiniMax H3 wave 2026-10"},"evidence":[{"url":"https://x.com/kevinleguillou/status/2106864655989612792","author":"kevinleguillou","date":"2026-10-04","views":429538,"likes":12599,"bookmarks":4945,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2106864297447936000/vid/avc1/1260x720/CprwECHnVv9PPjzk.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2106864297447936000/img/AorCAm3RN3PUYdus.jpg","w":1344,"h":768}]},{"url":"https://x.com/ShamiWeb3/status/2112362909225652454","author":"ShamiWeb3","date":"2026-10-20","views":523641,"likes":1268,"bookmarks":192,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2112362771526668289/vid/avc1/1280x720/wl3m5PcbblrSUwuj.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2112362771526668289/img/ocu4p3oQxmq63Lak.jpg","w":2560,"h":1440}]},{"url":"https://x.com/aimikoda/status/2110119492076404869","author":"aimikoda","date":"2026-10-13","views":36613,"likes":801,"bookmarks":638,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2110118417697054720/vid/avc1/1280x720/s4mvd0F_GLtVJd-9.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2110118417697054720/img/7Eycu37NGlkJY0FD.jpg","w":1920,"h":1080}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShwsw9UnFz7z6pWM6n-Jx7-6XckY-7ErKiRBB6-TnwMdzRNU/","image":"https://i.pinimg.com/originals/30/9c/da/309cdab452b0bdc4836bb1ad826f9b69.jpg","date":"2026-09-27","w":1221,"h":2048},{"url":"https://www.pinterest.com/pin/e1_AfqPShzQwbrO44y5mE5frxzfm66IGVz5GHSNNPTUfYtnQjIwAqFpGw/","image":"https://i.pinimg.com/originals/fa/20/29/fa20291383b3e3705b7bcca2f96a8028.jpg","date":"2026-09-08","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShx8JQ5GGN4zlx88pgW5ZidsuBNYJH3SQWTcKkEGT_66v-PY/","image":"https://i.pinimg.com/originals/74/46/f7/7446f73fb9790eacc8adef407b3c99ef.jpg","date":"2026-05-31","w":2048,"h":1655},{"url":"https://www.pinterest.com/pin/e1_AfqPShzNobg4QzBuSyNA-5vqZI0QhT0hGJej6_RsYSSu2Ii4vA/","image":"https://i.pinimg.com/originals/a4/81/0d/a4810d3bb3491184a8446884ede3951c.jpg","date":"2026-03-12","w":1200,"h":2000},{"url":"https://www.pinterest.com/pin/e1_AfqPShwVmM7fjAwUdpgM-dgxB22oNtBBw1QJcpW-d8hjHD4Gp79b/","image":"https://i.pinimg.com/originals/2a/7d/88/2a7d88c0f05070aaf6407c49a67d0a7c.jpg","title":"Denji !","date":"2025-12-23","w":1200,"h":676},{"url":"https://www.pinterest.com/pin/e1_AfqPShwN6KQO90BXddYBZaRRUS22tRbS_zfP-HyiuwEzYoP8htfyew/","image":"https://i.pinimg.com/originals/4b/8f/f4/4b8ff4872e761ede1dc0b5960241bc06.jpg","title":"꩜𝐊𝐚𝐠𝐨𝐦𝐞 𝐇𝐢𝐠𝐮𝐫𝐚𝐬𝐡𝐢","date":"2025-10-22","w":1400,"h":1080},{"url":"https://www.pinterest.com/pin/e1_AfqPShyXS1EetyMUyWIFIe9s5Hy5iUKnyR8EAzmlxNQv_seqrmKwqA/","image":"https://i.pinimg.com/originals/df/b9/bd/dfb9bd15b94af20436970d69e5a68015.png","date":"2025-05-04","w":1856,"h":2464},{"url":"https://www.pinterest.com/pin/e1_AfqPShwk5LC7dG0v77IHjSnMU4E6nj0MZ2naJ4HeBBIrYEtJ9tjW/","image":"https://i.pinimg.com/originals/22/2d/a3/222da3c89c5efe6e3eaab43a97918c60.jpg","date":"2024-01-15","w":534,"h":366}],"related":["retro-90s-anime","manga-panel"],"prompts":[],"rank":4},{"id":"pixel-art","name":"Pixel art","aliases":["16-bit","8-bit","sprite art","retro game art"],"kind":"both","family":"animation","look":"Low-resolution images on a hard pixel grid with limited palettes, dithered gradients and no anti-aliasing; SNES-era scenes like moonlit castles and sunsets, plus tiny sprites with 2-6 frame loops.","clause":"[subject] as 16-bit pixel art, strict pixel grid, limited 32-color palette, dithered gradients, no anti-aliasing, retro RPG scene, crisp nearest-neighbor scaling","negative":"blurry upscaled pixels, anti-aliased edges, painterly brush strokes, smooth gradients, mixed pixel sizes","models":[{"model":"Claude Opus 5.5 (code-drawn pixel art)","note":"https://x.com/majidmanzarpour/status/2102476258948927543"},{"model":"Nano Banana (sprites; 'always pick a Nano Banana based model')","note":"https://x.com/asynkimo/status/2114796665307578732"}],"trend":{"direction":"rising","why":"Pixel-art probe since Sep 1 (>=200 likes): A 9 posts / 6.1k L vs B 2 / 833 L vs C 9 / 7.6k L; 2.6k (Sep 22), 1.2k (Oct 26), 838 (Oct 24), 736 (Oct 23).","firstSeen":"2026-09 (Opus 5.5 code pixel art)"},"evidence":[{"url":"https://x.com/majidmanzarpour/status/2102476258948927543","author":"majidmanzarpour","date":"2026-09-22","views":460488,"likes":2574,"bookmarks":2680,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2102476231740399616/vid/avc1/872x720/ZO3UBdkkQQmtyAeH.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2102476231740399616/img/c0rCI7sJtWi1Gq5Q.jpg","w":1080,"h":890}]},{"url":"https://x.com/asynkimo/status/2114796665307578732","author":"asynkimo","date":"2026-10-26","views":47819,"likes":1192,"bookmarks":1486,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2114796362885660672/vid/avc1/720x720/7UE7b6wVB75sW49u.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2114796362885660672/img/zEbxyLxON1rgXglD.jpg","w":1080,"h":1080}]},{"url":"https://x.com/peekcell/status/2102796895982878850","author":"peekcell","date":"2026-09-23","views":50658,"likes":999,"bookmarks":547,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2102795703818797056/vid/avc1/720x720/1Yl-XocmC71-_7HU.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2102795703818797056/img/suyu1aee9jskxmMK.jpg","w":1080,"h":1080}]},{"url":"https://x.com/zer0point_eth/status/2113605583173533890","author":"zer0point_eth","date":"2026-10-23","views":48489,"likes":736,"bookmarks":883,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2113605562701148160/vid/avc1/640x360/hm7Q_IaKqpyE0sUZ.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2113605562701148160/img/EWPZy6imRjILT02r.jpg","w":640,"h":360}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShyPM5S1gntgWjfmfLxC-VX_Dyc6yfpMywBsYR4pQ2v5coTPqg/","image":"https://i.pinimg.com/originals/01/e7/72/01e7721661ee8a7814ebff302b211788.jpg","date":"2026-10-16","w":1350,"h":1688},{"url":"https://www.pinterest.com/pin/e1_AfqPShxXXoKY08K8uotKfv0GjJ6xx_ikHtyH1jpmp8PSJ7zw9nu3/","image":"https://i.pinimg.com/originals/94/d2/fa/94d2fa3836b0978f7115a5679bba655f.jpg","title":"A pixelated beacon of warmth against the dark sky","date":"2026-10-16","w":1024,"h":1024},{"url":"https://www.pinterest.com/pin/e1_AfqPShwNUmZ1hLoGi21FmOE66jXIxnM_HK93LUjZx00LcejbOfP4VA/","image":"https://i.pinimg.com/originals/1b/c1/69/1bc169743082a517956551c102d48c58.jpg","title":"here's a cool minecraft wallpaper","date":"2026-10-15","w":896,"h":1593},{"url":"https://www.pinterest.com/pin/e1_AfqPShwy0UY_7G_JDTw7RzPqA5-yM_LMg9UQoYcZ3NYmnXEeXm8rJg/","image":"https://i.pinimg.com/originals/f4/be/61/f4be6137b261fe375a7b59f980631e86.png","title":"Pixel Art Kitten: Top-Down Cat Sprites","date":"2026-10-13","w":609,"h":747},{"url":"https://www.pinterest.com/pin/e1_AfqPShyzYXip3gxr1tSdhqglOq-AMp6JZvjh3JTLZmleEEE_6xga/","image":"https://i.pinimg.com/originals/ce/f8/f4/cef8f4cadbbff61628e7557b4c0e2a88.jpg","date":"2026-10-02","w":1024,"h":1024},{"url":"https://www.pinterest.com/pin/e1_AfqPShzo1wbaRjLeB7zG-_S822QjK-AQ2lWN9ew6U3gLwKVuOHvOvA/","image":"https://i.pinimg.com/originals/4a/d4/d0/4ad4d0139a47c807452ee546d9e72ea2.png","date":"2026-09-30","w":320,"h":447},{"url":"https://www.pinterest.com/pin/e1_AfqPShxRLVS6gQCJYoYQrYfMdb-rUS-ZYJumVz0IEI-nL58iYiF5tw/","image":"https://i.pinimg.com/originals/37/05/5b/37055b24ad73a05c5e051dd4b0930271.jpg","title":"Post by @silkapxl · 2 images","date":"2026-09-14","w":640,"h":441},{"url":"https://www.pinterest.com/pin/e1_AfqPShz7XR7444POamLUTf3UFsbS3pMpYF39WG8vVqSw8b32EinR/","image":"https://i.pinimg.com/originals/7e/38/1b/7e381b9e7d0030c92a1102fae47b1dba.png","title":"Pixel Art Meadow 4K Wallpaper","date":"2026-06-03","w":1600,"h":900},{"url":"https://www.pinterest.com/pin/e1_AfqPShwdmhGJnhZU9iAM89IgJNUuz_MCw-9qgQ4r2903STLy_nML/","image":"https://i.pinimg.com/originals/07/df/ea/07dfeac7fd7e75b5d395fbc630ce151d.jpg","date":"2026-05-08","w":736,"h":1096},{"url":"https://www.pinterest.com/pin/e1_AfqPShyyEGr6eWKeGkEtJd8ph42_JZwNwPXUHmguisjZYcI21LRB/","image":"https://i.pinimg.com/originals/02/f7/6f/02f76f6fa425719e6f6d37d8c0cb5b17.png","title":"character sprite sheet","date":"2025-12-19","w":848,"h":1264}],"related":["video-game-hud-footage","code-motion-design"],"prompts":[],"rank":9},{"id":"retro-90s-anime","name":"Retro 90s anime","aliases":["90s anime","retro anime","cel anime","anime opening","80s anime"],"kind":"video","family":"animation","look":"Hand-painted cels over painted backgrounds with film grain, soft halation and slightly washed-out color: dusk purples, neon city nights, mecha cockpits, sweat drops and speed lines. Framed like a TV opening, with held poses and pans across stills.","clause":"[subject] as a 1990s cel-animated anime scene, hand-painted background, thick ink outlines, limited cel shading, film grain and soft halation, washed-out dusk palette, 4:3 TV-opening framing","negative":"modern digital glow and particles, 3D CG look, ultra-clean lines, HDR saturation, 60fps smoothness","models":[{"model":"Seedance 2.5 + Opus 5.5 Blender MCP (shot blocking)","note":"https://x.com/AIWarper/status/2106466745661980904"},{"model":"Midjourney + Kling 4 + Seedance","note":"https://x.com/botcreates/status/2114049297582874715"}],"trend":{"direction":"peak","why":"Anime probe since Sep 1 (>=200 likes): A 5 / 6.1k L, B 4 / 7.9k L, C 11 / 15.5k L; retro-specific posts 4.4k (Oct 3), 1.6k (Oct 5), 1.6k (Sep 26), 3.9k (Oct 24).","firstSeen":"2026-09"},"evidence":[{"url":"https://x.com/AIWarper/status/2106466745661980904","author":"AIWarper","date":"2026-10-03","views":589920,"likes":4375,"bookmarks":3391,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2106464555870113792/vid/avc1/720x810/C3cfLgSD5rltUFi0.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2106464555870113792/img/Pci3ypStejmoTBq0.jpg","w":1080,"h":1216}]},{"url":"https://x.com/botcreates/status/2114049297582874715","author":"botcreates","date":"2026-10-24","views":548556,"likes":3902,"bookmarks":2353,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2114049105274019840/vid/avc1/960x720/kLZxyq6yq0YaCAj8.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2114049105274019840/img/JQBmlTnH1UM-TmHS.jpg","w":1440,"h":1080}]},{"url":"https://x.com/emmanuel_2m/status/2107142680782438466","author":"emmanuel_2m","date":"2026-10-05","views":83523,"likes":1647,"bookmarks":1390,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2107142620606570497/vid/avc1/720x810/J20o2KwRSTiz_tRl.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2107142620606570497/img/FGv4BQoDa_uoOvfJ.jpg","w":1080,"h":1216}]},{"url":"https://x.com/domenic/status/2103846928027160609","author":"domenic","date":"2026-09-26","views":579158,"likes":1567,"bookmarks":467,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2103845101063880704/vid/avc1/1280x720/GFVLnP_WcIUxyaE3.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2103845101063880704/img/TBM_z_y_UaYkRaCZ.jpg","w":1920,"h":1080}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShy6k7rGk_IlTun0bRHKLkQWG6TOA9Y-JHWaYGXXl7MQqE7s/","image":"https://i.pinimg.com/originals/af/21/e6/af21e6573a488ba463c16c39cdd9f74d.png","title":"(eng) My favorite of the week - (pt) meu favorito dessa semana.","date":"2026-07-24","w":1300,"h":1250},{"url":"https://www.pinterest.com/pin/e1_AfqPShxE67PPeBw9WKIlrdDjCtdslkuwkpHxG00V6T17Qz7hu6YFTw/","image":"https://i.pinimg.com/originals/d4/06/97/d406976812a4d9fcff5ce6e370782e58.jpg","date":"2026-01-31","w":736,"h":1308},{"url":"https://www.pinterest.com/pin/e1_AfqPShwCcvughmO_4MgnUaItZc8h6N6vRCU-bptgYp4wdnPXX4Q5/","image":"https://i.pinimg.com/originals/eb/ed/8a/ebed8af31741e515a6d520c0473d9c44.jpg","date":"2025-11-09","w":828,"h":828},{"url":"https://www.pinterest.com/pin/e1_AfqPShxk5qV5KJwpb6T5JG1ntZpzVaUG3v1mZ_23OahbnKe0xDbb/","image":"https://i.pinimg.com/originals/fb/1b/5e/fb1b5eb2536a7079c0590f22e017be7e.jpg","date":"2025-09-25","w":736,"h":552},{"url":"https://www.pinterest.com/pin/e1_AfqPShwfTRknM-ZiTMTOUwULtWCMcYE1LicWVWqT17fMiKlMbo_irw/","image":"https://i.pinimg.com/originals/6e/eb/61/6eeb61e1d49377651d1b5ce257638371.jpg","date":"2025-09-02","w":1080,"h":1918},{"url":"https://www.pinterest.com/pin/e1_AfqPShz0lkI7I3xgAr8KvJQJz6ZLrsg0G-wn_8scpJj2gojelbMiew/","image":"https://i.pinimg.com/originals/ab/a6/99/aba699bce3332102e43932f8d445f2c3.png","title":"Cat inside old flip phone","date":"2025-07-08","w":832,"h":1248},{"url":"https://www.pinterest.com/pin/e1_AfqPShysRzq638XXRxnEsudS4hmD0cQHbNMQkmc5Mx9J65UGe1Bo/","image":"https://i.pinimg.com/originals/ca/0e/21/ca0e2124720fa915c95ac85cb69ec9fe.jpg","date":"2025-06-27","w":1200,"h":858},{"url":"https://www.pinterest.com/pin/e1_AfqPShxYw0RfzU-vE-E5nlVhAbg9vy5M-MW8Anda_FujwfbWAbnb/","image":"https://i.pinimg.com/originals/fc/e0/ea/fce0ea3c4492a732fa7165a1682c1e03.jpg","date":"2024-11-07","w":899,"h":1948},{"url":"https://www.pinterest.com/pin/e1_AfqPShybW-fceLlBDt_dPB3smspj0SGVL90EvXTAGmS_Q4VH_XX6/","image":"https://i.pinimg.com/originals/7b/08/16/7b0816958b91465b9080cb7eb45fbc1f.jpg","date":"2024-04-01","w":488,"h":488},{"url":"https://www.pinterest.com/pin/e1_AfqPShyiXtvG35BQ0BguXtDSIXh7FRlfyyJR_snk6Asn2bjp4NE7/","image":"https://i.pinimg.com/originals/76/c7/03/76c703973960b4337d76d8c01c1953c3.jpg","title":"80s anime city","date":"2024-02-22","w":1632,"h":1224}],"pairsWith":["film-grain"],"related":["modern-tv-anime","vintage-tv-broadcast"],"prompts":[],"rank":6},{"id":"video-game-hud-footage","name":"Video-game footage look","aliases":["GTA style","GTA 6 style","game HUD","gameplay footage","fighting game"],"kind":"video","family":"animation","look":"A real-time game-engine render with HUD overlays (minimap, mission text, health bars, wanted stars, 'FINISH HIM' banners) over a third-person or side-on camera, sun-baked saturated cities and slightly too-clean geometry. Most popular as parodies that turn everyday chores into missions.","clause":"[subject] as third-person open-world video game footage, real-time engine render, HUD with minimap, mission text and health bar, sun-baked saturated city, chase camera behind the character","negative":"film grain, shallow cinematic depth of field, handheld shake, no UI, painterly textures","models":[{"model":"Seedance 2.5","note":"https://x.com/Abmankendrick/status/2112922411578413382"},{"model":"Seedance + Codex + Higgsfield","note":"https://x.com/Stefan_3D_AI/status/2100201776905633901"}],"trend":{"direction":"rising","why":"GTA/game-graphics probe since Sep 15 (>=300 likes): A 7 posts / 7.5k L vs B 1 / 312 L vs C 12 / 9.5k L, pushed by the GTA 6 trailer on Oct 15 (1.5k likes that day, 1.2k / 738k views Oct 21).","firstSeen":"2026-09; GTA 6 trailer bump 2026-10"},"evidence":[{"url":"https://x.com/Abmankendrick/status/2112922411578413382","author":"Abmankendrick","date":"2026-10-21","views":738054,"likes":1221,"bookmarks":945,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2112921931586375680/vid/avc1/1280x720/1SrsbaUvF6q2TwoI.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2112921931586375680/img/OhcbrremF6P4i9y3.jpg","w":1920,"h":1080}]},{"url":"https://x.com/Stefan_3D_AI/status/2100201776905633901","author":"Stefan_3D_AI","date":"2026-09-16","views":129769,"likes":885,"bookmarks":520,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2100199147915870208/vid/avc1/1280x720/d5k4QTAJte8rbKGZ.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2100199147915870208/img/98bYIqCitvxIKqGj.jpg","w":1920,"h":1080}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShy9WK-zC3UqAVP5CYYFYYEfE4ZkkFvoinsw8DfEtl6uDM4Y/","image":"https://i.pinimg.com/originals/25/17/6c/25176c546e1b4f9a94904d0e061815ee.png","date":"2026-10-11","w":1099,"h":1465},{"url":"https://www.pinterest.com/pin/e1_AfqPShxSnEWhcN8ExiH42XLFkkz88dingvgNWVCaRaMzH8f2792pPA/","image":"https://i.pinimg.com/originals/e5/c3/9c/e5c39c52c3aa063097dc5c00c3222151.png","date":"2026-09-11","w":1214,"h":1295},{"url":"https://www.pinterest.com/pin/e1_AfqPShyhLf6UbQNU1WjFhIElefB4i8_aFhq0t5gO4gD9KSog-xdD/","image":"https://i.pinimg.com/originals/1a/cb/6e/1acb6eb93474fc5278705e1cdfd6446e.jpg","title":"GTA 6","date":"2026-08-22","w":1200,"h":2133},{"url":"https://www.pinterest.com/pin/e1_AfqPShxwqcLPw3Ti3MhYzUGZZY9Yjk2z5IcHdpx8W5wy6yGqcSPO/","image":"https://i.pinimg.com/originals/f8/ed/1f/f8ed1f412fad28f45d72c437655560b8.jpg","date":"2026-07-24","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShzyYwselklOs9EvXXAuf0ceYxVWMIGTrY0uPxNXPR2wlnJz/","image":"https://i.pinimg.com/originals/4c/2f/0a/4c2f0ab5a5b6a16e1509158a64df85fe.png","title":"O Glen (Heywood)","date":"2026-07-24","w":1672,"h":941},{"url":"https://www.pinterest.com/pin/e1_AfqPShylErxEh1JxY_PpJRzxcztoIo9K1RGAU7l9JctWBH6KmEs0/","image":"https://i.pinimg.com/originals/fc/f0/ae/fcf0aecad9a2a68e56bb23b97a98bfb2.jpg","date":"2026-05-15","w":1920,"h":1080},{"url":"https://www.pinterest.com/pin/e1_AfqPShz6gP3WUTDDw-oE7GOM1ESBKTZQqliKV5iJTsF4SBB1VEbSrw/","image":"https://i.pinimg.com/originals/6d/12/f8/6d12f81df81d1bd39d0bb6adcdd45ab8.webp","title":"Grand Theft Auto V Artwork","date":"2026-04-20","w":2880,"h":1800},{"url":"https://www.pinterest.com/pin/e1_AfqPShzXZ6-izf3omY6LgJ4-7LChLMbPu7thbHan87sPXknWIXTANw/","image":"https://i.pinimg.com/originals/2f/a5/48/2fa548e1eba24aed2cf152330989dd0c.png","date":"2026-03-22","w":1680,"h":1050},{"url":"https://www.pinterest.com/pin/e1_AfqPShwKI89iIzL_8yZpAEK5FNOwpPFJ3qkyjiCCYBtB34mFusKi/","image":"https://i.pinimg.com/originals/48/d7/9e/48d79efdc7f4824d49430d000d3bec84.webp","title":"Grand Theft Auto V Artwork","date":"2026-02-04","w":2880,"h":1800},{"url":"https://www.pinterest.com/pin/e1_AfqPShyL42kDA9rYIThsyLXwA56mx6MLKCmWgqGsYkdy9y4CHa48/","image":"https://i.pinimg.com/originals/95/14/71/951471c6f679879fb82eb1d3baf1f7f2.webp","title":"Grand Theft Auto V Artwork","date":"2026-02-02","w":2880,"h":1800}],"related":["pixel-art","hollywood-blockbuster-realism"],"prompts":[],"rank":10},{"id":"chibi-sticker-pack","name":"Chibi sticker pack","aliases":["LINE stamps","LINEスタンプ","kawaii stickers","chat stickers","emoji pack"],"kind":"photo","family":"art-style","look":"A grid of one character in 8 to 16 exaggerated expressions: big head, tiny body, thick white die-cut border, flat pastel colors and a short reaction word in each sticker, on a clean white sheet.","clause":"a sticker sheet of [subject] as a chibi character in 12 different expressions, big head and small body, thick white die-cut outline, flat pastel colors, short reaction text, clean white background, the same character in every sticker","negative":"realistic proportions, painterly shading, busy background, inconsistent character design, misspelled text","models":[{"model":"ChatGPT image (GPT Image 2/2.5)","note":"https://x.com/halukik_0520/status/2094780333183160396"}],"trend":{"direction":"stable","why":"Sep 1 LINE-stamp wave (1.3k likes / 341k views) then steady 400-500 like prompt shares; sticker probe since Sep 1 (>=200 likes): A 4 / 3.9k L, B 3 / 828 L, C 13 / 5.8k L.","firstSeen":"2025; GPT image wave 2026-09"},"evidence":[{"url":"https://x.com/halukik_0520/status/2094780333183160396","author":"halukik_0520","date":"2026-09-01","views":341596,"likes":1281,"bookmarks":1675,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2094780208952102912/vid/avc1/720x1558/Ht_zRRDyWXEnITP0.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2094780208952102912/img/0R4XTYJV86TkaJeq.jpg","w":1180,"h":2556}]},{"url":"https://x.com/azed_ai/status/2095104477800050909","author":"azed_ai","date":"2026-09-02","views":33192,"likes":528,"bookmarks":446,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HRNOaDxbAAAda1D.jpg","w":1344,"h":896},{"type":"photo","url":"https://pbs.twimg.com/media/HRNOaUQbsAAcW8z.jpg","w":1344,"h":896},{"type":"photo","url":"https://pbs.twimg.com/media/HRNOajBa4AAzXgM.jpg","w":1344,"h":896},{"type":"photo","url":"https://pbs.twimg.com/media/HRNOa0zasAArSMv.jpg","w":1344,"h":896}]},{"url":"https://x.com/rascal8023/status/2099793226765058558","author":"rascal8023","date":"2026-09-15","views":76005,"likes":497,"bookmarks":450,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HSP1yJ8bMAAXyb7.jpg","w":1254,"h":1254},{"type":"photo","url":"https://pbs.twimg.com/media/HSP1zq2agAAF5q_.jpg","w":1254,"h":1254},{"type":"photo","url":"https://pbs.twimg.com/media/HSP11QkbYAAEa0g.jpg","w":1254,"h":1254},{"type":"photo","url":"https://pbs.twimg.com/media/HSP126XbEAA3Kb4.jpg","w":1254,"h":1254}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShzb5pGtOgKRyVPozQ2af6o0tRkKSNqc_ZBx_dioYgTFtJJX/","image":"https://i.pinimg.com/originals/19/2e/15/192e1547337266e5246938f226b8e1b8.png","title":"pollitos","date":"2026-10-22","w":1055,"h":1490},{"url":"https://www.pinterest.com/pin/e1_AfqPShyS0TWI_HpLDg-jFP90czJ_91ehApNmsXrrraNS6WUKwp5zFw/","image":"https://i.pinimg.com/originals/56/ae/98/56ae981d18dc992c0c3a898a1309d74d.webp","title":"Sakura spring💕","date":"2026-10-16","w":1344,"h":1792},{"url":"https://www.pinterest.com/pin/e1_AfqPShxwmYRm9YWyOltJ7sOF4hY7HKRYcbaxFwNJf25DYlX3Yg1cfQ/","image":"https://i.pinimg.com/originals/2f/3b/14/2f3b1435e09ea0e60ae447d6ac0b51d3.webp","title":"Forest friends","date":"2026-10-16","w":1344,"h":1792},{"url":"https://www.pinterest.com/pin/e1_AfqPShy4-kRWwzUHoKz89QCbcyK6mry6pa91jW_BCzAWcZE8Be0fqw/","image":"https://i.pinimg.com/originals/96/03/59/960359779ea1acba53b7f8af21c4d6b2.png","title":"Aesthetic Daily Life Stickers | Cute Pastel Kawaii Printable Stickers – 5 Pages","date":"2026-10-15","w":1414,"h":2000},{"url":"https://www.pinterest.com/pin/e1_AfqPShx4sNeBdn2RgmzQXC_DiblvnoacP4KMBWYusQDNL2fZ5URv/","image":"https://i.pinimg.com/originals/65/28/f0/6528f02c28e5092448fb1fd327ca8858.jpg","title":"2027 New Year Kawaii Zodiac Sticker Sheet: Year of the Goat Good Luck Decals","date":"2026-10-15","w":1280,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShylYkcPmT8sLDPo1fi0dQlpV-gaGX0mB7czNzwM6BwRN_yp8Q/","image":"https://i.pinimg.com/originals/d5/54/bd/d554bdbc968d01eb1b71c64184fd8623.png","title":"Cinnamoroll Sticker Sheet 🩵☁️ | Cute Kawaii Stickers, Pastel Blue Aesthetic & Sanrio Sticker Ideas","date":"2026-10-14","w":1024,"h":1536},{"url":"https://www.pinterest.com/pin/e1_AfqPShxoUjDe43Q9eXb47PFfkQ-eJoppHyjw_CSr6o4etgMUeNnK0g/","image":"https://i.pinimg.com/originals/0a/db/52/0adb522bf6e95ba869a91feeb970cbd1.jpg","title":"Cute stickers printable kawaii stamps: Set of 12 Sweet Puppy Character Designs","date":"2026-10-13","w":2217,"h":2956},{"url":"https://www.pinterest.com/pin/e1_AfqPShz80X8alJjqiCRA_f7mFL4Dl9pH8YVWSzyDoIh5UhhGG2t1uw/","image":"https://i.pinimg.com/originals/de/ce/d8/deced821e0e1dccea1adbac9322ab280.png","date":"2026-10-11","w":1049,"h":1500},{"url":"https://www.pinterest.com/pin/e1_AfqPShwE5AexNvqh7IuomLo8pcyOHLUL_oBRb0CnkYu2rKWF-bcW6Q/","image":"https://i.pinimg.com/originals/45/4b/e5/454be5c91da819734b0ecfbc3e55a56d.jpg","date":"2026-10-10","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShx5l7whWaGetCthJd6n6AXU0ErQZU6fstpqyUQPG27gARiaKg/","image":"https://i.pinimg.com/originals/17/2c/a3/172ca304d094cdeaeeaee3cbe0adc063.png","title":"💗Cute Pink Kawaii Stickers 🎀 | Pastel Aesthetic Sticker Sheet by Elysium","date":"2026-10-09","w":1024,"h":1536}],"related":["manga-panel","3d-animated-family-film"],"prompts":[],"rank":22},{"id":"cross-section-cutaway","name":"Cross-section cutaway","aliases":["cutaway illustration","coupe transversale","cross-section book","exploded view"],"kind":"photo","family":"art-style","look":"A castle, ship or machine sliced open to show every room and mechanism at once, drawn like a classic children's reference book: fine ink lines, watercolor washes, tiny busy figures, numbered labels and a parchment page. Code variants pull a 3D model apart layer by layer.","clause":"a detailed cross-section cutaway of [subject] showing every room and mechanism, classic illustrated reference-book style, fine ink linework with watercolor washes, tiny people at work, numbered labels, parchment background","negative":"photoreal render, closed exterior with no interior, flat vector icons, empty rooms, illegible clutter","models":[{"model":"image model not named (likely GPT Image 2.5 / Nano Banana)","note":"https://x.com/Frenchie_/status/2114034535146930246"},{"model":"Claude Opus 5.5 (interactive 3D cutaway)","note":"https://x.com/claudeai/status/2106125478956507480"}],"trend":{"direction":"rising","why":"12.4k likes / 1.33M views / 8.5k bookmarks for AI cross-section plates (Oct 24) plus 1.6k for an Opus 5.5 cutaway jet engine (Oct 2); very high bookmark ratio signals reuse.","firstSeen":"2026-10"},"evidence":[{"url":"https://x.com/Frenchie_/status/2114034535146930246","author":"Frenchie_","date":"2026-10-24","views":1332563,"likes":12415,"bookmarks":8468,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HVaPG8fWMAAb73G.jpg","w":1565,"h":1005}]},{"url":"https://x.com/claudeai/status/2106125478956507480","author":"claudeai","date":"2026-10-02","views":259459,"likes":1584,"bookmarks":697,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2106062964206026755/vid/avc1/1298x720/eW47bquJac4x3sl_.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2106062964206026755/img/v1YJJYplKWAb44Ui.jpg","w":1920,"h":1064}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShw3ntxLZ8aLLp5D9FRqr3WLVqNpUV1sDuJVV8HyD3Di6qbM/","image":"https://i.pinimg.com/originals/41/65/92/41659215bfbf9daf17ed9bef8ef74619.jpg","title":"G_4UqfobUAEksJB.jpg (908×1200)","date":"2026-09-23","w":908,"h":1200},{"url":"https://www.pinterest.com/pin/e1_AfqPShwT2y-50vyO2pNpw2hMrTHl3QPMZ95QOAcwlBSRY8eHLg/","image":"https://i.pinimg.com/originals/04/16/05/04160562178cd15d10870b3b81e54ef9.jpg","date":"2025-05-27","w":1125,"h":1080},{"url":"https://www.pinterest.com/pin/e1_AfqPShw7FPG9k0Z_JuNv4ThzxN_YMmxzKhMXaBT7ckK0udaHDXw/","image":"https://i.pinimg.com/originals/3d/5a/94/3d5a94524a0db59a738c016a818f7ac5.jpg","title":"stephen biesty cross sections - castle","date":"2025-04-08","w":1451,"h":1200},{"url":"https://www.pinterest.com/pin/e1_AfqPShwNOXkeuZAp_4HTEjJ04XHAW0eWaOqL7x8o9Jzz4e_ia9fu/","image":"https://i.pinimg.com/originals/46/f5/82/46f582ebb354c556724f7ab09d34b27d.jpg","date":"2025-03-10","w":736,"h":1104},{"url":"https://www.pinterest.com/pin/e1_AfqPShz_egZdB51GoZTh6L9LJCUddb3VgaJFCtYe76NjyoFaFsaE/","image":"https://i.pinimg.com/originals/8e/08/13/8e0813b7c8002960623252538752f1a3.jpg","date":"2024-09-05","w":1080,"h":1080},{"url":"https://www.pinterest.com/pin/e1_AfqPShwz2Ip1vLNu3yknDWy6A7cK7DJkpbOoUqf_tghRxb9l1A/","image":"https://i.pinimg.com/originals/b7/fe/7c/b7fe7c684c916ea26df3af4154f51d55.jpg","date":"2024-07-31","w":3022,"h":3996},{"url":"https://www.pinterest.com/pin/e1_AfqPShwcKYfnvp7qaGJcN4jJH1rEDnxSYFmpgP7oefy0VxmVFEU15w/","image":"https://i.pinimg.com/originals/47/d8/ed/47d8ed54886d41d37fc0379f142badd3.jpg","date":"2024-04-25","w":800,"h":800},{"url":"https://www.pinterest.com/pin/e1_AfqPShzAiRqXH74Wn2Oynvd3fcx8tkTwEh7E96Jg14cxCzs_diPf/","image":"https://i.pinimg.com/originals/34/61/c5/3461c58fa171482b34d5b1b7c8c5d622.jpg","title":"Believable Space.","date":"2024-04-04","w":1456,"h":1456}],"related":["isometric-wireframe","watercolor-travel-journal"],"prompts":[],"rank":5},{"id":"manga-panel","name":"Manga page","aliases":["AI manga","漫画","コマ割り","comic panels"],"kind":"photo","family":"art-style","look":"Multi-panel page layouts with speech balloons and SFX lettering, black-and-white ink with screentone or limited color, dynamic panel shapes, speed lines and exaggerated faces. AI posts focus on keeping one character consistent across panels, often from a rough layout sketch.","clause":"[subject] as a manga page, 5-panel layout with varied panel shapes, black-and-white ink with screentone shading, speed lines, speech balloons with Japanese lettering, the same character consistent across panels","negative":"single illustration, photoreal shading, western comic coloring, inconsistent faces between panels, gibberish lettering","models":[{"model":"GPT Image 2.5 (ChatGPT) with a panel-layout reference","note":"https://x.com/blogad55266101/status/2098691490935640474"},{"model":"GPT Image 2.5 + Claude manga skill","note":"https://x.com/UNfukashigi/status/2110672721789223375"}],"trend":{"direction":"stable","why":"Manga/comic probe since Sep 1 (>=200 likes): A 4 posts / 1.5k L, B 3 / 944 L, C 13 / 5.7k L; steady JP/ZH creator posts at 250-800 likes.","firstSeen":"2026-09"},"evidence":[{"url":"https://x.com/blogad55266101/status/2098691490935640474","author":"blogad55266101","date":"2026-09-12","views":68733,"likes":789,"bookmarks":607,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HSAMyJDbMAA1ZSr.jpg","w":1447,"h":2048},{"type":"photo","url":"https://pbs.twimg.com/media/HSAMyJJacAAlgHt.jpg","w":1024,"h":1536}]},{"url":"https://x.com/UNfukashigi/status/2110672721789223375","author":"UNfukashigi","date":"2026-10-15","views":45647,"likes":254,"bookmarks":172,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HUqcKv-bcAASCj3.jpg","w":1792,"h":2240},{"type":"photo","url":"https://pbs.twimg.com/media/HUqcKwWaYAAYQ_8.jpg","w":1792,"h":2240},{"type":"photo","url":"https://pbs.twimg.com/media/HUqcKwca8AAkZS4.jpg","w":1792,"h":2240},{"type":"photo","url":"https://pbs.twimg.com/media/HUqcKwvaAAAWsiI.jpg","w":1792,"h":2240}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShzu4-9bdzPjhmsamwg7AlGkefj3tjG-p1FJRVDHSoOrcko0hg/","image":"https://i.pinimg.com/originals/2b/2d/28/2b2d2839232bff6c859edaf2258b7c9d.jpg","date":"2026-10-20","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShzXm8hFmPAj5Z0P5Bsijse5srF6JKc-aIcAdv39B1xYW3gC/","image":"https://i.pinimg.com/originals/e6/f5/36/e6f5367b1bcc01d1ef8325eb42eb81c6.jpg","date":"2026-10-11","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShwhLNIXTgM60yIsPDVR-Gn50ihhk50hPKdIEx0tXb6SN9He8A/","image":"https://i.pinimg.com/originals/ec/77/b8/ec77b8df58eb0b368ab66f91755d7fd4.jpg","title":"⟢‿  Kirara Hoshi !!","date":"2026-03-29","w":736,"h":736},{"url":"https://www.pinterest.com/pin/e1_AfqPShzdhg6TOiYVvMIO43ORXkjAtL3nkQ6J63u09NmhLRToa59r/","image":"https://i.pinimg.com/originals/75/61/45/756145fd92bd69c95030cdd232447071.jpg","date":"2026-01-30","w":736,"h":736},{"url":"https://www.pinterest.com/pin/e1_AfqPShz--wD0xIO02QzcOqRfGFW5fvuJIY2_t75vleTuG9zbdtF0/","image":"https://i.pinimg.com/originals/39/6b/9d/396b9d5099ef66c0fa4ba494e156c70c.jpg","date":"2025-11-25","w":1145,"h":1791},{"url":"https://www.pinterest.com/pin/e1_AfqPShx_ASLeOg_H2xqQce9oJdBcke_YKm_rH9rKPChgwQbk3E0Jpg/","image":"https://i.pinimg.com/originals/3d/50/d7/3d50d72d7379a94d1608ce3d2c1c6842.jpg","title":"Deathnote manga panel/page","date":"2023-01-04","w":736,"h":1104},{"url":"https://www.pinterest.com/pin/e1_AfqPShwsEm24M3WbJQWfqASKIDAdreYvuQKTaSAk_ElOpa0u0SDA/","image":"https://i.pinimg.com/originals/56/1c/62/561c621e9e3f256df8b9629fe42f43d1.jpg","date":"2022-11-15","w":894,"h":1200},{"url":"https://www.pinterest.com/pin/e1_AfqPShzifqtuoFwbh-PtFm8Id6ey6fRyKqkdmmOC_jqMayUtcH3g/","image":"https://i.pinimg.com/originals/60/0b/e2/600be2179b1f127fdb6657fd0279d850.jpg","title":"Denji/Chainsaw Man | CSM","date":"2022-08-31","w":973,"h":1529},{"url":"https://www.pinterest.com/pin/e1_AfqPShzHaMxCeFVxwx1NpVAOzULkmXNUi-lYyjp9YPNMNU_-jYpt/","image":"https://i.pinimg.com/originals/46/b1/0e/46b10e79772411b38ce5e5b77f32efd9.jpg","date":"2022-04-07","w":700,"h":1031},{"url":"https://www.pinterest.com/pin/e1_AfqPShzBjZj3L3gnYbpP9ryh0JoFxPVQJ4ewbQFORb5946Dvsg4O/","image":"https://i.pinimg.com/originals/60/6a/00/606a0032364010f3267fad86766f0e7a.jpg","title":"Toji Fushiguro","date":"2021-01-21","w":870,"h":1300}],"related":["modern-tv-anime","chibi-sticker-pack"],"prompts":[],"rank":23},{"id":"painterly-storybook-illustration","name":"Painterly storybook","aliases":["Midjourney painterly sref","--sref 2120427644::4 837554414::2","--sref 2116795492","gouache fantasy"],"kind":"photo","family":"art-style","look":"Thick gouache-like brushwork with visible strokes, lush greens and soft blue shadows, small figures and animals inside big quiet landscapes, like a picture-book spread. Edges are textured and slightly crisp from blended style references.","clause":"[subject] as a painterly storybook illustration, thick gouache brush strokes, lush greens and soft blue shadows, a small figure in a vast quiet landscape, textured paper, warm afternoon light","negative":"photoreal detail, smooth airbrushed gradients, harsh black outlines, neon colors, 3D render look","models":[{"model":"Midjourney v8.2 with --sref blends","note":"https://x.com/GlitterPixely/status/2106077300018348501"}],"trend":{"direction":"stable","why":"Midjourney sref probe since Sep 1 (>=150 likes): A 5 posts / 1.3k L, B 4 / 2.9k L, C 11 / 6.1k L; top painterly sref sets 1.8k (Oct 2) and 1.0k (Sep 20).","firstSeen":"pre-2026"},"evidence":[{"url":"https://x.com/GlitterPixely/status/2106077300018348501","author":"GlitterPixely","date":"2026-10-02","views":73822,"likes":1823,"bookmarks":542,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HTpJt2EXAAEtfjI.jpg","w":640,"h":1904},{"type":"photo","url":"https://pbs.twimg.com/media/HTpJt2BWsAAgGcT.jpg","w":640,"h":1904},{"type":"photo","url":"https://pbs.twimg.com/media/HTpJt2NWsAA0MiH.jpg","w":640,"h":1904},{"type":"photo","url":"https://pbs.twimg.com/media/HTpJt2DWkAIGtNC.jpg","w":640,"h":1904}]},{"url":"https://x.com/GlitterPixely/status/2101756774143451391","author":"GlitterPixely","date":"2026-09-20","views":37977,"likes":1001,"bookmarks":223,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HSrwYz1WYAA1eSH.jpg","w":1280,"h":3808},{"type":"photo","url":"https://pbs.twimg.com/media/HSrwe4QWwAAUPzn.jpg","w":1280,"h":3808},{"type":"photo","url":"https://pbs.twimg.com/media/HSrwh0ZXIAAyBFK.jpg","w":1280,"h":3808},{"type":"photo","url":"https://pbs.twimg.com/media/HSrwkuYXYAAOXJ5.jpg","w":1280,"h":3808}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShwKmpnsppRMe_1n0rNiiekNbWOigSPgskmGKOdzwrAJFulN/","image":"https://i.pinimg.com/originals/52/fb/aa/52fbaa022ab013d31a1aaa0b9a2c3cb8.jpg","title":"Gouache painting 🎨","date":"2026-10-11","w":4096,"h":2679},{"url":"https://www.pinterest.com/pin/e1_AfqPShzFWK-5Lx7QLkSTduGOCjpJ58_5KacdAgjVgSrRx0nUUOEw/","image":"https://i.pinimg.com/originals/da/95/cf/da95cfcb12d2e50f2f8d852e0800ad8b.jpg","date":"2026-10-07","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShw87NBEnzqADyjg6GyDVV6fIx7-yUVA3cQv0NOgPi_KLnA/","image":"https://i.pinimg.com/originals/eb/47/e2/eb47e2fdcb3a514f254cb7651d2d496a.jpg","date":"2026-09-28","w":675,"h":1200},{"url":"https://www.pinterest.com/pin/e1_AfqPShwY-4eREhYRxobW0Xewe-JGeiX_114g-4CEI44Lusjq/","image":"https://i.pinimg.com/originals/81/1e/43/811e43773838c5621631514edcac5721.jpg","date":"2026-09-17","w":1320,"h":1732},{"url":"https://www.pinterest.com/pin/e1_AfqPShxgOif0jUGxgyXKoTDe1Vqoe9ls6b80SqMWqMDywd-8Fy0b/","image":"https://i.pinimg.com/originals/d5/26/85/d52685dca736595eaa7b553c3a8e2354.jpg","date":"2026-08-16","w":768,"h":1024},{"url":"https://www.pinterest.com/pin/e1_AfqPShzJC2nbJn6xWz56Y4QBPtYi71yLALZUN7dMGDSAVX24qWIFpQ/","image":"https://i.pinimg.com/originals/3f/60/7b/3f607bd7231a5731ceaf75dd0cc75a1d.jpg","date":"2026-08-16","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShygYkMzKZqyIXVuHWRbRUBrhsKMNd7tmIFKKlbknQF_-CZ7DA/","image":"https://i.pinimg.com/originals/59/3c/b8/593cb80f735337c40332aca7530cde65.png","title":"Textured Storybook Oil Painting — Red Hillside Cabin","date":"2026-07-15","w":960,"h":1200},{"url":"https://www.pinterest.com/pin/e1_AfqPShwtui_JNegZLuXHd0mTQWebEXrN33RSzAhA8NviRL5AZQ_0Iw/","image":"https://i.pinimg.com/originals/2d/4e/2f/2d4e2fa8549c3ec84e358a2cc2db5517.jpg","date":"2026-03-26","w":828,"h":1094},{"url":"https://www.pinterest.com/pin/e1_AfqPShxjsFNfJffz85MnfmHxrKo_PVenzs-SWtGl6skh8uWt1IZ6/","image":"https://i.pinimg.com/originals/62/bf/fe/62bffe0d00a3e238b545b2bcd4c1172d.jpg","date":"2026-01-17","w":736,"h":977},{"url":"https://www.pinterest.com/pin/e1_AfqPShxI5I0qlZ-X9qP51qiGmWWXxrjsAo4XcB_Kf-pWcO4ZL1bj/","image":"https://i.pinimg.com/originals/f1/a4/75/f1a4756eba2844359473daf118af44e3.jpg","date":"2025-11-12","w":1080,"h":1920}],"related":["hand-drawn-anime-film"],"prompts":[],"rank":20},{"id":"watercolor-travel-journal","name":"Watercolor travel journal","aliases":["photo + watercolor vignette","travel sketchbook","urban sketch","travel field notes"],"kind":"photo","family":"art-style","look":"Loose ink lines with transparent watercolor washes on cream paper, unfinished edges that fade to white, handwritten captions, dates and small stamps. Usually shown with the source photo above to sell the 'photo to sketchbook page' transformation.","clause":"[subject] as a travel-journal page, loose ink linework with transparent watercolor washes, unfinished edges fading into cream paper, handwritten caption and date, small stamp, generous white space","negative":"full-bleed digital painting, saturated flat colors, heavy outlines, photoreal rendering, cluttered layout","models":[{"model":"GPT Image 2 (ChatGPT)","note":"https://x.com/Sairah_0/status/2097552949862097218"}],"trend":{"direction":"fading","why":"Concentrated in early September (994 likes Sep 9, 438 Sep 6, 417 Sep 7); the same probe finds few October posts (A 3 / 934 L vs C 16 / 7.4k L across the photo-to-art poster family).","firstSeen":"2026-09"},"evidence":[{"url":"https://x.com/Sairah_0/status/2097552949862097218","author":"Sairah_0","date":"2026-09-09","views":53672,"likes":994,"bookmarks":913,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HRwBR6UaQAA40-1.jpg","w":1086,"h":1448},{"type":"photo","url":"https://pbs.twimg.com/media/HRwBR6ZaIAAhEdX.jpg","w":1086,"h":1448}]},{"url":"https://x.com/Taaruk_/status/2096518558130065826","author":"Taaruk_","date":"2026-09-06","views":16579,"likes":438,"bookmarks":406,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HRhUC-UbEAA_kbi.jpg","w":1086,"h":1448},{"type":"photo","url":"https://pbs.twimg.com/media/HRhUEDxbQAAqsOX.jpg","w":1086,"h":1448}]},{"url":"https://x.com/MissDelulu9/status/2096902953110299096","author":"MissDelulu9","date":"2026-09-07","views":14092,"likes":417,"bookmarks":267,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HRmyE4qbkAA8K89.jpg","w":1024,"h":1536},{"type":"photo","url":"https://pbs.twimg.com/media/HRmyGadbcAA1Wwa.jpg","w":1024,"h":1536}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShwkQJ0PJXYC2YkrP6RgigXsf9lT9EoMg_fLtzaBJql4Qa76/","image":"https://i.pinimg.com/originals/66/d2/6d/66d26d86593e1e21da5f450b2d368413.jpg","date":"2026-10-01","w":1536,"h":2048},{"url":"https://www.pinterest.com/pin/e1_AfqPShwVLwLs7aOIL8kI53X9L3Ji_8Bac6-ipZVQH9zn6QpEA6b3FQ/","image":"https://i.pinimg.com/originals/2d/48/a6/2d48a6dba65c6961f2e09c40e9886880.jpg","title":"Journal Spread with a Narrowboat – English Canal Travel Theme","date":"2026-09-12","w":768,"h":1376},{"url":"https://www.pinterest.com/pin/e1_AfqPShycfVB2SBu3dTwhbLHYNCjoqu4c13IPyanHq-4Utq1OWZ25fA/","image":"https://i.pinimg.com/originals/3e/e5/46/3ee546a39a7574510f5d404664976248.jpg","title":"Visual Journal Drawing: Creativity and Personal Growth","date":"2026-07-08","w":736,"h":951},{"url":"https://www.pinterest.com/pin/e1_AfqPShwkxAnjzjgXsTrwmso7BSzEKpQ-x50xkIQr1b-vSko5esft/","image":"https://i.pinimg.com/originals/67/5c/91/675c9148205b36dce0e1c1d183c68971.jpg","date":"2026-06-12","w":737,"h":1107},{"url":"https://www.pinterest.com/pin/e1_AfqPShyMviF8UmRYJnSpSZ-GBdQ-6gAsIXyWSEXdsQk7bSX98LVc/","image":"https://i.pinimg.com/originals/43/d9/8e/43d98e1b8cdbd3b49f5e53c74671b84e.jpg","date":"2026-06-06","w":736,"h":1308},{"url":"https://www.pinterest.com/pin/e1_AfqPShxG7Z6gViNF2iXozBhKwWTISL-LHGe6-dMfbwMe5nxo3-eR/","image":"https://i.pinimg.com/originals/53/fe/31/53fe31220e72a2911288ac246254ebcb.jpg","title":"Architectural Buiding","date":"2026-05-17","w":810,"h":1440},{"url":"https://www.pinterest.com/pin/e1_AfqPShxMkOm88Sb-Rd1VxXNciKr_wlNLlIgJfoaAuVTpfUNGJw/","image":"https://i.pinimg.com/originals/cc/85/c8/cc85c8ec0097a63553f9259fbcabd372.jpg","date":"2026-04-20","w":445,"h":792},{"url":"https://www.pinterest.com/pin/e1_AfqPShzxaFvS8st-3SaN8fUngbtPEqbE7_VLIBpSTuB0sSmpSWO-/","image":"https://i.pinimg.com/originals/08/c1/d5/08c1d5916a4b7f57e178602993f5c219.jpg","title":"35 Travel Journal Ideas to Capture Your Adventures!","date":"2026-03-29","w":474,"h":711},{"url":"https://www.pinterest.com/pin/e1_AfqPShwuok9pC7q3zCuzNBMmP-HUP24Kyn319lDA16b3YIMgwONv/","image":"https://i.pinimg.com/originals/e9/53/91/e95391e9414459d1eed2383b5742d8e9.jpg","date":"2025-09-30","w":1440,"h":1080},{"url":"https://www.pinterest.com/pin/e1_AfqPShwNkWuMeyGwvhe9_yHi17f1otPR_tFXlXTAkS79Eh5bni0m/","image":"https://i.pinimg.com/originals/ea/9f/df/ea9fdf7e7276c769cbda416a584d0023.png","date":"2025-09-16","w":864,"h":1536}],"related":["editorial-art-poster","cross-section-cutaway"],"prompts":["x-2102724961408626735"],"rank":28},{"id":"luxury-product-commercial","name":"Luxury product commercial","aliases":["product splash","perfume ad","beverage commercial","hero product shot"],"kind":"both","family":"editorial-fashion","look":"One product as the hero on a dark or saturated seamless: high-speed liquid splashes and droplets frozen mid-air, crisp rim light along glass edges, macro detail, and slow push-ins or orbiting moves.","clause":"[subject] as the hero of a luxury commercial, high-speed liquid splash frozen mid-air, crisp rim light along glass edges, dark glossy seamless background, macro detail, slow orbiting camera","negative":"cluttered background, flat lighting, warped or misspelled labels, extra products, handheld shake","models":[{"model":"Seedance 2.5","note":"https://x.com/navi_Ai2/status/2113911025393397789"},{"model":"Nano Banana 2 + Gemini Omni Flash 1.1","note":"https://x.com/Strength04_X/status/2094760813794111843"}],"trend":{"direction":"stable","why":"Product-commercial probe since Sep 25 (>=300 likes): A 5 posts / 2.8k L, B 12 / 5.0k L, C 3 / 1.4k L; reliable 300-700 like prompt shares.","firstSeen":"pre-2026"},"evidence":[{"url":"https://x.com/Strength04_X/status/2094760813794111843","author":"Strength04_X","date":"2026-09-01","views":48025,"likes":663,"bookmarks":670,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2094760684235988992/vid/avc1/720x1280/cDPvskEIBCxsRBN4.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2094760684235988992/img/7mUMfjmVJ1sdE5XG.jpg","w":720,"h":1280},{"type":"photo","url":"https://pbs.twimg.com/media/HRIV2OMWEAAdkxS.jpg","w":1024,"h":1536}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShyECb3L92lfVbx4kJtmxNp63rBj-XPLYhXmMIeaDWRE1mC2XA/","image":"https://i.pinimg.com/originals/43/76/32/43763201f248e50ef5f800b28e67bdff.png","title":"Blood Orange Spiral | Beverage Ad Concept","date":"2026-10-08","w":1122,"h":1402},{"url":"https://www.pinterest.com/pin/e1_AfqPShy53UIDrEaISHKCoh8IISeSTXnZ7DYsy9n9sj-5H8SSdnVKvA/","image":"https://i.pinimg.com/originals/95/1d/fc/951dfcc41fcdcbe74211ad2703e210df.png","title":"Fresh Blue Perfume Aesthetic | Jasmine & Summer Fragrance Inspiration","date":"2026-10-08","w":1024,"h":1536},{"url":"https://www.pinterest.com/pin/e1_AfqPShwyxnO3LpDOJtmFdpVDrae--LbFU20mv9-SmjyJg1xugSrsOA/","image":"https://i.pinimg.com/originals/21/dd/5a/21dd5af8f35e957ffad645205e015c07.jpg","date":"2026-10-07"},{"url":"https://www.pinterest.com/pin/e1_AfqPShwyEEGAjqMK7cQTWJqAe4U-moMqwB-_GYsOWquKGYTUqhEK/","image":"https://i.pinimg.com/originals/81/85/8c/81858cce88eaeb2733552291a4f883b6.jpg","title":"Luxury Splash Photography | STRAND. AI Beauty Campaign","date":"2026-09-16","w":832,"h":1248},{"url":"https://www.pinterest.com/pin/e1_AfqPShxK-Yq0-dcw0a1lRvQPBNjiDiENcDn6qbY108KjLXHkxgMC/","image":"https://i.pinimg.com/originals/8e/54/fa/8e54fa2431b6fa196a6dd896fe9cb478.png","title":"Luxury Perfume Product Photography | Dynamic Water Splash Concept","date":"2026-09-02","w":768,"h":1365},{"url":"https://www.pinterest.com/pin/e1_AfqPShxvrrKV1FG86b1vmBfElZP2YhL6oBbTSUYlwirGwlDpvF39/","image":"https://i.pinimg.com/originals/e5/71/df/e571dfd2ca4db874d3da897ef4165991.jpg","title":"Luxury Perfume Editorial | Golden Water Splash","date":"2026-08-19","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShwzOsdo-77hA_z_kAVJZowqx4o_GoXUHsmbGqe5_imApG8ohw/","image":"https://i.pinimg.com/originals/9d/a3/c6/9da3c693f170f48e15f36baf8c6ad775.jpg","title":"Page Amazon de BOUTIQUE SACPLAS - PARFUMS POUR HOMMES","date":"2026-07-20","w":345,"h":517},{"url":"https://www.pinterest.com/pin/e1_AfqPShzJcZyYgh45Gn9e8C2GDtEOX0qk1Zkxy-syf9deX8GMNA-J/","image":"https://i.pinimg.com/originals/e2/16/d3/e216d36e478fd810e01432e8bdf6f01e.png","title":"Luxurious Men's Fragrance Splash Photography","date":"2026-07-17","w":816,"h":1456},{"url":"https://www.pinterest.com/pin/e1_AfqPShybP3cgVAQvku033o00kTaEFTjppNOBvDuZcJ2cZeIIYdMMLw/","image":"https://i.pinimg.com/originals/b1/e6/c1/b1e6c1431093f85d66c9c3ffd109e997.png","title":"Luxury Water Splash Cosmetic Photography  High Speed Product Shot","date":"2026-03-11","w":1000,"h":1500},{"url":"https://www.pinterest.com/pin/e1_AfqPShyWWgq9F9wq66EUTUppKwGsYT3Ufo6rLzsY_YRXLZj6zqFr/","image":"https://i.pinimg.com/originals/00/be/6c/00be6c29933b466168a7e349b73c4e9a.jpg","title":"Product Photography 655","date":"2025-10-02","w":736,"h":1104}],"pairsWith":["rim-light"],"related":["jelly-gummy-3d","asmr-cutting"],"prompts":["x-2099935072010822040"],"rank":16},{"id":"fpv-drone-one-take","name":"FPV drone one-take","aliases":["FPV","drone fly-through","one continuous shot","POV ride"],"kind":"video","family":"film-look","look":"One uninterrupted first-person flight that dives, banks and threads gaps between buildings, under bridges and over cliffs, with ultra-wide 14-16mm distortion, edge motion blur and horizon roll. Usually golden hour or neon night, with speed ramps instead of cuts.","clause":"one continuous FPV drone shot flying through [subject], fast dives and banking turns, threading narrow gaps, ultra-wide 14mm lens, motion blur at the frame edges, golden-hour light, no cuts","negative":"static tripod framing, cuts or crossfades, warping buildings, weightless camera without inertia","models":[{"model":"Seedance 2.5","note":"https://x.com/Naiknelofar788/status/2106439652278411435"},{"model":"Seedance 2.5 (FishCreative)","note":"https://x.com/abxxai/status/2103861170625286334"}],"trend":{"direction":"stable","why":"Mid-size posts every week, no breakout: FPV/one-take probe since Sep 1 (>=200 likes): A 5 / 1.1k L, B 9 / 3.1k L, C 6 / 2.6k L.","firstSeen":"pre-2026"},"evidence":[{"url":"https://x.com/Naiknelofar788/status/2106439652278411435","author":"Naiknelofar788","date":"2026-10-03","views":21625,"likes":438,"bookmarks":440,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2106439575665364992/vid/avc1/1280x720/X4SCTi0gGUfi187d.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2106439575665364992/img/Lmryb57gSh4C23Cw.jpg","w":1920,"h":1080}]},{"url":"https://x.com/abxxai/status/2103861170625286334","author":"abxxai","date":"2026-09-26","views":84601,"likes":394,"bookmarks":406,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2103861066505900032/vid/avc1/960x720/bqLrZTSUTdjt7OEA.mp4?tag=16","poster":"https://pbs.twimg.com/amplify_video_thumb/2103861066505900032/img/6KFM-ejxMiPQDd8G.jpg","w":1664,"h":1248}]},{"url":"https://x.com/q_a_i_m_01/status/2104459488569000427","author":"q_a_i_m_01","date":"2026-09-28","views":21695,"likes":377,"bookmarks":255,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2104459418016604160/vid/avc1/720x1280/oeOGFG22ki3o1X84.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2104459418016604160/img/KOdDnZ5bouEXOis_.jpg","w":720,"h":1280}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShziNPKYK-XQaccPgXZkSrkneraQHCTk0psjFEJAlWmig8L8/","image":"https://i.pinimg.com/originals/98/1c/6e/981c6e708393d6e82b441e8ced59b19d.jpg","date":"2026-03-08","w":2011,"h":3480},{"url":"https://www.pinterest.com/pin/e1_AfqPShxV0VvXRKnpCx7a7_9F21MTUm9f27y6bcv6FMTDKaifoYMX/","image":"https://i.pinimg.com/originals/5c/e9/d2/5ce9d2bedd5e8d9f31ce53ba70c15566.jpg","date":"2024-07-24","w":759,"h":1350},{"url":"https://www.pinterest.com/pin/e1_AfqPShwNU-c_5jjA8wJtFVBIakI2zO-g6tdv6V0i_dLxtugH7ODR/","image":"https://i.pinimg.com/originals/5b/ec/d7/5becd7410de783c7141829f520dc2700.jpg","date":"2017-12-14","w":474,"h":592}],"pairsWith":["speed-ramp","golden-hour"],"related":["hollywood-blockbuster-realism"],"prompts":[],"rank":24},{"id":"hollywood-blockbuster-realism","name":"Hollywood blockbuster realism","aliases":["cinematic","Hollywood blockbuster","IMAX look","teal and orange","movie still"],"kind":"video","family":"film-look","look":"Photoreal live-action frames graded like a studio tentpole: teal shadows against warm skin and practical fire, anamorphic flares, shallow depth and heavy atmosphere (rain, smoke, sparks). Motion is kinetic but readable: dolly pushes, whip pans, slow-motion impacts and hard-cut montages that keep one hero subject consistent.","clause":"[subject] in an ultra-photoreal Hollywood blockbuster shot, anamorphic 2.39:1 lens, teal-and-orange grade, volumetric smoke and practical sparks, low-angle dolly push, shallow depth of field, 24fps motion blur","negative":"flat even lighting, plastic CG skin, video-game sheen, oversaturated HDR, morphing between shots, cartoon proportions","models":[{"model":"Seedance 2.5","note":"https://x.com/nancy__diazz_/status/2112769576245277011"},{"model":"Kling 4.0","note":"https://x.com/YapayZekaSerisi/status/2111104253817155607 (3.3k likes, Oct 16)"},{"model":"Grok Imagine","note":"https://x.com/imagine/status/2113712964419063911 (Odyssey ep. 1, 23.4k likes, 7.6M views, Oct 23)"}],"trend":{"direction":"peak","why":"The default look of the Seedance 2.5 wave; cinematic/anamorphic probe since Sep 1 (>=200 likes): A 5 / 1.1k L, B 9 / 3.1k L, C 6 / 2.6k L, while single organic posts still hit 3.1k (Oct 10) and 2.4k (Sep 15). The biggest one in the window (7.0k, Oct 21) was part of a paid Flova campaign.","firstSeen":"pre-2026"},"evidence":[{"url":"https://x.com/auqibhabib/status/2099725768310009982","author":"auqibhabib","date":"2026-09-15","views":605954,"likes":2423,"bookmarks":1388,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2099725608477708289/vid/avc1/1280x720/gThfCNI4_Gk-hlBI.mp4","poster":"https://pbs.twimg.com/media/HSO5dAbakAEP3eY.jpg","w":1280,"h":720}]},{"url":"https://x.com/Noor_ul_ain43/status/2104793144743108833","author":"Noor_ul_ain43","date":"2026-09-29","views":73738,"likes":1026,"bookmarks":734,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2104792885485088768/vid/avc1/1280x720/edaMdB-6mKney1j_.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2104792885485088768/img/vymOJS_0V_eSnNdy.jpg","w":1920,"h":1080}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShyJBGOTganXXguXRUyOMF5sNDJO8VGVnWLx8fBOKvre_FS3/","image":"https://i.pinimg.com/originals/f2/c7/a1/f2c7a1f4fb36068ee87c27b898ae2d3a.jpg","title":"HEAT (1995)","date":"2026-06-07","w":768,"h":1365},{"url":"https://www.pinterest.com/pin/e1_AfqPShwGNQgdL895dfKeQgpq5mz6arb7fQhC96KJ_2MFPd_6BqXC/","image":"https://i.pinimg.com/originals/a8/44/9f/a8449fb69897943f0a2a9c736c7a0fb2.jpg","date":"2026-05-23","w":736,"h":1308},{"url":"https://www.pinterest.com/pin/e1_AfqPShyHpA1Kx30ESLz7WZiNNMa_SzNZdNgP_8xKvMN3FJc2tTlB/","image":"https://i.pinimg.com/originals/e6/14/00/e614008f8cd510ca224f7f8ebb1e61ec.jpg","date":"2026-03-13","w":736,"h":1308},{"url":"https://www.pinterest.com/pin/e1_AfqPShzQiW4r9XOpaUXgXyDc63F5Bv9Zic4S9jpXZrj7UHmYNc8-/","image":"https://i.pinimg.com/originals/94/28/81/942881b334403470ce41620ee0d5fb43.jpg","date":"2026-03-09","w":1200,"h":675},{"url":"https://www.pinterest.com/pin/e1_AfqPShwvHF4Eysc6AY6rCqCVlPDffnzxepgB2gGO-rTPNHGrsufE/","image":"https://i.pinimg.com/originals/09/91/3b/09913b8f70c7d64361f899a6e281be8e.jpg","title":"Night","date":"2026-02-18","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShzmIKIZbcWml7PeVfkXyJzGQmZdYDWZCxS5HhWm_nzDhWxB6g/","image":"https://i.pinimg.com/originals/5b/d0/07/5bd0078d8475fa893de6c828cd36c0d7.jpg","date":"2025-09-19","w":2296,"h":4096},{"url":"https://www.pinterest.com/pin/e1_AfqPShwtd72FJrnlwGJZI_RGxZR5oK3Q_kyc_z8xnQvxELEwgsH8/","image":"https://i.pinimg.com/originals/3d/22/8a/3d228aee5f974730425ab7b92f2bf1a7.jpg","date":"2025-09-13","w":1023,"h":1195},{"url":"https://www.pinterest.com/pin/e1_AfqPShzroR4E0WCk3ybpzBOfQkhLSNsLmxLXZ_H7FB4tFE-kxvvxoA/","image":"https://i.pinimg.com/originals/d1/d0/b0/d1d0b0822d111e09f41cdfc63c905b29.png","title":"Blue Hour Gold","date":"2024-02-21","w":1080,"h":1920}],"pairsWith":["anamorphic-lens","volumetric-light"],"related":["fpv-drone-one-take"],"prompts":["x-2107436379575840895"],"rank":3},{"id":"code-motion-design","name":"Code-made motion design","aliases":["Opus motion design","kinetic typography","product launch video","After Effects killer","HyperFrames / Remotion motion"],"kind":"video","family":"graphic-design","look":"Product-launch motion graphics rendered from HTML, GSAP or three.js instead of a video model: big kinetic type, UI cards sliding on a strict grid, isometric devices and Swiss-style layouts. Neutral or near-black backgrounds with one accent color, crisp vector edges and tight, deliberate easing; every frame is pixel-sharp because nothing is generated.","clause":"a 15-second product-launch motion graphic for [subject]: bold kinetic typography, UI cards sliding on a precise grid, crisp vector shapes, one accent color on a neutral background, snappy ease-in-out timing, built in HTML/GSAP","negative":"AI-video morphing, blurry or misspelled text, random stock footage, more than two typefaces, linear robotic easing, cluttered layouts","models":[{"model":"Claude Opus 5.5 (code: HTML/GSAP/three.js)","note":"https://x.com/twoclipping/status/2103273003555402193"},{"model":"Claude Opus 5.5 + HyperFrames/Remotion","note":"https://x.com/rexan_wong/status/2103707054108299437"},{"model":"Higgsfield Katana + Claude Motion","note":"https://x.com/higgsfield/status/2108294775644585998 (7.7k likes, 2.4M views, Oct 8)"}],"trend":{"direction":"rising","why":"Biggest AI-visual cluster this month: motion-design probe since Sep 15 (>=300 likes) has 10 posts in Oct 13-27 (20.4k likes total) vs 4 in Sep 29-Oct 12 (8.5k); 12.7k (Sep 24), 6.9k (Oct 10), 6.5k (Oct 19), 4.4k (Oct 17) like posts.","firstSeen":"2026-09 (Opus 5.5 release)"},"evidence":[{"url":"https://x.com/twoclipping/status/2103273003555402193","author":"twoclipping","date":"2026-09-24","views":1177022,"likes":12717,"bookmarks":21055,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2103272964967804928/vid/avc1/720x720/18beFxJGrO4tjaDQ.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2103272964967804928/img/DTuQzS4NOGKMbTDA.jpg","w":1440,"h":1440}]},{"url":"https://x.com/flxrnc/status/2108899503092740561","author":"flxrnc","date":"2026-10-10","views":701660,"likes":6880,"bookmarks":13517,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2108897781645488128/vid/avc1/720x720/4Rtvr532lcsCtAwp.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2108897781645488128/img/FhSyXjBAt6UR56qz.jpg","w":1080,"h":1080}]},{"url":"https://x.com/0xwhrrari/status/2112166940081004693","author":"0xwhrrari","date":"2026-10-19","views":534077,"likes":6521,"bookmarks":10487,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2112159859609161728/vid/avc1/1282x720/RFkyDtS18uCJj5Mx.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2112159859609161728/img/FykzNxNaXuN02Scu.jpg","w":1923,"h":1080}]},{"url":"https://x.com/rexan_wong/status/2103707054108299437","author":"rexan_wong","date":"2026-09-26","views":644488,"likes":6893,"bookmarks":18185,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2103706737085980672/vid/avc1/960x720/diyCrg1PZoxkeBqf.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2103706737085980672/img/8VLe1EgFhxjepOB9.jpg","w":2016,"h":1512}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShzxaCWAMQxvbBzwEA5ajulr3XjIcPKtROQ623hPs9Yp3zw6zQ/","image":"https://i.pinimg.com/originals/13/fd/0c/13fd0c34e10352cd2e1d7d308ab481e5.png","title":"DESIGN SHOULD MOVE THE EYE BEFORE IT MOVES THE WORLD. | The Grafx","date":"2026-08-17","w":1024,"h":1536},{"url":"https://www.pinterest.com/pin/e1_AfqPShwlLw4d_MDVWlK8DG1kiTat3-XVtJvB10uJpp5YwFoBgVKRGg/","image":"https://i.pinimg.com/originals/ad/02/a9/ad02a9c2494c8124fdfab8cd88123ed3.jpg","date":"2026-03-15"},{"url":"https://www.pinterest.com/pin/e1_AfqPShyrvUXjRBSziV5pCwKX041InyVEQgL9wxyUrdtXY0gfx1lY/","image":"https://i.pinimg.com/originals/36/b5/65/36b5658b9dacf38a289a37abcf9fb405.jpg","title":"Stocksjabloon Swiss Modernism Poster Layout with Square Typography","date":"2023-11-30","w":1024,"h":1901},{"url":"https://www.pinterest.com/pin/e1_AfqPShzCdquzA-OPppQNIBRDfB2xfktLIEDVzGo2EL4fAdUHG-q-/","image":"https://i.pinimg.com/originals/47/ce/e5/47cee5b0705cf5cae940bf74aca3f51b.gif","title":"KINETIC VERBS - Aleandro Romandini","date":"2023-05-12","w":600,"h":600},{"url":"https://www.pinterest.com/pin/e1_AfqPShwQZMNtbAT9-5byy3B_CB3dJqfcXDZpQ86-6vjH6V_lgfdi/","image":"https://i.pinimg.com/originals/77/02/17/7702176f2c8ca703bc3c38319cd30b3f.jpg","date":"2023-03-24","w":450,"h":585}],"related":["flat-vector-explainer","isometric-wireframe"],"prompts":[],"rank":1},{"id":"editorial-art-poster","name":"Photo-to-editorial art poster","aliases":["split poster","photo + illustration poster","minimalist lifestyle art poster","independent art publication cover"],"kind":"photo","family":"graphic-design","look":"The original photo kept intact (top half or inset) beside a minimalist redraw of the same scene: ink lines or three to four flat colors on rough off-white paper. Lots of negative space and small handwritten or editorial type such as a title, coordinates or 'diary'.","clause":"an editorial art poster of [subject]: top half the original photo, bottom half a minimalist hand-drawn illustration of the same scene on rough off-white paper, max 4 flat colors, generous negative space, small handwritten title and coordinates","negative":"busy collage, heavy typography, full-bleed illustration, glossy gradients, changing the subject's face, extra decorations","models":[{"model":"GPT Image 2.5 (ChatGPT)","note":"https://x.com/Naiknelofar788/status/2101161664892829838"},{"model":"Nano Banana 2.1","note":"https://x.com/ChillaiKalan__/status/2110581440085987751"}],"trend":{"direction":"fading","why":"Peaked in September (1.7k Sep 19, 1.0k Sep 2, 994 Sep 9); poster probe since Sep 1 (>=200 likes): A 3 posts / 934 L, B 1 / 2.1k L, C 16 / 7.4k L.","firstSeen":"2026-09"},"evidence":[{"url":"https://x.com/Naiknelofar788/status/2101161664892829838","author":"Naiknelofar788","date":"2026-09-19","views":129131,"likes":1698,"bookmarks":2228,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HSjTZH2bcAABcL4.jpg","w":1206,"h":1700},{"type":"photo","url":"https://pbs.twimg.com/media/HSjTZH9agAAR7R0.jpg","w":1122,"h":1402}]},{"url":"https://x.com/MissDelulu9/status/2095046356364906741","author":"MissDelulu9","date":"2026-09-02","views":65971,"likes":1035,"bookmarks":1061,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HRMZiA1bkAAy-Rd.jpg","w":1086,"h":1448},{"type":"photo","url":"https://pbs.twimg.com/media/HRMZjOJbUAABh_I.jpg","w":1086,"h":1448}]},{"url":"https://x.com/harboriis/status/2107346549542203400","author":"harboriis","date":"2026-10-06","views":14435,"likes":417,"bookmarks":346,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HT7Me1qaAAAUZ0F.jpg","w":1086,"h":1448},{"type":"photo","url":"https://pbs.twimg.com/media/HT7Mfe4bwAAwp10.jpg","w":1086,"h":1448},{"type":"photo","url":"https://pbs.twimg.com/media/HT7MgUmbEAAXUeR.jpg","w":1086,"h":1448},{"type":"photo","url":"https://pbs.twimg.com/media/HT7Mg3VbkAAmFuJ.jpg","w":1086,"h":1448}]},{"url":"https://x.com/ChillaiKalan__/status/2110581440085987751","author":"ChillaiKalan__","date":"2026-10-15","views":13788,"likes":414,"bookmarks":334,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HUpKnQMbAAAQPjV.jpg","w":1024,"h":1536},{"type":"photo","url":"https://pbs.twimg.com/media/HUpKnQCbIAEbjiA.jpg","w":1024,"h":1536}]},{"url":"https://x.com/MahnoorAi12/status/2101915804724015207","author":"MahnoorAi12","date":"2026-09-21","views":31234,"likes":465,"bookmarks":445,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HSuAyH8bsAAb6pW.jpg","w":1080,"h":1440},{"type":"photo","url":"https://pbs.twimg.com/media/HSuAyILbkAAJd94.jpg","w":1080,"h":1440}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShx0EFT6Y7VsHyvZ7uLmt_JMMF8KxQYuSY_zsI_caKtAwolfJg/","image":"https://i.pinimg.com/originals/0b/e2/ba/0be2ba8d200ce50125129b476a23513b.png","title":"Minimalist Japanese Poster","date":"2026-09-30","w":1024,"h":1536},{"url":"https://www.pinterest.com/pin/e1_AfqPShyBctEyre4eKO8WucZZKdDhpwpaffmyjQ5so3gonxB_RyM7/","image":"https://i.pinimg.com/originals/5b/f1/61/5bf1611defddc76daa2b327026355ce1.png","title":"Постер | poster","date":"2026-08-25","w":1086,"h":1448},{"url":"https://www.pinterest.com/pin/e1_AfqPShx-6ro3051NDv3RYxCQ9eKqt8MRtWxsDE7RITbfLJ71yZ-3ng/","image":"https://i.pinimg.com/originals/fb/5c/85/fb5c858fb82088ae5a52ceed37ecb0d7.png","title":"Less Is More Graphic Design","date":"2026-05-21","w":1080,"h":1350},{"url":"https://www.pinterest.com/pin/e1_AfqPShwSZaB3cOydu_gZF2pBVKFLymkorA3YenXO-_igMQSd5k7AeA/","image":"https://i.pinimg.com/originals/53/d2/70/53d27007a89e10e71c21fadfb9f41796.png","date":"2026-02-22","w":896,"h":1344},{"url":"https://www.pinterest.com/pin/e1_AfqPShwyVV0rrcXCzhPcHOK1Fuzm81xP7VQO-BeSw_JPWWH1w5-t9Q/","image":"https://i.pinimg.com/originals/e8/db/33/e8db33cf0326601d972f63f43888d5db.png","title":"Scandinavian interior branding poster","date":"2026-02-02","w":1000,"h":1400},{"url":"https://www.pinterest.com/pin/e1_AfqPShwprD0zYf8GRSX3kI_xPo2vLb6lO2T2vFY5H9qnwvaKdKfW/","image":"https://i.pinimg.com/originals/59/ea/10/59ea108d8959586d359980808dc84fc3.jpg","date":"2026-01-27","w":736,"h":920},{"url":"https://www.pinterest.com/pin/e1_AfqPShzzBulb4LZFDa_PoXzVzNzVBnss4sQylp9fr9bjI-hjeqCx7w/","image":"https://i.pinimg.com/originals/9f/98/06/9f9806e981aec312a08260bdedcd8c4a.jpg","date":"2025-10-08","w":1080,"h":1350},{"url":"https://www.pinterest.com/pin/e1_AfqPShwplqzprrmOiudYudFIIN_SVYYcHEtFA89kmwwIjO7zuD_Q/","image":"https://i.pinimg.com/originals/b3/5e/5a/b35e5ada859688299e5c391567016a3b.png","title":"Ryan Carrel: Poster Art by Ryan Carrel Design - Curated on Savee","date":"2025-08-24","w":1080,"h":1950},{"url":"https://www.pinterest.com/pin/e1_AfqPShxcsKyMUxMeTZ1l1jEACtm3GZOYucjfD17Pj78TNa7I_gZu/","image":"https://i.pinimg.com/originals/17/fa/58/17fa58d76da2eb37a23af221389e7c4d.jpg","title":"Minimal Urban Poster Design – Bold Layouts with Retro Texture & Editorial Vibes","date":"2025-07-08","w":1200,"h":1500},{"url":"https://www.pinterest.com/pin/e1_AfqPShxVCJo8WtGhhZhFGsuPci4NZh-BHNpkrwzwIlK-hIwfGqduzA/","image":"https://i.pinimg.com/originals/5a/12/7c/5a127cc0be6c0dd21bf7b81e40c60ac5.jpg","title":"Download premium png of Minimal fashion photo collage, editable design by Wan about people, p...","date":"2025-04-29","w":563,"h":1000}],"pairsWith":["negative-space"],"related":["watercolor-travel-journal","risograph-grain-print"],"prompts":["x-2102724961408626735","x-2100067049288634730","x-2103696195000709627","x-2106990557813968909","x-2110581440085987751"],"rank":27},{"id":"flat-vector-explainer","name":"Flat vector science explainer","aliases":["Kurzgesagt style","Kurzgesagt-like","flat vector animation","science explainer"],"kind":"video","family":"graphic-design","look":"Flat geometric vector shapes with soft inner gradients on deep navy or space-blue backgrounds, rounded friendly characters (birds, planets, cells), glowing accent rims and big numeric callouts. Motion is smooth parallax, scaling and orbiting rather than camera moves.","clause":"[subject] explained in a flat vector science-explainer animation, geometric shapes with soft gradients, deep navy background with glowing accents, rounded friendly characters, big number callouts, smooth parallax motion","negative":"photoreal footage, sketchy hand-drawn lines, dense text blocks, harsh black outlines, 3D realism, muddy palette","models":[{"model":"Claude Opus 5.5 (code)","note":"https://x.com/finnardley/status/2114305886420086817"},{"model":"Claude Opus 5.5 + HyperFrames","note":"https://x.com/WaterrrMiao/status/2114585876160455057"}],"trend":{"direction":"rising","why":"New this week: 3.0k likes / 236k views (Oct 25) and 1.1k / 332k (Oct 26) for 'recreate a science-explainer channel with Claude' posts; no comparable posts before Oct 25.","firstSeen":"2026-10"},"evidence":[{"url":"https://x.com/finnardley/status/2114305886420086817","author":"finnardley","date":"2026-10-25","views":236400,"likes":3022,"bookmarks":5122,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2114305237498388481/vid/avc1/1280x720/gaBDvlO0WX3W_3I3.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2114305237498388481/img/DMcFgslJnlOdVQ94.jpg","w":1920,"h":1080}]},{"url":"https://x.com/WaterrrMiao/status/2114585876160455057","author":"WaterrrMiao","date":"2026-10-26","views":332231,"likes":1116,"bookmarks":2212,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2114583237372903424/vid/avc1/1280x720/Bwxj-xS6my9CLXmS.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2114583237372903424/img/uUsVo8ZxiL9T48eu.jpg","w":1920,"h":1080}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShwIvFCNbs15tMw3BPLQA1RIK3S7_5QTf7P6_BzugnircWk3Qg/","image":"https://i.pinimg.com/originals/0a/bf/32/0abf3268d437d5ad83874aa6e5574aa4.jpg","title":"Kurzgesagt","date":"2026-06-15","w":640,"h":356},{"url":"https://www.pinterest.com/pin/e1_AfqPShy0gdIfWGAn3QJdV0ne_VEnj0uI5A9ZBHaEHjPM9yfDTxHz/","image":"https://i.pinimg.com/originals/37/32/68/373268aaff504ae69b7e892ec5194408.jpg","date":"2026-05-25","w":1384,"h":2998},{"url":"https://www.pinterest.com/pin/e1_AfqPShwULdmuAYWR5IppJrkGtByhxjxKSowohu6PIKH3NUjjwJqb/","image":"https://i.pinimg.com/originals/6f/55/6e/6f556e71fe3c770b596fbcfbe901af2e.png","title":"Kurzgesagt","date":"2026-03-03","w":1622,"h":2048},{"url":"https://www.pinterest.com/pin/e1_AfqPShztbXZYkYR7-enPhFLQftOgBCLa0xrI3cTT50qzwvL0lQmn/","image":"https://i.pinimg.com/originals/86/5e/08/865e0813195c12ff4b90c3cebb5ccb06.jpg","title":"𝙿𝚒𝚗_𝙱𝚢 ~ ༺𝓟𝓲𝓪𝓷𝓸𝓲𝓷𝓰༻","date":"2024-08-26","w":444,"h":596},{"url":"https://www.pinterest.com/pin/e1_AfqPShzOqQlCiVN_YZ2kFiKTC3Q5GFThE8hIgUW2A78YwfzXgg/","image":"https://i.pinimg.com/originals/2c/b2/aa/2cb2aa6c4b8aac0be04d52ce2b1cc21a.jpg","date":"2022-03-02","w":1800,"h":1800},{"url":"https://www.pinterest.com/pin/e1_AfqPShwwgM1rvG15P8u8uKspwcdqnymRURZd2lBLp-FVd010szJ4/","image":"https://i.pinimg.com/originals/fa/00/3e/fa003e12fe9e9a9be41005afd3291114.png","title":"Anchor by Spotify - Estudio Pum","date":"2021-11-08","w":1168,"h":1080},{"url":"https://www.pinterest.com/pin/e1_AfqPShzJClE7QtIA6tI-elzUphi1p_7C1hRiRfrjg5VIhdGRll2R/","image":"https://i.pinimg.com/originals/cd/6d/a0/cd6da06eccecd968356d2837e09efb6d.png","title":"Kurzgesagt Style","date":"2020-08-23","w":6000,"h":2000},{"url":"https://www.pinterest.com/pin/e1_AfqPShxJ6oIkcUsiG3EO9GRo2-r8aSf4FRxmjiJ1inBcW-Ic2ucx/","image":"https://i.pinimg.com/originals/e6/59/5c/e6595c9a6002bc9927b4327ab779ff2b.jpg","title":"Kurzgesagt","date":"2020-04-01","w":1200,"h":1200},{"url":"https://www.pinterest.com/pin/e1_AfqPShw_3p9HCgUGF7m4qu0c1hlOBaMVD49I_kxebmopFOblHX0L/","image":"https://i.pinimg.com/originals/ae/e0/53/aee053854787226ddc58770a2c2b1a1d.jpg","title":"Kurzgesagt","date":"2020-03-27","w":1024,"h":829},{"url":"https://www.pinterest.com/pin/e1_AfqPShwlDUynCLD57q2WhmhNqDuXUOwM8rDAY6geEdHBSfdeu1Dj/","image":"https://i.pinimg.com/originals/0e/b6/b8/0eb6b89247c070897a34bf12694f2866.png","title":"space flat design - ali samir","date":"2019-03-09","w":2480,"h":3508}],"pairsWith":["parallax-move"],"related":["code-motion-design"],"prompts":[],"rank":12},{"id":"isometric-wireframe","name":"Isometric wireframe","aliases":["isometric SVG","technical isometric","exploded isometric","isometric objects skill"],"kind":"both","family":"graphic-design","look":"Objects in true 30-degree isometric projection drawn with thin monoline strokes, mostly white and light grey with one accent color, often exploded into layers that assemble with smooth eased motion. Reads like premium hardware or SaaS product illustration.","clause":"[subject] as an isometric wireframe illustration, true 30-degree isometric projection, thin monoline strokes, white and light-grey palette with one accent color, exploded layers, clean technical look","negative":"perspective distortion, sketchy uneven lines, heavy shading, photoreal textures, cluttered labels, multiple accent colors","models":[{"model":"Claude Opus 5.5 (SVG skill)","note":"https://x.com/wheresryan22/status/2106476722463900105"},{"model":"Claude Opus 5.5 + anatomy skill","note":"https://x.com/0xMovez/status/2109334686488990093"}],"trend":{"direction":"peak","why":"Cluster of 2.4k (Oct 3), 2.3k (Oct 11), 1.1k (Oct 8) like posts; isometric/cutaway probe since Sep 1 (>=200 likes): A 5 posts / 9.5k L, B 11 / 11.4k L, C 5 / 1.3k L.","firstSeen":"2026-10"},"evidence":[{"url":"https://x.com/wheresryan22/status/2106476722463900105","author":"wheresryan22","date":"2026-10-03","views":132100,"likes":2428,"bookmarks":3171,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2106476663580106752/vid/avc1/870x720/FKQeGkwR08kdeLh7.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2106476663580106752/img/9oHx77UqCrhmTV4Q.jpg","w":1760,"h":1454}]},{"url":"https://x.com/0xMovez/status/2109334686488990093","author":"0xMovez","date":"2026-10-11","views":172240,"likes":2334,"bookmarks":3134,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2109333660990107648/vid/avc1/720x720/ojMSfOn2R0jzmQll.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2109333660990107648/img/oh7JUD35ieoly6pR.jpg","w":1082,"h":1080}]},{"url":"https://x.com/itsnotryan/status/2108228989063991575","author":"itsnotryan","date":"2026-10-08","views":50783,"likes":1118,"bookmarks":1201,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2108228971183616001/vid/avc1/842x720/bWfePvbgkxb7rbB9.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2108228971183616001/img/mnAzFvURXJyrQsd_.jpg","w":1132,"h":966}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShxTEOePKi1LQzcebqeK7vvPDvvXtFn-2pdPlML29CD3OkOP/","image":"https://i.pinimg.com/originals/4c/6c/b3/4c6cb3e11f8a2f28bd850d431b9c1ce8.jpg","title":"Colección de isométricos fáciles 1","date":"2026-10-14","w":3701,"h":4096},{"url":"https://www.pinterest.com/pin/e1_AfqPShzxJ67SP56DqKc9LKMQJJTRESPj9cBQHaYS0buTQMpjIeBDKA/","image":"https://i.pinimg.com/originals/e0/23/e0/e023e0be60b047825da9f7029ceeb76b.jpg","title":"ISOMETRIC PERSPECTIVE DRAWING EXERCISES","date":"2026-08-28","w":2000,"h":2730},{"url":"https://www.pinterest.com/pin/e1_AfqPShz1H0O4qU6ynQx7Kj0WlMoLw7Ex3cUAdJ8N5JoXVi0hC2Qi/","image":"https://i.pinimg.com/originals/a0/f3/5e/a0f35e85f95d64ee1ce8f22212304080.png","title":"corespeed - axonometric","date":"2026-02-19","w":996,"h":766},{"url":"https://www.pinterest.com/pin/e1_AfqPShzj6Nsugvou3O67RgwC7cwEyPHmRWnAQvgsrLa74hkVOtc/","image":"https://i.pinimg.com/originals/f4/a1/2c/f4a12c77a5e21bb2a9debfe6ef1b9a37.jpg","date":"2025-12-17","w":2048,"h":1462},{"url":"https://www.pinterest.com/pin/e1_AfqPShwKE8TNvxZOzo__K21LOp3cet7_ZjTOEXOLV2Tzdo3V/","image":"https://i.pinimg.com/originals/3a/01/e1/3a01e1cb0ad1588dc43b33b46a6ee81d.png","date":"2025-11-17","w":451,"h":516},{"url":"https://www.pinterest.com/pin/e1_AfqPShwHS_skNsueDXN5NXruBPTD-5sPKcyj-uHkyoU2LkNRoRmL/","image":"https://i.pinimg.com/originals/c2/4c/3e/c24c3edbe42c498c780f1ef74c27ac80.jpg","date":"2025-04-05","w":670,"h":680},{"url":"https://www.pinterest.com/pin/e1_AfqPShzHw7bj1GwTe3AXKHUVMK7V685Cf5nH2GfOcPrpyco2Uly9/","image":"https://i.pinimg.com/originals/a4/31/d7/a431d7987704b5e5b81833a814af594c.jpg","date":"2025-02-13","w":906,"h":1238},{"url":"https://www.pinterest.com/pin/e1_AfqPShzoq9FN1hW7-2xox9HHD9-cwVYXQ7hDFVidqY-mA0nOIy32Ew/","image":"https://i.pinimg.com/originals/34/f4/30/34f4309c83060dab6a8726e3cb07dcbc.jpg","date":"2024-06-14","w":597,"h":596}],"related":["code-motion-design","cross-section-cutaway"],"prompts":[],"rank":11},{"id":"risograph-grain-print","name":"Risograph / grain print","aliases":["risograph","riso","halftone","duotone poster","screen print"],"kind":"photo","family":"graphic-design","look":"Two or three flat spot inks (fluoro pink, cobalt, lavender) with grainy ink texture, slight misregistration and halftone dots. Oversized simple shapes and bold figures on off-white paper, often with tiny sans-serif captions.","clause":"[subject] as a two-color risograph print, fluorescent pink and cobalt blue spot inks, grainy ink texture, slight misregistration, halftone shading, oversized simple shapes, off-white paper","negative":"smooth digital gradients, photoreal detail, more than three colors, glossy 3D, perfectly clean vector edges","models":[{"model":"Midjourney (sref exploration)","note":"https://x.com/GabeTognon/status/2098865983733572059"},{"model":"GPT Image 2.5 (halftone travel collage)","note":"https://x.com/Naiknelofar788/status/2100067049288634730"}],"trend":{"direction":"stable","why":"Steady mid-size posts: 1.7k (Oct 1), 780 (Sep 12), 497 (Sep 16); risograph/duotone probe since Sep 1 (>=100 likes): A 3 / 1.4k L, B 3 / 2.6k L, C 14 / 3.2k L.","firstSeen":"pre-2026"},"evidence":[{"url":"https://x.com/VigoCreativeAI/status/2105644398990266649","author":"VigoCreativeAI","date":"2026-10-01","views":193208,"likes":1705,"bookmarks":1625,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HTjAP5CasAATZ8-.jpg","w":675,"h":1199},{"type":"photo","url":"https://pbs.twimg.com/media/HTjAP5MaAAE8fBA.jpg","w":675,"h":1199},{"type":"photo","url":"https://pbs.twimg.com/media/HTjAP5AbcAA592A.jpg","w":675,"h":1199},{"type":"photo","url":"https://pbs.twimg.com/media/HTjAP5oa8AANxCj.jpg","w":675,"h":1200}]},{"url":"https://x.com/GabeTognon/status/2098865983733572059","author":"GabeTognon","date":"2026-09-12","views":24274,"likes":780,"bookmarks":609,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HSCN5KjaIAAXZYW.jpg","w":1200,"h":672},{"type":"photo","url":"https://pbs.twimg.com/media/HSCN5KbawAAFgM9.jpg","w":1200,"h":672},{"type":"photo","url":"https://pbs.twimg.com/media/HSCN5J8XQAISsPH.jpg","w":1200,"h":672},{"type":"photo","url":"https://pbs.twimg.com/media/HSCN5J7WcAAI3fk.jpg","w":1200,"h":672}]},{"url":"https://x.com/Naiknelofar788/status/2100067049288634730","author":"Naiknelofar788","date":"2026-09-16","views":73323,"likes":497,"bookmarks":550,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HSTv0vSbMAIlKIL.jpg","w":2048,"h":2048},{"type":"photo","url":"https://pbs.twimg.com/media/HSTv0vUbEAAVWQ2.jpg","w":2048,"h":2048},{"type":"photo","url":"https://pbs.twimg.com/media/HSTv0vXbwAE1hh4.jpg","w":1080,"h":1080}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShyO4OdAutbVk0sA1EduIoUp0QiHE9X738QKJH6lJBYCXtDqgQ/","image":"https://i.pinimg.com/originals/94/3b/a5/943ba509c0310a514ac5dacbf0aca206.png","title":"Riso Aesthetic","date":"2026-08-26","w":1122,"h":1402},{"url":"https://www.pinterest.com/pin/e1_AfqPShxqLFaHYb1OUIiFDvtgWGFqTn09auA6QluX4CblAAm7BQ/","image":"https://i.pinimg.com/originals/e7/03/5c/e7035c0b8dc7cdb1f5b24391696c1427.jpg","date":"2026-07-06","w":2480,"h":3196},{"url":"https://www.pinterest.com/pin/e1_AfqPShyFoTCLMPmqNAs7apYlgOeqk9LzTbM7Qo1JKeRyRWSjGG7D/","image":"https://i.pinimg.com/originals/18/f5/56/18f55646051206dbef61de33f3fd3a6c.png","title":"MONOCHROMATIC | Photoshop | Black and White | Brutalism | Grunge | Angel | Wings | Poster Design","date":"2026-05-03","w":2000,"h":3556},{"url":"https://www.pinterest.com/pin/e1_AfqPShzB7CNzf5bpSAysB1J6UdDBR2CVCLceTXVQGW4NhsLjdUKl/","image":"https://i.pinimg.com/originals/e1/0e/e1/e10ee1b575c48886e109f6f21b6a388b.jpg","date":"2025-12-17","w":2480,"h":3508},{"url":"https://www.pinterest.com/pin/e1_AfqPShxDo11ztZCCM5ExCmbqyqhAPa7fgaPuaauHLScxbe9SFEXv2w/","image":"https://i.pinimg.com/originals/cc/11/1b/cc111bf63928dd82a46b3165dd04dfdb.jpg","title":"PACE","date":"2025-11-24","w":2252,"h":3333},{"url":"https://www.pinterest.com/pin/e1_AfqPShzE-iR1NnoONaR1w6o1XqECAzlw3GKC_RBxYLpHvC_5quw9/","image":"https://i.pinimg.com/originals/ae/ec/66/aeec663e52a741114398ab0dea15f729.jpg","title":"Halftone Affect Poster Style","date":"2025-10-19","w":736,"h":903},{"url":"https://www.pinterest.com/pin/e1_AfqPShwZXaMmxrj175S9pJAf98lrioUI9t9vHkUC8nNDjwumxeWS/","image":"https://i.pinimg.com/originals/0e/50/c1/0e50c1e64eebdc75ecebf414603e7ba1.jpg","title":"Doggy Tea Party Riso Print","date":"2025-10-19","w":3024,"h":4032},{"url":"https://www.pinterest.com/pin/e1_AfqPShw_zuYE4LerK0Tk6inAbZFzCJIZAJsqGC6nXJi97xxrrVl0/","image":"https://i.pinimg.com/originals/3e/c5/36/3ec5364a4ea70ea09a3a400247326d17.jpg","date":"2025-06-30","w":736,"h":1308},{"url":"https://www.pinterest.com/pin/e1_AfqPShyrzKvHUfEgq2xpqNT2jA_oM0Hqy9k6rbMcaH4Vw9QoR4wttA/","image":"https://i.pinimg.com/originals/6a/f4/51/6af451194125fbaace4a9bd2dd75f862.jpg","title":"Valley Dreams","date":"2024-03-29","w":787,"h":1024}],"related":["editorial-art-poster","papercraft-cutout"],"prompts":["x-2100067049288634730"],"rank":21},{"id":"compact-flash-photo-dump","name":"2000s digicam flash photo dump","aliases":["digicam","Canon G7X look","CCD camera","point-and-shoot flash","Y2K flash photo","photo dump grid"],"kind":"photo","family":"retro-tech","look":"Direct built-in flash from a compact digital camera: bright flat faces, hard shadows on the wall behind, slightly blown highlights, cool digital noise in the dark areas and tilted, imperfect framing. Usually delivered as a 3x2 or 3x3 grid of candid frames from one session.","clause":"candid photo of [subject] taken with a 2000s compact digital camera, harsh direct built-in flash, hard shadow on the wall behind, slight overexposure, digital noise, tilted imperfect framing, presented as a 3x2 photo-dump grid","negative":"softbox studio light, smooth retouched skin, portrait-lens bokeh, cinematic color grade, perfect symmetry","models":[{"model":"GPT Image 2.5 (ChatGPT)","note":"https://x.com/john_my07/status/2112737725430554781"},{"model":"GPT Image 2 (ChatGPT)","note":"https://x.com/MissDelulu9/status/2094706661005103239"}],"trend":{"direction":"stable","why":"Steady weekly grid prompts: flash/digicam probe since Sep 1 (>=150 likes): A 6 posts / 2.2k L, B 3 / 780 L, C 11 / 3.9k L; 827 likes Oct 15, 649 Oct 21.","firstSeen":"2025 (digicam revival); GPT Image 2.5 grid wave 2026-09"},"evidence":[{"url":"https://x.com/MissDelulu9/status/2110563171425800630","author":"MissDelulu9","date":"2026-10-15","views":34060,"likes":827,"bookmarks":645,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HUo6A0tacAAF_xQ.jpg","w":899,"h":1200}]},{"url":"https://x.com/john_my07/status/2112737725430554781","author":"john_my07","date":"2026-10-21","views":30938,"likes":649,"bookmarks":719,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HVHzwmuakAAKdjt.jpg","w":1086,"h":1448}]},{"url":"https://x.com/MissDelulu9/status/2094706661005103239","author":"MissDelulu9","date":"2026-09-01","views":30395,"likes":595,"bookmarks":488,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HRHkmV5aUAAzQEx.jpg","w":941,"h":1672}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShw6ybyi9WgGOL2cqERrMKxgd70M2mgxWxH-RIrh4ZO6txFG7g/","image":"https://i.pinimg.com/originals/24/b1/0b/24b10b3647e4b3b4aa3fc37de6a9402f.jpg","title":"Almost Sold My Canon PowerShot SX700 HS... Then I...","date":"2026-09-05","w":1720,"h":2294},{"url":"https://www.pinterest.com/pin/e1_AfqPShzb4ZQfnRXdyEUYjH7Y8cuflp1PA-InAZyJ-2Kil2ZoLKJJ/","image":"https://i.pinimg.com/originals/ab/b4/16/abb41617350b907e8658c595ad066290.jpg","date":"2026-05-19","w":1178,"h":1513},{"url":"https://www.pinterest.com/pin/e1_AfqPShw2W7mxybn5aLIQi8tq-Peyz2Rpepp3-jJXefQ-LGZsyEPcrQ/","image":"https://i.pinimg.com/originals/8a/e0/f3/8ae0f322c94508035db9993a9a046bca.jpg","title":"another digicam pic are we surprised","date":"2026-03-26","w":640,"h":480},{"url":"https://www.pinterest.com/pin/e1_AfqPShw335JWAILu6Np92YiRntX4wPOc0foURP7OFbX6zha77gE0/","image":"https://i.pinimg.com/originals/80/6a/71/806a7160e9c841cf5cf94c64cadf79e0.jpg","date":"2026-02-25","w":1088,"h":1458},{"url":"https://www.pinterest.com/pin/e1_AfqPShz6kMGmyp-bRRtfqq7Lgz082NCEnNpKAtxQpyrUZI7p4m4tRg/","image":"https://i.pinimg.com/originals/4d/d7/95/4dd7954599db615aa757920204a16cee.jpg","title":"canon camera•forest•headphones","date":"2026-02-15","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShyH2SRs0wGgjCqz6jHhBNbRXthrcXYPH6tOtGh7BiZZclQ0ow/","image":"https://i.pinimg.com/originals/32/aa/87/32aa8764a900968d304f1e352bed3773.jpg","date":"2026-02-11","w":1101,"h":886},{"url":"https://www.pinterest.com/pin/e1_AfqPShxesWa5GuvLH1a9y1S8plHEgoq5QUdSSvJC1ccUT26yHcnW/","image":"https://i.pinimg.com/originals/1b/21/50/1b2150feca0fc2a9c62009c7995764f8.jpg","title":"Y2k camera 📷 ⭐️","date":"2026-01-01","w":1200,"h":1084},{"url":"https://www.pinterest.com/pin/e1_AfqPShxrrtf41wWSeki6IBuIYR8sev_Hk_cmh8Yo6TowB18obfeb/","image":"https://i.pinimg.com/originals/fa/e2/0e/fae20e6e4980bdce1e5e267e679d4e30.jpg","date":"2025-11-14","w":720,"h":540},{"url":"https://www.pinterest.com/pin/e1_AfqPShwbUHUlK_N03hk9Wa75PPk5R35EIwU4isymLUIsL6JXxRd3/","image":"https://i.pinimg.com/originals/3b/a3/d7/3ba3d79090aeac56eeb34abd642fa9da.jpg","date":"2025-09-25","w":1080,"h":801},{"url":"https://www.pinterest.com/pin/e1_AfqPShyGfBm-Hcd5CZnIbrgjh_QwK9oHKQTtShqVInsNvcmUt-LNkA/","image":"https://i.pinimg.com/originals/3a/ec/c8/3aecc838beb150e1652000549c898d90.jpg","title":"digital cam picture","date":"2025-08-24","w":2592,"h":1944}],"related":["early-2000s-dv-camcorder","phone-snapshot-realism"],"prompts":[],"rank":14},{"id":"dashcam-cctv-footage","name":"CCTV / dashcam footage","aliases":["security cam footage","doorbell cam","bodycam","dashcam","surveillance POV"],"kind":"video","family":"retro-tech","look":"A fixed high-corner or windshield-level wide lens with low dynamic range, blown highlights, compression blocking and a burned-in timestamp or camera ID. Desaturated green or sodium color, barrel distortion and no operator: events just happen in frame, which sells absurd incidents as real.","clause":"[subject] captured on a fixed CCTV security camera, high corner angle, wide fisheye distortion, low-resolution compressed video, timestamp and CAM 03 overlay, flat fluorescent light, slight frame drops","negative":"cinematic grade, moving camera, shallow depth of field, clean 4K detail, music-video cuts","models":[{"model":"GPT Image 2.5 first frame + Seedance 2.5","note":"https://x.com/techhalla/status/2100526482212712584"},{"model":"Seedance 2.5 (via Magnific)","note":"https://x.com/rourke_heath/status/2103514460795117575"}],"trend":{"direction":"fading","why":"September wave (22.5k likes / 64.4M views Sep 17; 3.4k Sep 8); a probe since Sep 29 (>=100 likes) returns 7 posts, 5 of them news about a fake AI 'CCTV' clip in Delhi and only one creative post (a doorbell-cam Halloween clip, 204 likes).","firstSeen":"2025 (Veo 3 bodycam/CCTV); wave 2026-09"},"evidence":[{"url":"https://x.com/Stephan_MAJ/status/2097286322579001511","author":"Stephan_MAJ","date":"2026-09-08","views":275864,"likes":3362,"bookmarks":782,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2097286180530421760/vid/avc1/720x1280/2sGlFFbPO2ZR8usH.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2097286180530421760/img/EpapDIvtRFzybkno.jpg","w":720,"h":1280}]},{"url":"https://x.com/rourke_heath/status/2103514460795117575","author":"rourke_heath","date":"2026-09-25","views":46719,"likes":858,"bookmarks":573,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2103514100336594944/vid/avc1/720x1280/IL7VeVorwWXPBXxy.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2103514100336594944/img/QWamlXjIjDX8IA5L.jpg","w":1080,"h":1920}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShyf9I-BX1tDsNONdcstuxOz3PO3_zwI5RUWNmxeg8a9ga77UA/","image":"https://i.pinimg.com/originals/a1/51/94/a15194b98245433cf5b8479b44d8e721.jpg","title":"Dashcam Footage After A Crash - How It Helps And...","date":"2026-10-06","w":1087,"h":714},{"url":"https://www.pinterest.com/pin/e1_AfqPShzqZ9Hcf7u7-9SXajsDnb77f0ewwgPL5bZaIghRpMj9OVBd/","image":"https://i.pinimg.com/originals/ee/3a/0c/ee3a0c3a5484c3ba026248fda381344b.jpg","title":"Dashcam views ; Sushi drop","date":"2026-08-17","w":1280,"h":720},{"url":"https://www.pinterest.com/pin/e1_AfqPShzSTlytD8x3nKzH10FaLmgtBSen9jwVizFx-Y-G9D8KtLrO/","image":"https://i.pinimg.com/originals/c0/96/ff/c096ff088ff7135b68aa97f5f1a85f52.jpg","date":"2026-07-26","w":480,"h":270},{"url":"https://www.pinterest.com/pin/e1_AfqPShxqavOPEtl2AEIqGdVGW4Lp28ot-CjJ8vszVWZ4MCHcanF7mA/","image":"https://i.pinimg.com/originals/93/68/8a/93688aa66a5c2c18567dcb9635635b85.png","title":"Always watched. Never seen.","date":"2026-02-10","w":1024,"h":1024},{"url":"https://www.pinterest.com/pin/e1_AfqPShzgnoH6CXdXj52j2dTxsNfK8dkwKgU60tWvvVWOKsLj_YDw/","image":"https://i.pinimg.com/originals/ec/c9/b9/ecc9b97655e5fbfd5d10a485059d6fce.jpg","title":"аня чиповская","date":"2025-11-06","w":810,"h":810},{"url":"https://www.pinterest.com/pin/e1_AfqPShxyNWZQ4U3f8rj9ihXwHweoWu7ZRDsK0-PNUPGtUXP1RKrL/","image":"https://i.pinimg.com/originals/13/ec/67/13ec673340ecc5b43648e51e01a624ec.png","title":"CCTV","date":"2025-09-05","w":960,"h":1440},{"url":"https://www.pinterest.com/pin/e1_AfqPShyD1ax0MWZjmeophJoJyrUhVXJ_hVhDO_H2jny63b88E1FVrA/","image":"https://i.pinimg.com/originals/36/5f/78/365f789855276800d00cfaae3daed044.jpg","date":"2025-06-18","w":828,"h":828},{"url":"https://www.pinterest.com/pin/e1_AfqPShy2mNP2cj2nHbgQ-hLFyokMJ2j7glIRtUnOJoH4iBk8-g/","image":"https://i.pinimg.com/originals/64/a1/48/64a1485a33118da9d729be0cc2b580d5.jpg","title":"Behind The Scenes Surveillance Cameras","date":"2024-02-12","w":1440,"h":1440}],"related":["early-2000s-dv-camcorder","liminal-backrooms"],"prompts":[],"rank":31},{"id":"early-2000s-dv-camcorder","name":"Early-2000s DV camcorder","aliases":["MiniDV","2000s home video","camcorder footage","POV: you're in the 2000s","Y2K camcorder"],"kind":"video","family":"retro-tech","look":"4:3 standard-definition video with soft detail, interlaced edges, slightly crushed blacks and cool fluorescent or warm tungsten color, plus handheld wobble and on-camera mic sound. Ordinary moments (birthdays, convenience stores, schoolyards) staged as personal memories, often with a date stamp.","clause":"[subject] filmed on an early-2000s MiniDV camcorder, 4:3 standard definition, handheld wobble, soft focus and interlacing, slight color bleed, on-camera light, orange date stamp in the corner, candid home-video moment","negative":"4K sharpness, cinematic depth of field, modern phone HDR, film-grade color, widescreen","models":[{"model":"Seedance 2.5","note":"https://x.com/saniaspeaks_/status/2105146792681832481"},{"model":"Seedance 2.5 on Higgsfield","note":"https://x.com/Diplomeme/status/2112745556644946344 (237 likes, Oct 21)"}],"trend":{"direction":"fading","why":"Peaked late Sep to early Oct (2.9k likes Oct 2, 918 Sep 30); DV/camcorder probe since Sep 10 (>=100 likes): A 3 posts / 700 L, B 8 / 4.6k L, C 9 / 1.6k L.","firstSeen":"2026-09"},"evidence":[{"url":"https://x.com/saniaspeaks_/status/2105146792681832481","author":"saniaspeaks_","date":"2026-09-30","views":183060,"likes":918,"bookmarks":476,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2105146696913375232/vid/avc1/1280x720/rTOZ581hb1qQHmtG.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2105146696913375232/img/hRZx4zyp5PkkFLzs.jpg","w":1280,"h":720}]},{"url":"https://x.com/AIwithkhan/status/2111819457320603690","author":"AIwithkhan","date":"2026-10-18","views":99096,"likes":348,"bookmarks":238,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2111819400093614080/vid/avc1/1280x720/8sIAIRA3oWtOi6C9.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2111819400093614080/img/pCCG_zW-JXuYHJGq.jpg","w":1280,"h":720}]},{"url":"https://x.com/SimplyAnnisa/status/2097914538544992645","author":"SimplyAnnisa","date":"2026-09-10","views":43549,"likes":273,"bookmarks":152,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2097914330922774528/vid/avc1/1280x720/9tZ-YhHk2WVattNR.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2097914330922774528/img/SvEGwHIlH99-m45q.jpg","w":1280,"h":720}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShzuwSBMDvmpahrdwROuNvnhS3zTwBCqXaQxAGrNafQnyn38/","image":"https://i.pinimg.com/originals/45/27/2d/45272d356b2e26071c4cf694308611b6.jpg","title":"коллекция камера vhs","date":"2026-10-06","w":1632,"h":1224},{"url":"https://www.pinterest.com/pin/e1_AfqPShy1WzS9JViIFvlTEKiEqIAkQb3VDTOLtIqRuFeZuirgEiCS/","image":"https://i.pinimg.com/originals/88/59/87/8859871179de32430cb6bc5b00fcc543.jpg","title":"@dvd.vcr.combo on Instagram☕️","date":"2026-04-13","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShyt8ya7d5mj1va-SJ4LJEiDiOE0-mM6U7lkvLY-yqw2Apbs/","image":"https://i.pinimg.com/originals/32/05/c6/3205c62bf0e0cf1fa8d5bbc7cc7887c3.jpg","date":"2025-12-21","w":1080,"h":1012},{"url":"https://www.pinterest.com/pin/e1_AfqPShyTjmDuIyN6dlR0fhS1CDaKxv5I54Cd25lHNLWLTBi5-jid/","image":"https://i.pinimg.com/originals/ec/b4/83/ecb483dba05a9b69e67cd6086d1f7e15.jpg","date":"2025-11-01","w":537,"h":536},{"url":"https://www.pinterest.com/pin/e1_AfqPShxkNaw_owvJNENyKM4RsYnWoqP_UvTMa-5Wofv-c2Dk-2W0/","image":"https://i.pinimg.com/originals/c7/f7/04/c7f704ca0a5c36c8c52a360ccb8e1afc.jpg","title":"y2k aesthetic","date":"2025-06-23","w":949,"h":1078},{"url":"https://www.pinterest.com/pin/e1_AfqPShyqQ_PlnlPGU-e9TF7dBTcbsXeu5COmEuW_PbJLprkF-5fD/","image":"https://i.pinimg.com/originals/55/86/b6/5586b607684d6d62b98bd89f05156532.jpg","title":"i decorated my hi-8 camcorder 🌟🖤💖","date":"2024-08-19","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShyCmPC3b2yv_HpBmjJxgX6jDCn6VQgQALoE5q7b2W_9-pZ4/","image":"https://i.pinimg.com/originals/bc/28/d4/bc28d452313176493048b40307eca932.jpg","title":"Camcorder","date":"2024-08-12","w":1705,"h":1216},{"url":"https://www.pinterest.com/pin/e1_AfqPShzdZ4XNDEjkNReZFSJ3Fa-gk1-FNBmboUih3okGKW1BOwN1/","image":"https://i.pinimg.com/originals/a9/31/45/a93145bf73c45737814b05dbf696a63f.jpg","title":"camera film","date":"2024-02-12","w":1079,"h":1073}],"pairsWith":["frontal-lighting"],"related":["compact-flash-photo-dump","vintage-tv-broadcast"],"prompts":[],"rank":30},{"id":"vintage-tv-broadcast","name":"Vintage TV broadcast","aliases":["1960s TV show","80s commercial","technicolor sitcom","retro TV pilot","old TV ad"],"kind":"video","family":"retro-tech","look":"Footage that looks taped off an old broadcast: soft tube-camera image with bloom, saturated period palette (avocado, mustard, teal), multi-camera sitcom staging on bright sets, title cards and announcer framing. The 1980s variant adds VHS chroma noise and beige computer-era props.","clause":"[subject] as a 1960s color TV show, multi-camera sitcom set with saturated period colors, soft tube-camera image, slight bloom and scanlines, 4:3 frame, vintage title card","negative":"modern widescreen, digital sharpness, contemporary clothes or phones, cinematic shallow depth","models":[{"model":"Seedance","note":"https://x.com/ryanjsimpson/status/2113103215130767599"},{"model":"Seedance 2.5","note":"https://x.com/SeharShinwari/status/2107406165550440777"}],"trend":{"direction":"rising","why":"Small but new: a retro-decade TV/commercial probe since Sep 15 (>=300 likes) finds 3 posts, 2 of them after Oct 13 (1.3k Oct 22, 1.5k Oct 15), helped by Halloween retro-horror crossovers.","firstSeen":"2026-10"},"evidence":[{"url":"https://x.com/SeharShinwari/status/2107406165550440777","author":"SeharShinwari","date":"2026-10-06","views":32838,"likes":284,"bookmarks":76,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2107405674586210304/vid/avc1/1280x720/IFu0AptRbuGMmwvE.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2107405674586210304/img/bq09lTkoU35gEtg-.jpg","w":1280,"h":720}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShzHXDTUxzAX1gIcozn6AjTPDpIBqZV_L9txZ6d203mazTPyvA/","image":"https://i.pinimg.com/originals/9d/2c/de/9d2cde717edc13e15f1cf7d47afedd61.png","title":"The Last Channel","date":"2026-06-04","w":1024,"h":1536},{"url":"https://www.pinterest.com/pin/e1_AfqPShyE6v2Q3C9-cuYmOfJwYJFdmbfF0j8w-8DMF8c7e9TWwWuo/","image":"https://i.pinimg.com/originals/22/03/f6/2203f638fbf2f5679ade36a207b4e375.jpg","date":"2026-05-01","w":720,"h":513},{"url":"https://www.pinterest.com/pin/e1_AfqPShyWu8A4HnDQGLpDHIICKd-aTjOQ4Awq1rRrYPhiO-Td28PO/","image":"https://i.pinimg.com/originals/6c/46/12/6c4612b60ec06350c97c75948e58d6fd.webp","title":"Old TV、Boombox commercials,1980's、Reality、best image quality","date":"2026-04-16","w":1366,"h":2048},{"url":"https://www.pinterest.com/pin/e1_AfqPShw5AZw0aNfljPX03ninctfeqX99hREPuahuzbz6WoIxbBI/","image":"https://i.pinimg.com/originals/3c/48/3d/3c483d9d6a0cd42bf5f387c5f19ba24c.jpg","date":"2026-03-04","w":1080,"h":720},{"url":"https://www.pinterest.com/pin/e1_AfqPShw_VADUrhuVTOgm1d9-kaWlc35S_29g4xIqOYb8ihHQut0u/","image":"https://i.pinimg.com/originals/e5/57/fa/e557fa4d063893693e2c7390d8adec29.jpg","date":"2026-01-24","w":1280,"h":1280},{"url":"https://www.pinterest.com/pin/e1_AfqPShxQr77fBt4vFZtqO8Q3NnXZgixXXLAq4ZJpSu6aMobSmTsi/","image":"https://i.pinimg.com/originals/6c/5b/7f/6c5b7f20b3934fe4dcc4f2c134f74ed3.jpg","title":"ℳ.","date":"2026-01-12","w":735,"h":494},{"url":"https://www.pinterest.com/pin/e1_AfqPShz9lxdW3jHHTDXSFOkmXFpFu2okCgX9vj7xAhzbzudf7lio/","image":"https://i.pinimg.com/originals/5d/7c/4b/5d7c4baeeb487c4d4cbb95498e40558b.jpg","date":"2025-09-02","w":1080,"h":1080},{"url":"https://www.pinterest.com/pin/e1_AfqPShwbRz-FCoGHD4d961ohiS72zQrS-uTApTDsw3Iagx9C4Dns/","image":"https://i.pinimg.com/originals/e0/33/c5/e033c504bb842e21f214d1a59766c6ad.jpg","date":"2024-06-23","w":736,"h":981},{"url":"https://www.pinterest.com/pin/e1_AfqPShy419l-DGKFSw7i3-xRwqesGyfKKq1a9lqRoYovROgGl_OD/","image":"https://i.pinimg.com/originals/af/8d/18/af8d18899eeea79759afe690e7e9dd1b.jpg","title":"Mervin Griffin","date":"2024-02-22","w":612,"h":593}],"related":["early-2000s-dv-camcorder"],"prompts":[],"rank":15},{"id":"phone-snapshot-realism","name":"Unretouched phone snapshot","aliases":["iPhone photo","doesn't look AI","raw realism","candid phone pic","AI influencer realism"],"kind":"both","family":"social-native","look":"Looks like an unedited phone photo: mixed ambient light, slight noise and phone over-sharpening, natural skin with pores and blemishes, casual off-center framing and ordinary backgrounds. The point is that nobody can tell it is AI.","clause":"[subject] in a casual unedited smartphone photo, natural mixed ambient light, slight noise and phone sharpening, real skin texture with pores, off-center candid framing, ordinary background, no retouching","negative":"studio lighting, airbrushed skin, perfect symmetry, cinematic bokeh, heavy color grading, model poses","models":[{"model":"Grok Imagine","note":"https://x.com/jackzhang123vip/status/2111238259799904370"},{"model":"Seedance 2.5 (stills from video)","note":"https://x.com/DavidRunsAds/status/2104301098227888180"},{"model":"GPT Image 2.5 vs Nano Banana Pro","note":"https://x.com/flowersslop/status/2097417415931892084"}],"trend":{"direction":"rising","why":"Realism probe since Sep 25 (>=400 likes): A 7 posts / 6.1k L, B 7 / 5.2k L, C 6 / 4.2k L; 'pushed realism too far' GPT Image x Seedance 2.5 clip 2.6k likes / 332k views (Oct 16, x.com/D_studioproject/status/2111000390099738889).","firstSeen":"2025; wave 2026-09/10"},"evidence":[{"url":"https://x.com/DavidRunsAds/status/2104301098227888180","author":"DavidRunsAds","date":"2026-09-27","views":46938,"likes":644,"bookmarks":1197,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HTP53FIXYAArf3D.jpg","w":1080,"h":1920},{"type":"photo","url":"https://pbs.twimg.com/media/HTP59vGXQAEEWff.jpg","w":1080,"h":1920},{"type":"photo","url":"https://pbs.twimg.com/media/HTP5_BjXIAA38pd.jpg","w":1080,"h":1920}]},{"url":"https://x.com/jackzhang123vip/status/2111238259799904370","author":"jackzhang123vip","date":"2026-10-16","views":94691,"likes":1227,"bookmarks":1073,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2111057048100298752/vid/avc1/720x1280/Dwb9nHVLEb0ozWxr.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2111057048100298752/img/sM7wpJj-AhXWCMGB.jpg","w":720,"h":1280}]},{"url":"https://x.com/flowersslop/status/2097417415931892084","author":"flowersslop","date":"2026-09-08","views":131569,"likes":1067,"bookmarks":401,"media":[{"type":"photo","url":"https://pbs.twimg.com/media/HRuDIncXUAANs4a.jpg","w":1122,"h":1402},{"type":"photo","url":"https://pbs.twimg.com/media/HRuDN0eXMAAwlGF.jpg","w":1280,"h":1280},{"type":"photo","url":"https://pbs.twimg.com/media/HRuEHmkagAAgGQc.jpg","w":1122,"h":1402},{"type":"photo","url":"https://pbs.twimg.com/media/HRuEKxZbwAA02o6.jpg","w":1280,"h":1280}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShyVO39wppBaO9QPfSZR3oVYhD68rFhQA8zGK1Iq86qW0dLl/","image":"https://i.pinimg.com/originals/6d/fb/15/6dfb15278c7793f7a1fc5ab5d75815b7.jpg","date":"2026-10-15","w":4000,"h":6000},{"url":"https://www.pinterest.com/pin/e1_AfqPShwgk4yxa7NiWiiv4OvtjGlJE4mSKGMDuSVmDSaIH0JyuUI0/","image":"https://i.pinimg.com/originals/9f/9f/3f/9f9f3fe3f4acd7ec8f20e77835dc1e0e.jpg","date":"2026-10-15","w":2094,"h":3720},{"url":"https://www.pinterest.com/pin/e1_AfqPShyek_xIK8QMktGCdKEpT5Afmpn-gmk_nABwvR-iy3n0n78Z/","image":"https://i.pinimg.com/originals/1f/4e/78/1f4e786bfa49c08557143dd1fd5e4f9e.jpg","title":"⛰️","date":"2026-09-01","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShzUZt1EKmDk9B2MyaWTlUm__0oelV-lsIyaSbw4EQSpkaTG/","image":"https://i.pinimg.com/originals/96/6e/a5/966ea594aab768c860006487eb042f51.jpg","date":"2026-07-03","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShxfWqZn_94YiAsgIk2-jAAZTPqb53E-p0SqziULafDBo5bo/","image":"https://i.pinimg.com/originals/a4/e9/41/a4e941b0ffda786b7b446dcf26a08dbe.jpg","date":"2026-01-04","w":675,"h":1200},{"url":"https://www.pinterest.com/pin/e1_AfqPShzswXuvhNUz7toDs_JCfVmx6xRix2Jo5YtrF55rt9jRGjrb/","image":"https://i.pinimg.com/originals/fd/f7/9b/fdf79beb8f6d9e61c23c858f5b4aee5c.jpg","date":"2025-12-30","w":1199,"h":1593},{"url":"https://www.pinterest.com/pin/e1_AfqPShymArTC5V-JXnhn4euWG9HUy16U_-COUrBJWO2CqWg5Un9A/","image":"https://i.pinimg.com/originals/21/e5/c9/21e5c9e2394bbe5ddb5933cbd4d9e9ef.jpg","date":"2025-11-20","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShyzgmHlbPyfCQ2HqlYb9DWoTF5Yoe6kZBAr_i672d-zRRIX/","image":"https://i.pinimg.com/originals/12/c2/31/12c2311b2d6b663fbc90d4284018f45a.jpg","date":"2025-10-24","w":1170,"h":1731},{"url":"https://www.pinterest.com/pin/e1_AfqPShwZblU2trsOm1S9aqkfXP8K0Nc5lFR3K9qFpYmbjk7f_0s/","image":"https://i.pinimg.com/originals/b0/0e/10/b00e10da009318943bc1487203437f60.jpg","date":"2025-10-21","w":735,"h":904},{"url":"https://www.pinterest.com/pin/e1_AfqPShyhtKunniUAJ9gYG2rkq9P3zBJfbUrgy9mW5-khYiKcfhYukw/","image":"https://i.pinimg.com/originals/7d/90/d1/7d90d12b459566f4b74340941859dd81.jpg","title":"please follow 🫧 my vibe picture aesthetic","date":"2024-11-11","w":736,"h":981}],"pairsWith":["window-light"],"related":["ugc-selfie-influencer","compact-flash-photo-dump"],"prompts":["x-2114924064917921938","x-2112737725430554781","x-2105219509791678731","x-2099759367956349012","x-2105014845288354237"],"rank":2},{"id":"ugc-selfie-influencer","name":"Selfie UGC / AI influencer","aliases":["UGC","AI influencer","front-camera vlog","talking to camera","AI character"],"kind":"video","family":"social-native","look":"Vertical front-camera footage of one consistent character talking or reacting to camera: arm's-length framing, phone-mic audio, natural room light, slight wide-angle distortion and micro-shake, repeated across many everyday locations to look like a real creator's feed.","clause":"vertical 9:16 front-camera selfie video of [subject] talking to camera at arm's length, natural room light, slight wide-angle distortion, handheld micro-shake, casual everyday location, phone microphone sound","negative":"cinematic camera moves, studio lighting, multiple camera angles, color grading, flawless skin","models":[{"model":"Higgsfield AI Influencer","note":"https://x.com/higgsfield/status/2106119916479037742"},{"model":"GPT Image 2.5 character + Seedance 2.5 (Higgsfield)","note":"https://x.com/maubaron/status/2106180741512200246"},{"model":"Seedance 2.5","note":"https://x.com/Just_sharon7/status/2109218767620444331"}],"trend":{"direction":"peak","why":"AI-influencer/UGC probe since Sep 25 (>=400 likes): A 3 posts / 2.4k L vs B 15 / 21.5k L vs C 2 / 1.1k L; peaked with the Higgsfield AI Influencer launch (7.0k likes / 3.4M views Oct 2; 5.9k / 5.1M Oct 5) and the 'Jean Phil' character's 100M+ views.","firstSeen":"2025; wave 2026-10"},"evidence":[{"url":"https://x.com/maubaron/status/2106180741512200246","author":"maubaron","date":"2026-10-03","views":234875,"likes":1137,"bookmarks":915,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2106180629083684864/vid/avc1/1280x720/QFqWiblem4PMum12.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2106180629083684864/img/_1YoqQNcHWRXkqGO.jpg","w":1920,"h":1080}]},{"url":"https://x.com/Just_sharon7/status/2109218767620444331","author":"Just_sharon7","date":"2026-10-11","views":51244,"likes":566,"bookmarks":79,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2109190636071178240/vid/avc1/1280x720/h-li7Vc8GTC8nvwm.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2109190636071178240/img/ojpypHEc8-OMsL8G.jpg","w":2560,"h":1440}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShx3JbT0Khb6fWzUGKlrq7FIBbHQCYby8nRRBk32n-PbWUc3Dw/","image":"https://i.pinimg.com/originals/4b/d5/17/4bd51720e00227a20cc84a08029f2ebe.jpg","date":"2026-10-08","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShyoB8xf4kjtWsFnNWF78G7fxM4GWNpnXdG4M94THVWzgIimyA/","image":"https://i.pinimg.com/originals/29/e8/f7/29e8f724d541c5f01893717c7362c7ac.jpg","date":"2026-10-05","w":2268,"h":4032},{"url":"https://www.pinterest.com/pin/e1_AfqPShyuuOV4n1hQWuL_xZumerWsrvZZ9gtWX3ZBVTP7kaP7g7XaEg/","image":"https://i.pinimg.com/originals/a3/95/23/a395239938bd816b0dff6e80ce58dcfa.jpg","title":"💟💜💞💌💘💗","date":"2026-09-22","w":736,"h":1308},{"url":"https://www.pinterest.com/pin/e1_AfqPShyAcwu0TwWM5mtsLZrUuWczG51373iKEImzrEr-04pNI717fw/","image":"https://i.pinimg.com/originals/1f/d3/05/1fd305a310be138cbc5bb382cbd7ecd3.png","date":"2026-06-25","w":896,"h":1200},{"url":"https://www.pinterest.com/pin/e1_AfqPShx9jIKJRmifV23gMX_R3KC7wEqBn6H9zwTMg-ECPfO0zDFa/","image":"https://i.pinimg.com/originals/d0/9a/a0/d09aa04746c1078122bf9e084bfefaac.jpg","title":"The Lifestyle Creator Pack Everyone Wants","date":"2026-03-16","w":1440,"h":2560},{"url":"https://www.pinterest.com/pin/e1_AfqPShzLmSXDFjmyy2-kqNaP35wEOETZaNbE1iyNbyZqqSVDY51l/","image":"https://i.pinimg.com/originals/df/77/a4/df77a4b7f34d27ce9be864045a6cfe31.jpg","title":"selfies","date":"2026-02-11","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShxElUMdL3deenWGvoQVQhspIkqH-c6Lm1mZbXOG7JQrf6uz/","image":"https://i.pinimg.com/originals/b9/c9/91/b9c991fb4b6af710ea2fee0b8904beff.jpg","date":"2026-02-09","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShx75Lx6g7rtUvhjJBcs1Cf0wK-ryw-cHxPw7i-JduzkFugc/","image":"https://i.pinimg.com/originals/b6/4a/56/b64a56493c665d9b2aa86cb7fa68775b.jpg","date":"2025-05-11","w":675,"h":1200},{"url":"https://www.pinterest.com/pin/e1_AfqPShw3MoepKwBGyCKnCWsOwzwrZRuNX0_nPqY_w64WDV82eWZt/","image":"https://i.pinimg.com/originals/75/03/56/750356c24bb4634a63073ad9f006a65b.jpg","title":"Cute selfie","date":"2024-12-28","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShx1xSb7R5UvF-kjgyvBsYgkJXLvQAMPqaPgHkbLyCe-J1n4/","image":"https://i.pinimg.com/originals/e7/4e/48/e74e48aa5cc32912c4dafcab8b2fce86.jpg","title":"Ugc creator - ideias fotos portfólio aesthetic Skincare","date":"2024-11-26","w":1080,"h":1920}],"related":["phone-snapshot-realism"],"prompts":["x-2114924064917921938","x-2105014845288354237","x-2111471573395755295"],"rank":8},{"id":"asmr-cutting","name":"ASMR cutting","aliases":["glass fruit cutting","satisfying cutting","crystal ASMR"],"kind":"video","family":"surreal","look":"Macro close-ups of a knife slicing unexpected materials (glass fruit, crystal, gummy, wax) on a cutting board, with clean soft light, slow controlled motion and crisp foley.","clause":"macro close-up of a sharp knife slowly slicing [subject] made of translucent glass on a wooden board, clean soft light, satisfying smooth cuts, crisp ASMR cutting sounds","negative":"fast cuts, shaky camera, messy background, distorted hands, muffled audio","models":[{"model":"model not named","note":"https://x.com/Andres_Ai5/status/2113582457991971311"}],"trend":{"direction":"stable","why":"Still posted (477 likes / 61k views Oct 23, 436 / 51k Oct 25) but far below its 2025 peak; ASMR/cutting probe since Sep 1 (>=200 likes): A 3 posts / 1.1k L, B 7 / 8.4k L (mostly non-ASMR), C 10 / 7.9k L.","firstSeen":"2025"},"evidence":[{"url":"https://x.com/Andres_Ai5/status/2113582457991971311","author":"Andres_Ai5","date":"2026-10-23","views":61472,"likes":477,"bookmarks":53,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2113582276298891265/vid/avc1/480x854/kaGwYAw2UriC3xVj.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2113582276298891265/img/Y5D8QJyHq0JlbRsO.jpg","w":480,"h":854}]},{"url":"https://x.com/Andres_Ai5/status/2114274742769516993","author":"Andres_Ai5","date":"2026-10-25","views":51076,"likes":436,"bookmarks":43,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2114274705469575168/vid/avc1/480x854/HlguFnVSiYcKhNzA.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2114274705469575168/img/5EceRzwx2GatsWy1.jpg","w":480,"h":854}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShz7vf0HBaliPoq0RtpnIxS8BPcwsX25qHxZbaJ68DFbf0Yx9g/","image":"https://i.pinimg.com/originals/53/74/43/5374431f63d8c098b296aff1fb21c0e2.webp","title":"Midjourney:  Knife poised above a faceted glass apple on a plate.","date":"2026-03-21","w":512,"h":913},{"url":"https://www.pinterest.com/pin/e1_AfqPShy8Kk4p3OQ7Hj9D48RBfWWLaPGRmN0W6gN0oKEPh7FNUsxc/","image":"https://i.pinimg.com/originals/2b/e3/b8/2be3b806536037b0f6ae573780bdd0b5.jpg","title":"Cutting Glass Fruits | Ultra Satisfying ASMR Sounds for Sleep & Relaxation 🍎🔪✨","date":"2025-10-07","w":480,"h":360}],"pairsWith":["macro-lens","foley"],"related":["jelly-gummy-3d","luxury-product-commercial"],"prompts":[],"rank":26},{"id":"liminal-backrooms","name":"Liminal / Backrooms","aliases":["backrooms","liminal space","poolrooms","dreamcore","analog horror"],"kind":"both","family":"surreal","look":"Empty, endlessly repeating interiors (yellow wallpaper and damp carpet under buzzing fluorescents, or white-tiled pools) with no people, flat even light and a faint wrongness. Video versions are VHS-degraded found footage with a timestamp and slow handheld walking.","clause":"an empty liminal space of [subject], endless repeating rooms, buzzing fluorescent ceiling light, yellowed walls and damp carpet, no people, flat even lighting, VHS camcorder found-footage texture with timestamp","negative":"people or crowds, dramatic colored light, clutter, clean cinematic grade, recognizable landmarks","models":[{"model":"GPT-6 Astra (Blender scene + VHS effects)","note":"https://x.com/duncantrussell/status/2096003511104508411"},{"model":"Seedance 2.0 + Nano Banana Pro + Seedream","note":"https://x.com/javilopen/status/2100962091565760617"},{"model":"Claude Opus 5.5 (code)","note":"https://x.com/goodside/status/2102884238576296179"}],"trend":{"direction":"fading","why":"September spike around the Backrooms feature film (9.5k likes / 6.4M views Sep 4; 2.1k / 1.4M Sep 18); probe since Sep 1 (>=100 likes): A 7 posts / 1.7k L, B 2 / 1.0k L, C 11 / 16.7k L.","firstSeen":"pre-2026 (internet aesthetic); AI wave 2026-09"},"evidence":[{"url":"https://x.com/duncantrussell/status/2096003511104508411","author":"duncantrussell","date":"2026-09-04","views":6389380,"likes":9486,"bookmarks":4465,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2096003209957609472/vid/avc1/1280x720/mXo8GBtHBWWEhvFt.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2096003209957609472/img/nah7J4WwfPpfBjJa.jpg","w":1920,"h":1080}]},{"url":"https://x.com/goodside/status/2102884238576296179","author":"goodside","date":"2026-09-23","views":19185,"likes":331,"bookmarks":57,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2102883865547231232/vid/avc1/640x480/0voYSbyYlU2g5yA3.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2102883865547231232/img/ZfzrrEZjefyNIZ9B.jpg","w":640,"h":480}]},{"url":"https://x.com/kepochnik/status/2113296124576764239","author":"kepochnik","date":"2026-10-22","views":30807,"likes":254,"bookmarks":34,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2113295866358386688/vid/avc1/1280x720/jdBnjlCSidKoOT1w.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2113295866358386688/img/Klx1vt4outmj8B9D.jpg","w":3840,"h":2160}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShzXDlWdLzXCfBZtTe5xwPL2fYNqsO6OHvTuCSVUGdVu-s7z/","image":"https://i.pinimg.com/originals/97/55/0a/97550a8d9101b679d183797b8d1bf881.jpg","title":"Ethereal Indoor Slide Labyrinth | Uncanny Dreamcore Liminal Space","date":"2026-10-04","w":459,"h":816},{"url":"https://www.pinterest.com/pin/e1_AfqPShxLjx-HWE2B4CkTHJc9jCBzw77gaO_OLUSO8nbZ5HuHgwmC/","image":"https://i.pinimg.com/originals/c9/fc/a0/c9fca08cb2359acf0bc8399d3b869b01.jpg","title":"No Signal","date":"2026-10-02","w":505,"h":870},{"url":"https://www.pinterest.com/pin/e1_AfqPShzg3R6axrMijEDhgrrcHGjkZcGIpASwXRX9ZYIpf6_wCl8a/","image":"https://i.pinimg.com/originals/5a/55/5d/5a555d3ebd66619538c82aca816504a8.jpg","title":"Liminal","date":"2026-09-30","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShzXaV7dkatxTzsbrMq9vl_eiTzc6Ev4LNukCVtASg3OQ9TkxA/","image":"https://i.pinimg.com/originals/d5/0d/63/d50d6307841a1840b0024a1fe76e5a9d.png","date":"2026-09-07","w":2080,"h":2080},{"url":"https://www.pinterest.com/pin/e1_AfqPShz5qJqjAjkTUOeYQh_5dzOm7MDEw4MYOL6SvpUx-ZsV0sIzkw/","image":"https://i.pinimg.com/originals/d0/3f/88/d03f88325ee9713c69138094542cb239.png","title":"Dreamcore","date":"2026-07-29","w":1448,"h":1086},{"url":"https://www.pinterest.com/pin/e1_AfqPShz-lV-rrHbGZOw7GWJ6V6ekIMxz7X-Mc3aQdrv2dgN0sqLOkg/","image":"https://i.pinimg.com/originals/d5/b9/e2/d5b9e2b838c59a9f5ef724d44988ad86.jpg","date":"2026-07-15","w":1080,"h":1920},{"url":"https://www.pinterest.com/pin/e1_AfqPShxRKlA2eXkLHmhU73Srky-DZxFBmHzbecP83_mXZ-D5pcq_3g/","image":"https://i.pinimg.com/originals/40/00/78/400078551f6f9d2e185691b20ec88c93.jpg","title":"46 Liminal Spaces Where The Line Between Reality...","date":"2026-05-30","w":1200,"h":1200},{"url":"https://www.pinterest.com/pin/e1_AfqPShxE0DdOfSVrXJaheXT8nZeCI_AfhvCB6VNu4Dqmn1wJNmw/","image":"https://i.pinimg.com/originals/b3/e9/69/b3e969c1a99e5dd4d7854705f9d80227.webp","date":"2025-05-20","w":1543,"h":2048},{"url":"https://www.pinterest.com/pin/e1_AfqPShy_Bd9Wlc9OgUg3Q8NY3JdkF-n6NqG5mu1IDMFRvdQmAOXZpg/","image":"https://i.pinimg.com/originals/d8/ee/23/d8ee2370636c42f9ea6a81a3c6477354.jpg","date":"2025-05-15","w":490,"h":874},{"url":"https://www.pinterest.com/pin/e1_AfqPShzJtd8OZUSeXY61zfuzqJEf4gA9FOnjo4TNTi2mUYIFOtOD/","image":"https://i.pinimg.com/originals/6c/20/27/6c2027354492084663a1437e26077b63.jpg","date":"2025-05-08","w":490,"h":874}],"related":["early-2000s-dv-camcorder","dashcam-cctv-footage"],"prompts":[],"rank":32},{"id":"surreal-giant-scale","name":"Surreal giant scale","aliases":["giant hand","giant objects","impossible scale"],"kind":"both","family":"surreal","look":"Ordinary objects or body parts at landscape scale (a giant hand lifting a flooded car, a lime as big as a wave), rendered photoreal with consistent light and atmospheric haze to sell the size.","clause":"a photoreal surreal scene where [subject] is enormous, towering over tiny people and vehicles, consistent natural light, atmospheric haze for scale, wide-angle low viewpoint","negative":"inconsistent shadows, cartoon rendering, cramped framing, no scale references","models":[{"model":"model not named","note":"https://x.com/ElaraVisionAI/status/2102750945373532453"},{"model":"Seedance 2.5 / Kling (Flova)","note":"https://x.com/ShamiWeb3/status/2096388928416919829"}],"trend":{"direction":"stable","why":"Low, steady volume: giant/scale probe since Sep 1 (>=200 likes): A 2 posts / 448 L, B 4 / 963 L, C 2 / 897 L; best post 1.5k likes / 422k views (Sep 23).","firstSeen":"2025"},"evidence":[{"url":"https://x.com/ElaraVisionAI/status/2102750945373532453","author":"ElaraVisionAI","date":"2026-09-23","views":422477,"likes":1524,"bookmarks":306,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2102750856747929600/vid/avc1/720x1280/rzzpkDFbJcV65sPp.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2102750856747929600/img/bxX-QTPO0M1vMXci.jpg","w":720,"h":1280}]},{"url":"https://x.com/ShamiWeb3/status/2096388928416919829","author":"ShamiWeb3","date":"2026-09-06","views":54212,"likes":788,"bookmarks":13,"media":[{"type":"video","url":"https://video.twimg.com/amplify_video/2096388454389301248/vid/avc1/1280x720/qTzE9uxKgHPTKHTa.mp4","poster":"https://pbs.twimg.com/amplify_video_thumb/2096388454389301248/img/eBogQXr3mE7NJVtR.jpg","w":2560,"h":1440}]}],"board":[{"url":"https://www.pinterest.com/pin/e1_AfqPShyxikRfgvVlC8iTN3isu9r9RGMGPKweKFxngqYYtgTHkjE/","image":"https://i.pinimg.com/originals/27/54/04/2754048dfb32d11db2b5181f1ce3db1c.jpg","date":"2026-10-06","w":1394,"h":2340},{"url":"https://www.pinterest.com/pin/e1_AfqPShwpk196pV3Vy6G63Huj2185ggNhwB-hCKf_16CPF8sMeG-Jug/","image":"https://i.pinimg.com/originals/77/35/2d/77352d12c6dfb88e2b9b93c956aacfba.jpg","date":"2026-07-26","w":433,"h":542},{"url":"https://www.pinterest.com/pin/e1_AfqPShxWy4PuXJmQOuApf1mKLsFyU795MWxoJljCUxes74j9G8meFQ/","image":"https://i.pinimg.com/originals/d1/a3/a5/d1a3a5d4a8f12a80bb5d6a618a95fa0c.png","title":"The Listening Field — Surreal Cobalt Sculptures & AI Art","date":"2026-07-22","w":1086,"h":1448},{"url":"https://www.pinterest.com/pin/e1_AfqPShxhCzqGuWU6IduqGxV822W032ma4zTS8HBr4Rh1tWU3VVeO/","image":"https://i.pinimg.com/originals/25/14/40/2514406b33348c0c3d3a151d90ed288f.jpg","date":"2026-07-12","w":1200,"h":2133},{"url":"https://www.pinterest.com/pin/e1_AfqPShz9T5hpLXOwisBl10ou4neXsP_tS7GivCPZT_h0Xedq4lk85g/","image":"https://i.pinimg.com/originals/ef/6f/fb/ef6ffb1333cdfa23c5deb9591c5c8f94.png","title":"Giant White Rabbit Surreal Scene","date":"2026-05-25","w":888,"h":1598},{"url":"https://www.pinterest.com/pin/e1_AfqPShylTjjh6MZaFJqTLhWqU4w4UqcC8OOUGjMf3pNxmnY9eCFv/","image":"https://i.pinimg.com/originals/f9/e3/1e/f9e31ecf0dfe266f9ae813bd0065e26b.jpg","date":"2026-03-12","w":4096,"h":2286},{"url":"https://www.pinterest.com/pin/e1_AfqPShwap2KY8qqBri_ZJhhAyDaRQfu-Mdk4IchD9MVByra4oxTd/","image":"https://i.pinimg.com/originals/90/fa/fa/90fafa9e95b07bd1e9b684bf82e354cb.jpg","date":"2026-03-09","w":625,"h":1048},{"url":"https://www.pinterest.com/pin/e1_AfqPShz8QbOveLZUimLsTIYGjsWhvHcwtuCh1AAzB9NVAJcnOqJf/","image":"https://i.pinimg.com/originals/a9/14/e0/a914e06a72a7d720a300c3a7095c7c26.jpg","date":"2024-10-22","w":736,"h":1113},{"url":"https://www.pinterest.com/pin/e1_AfqPShwQlzxUJKv8EfMoGkpF4D_EeL9yYwho_GNn_dnfEIncX12K/","image":"https://i.pinimg.com/originals/23/45/57/2345572db5bc58abde36dd8af6d8e78d.png","date":"2024-08-04","w":928,"h":1232}],"pairsWith":["volumetric-light"],"related":["miniature-tiny-world"],"prompts":[],"rank":25}],"editing":{"asOf":"2026-10-27","intro":"Ten editing jobs. For each one: the service an agent should use first, the alternatives, and the gotcha it hits first. Deterministic tools come first. A generative model comes in only when the pixels themselves must change.","practices":[{"title":"Write the edit decision list first, render second","body":"Write the cut as data (JSON, OTIO or FCPXML): source, in and out points, track, effect. Show it to the person and get a yes before any paid call."},{"title":"Deterministic before generative","body":"FFmpeg, Remotion and HyperFrames cut, trim, join, resize, caption and mix for almost nothing, and the same command gives the same result. Use a video-to-video model only on the shortest span that has to change. Most models take 5–30 s per pass."},{"title":"Transcribe once, with word timestamps","body":"Keep the word-level JSON and drive every text decision from it: silences, filler words, highlights, captions. Pad each cut by 50–150 ms and add a ~30 ms audio fade so the cuts do not click."},{"title":"Frame-accurate cuts need a re-encode","body":"`-c copy` snaps to keyframes and can leave black frames or audio drift. Re-encode around the cut, or use a precise mode (varg `trim` with `precise: true`), whenever the cut point matters."},{"title":"Keep audio in sync","body":"Probe the frame rate and sample rate first. Convert mixed sources to one constant frame rate before joining them. Cut audio and video on the same timestamps, and check that the durations match after every step."},{"title":"Never touch the source","body":"Work on copies and low-resolution proxies for analysis and previews. Apply the final cut to the full-resolution source, and upscale only the final export."},{"title":"Check frames, don’t trust the log","body":"After each render, grab stills at the cut points and ffprobe the output (duration, streams, resolution). For anything subtle, ask a video model a QA question about the result."},{"title":"Estimate before you spend","body":"Use the free estimate step where a service has one (varg `estimate_cost`, Topaz, Sync). Cache transcripts and generations, and never re-run a paid model just to move a cut."},{"title":"Treat hosted APIs as jobs","body":"Most editing APIs are asynchronous: store the job id, poll or take a webhook, back off on 429, and use idempotency keys where offered. Download results right away, because links expire (Vizard: 3 hours)."},{"title":"Pass URLs, not files","body":"Hosted tools want public URLs. Upload once (varg `/v2/files`) and pass the same URL from step to step instead of uploading again."},{"title":"Reframe with tracking, not a center crop","body":"For 9:16, follow the face or subject (OpusClip, Luma `video_reframe`, a tracking crop) and keep captions inside the platform safe zones."},{"title":"Hand off to people as a timeline","body":"When an editor will finish the cut, export OTIO, FCPXML or Premiere XML (auto-editor, Remotion, OpenTimelineIO) rather than a flattened MP4."}],"jobs":[{"id":"cut","label":"Cut, trim, resize, join","task":"Trim a clip, join scenes, change the aspect ratio, re-encode, add a logo or music","rule":"Use FFmpeg on the agent’s own machine. If the agent has no shell, or works in the cloud, run the same command through the varg ffmpeg tool or Rendi. Probe first, and check the result with ffprobe.","services":[{"id":"ffmpeg","name":"FFmpeg","access":["cli","skill","mcp"],"runs":"local","price":"Free, open source","bestFor":"Every deterministic operation: trim, concat, scale, pad, overlay, mix, re-encode. Offline and repeatable.","watchOut":"Agents get filtergraphs wrong. Stream copy only cuts on keyframes. Keep the cheatsheet nearby.","url":"https://ffmpeg.org/documentation.html","agentUrl":"https://github.com/rendi-api/ffmpeg-cheatsheet","skills":["ffmpeg-skill","varg-ffmpeg-mixing"]},{"id":"varg-ffmpeg","name":"varg ffmpeg tool","by":"varg","access":["mcp","api","skill"],"runs":"cloud","price":"Credits per run","bestFor":"FFmpeg on the same key as generation: a raw command, plus ready-made trim (frame-accurate with `precise`), slice and resize. The output lands next to the generated clips.","watchOut":"Inputs must be URLs. Upload local files with `/v2/files` first.","url":"https://varg.ai/models/ffmpeg.md","agentUrl":"https://github.com/vargHQ/skills/tree/main/varg-ai","onVarg":["ffmpeg","trim","slice","resize"],"skills":["varg-ai"]},{"id":"rendi","name":"Rendi","access":["mcp","api","skill"],"runs":"cloud","price":"Hosted API, paid by usage","bestFor":"Hosted FFmpeg for cloud agents: chained commands, FFprobe, a Claude Code plugin and an MCP server.","watchOut":"Inputs must be public URLs. Commands stop after 300 s unless you raise `max_command_run_seconds`.","url":"https://www.rendi.dev/docs/introduction","agentUrl":"https://github.com/rendi-api/ffmpeg-llm"}]},{"id":"transcript","label":"Talking-head cleanup","task":"Remove silences, filler words and flubs, cut by editing the transcript","rule":"Transcribe with word timestamps (ElevenLabs Scribe, or Groq Whisper for price), choose the cuts from the text, then cut with FFmpeg. Use auto-editor for a quick local silence pass, and Descript when a person wants to review and polish the edit in an app.","services":[{"id":"elevenlabs-scribe","name":"ElevenLabs Scribe","by":"ElevenLabs","access":["api","mcp","skill"],"runs":"cloud","price":"Per audio hour","bestFor":"The most reliable word timestamps, speaker labels (up to 32) and audio events: the base for every text-driven cut.","watchOut":"Ask for word granularity explicitly.","url":"https://elevenlabs.io/docs/overview/capabilities/speech-to-text","agentUrl":"https://github.com/elevenlabs/elevenlabs-mcp","skills":["elevenlabs-speech-to-text"]},{"id":"groq-whisper","name":"Groq Whisper","by":"Groq","access":["api"],"runs":"cloud","price":"Per audio hour, cheapest","bestFor":"Fast, cheap word timestamps (`verbose_json` with `timestamp_granularities[]=word`). Also on varg.","watchOut":"Upload limit of 25–100 MB, so split long audio. The turbo model does not translate.","url":"https://console.groq.com/docs/speech-to-text","onVarg":["groq_whisper_large_v3_turbo","whisper_large_v3"]},{"id":"auto-editor","name":"auto-editor","access":["cli"],"runs":"local","price":"Free, open source","bestFor":"Silence and motion cuts in one command. It can also export the cut as a Premiere, Resolve, Final Cut, Shotcut or Kdenlive timeline instead of rendering.","watchOut":"Flag names changed between versions, so check `--help`. One Premiere XML export bug is reported.","url":"https://pypi.org/project/auto-editor/"},{"id":"descript","name":"Descript API + Underlord","by":"Descript","access":["mcp","api","cli"],"runs":"cloud","price":"Media minutes + AI credits","bestFor":"One agent endpoint for “remove filler words, studio sound, captions, make clips”, with a person reviewing in Descript.","watchOut":"Jobs are asynchronous (job id or callback), and each token is scoped to one Drive.","url":"https://help.descript.com/developers","agentUrl":"https://help.descript.com/developers/mcp/overview"}]},{"id":"clips","label":"Long video to Shorts","task":"Find the best moments in a podcast or stream, cut them, reframe to 9:16 and caption them","rule":"OpusClip when the person wants finished clips with a score and a posting flow. Build it yourself when you need control: a transcript plus a video model to pick the moments, FFmpeg to cut, tracking to reframe.","services":[{"id":"opusclip","name":"OpusClip","access":["mcp","api","skill"],"runs":"cloud","price":"Per input minute","bestFor":"End-to-end clipping: virality score, reframe, captions, brand templates and posting. It has an MCP server, a Claude connector and a skill.","watchOut":"Each project has a 10-credit minimum. Some of its docs still call the API early access.","url":"https://help.opus.pro/api-reference/overview","agentUrl":"https://github.com/opus-pro/opus-skills"},{"id":"diy-clips","name":"Transcript + Gemini + FFmpeg","access":["api","cli","skill"],"runs":"both","price":"Model tokens; the tools are free","bestFor":"Full control: the model picks moments from the words and the picture, FFmpeg cuts, a face-tracking crop reframes, and captions are burned from the same transcript.","watchOut":"Gemini samples 1 frame per second by default, so raise `fps` for fast action.","url":"https://ai.google.dev/gemini-api/docs/video-understanding","skills":["clipify"]},{"id":"vizard","name":"Vizard","access":["api"],"runs":"cloud","price":"Upload minutes on a plan","bestFor":"Cheap bulk clipping with length presets.","watchOut":"The source must be at least 3 minutes long. Clip links expire after 3 hours and files are deleted after 7 days.","url":"https://docs.vizard.ai/"}]},{"id":"captions","label":"Captions & subtitles","task":"Burn in word-by-word captions, make SRT/VTT, translate subtitles","rule":"Make the captions yourself from the word timestamps you already have: ASS through FFmpeg for a plain burn-in, Remotion or HyperFrames for animated styles. Use a captions SaaS when the person wants its trendy templates.","services":[{"id":"ffmpeg-ass","name":"FFmpeg + ASS","access":["cli","skill"],"runs":"local","price":"Free","bestFor":"Deterministic burn-in in any style, with the word-by-word highlight done with `\\k` karaoke tags.","watchOut":"The fonts must be installed where it renders, and FFmpeg must be built with libass.","url":"https://ffmpeg.org/ffmpeg-filters.html#subtitles-1","skills":["josiahsiegel-ffmpeg-captions","agent-caption"]},{"id":"remotion-captions","name":"Remotion / HyperFrames captions","access":["skill","sdk"],"runs":"local","price":"Free for individuals and small teams","bestFor":"Animated captions inside a coded composition: per-word pop, the active-word highlight, captions placed in 3D.","watchOut":"You supply the word timestamps.","url":"https://www.remotion.dev/docs/ai/skills","skills":["remotion-captions","hyperframes-camera-3d-captions"]},{"id":"submagic","name":"Submagic","access":["mcp","api"],"runs":"cloud","price":"Subscription","bestFor":"Creator-style caption templates in 100+ languages, plus Magic Clips.","watchOut":"Exports are capped at 50 requests an hour.","url":"https://docs.submagic.co/introduction"},{"id":"zapcap","name":"ZapCap","access":["api"],"runs":"cloud","price":"Per minute","bestFor":"Styled captions as a transparent overlay (ProRes 4444 / VP9) to lay over your own edit. Accepts your own SRT.","url":"https://zapcap.ai/api/"}]},{"id":"assemble","label":"Assemble from a timeline","task":"Put clips, titles, music and transitions together from a script, or render variants from a template","rule":"Write the edit as code with HyperFrames or Remotion when the agent writes the video. Use Shotstack or Creatomate when hundreds of template variants must render in the cloud.","services":[{"id":"hyperframes","name":"HyperFrames","by":"HeyGen","access":["skill","cli"],"runs":"both","price":"Free, Apache-2.0; optional cloud render","bestFor":"HTML and GSAP compositions an agent writes and checks frame by frame, rendered with headless Chrome and FFmpeg. About 450 ready-made blocks.","watchOut":"Needs Node 22+ and FFmpeg.","url":"https://hyperframes.heygen.com","agentUrl":"https://github.com/heygen-com/hyperframes","skills":["hyperframes-cli"]},{"id":"remotion","name":"Remotion","access":["skill","sdk"],"runs":"both","price":"Free for individuals and small companies, license above that","bestFor":"React video with an official agent skill set, captions, and OpenTimelineIO export.","watchOut":"Cloud rendering (Lambda) is a separate setup.","url":"https://www.remotion.dev/docs/ai/skills","skills":["remotion-best-practices"]},{"id":"shotstack","name":"Shotstack","access":["mcp","api","cli","skill"],"runs":"cloud","price":"Render credits or subscription","bestFor":"A hosted JSON timeline that renders at scale, with an MCP server, a CLI and a skill.","watchOut":"The MCP server is HTTP-only and in beta, so stdio clients need mcp-remote.","url":"https://shotstack.io/docs/guide/agents/"},{"id":"creatomate","name":"Creatomate","access":["api"],"runs":"cloud","price":"Subscription with credits","bestFor":"Ad and social variants from one template plus `modifications`.","watchOut":"There is no official MCP server, and the docs mix the v1 and v2 base URLs.","url":"https://creatomate.com/docs/api/rest-api/post-v1-renders"}]},{"id":"v2v","label":"AI edits: restyle, swap, relight","task":"Replace a person or object, remove something, change the style or the light, extend a shot","rule":"Cut the shortest span that needs to change, edit it with a video-to-video model, and stitch it back with FFmpeg. Pick the model for the edit: recast for people, relight for light, Aleph or Kling for prompt edits. Then check the identity on frame grabs.","services":[{"id":"varg-v2v","name":"varg video edit models","by":"varg","access":["mcp","api","skill"],"runs":"cloud","price":"Credits per run","bestFor":"One key for the main edit types: swap people with Recast, relight, extend or insert a scene, keep identity while restyling with ID-V2V, plus prompt edits on Kling 4, Seedance and Gemini Omni.","watchOut":"Most models take 5–15 s per pass, Recast up to 30 s. Run `estimate_cost` first.","url":"https://varg.ai/models/llms.txt","onVarg":["minimax_h3_max_recast","minimax_h3_max_relight","minimax_h3_max_extend","minimax_h3_max_insert","id_v2v","kling_v4","omni_flash_1_1","grok_imagine_edit"],"skills":["varg-ai"]},{"id":"runway-aleph","name":"Runway Aleph","by":"Runway","access":["api","mcp","skill"],"runs":"cloud","price":"Credits","bestFor":"Prompt and keyframe edits: add, remove or replace objects, restyle, change the camera angle.","watchOut":"Inputs up to about 30 s. The original Aleph was retired on 2026-07-31, so use the current version.","url":"https://docs.dev.runwayml.com/","skills":["runway-dev","runway-media"]},{"id":"luma-ray","name":"Luma Ray (Agents API)","by":"Luma","access":["api"],"runs":"cloud","price":"Per generation","bestFor":"Restyle and relight that keeps the motion (pose, depth and face conditioning). `video_reframe` changes the aspect ratio.","watchOut":"Source up to 18 s and 200 MB. The older Modify Video endpoint is superseded.","url":"https://docs.agents.lumalabs.ai/guides/videos/editing/"},{"id":"wan-vace","name":"Wan VACE on fal","by":"fal","access":["api","sdk"],"runs":"cloud","price":"Per run","bestFor":"Masked inpainting and replacement when you need to name exactly which pixels change.","watchOut":"16 fps, 480–720p.","url":"https://fal.ai/models/fal-ai/wan-vace-14b/inpainting"}]},{"id":"dub","label":"Dubbing & lip sync","task":"Translate a video into another language in the same voice, and make the lips match","rule":"Use HeyGen for translation, voice and lip sync in one call. Use ElevenLabs for the best dubbed voice, then sync the lips with Sync Labs. Use Sync alone to fix the lips on new audio.","services":[{"id":"heygen-translate","name":"HeyGen Video Translate","by":"HeyGen","access":["api","mcp"],"runs":"cloud","price":"API credits; the MCP needs a paid plan","bestFor":"One call for the translation, the speaker's voice clone and lip sync, with idempotency keys.","watchOut":"Editing the translated text before the lip sync is not reliably supported.","url":"https://developers.heygen.com/reference/create-video-translation","agentUrl":"https://developers.heygen.com/mcp/overview"},{"id":"elevenlabs-dubbing","name":"ElevenLabs Dubbing","by":"ElevenLabs","access":["api","skill","mcp"],"runs":"cloud","price":"Per target language","bestFor":"The best dubbed voice in 90+ languages. Edits regenerate only the parts that changed.","watchOut":"No lip sync: pair it with Sync.","url":"https://elevenlabs.io/dubbing-api","skills":["elevenlabs-dubbing"]},{"id":"sync","name":"Sync Labs","access":["api","sdk"],"runs":"cloud","price":"Per second","bestFor":"Lip sync on real footage: sync-3 (4K, occlusions) and lipsync-2-pro. Also on varg.","watchOut":"Free and hobby plans run one job at a time.","url":"https://sync.so/docs/api-reference/api-overview","onVarg":["sync_v3","sync_v2_pro"]}]},{"id":"enhance","label":"Upscale, slow-mo, cut-outs","task":"Sharpen or upscale footage, make slow motion, remove the background","rule":"Upscale only the final export. Use Topaz for quality and the SeedVR or ByteDance upscalers for price. Use Bria for background removal without a green screen.","services":[{"id":"topaz","name":"Topaz Video API","by":"Topaz Labs","access":["api"],"runs":"cloud","price":"Credits; the estimate is free","bestFor":"Pro-grade upscale to 4K and frame interpolation for slow motion. Also on varg.","watchOut":"Two steps (estimate, then accept) and a 500 MB request limit.","url":"https://developer.topazlabs.com/getting-started/video-api-quickstart","onVarg":["topaz_video"]},{"id":"cheap-upscale","name":"SeedVR / ByteDance / Sima upscalers","access":["api","mcp"],"runs":"cloud","price":"Credits, cheaper","bestFor":"Good-enough upscaling for social video at a fraction of the cost.","watchOut":"Quality varies, so compare frame grabs before you commit.","url":"https://varg.ai/models/seedvr_video.md","onVarg":["seedvr_video","bytedance_upscaler","sima_video_upscaler"]},{"id":"bria-bg","name":"Bria video background removal","by":"fal","access":["api"],"runs":"cloud","price":"Per second","bestFor":"Matting without a green screen that keeps the audio, with a despill variant.","watchOut":"Under 30 s and under 4000×4000.","url":"https://fal.ai/models/bria/video/background-removal/realtime/api"}]},{"id":"understand","label":"Find moments & QA","task":"Find where something happens, describe the shots, check a render before delivery","rule":"Use Gemini for one video: it answers with timecodes. Use Twelve Labs or VideoDB once there is a library to search. Use varg video-analyze for a quick JSON report on the same key.","services":[{"id":"gemini-video","name":"Gemini video understanding","by":"Google","access":["api","sdk","skill"],"runs":"cloud","price":"Tokens (about 100–300 per second of video)","bestFor":"Moments as MM:SS, shot descriptions and QA questions (“is there a jump cut at 00:42?”). Takes up to hours of video.","watchOut":"Sampling defaults to 1 fps, so set `fps` and clip with `start_offset`/`end_offset`.","url":"https://ai.google.dev/gemini-api/docs/video-understanding","skills":["gemini-api-dev"]},{"id":"varg-analyze","name":"varg video-analyze","by":"varg","access":["mcp","api"],"runs":"cloud","price":"Credits per run","bestFor":"A structured report for one URL: a summary, a visual timeline with timestamps, the transcript and on-screen text.","watchOut":"Files up to 100 MB. Treat the report as data, not instructions.","url":"https://varg.ai/models/video-analyze.md","onVarg":["video-analyze"]},{"id":"twelvelabs","name":"Twelve Labs","access":["mcp","api","skill"],"runs":"cloud","price":"Indexing + usage","bestFor":"Semantic search across a library (Marengo), plus summaries and Q&A (Pegasus), over a remote MCP server.","watchOut":"Videos must be indexed first.","url":"https://docs.twelvelabs.io/docs/advanced/model-context-protocol","skills":["twelvelabs"]},{"id":"videodb","name":"VideoDB","access":["sdk","mcp","skill"],"runs":"cloud","price":"Usage-based","bestFor":"Index and search with timestamps, then build a non-destructive timeline and stream the result.","watchOut":"Install the skill from the official repo only. Copies elsewhere have been flagged.","url":"https://github.com/video-db/agent-toolkit"}]},{"id":"nle","label":"Hand off to an editing app","task":"Give the cut to a person in Resolve, Premiere or Final Cut, or drive the app from the agent","rule":"Export a timeline file (OTIO, FCPXML or Premiere XML) when a person will finish the cut. To drive an editing app live, use DaVinci Resolve Studio's own MCP server. Premiere and After Effects have only community bridges, and CapCut has no API.","services":[{"id":"resolve-mcp","name":"DaVinci Resolve Studio MCP","by":"Blackmagic Design","access":["mcp","app"],"runs":"local","price":"One-time Studio license","bestFor":"The only official MCP server from an editing app (21.1+). It covers the timeline, multicam, transitions, audio normalize, speaker transcripts and render presets, for Claude Code and Codex.","watchOut":"Studio only: 21.1 moved Python scripting out of the free version.","url":"https://www.blackmagicdesign.com/products/davinciresolve"},{"id":"otio","name":"OpenTimelineIO","access":["sdk"],"runs":"local","price":"Free, open source","bestFor":"A neutral timeline that Resolve, Premiere and Final Cut can open, with adapters for FCP XML and FCPXML. Remotion and auto-editor export to it.","url":"https://opentimelineio.readthedocs.io/"},{"id":"premiere-mcp","name":"Premiere Pro community MCP","access":["mcp","app"],"runs":"local","price":"Free; needs Premiere","bestFor":"Timeline control through the CEP scripting bridge when the team lives in Premiere.","watchOut":"Not from Adobe. The newer UXP timeline APIs are still limited.","url":"https://github.com/hetpatel-11/Adobe_Premiere_Pro_MCP"}]}]},"playbooks":{"originals":"# Originals: replenishment playbook\n\nStream `originals` · owner: varg team · ingestion: manual · cadence: on every merged PR to vargHQ/skills.\nFiles: `stream.json` (stream meta), `skills.json` (the pool), this playbook. Schema: `src/data/types.ts`.\n\n## 1. What this stream is\n\nSkills varg builds itself. Each entry has one of three statuses:\n\n| Status | Meaning | Today |\n|---|---|---|\n| `live` | Published from vargHQ/skills: Claude Code plugin marketplace, ClawHub, `npx skills` | 1: varg-ai |\n| `beta` | Works and is used, but lives outside vargHQ/skills `main`: an open PR, the meta-repo's `.agents/skills`, the claude.ai org sync, or the SDK repo | 8 |\n| `draft` | Production know-how hard-coded in varg Studio, listed so the catalog shows what Studio knows while it is extracted into skills | 10: 9 ad formats + 1 hook pack (`ref-pack`) |\n\nThe goal is the report's first P0 step: gather every varg skill into vargHQ/skills under one standard (§5), so the rails that already work (marketplace, ClawHub, `npx skills`) carry all of them. Until then the catalog says honestly where each skill stands.\n\n## 2. Sources\n\n| Source | Inventory | Lands as |\n|---|---|---|\n| vargHQ/skills `main` (public) | `gh api \"repos/vargHQ/skills/git/trees/main?recursive=1\" --jq '.tree[].path \\| select(endswith(\"/SKILL.md\"))'` | live |\n| vargHQ/skills open PRs | `gh pr list -R vargHQ/skills --state open` | beta |\n| Meta-repo `.agents/skills` (private) | `ls .agents/skills` in the vargHQ meta-repo | beta |\n| claude.ai org sync | `ls ~/.claude/skills/synced/*/ \\| grep '^varg-'` (names also in that folder's `manifest.json`) | beta |\n| vargHQ/sdk agent skills (public) | `gh api repos/vargHQ/sdk/contents/.claude/skills --jq '.[].name'` | beta |\n| varg Studio (private) | `studio-app/plugins/varg-studio/src/shared/formats.ts` (`FORMATS`, `HOOK_STYLES`, `HOUSE_MODELS`, recipes) and `src/server/production/plan-writer/copy.ts` (hook bank, voiceover lines) | draft |\n| varg model catalog | `curl -s https://varg.ai/models/llms.txt` | `models` ids |\n| ClawHub registry | `curl -s https://clawhub.ai/api/v1/skills/<folder-name>` | publish check |\n\nSkip in `.agents/skills`: stripe-best-practices, stripe-docs, connect-recommend, deploy-network-proxy, frontend-design (not media).\n\n## 3. Owner & cadence\n\n- **Owner:** the varg team. Whoever merges a skill PR in vargHQ/skills updates `skills.json` the same day.\n- **On every merged PR to vargHQ/skills:** update the entry's `status`, `version`, `updatedAt`, `files` and `install`.\n- **Weekly sweep (Mondays):** run every command in §2, diff the results against `skills.json`, and check that each `models` id still appears in llms.txt.\n- **When Studio changes:** `git -C studio-app log -1 --format=%cs -- plugins/varg-studio/src/shared/formats.ts`; refresh the drafts if the date moved.\n\n## 4. How to add an entry\n\nThe same path takes a new skill, or a `beta`/`draft` entry, to `live`.\n\n1. Check it is not listed in any stream:\n   ```bash\n   grep -h '\"slug\"' data/streams/*/skills.json | grep <skill-name>\n   ```\n2. Branch vargHQ/skills and scaffold the folder (lowercase, hyphens; `name` must equal the folder):\n   ```bash\n   gh repo clone vargHQ/skills && cd skills && git checkout -b feature/<skill-name>\n   npx skills init <skill-name>          # creates <skill-name>/SKILL.md\n   mkdir -p <skill-name>/references <skill-name>/scripts <skill-name>/assets\n   ```\n3. Write `SKILL.md` to the standard (§5): the cost gate on the first screen (`estimate_cost` first, an explicit go-ahead before any spend), then the workflow with its gates, then a \"which reference to read when\" table. Stay within 500 lines and move details to `references/`.\n4. Frontmatter, with the cost fields as flat `metadata` keys:\n   ```yaml\n   ---\n   name: <skill-name>\n   description: >-\n     <What it makes, in the third person>. Use when <triggers>.\n     NOT for <near misses>; use <neighbour skill> instead.\n   license: MIT\n   metadata:\n     author: vargHQ\n     version: \"1.0.0\"\n     varg.cost.typical: \"~400 credits per run\"\n     varg.cost.estimate_tool: \"varg:estimate_cost\"\n     varg.runtime.typical: \"5–15 min\"\n     varg.models: \"soul, nano_banana_2, seedance_2_5\"\n     varg.refs.manifest: \"assets/refs.manifest.json\"\n     varg.outputs: \"mp4 9:16\"\n     openclaw:\n       requires:\n         env:\n           - VARG_API_KEY\n       primaryEnv: VARG_API_KEY\n       homepage: https://varg.ai\n   compatibility: >-\n     Requires the varg MCP connection (https://mcp.varg.ai/mcp) or VARG_API_KEY.\n   allowed-tools: Bash(curl:*) Read Write Edit\n   ---\n   ```\n5. Media references go in `assets/refs.manifest.json`, one record per role, pointers only:\n   ```json\n   [{ \"role\": \"identity\", \"url\": \"https://s3.varg.ai/…\", \"sha256\": \"…\", \"bytes\": 0, \"license\": \"original\",\n      \"controls\": \"face, hair, outfit\", \"must_not_touch\": \"pose, background\" }]\n   ```\n6. Evals. Cases live in `<skill-name>/evals/<case>/`. Bash and the varg MCP stay ungranted and MCP servers are mocked by default, so no credits are spent:\n   ```bash\n   cd <skill-name>\n   claude plugin eval init --bare trigger-near-miss      # prompt.md + graders/criteria.md\n   claude plugin eval init --bare quotes-before-spend\n   cd .. && claude plugin eval ./<skill-name> --no-publish   # with vs without the skill (default ablation)\n   ```\n   Iterate until the skill beats the no-skill arm, and put the score delta in the PR. Never pass `--allow-real-servers` or grant `mcp__varg__*`.\n7. Register and validate in the vargHQ/skills root:\n   - add `\"./<skill-name>\"` to `skills` in `.claude-plugin/plugin.json`;\n   - add a row to the README's \"Available Skills\" table;\n   - run `claude plugin validate .` and expect one warning: `plugin.json` has no `version` on purpose so installs track commits, which is also why `--strict` fails today.\n8. Open the PR. Making a PR is not merging; merge only on an explicit go-ahead.\n   ```bash\n   git add <skill-name> .claude-plugin/plugin.json README.md\n   git commit -m \"feat: add <skill-name> skill\"\n   git push -u origin feature/<skill-name>\n   gh pr create -R vargHQ/skills --fill\n   ```\n   While the PR is open, list the skill as `beta` with `source.url` on the branch tree (see varg-previz).\n9. CI. vargHQ/skills has no validator workflow yet, so the reviewer reruns step 7 and the evals. On merge, `publish-clawhub.yml` runs `bunx clawhub@latest sync --root . --all --no-input --bump patch --changelog \"Auto-published from vargHQ/skills@<sha>\" --tags latest`.\n10. Check the publish:\n    ```bash\n    gh run list -R vargHQ/skills --workflow publish-clawhub.yml --limit 1\n    curl -s https://clawhub.ai/api/v1/skills/<skill-name> | head -c 400\n    ```\n    Every run since July ends in `failure` at the \"Tag release\" step (no git identity, exit 128). The sync step before it still works (the 2026-10-20 run logged \"Update submitted for varg-ai@2.0.11; pending security scans\"), so read that step's log, not the badge. The ClawHub slug is the folder name; the README's `vargai` is an older listing stuck at 2.0.3.\n11. Add or update the catalog entry in `data/streams/originals/skills.json` (field guide §6, example §7), then:\n    ```bash\n    bun run validate originals\n    ```\n\n## 5. Quality gate checklist\n\nSame list as `qualityGate` in `stream.json`. A `live` entry passes all of it; a `beta` entry names what is missing in its description.\n\n- [ ] Frontmatter `name` equals the folder; `description` is third person, ≤ 1,024 characters, says what the skill makes, and has \"Use when …\" and \"NOT for …\" naming neighbouring skills\n- [ ] SKILL.md ≤ 500 lines; cost and safety gates (estimate_cost first, explicit go-ahead) at the top; details in `references/` one level deep\n- [ ] Credits only, never dollars; exact prices come from estimate_cost at run time\n- [ ] Flat `metadata` keys: `varg.cost.typical`, `varg.cost.estimate_tool`, `varg.runtime.typical`, `varg.models` (ids from llms.txt), `varg.outputs`\n- [ ] Media refs declared by role in `assets/refs.manifest.json` (url, sha256, bytes, license, role, controls / must_not_touch); no film stills, MP3 or MP4 bundled\n- [ ] No keys in files or commands: the varg MCP OAuth connection, or `$VARG_API_KEY` loaded from `~/.varg/credentials`\n- [ ] `evals/` with trigger near-misses and process cases on mocked varg tools; `claude plugin eval` shows a gain over the no-skill baseline with zero credits spent\n- [ ] `claude plugin validate .` passes (stand-in for the CI validator)\n- [ ] Published: in `.claude-plugin/plugin.json`, pushed to ClawHub by `publish-clawhub.yml`, listed by `npx skills add vargHQ/skills --list`\n\n## 6. Field guide for this stream\n\n| Field | Rule |\n|---|---|\n| `id` | `vargHQ/<skill-name>`; Studio drafts `vargHQ/varg-studio-<format-id>` |\n| `slug` | `varg-` prefix, unique across all five streams (grep in §4.1); never reuse a retired slug |\n| `name` | Title Case; \"varg\" only in the flagship's name, since the publisher line already says varg |\n| `skillName` | the exact frontmatter `name`; omit it when the file has no frontmatter |\n| `status` | `live` / `beta` / `draft` per §1; never `wanted` (that belongs to the trends stream) |\n| `category`, `tags` | one primary CategoryId; secondary CategoryIds and free tags go in `tags` |\n| `summary` | ≤ 120 characters, the outcome first |\n| `description` | 2–5 sentences; a draft starts \"Being extracted from varg Studio…\"; a beta names what blocks publishing |\n| `useWhen`, `notFor` | from the frontmatter description; otherwise only from explicit rules in the body; never invented |\n| `publisher` | always the fixed varg object (copy it from §7) |\n| `source` | public: GitHub tree URL + `repo` + `path` + SPDX `license`; private: `vargHQ (internal: <path>)` with `license: \"proprietary\"` |\n| `install` | live only, and only commands verified in the vargHQ/skills README or the CLI docs: the Claude Code plugin pair, `npx skills add vargHQ/skills --skill <name> -a <agent> -y`, `npx clawhub@latest install <folder-name>` |\n| `agents` | where it runs today: published → claude-code, codex, cursor, openclaw; `.agents/skills` → claude-code, codex (Codex needs frontmatter); claude.ai sync → claude-ai, claude-code; Studio → varg-studio |\n| `models` | varg catalog ids only (`seedance_2_5`, not \"Seedance 2.5\"); each must appear in llms.txt |\n| `cost.typicalCredits` | \"~N credits / run (estimate)\"; convert a skill's dollar figure at 1 credit = 1 cent and never write a currency; free local skills get only `cost.note` |\n| `runtime` | only when the skill states one |\n| `refs` | only when the skill passes media by role; image and video refs carry a `license` |\n| `files` | the skill tree, relative to its folder |\n| `stats` | GitHub `stars` only when the repo is a skills repo, always with `asOf` |\n| `updatedAt` | last commit touching the skill: `gh api \"repos/<repo>/commits?path=<path>&per_page=1\" --jq '.[0].commit.committer.date'` |\n| `featured` | at most 3 in this stream |\n| `legal` | rights notes the skill raises: client footage, songs, trade dress, vendored code |\n\n## 7. Example entry (the live varg-ai card)\n\n```json\n{\n  \"id\": \"vargHQ/varg-ai\",\n  \"slug\": \"varg-ai\",\n  \"name\": \"varg AI\",\n  \"skillName\": \"varg-ai\",\n  \"type\": \"skill\",\n  \"status\": \"live\",\n  \"stream\": \"originals\",\n  \"category\": \"tooling\",\n  \"tags\": [\"video\", \"image\", \"audio\", \"talking-head\", \"captions\", \"render\", \"tsx\", \"official\"],\n  \"summary\": \"The official varg skill: videos, images, speech and music through one API key, rendered in the cloud or locally.\",\n  \"description\": \"The flagship varg skill and the only one published in vargHQ/skills so far. It finds an existing varg API key (environment, `~/.varg/credentials`, `.env`) without printing it, checks the credit balance, then picks **cloud render** (`POST /v2/render`, curl only) or **local render** (`bunx vargai render`, bun + ffmpeg, free `--preview`). Media is made with function calls (`Image()`, `Video()`, `Speech()`) and composed in JSX (`<Render>`, `<Clip>`, `<Music>`, `<Captions>`); ten reference files cover models, components, recipes, prompting, the REST API, BYOK and common errors. The Claude Code plugin also adds the hosted varg MCP server (OAuth sign-in), and the skill checks GitHub for a newer version once per session.\",\n  \"useWhen\": [\n    \"Creating videos, animations, talking characters, slideshows, product showcases or social content\",\n    \"Generating a single image, video clip, voice line or music track\",\n    \"Requests like \\\"create a video\\\", \\\"make a slideshow\\\", \\\"talking head\\\", \\\"lip sync\\\", \\\"captions\\\" or \\\"render video\\\"\"\n  ],\n  \"notFor\": [\n    \"Bring-your-own provider keys through the API: v2 has no BYOK (only local render with direct provider modules)\"\n  ],\n  \"publisher\": { \"name\": \"varg\", \"handle\": \"vargHQ\", \"kind\": \"varg\", \"verified\": true, \"url\": \"https://varg.ai\", \"avatar\": \"https://github.com/vargHQ.png\" },\n  \"source\": { \"url\": \"https://github.com/vargHQ/skills/tree/main/varg-ai\", \"repo\": \"vargHQ/skills\", \"path\": \"varg-ai\", \"license\": \"MIT\" },\n  \"install\": {\n    \"claude-code\": \"claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg\",\n    \"codex\": \"npx skills add vargHQ/skills --skill varg-ai -a codex -y\",\n    \"cursor\": \"npx skills add vargHQ/skills --skill varg-ai -a cursor -y\",\n    \"openclaw\": \"npx clawhub@latest install varg-ai\"\n  },\n  \"agents\": [\"claude-code\", \"codex\", \"cursor\", \"openclaw\"],\n  \"models\": [\n    \"nano_banana_pro\", \"grok_imagine_image\", \"ideogram_v4_5\", \"kling_v3\", \"kling_v2_5\", \"eleven_v3\",\n    \"music_v1\", \"veed_fabric_1_0\", \"sync_v2_pro\"\n  ],\n  \"requires\": [\"varg API key\", \"curl (cloud render)\", \"bun + ffmpeg (local render)\"],\n  \"cost\": {\n    \"typicalCredits\": \"~200–500 credits / run (estimate)\",\n    \"note\": \"The skill's figure for a typical 3-clip video. Single images start at a few credits and local `--preview` renders are free; exact quote via `POST /v2/estimate`.\"\n  },\n  \"files\": [\n    \"SKILL.md\", \"references/byok.md\", \"references/cloud-render.md\", \"references/common-errors.md\",\n    \"references/components.md\", \"references/gateway-api.md\", \"references/local-render.md\",\n    \"references/models.md\", \"references/prompting.md\", \"references/recipes.md\",\n    \"references/templates.md\", \"scripts/setup.sh\", \"scripts/setup.ts\"\n  ],\n  \"stats\": { \"stars\": 21, \"source\": \"GitHub\", \"asOf\": \"2026-10-26\" },\n  \"version\": \"2.0.5\",\n  \"updatedAt\": \"2026-10-20\",\n  \"addedAt\": \"2026-10-26\",\n  \"preview\": { \"kind\": \"terminal\", \"hue\": 265, \"text\": \"bunx vargai render video.tsx --preview\" },\n  \"featured\": true\n}\n```\n\n## 8. Do not add\n\n- The non-media skills in `.agents/skills` (the Stripe skills, connect-recommend, deploy-network-proxy, frontend-design).\n- vargHQ/sdk `.claude/skills/varg-video-generation`: the legacy BYOK skill (needs `FAL_KEY` and other raw provider keys, uses old model names, bypasses varg billing), superseded by varg-ai.\n- SDK `src/definitions/skills` (`talking-character`, `text-to-tiktok`): code-level `SkillDefinition` objects, not Agent Skills; only the name collides.\n- A second card for the same skill: the meta-repo's `.agents/skills/varg-ai` (2.0.4) is a local install of the published varg-ai.\n- Community templates from `/v2/templates`: renders, not skills. Link them as example media in `refs` instead.\n- Third-party skills found in the same folders (HyperFrames, media-use, music-to-video, the Anthropic skills in the claude.ai sync): they belong to the vendors and community streams.\n- Anything that bundles film stills, MP3/MP4 or secrets, quotes dollars, or needs an install command nobody verified.\n\n## 9. Graduation and retirement\n\n**beta → live** when the skill is merged into vargHQ/skills `main`, passes §5, the ClawHub sync step submitted it, and `npx skills add vargHQ/skills --list` shows it. Then set `status: \"live\"`, point `source` at the `main` tree, add `install`, and update `version`, `updatedAt` and `files`. What blocks each beta today:\n\n| Entry | Blocker |\n|---|---|\n| varg-previz | PR #24 is open; merge on an explicit go-ahead |\n| varg-music-video, varg-character-keynote | only in the claude.ai org sync: copy into vargHQ/skills, turn dollar figures into credits, add \"NOT for\", `metadata.varg.*` and evals |\n| varg-consistent-characters | dollar cost table that disagrees with its own per-unit credits, old model names (`kling-v3`, `nano-banana-pro/edit`), no \"NOT for\", no evals |\n| varg-podcast-video | no frontmatter; calls `api.varg.ai/v1/…`, so move it to `/v2` |\n| varg-imessage-video | the renderer lives in the private vargHQ/imessage-ad repo (its asset script also calls `/v1`); ship the renderer with the skill first |\n| varg-ffmpeg-mixing | move it from vargHQ/sdk `.claude/skills` to vargHQ/skills |\n| varg-templates-section | internal ops for varg's own app; stays beta and is never published |\n\n**Studio draft → live:** (1) write the skill from `formats.ts` and `copy.ts`: shot descriptions, voiceover lines and word budget, default hooks, and the draft/final/finish recipe with `HOUSE_MODELS` ids; (2) make it run outside Studio through the varg MCP, with estimate_cost and an explicit go-ahead standing in for Studio's price card; (3) follow §4, adding `claude-code` (and the other agents it passes evals on) next to `varg-studio`; (4) once Studio's engine loads content-tier skills, have Studio load the published skill instead of its hard-coded copy. The hook pack graduates the same way, as one skill or as `references/hooks.md` inside the ad skills.\n\n**Retire** an entry (delete it and never reuse its slug) when the source skill is deleted or merged into another (name the survivor in the PR), or when Studio drops the format from `FORMAT_IDS`. **Demote live → beta** when a skill is unpublished or fails §5, for example when a `models` id disappears from llms.txt and the weekly sweep finds it still unfixed.\n","vendors":"# Vendors stream: operator playbook\n\nHow the **vendors** stream of varg Skills is filled, refreshed and pruned. Data contract: [`src/data/types.ts`](../../../src/data/types.ts). Files of this stream:\n\n| File | What it is | Who writes it |\n| --- | --- | --- |\n| [`sources.json`](./sources.json) | The repos the sync reads, one row per repo and skill-folder glob | Operator (by hand) |\n| [`skills.json`](./skills.json) | `SkillEntry[]` for the catalog | Sync (upstream fields) + operator (curated fields) |\n| [`stream.json`](./stream.json) | `StreamMeta`; `lastSync` is stamped by the sync | Operator; sync stamps `lastSync` |\n| [`../../../scripts/sync-vendors.ts`](../../../scripts/sync-vendors.ts) | The ingestion script (`bun run sync:vendors`) | Engineering |\n\n## 1. What this stream is\n\nOfficial skills published by the companies that make the models and tools: a `SKILL.md` (plus references, scripts and assets) in the vendor's own GitHub org. HeyGen HyperFrames, Remotion, Higgsfield, fal, Replicate, ElevenLabs, Google Gemini, Anthropic, Runway, Black Forest Labs, Krea, LottieFiles, PixiJS, Motion, Rive, Melies, inference.sh and GSAP are in the pool as of 2026-10-26: **168 entries from 24 repos** (163 live, 5 beta, 6 featured).\n\nThese skills run on the vendor's account and billing, never on varg credits, so `cost.typicalCredits` is never set here. The stream is automated: a script keeps the facts current (files, versions, last change, stars, installs) and a person decides what is listed and how it is described.\n\n## 2. Sources\n\nThe sync reads [`sources.json`](./sources.json). Each row:\n\n```json\n{\n  \"repo\": \"owner/name\",\n  \"publisher\": { \"name\": \"…\", \"handle\": \"<github org>\", \"url\": \"…\", \"avatar\": \"https://github.com/<org>.png\", \"kind\": \"vendor\", \"verified\": true },\n  \"skillsPath\": \"skills/*\",\n  \"include\": [\"only\", \"these\", \"skills\"],\n  \"exclude\": [\"not\", \"these\"],\n  \"defaultCategory\": \"image\",\n  \"license\": \"MIT\"\n}\n```\n\n- `skillsPath` is a glob matched against the **folder** that holds each `SKILL.md`, relative to the repo root: `skills/*`, `*` (top-level folders), `.` (a `SKILL.md` at the repo root), `registry/blocks/*`, or brace sets such as `{tools/image,tools/video}/*`. A repo can appear in several rows with different globs (HyperFrames skills and blocks; inference.sh tools and guides).\n- `include` and `exclude` match the folder name or the frontmatter `name`. With `include`, nothing else in that glob is picked up, so new upstream skills there are **not** auto-discovered; prefer a tight glob plus `exclude` when the folder is media-only.\n- `license` is the repo-level fallback; the sync prefers a license in the skill's frontmatter or its own `LICENSE` file.\n- Skills with `metadata.internal: true` (hidden by the skills CLI) are skipped unless named in `include`.\n\n| Repo | Glob | Filter | License | Entries |\n| --- | --- | --- | --- | --- |\n| heygen-com/hyperframes | `skills/*` | — | Apache-2.0 | 7 |\n| heygen-com/hyperframes | `registry/blocks/*` | — | Apache-2.0 | 7 |\n| heygen-com/hyperframes-community-skills | `skills/*` | — (`duo`, `x-posting-license` beta pending a rights check) | Apache-2.0 | 8 |\n| remotion-dev/skills | `skills/*` | — | MIT (see legal note) | 12 |\n| higgsfield-ai/skills | `*` | exclude `higgsfield-websites` | MIT | 7 |\n| fal-ai-community/skills | `skills/*` | exclude `fal-redesign`, `fal-regenerate-3d` | MIT (README) | 15 |\n| replicate/skills | `skills/*` | exclude `build-models`, `publish-models` | Apache-2.0 | 5 |\n| elevenlabs/skills | `*` | exclude `agents`, `realtime`, `speech-engine`, `onboarding`, `setup-api-key` | MIT | 7 |\n| google-gemini/gemini-skills | `skills/*` | include `gemini-api-dev`, `gemini-omni-flash-api` | Apache-2.0 | 2 |\n| anthropics/skills | `skills/*` | include 5 creative skills | Apache-2.0 (per-skill LICENSE.txt) | 5 |\n| pixijs/pixijs-skills | `skills/*` | include router + 7 visual skills | MIT | 8 |\n| motiondivision/ai-kit | `plugins/motion/skills/*` | — | MIT (plugin.json) | 1 |\n| melies-co/melies-cli | `.` | — | MIT (package.json, README) | 1 |\n| inference-sh/skills | `{tools/image,tools/video,tools/audio,guides/photo,guides/video}/*` | — | MIT (README, plugin.json) | 39 |\n| inference-sh/skills | `{tools/infsh-cli,guides/design/*,guides/content/*,guides/prompting/*,guides/social/*}` | include 13 media guides | MIT | 13 |\n| runwayml/skills | `skills/*` | exclude `runway-dev-setup`, `runway-dev-characters` | MIT | 5 |\n| runwayml/runway-mcp-plugin | `skills/*` | — | MIT | 2 |\n| runwayml/runway-studio-skills | `.` | — | MIT | 1 |\n| black-forest-labs/skills | `skills/*` | — | MIT | 10 |\n| LottieFiles/motion-design-skill | `skills/*` | — | MIT | 1 |\n| LottieFiles/dotlottie-web | `.` | — | MIT | 1 |\n| LottieFiles/creator-agent-plugin | `skills/*` | include 2 (beta) | MIT | 2 |\n| LottieFiles/viscript | `tools/skill/*` | include `vis-skills` (beta) | MIT | 1 |\n| rive-app/skills | `skills/*` | — | MIT | 1 |\n| krea-ai/skills | `*` | — | MIT | 4 |\n| greensock/gsap-skills | `skills/*` | include `gsap-core`, `gsap-timeline`, `gsap-plugins` | MIT | 3 |\n\n### Checked and not added (2026-10-26)\n\n| Vendor | Where we looked | Why not |\n| --- | --- | --- |\n| Figma | `figma/mcp-server-guide` (figma-use-motion, figma-implement-motion, figma-shaders, video-interaction-mapper, …) | No license declared in the repo, its manifests or the skills. Re-check if one appears. |\n| Luma | `lumalabs/luma-plugins` | Claude plugin that only wires an MCP server; no `SKILL.md`; proprietary license |\n| Topaz Labs | `TopazLabs/topaz-mcp` | MCP server only, no `SKILL.md` |\n| Kling (Kuaishou) | orgs `KlingAI`, `KwaiVGI`, `kuaishou` | No official `SKILL.md` |\n| ByteDance / Seedance | `bytedance`, `ByteDance-Seed`, `volcengine` | Only `bytedance/deer-flow`'s image, video, music and podcast skills, which depend on the DeerFlow sandbox |\n| Lightricks / LTX | `Lightricks/LTX-2`, `Lightricks/LTX-Desktop` | Repo-local developer skills only (`.claude/skills/train-model`, `video-editor-development`) |\n| Google (Lyria, Interactions TTS) | `google-gemini/gemini-managed-agents-templates` (`ai-radio/skills/*`) | Template-internal skills written for one demo agent |\n| Midjourney, CapCut, Captions, Freepik | `midjourney`, `capcut`, `captions-ai`, `freepik`, `freepik-company` | No public media skills (Freepik only has internal `.claude/skills` in `knowledge-agent`) |\n| Runway, other repos | `openclaw-skills` (video-call-agent), `runway-characters-meeting-skill`, `openclaw-skill-send-video-message` | Real-time avatar calls rather than media creation; the last one has no license |\n| HeyGen internal skills | `.claude/skills`, `.agents/skills` in heygen-com/hyperframes (6) | `metadata.internal: true`; HeyGen's README says they are excluded by default |\n| HeyGen, other repos | `heygen-com/skills`, `heygen-cli`, `openclaw-plugin-heygen`, `hyperframes-gemini-agent`, `hyperframes-launches` | Not added in the code-to-video pass. `skills` (avatar, presenter video, dubbing; MIT) is a candidate for a HeyGen API pass once consent for photo twins and voice cloning is checked; the OpenClaw plugin is a connector; the Gemini agent's skills are template-internal; `hyperframes-launches` has no `SKILL.md` and excludes its media and brand assets from the license |\n| GSAP, other skills | `gsap-scrolltrigger`, `gsap-react`, `gsap-frameworks`, `gsap-performance`, `gsap-utils` in greensock/gsap-skills | Scroll, framework and web-performance helpers rather than video motion; widen `include` if the catalog wants them |\n| Adobe | `adobe/skills` (`adobe-fonts`) | Font discovery through Adobe's MCP; Adobe Fonts cannot be self-hosted or bundled, so it cannot feed a render pipeline |\n| Gladia | `gladiaio/skills` (`gladia-pre-recorded-transcription`) | Official and MIT, writes SRT/VTT through Gladia's API, but the repo is young (2 stars) and skills.sh shows a Snyk Warn without finding text. Re-check in the next captions pass |\n| Font sources | `google/fonts`, Fontsource, Bunny Fonts, Monotype | No `SKILL.md` (Fontsource ships only `llms.txt`); Monotype's `SKILL.md` has no license |\n| Mirrors | `remotion-dev/{claude-code,codex,cursor}-plugin`, `elevenlabs/plugin`, third-party \"superpowers\" repos republishing inference.sh skills | Copies of skills already listed from the source repo |\n\n## 3. Owner and cadence\n\n- **Owner:** varg catalog team (vendors stream). The owner merges every change to this stream.\n- **Daily (automated):** `bun run sync:vendors`. It needs a logged-in GitHub CLI (`gh auth login`) or `GITHUB_TOKEN`; without either it falls back to anonymous `api.github.com`, whose 60-requests-per-hour limit only covers `--repo` runs. A full sync makes about 2 API calls per skill plus 2 per repo (around 360 calls) and one `skills.sh` page per repo, and takes about a minute.\n- **Weekly (human, Mondays):** curate new `beta` entries, clear the \"review\" list, re-read skills.sh audits for anything that changed, and look for new vendor repos (step 4b).\n- `stream.json` `lastSync` is stamped by every full (non-`--repo`) sync.\n\n## 4. How to refresh, and how to add a vendor\n\n### 4a. Routine refresh\n\n1. Preview: `bun run sync:vendors --dry-run`\n2. Read the summary. `+ added (beta)` are new upstream skills; `~ changed` lists upstream fields that moved (files, version, updatedAt, license, skillName); `- gone (→ draft)` gives the reason (removed upstream, or no longer selected by `sources.json`); `! review` lists **live** entries whose skill changed upstream; stats drift (stars, installs, `asOf`) is expected and not counted as unexpected.\n3. Apply: `bun run sync:vendors`\n4. Curate each new `beta` entry in `skills.json` (field rules in section 6):\n   1. Read its `SKILL.md` on GitHub (`source.url`) and the skills.sh audit page `https://skills.sh/<owner>/<repo>/<skillName>`; apply the quality gate (section 5).\n   2. Write `name`, `summary`, `description`, `useWhen`, `notFor`, `category`, `tags`, `preview`, `models`, `requires`, `cost.note`, `agents` and `install`.\n   3. Set `status` to `\"live\"` **in the same edit**. While an entry is `beta`, the sync rewrites its `description` and `useWhen` from upstream on every run.\n   4. If it is not a media skill, add it to that source's `exclude` instead and run the sync again (it becomes `draft`, then delete it).\n5. For every entry on the review list, re-read the upstream `SKILL.md` and update `description`, `useWhen`, `notFor`, `models` and `requires` if they drifted.\n6. Validate: `bun run validate`\n7. Confirm a clean state: `bun run sync:vendors --dry-run` should end with `Unexpected changes: 0`.\n\n### 4b. Add a vendor\n\n1. Find the repo:\n   - `gh api \"search/code?q=filename:SKILL.md+org:<org>\"` (code search allows 10 requests a minute)\n   - `gh api \"orgs/<org>/repos?per_page=100\" --jq '.[].name'`\n   - the vendor's docs and README, and https://skills.sh/official\n2. Confirm it is the vendor: `gh api orgs/<org> --jq '[.is_verified, .blog]'`. Accept a verified domain, or a link to the repo from the vendor's website, docs or npm package. Otherwise stop.\n3. Confirm a license:\n   - `gh api repos/<owner>/<repo> --jq .license.spdx_id`\n   - if that prints `null` or `NOASSERTION`, look in the skill frontmatter (`license:`), a per-skill `LICENSE` file, `package.json` or the README\n   - no license anywhere means do not add it\n4. List its skills: `gh api \"repos/<owner>/<repo>/git/trees/HEAD?recursive=1\" --jq '.tree[].path | select(endswith(\"SKILL.md\"))'`\n5. Add a row to `sources.json` with the narrowest glob that holds only media skills, plus `exclude` (or `include`) for the rest, a `defaultCategory` and the SPDX `license`. Reuse the vendor's publisher block if another row already has it.\n6. Preview the repo alone: `bun run sync:vendors --repo <owner>/<repo> --dry-run`, then write it: `bun run sync:vendors --repo <owner>/<repo>`\n7. Curate the new `beta` entries (4a, step 4) and pick a preview hue for the vendor (section 6).\n8. `bun run validate`, then `bun run sync:vendors --dry-run` for a clean state.\n\n## 5. Quality gate\n\nAn entry goes `live` only when all of these hold (the same list is in `stream.json` `qualityGate`):\n\n1. **Publisher identity:** the vendor's own GitHub org, confirmed by a GitHub-verified domain or a link from the vendor's site, docs or npm package.\n2. **License present:** SPDX in the frontmatter, a `LICENSE` file, `package.json` or the README. No license, no entry.\n3. **`SKILL.md` parses:** frontmatter with `name` and a `description` that says **when** to use the skill (triggers). The sync's parser flags skills without frontmatter.\n4. **Media skill:** it makes, edits, renders or directs images, video, audio or motion. Setup-only, account-management, voice-agent runtime and website-builder skills are out.\n5. **No unknown hosts in scripts:** bundled scripts may call only the vendor's own hosts, GitHub, or documented package registries (npm, PyPI). An installer piped to a shell must come from the vendor's own domain or GitHub org.\n6. **Audit verdict checked:** read the Gen Agent Trust Hub, Socket and Snyk verdicts on skills.sh. A `Warn` is acceptable after reading it. A `Fail` blocks `live` until someone reads the finding and logs a decision in the table below. Skills not on skills.sh get the same manual read of `SKILL.md` and `scripts/`.\n7. **Preview assigned:** `preview.kind` matches the output and `preview.hue` is the vendor's hue.\n8. **Install verified:** every command in `install` comes from the vendor's README or docs, or from the skill's skills.sh page, with only documented flags added (section 6).\n9. **Cost is honest:** `cost.note` names who bills the user. Never `typicalCredits`.\n\n### Audit exceptions log\n\n| Entry | Scanner and verdict | Finding | Decision (2026-10-26) |\n| --- | --- | --- | --- |\n| higgsfield-ai/higgsfield-product-photoshoot, -marketplace-cards, -video-explainer, -youtube-thumbnail | Gen Agent Trust Hub: Fail (high) | Bootstrap runs `curl -fsSL https://raw.githubusercontent.com/higgsfield-ai/cli/main/install.sh \\| sh`; shell commands; prompt-injection surface on user prompts | Live. The installer is the vendor's own CLI from its own GitHub org; listed in `requires` |\n| fal-ai-community/genmedia | Gen Agent Trust Hub: Fail (high) | `curl https://genmedia.sh/install -fsS \\| bash` (and PowerShell `iex`) installs the genmedia CLI; downloads skill bundles | Live. fal's docs (fal.ai/docs) document the same installer and link the genmedia-cli repo |\n| remotion-dev/remotion-docs | Snyk: Fail (W007) | An Algolia API key in the docs-search URL | Live. It is the Algolia app (`PLSDUOL1CA`) remotion.dev's own docs search uses; no user credential is involved |\n| black-forest-labs/flux-3-prompt-doctor | Snyk: Fail (W007) | Keeping the user's \"exact copy\" verbatim could echo secrets pasted into a brief | Live. Heuristic flag; the skill handles no credentials |\n| heygen-com/media-use | Gen Agent Trust Hub: Warn | Runtime `python -c` templates and `pip` installs for optional local models | Live. Optional local route; Python is listed as optional in `requires` |\n| fal-ai-community/fal-workflow | Gen Agent Trust Hub: Warn (audited 2026-03-06) | Author metadata says fal-ai while the audited author is an individual account; shell-to-Python interpolation in `scripts/create-workflow.sh` | Live. The repo is fal's community org, linked from fal's docs, and the current skill no longer ships that script |\n\n## 6. Field guide\n\nWho owns each field. The sync never overwrites a curated field that is present.\n\n| Field | Owner | Rule |\n| --- | --- | --- |\n| `id` | sync | `<publisher handle, lowercased>/<SKILL.md name>`. Stable forever: a renamed skill in the same folder keeps its id |\n| `slug` | curator (seeded) | kebab-case, unique across **all** streams. Prefix generic names with the vendor (`fal-`, `replicate-`, `elevenlabs-`, `anthropic-`, `inference-sh-`, `hyperframes-`, `lottiefiles-`, `krea-`); keep branded names (`hyperframes-cli`, `flux-3-video`, `pixijs-filters`) |\n| `name` | curator (seeded) | Title Case display name in the vendor's own casing (HyperFrames, PixiJS, fal, dotLottie) |\n| `skillName` | sync | frontmatter `name` |\n| `type`, `stream` | fixed | `\"skill\"`, `\"vendors\"` |\n| `status` | curator + sync | new → `beta`; curated → `live`; gone upstream or deselected → `draft` (by the sync); a `draft` that reappears → `beta` |\n| `category` | curator (seeded) | one primary `CategoryId` by outcome; put secondary categories in `tags` |\n| `tags` | curator (seeded) | 3–6 lowercase kebab-case tags: format, technique, model family, secondary category |\n| `summary` | curator (seeded) | at most 120 characters, outcome first, in our own words |\n| `description` | sync while `beta`, curator once `live` | 2–4 sentences grounded in the `SKILL.md`; inline code allowed; no marketing claims we can't check |\n| `useWhen` | sync while `beta`, curator once `live` | 2–5 short triggers taken from the `SKILL.md` description |\n| `notFor` | curator (seeded) | from \"NOT for\" clauses; name the sibling skill to use instead |\n| `publisher` | sync | copied from the `sources.json` row |\n| `source` | sync | `url` is the GitHub tree URL (repo URL for a root `SKILL.md`); `license` is resolved from frontmatter, then the skill's `LICENSE` file, then `sources.json` |\n| `install` | curator (seeded) | see the install rules below |\n| `agents` | curator (seeded) | where the skill installs and runs; `claude-ai` only when the vendor says so (Anthropic's skills are built into paid Claude.ai plans) |\n| `models` | curator | models the skill drives; varg catalog ids when one matches (`seedance_2_5`, `nano_banana_pro`, `veo_3_1`, `eleven_v3`, `flux_3` — see https://varg.ai/models/llms.txt), otherwise the vendor's own id |\n| `requires` | curator | accounts, API keys (with the env var name), CLIs and binaries (Node.js 22+, FFmpeg, Python) |\n| `cost.note` | curator | who bills: \"Billed in Higgsfield credits\", \"Billed by fal per endpoint call\", \"Free — open-source, renders locally\" |\n| `legal` | curator | rights notes, for example Remotion's company license |\n| `files` | sync | the skill's file tree, capped at 100 paths plus a `… +N more files` line. For a root `SKILL.md`: the file itself plus the top-level folders it references |\n| `stats` | sync | `stars` from GitHub; `installs` parsed from the skills.sh repo page (rounded the way skills.sh shows it, e.g. 1.3M → 1300000); `source` is `\"skills.sh\"` when installs exist, else `\"GitHub\"`; `asOf` is the sync date |\n| `version` | sync | frontmatter `version` or `metadata.version` |\n| `updatedAt` | sync | date of the last commit touching the skill folder (a root skill: `SKILL.md`) |\n| `addedAt` | sync | set once, when the entry is created |\n| `preview` | curator (seeded) | `kind` closest to the output (`film`, `wave`, `grid`, `kinetic`, `terminal`, …); `hue` from the table below; optional short `text` |\n| `featured` | curator | at most 6 across the stream: currently HyperFrames, HyperFrames Registry, Remotion Best Practices, Higgsfield Generate, ElevenLabs Text to Speech and Canvas Design |\n\n**Install rules** (one string per agent; several commands go on separate lines):\n\n1. `claude-code`: if the skill's own repo ships `.claude-plugin/marketplace.json` **and** the vendor's README documents the plugin commands, use them verbatim, for example `/plugin marketplace add higgsfield-ai/skills` then `/plugin install higgsfield@higgsfield`. Otherwise use `npx skills add <owner>/<repo> --skill <name> -a claude-code`.\n2. `codex`, `cursor`, `gemini-cli`, `openclaw`: a vendor-documented command if there is one (Rive's `codex plugin …` and `gemini extensions install …`, Google's Codex plugin, LottieFiles Creator, Motion's `npx motion-ai`); otherwise `npx skills add <owner>/<repo> --skill <name> -a <agent>`.\n3. The `npx skills add` form (syntax from the vercel-labs/skills README) is allowed only when skills.sh lists the skill, the vendor's README documents `npx skills add <owner>/<repo>`, or the skill sits where the CLI's documented discovery rules look (the repo root or a standard container such as `skills/`, per `docs/creating-skills.md` in vercel-labs/skills). Melies qualifies by the last rule (a root `SKILL.md`, not yet indexed by skills.sh). With none of these, leave `install` empty (viscript today: `tools/skill/` is not a discovery location).\n4. Add `openclaw` only when the vendor targets it (ElevenLabs' `metadata.openclaw`, Melies' ClawHub listing).\n\n**Preview hues** (one per vendor so cards read as a family):\n\n| Vendor | Hue | Vendor | Hue | Vendor | Hue |\n| --- | --- | --- | --- | --- | --- |\n| HeyGen | 265 | Google Gemini | 228 | Runway | 100 |\n| Remotion | 212 | Anthropic | 18 | Black Forest Labs | 0 |\n| Higgsfield | 72 | PixiJS | 335 | LottieFiles | 168 |\n| fal | 285 | Motion | 58 | Rive | 305 |\n| Replicate | 8 | Melies | 35 | Krea | 130 |\n| ElevenLabs | 45 | inference.sh | 190 | GSAP | 88 |\n\n## 7. Example entry\n\n`elevenlabs/sound-effects`, as it sits in `skills.json`:\n\n```json\n{\n  \"id\": \"elevenlabs/sound-effects\",\n  \"slug\": \"elevenlabs-sound-effects\",\n  \"name\": \"ElevenLabs Sound Effects\",\n  \"skillName\": \"sound-effects\",\n  \"type\": \"skill\",\n  \"status\": \"live\",\n  \"stream\": \"vendors\",\n  \"category\": \"audio\",\n  \"tags\": [\"sfx\", \"foley\", \"ambience\", \"loops\"],\n  \"summary\": \"Generate sound effects and ambiences from a text description, including seamless loops.\",\n  \"description\": \"Generates sound effects from text with ElevenLabs (`eleven_text_to_sound_v2`): cinematic impacts, UI sounds, textures and ambiences. Parameters cover looping, duration and prompt influence, and the skill adds prompt tips and output formats.\",\n  \"useWhen\": [\"Whooshes, impacts or UI sounds for an edit\", \"A looping ambience bed\", \"Any non-speech audio\"],\n  \"publisher\": {\n    \"name\": \"ElevenLabs\",\n    \"handle\": \"elevenlabs\",\n    \"url\": \"https://elevenlabs.io\",\n    \"avatar\": \"https://github.com/elevenlabs.png\",\n    \"kind\": \"vendor\",\n    \"verified\": true\n  },\n  \"source\": {\n    \"url\": \"https://github.com/elevenlabs/skills/tree/main/sound-effects\",\n    \"repo\": \"elevenlabs/skills\",\n    \"path\": \"sound-effects\",\n    \"license\": \"MIT\"\n  },\n  \"install\": {\n    \"claude-code\": \"npx skills add elevenlabs/skills --skill sound-effects -a claude-code\",\n    \"codex\": \"npx skills add elevenlabs/skills --skill sound-effects -a codex\",\n    \"cursor\": \"npx skills add elevenlabs/skills --skill sound-effects -a cursor\",\n    \"gemini-cli\": \"npx skills add elevenlabs/skills --skill sound-effects -a gemini-cli\",\n    \"openclaw\": \"npx skills add elevenlabs/skills --skill sound-effects -a openclaw\"\n  },\n  \"agents\": [\"claude-code\", \"codex\", \"cursor\", \"gemini-cli\", \"openclaw\"],\n  \"models\": [\"eleven_text_to_sound_v2\"],\n  \"requires\": [\"ElevenLabs API key (ELEVENLABS_API_KEY)\"],\n  \"cost\": { \"note\": \"Billed in ElevenLabs credits\" },\n  \"files\": [\"SKILL.md\", \"references/installation.md\"],\n  \"stats\": { \"installs\": 11600, \"stars\": 510, \"source\": \"skills.sh\", \"asOf\": \"2026-10-26\" },\n  \"updatedAt\": \"2026-10-22\",\n  \"addedAt\": \"2026-10-26\",\n  \"preview\": { \"kind\": \"wave\", \"hue\": 45 }\n}\n```\n\n## 8. Do not add\n\n- **Non-media skills:** setup and API-key helpers, onboarding, account or library management, voice-agent and real-time call runtimes, website and app builders, model-packaging and deployment skills (for example ElevenLabs `agents`, Higgsfield `websites`, Replicate `build-models`).\n- **Forks and mirrors:** plugin-repo copies, aggregator repos and third-party republications of a vendor's skills (for example the \"superpowers\" repos that republish inference.sh skills). List the source repo once.\n- **Typosquats and look-alikes:** orgs or personal accounts named like a vendor or product that fail the identity check in 4b step 2.\n- **Repos without a license** (Figma's `mcp-server-guide` today), and skills whose only license is unclear.\n- **Internal or template skills:** `metadata.internal: true`, repo-local `.claude/skills` for the vendor's own developers, and skills written for one demo agent or sandbox (Google's ai-radio template, ByteDance DeerFlow).\n- **MCP-only plugins** with no `SKILL.md` (Luma, Topaz). They belong with connectors, not skills.\n\n## 9. Retirement rules\n\n- **Removed upstream:** the sync sets `status: \"draft\"` and prints `removed upstream`. Leave it in draft for 30 days, since vendors restructure repos. If the same skill reappears in another folder, the sync adds it as a new `beta` entry: copy the curated fields across, then delete the old draft. After 30 days with no successor, delete the entry.\n- **Renamed in place** (same folder, new frontmatter `name`): the sync matches by folder, keeps the `id` and updates `skillName`. Update `name` and `summary` by hand.\n- **Deselected by `sources.json`:** the sync sets `draft` with the reason `no longer selected by sources.json`. Delete the entry once the exclusion is confirmed.\n- **Model shut down or deprecated:** when the model a skill depends on is retired by the vendor (or removed from varg's catalog, for `models`), check whether the vendor updated the skill. If yes, update `models` and `description`; if the skill no longer works, set `draft`.\n- **Repo archived, license withdrawn or identity lost:** set `draft` at once, remove or adjust the row in `sources.json`, and delete the entries after a week.\n- **New audit failure** that is not in the exceptions log: move the entry to `beta` until it has been reviewed and logged.\n- **Back from draft:** a `draft` entry that shows up upstream again returns as `beta` with its curated text kept. Re-check it and promote it.\n","community":"# Community stream: operator playbook\n\nHow to keep `data/streams/community/skills.json` full of good, safe, current skills by independent creators.\nLast full pass: 2026-10-26 (40 entries: 37 live, 3 beta).\n2026-10-27: +38 beta entries, the top 40 Chinese video skills on ClawHub by installs (vargHQ/aeo `research/2026-10-27-clawhub-zh-video`),\ntranslated to English from their SKILL.md. Two were dropped as not video (bilibili-messager, video-editing). They skipped the §4 manual review (`legal` says so) and stay beta until\nsomeone does it; tagged `clawhub` + `chinese`, stars on them are ClawHub stars.\n\n## 1. What this stream is\n\nSkills for **photos, video, audio, motion and 3D** published by **independent creators**: individuals,\nsmall studios and open-source projects whose skill is not the official front door to their own paid\nmodel, API or tool. Typical sources are GitHub repos, skills.sh listings and ClawHub listings.\n\n- **In:** skills that make or edit media (render, cut, caption, grade, animate) and skills that directly\n  prepare it (screenplays, storyboards, model-specific prompting, style libraries).\n- **Out, routed elsewhere:** official vendor skills (HeyGen HyperFrames, Remotion, Higgsfield, fal,\n  Replicate, ElevenLabs, Google, Anthropic, PixiJS, Motion, Melies, inference.sh, Runway, BFL, LottieFiles,\n  Rive, Krea and every org in `data/streams/vendors/sources.json`) go to **Vendors**; varg's own skills go\n  to **Originals**; formats with no skill yet go to **Trends** as `wanted`; technique cards go to **Craft**.\n- Gray zone: a startup whose skill fronts its own hosted service (Gooseworks) may stay here while it is\n  small, with `hosted-service` in tags and a note in `legal`; promote it to Vendors once it is a vendor.\n\n## 2. Sources\n\n| Source | How we read it | What it gives |\n|---|---|---|\n| GitHub repo search | `gh api search/repositories` with media keywords, `pushed:>=since`, sorted by stars | stars, license, push date |\n| GitHub code search | `gh api search/code`, `filename:SKILL.md <keyword>` (10 requests/min) | repos that really ship a SKILL.md |\n| skills.sh | `https://skills.sh/api/search?q=<kw>&limit=50` (the API behind `npx skills find`) | all-time installs per skill |\n| ClawHub | `https://clawhub.ai/api/v1/search?q=<kw>&nonSuspiciousOnly=true` (openclaw/clawhub `docs/api.md`) | installs, downloads, stars, scan status |\n| Curated lists | [Awesome Short Drama Skills](https://github.com/UnderleveledBuilder/awesome-short-drama-skills) (blind A/B vs a no-skill control), [Awesome Claude Video Skills](https://github.com/zhuyansen/awesome-claude-video-skills) (16 skills rendered end to end), [LinklyAI best-skills](https://github.com/LinklyAI/best-skills) | evidence, not just popularity |\n| X | X MCP `twitter_search` (`\"claude skill\" video`, `seedance skill`, `min_faves:200`) | launches, demos, who is notable |\n\n**`candidates.json` shape** (written by the script, schema `varg-skills/community-candidates@1`):\n\n- `generatedAt`, `generator`, `params` (`since`, `limit`, `quick`, `sources`), `counts` (`raw`,\n  `mediaPool`, `enriched`, `written`, `excluded.{vendor, company, republisher, inCatalog, triaged,\n  notMedia, stale, forkOrArchived, noSkillFile}`).\n- `candidates[]`, sorted by `score`: `repo`, `url`, `score`, `reason` (one line: stars · installs ·\n  push date · license · SKILL.md status · matched keywords · flags), `stars`, `installs`, `clawhub`,\n  `license`, `pushedAt`, `createdAt`, `ownerType`, `description`, `skills[]` (`path`, `name`,\n  `hasDescription`), `skillCount`, `keywords`, `sources`, `flags`.\n- `triaged[]`: **human decisions** `{repo, decision: reject | hold | route-vendors | accepted, date,\n  reason}`. The script keeps this array across runs and never re-proposes a triaged repo. Edit it by hand.\n\nScore (0–110, a sorting aid, not a verdict): stars up to 40 (10·log10), skills.sh installs up to 25\n(6·log10), recency +15/+10/+4/−10 (≤30/90/180 days/older), license +8 (SPDX) / +2 (custom) / −8 (none),\nSKILL.md with description +10 / without +2 / none −20, media keywords up to +12, −12 per red-flag\n(npm install hook, binaries, agent hooks, generalist pack), −5 for over 1K stars in under 14 days.\n\n## 3. Owner & cadence\n\n- **Owner:** varg catalog team, community triage rotation (one person per week).\n- **Weekly (Mondays):** run discovery, triage the top 20 candidates, add or update up to 5 entries.\n- **Monthly:** refresh `stats` (stars, installs, `asOf`) and `updatedAt` on all entries; apply §9 rules.\n- **Same day:** act on any security report (GitHub issue, skills.sh audit flip, ClawHub quarantine).\n\n## 4. How to add an entry\n\n1. `bun run discover:community` (about 10 minutes, mostly GitHub rate limits; `--quick` takes about 3,\n   `--since 2026-09-01` narrows the window, `--limit 40`). Needs `gh auth status` to pass. It only reads;\n   nothing is installed or executed.\n2. Open `candidates.json`, start from the top. Skip anything vendor-like and send it to Vendors.\n   Record every decision you make in `triaged[]` (reason in one sentence) so it never comes back.\n3. Read the repo: README, every SKILL.md you will list, LICENSE (not just GitHub's label: NOASSERTION\n   often hides PolyForm Noncommercial or a brand-asset carve-out), last commit, open issues.\n4. **Security review (do all of it, by hand; scanners are bypassable):**\n   - [ ] List the tree: `gh api repos/<o>/<r>/git/trees/HEAD?recursive=1 --jq '.tree[].path'`.\n   - [ ] Read every file under the skill folder's `scripts/`, plus any installer (`install.sh`,\n     `bin/*.js`, `setup.py`), `package.json` scripts, `hooks/hooks.json`, `.claude/settings.json`.\n   - [ ] `curl … | sh`, `irm … | iex`, `wget … | bash`: reject when it runs in a script or hook, or when a\n     SKILL.md step pipes anything other than the official installer of a widely used tool (uv, bun,\n     Homebrew, a major vendor's own CLI) that also has a package-manager route. Those few are allowed as\n     an optional prerequisite, written in `legal`. Young or unknown services' installers are rejected.\n   - [ ] Obfuscation: base64 or reversed strings that decode to code or hosts, minified blobs in a\n     skill folder, `eval`/`new Function` on fetched or decoded text → reject.\n   - [ ] Credentials: reads of `~/.ssh`, `~/.aws`, `.netrc`, `.npmrc`, keychains, browser profiles,\n     whole-environment dumps sent anywhere → reject.\n   - [ ] Network: list every host in scripts and SKILL.md. Each must be the vendor API the skill names or\n     the repo's own release host. A default base URL that routes keys or media through a reseller → reject.\n   - [ ] Hooks: npm `preinstall/install/postinstall`, pip `setup.py` cmdclass, `.pth` files → reject.\n     Claude Code plugin hooks (PostToolUse etc.) are allowed only if they are local and you read them.\n   - [ ] Binaries in the skill folder (`.pyc`, `.so`, `.wasm`, `.zip`, `.docx`, `.skill` archives) → hold.\n   - [ ] Self-updating code (git reset to `main`, fetching instructions at run time) → note in `legal`\n     and tell users how to pin it; fetching from anywhere but its own repo → reject.\n   - [ ] Write `scanned: manual review <date>` plus anything notable at the start of `legal`.\n5. Collect facts with the GitHub API and skills.sh, never from memory: stars and license from\n   `gh api repos/<o>/<r>`, last commit from `gh api repos/<o>/<r>/commits?per_page=1`, installs from\n   `https://skills.sh/api/search?q=<skill>&owner=<lowercase-owner>`.\n6. Write the entry (§6, §7). Install commands are copied from the README or the skills.sh listing.\n7. `bun run validate community` (it also checks cross-stream slug and id uniqueness), then\n   `bun run dev` and look at the card and the detail page.\n8. Add the repo to `triaged[]` with `decision: \"accepted\"`, so the history is in one place.\n\n## 5. Quality gate\n\nAn entry goes **live** only if all of these hold; otherwise it is **beta** (young, under 20 stars with no\nother signal, single-commit history, license unknown) or it is not added.\n\n1. Independent publisher (see §1) and media work.\n2. A commit in the last 180 days; a SKILL.md with `name` and `description` frontmatter.\n3. Signal: ≥ 20 stars, or ≥ 1K installs, or a notable author, or independent evidence (blind A/B against a\n   no-skill control, an end-to-end render test, press).\n4. The §4 security review passed and is noted in `legal`.\n5. License known and noncommercial, copyleft or brand-asset terms spelled out in `legal`.\n6. Install command copied from the README or skills.sh.\n\n**Why the security bar is this strict (2026 incidents):**\n\n- **ClawHavoc on ClawHub (February 2026):** Koi Security found 341 malicious skills among 2,857 audited,\n  335 of them one campaign that used fake prerequisites to install the Atomic macOS Stealer. Later scans\n  counted over 800. At the time a one-week-old GitHub account could publish. → read prerequisites; never\n  run an installer you have not opened.\n- **Snyk ToxicSkills (February 2026):** of 3,984 skills from ClawHub and skills.sh, 13.4% had a critical\n  issue and 76 were confirmed malicious; techniques were password-protected zips, Base64 or Unicode\n  obfuscated exfiltration, disabled safety controls and **remote instruction fetching**, which changes a\n  skill's behavior after review. → reject obfuscation; flag anything that fetches instructions at run time.\n- **Trail of Bits scanner bypass (June 2026):** every scanner tested (ClawHub's VirusTotal Code Insight,\n  Cisco skill-scanner, and Gen, Socket and Snyk on skills.sh) was bypassed: 100,000 newlines past a\n  truncation limit, payloads in `.pyc` bytecode, instructions inside a DOCX archive, and prompt injection\n  posing as a \"compliance policy\" to calm LLM judges. → a green badge is not a review; binaries and\n  archives are held; read files to the end.\n- **Zenity Labs typosquats on skills.sh (August 2026):** clones of real skills (named after Paperclip and\n  Browser Use) reached 1.7M installs, behaved benignly, then turned into credential stealers (SSH keys,\n  cloud and Git tokens, `.env` files). → installs are not trust; check the publisher handle letter by\n  letter against the real project; re-review on every update (§9).\n\n## 6. Field guide\n\n- `id`: `<GitHub handle>/<skill name>` with GitHub's casing; for a multi-skill pack use the plugin or\n  repo name. `slug`: lowercase, globally unique; add the product or author when the name is generic\n  (`marketingskills-video`, `higgsfield-prompt-skill-oside`).\n- `name`: Title Case display name. `skillName`: the `name:` from SKILL.md; omit for packs with no entry skill.\n- `type`: always `skill`. `status`: `live` or `beta` per §5. `stream`: `community`.\n- `category`: the main outcome (`ads`, `cinematic`, `editing`…); craft rubrics (`camera`, `color`,\n  `prompting`, `tooling`) when the skill is a technique or a tool. Secondary rubrics go in `tags`.\n- `summary`: at most 120 characters, our words, what you get. `description`: 2–5 sentences from\n  SKILL.md and README: what it does, how, any independent evidence, honest caveats.\n- `useWhen`: from the SKILL.md triggers. `notFor`: the skill's own exclusions first.\n- `publisher`: `kind: \"community\"`, `verified: false`, `avatar: https://github.com/<handle>.png`,\n  `name` from the GitHub profile or the LICENSE copyright line.\n- `source`: `url` (tree URL of the skill folder or the repo), `repo`, `path` (skill folder; omit for packs\n  whose key files sit outside it), `license` (SPDX id from the LICENSE text, `\"unknown\"` if none).\n- `files`: up to 8 key files, relative to `source.path` when it is set, else to the repo root.\n- `install`: per agent, verbatim from README or skills.sh. Slash commands in sequence: separate with\n  `\\n`; shell steps: join with ` && `. Never invent flags.\n- `agents`: only what the README claims (`claude-code`, `codex`, `cursor`, `gemini-cli`, `openclaw`,\n  `claude-ai`, `mcp`). `models`: varg ids from https://varg.ai/models/llms.txt where they match, else\n  plain names (`suno`, `kokoro`); omit for model-agnostic guides.\n- `cost.note`: who bills (\"Uses your own fal key\", \"Free — local render\"). Never `typicalCredits` (that\n  is for varg-run skills) and no currency amounts. `runtime`: only when a source measured it.\n- `stats`: `stars` (GitHub), `installs` (skills.sh, summed over the repo's skills for a pack), `source`,\n  `asOf`. `updatedAt`: last commit date. `addedAt`: today. `featured`: at most 4 in the stream.\n- `preview.kind`: closest of the 18 kinds; vary `hue` between neighbors; `text` is short and English.\n- `legal`: starts with `scanned: manual review <date>`; then license traps, flags, rights notes.\n\n## 7. Example entry\n\n```json\n{\n  \"id\": \"louisedesadeleer/clipify\",\n  \"slug\": \"clipify\",\n  \"name\": \"Clipify\",\n  \"skillName\": \"clipify\",\n  \"type\": \"skill\",\n  \"status\": \"live\",\n  \"stream\": \"community\",\n  \"category\": \"editing\",\n  \"tags\": [\"shorts\", \"captions\", \"reframe\", \"highlights\", \"whisper\"],\n  \"summary\": \"Long videos into social clips: find funny lines or impact beats, cut, reframe to 9:16, burn word-by-word captions.\",\n  \"description\": \"Finds compelling moments in a video, either funny dialogue (from a Whisper transcript) or repeated impact actions such as axe chops or drumbeats (from audio transients), and cuts them as standalone clips. It can reformat 16:9 to 9:16 and burn opus-style word-by-word captions. Everything runs locally with ffmpeg, Whisper and Python.\",\n  \"useWhen\": [\"Make Shorts or Reels from a long video\", \"Cut an action montage on every hit or chop\"],\n  \"notFor\": [\"Generating new footage\"],\n  \"publisher\": { \"name\": \"Louise de Sadeleer\", \"handle\": \"louisedesadeleer\", \"kind\": \"community\",\n    \"url\": \"https://github.com/louisedesadeleer\", \"avatar\": \"https://github.com/louisedesadeleer.png\", \"verified\": false },\n  \"source\": { \"url\": \"https://github.com/louisedesadeleer/clipify\", \"repo\": \"louisedesadeleer/clipify\", \"license\": \"MIT\" },\n  \"install\": { \"claude-code\": \"git clone https://github.com/louisedesadeleer/clipify.git ~/.claude/skills/clipify\" },\n  \"agents\": [\"claude-code\"],\n  \"models\": [\"whisper\"],\n  \"requires\": [\"ffmpeg with libx264\", \"OpenAI Whisper (openai-whisper)\", \"Python 3 with NumPy\"],\n  \"cost\": { \"note\": \"Free — local\" },\n  \"files\": [\"SKILL.md\", \"scripts/analyze.py\", \"scripts/detect_transients.py\", \"scripts/build_ass.py\"],\n  \"stats\": { \"stars\": 611, \"installs\": 176, \"source\": \"GitHub + skills.sh\", \"asOf\": \"2026-10-26\" },\n  \"updatedAt\": \"2026-08-24\",\n  \"addedAt\": \"2026-10-26\",\n  \"preview\": { \"kind\": \"karaoke\", \"hue\": 55, \"text\": \"wait for it\" },\n  \"legal\": \"scanned: manual review 2026-10-26 — local scripts only. Clip only footage you have the rights to.\"\n}\n```\n\n## 8. Do not add\n\n- Anything that fails §4: pipe-to-shell from unofficial hosts, obfuscation, credential reads, undeclared\n  hosts or resellers, npm/pip install hooks, opaque binaries in the skill folder.\n- Republished or renamed copies of someone else's skill (the inference.sh \"superpowers\" clones that\n  skills.sh collapsed in March 2026, look-alike names of popular skills). List the original or nothing.\n- Face swap, voice cloning or likeness generation without an explicit consent step; sexual content.\n- Watermark, C2PA or provenance stripping; DRM bypass; downloaders built to rip platforms' content.\n- Skills built on reverse-engineered private web APIs (several Chinese packs label these \"danger\").\n- Generalist coding packs with one media skill: list that one skill (as with `marketingskills-video`).\n- Prompt dumps with no SKILL.md, apps that are not skills, and repos with no license that are also under\n  20 stars.\n- Official vendor repos: send them to the Vendors owner instead.\n\n## 9. Promotion and retirement\n\n**Promotion to a verified publisher** (`publisher.verified: true`, decided by the catalog lead):\nthe publisher has 2+ live entries or one entry with ≥ 1K stars or ≥ 5K installs; 90 days with no\nsecurity finding; a reachable maintainer (GitHub issues answered or a contact confirmed); identity checked\n(GitHub account age, matching X or website). A publisher that turns out to front its own paid service\nmoves to Vendors with its vendor flag.\n\n**Status changes:** `beta` → `live` once it meets §5 for two consecutive monthly checks. Any new\ncommit to a scripts/hook/installer file triggers a re-review of that diff before the next stats refresh.\n\n**Retirement** (set `status: \"draft\"` the same day, delete after 30 days unless fixed):\n\n- a security finding, a skills.sh or ClawHub scanner flip to high risk you confirm, or a takedown request;\n- archived repo, deleted repo, or license changed to something we cannot list;\n- no commit for 270 days, or its install command stops working;\n- superseded by a better entry for the same job (keep the better one, note the change in `triaged[]`).\n","trends":"# Trend Radar: replenishment playbook\n\n## 1. What this stream is\n\nThe trend radar records viral photo and video formats that agents should be able to make, before anyone has built the skill. Each one is a **wanted** entry (`type: \"wanted\"`, `status: \"wanted\"`, `agents: []`, no install) with a `trend` object: the source post, its creator, the date, engagement, a pipeline an agent could follow, a build wave and the evidence of demand.\n\nWanted entries do two jobs. They tell builders what to make next (the wave is the priority), and they tell agents and users which formats are coming. When a format ships as a skill, its wanted entry is deleted and the source post is credited in the new skill (section 8).\n\nThe initial pool (2026-10-26) holds 33 entries:\n\n- **15 from the founder's inspiration board**: its 16 formats minus the chat story, which varg already ships as `imessage-video`.\n- **8 one-click effect recipes** from consumer AI apps (Higgsfield, Kling, PixVerse, Pika, Gemini), rewritten generically where the original was tied to someone's IP.\n- **10 fresh finds from X**, from September to October 2026.\n\n## 2. Sources\n\n| Source | What to look for | How to read it |\n|---|---|---|\n| **X** (primary) | Agent-made videos (\"made with Claude Code\", HyperFrames, Remotion), model prompt drops (Seedance, Kling, Nano Banana, GPT Image), format names (\"lyric video\", \"exploded view\", \"zoom out\"), and replies asking \"how did you make this?\" | X MCP: `twitter_search` with `since:` and `min_faves:`, then `twitter_get_tweet` for metrics and replies. The query set is in `scripts/trend-radar.prompt.md`. |\n| **TikTok and Douyin** | Formats with high shares, reused sounds, \"template\" comments | [TikTok Creative Center](https://ads.tiktok.com/business/creativecenter/), [Douyin hot list](https://www.douyin.com/hot). Record what the page shows; `yt-dlp --dump-json <url>` returns views and likes for most public videos. Chinese-first formats often reach X a week later. |\n| **The founder's Notion board** | Anything newly saved to [the board](https://varga.notion.site/add-3979b7e6f38680059a4eec16551e523f) | Every board item becomes a wanted entry, or the weekly report says why it was skipped. If the clip's origin can't be found, cite the board (see the publisher rule in section 4). |\n| **App effect galleries** | Effects that stay in rotation for more than a week, or that several apps copy | [Higgsfield apps](https://higgsfield.ai/blog/introducing-higgsfield-apps), [Kling effects](https://kling.ai/topics/ai-video-effects), [PixVerse templates](https://play.google.com/store/apps/details?id=com.pixverseai.pixverse), [Pika](https://pika.art), Vidu and CapCut templates. An app page is not a source: find a creator's post of the effect with real engagement and cite that. |\n| **Roundups** | Families you may be missing | [Opus Pro's 2026 styles list](https://www.opus.pro/blog/viral-ai-video-styles-2026). Use it as a checklist, never as evidence. |\n\n## 3. Owner and cadence\n\n- **Owner:** the varg founder, who curates the inspiration board and approves waves.\n- **Operator:** whoever runs the Monday radar. This is usually an agent session in Claude Code with the X connector, reviewed by a person.\n- **Weekly (Mondays):**\n  1. Run `scripts/trend-radar.prompt.md` (about 30–45 minutes).\n  2. Review the drafts it writes.\n  3. Run `bun run validate trends`.\n  4. Open a PR.\n- **Fast track (same day):** a breakout that meets the thresholds in section 5 is added the day it is seen, with its wave set, and the owner is told.\n- **Every fourth Monday:** the staleness review in section 8.\n- **On a model change:** when a model listed in an entry's `models` is added, renamed or retired in the [varg catalog](https://varg.ai/models/llms.txt), update that entry's pipeline and cost note.\n\n## 4. How to add a wanted entry\n\n1. **Run the radar.** Open Claude Code at the repo root with the X connector enabled and run `claude \"$(cat scripts/trend-radar.prompt.md)\"`. The prompt:\n   - loads the X tools;\n   - searches the last seven days;\n   - fetches every candidate;\n   - deduplicates against every `data/streams/*/skills.json`;\n   - drafts entries;\n   - prints a report.\n2. **For a manual find, fetch the post yourself.** Use `twitter_get_tweet` or a browser. Record views, likes, bookmarks and the post date exactly as shown. Never cite a post you have not opened.\n3. **Apply the signals in section 5.** The candidate must pass at least one demand signal and the reproducibility test. Then set its wave.\n4. **Name the format generically.** Say what it is, not who made it or which brand it shows: \"Collectible Figure Packshot\", not an app's effect name. Use Title Case. The one exception is a platform UI that is the format's common name, such as \"Apple Music Lyric Video\"; its trade-dress note then goes in `legal` (section 6).\n5. **Write the entry** in `data/streams/trends/skills.json`:\n   - `slug`: `want-<format>`, kebab-case, unique across all streams.\n   - `id`: `<publisher handle in lowercase>/<slug>`.\n   - `type` and `status` are `\"wanted\"`, `stream` is `\"trends\"`, `agents` is `[]` and `addedAt` is today's date.\n   - `publisher` is the original creator of the format sample, not whoever reposted it:\n     - **X creator:** `{ \"name\", \"handle\", \"kind\": \"community\", \"url\": \"https://x.com/<handle>\", \"avatar\": \"https://unavatar.io/x/<handle>\" }`.\n     - **Company account showing its own effect** (an app maker): `\"kind\": \"vendor\"`.\n     - **YouTube creator:** `url` is the channel and `avatar` is `https://unavatar.io/youtube/<handle>`.\n     - **Origin not found** (a board-only clip): use the board as publisher (`\"kind\": \"varg\"`, handle `vargHQ`) and write \"origin not found\" in `trend.author`.\n   - `source.url` and `trend.sourceUrl` are the same post: the viral instance, which may be a repost. Credit the creator in `trend.author`.\n   - `category`: one of the closed set in `src/data/categories.ts`. Secondary rubrics go in `tags`.\n   - `summary`: what you get, in under 120 characters.\n   - `description`: two to five sentences covering what the format is, why it works, and how an agent would make it (models and libraries).\n   - `models`: varg catalog ids from [llms.txt](https://varg.ai/models/llms.txt), such as `seedance_2_5`, `kling_v3`, `nano_banana_2_1`, `gpt_image_2_5`, `lyria_3_5`, `whisper` and `render`.\n   - `cost`:\n     - Either omit it, or write `\"~N credits / run (estimate)\"` computed from the per-unit prices in `list_models`, and put the basis in `cost.note`.\n     - Credits only, never dollars.\n     - The radar is read-only: never call `estimate_cost`, or any varg tool that generates, renders, uploads or confirms.\n   - `preview`: the closest `kind` and a `hue` that differs from its neighbors. What `text` controls depends on the kind:\n     - `notes`: the note title.\n     - `karaoke`: the sung line.\n     - `kinetic`: up to four words.\n     - `film`: the camera-move label.\n     - `cards`: the small card label.\n     - `grid`: the prompt line.\n     - `avatar`: the spoken line.\n     - `collage`: the fill words.\n   - `trend`: `{ sourceUrl, author, date, views, likes, bookmarks, pipeline, wave, demand }`. Engagement figures are integers copied from the fetched post.\n   - `legal`: the rights notes from section 6. It is required whenever the source shows a brand, a real person, a character, a studio style or a living artist.\n   - `featured`: wave-1 entries only, at most four in the stream. To feature a new entry, unfeature another.\n6. **Validate.** Run `bun run validate trends` and fix every error. In this stream, treat the warning for a summary over 120 characters as an error.\n7. **Open a PR** titled `trends: radar YYYY-MM-DD (+added, -retired)`, with the radar report in the description. Do not merge your own radar PR.\n\n## 5. Signals and thresholds\n\n| Signal | How to measure it | Bar | Calibration from the board and pool |\n|---|---|---|---|\n| **Reach** | Views on the source post | ≥100K views, or ≥25K when the save ratio is ≥1.0 or replies ask for the method | Surreal edit 570K, ASCII collage 275K, Notes ad 201K |\n| **Save ratio** | Bookmarks ÷ likes | ≥0.5 means reference value; ≥1.0 means people intend to make it themselves | Notes ad 1.9, podcast edit 2.6, ASCII collage 0.72; entertainment reposts sit at 0.25–0.31 |\n| **Method demand** | Replies asking \"how did you make this?\" or for the prompt, and replies to comment-to-DM offers | ≥25 method replies, or ≥100 replies on a comment-to-DM post | Replies on comment-to-DM posts: Notes ad 474, previs ad 571, mannequin loop 346, renovation time-lapse 244 |\n| **Paid tools** | An app or service already sells the format | Any | texting.video, Gooseworks tiers, Higgsfield effects and apps, Artlist, Morflax |\n| **Reproducibility** | An agent can make it with varg models plus code (HyperFrames, Remotion, three.js, p5, ffmpeg) without manual work in desktop tools | A written pipeline of eight steps or fewer; Blender driven over MCP counts as code | Every pool entry names its pipeline |\n| **Cost per run** | Per-unit prices from `list_models` | Feeds the wave rules below | Notes ad ~6 credits, lyric video ~25, surreal edit ~4,000–6,000 |\n| **Freshness** | Post date | Weekly run: the last 7–14 days. Older posts only with a fresh repost or new evidence. | |\n\n**Add the entry when** it passes reproducibility and at least one of the following:\n\n- reach;\n- a save ratio of ≥1.0 with ≥25K views;\n- paid tools plus one other signal.\n\n**Fast-track the same day** when the format passes reproducibility and any of these holds:\n\n- ≥1M views within 72 hours;\n- ≥5K bookmarks within 48 hours;\n- two or more consumer apps ship it as a preset in the same week.\n\n**Waves:**\n\n- **Wave 1, build now.** All of the following:\n  - ≤ ~100 credits per run, or deterministic;\n  - reliable (code or a single model call);\n  - proven demand;\n  - legally clean;\n  - varg has an edge: song, timing and render on one balance, a deterministic HyperFrames render, or a voice or song as the paid hook.\n- **Wave 2, next.** Either a multi-model pipeline up to ~2,000 credits per run, or a cheap recipe that consumer apps already sell, where varg's edge is model choice, batching and agent access.\n- **Wave 3, later.** Over ~2,000 credits per run, a niche (<50K views and a save ratio <0.5), or a legally sensitive format.\n\nThe initial pool has 8 entries in wave 1, 17 in wave 2 and 8 in wave 3.\n\n## 6. Legal check\n\nAnswer each question before writing `legal`. If no legal note can make a format safe, do not add it (section 9).\n\n- **IP.** Does the format depend on characters, a franchise, a game's HUD, an animation studio's house style, a song or melody, or film stills? Write the generic technique instead. Parodies that reuse a melody get automated claims: \"Claude's Plan\" was pulled from Spotify and YouTube Music. References are pointers, never bundled stills.\n- **Likeness.**\n  - Real people need consent, and no celebrities.\n  - Minors appear only in made-for-kids content that follows COPPA and YouTube's rules.\n  - Voices and faces are cloned only with consent (Tennessee's ELVIS Act, the NO FAKES Act).\n  - Seedance rejects real-face references outside liveness-checked routes.\n- **Trade dress.** Apple UI (Notes, iMessage, Apple Music), device frames, real publishers' cards and verified badges, branded packaging and product marks. Ship original designs marked \"not affiliated\".\n- **Living artists.** Never write \"in the style of <name>\"; teach the technique. The ASCII-collage look drew \"ripoff\" replies aimed at a brand that used it.\n- **Deception.** Fake news footage, fake game announcements, fake product listings and fake endorsements. Require AI labels; EU AI Act Article 50 transparency duties apply from 2026-08-02.\n- **Licenses of anything a future skill would bundle.**\n  - AGPL code (for example the AMLL lyric player) is a no.\n  - GSAP's standard license restricts no-code visual builders, so flag it.\n  - p5.js (LGPL) is fine as a library.\n  - Remotion needs a company license above three employees.\n- **Names.** The entry's `name`, `summary` and `preview.text` never carry third-party brands, characters, studios or artists. The one exception is a platform UI that is the format's common name in `name` (for example, Apple Music Lyric Video), with the trade-dress note in `legal`. The source post and the `legal` note may name anything.\n\n## 7. Example entry\n\nA fresh radar find, written exactly as it sits in `skills.json`:\n\n```json\n{\n  \"id\": \"sulfurscales/want-mannequin-rep-counter-loop\",\n  \"slug\": \"want-mannequin-rep-counter-loop\",\n  \"name\": \"Faceless Mannequin Rep-Counter Loop\",\n  \"type\": \"wanted\",\n  \"status\": \"wanted\",\n  \"stream\": \"trends\",\n  \"category\": \"ads\",\n  \"tags\": [\"faceless\", \"loop\", \"fitness\", \"counter\", \"seedance\", \"series\"],\n  \"summary\": \"A faceless 3D mannequin throws a combo while an on-screen counter ticks with every rep, in a 6-second loop.\",\n  \"description\": \"A faceless gray mannequin in brand-colored gloves throws a jab, cross and hook on black while a minimal counter (\\\"REP 1/3 · 1 2 3\\\") ticks with each punch, so viewers count along and rewatch the 6-second loop. Sulfur traced the format behind faceless app pages and made it with one Seedance 2.5 prompt; the trick was declaring that the character has no face, which kept it identical across cuts. An agent swaps the gloves for brand colors and the move set for the app's own action (yoga, habits, product steps), generates the loop, overlays the counter in HTML synced to the action beats, and runs it as a numbered series.\",\n  \"publisher\": {\n    \"name\": \"Sulfur\",\n    \"handle\": \"sulfurscales\",\n    \"kind\": \"community\",\n    \"url\": \"https://x.com/sulfurscales\",\n    \"avatar\": \"https://unavatar.io/x/sulfurscales\"\n  },\n  \"source\": { \"url\": \"https://x.com/sulfurscales/status/2106719924001575108\" },\n  \"agents\": [],\n  \"models\": [\"seedance_2_5\", \"render\"],\n  \"cost\": {\n    \"typicalCredits\": \"~90–300 credits / loop (estimate)\",\n    \"note\": \"6 s of Seedance 2.5 at 480p (15–23 credits/s) or 720p (33–50), catalog of 2026-10-23.\"\n  },\n  \"preview\": { \"kind\": \"kinetic\", \"hue\": 230, \"text\": \"1 2 3 combo\" },\n  \"trend\": {\n    \"sourceUrl\": \"https://x.com/sulfurscales/status/2106719924001575108\",\n    \"author\": \"Sulfur (@sulfurscales)\",\n    \"date\": \"2026-10-04\",\n    \"views\": 75077,\n    \"likes\": 523,\n    \"bookmarks\": 364,\n    \"pipeline\": \"Brand color + move set → faceless mannequin prompt (Seedance 2.5) → beat-timed counter overlay in HTML → seamless loop → numbered series\",\n    \"wave\": 2,\n    \"demand\": \"346 replies to a reply-to-get-the-prompt-guide call (comment-to-DM); 0.70 bookmark/like; the author ties it to faceless app pages that are growing now.\"\n  },\n  \"legal\": \"Fitness and health claims in ads must be substantiated. A faceless mannequin avoids likeness issues; keep glove and apparel marks generic.\",\n  \"addedAt\": \"2026-10-26\"\n}\n```\n\n## 8. Graduation: wanted → draft → live\n\nA wanted entry becomes a skill in four steps:\n\n1. **Claim.** A builder claims the format by adding the tag `claimed:<github-handle>` to the wanted entry (its status stays `wanted`) and opening a draft PR. Only one claim at a time; a claim lapses after four weeks without a commit.\n2. **Draft.** The skill lands with `status: \"draft\"`:\n   - in `data/streams/originals/skills.json` if varg builds it;\n   - in `data/streams/community/skills.json` if a community author builds it, or if an existing community skill already covers the format and is claimed for it.\n\n   The draft links back in three ways:\n   - the tag `from-trend:<want-slug>`;\n   - a ref `{ \"role\": \"link\", \"label\": \"Trend source\", \"kind\": \"link\", \"url\": \"<trend.sourceUrl>\", \"license\": \"link-only\" }`;\n   - a sentence in its description crediting the source post's creator.\n3. **Live.** The skill passes its stream's quality gate and `docs/SKILL-STANDARD.md`, then moves to `beta` and then `live`. In the PR that makes it installable (`beta`), delete the wanted entry. This is the catalog-wide rule in `docs/PLAYBOOK.md`.\n4. **Already built.** If the radar finds a format that an existing skill covers, it does not add a wanted entry. It notes the skill in the report and, if that skill is missing from the catalog, tells the Originals owner.\n\n**Graduation example: chat stories.** The founder's board opens with an iOS-style iMessage group-chat video, which is varg's own ad. varg already ships `imessage-video` (deterministic iMessage conversation videos, from `rnd/imessage-ad`), so the format never became a wanted entry. It belongs to Originals with the board credited, and it is the model for the rest of its native-UI family: the Notes-app ad and the lyric video are next.\n\n**Retiring stale trends:**\n\n- **Review.** Every fourth Monday the radar lists wanted entries older than six weeks and searches each format since its `addedAt`. An entry with no new post that meets section 5 and no claim is marked for retirement.\n- **Delete.** Remove an entry after 12 weeks with no new qualifying evidence and no claim. Wanted entries have no install, so nothing breaks; record the deletion in the PR.\n- **Seasonal formats** (Halloween, a World Cup, New Year) retire two weeks after the season ends.\n- **Evergreen formats** (Notes ads, lyric screens, bullet time) may be refreshed instead of retired: replace the `trend` object with a newer qualifying post and keep the slug.\n\n## 9. Do not add\n\n- **Formats a skill already covers in any stream.** Search slugs, names and tags first; chat stories, for example, are covered by `imessage-video`.\n- **Weak sources:**\n  - posts you did not fetch, and screenshots of posts;\n  - aggregator and listicle threads (\"20 repos that…\");\n  - giveaways and crypto promotion;\n  - model-versus-model comparisons;\n  - tool launch announcements that are not a format.\n- **Real-person and sensitive content:**\n  - celebrity or real-person likeness recipes (prompt drops that name actors);\n  - deepfakes;\n  - \"hug a late relative\" generators without the family's consent;\n  - sexualized content;\n  - anything involving minors outside made-for-kids content.\n- **Formats whose core is someone else's IP:** a studio's characters, a franchise, a specific copyrighted song or melody, a living artist's signature style. Write the generic technique instead, or skip it.\n- **Farmed engagement:** views with almost no replies or bookmarks, or \"comment X to get it\" posts that show no output.\n- **Formats an agent cannot reproduce:** manual keyframing in desktop editors, models that exist only inside one consumer app, or physical shoots.\n- **Bad cost data:** dollar prices in `cost`, or costs not derived from the varg catalog.\n","craft":"# Craft stream — operator playbook\n\nHow to keep `data/streams/craft/` alive: what the stream is, where its material comes from, how to add a technique card or a ref, what must be true before anything ships, and what never goes in.\n\nFiles in this folder:\n\n| File | Contract (`src/data/types.ts`) | What it holds |\n|---|---|---|\n| `stream.json` | `StreamMeta` | Stream identity, owner, cadence, sources, quality gate |\n| `techniques.json` | `TechniqueCard[]` | 274 original technique cards (89 on 2026-10-26, 185 from the six-site pass on 2026-10-27) |\n| `skills.json` | `SkillEntry[]` | 16 craft entries: 8 skills, 8 ref packs; all `stream: \"craft\"`, publisher varg |\n| `REPLENISH.md` | — | This playbook |\n\n## 1. What this stream is\n\nThe craft stream turns cinematic reference libraries into three kinds of things an agent can use:\n\n- **Technique cards.** One card is one technique, written by varg in its own words. Each card has a definition, its narrative use, the common wrong substitute, and a model-neutral prompt clause with a `[subject]` slot. It also has adapters with the same clause in the documented syntax of Veo, Kling, Seedance, Hailuo, Luma and Runway, aliases (the names other tools use), and human deep links.\n- **Craft skills.** These are instructions plus tooling that use the cards. The flagship is `craft-cinematic-grammar`: it compiles a shot spec into each model's prompt syntax. Around it sit color looks, editing, Paper Shaders, the reference finder, model adapters, reference breakdown and shot QA.\n- **Ref packs.** These are role-tagged references: technique bundles, LUTs, shader presets and link refs.\n\nThe rule that shapes everything: **pointers, not payloads.**\n\n- We take vocabulary and taxonomy from the reference sites. Technique names are free to use.\n- We write every sentence ourselves.\n- We send humans to the sites through deep links.\n- We never copy a film still, a clip or another site's card text.\n- Finishing assets ship only under clean licenses: varg originals, Apache-2.0, BSD-3-Clause.\n\nCoverage on 2026-10-26:\n\n| Group | Cards | Ids |\n|---|---|---|\n| shot-size | 8 | extreme-wide-shot, wide-shot, full-shot, medium-shot, medium-close-up, close-up, extreme-close-up, insert-shot |\n| angle | 9 | eye-level, low-angle, high-angle, overhead-shot, worms-eye, dutch-angle, over-the-shoulder, pov-shot, aerial-view |\n| lens | 10 | wide-angle-lens, telephoto-compression, macro-lens, fisheye-lens, anamorphic-lens, shallow-depth-of-field, deep-focus, rack-focus, tilt-shift, split-diopter |\n| camera-move | 22 | static-shot, pan, tilt, dolly-in, dolly-out, truck, pedestal, zoom-in, crash-zoom, dolly-zoom, crane-up, orbit, arc-shot, tracking-shot, handheld, whip-pan, drone-flyover, fpv-drone, bullet-time, snorricam, push-through, turntable |\n| lighting | 11 | golden-hour, blue-hour, low-key, high-key, rembrandt-lighting, hard-side-light, rim-light, silhouette, window-light, practical-lighting, volumetric-light |\n| color | 9 | teal-and-orange, bleach-bypass, day-for-night, black-and-white, print-film-emulation, film-grain, halation, limited-palette, faded-film |\n| editing | 11 | hard-cut, match-cut, jump-cut, smash-cut, shot-reverse-shot, cross-dissolve, whip-transition, j-l-cut, speed-ramp, slow-motion, one-take |\n| composition | 9 | rule-of-thirds, center-symmetry, leading-lines, frame-within-frame, negative-space, foreground-layering, two-shot, lead-room, widescreen-letterbox |\n\nPlaceholders allowed in `clause` and `adapters`:\n\n- `[subject]` is required in every clause and every adapter.\n- `[subject B]` is the second person in two-person cards.\n- `[scene]` is an optional setting.\n\nThe compiler substitutes these placeholders. Hailuo also uses square brackets for camera commands, so any other bracket in a Hailuo adapter must be one of the 15 commands.\n\n## 2. Sources\n\nEach source has a strict line between what we may take and what we may not. When in doubt, take less.\n\n| Source | May take | May not take |\n|---|---|---|\n| [shot.cafe](https://shot.cafe) (24,321 stills, tags for shot type, light, day/night, int/ext) | Its attribute vocabulary as a shot-spec seed. Human links to single-tag pages `https://shot.cafe/tag/<tag>` (spaces as `%20`) and aspect pages `https://shot.cafe/aspect/<ratio>` | Any agent-side request. `robots.txt` disallows ClaudeBot and all comma-joined tag URLs. Stills; compiling its tags into a database (its terms bar scrapers and commercial use) |\n| [film-grab](https://film-grab.com) (~4,000 films; director, DP, camera, stock, aspect ratio) | Human search links `https://film-grab.com/?s=<query>` for lens, stock and process words | Stills, crawling, any automation. The operator rejects AI and bots. \"Fair dealing\" covers non-commercial research only, not us |\n| [eyecannndy](https://eyecannndy.com) (clip library organized by technique) | Technique names. Human links `https://eyecannndy.com/technique/<slug>`, using only slugs that exist (see §4.7) | Clips, descriptions, fetching (Cloudflare answers automation with 403) |\n| [Melies cinematic techniques](https://melies.co/cinematic-techniques) (424 techniques, 13 categories) | The shape of a card (definition → narrative use → wrong substitute → template), category names and technique names | Any of its text, templates, example prompts or stills. Its terms bar \"unauthorized automation\", and the EU database right protects the catalog (French operator) |\n| [aicameramovements](https://aicameramovements.com) (46 moves, 7 groups) | The clause pattern: movement + speed + framing + ending frame | Its prompt wording and sample videos. Owner and license are unknown, and the site was unreachable from our network on 2026-10-26 |\n| [GrokFilm](https://grokfilm.app) (300 entries) | The taxonomy: 8 disciplines (camera, lighting, composition, editing, sound, story, effects, genre), 3 difficulty tiers, mood tags | Its definitions (no license) and its prompts (one boilerplate template, not usable) |\n| ShotDeck, Film Vibes | Site-level links for subscribers in `craft-reference-finder`. Neither has a verified public search URL: ShotDeck search is a login-only hash route, and Film Vibes searches in-app | Any image. Both restrict use to reference, internal or non-commercial purposes |\n| [Paper Shaders](https://shaders.paper.design) (30 WebGL shaders, `llms.txt` lists every prop) | Code and presets under Apache-2.0 since 2026-06-27, including commercial video use without visible attribution. Keep `LICENSE` and `NOTICE` when vendoring; pin an exact `0.0.x` version | Versions published 2025-08-22 → 2026-06-27 until their `LICENSE` is checked, because they may be PolyForm Shield |\n| Model prompting guides ([Google Veo / Gemini Omni](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/video/video-gen-prompt-guide), [Veo 3.1 blog](https://cloud.google.com/blog/products/ai-machine-learning/ultimate-prompting-guide-for-veo-3-1), [Kling camera](https://kling.ai/blog/kling-ai-camera-control-video-guide), [Kling multi-shot](https://kling.ai/blog/kling-video-3-multi-shot-guide), [Seedance 2.5](https://docs.volcengine.com/docs/ark/seedance-2-5-prompt-guide?lang=zh), [Seedance 2.0](https://docs.volcengine.com/docs/ark/seedance-2-0-prompt-guide?lang=zh), [MiniMax camera commands](https://platform.minimax.io/docs/api-reference/video-generation-t2v), [Luma camera prompts](https://lumalabs.ai/news/ai-camera-movement-prompts), [Luma API](https://docs.lumalabs.ai/docs/video-generation), [Runway camera prompts](https://runway.com/resources/ai-camera-prompts), [Runway Academy](https://academy.runwayml.com/guides/prompting-guide), [Wan](https://www.alibabacloud.com/help/en/model-studio/text-to-video-prompt)) | Syntax rules, element order, bracket meanings, documented terms (Hailuo's 15 commands, Luma motion names and concept keys, Seedance camera terms), and short documented phrases used *as syntax* (\"Continuous, seamless shot\", \"Generate single shot.\") | Their example prompts as card text. Adapters are our sentences written in their syntax |\n| [varg model catalog](https://varg.ai/models/llms.txt) and `varg.ai/models/<id>.md` | Model ids, routes, prompt-related provider options (rewriters, durations, aspect ratios) | Prices. Prices come only from `estimate_cost` and `list_models`, in credits |\n| [Higgsfield camera presets](https://higgsfield.ai/camera-controls), [Cinema Studio 4.0](https://higgsfield.ai/blog/cinema-studio-4-0) | Preset names as **aliases** (Crash Zoom In, Lazy Susan, Snorricam, Contre-jour …) | Presenting them as varg features. Models outside Higgsfield do not understand these names |\n\n## 3. Owner and cadence\n\n- **Owner:** the varg craft editor. The founder holds the role until an editor is assigned. One person merges; anyone can propose.\n- **Ingestion:** manual. Cards are written, not scraped.\n- **Cadence:** monthly card review, plus a run on every model change in the varg catalog.\n  - **Monthly review (first working day):**\n    1. Read the compiler's unmapped-alias log and user requests, and add aliases or cards.\n    2. Re-check each URL pattern once (§4.7).\n    3. Skim the provider guides for dated changes.\n    4. Retire weak cards.\n    5. Pick the next backlog group (below).\n  - **Catalog change (same day):** follow §8. A retired model must fail closed the day it disappears.\n- **Backlog for the next reviews:**\n  - Atmosphere and weather (fog, rain, snow, haze as weather). These go in the `lighting` group.\n  - Optical effects (lens flare, double exposure, step printing, slit-scan, split screen). These go in `lens` or `editing`.\n  - Sound grammar (diegetic sound, room tone, sound bridge). These go in `editing`; Veo, Seedance and Kling now generate audio.\n  - Genre looks.\n  - Higgsfield presets that have no card yet: Buckle Up, Car Grip, Road Rush, Double Dolly, Eating Zoom, Flying Cam Transition, Hero Cam, Hyperlapse, Timelapse (Glam / Human / Landscape), Low Shutter, Incline, 3D Rotation, Glam, BTS.\n\n## 4. How to add a technique card\n\n1. **Pick the technique.**\n   - Search `techniques.json` for its name *and* its aliases (case-insensitive). If it exists, add an alias instead of a card.\n   - Pick one `group`: `shot-size | angle | lens | camera-move | lighting | color | editing | composition`.\n   - Choose a stable kebab-case `id`. Card ids have no `craft-` prefix; that prefix is for entry slugs.\n2. **Research, then write in your own words.**\n   - Read at least two sources, close them, and write `definition` (what it is), `use` (when a director reaches for it) and `misuse` (the usual wrong substitute and why it reads differently) from your own understanding.\n   - Do not paste and paraphrase.\n   - Self-check: no run of six or more consecutive words may match a source page.\n   - No film titles, no living directors, DPs or actors, no characters.\n3. **Add aliases.** Include crew shorthand (EWS, MCU, OTS) and the names other tools use: Higgsfield presets, Hailuo bracket commands written with brackets (`[Push in]`), Luma motion names and concept keys (`dolly_zoom`), Kling shot labels, and Seedance terms (推, 环绕, 希区柯克变焦). An alias may belong to one card only.\n4. **Write the clause.** It is model-neutral, with `[subject]`.\n   - For a camera move, state **one move, its direction, its speed, what it moves relative to, and the frame it ends on**: `{Move} {direction}: the camera {speed verb} {direction} relative to [subject], {framing change}, ending on {final frame}.`\n   - For every other group, state the placement or the look plus a static camera, so the card does not smuggle in a move.\n   - Prefer qualitative lens words with optional millimeters. Most guides do not document focal lengths; Runway's does.\n5. **Write the six adapters from the official guides.** Each adapter is the same clause in that model's documented syntax:\n\n   | Key | Covers | Order | Camera wording | Brackets, labels and time | Negatives |\n   |---|---|---|---|---|---|\n   | `veo` | Veo 3.1 (varg routes it through fal), Gemini Omni Flash 1.1 | Camera first: cinematography → subject → action → context → style | Words; zoom ≠ dolly; \"Vertigo effect (dolly zoom)\" | Multi-shot as `[00:00-00:03] … [00:03-00:06] …`; clips are 4/6/8 s on varg's Veo routes and 3–10 s on Omni. Sound as `SFX:` and `Ambient noise:` lines; dialogue in quotes | Never \"no\" or \"don't\". varg's Veo routes expose no negative field, so describe what you want |\n   | `kling` | Kling 3.0 (`kling_v3`, `kling_v3_standard`) | Subject → action → scene → camera → light and mood | One main move; Slow / Steady / Quick; pattern \"Camera slowly pushes in on [subject] to …\" | `[Shot 1: Wide shot] … [Shot 2: Close-up shot] …`, up to 6 shots, 3–15 s | Not documented. Short guards such as \"no sudden motion\" appear in Kling's own patterns |\n   | `seedance` | Seedance 2.5 (`seedance_2_5`); 2.0 rules noted | Subject → action → scene → light and color → camera → style → quality → constraints; inside a shot, camera term first | Documented terms only: 推 拉 摇 移 跟 环绕 俯冲 后拉 上摇 手持晃动; 一镜到底 希区柯克变焦 航拍视角 FPV 子弹时间 手持镜头 回弹变速; shot sizes 特写 近景 中景 全景 大全景; 固定镜头. A niche term needs the term plus a plain description (`移焦，画面焦点…`) | `镜头1` / `镜头切至`. **2.5 only:** `0-3秒`, `[1s-4s]`, `第3s 快速向右横移转场`. **2.0:** shot labels without per-shot seconds | Constraint sentences (\"keep one camera move\", 不要字幕). Sound in `<…>` |\n   | `hailuo` | Hailuo 2.3 / 02 / T2V-01-Director (bracket syntax) | The command right after the action it applies to | Only the 15 commands: `[Truck left/right] [Pan left/right] [Push in] [Pull out] [Pedestal up/down] [Tilt up/down] [Zoom in/out] [Shake] [Tracking shot] [Static shot]` | `[Pan left,Pedestal up]` runs simultaneously (≤ 3, no spaces); separate brackets run in sequence. Compose moves without a command: orbit `[Truck left,Pan right]`, crane `[Pedestal up,Tilt down]`, dolly zoom `[Push in,Zoom out]` | No negative parameter; set `prompt_optimizer: false` for exact moves |\n   | `luma` | Luma Ray (outside the varg catalog) | Camera movement first → scene → action → details | Motion names (Push In, Orbit Right, Crane Up …) with slowly / smoothly / gradually | No multi-shot: separate clips or start and end keyframes. Dolly zoom also as `concepts: [{\"key\": \"dolly_zoom\"}]` | Positive only. Avoid \"vibrant\", \"whimsical\", \"hyper-realistic\", \"cinematic\", \"4k\" |\n   | `runway` | Runway Gen-4.5 (outside the varg catalog) | Shot size → angle → move with direction and speed → subject and action → lens → light → what it reveals. Image-to-video: \"The camera … as the subject …\" | Orbit = full circle, arc = partial; mm lenses allowed | `[00:00] … [00:03] …`; add \"Continuous, seamless shot\" to prevent cuts | Positive only (\"The locked-off camera remains perfectly still.\"); no \"cinematic\" or \"4k\" |\n\n   varg's MiniMax models are the **H3** family (`minimax_h3`, `minimax_h3_max`, `minimax_h3_max_turbo`). H3's official examples use plain-language camera direction, so the compiler sends those routes Kling-style prose, not brackets. Turn their rewriter off with `provider_options.fal.prompt_expansion_mode: \"disabled\"`. `minimax_h3_max_camera_controls` is a separate path: it takes keyframed azimuth, elevation and distance on one image.\n6. **Add deep links** (`links`), 0–3 per card, human-only, from the verified patterns in §4.7. Label them `site — what`, e.g. `eyecannndy — dolly zoom`, `shot.cafe — tag: low-angle`, `film-grab — search: anamorphic`. Never link an image file, and never embed one.\n7. **Verify a URL pattern without crawling.**\n   - First choice: the Wayback index, e.g. `https://web.archive.org/cdx/search/cdx?url=eyecannndy.com/technique/*&fl=original&collapse=urlkey`. It lists real slugs and tags without touching the site.\n   - Allowed on top of that: one `curl -I` per pattern, and only where `robots.txt` allows it. Never request shot.cafe pages: it disallows ClaudeBot, so verify through the index only.\n   - Patterns verified 2026-10-26 (Melies and GrokFilm added 2026-10-27; aicameramovements stays unlinked until it is reachable and its owner is known):\n\n     | Site | Pattern | How it was verified |\n     |---|---|---|\n     | shot.cafe | `/tag/<tag>`, `/aspect/<ratio>` | Wayback index only |\n     | film-grab | `/?s=<query>` | HEAD request returned 200 |\n     | eyecannndy | `/technique/<slug>` | Wayback index; HEAD returns 403 (Cloudflare) |\n     | Melies | `/cinematic-techniques/<category>/<slug>` | Wayback index (441 URLs, 2026-10-27); links only, never its text |\n     | GrokFilm | `/#t/<slug>` (hash route) | Slugs from the site's own catalog file, read once on 2026-10-27 |\n8. **Wire the card into entries.** Add the id to `techniques` in:\n   - `craft-cinematic-grammar` (always).\n   - The group's ref pack.\n   - `craft-reference-finder` and `craft-reference-breakdown` (always).\n   - `craft-shot-qa` for camera-move, shot-size and angle cards.\n   - Color cards also go into `craft-color-looks`, editing cards into `craft-editing-transitions`.\n9. **Validate:** run `bun run validate`. If `scripts/validate.ts` has not landed yet, run at least:\n\n   ```bash\n   bun -e 'const t=await Bun.file(\"data/streams/craft/techniques.json\").json(); const s=await Bun.file(\"data/streams/craft/skills.json\").json(); const ids=new Set(t.map(c=>c.id)); if(ids.size!==t.length) throw new Error(\"duplicate card id\"); if(new Set(s.map(e=>e.slug)).size!==s.length) throw new Error(\"duplicate slug\"); for (const e of s) for (const id of e.techniques ?? []) if(!ids.has(id)) throw new Error(`${e.slug}: unknown technique ${id}`); console.log(\"ok\", t.length, \"cards,\", s.length, \"entries\")'\n   ```\n\n10. **Optional exemplar.** A varg-generated example clip needs `estimate_cost` approval first and the cheapest route that shows the move (480p draft). It is hosted on `s3.varg.ai` with license `original` and an AI-generated label (EU AI Act Art. 50). Never commit media to the repo.\n\n### Add a LUT ref\n\n1. Get the LUT from a clean source:\n   - **Bake it** from a documented ffmpeg chain, e.g. `ffmpeg -f lavfi -i haldclutsrc=8 -vf \"curves=preset=cross_process,eq=saturation=0.9\" -frames:v 1 look.png`, then convert the Hald CLUT to `.cube`. This gives license `original`.\n   - **Or take it** from a source whose license explicitly allows redistribution, and record its SPDX id.\n2. Test it on three clips from different models at 50%, 70% and 100%:\n\n   ```\n   [0:v]split[a][b];[b]lut3d=file=look.cube:interp=tetrahedral[g];[g][a]blend=all_mode=normal:all_opacity=0.6,noise=alls=8:allf=t+u\n   ```\n\n   Write the strength that worked into `note`.\n3. Hash the file (sha256), upload it content-addressed to `s3.varg.ai`, and add `{ \"role\": \"lut\", \"kind\": \"lut\", \"label\", \"url\", \"license\", \"note\" }` to `craft-lut-pack` (and `craft-color-looks` if it changes the recipe).\n4. Camera-vendor LUTs (ARRI, Fujifilm, Sony …) and NLE built-ins stay `link-only`, linked to the vendor page and never copied.\n\n### Add a shader preset\n\n1. Pick a shader from [`shaders.paper.design/llms.txt`](https://shaders.paper.design/llms.txt) and use only documented props within their documented ranges.\n2. Make it deterministic: `speed: 0`, with `frame = (currentFrame / fps) * 1000 * k`. Render the same frame twice; the two outputs must hash identically.\n3. Map brand colors to `colors`, `colorBack` or `colorFront`.\n4. Add `{ \"role\": \"shader\", \"kind\": \"shader\", \"label\", \"url\": \"https://shaders.paper.design/<shader>\", \"license\": \"Apache-2.0\", \"note\": \"<Component> — prop values\" }` to `craft-paper-shaders`, and the preset JSON path to its `files`.\n\n### Add a link ref\n\n`{ \"role\": \"link\", \"kind\": \"link\", \"label\", \"url\", \"license\": \"link-only\", \"note\": \"<site rules in one line>\" }`. Use only verified patterns (step 7), and record in `note` whether the site blocks bots or limits use to non-commercial reference.\n\n## 5. Quality gate\n\nA card or entry ships only when every line holds:\n\n- [ ] **Original text.** Definition, use, misuse and clause are ours. No run of six or more words copied from Melies, aicameramovements, GrokFilm, eyecannndy, StudioBinder, Kapwing or a provider guide's example prompts.\n- [ ] **One move per clause.** Camera clauses name one move, its direction, its speed, what it moves relative to, and **the frame it ends on**.\n- [ ] **Documented syntax per adapter.** Camera first for Veo, Luma and Runway; subject first for Kling and Seedance. Hailuo uses only the 15 commands, at most 3 per bracket. Veo timestamps fit the clip (≤ 8 s). Seedance timestamps appear only for 2.5. Chinese text appears only in `seedance` adapters and aliases.\n- [ ] **Positive phrasing** in `veo`, `luma` and `runway` adapters: no \"no / not / without / never / avoid\". No \"cinematic\" or \"4k\" filler for Luma and Runway.\n- [ ] **Aliases.** Other tools' vocabulary is present, and no alias collides with another card's alias, id or name.\n- [ ] **Links.** Human deep links only, from verified patterns. No image embedded, fetched or hotlinked; no film stills anywhere.\n- [ ] **Licenses.** Every `RefItem` has a `license`: `original`, `link-only`, `user-supplied` or an SPDX id.\n- [ ] **Names.** No living directors, DPs, actors or characters, and no film titles in cards or listings.\n- [ ] **Entries.** Slugs start with `craft-`. The publisher block is varg's. `summary` ≤ 120 chars. `models` are live varg catalog ids. `legal` starts with \"Pointers only — no film stills or clips bundled\".\n- [ ] **Validation.** `bun run validate` passes.\n\n## 6. Legal rules — can it go in a skill?\n\nResearch, not legal advice. No court has ruled yet on stills used as AI style or composition references.\n\n| What | In a skill or pack? | Why |\n|---|---|---|\n| Film frames, clips, trailers, posters | **No** | Frames are part of the film's copyright; commercial same-purpose use fails fair use (Warhol 2023, TVEyes 2018); every gallery's terms forbid it |\n| Card text from Melies, GrokFilm, aicameramovements | **No.** Write our own; technique names are free | Protected expression; EU database right (Melies) |\n| Human links to shot.cafe, film-grab, eyecannndy | **Yes**, never crawled by the agent | Search and indexing function; robots and terms forbid automation |\n| User-supplied references | **Yes**, in-session, with a rights attestation, never stored | Providers require input rights; Runway may train on inputs |\n| varg-generated exemplars | **Yes** | Likely uncopyrightable without a human author (Thaler, cert denied 2026-03-02), so protect them by contract |\n| Public domain (US films published before 1931), CC BY (Blender Studio) | **Yes**, with a license per file | Public Domain Day 2026; Blender Studio terms |\n| Pexels or Unsplash stock as a pack | **No** | Their licenses ban building a \"similar or competing service\" |\n| OFL fonts, Paper Shaders, licensed LUTs and SFX | **Yes**; keep LICENSE and NOTICE | Apache-2.0, OFL, BSD-3-Clause |\n| Names of actors, characters, living artists or DPs in listings | **No** | Higgsfield blocks such generations; likeness laws (ELVIS Act, NO FAKES bill) |\n\nAlso note:\n\n- varg's own skills are not user content, so DMCA §512 does not shelter them. If varg bundles a still in its own skill, varg is the infringer.\n- Marketing a category like \"film-still packs\" could read as inducement. Do not create one.\n\n## 7. Examples\n\n### Example card (`techniques.json`)\n\n```json\n{\n  \"id\": \"dolly-in\",\n  \"group\": \"camera-move\",\n  \"name\": \"Dolly in\",\n  \"aliases\": [\"push in\", \"push-in\", \"Dolly In\", \"Super Dolly In\", \"Push In\", \"[Push in]\", \"track in\", \"推\"],\n  \"definition\": \"The whole camera travels forward toward the subject; the background shifts with parallax as the frame tightens.\",\n  \"use\": \"Draws the audience into a realization, raises intensity during a line, gives a product reveal a sense of approach.\",\n  \"misuse\": \"A zoom-in magnifies without moving, so depth stays flat and the shot feels mechanical rather than intimate.\",\n  \"clause\": \"Dolly in: the camera travels slowly and steadily forward toward [subject], from a medium shot to a close-up over the whole clip, and stops on [subject]'s face centered in frame.\",\n  \"adapters\": {\n    \"veo\": \"Slow dolly in, medium shot to close-up: the camera physically moves toward [subject], who stays still at frame center as the background shifts with parallax; the move settles on a held close-up of the face.\",\n    \"kling\": \"[subject] stands still in [scene]. Camera slowly pushes in on [subject] to emphasize the expression, steady, ending on a close-up of the face.\",\n    \"seedance\": \"镜头1：缓慢推镜头 — the camera moves forward toward [subject] from a medium shot to a close-up and stops on the face, centered; one camera move only.\",\n    \"hailuo\": \"[subject] stands still in [scene] [Push in], holding on a close-up of the face [Static shot].\",\n    \"luma\": \"Push in, slowly and steadily: the camera moves toward [subject] from a medium shot to a close-up and comes to rest on the face, centered.\",\n    \"runway\": \"Medium shot, eye level, slow dolly push-in over 5 seconds toward [subject]; the move ends on a close-up of the face, centered.\"\n  },\n  \"links\": [{ \"label\": \"eyecannndy — dolly shot\", \"url\": \"https://eyecannndy.com/technique/dolly-shot\" }]\n}\n```\n\n### Example ref pack (`skills.json`)\n\n```json\n{\n  \"id\": \"vargHQ/craft-lighting-setups\",\n  \"slug\": \"craft-lighting-setups\",\n  \"name\": \"Lighting Setups\",\n  \"type\": \"ref-pack\",\n  \"status\": \"beta\",\n  \"stream\": \"craft\",\n  \"category\": \"lighting\",\n  \"tags\": [\"lighting\", \"golden-hour\", \"low-key\", \"rim-light\", \"practicals\", \"volumetric\", \"portrait\"],\n  \"summary\": \"11 lighting setups — golden hour to Rembrandt — each with a named source, direction and quality.\",\n  \"description\": \"Eleven lighting cards that always name a source and a direction instead of a mood word: golden hour, blue hour, low-key, high-key, Rembrandt, hard side light, rim light, silhouette, soft window light, practicals and volumetric light. Aliases include Higgsfield Cinema Studio presets (Silhouette, Contre-jour, Practicals, Window) and the terms Google, Kling and Wan document ('rembrandt lighting', 'subtle god rays', 'rim light'). Light belongs in the generation prompt; pair with craft-color-looks for the grade.\",\n  \"useWhen\": [\"Setting the mood of a shot through light\", \"A generated face looks flat or the subject merges with the background\"],\n  \"notFor\": [\"Relighting an existing clip (use a relight model)\", \"Color grading after generation (craft-color-looks)\"],\n  \"publisher\": { \"name\": \"varg\", \"handle\": \"vargHQ\", \"kind\": \"varg\", \"verified\": true, \"url\": \"https://varg.ai\", \"avatar\": \"https://github.com/vargHQ.png\" },\n  \"source\": { \"url\": \"https://github.com/vargHQ/skills\", \"repo\": \"vargHQ/skills\", \"path\": \"packs/lighting-setups\", \"license\": \"MIT\" },\n  \"agents\": [\"claude-code\", \"claude-ai\", \"codex\", \"cursor\", \"gemini-cli\", \"openclaw\", \"mcp\", \"varg-studio\"],\n  \"models\": [\"veo_3_1\", \"veo_3_1_fast\", \"veo_3_1_lite\", \"omni_flash_1_1\", \"kling_v3\", \"kling_v3_standard\", \"seedance_2_5\", \"seedance_2\", \"minimax_h3_max\", \"nano_banana_2_1\", \"flux_3_image\"],\n  \"refs\": [\n    { \"role\": \"link\", \"label\": \"shot.cafe — practical lamp tag (human lookup)\", \"kind\": \"link\", \"url\": \"https://shot.cafe/tag/practical%20lamp\", \"license\": \"link-only\", \"note\": \"Human browsing only; never fetched by the agent\" },\n    { \"role\": \"link\", \"label\": \"Higgsfield Cinema Studio 4.0 lighting presets\", \"kind\": \"link\", \"url\": \"https://higgsfield.ai/blog/cinema-studio-4-0\", \"license\": \"link-only\", \"note\": \"Preset names used as aliases\" }\n  ],\n  \"files\": [\"README.md\", \"refs.manifest.json\", \"techniques.json\"],\n  \"version\": \"0.1.0\",\n  \"addedAt\": \"2026-10-26\",\n  \"preview\": { \"kind\": \"film\", \"hue\": 40, \"text\": \"Rim light\" },\n  \"legal\": \"Pointers only — no film stills or clips bundled.\",\n  \"techniques\": [\"golden-hour\", \"blue-hour\", \"low-key\", \"high-key\", \"rembrandt-lighting\", \"hard-side-light\", \"rim-light\", \"silhouette\", \"window-light\", \"practical-lighting\", \"volumetric-light\"]\n}\n```\n\n## 8. Freshness: when the varg catalog changes\n\n**What triggers a run:**\n\n- The version line in `https://varg.ai/models/llms.txt` changes (\"Generated from the live catalog (version …)\").\n- A varg commit disables or adds a route. For example, `8a8740c` disabled Kling 4.0 on 2026-10-22 after fal returned 403.\n- A provider publishes a dated guide change.\n\n**A model is added:**\n\n1. Read `https://varg.ai/models/<id>.md`. Note its modalities, durations and aspect ratios, and its prompt-related provider options: rewriters (`prompt_expansion_mode`, `enable_prompt_expansion`, `prompt_optimizer`), negative fields, multi-shot support and reference tags (Seedance 2.5 uses `@image1`, numbered from 1).\n2. Find the provider's **official** prompting guide.\n3. Decide which adapter family covers it (`veo`, `kling`, `seedance`, `hailuo`, `luma`, `runway`). If none fits (Wan 3, Grok Imagine), document it in `craft-model-adapters` references and propose a new `AdapterModel` in a separate PR to `types.ts`. This stream does not edit the schema.\n4. Write `references/models/<id>.md` with `catalog_version`, `last_verified` and `status`.\n5. Add the id to the `models` arrays of the entries that drive it.\n6. Spot-check three cards (one camera move, one lighting card, one editing card) with an approved draft render.\n\n**A model is removed or disabled:**\n\n1. Remove the id from every `models` array the same day.\n2. Mark its adapter file `status: retired`.\n3. The compiler fails closed: it raises an error that names the live alternatives and never silently reuses another model's syntax.\n4. Move the model's quirks to `old-patterns.md`.\n\n**A provider changes its syntax:** update the adapters with the date, and keep the old rule in `old-patterns.md`. Example: per-shot seconds were unstable on Seedance 2.0 and are fine on 2.5.\n\n**State on 2026-10-26** (catalog version 2026-10-23):\n\n| Adapter key | varg ids | Status |\n|---|---|---|\n| `veo` | `veo_3_1`, `veo_3_1_fast`, `veo_3_1_lite` (fal routes), `omni_flash_1_1`, `omni_flash` | Live. Veo 3.1 *Preview* on the Gemini API shut down 2026-10-22, and Google points to `gemini-omni-1.1-flash` |\n| `kling` | `kling_v3`, `kling_v3_standard` and their 4k, reference and motion-control routes | Live. `kling_v4` is still listed but was disabled on varg on 2026-10-22, so fail closed |\n| `seedance` | `seedance_2_5` (timestamps OK); `seedance_2`, `seedance_2_preview`, `seedance_2_fast_preview`, `seedance_2_mini` (2.0 rules) | Live |\n| `hailuo` | No bracket-syntax model in the catalog; `minimax_h3*` takes plain-language camera | Brackets for prompts users run on Hailuo 2.3/02 |\n| `luma`, `runway` | Not in the catalog | Adapters serve prompts users take to those tools |\n| — | Sora 2 | API shut down 2026-09-24; no adapter, patterns kept in `old-patterns.md` only |\n\n## 9. Do not add\n\n- Film stills, clips, GIFs, trailers, posters or thumbnails from commercial films or from shot.cafe, film-grab, eyecannndy or ShotDeck — not even \"for the preview\". Previews use openly licensed footage instead (CC BY or public domain, e.g. the Blender open movies) with attribution, recorded through `bun run preview add … --rights cc-by`, or a clip rendered by the skill's own deterministic recipe (`--rights generated`).\n- Text copied or lightly reworded from Melies, aicameramovements, GrokFilm, eyecannndy, StudioBinder, Kapwing or any guide's example prompts.\n- Scrapes or exports of any reference site. No crawler, no agent-side fetch of gallery pages, no hotlinked images.\n- \"In the style of <living director / DP / actor>\" cards, character names, or film titles in clauses.\n- LUTs without a license on record: \"free packs\", marketplace LUTs, camera-vendor LUTs, NLE built-ins.\n- Paper Shaders code pinned to a 2025-08-22 → 2026-06-27 release without checking its LICENSE.\n- Syntax a provider has not documented, or one model's syntax pasted into another's adapter (Hailuo brackets on Kling, Veo timestamps on Seedance 2.0).\n- Clauses that stack several moves into one clip. Split them into shots.\n- Prices in dollars, or credit numbers copied from spec pages.\n- CameraBench weights, until their NOASSERTION license is cleared.\n- Higgsfield preset names presented as varg features. They are aliases only.\n"},"overviewDoc":"# Replenishing the catalog\n\nThe catalog grows through five data streams. Each stream has its own sources, owner, cadence and playbook (`data/streams/<stream>/REPLENISH.md`). This page is the part they share: the pipeline, the files, the weekly rhythm and the checks every entry passes no matter where it came from.\n\n## The five streams\n\n| Stream | What flows in | Ingestion | Cadence |\n|---|---|---|---|\n| **varg Originals** | Skills the varg team builds and maintains (`vargHQ/skills`, Studio formats) | Manual | Every merged PR |\n| **Vendor skills** | Official skills from model and tool companies (HeyGen HyperFrames, Remotion, Higgsfield, fal, …) | Automated | Daily sync, weekly review |\n| **Community** | Independent creators' skills found on GitHub, skills.sh and ClawHub | Hybrid | Weekly discovery run + triage |\n| **Trend radar** | Viral formats agents can't make well yet, captured as *wanted* entries | Hybrid | Weekly radar (Mondays), same-day fast track |\n| **Craft** | Technique cards and ref packs distilled from cinematic reference libraries | Manual | Monthly review + on every model change |\n\n## The pipeline\n\nEvery entry goes through the same six steps. Streams differ in who performs each step — a script, a weekly triage, a PR review — not in the steps.\n\n1. **Discover.** A sync script (`bun run sync:vendors`), a discovery run (`bun run discover:community`), the trend radar prompt (`scripts/trend-radar.prompt.md`) or a person spots a candidate.\n2. **Normalize.** Write it as a `SkillEntry` in `data/streams/<stream>/skills.json`. The schema is `src/data/types.ts`; the field guide for each stream is in its playbook. Set `adds` — what the skill adds to a video (see *Visual first* below).\n3. **Review.** Run the stream's quality gate (shown on the stream page), the rights check and — for anything with `scripts/` — a read of every script. Scanners help; they do not replace the read.\n4. **Preview.** Find one real example of the output and cut it with `bun run preview add` (see *Real previews* below). Also pick the `preview.kind` and `hue` of the drawn illustration — it shows while the real preview loads and stays when no example exists.\n5. **Publish.** `bun run validate`, open a PR to this repo, merge. `bun run build` regenerates the catalog.\n6. **Monitor.** Freshness against the varg model catalog, upstream changes, install counts, and retirement when a skill goes stale or its model is shut down.\n\n## Files\n\n```\ndata/streams/<stream>/stream.json     StreamMeta — name, owner, cadence, sources, quality gate, commands\ndata/streams/<stream>/skills.json     SkillEntry[] — the pool\ndata/streams/<stream>/REPLENISH.md    the stream's playbook\ndata/streams/craft/techniques.json    TechniqueCard[] — the craft vocabulary\ndata/streams/vendors/sources.json     repos the vendor sync reads\ndata/streams/community/candidates.json  discovery output waiting for triage\n```\n\n## Commands\n\n| Command | What it does |\n|---|---|\n| `bun run sync:vendors -- --dry-run` | Shows what the vendor sync would add, update or retire. Drop `--dry-run` to write. |\n| `bun run discover:community` | Searches GitHub (and public registries) for new media skills into `candidates.json`. |\n| `bun run validate` | Checks every stream file against the schema: required fields, unique slugs, known categories and preview kinds, technique ids. |\n| `bun run dev` | Rebuilds on every change and serves the prototype at `localhost:4317`. |\n| `bun run build` | Writes `dist/index.html` (local) and `dist/artifact.html` (one shareable page). |\n\n## Weekly rhythm\n\n- **Daily** — the vendor sync runs; new upstream skills land as `beta` for review.\n- **Monday** — trend radar run and community triage. Wanted entries with the strongest signals get a wave number.\n- **Wednesday** — originals review: drafts that are ready move to `beta`, betas with passing evals move to `live`.\n- **Monthly** — craft review: technique cards re-checked against each model's current prompting guide.\n- **On model change** — when the varg catalog adds or retires a model, regenerate the per-model adapters and flag every entry whose `models` lists it.\n\n## Status lifecycle\n\n`wanted` → `draft` → `beta` → `live`, and back to `draft` when retired.\n\n- **wanted** — a format from the trend radar. Has a source post, no install.\n- **draft** — someone is building it, or it was extracted from Studio and not packaged yet.\n- **beta** — installable; evals not complete or fewer than two weeks of use.\n- **live** — passes the stream's quality gate and the skill standard.\n- **retired** — upstream removed, model shut down, or no longer reproducible. Keep the entry as `draft` with a note for a release cycle, then delete.\n\nWhen a wanted format ships, add the new skill to its stream, then delete the wanted entry and credit the source post in the skill's description.\n\n## Checks every entry passes\n\n- [ ] `slug` and `id` are unique across all streams.\n- [ ] `summary` says what you get, in under 120 characters.\n- [ ] `category` is one of the closed set in `src/data/categories.ts`; extra rubrics go in `tags`.\n- [ ] `adds` is set — `visual`, `api` or `tool` — and a `visual` entry has a real preview.\n- [ ] `source.url` resolves, and `source.license` is recorded (or `unknown`, which blocks `live`).\n- [ ] Install commands are copied from the source's own docs — never guessed.\n- [ ] Costs for varg-run skills are in credits; other skills say who bills them.\n- [ ] No film stills, clips, posters or other people's card texts are bundled. References are pointers or licensed files with a role.\n- [ ] Scripts were read: no `curl | bash`, obfuscation, credential reads or unexplained hosts.\n- [ ] People, brands and living artists named in the listing have a rights note in `legal`.\n\n## Visual first\n\nThe catalog leads with skills that change how a video looks. The promise on the home page is three steps: copy a skill, hand the agent your footage or brief, get the video. Every entry says what it adds in `adds`:\n\n| `adds` | Means | Examples |\n|---|---|---|\n| `visual` | A look, format or effect you can see | title blocks, captions, grades and LUTs, shader backgrounds, chat stories, UGC ad formats, music-video formats |\n| `api` | Access to a third-party model or service | \"run any fal endpoint\", ElevenLabs TTS, Runway Dev API, model catalogs |\n| `tool` | A workflow, CLI, library guide or prompting know-how | HyperFrames CLI, Remotion docs, GSAP guides, prompt guides, transcription |\n\nAsk one question: *if someone pastes this skill with their own video, does the result look different in a way you'd show on the card?* Yes → `visual`. A skill that only reaches a model (even a video model) is `api`; a skill that teaches a library or a process is `tool`. Wanted formats are always `visual`. The vendor sync guesses `adds` for new skills from their text; a curator confirms it before the entry goes live.\n\n## Shelves: what a card is\n\nEvery listed entry sits on one shelf (`src/data/shelves.ts`). Shelf names are the words people use on X when they make video: in 1,711 English tweets about making video (Sep–Oct 2026, naming study of 2026-10-27) \"prompt\" appears in 20.5%, \"model\" 14.5%, \"tool\" 12.3%, \"workflow\" 11.0%, \"effect\" 7.7%, \"style\" 6.4% and \"guide / tutorial\" 5.0%. \"Template\", \"preset\", \"recipe\" and \"component\" each stay under 2.3%, so none of them names a shelf. \"Skill\" stays the umbrella: every card installs as an agent skill.\n\n| Shelf | URL | What a card gives you | Badge |\n|---|---|---|---|\n| Prompts | `/prompts/` | The words a video model obeys: camera, shots, lighting, characters, hooks, per-model prompt guides | Prompt |\n| Effects | `/effects/` | Something you can see added to a video: titles, captions, transitions, backgrounds, logo animations | Effect |\n| Styles | `/styles/` | The look of the whole video: art styles, film looks, color grades and LUTs, fonts, style references | Style |\n| Guides | `/guides/` | Know-how the agent reads first: scripts, editing, captions, Remotion, HyperFrames, GSAP, FFmpeg | Guide |\n| Workflows | `/workflows/` | A brief in, a finished video out: ads, product videos, music videos, talking heads, Shorts | Workflow |\n| Models & tools | `/models/` | One model or tool the agent runs: Seedance, Veo, Kling, FLUX, ElevenLabs, scrapers, trend search | Model / Tool |\n\n`shelfOf()` files an entry from its category and `adds` (a craft category maps to a shelf, a make category holds workflows, a `tool` in a visual category is a guide, every `api` entry is a model). `SHELF_OF` pins the exceptions by slug; `bun run validate` fails on a pin that names no entry. Each shelf page has a chip per category, fullest first, and `/<shelf>/<category>/` is prerendered with its own title.\n\n## Navigation by job\n\nThe sidebar opens with the job a visitor came to do (`src/data/jobs.ts`), then the component library, then the shelves. Three jobs open into rubrics, two levels deep like 21st.dev's sidebar. Rubric labels lead with the X word for the thing, and `src/data/categories.ts` records that word and its share of video tweets.\n\n| Job | Rubrics (catalog categories) |\n|---|---|\n| Make a video | Product videos, Ads & UGC, Shorts & Reels, Editing & clips, Cinematic & short films, Stories & short dramas, Animation & motion graphics, Music videos, Launch videos, Explainers, Talking heads & avatars, Captions & subtitles, Text & titles, Logo animations & intros, 3D scenes, Phone & app screens, Greetings & celebrations |\n| Make images | Images & thumbnails, Characters, Scenes & locations, Style references, Art styles, Logos & brand kits |\n| Make music & audio | AI music, Lyrics & songwriting, Voice & voiceover, Sound effects |\n\nCraft categories — Camera & shots, Lighting, Color grading & LUTs, Backgrounds & shaders, Prompts by model, Tools & renderers, Research & trends — sit in no job: the shelves are their home, and links to the old craft jobs (`/browse/polish/…`, `/browse/connect/…`) resolve to them.\n\nA rubric can also name video types (`genres`) that build it from code; its page shows them as \"Build it from code\", which is what an empty rubric (Greetings) leads with until a skill lands.\n\nOn a rubric page the shelf is the filter row (Prompts, Effects, Styles, Guides, Workflows, Models & tools, Wanted). Every make category sits in exactly one job, and a rubric matches an entry's primary `category`, so the counts in the sidebar add up. A new make category needs a home in `JOBS` in the same PR; `bun run validate` checks both rules.\n\n## Real previews\n\nEvery card should show what the skill actually makes. Previews are real media — a clip, an image or an audio sample — cut small and stored next to the catalog, one record per entry in `data/previews/<slug>.json`.\n\n```bash\nbun run preview missing --stream vendors        # what still has no preview\nbun run preview sheet <slug> <media-url>         # 12-frame contact sheet to pick the segment\nbun run preview add <slug> <media-url> --credit \"HeyGen\" --rights publisher-repo \\\n  --page <where it is shown> --note \"what it shows\" --start 3 --duration 6\nbun run preview none <slug> --reason \"…\" --searched \"README; docs\"   # nothing usable exists\nbun run preview stats\n```\n\n- **What qualifies:** the output itself — a rendered video, a generated image, a voice sample. Not logos, banners, badges, diagrams or install screenshots. Always look at the check frame the tool prints.\n- **Where to look, in order:** the skill's own folder and README → the publisher's docs, model pages and showcase → for trends, the source post → for varg skills, varg's own renders → openly licensed footage (CC BY, public domain) run through the skill's deterministic part.\n- **Rights** are recorded on every preview (`publisher-repo`, `publisher-site`, `creator-post`, `varg-owned`, `cc-by`, `public-domain`, `generated`). The prototype shows all of them; before the public launch, `creator-post` previews need the creator's permission or an embed instead of a re-hosted file.\n- **Never:** frames from shot.cafe, film-grab, eyecannndy or ShotDeck; anything that needs a login; generating with paid models without approval.\n- Files stay small: videos are cut to ≤ 8 s at ≤ 720 px (about 0.1–0.9 MB), images to ≤ 960 px WebP, audio to ≤ 15 s MP3.\n\n## Ranking and featuring\n\nUntil the registry records runs, cards rank by installs and stars from the source (`stats.source` says where the number came from). `featured` is a curated flag — at most a handful per stream. Once skills run through `use_skill` on the varg API, ranking switches to credits spent by paying users and accepted results, which are hard to fake.\n\n## How this moves into the varg app\n\nThe JSON files are the prototype's database. In the app they become a `skills` table behind `/v2/skills` (modelled on `/v2/templates`: versions, statuses, publishers, moderation), the streams become scheduled workers that write to it, and the pages here become `/dashboard/skills`. The schema in `src/data/types.ts` is the migration's starting point.\n","standardDoc":"# The varg media skill standard\n\nA media skill is an [Agent Skills](https://agentskills.io/specification) folder with a few extra rules, because media skills spend money, depend on models that change monthly and are tempted to bundle other people's pictures. Everything here builds on the open SKILL.md format, so the same folder installs into Claude Code, Codex, Cursor, OpenClaw and Gemini CLI, and any agent that reads SKILL.md, Grok included.\n\n## Folder\n\n```\nmy-format/\n├── SKILL.md                  ≤ 500 lines. Gates and workflow at the top.\n├── references/\n│   ├── models/<model>.md     generated from the varg model catalog — never hand-edited\n│   ├── reference-roles.md    how to tag refs for each model family\n│   └── review-rubric.md      what a reviewer checks at each checkpoint\n├── assets/\n│   ├── refs.manifest.json    every reference by role, with hash and license\n│   ├── luts/*.cube           small, licensed\n│   ├── previews/*.webp       the listing preview, ≤ 256 KiB each\n│   └── fonts/                OFL fonts with their license texts\n├── scripts/                  deterministic helpers: validators, contact sheets, ref fetch-and-verify\n├── evals/                    evals.json, trigger_eval.json, mocks/varg/*.md\n└── agents/openai.yaml        generated at publish time, like the other agents' manifests\n```\n\n## Name\n\nAgents search for the task, never for a catalog word (0 of 4,455 searches said skill, kit, recipe or playbook). Name a new skill or repo with the first of these templates that describes it honestly, in this order (varg's agent discovery study, 2026-10-27; details and examples in vargHQ/aeo `knowledge/naming.json`):\n\n1. Open-source alternative to {Product}\n2. Open-source {task tool}\n3. Turn {input} into {output}\n4. {Task} skills for Claude Code and AI agents\n5. {Tool} for Claude Code: describe it, get it\n6. {Tool} cookbook: copyable commands for {domain}\n7. {Task} with {Library}\n8. Local-first {task}: private, no subscription\n9. Awesome {topic}: a curated list\n10. {Format} video template for {framework}\n11. {N} video models in one CLI for coding agents\n12. Open-source agentic {domain} pipeline\n\nThe first sentence of the description says what goes in and what comes out, names a concrete spec (9:16, MP4, SRT) or the tools it uses, and says it works with Claude Code, Codex and Grok. `bun run validate` fails on a varg skill added from 2026-10-28 on whose name follows none of them (`src/data/naming.ts`). Check a name with `bun run name --skill \"<name>\" --description \"<description>\"` in vargHQ/aeo.\n\nThe page that lists the skill is named separately, by search intent: `How to {task} with AI`, `Best AI {tool}s in 2026: {N} compared`, `How to {task} with {Library}`, `AI {task} generator: {input} to {output}` (data/how-to.json).\n\n## Frontmatter\n\n```yaml\n---\nname: apple-notes-ad\ndescription: >\n  Writes and renders founder-voice ads typed into an Apple-Notes-style page, in batches\n  of copy variants. Use when the user wants a Notes ad, a \"typed note\" promo or many\n  text-only ad variants. NOT for chat stories (use imessage-video) or kinetic type\n  (use word-per-beat).\nlicense: Apache-2.0\nmetadata:\n  version: \"1.0.0\"\n  varg.cost.typical: \"~2–5 credits per variant (voiceover; the render is local)\"\n  varg.cost.estimate_tool: \"varg:estimate_cost\"\n  varg.runtime.typical: \"1–3 min\"\n  varg.models: \"eleven_flash_v2_5\"\n  varg.refs.manifest: \"assets/refs.manifest.json\"\n  varg.outputs: \"mp4 9:16, mp4 4:5\"\n---\n```\n\n- `name` — kebab-case, ≤ 64 characters, unique in the catalog.\n- `description` — third person, ≤ 1,024 characters (Claude Code truncates listings at 1,536). Say what it makes, **Use when** and **NOT for**, naming the neighbouring skills so agents pick the right one.\n- `metadata` — flat string → string pairs (the spec allows nothing else). The `varg.*` keys are how the catalog shows cost, runtime, models and outputs on the listing.\n\n## SKILL.md body\n\n1. **Gates first.** Cost approval and rights checks go at the top; after context compaction only the top of an invoked skill survives.\n2. **Workflow with checkpoints.** Plan → stills → preview → render. A person approves at each checkpoint; fix stills before paying for video.\n3. **A \"read this when\" table** pointing into `references/` — one level deep, no chains.\n4. **An output contract** — files, formats, where they land.\n\nKeep craft in prose and facts out of it. Model ids, limits and prices change monthly: read them from `references/models/<model>.md`, which CI regenerates from `https://varg.ai/models/llms.txt` with `catalog_version`, `last_verified` and `status`. A model marked retired makes the skill fail closed, not guess.\n\n## References by role\n\nReferences are packaged by what they control, not by file. Every entry in `assets/refs.manifest.json` says its role, where it lives, its hash, its license and what it must not touch:\n\n```json\n[\n  {\n    \"id\": \"brand-palette\",\n    \"role\": \"brand\",\n    \"url\": \"https://s3.varg.ai/refs/acme/palette-v3.png\",\n    \"sha256\": \"9f2c…e41a\",\n    \"bytes\": 48213,\n    \"license\": \"user-supplied\",\n    \"controls\": \"colors of UI chrome and captions\",\n    \"must_not_touch\": \"faces, product shape\",\n    \"models\": [\"nano_banana_2_1\", \"seedance_2_5\"]\n  }\n]\n```\n\nRoles: `identity`, `product`, `style`, `location`, `first-frame`, `last-frame`, `motion`, `audio`, `brand`, `technique`, `lut`, `shader`, `font`, `link`. A code adapter maps roles to each model's slots and tag syntax (`@image1` from 1, `<IMAGE_REF_0>` from 0, `[Image1]`) — never number refs by hand.\n\nWhere references live:\n\n| Kind | Where | Rule |\n|---|---|---|\n| Text, JSON, SVG, `.cube` LUTs, small WebP, OFL fonts | in the skill | ≤ 5 MiB per file, ≤ 50 MiB per repo |\n| Images and clips the skill reuses | `s3.varg.ai`, content-addressed | URL + sha256 in the manifest, passed to the API directly |\n| Reusable packs (LUTs, SFX, caption skins) | a ref pack in the catalog | installed by id, versioned |\n| User references | the session | the user confirms the rights; never stored in the skill |\n| Film stills, clips, posters, other sites' card texts | nowhere | link to the source page for people instead |\n\nNever bundle MP3 or MP4 files, Git LFS pointers or symlinks.\n\n## Cost\n\n- Quote costs in **credits**, never dollars.\n- Call `estimate_cost` and wait for approval before any generation; a `PreToolUse` hook in the skill makes this a rule rather than a suggestion.\n- Show drafts cheaply first: a 480p take costs a fraction of 1080p.\n\n## Evals\n\nThree layers, cheapest first:\n\n1. **Trigger evals** — near misses that should *not* load the skill (\"a PowerPoint slideshow\" vs \"a video slideshow\").\n2. **Process evals** — the workflow against mocked varg tools, at zero credits: estimate before generate, stills before clips, the right number of refs per model.\n3. **Golden set** — a few real runs, approved in advance, judged by people against `review-rubric.md`. The listing shows **credits per accepted result** and the delta against running without the skill.\n\n## Security\n\n- No secrets in files. Keys come through OAuth or the MCP connection.\n- Scripts call known hosts only (`api.varg.ai`, `s3.varg.ai`, the model catalog). No post-install hooks, no `curl | bash`, no downloaded executables.\n- Pinned versions; every update shows its diff before install.\n\n## Rights\n\n- No \"in the style of\" a living artist; describe the technique instead.\n- Real people only with consent and scope (what may be generated, how to revoke).\n- Interfaces and brands (Apple UI, logos of real publications, game assets) carry a note in the listing's `legal` field and get a legal check before going live.\n\n## Publishing\n\nOpen a PR to `vargHQ/skills`. CI checks the frontmatter, the manifest (hashes, licenses, sizes), the evals and the generated model files; the varg team reviews rights and scripts. Merged skills publish to the Claude Code marketplace, ClawHub and skills.sh, and appear in this catalog through the Originals or Community stream.\n","howToDocs":{"add-music-to-a-video-with-ffmpeg":"Turn a video and a music track into one MP4 with the music under the voice, ducked while people talk, with one FFmpeg command. Free and local. Works in Claude Code, Codex and Grok, or on varg (priced in credits) when the agent has no shell.\n\n```bash\nffmpeg -i input.mp4 -i music.mp3 -filter_complex \"[0:a]asplit=2[voice][key];[1:a]volume=0.4[m];[m][key]sidechaincompress=threshold=0.03:ratio=8:attack=20:release=400[ducked];[voice][ducked]amix=inputs=2:duration=first:normalize=0[a]\" -map 0:v -map \"[a]\" -c:v copy -c:a aac output.mp4\n```\n\n## Step by step\n\n1. **Pick the track and check its rights.** Use music you made (AI music on varg, for example) or music licensed for the platform.\n2. **Duck it under the voice** with the command above. `sidechaincompress` turns the music down whenever the voice is loud. `threshold` sets how loud the voice has to be, and `release` sets how fast the music comes back.\n3. **Or lay a flat music bed** when there is no voice to protect:\n\n   ```bash\n   ffmpeg -i input.mp4 -i music.mp3 -filter_complex \"[1:a]volume=0.25[m];[0:a][m]amix=inputs=2:duration=first:normalize=0[a]\" -map 0:v -map \"[a]\" -c:v copy -c:a aac output.mp4\n   ```\n\n4. **Or replace the sound completely,** looping the track and fading it out at the end (here the video is 20 s long):\n\n   ```bash\n   ffmpeg -i input.mp4 -stream_loop -1 -i music.mp3 -map 0:v -map 1:a -c:v copy -c:a aac -shortest -af \"afade=t=out:st=18:d=2\" output.mp4\n   ```\n\n5. **Listen to the result**, or at least measure it: `ffmpeg -i output.mp4 -af ebur128 -f null -` prints the loudness. Social platforms normalize to around −14 LUFS.\n\n## Gotchas\n\n- `amix` lowers each input by default. `normalize=0` (FFmpeg 4.4 and later) keeps your levels as you set them.\n- `-c:v copy` leaves the picture untouched, so the command takes seconds.\n- A video without an audio track has no `[0:a]`. Use the replace command, or add silence with `-f lavfi -i anullsrc=r=48000:cl=stereo`.\n\n## No shell? Run it on varg\n\nThe agent sends the same command to the varg `ffmpeg` tool (MCP `call_tool`, or `POST https://api.varg.ai/v2/ffmpeg`). The music can come from varg too (`generate_music`). Both are priced in credits, with an estimate before anything runs.\n","burn-captions-with-ffmpeg":"Turn a video and an SRT file into an MP4 with the captions burned into the picture, in one FFmpeg command. Free and local. Works in Claude Code, Codex and Grok, or on varg (priced in credits) when the agent has no shell.\n\n```bash\nffmpeg -i input.mp4 -vf \"subtitles=subs.srt:force_style='FontName=Arial,FontSize=14,Bold=1,Outline=2,Alignment=2,MarginV=60'\" -c:v libx264 -crf 20 -c:a copy captioned.mp4\n```\n\n## Step by step\n\n1. **Get the captions as SRT.** Transcribe with word timestamps: Whisper, Groq Whisper or ElevenLabs Scribe. Keep lines short (2–5 words for Shorts) and check names and numbers by hand.\n2. **Check the input.** `ffprobe -v error -show_entries stream=codec_type,width,height -of compact=p=0 input.mp4` shows the size, so you can set the font size and margin for it.\n3. **Burn them in** with the command above. `force_style` takes ASS style fields. `Alignment=2` is bottom centre and `MarginV` lifts the text off the edge. On 9:16 video, keep it out of the bottom 14% where TikTok and Reels put their buttons.\n4. **For styled or word-by-word captions, use ASS.** Convert with `ffmpeg -i subs.srt subs.ass`, edit the styles or add karaoke tags in the `.ass` file, then burn it in:\n\n   ```bash\n   ffmpeg -i input.mp4 -vf \"ass=subs.ass\" -c:v libx264 -crf 20 -c:a copy captioned.mp4\n   ```\n\n5. **Check the result.** Grab a frame where a caption shows (`ffmpeg -ss 2 -i captioned.mp4 -frames:v 1 frame.png`) and look at it before you deliver.\n\n## Soft subtitles instead\n\nTo give viewers captions they can switch on and off, mux the SRT as a track. Nothing is re-encoded:\n\n```bash\nffmpeg -i input.mp4 -i subs.srt -map 0 -map 1 -c copy -c:s mov_text -metadata:s:s:0 language=eng output.mp4\n```\n\n## Gotchas\n\n- `subtitles` and `ass` need FFmpeg built with libass. Run `ffmpeg -filters | grep subtitles`. If it prints nothing, install a full build (`brew install ffmpeg-full` on macOS, a static build, or `npx ffmpeg-static`).\n- Burning in re-encodes the video, so set the quality (`-crf 18–23`). The audio can stay `-c:a copy`.\n- A font must be installed on the machine. Add `:fontsdir=./fonts` to point at your own.\n- Animated captions (bounce, highlight the spoken word, emoji) are easier in Remotion or HyperFrames than in ASS. See the caption skills below.\n\n## No shell? Run it on varg\n\nThe agent sends the same command to the varg `ffmpeg` tool (MCP `call_tool`, or `POST https://api.varg.ai/v2/ffmpeg`). It runs in the cloud, priced in credits, with an estimate before it runs. Inputs and outputs are URLs.\n","crop-a-video-to-vertical-with-ffmpeg":"Turn a 16:9 video into a 1080×1920 vertical 9:16 MP4 for TikTok, Reels and Shorts, with one FFmpeg command. Free and local. Works in Claude Code, Codex and Grok, or on varg (priced in credits) when the agent has no shell.\n\n```bash\nffmpeg -i input.mp4 -vf \"crop=ih*9/16:ih,scale=1080:1920,setsar=1\" -c:v libx264 -crf 20 -c:a copy vertical.mp4\n```\n\n## Step by step\n\n1. **Check the input size.** `ffprobe -v error -show_entries stream=width,height -of csv=p=0 input.mp4`.\n2. **Center crop** with the command above. `crop=ih*9/16:ih` keeps the full height and the middle 9:16 slice. `scale=1080:1920` sets the output size.\n3. **Move the crop when the subject is off-center.** Add the x offset: `crop=ih*9/16:ih:200:0` starts 200 px from the left. For a speaker who moves, find their position per scene (a face tracker, or ask a video model for timecodes), then cut and crop each scene on its own.\n4. **Keep the whole frame instead of cropping:** blur a copy behind it.\n\n   ```bash\n   ffmpeg -i input.mp4 -filter_complex \"[0:v]scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,boxblur=20:2[bg];[0:v]scale=1080:-2[fg];[bg][fg]overlay=(W-w)/2:(H-h)/2,setsar=1\" -c:v libx264 -crf 20 -c:a copy vertical-blur.mp4\n   ```\n\n5. **Check the result.** `ffprobe` should say `1080x1920`. Look at a frame from the busiest scene to see that nothing important was cut off.\n\n## Gotchas\n\n- Cropping re-encodes the video. `-crf 18–23` with libx264 is a safe range; lower means bigger and sharper.\n- Text and logos near the edges of a 16:9 frame are lost in a center crop. Use the blurred-background version, or reframe per scene.\n- Keep captions and calls to action out of the bottom 14% and the right edge, where the TikTok and Reels buttons sit.\n\n## No shell? Run it on varg\n\nThe agent sends the same command to the varg `ffmpeg` tool, or calls the `resize` tool (MCP `call_tool`, or `POST https://api.varg.ai/v2/ffmpeg`). It runs in the cloud, priced in credits, with an estimate before it runs.\n","trim-and-join-video-clips-with-ffmpeg":"Turn long footage into trimmed clips and join them into one MP4 with FFmpeg: the exact commands for frame-accurate cuts and lossless joins. Free and local. Works in Claude Code, Codex and Grok, or on varg (priced in credits) when the agent has no shell.\n\n```bash\nffmpeg -ss 00:00:05 -to 00:00:12 -i input.mp4 -c:v libx264 -crf 18 -c:a aac clip.mp4\n```\n\n## Step by step\n\n1. **Probe the clips.** `ffprobe -v error -show_entries stream=codec_name,width,height,r_frame_rate -of compact=p=0 input.mp4`. Joining without re-encoding needs the same codec, size and frame rate in every clip.\n2. **Trim to the frame** with the command above. Re-encoding makes the cut land exactly on `-ss` and `-to`.\n3. **Or trim fast without re-encoding.** `ffmpeg -ss 00:00:05 -to 00:00:12 -i input.mp4 -c copy clip.mp4` is instant and lossless, but it cuts on keyframes, so the clip can start up to a few seconds off.\n4. **Join clips that match** with the concat demuxer, losslessly. Write a list, then join:\n\n   ```bash\n   printf \"file 'clip1.mp4'\\nfile 'clip2.mp4'\\n\" > list.txt\n   ffmpeg -f concat -safe 0 -i list.txt -c copy joined.mp4\n   ```\n\n5. **Join clips that differ** (sizes, frame rates) with the concat filter. It scales and pads each clip to one size, then re-encodes:\n\n   ```bash\n   ffmpeg -i a.mp4 -i b.mp4 -filter_complex \"[0:v]scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=30[v0];[1:v]scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=30[v1];[v0][0:a][v1][1:a]concat=n=2:v=1:a=1[v][a]\" -map \"[v]\" -map \"[a]\" -c:v libx264 -crf 20 -c:a aac joined.mp4\n   ```\n\n6. **Check the result.** The duration in `ffprobe -v error -show_entries format=duration -of csv=p=0 joined.mp4` should equal the sum of the clips.\n\n## Gotchas\n\n- Every clip in the concat filter needs an audio track. Give a silent clip one with `-f lavfi -i anullsrc=r=48000:cl=stereo -shortest`.\n- `-ss` before `-i` seeks fast; with re-encoding it is still frame-accurate.\n- For cuts chosen from a transcript (removing silences and filler words), get word timestamps first, then generate the trim list. The editing guide below compares the tools.\n\n## No shell? Run it on varg\n\nThe agent calls the varg `trim`, `slice` or `ffmpeg` tools (MCP `call_tool`, or `POST https://api.varg.ai/v2/ffmpeg`) with URLs in and out. It runs in the cloud, priced in credits, with an estimate before it runs.\n"},"components":[{"slug":"varg.anime-jp-subtitles","name":"anime-jp-subtitles","title":"Anime JP Subtitles","summary":"Japanese captions in four anime styles from one subs.json: fansub lines with a karaoke sweep, TV telop with popping letters, a vertical tategaki column and katakana SFX stamps.","registry":"varg","framework":"hyperframes","layer":"template","category":"captions","also":["kinetic-type","text-effects"],"tags":["captions","karaoke","japanese","anime","telop"],"author":"varg","aspect":"any","slots":[{"id":"video","type":"video"},{"id":"subs","type":"list","label":"subs.json — lines, timings, style per line"}],"install":"git clone https://github.com/vargHQ/code2video-templates && cd code2video-templates/anime-jp-subtitles && bash make.command","docs":"https://github.com/vargHQ/code2video-templates/tree/main/anime-jp-subtitles","source":"https://github.com/vargHQ/code2video-templates/tree/main/anime-jp-subtitles","license":"MIT","preview":{"poster":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_998a68490f83.gif"},"runs":"local"},{"slug":"varg.anime-triple-split","name":"anime-triple-split","title":"Anime Triple Split","summary":"Three live video panels slam onto screentone paper one per beat — ink borders, slanted gutters, an impact flash and a katakana SFX stamp — then the page tears away.","registry":"varg","framework":"hyperframes","layer":"template","category":"beat-sync","also":["layouts","transitions"],"tags":["manga","split-screen","beat","anime"],"author":"varg","canvas":{"w":1080,"h":1920},"aspect":"9:16","slots":[{"id":"clips","type":"list","label":"three video clips"},{"id":"layout","type":"string","label":"rows | columns | staircase"}],"install":"git clone https://github.com/vargHQ/code2video-templates && cd code2video-templates/anime-triple-split && bash make.command","docs":"https://github.com/vargHQ/code2video-templates/tree/main/anime-triple-split","source":"https://github.com/vargHQ/code2video-templates/tree/main/anime-triple-split","license":"MIT","preview":{"poster":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_52b6b86d50c2.gif"},"runs":"local"},{"slug":"varg.apple-notes-video","name":"apple-notes-video","title":"Apple Notes Video","summary":"Any text typed live in an iPhone Apple Notes screen over the iOS keyboard, with key clicks, optional music and an end card. 9:16.","registry":"varg","framework":"html","layer":"template","category":"mock-ui","also":["text-effects","devices"],"tags":["notes","ios","typing","ad"],"author":"varg","canvas":{"w":1080,"h":1920},"aspect":"9:16","slots":[{"id":"text","type":"string","label":"the note"},{"id":"script","type":"list","label":"script JSON — lines, pauses, end card"}],"install":"git clone https://github.com/vargHQ/code2video-templates && cd code2video-templates/apple-notes-video && bun install","docs":"https://github.com/vargHQ/code2video-templates/tree/main/apple-notes-video","source":"https://github.com/vargHQ/code2video-templates/tree/main/apple-notes-video","license":"MIT","preview":{"poster":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_c18871a17715.webp"},"runs":"local"},{"slug":"varg.card-catalog-explainer","name":"card-catalog-explainer","title":"Card Catalog Explainer","summary":"A 56 s explainer: a wall of code-made videos, then one request travels through a card catalog to the finished MP4. Point config.json at any catalog.","registry":"varg","framework":"hyperframes","layer":"template","category":"showcases","also":["galleries","steps"],"tags":["explainer","catalog","product"],"author":"varg","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":56,"slots":[{"id":"config","type":"object","label":"config.json — catalog, cards, copy"}],"install":"git clone https://github.com/vargHQ/code2video-templates && cd code2video-templates/card-catalog-explainer && bash make.command","docs":"https://github.com/vargHQ/code2video-templates/tree/main/card-catalog-explainer","source":"https://github.com/vargHQ/code2video-templates/tree/main/card-catalog-explainer","license":"MIT","preview":{"poster":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_40bf292107cb.webp"},"runs":"local"},{"slug":"varg.iphone-duo-fold","name":"iphone-duo-fold","title":"iPhone Duo Fold","summary":"Your screens — an image, a screen recording, an HTML page or a URL — on the foldable iPhone Duo, unfolding in 3D with its progressive-blur fold. Any size or transparent.","registry":"varg","framework":"html","layer":"template","category":"devices","also":["showcases","three-d"],"tags":["iphone","foldable","device","3d"],"author":"varg","aspect":"any","slots":[{"id":"screen","type":"image","label":"image, video, HTML or URL"}],"install":"git clone https://github.com/vargHQ/code2video-templates && cd code2video-templates/iphone-duo-fold && bun render.ts --screen app.png","docs":"https://github.com/vargHQ/code2video-templates/tree/main/iphone-duo-fold","source":"https://github.com/vargHQ/code2video-templates/tree/main/iphone-duo-fold","license":"MIT","preview":{"poster":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_78fc62c86c30.webp"},"runs":"local","skill":"iphone-duo-fold"},{"slug":"varg.liquid-thorn-logo","name":"liquid-thorn-logo","title":"Liquid Thorn Logo","summary":"Any word as a black-metal chrome logo that a cursor smears with a WebGL fluid.","registry":"varg","framework":"html","layer":"template","category":"logos","also":["shaders","kinetic-type"],"tags":["logo","webgl","chrome","fluid"],"author":"varg","aspect":"any","slots":[{"id":"text","type":"string","label":"the word"}],"install":"git clone https://github.com/vargHQ/code2video-templates && cd code2video-templates/liquid-thorn-logo && bun render.ts --text \"WORD\"","docs":"https://github.com/vargHQ/code2video-templates/tree/main/liquid-thorn-logo","source":"https://github.com/vargHQ/code2video-templates/tree/main/liquid-thorn-logo","license":"MIT","preview":{"poster":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_6c082ea3d212.webp"},"runs":"local"},{"slug":"varg.stamp-carousel","name":"stamp-carousel","title":"Stamp Carousel","summary":"An iPhone swiping through your pictures as perforated postage stamps, the screen colour following each stamp. MP4 on a background or with alpha.","registry":"varg","framework":"python","layer":"template","category":"galleries","also":["devices"],"tags":["carousel","iphone","stamps","alpha"],"author":"varg","aspect":"any","slots":[{"id":"pictures","type":"list","label":"a folder of pictures"}],"install":"git clone https://github.com/vargHQ/code2video-templates && cd code2video-templates/stamp-carousel && bash make.command","docs":"https://github.com/vargHQ/code2video-templates/tree/main/stamp-carousel","source":"https://github.com/vargHQ/code2video-templates/tree/main/stamp-carousel","license":"MIT","preview":{"poster":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_dd29b8bcc93a.gif"},"runs":"local"},{"slug":"varg.music-video","name":"varg-music-video","title":"varg Music Video","summary":"An AI music video from a song: song map with beats and word timings, a beat-grid storyboard, Seedance scenes with QA, a frame-exact cut on the song, lyrics and graphics in HyperFrames.","registry":"varg","framework":"python","layer":"template","category":"beat-sync","also":["captions","transitions"],"tags":["music-video","beat-grid","seedance","lyrics"],"author":"varg","aspect":"any","slots":[{"id":"song","type":"audio"},{"id":"lyrics","type":"string"},{"id":"story","type":"string","label":"a one-line idea"}],"install":"git clone https://github.com/vargHQ/code2video-templates && python3 code2video-templates/varg-music-video/scripts/songmap.py song.mp3 --lyrics lyrics.txt --out songmap.json","docs":"https://github.com/vargHQ/code2video-templates/tree/main/varg-music-video","source":"https://github.com/vargHQ/code2video-templates/tree/main/varg-music-video","license":"MIT","preview":{"poster":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_5e78548332d5.gif"},"runs":"credits","skill":"varg-music-video"},{"slug":"varg.previz","name":"varg-previz","title":"varg Previz","summary":"A three.js grey-box previz of every shot on the timeline — auto cameras from storyboard words, a posable mannequin — then one Seedance 2.5 video-to-video run per scene.","registry":"varg","framework":"python","layer":"template","category":"camera","also":["three-d","steps"],"tags":["previz","three.js","storyboard","seedance"],"author":"varg","aspect":"any","slots":[{"id":"storyboard","type":"list","label":"shots with camera words"}],"install":"git clone https://github.com/vargHQ/code2video-templates && python3 code2video-templates/varg-previz/scripts/new_previz.py my-previz","docs":"https://github.com/vargHQ/code2video-templates/tree/main/varg-previz","source":"https://github.com/vargHQ/code2video-templates/tree/main/varg-previz","license":"MIT","preview":{"poster":"https://s3.varg.ai/files/194b94d0-58ff-4e8b-91de-4f1959d04013/file_3a16e502c737.gif"},"runs":"credits","skill":"varg-previz"},{"slug":"hf.agent-cursor","name":"agent-cursor","title":"Agent Cursor","summary":"An AI agent operating a UI: a cursor with an accent name label that types out each step, clicks each target with a small ring, and ends on a check.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","also":["entrances","social-proof","steps"],"tags":["cursor","motion-primitive","agent","ai","status","click"],"aspect":"any","slots":[{"id":"agent_name","type":"string","label":"Agent name"},{"id":"steps","type":"string","label":"Status steps"},{"id":"targets","type":"string","label":"Click targets"},{"id":"accent","type":"color","label":"Accent"}],"install":"npx hyperframes add agent-cursor","docs":"https://hyperframes.heygen.com/catalog/components/agent-cursor","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/agent-cursor","license":"Apache-2.0","runs":"local"},{"slug":"hf.ai-answer-rank","name":"ai-answer-rank","title":"AI Answer Rank","summary":"Is your brand in the AI answer? A question types into a chat card, the assistant answers with a ranked list of three picks, then re-ranks: the promoted brand slides into its slot, the picks below step down…","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"chats","also":["lists","mock-ui","annotations"],"tags":["mock-ui","ai","chat","ranking","list","marketing","ad-template","square"],"author":"Tugra Avci","canvas":{"w":1080,"h":1080},"aspect":"1:1","duration":9,"slots":[{"id":"prompt","type":"string","label":"Prompt"},{"id":"lead","type":"string","label":"Answer lead-in"},{"id":"rowA","type":"string","label":"Pick 1"},{"id":"rowB","type":"string","label":"Pick 2"},{"id":"rowC","type":"string","label":"Pick 3"},{"id":"brand","type":"string","label":"Brand"},{"id":"brandRank","type":"enum","label":"Brand rank"},{"id":"accent","type":"color","label":"Accent"},{"id":"ink","type":"color","label":"Ink"},{"id":"ground","type":"color","label":"Ground"}],"install":"npx hyperframes add ai-answer-rank","docs":"https://hyperframes.heygen.com/catalog/blocks/ai-answer-rank","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/ai-answer-rank","license":"Apache-2.0","runs":"local"},{"slug":"hf.ai-chat-reveal","name":"ai-chat-reveal","title":"AI Chat Reveal","summary":"A question is typed on a rising keyboard, sent, and answered by an AI that streams its reply word by word on a measured token rhythm - thinking dot, uneven bursts, bulleted list…","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"chats","also":["entrances","mock-ui","lists"],"tags":["showcase","mock-ui","ai","chat","vertical","ad-template"],"author":"Miao Yang","canvas":{"w":1080,"h":1920},"aspect":"9:16","duration":19.3,"slots":[{"id":"botName","type":"string","label":"Assistant name"},{"id":"userMessage","type":"string","label":"User message"},{"id":"answer1","type":"string","label":"Answer paragraph 1"},{"id":"answer2","type":"string","label":"Answer paragraph 2"},{"id":"answer3","type":"string","label":"Answer paragraph 3"},{"id":"bullet1","type":"string","label":"Bullet 1"},{"id":"bullet2","type":"string","label":"Bullet 2"},{"id":"bullet3","type":"string","label":"Bullet 3"},{"id":"ecHeadline","type":"string","label":"End-card headline"},{"id":"ecSub","type":"string","label":"End-card subline"},{"id":"ecCta","type":"string","label":"End-card CTA"},{"id":"ecFooter","type":"string","label":"End-card footer"},{"id":"brandLogo","type":"image","label":"Brand logo"}],"install":"npx hyperframes add ai-chat-reveal","docs":"https://hyperframes.heygen.com/catalog/blocks/ai-chat-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/ai-chat-reveal","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/ai-chat-reveal/poster.jpg","video":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/ai-chat-reveal/preview.mp4"},"runs":"local"},{"slug":"hf.animated-bar-chart","name":"animated-bar-chart","title":"Animated Bar Chart","summary":"A compact data card with deterministic bar growth and value callouts.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"charts","also":["annotations"],"tags":["data"],"aspect":"any","install":"npx hyperframes add animated-bar-chart","docs":"https://hyperframes.heygen.com/catalog/components/animated-bar-chart","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/animated-bar-chart","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/animated-bar-chart.png"},"runs":"local"},{"slug":"hf.app-showcase","name":"app-showcase","title":"App Showcase","summary":"Fitness app product showcase with three floating smartphone screens","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"showcases","also":["mock-ui","three-d"],"tags":["showcase","app","3d"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":5.5,"install":"npx hyperframes add app-showcase","docs":"https://hyperframes.heygen.com/catalog/blocks/app-showcase","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/app-showcase","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/app-showcase.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/app-showcase.mp4"},"runs":"local"},{"slug":"hf.apple-money-count","name":"apple-money-count","title":"Apple Money Count","summary":"Apple-style finance counter that counts from $0 to $10,000, flashes green, and bursts money icons with sound.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"stats","also":["kinetic-type","particles"],"tags":["showcase","finance","kinetic","youtube","sfx"],"author":"Stronkter","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":5,"install":"npx hyperframes add apple-money-count","docs":"https://hyperframes.heygen.com/catalog/blocks/apple-money-count","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/apple-money-count","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/apple-money-count.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/apple-money-count.mp4"},"runs":"local"},{"slug":"hf.arc-motion-path","name":"arc-motion-path","title":"Arc Motion Path","summary":"A GSAP MotionPath primitive that flies a callout along a curved arc with autorotation.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"annotations","tags":["video-primitive","motionpath","gsap-plugin","hyperframes-native"],"aspect":"any","install":"npx hyperframes add arc-motion-path","docs":"https://hyperframes.heygen.com/catalog/components/arc-motion-path","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/arc-motion-path","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/arc-motion-path.png"},"runs":"local"},{"slug":"hf.ascii-render-pass","name":"ascii-render-pass","title":"ASCII Render Pass","summary":"A slotted scene renders as live ASCII: a canvas samples the source's luminance grid (rasterized once at mount) and draws glyphs from a density ramp charset; resolution steps coarse to fine as the piece resolves…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"generative","also":["textures","entrances","steps"],"tags":["motion-primitive","experiment","texture","ascii","quantize"],"aspect":"any","slots":[{"id":"charset","type":"string","label":"Charset"},{"id":"grid","type":"enum","label":"Grid"},{"id":"resolve_at","type":"number","label":"Resolve at"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add ascii-render-pass","docs":"https://hyperframes.heygen.com/catalog/components/ascii-render-pass","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/ascii-render-pass","license":"Apache-2.0","runs":"local"},{"slug":"hf.ascii-trail-reveal","name":"ascii-trail-reveal","title":"ASCII Trail Reveal","summary":"An authored S-curve sweeps through a deterministic ASCII grid, flipping cells away to reveal a labeled panel.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"generative","also":["entrances","intros","backgrounds"],"tags":["motion-primitive","intro","reveal","ascii","trail","grid"],"aspect":"any","slots":[{"id":"label","type":"string","label":"Panel label"},{"id":"accent","type":"enum","label":"Accent"},{"id":"trail_width","type":"enum","label":"Trail width"}],"install":"npx hyperframes add ascii-trail-reveal","docs":"https://hyperframes.heygen.com/catalog/components/ascii-trail-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/ascii-trail-reveal","license":"Apache-2.0","runs":"local"},{"slug":"hf.aurora","name":"aurora","title":"Aurora","summary":"Green and violet aurora curtains ripple across a night sky. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"backgrounds","also":["shaders"],"tags":["webgpu","webgpu-shader","background","light","aurora","sky"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add aurora","docs":"https://hyperframes.heygen.com/catalog/blocks/aurora","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/aurora","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/aurora.mp4"},"runs":"local"},{"slug":"hf.aurora-drift","name":"aurora-drift","title":"Aurora Drift","summary":"Three soft accent-derived aurora fields drift in an exact ambient loop over a deep base and faint vignette.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"backgrounds","also":["entrances"],"tags":["motion-primitive","background","aurora","gradient","ambient","loopable"],"aspect":"any","slots":[{"id":"accent","type":"enum","label":"Accent"},{"id":"mood","type":"enum","label":"Mood"}],"install":"npx hyperframes add aurora-drift","docs":"https://hyperframes.heygen.com/catalog/components/aurora-drift","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/aurora-drift","license":"Apache-2.0","runs":"local"},{"slug":"hf.avatar-cloud","name":"avatar-cloud","title":"Avatar Cloud","summary":"Lettermark avatars populate a loose elliptical cloud while fine SVG links draw between the community and its central proof label.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"social-proof","also":["diagrams","entrances"],"tags":["effects","avatars","community","network","social-proof","prove"],"aspect":"any","slots":[{"id":"avatarCount","type":"number","label":"Avatar count"},{"id":"showLinks","type":"enum","label":"Show links"},{"id":"label","type":"string","label":"Proof label"}],"install":"npx hyperframes add avatar-cloud","docs":"https://hyperframes.heygen.com/catalog/components/avatar-cloud","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/avatar-cloud","license":"Apache-2.0","runs":"local"},{"slug":"hf.avatar-group-hover","name":"avatar-group-hover","title":"Avatar Group Hover","summary":"A distance-falloff avatar group lift with bouncy hover return","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"mock-ui","also":["transitions"],"tags":["video-primitive","transition-primitive","transitions-dev-port","avatar","hover"],"aspect":"any","slots":[{"id":"size","type":"enum","label":"Size"},{"id":"overlap","type":"enum","label":"Overlap"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add avatar-group-hover","docs":"https://hyperframes.heygen.com/catalog/components/avatar-group-hover","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/avatar-group-hover","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/avatar-group-hover.png"},"runs":"local"},{"slug":"hf.badge-pop","name":"badge-pop","title":"Badge Pop","summary":"A transitions.dev-inspired notification badge pop with elastic scale and count reveal","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["mock-ui","transitions","stats"],"tags":["video-primitive","transition-primitive","transitions-dev-port","badge","microinteraction"],"aspect":"any","slots":[{"id":"count","type":"string","label":"Count"},{"id":"accent","type":"enum","label":"Accent"},{"id":"surface","type":"enum","label":"Surface"}],"install":"npx hyperframes add badge-pop","docs":"https://hyperframes.heygen.com/catalog/components/badge-pop","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/badge-pop","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/badge-pop.png"},"runs":"local"},{"slug":"hf.bar-chart-race","name":"bar-chart-race","title":"Bar Chart Race","summary":"Ranked bars grow and overtake each other as a time series advances, with the axis rescaling as values climb and the accent handing over to whoever leads","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"charts","also":["stats","lists"],"tags":["data","chart","statistics","ranking"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":12,"slots":[{"id":"title","type":"string","label":"Title"},{"id":"subtitle","type":"string","label":"Subtitle"},{"id":"periods","type":"string","label":"Period labels (comma separated)"},{"id":"series","type":"string","label":"Series (one per line: Name: v1, v2, ...)"},{"id":"barCount","type":"number","label":"Bars shown"},{"id":"periodDuration","type":"number","label":"Seconds per period"},{"id":"valuePrefix","type":"string","label":"Value prefix"},{"id":"valueSuffix","type":"string","label":"Value suffix"},{"id":"valueDecimals","type":"number","label":"Value decimals"},{"id":"accent","type":"color","label":"Leader accent"}],"install":"npx hyperframes add bar-chart-race","docs":"https://hyperframes.heygen.com/catalog/blocks/bar-chart-race","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/bar-chart-race","license":"Apache-2.0","runs":"local"},{"slug":"hf.beat-accent","name":"beat-accent","title":"Beat Accent","summary":"A single music-hit sting: impact flash, micro scale-pulse on the subject, immediate decay.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"beat-sync","also":["particles","entrances","logos"],"tags":["motion-primitive","effects","burst","sting","emphasize","impact"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Accent text"},{"id":"flashColor","type":"enum","label":"Flash color"},{"id":"intensity","type":"number","label":"Intensity"}],"install":"npx hyperframes add beat-accent","docs":"https://hyperframes.heygen.com/catalog/components/beat-accent","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/beat-accent","license":"Apache-2.0","runs":"local"},{"slug":"hf.beat-freeze-cut","name":"beat-freeze-cut","title":"Beat Freeze Cut","summary":"A beat-driven speed ramp, freeze-frame hit, and hard-cut sequence for music-led promos and montages.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"beat-sync","also":["transitions"],"tags":["transition","music","beat-driven","freeze-frame"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"install":"npx hyperframes add beat-freeze-cut","docs":"https://hyperframes.heygen.com/catalog/blocks/beat-freeze-cut","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/beat-freeze-cut","license":"Apache-2.0","runs":"local"},{"slug":"hf.beat-pulse-background","name":"beat-pulse-background","title":"Beat Pulse Background","summary":"An accent-derived backdrop pulses its glow intensity and saturation on a deterministic, supplied beat grid.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"beat-sync","also":["backgrounds","entrances"],"tags":["motion-primitive","background","beat","pulse","rhythmic","reactive"],"aspect":"any","slots":[{"id":"beats","type":"string","label":"Beats"},{"id":"accent","type":"enum","label":"Accent"},{"id":"intensity","type":"enum","label":"Intensity"}],"install":"npx hyperframes add beat-pulse-background","docs":"https://hyperframes.heygen.com/catalog/components/beat-pulse-background","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/beat-pulse-background","license":"Apache-2.0","runs":"local"},{"slug":"hf.beat-timeline","name":"beat-timeline","title":"Beat Timeline","summary":"A paused master-timeline orchestration spine that pins titled beat rows to evenly spaced named labels. Each row enters on its label, holds with the sequence, then exits with the group.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"beat-sync","also":["steps","transitions"],"tags":["orchestration","transitions","sequencing","bridge","timeline"],"aspect":"any","slots":[{"id":"beatCount","type":"number","label":"Beat count"},{"id":"interval","type":"number","label":"Interval"},{"id":"labels","type":"string","label":"Labels"}],"install":"npx hyperframes add beat-timeline","docs":"https://hyperframes.heygen.com/catalog/components/beat-timeline","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/beat-timeline","license":"Apache-2.0","runs":"local"},{"slug":"hf.before-after-wipe","name":"before-after-wipe","title":"Before After Wipe","summary":"Two full-bleed content slots compare before and after states as a persistent divider wipes the after layer over the before layer and rests at a configurable split…","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"comparisons","also":["transitions","mock-ui"],"tags":["prop","ui-props","compare","comparison","split-screen","holdable","before-after","wipe","slots"],"aspect":"any","slots":[{"id":"label_a","type":"string","label":"Before label"},{"id":"label_b","type":"string","label":"After label"},{"id":"rest_split","type":"number","label":"Resting split"},{"id":"wipe_at","type":"number","label":"Wipe start"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add before-after-wipe","docs":"https://hyperframes.heygen.com/catalog/components/before-after-wipe","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/before-after-wipe","license":"Apache-2.0","runs":"local"},{"slug":"hf.blob","name":"blob","title":"Blob","summary":"A soft coral and pink blob with a warm highlight slowly changes shape on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["backgrounds","annotations"],"tags":["webgpu","webgpu-shader","background","abstract","organic","gradient"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add blob","docs":"https://hyperframes.heygen.com/catalog/blocks/blob","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/blob","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/blob.mp4"},"runs":"local"},{"slug":"hf.blue-sweater-intro-video","name":"blue-sweater-intro-video","title":"Blue Sweater Intro Video","summary":"Warm AI creator intro sequence that resolves into an X follow card for @_blue_sweater_.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"intros","also":["social-cards"],"tags":["showcase","ai","creator","sfx"],"author":"Joe Sai","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":12,"install":"npx hyperframes add blue-sweater-intro-video","docs":"https://hyperframes.heygen.com/catalog/blocks/blue-sweater-intro-video","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/blue-sweater-intro-video","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/blue-sweater-intro-video.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/blue-sweater-intro-video.mp4"},"runs":"local"},{"slug":"hf.blur-in","name":"blur-in","title":"Blur In","summary":"An Operator Black word-level content reveal that resolves its own text from controlled blur","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["filters","entrances"],"tags":["video-primitive","blur-in","text-effect"],"aspect":"any","slots":[{"id":"size","type":"number","label":"Size"},{"id":"tone","type":"enum","label":"Tone"},{"id":"align","type":"enum","label":"Align"}],"install":"npx hyperframes add blur-in","docs":"https://hyperframes.heygen.com/catalog/components/blur-in","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/blur-in","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/blur-in.png"},"runs":"local"},{"slug":"hf.blur-out-up","name":"blur-out-up","title":"Blur Out Up","summary":"Words arrive clean and depart upward with increasing blur for airy exits.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["filters","entrances"],"tags":["motion-primitive","typography"],"aspect":"any","slots":[{"id":"direction","type":"enum","label":"Direction"},{"id":"distance","type":"enum","label":"Distance"},{"id":"blur","type":"enum","label":"Blur"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add blur-out-up","docs":"https://hyperframes.heygen.com/catalog/components/blur-out-up","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/blur-out-up","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/blur-out-up.png"},"runs":"local"},{"slug":"hf.bottom-up-letters","name":"bottom-up-letters","title":"Bottom Up Letters","summary":"Splits text into letters and reveals each glyph from below with deterministic staggered timing","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances"],"tags":["motion-primitive","text","letters","reveal"],"aspect":"any","slots":[{"id":"unit","type":"enum","label":"Split unit"},{"id":"direction","type":"enum","label":"Direction"},{"id":"travel","type":"enum","label":"Travel"}],"install":"npx hyperframes add bottom-up-letters","docs":"https://hyperframes.heygen.com/catalog/components/bottom-up-letters","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/bottom-up-letters","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/bottom-up-letters.png"},"runs":"local"},{"slug":"hf.browser-device-stage","name":"browser-device-stage","title":"Browser Device Stage","summary":"A generic app surface in token-native device chrome (browser, window, or phone). The screen is a slot for caller img/video/HTML with a token-styled skeleton default; one settle entrance, a readable hold…","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"devices","also":["layouts","showcases","entrances"],"tags":["stage","product-demo","device","browser","phone","slot","chrome"],"aspect":"any","slots":[{"id":"chrome","type":"enum","label":"Chrome"},{"id":"title","type":"string","label":"Title"},{"id":"swap_at","type":"number","label":"Swap at"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add browser-device-stage","docs":"https://hyperframes.heygen.com/catalog/components/browser-device-stage","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/browser-device-stage","license":"Apache-2.0","runs":"local"},{"slug":"hf.camcorder-hud","name":"camcorder-hud","title":"Camcorder HUD","summary":"Responsive REC, battery, editable date placeholder, and timeline-driven counter overlay for creator-camera and camcorder treatments","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"hud","also":["camera","textures","stats"],"tags":["camcorder","camera","recording","hud","overlay","creator","media-treatment-overlay"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add camcorder-hud","docs":"https://hyperframes.heygen.com/catalog/blocks/camcorder-hud","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/camcorder-hud","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/camcorder-hud.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/camcorder-hud.mp4"},"runs":"local"},{"slug":"hf.camera-dolly-zoom","name":"camera-dolly-zoom","title":"Dolly Zoom (Vertigo Shot)","summary":"Camera tracks toward or away from the subject while the field of view changes the opposite way, so the subject holds its frame size while the background collapses behind it or rushes in…","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"camera","also":["three-d","backgrounds"],"tags":["camera","depth","3d","cinematic"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"slots":[{"id":"direction","type":"enum","label":"Dolly direction"},{"id":"strength","type":"number","label":"Move strength (end / start distance ratio)"},{"id":"subjectDistance","type":"number","label":"Camera-to-subject distance at the start of the move"},{"id":"easing","type":"enum","label":"Dolly easing"}],"install":"npx hyperframes add camera-dolly-zoom","docs":"https://hyperframes.heygen.com/catalog/blocks/camera-dolly-zoom","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/camera-dolly-zoom","license":"Apache-2.0","runs":"local"},{"slug":"hf.camera-rig-depth-stack","name":"camera-rig-depth-stack","title":"Camera Rig Depth Stack","summary":"A 3D camera-rig-style card stack with depth, parallax, and focus shift.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"camera","also":["three-d"],"tags":["advanced-motion","hyperframes-native"],"aspect":"any","install":"npx hyperframes add camera-rig-depth-stack","docs":"https://hyperframes.heygen.com/catalog/components/camera-rig-depth-stack","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/camera-rig-depth-stack","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/camera-rig-depth-stack.png"},"runs":"local"},{"slug":"hf.camera-scan-gate","name":"camera-scan-gate","title":"Camera Scan Gate","summary":"A camera and QR recognition moment with a viewfinder sweep, bracket lock, confirmation pulse, and verified next beat.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"mock-ui","also":["camera","beat-sync","entrances"],"tags":["prop","ui-props","camera","qr","scan","recognition","interaction","demonstrate"],"aspect":"any","slots":[{"id":"scanColor","type":"string","label":"Scan color"},{"id":"targetLabel","type":"string","label":"Target label"},{"id":"sweepSpeed","type":"number","label":"Sweep speed"}],"install":"npx hyperframes add camera-scan-gate","docs":"https://hyperframes.heygen.com/catalog/components/camera-scan-gate","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/camera-scan-gate","license":"Apache-2.0","runs":"local"},{"slug":"hf.camera-shake","name":"camera-shake","title":"Camera Shake","summary":"Procedural handheld, telephoto and rig camera shake for any wrapper: nine measured profiles with per-lens projection, closed-form and seek-safe","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"camera","also":["galleries","mock-ui"],"tags":["camera","shake","handheld","effect","cinematic"],"aspect":"any","slots":[{"id":"shakeProfile","type":"enum","label":"Shake profile"},{"id":"shakeIntensity","type":"number","label":"Intensity multiplier"},{"id":"shakeFrequency","type":"number","label":"Frequency multiplier"},{"id":"shakeRotation","type":"boolean","label":"Include rotation (roll + tilt/pan)"}],"install":"npx hyperframes add camera-shake","docs":"https://hyperframes.heygen.com/catalog/components/camera-shake","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/camera-shake","license":"Apache-2.0","runs":"local"},{"slug":"hf.canopy-part-title","name":"canopy-part-title","title":"Canopy Part Title","summary":"Leaves sweep through the frame and part to reveal the headline.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"title-cards","also":["headlines","three-d","entrances"],"tags":["3d-motion","title-card","leaves","organic","depth-of-field","two-headlines","sweep"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":12,"install":"npx hyperframes add canopy-part-title","docs":"https://hyperframes.heygen.com/catalog/blocks/canopy-part-title","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/canopy-part-title","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/canopy-part-title.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/canopy-part-title.mp4"},"runs":"local"},{"slug":"hf.caption-blend-difference","name":"caption-blend-difference","title":"Blend Difference","summary":"Auto-inverting text using mix-blend-mode: difference — flips between white and black per-pixel against the background","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"captions","also":["text-effects","backgrounds"],"tags":["text","text-effect","effect","blend-mode","contrast","inversion"],"aspect":"any","install":"npx hyperframes add caption-blend-difference","docs":"https://hyperframes.heygen.com/catalog/components/caption-blend-difference","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-blend-difference","license":"Apache-2.0","runs":"local"},{"slug":"hf.caption-camera-follow","name":"caption-camera-follow","title":"Camera Follow Captions","summary":"One sentence written across a world far larger than the frame. Each word is sized against everything already written, so the block grows geometrically and the camera pulls back at a steady rate to keep landing the new…","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","also":["social-cards","camera","text-effects"],"tags":["captions","caption-style","camera","typography","motion-primitive","portrait"],"aspect":"any","slots":[{"id":"accent","type":"enum","label":"Accent"},{"id":"framing","type":"enum","label":"Framing"},{"id":"smear","type":"enum","label":"Smear"}],"install":"npx hyperframes add caption-camera-follow","docs":"https://hyperframes.heygen.com/catalog/components/caption-camera-follow","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-camera-follow","license":"Apache-2.0","runs":"local"},{"slug":"hf.caption-clip-wipe","name":"caption-clip-wipe","title":"Clip Wipe","summary":"Left-to-right clip-path wipe reveal per word","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","also":["transitions","entrances","text-effects"],"tags":["captions","caption-style","wipe","clip-path","reveal"],"aspect":"any","install":"npx hyperframes add caption-clip-wipe","docs":"https://hyperframes.heygen.com/catalog/components/caption-clip-wipe","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-clip-wipe","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/caption-clip-wipe.png","video":"https://static.heygen.ai/hyperframes-oss/registry/components/caption-clip-wipe/preview-v2.mp4"},"runs":"local"},{"slug":"hf.caption-editorial-emphasis","name":"caption-editorial-emphasis","title":"Editorial Emphasis","summary":"Dual-font system with dramatic size contrast for emphasis words","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","also":["entrances","text-effects"],"tags":["captions","caption-style","editorial","typography","emphasis"],"aspect":"any","install":"npx hyperframes add caption-editorial-emphasis","docs":"https://hyperframes.heygen.com/catalog/components/caption-editorial-emphasis","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-editorial-emphasis","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/caption-editorial-emphasis.png","video":"https://static.heygen.ai/hyperframes-oss/registry/components/caption-editorial-emphasis/preview.mp4?v=1779051416"},"runs":"local"},{"slug":"hf.caption-emoji-pop","name":"caption-emoji-pop","title":"Emoji Pop","summary":"Emoji integration with stroked text and horizontal squeeze entrance","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","also":["entrances","text-effects"],"tags":["captions","caption-style","emoji","social"],"aspect":"any","install":"npx hyperframes add caption-emoji-pop","docs":"https://hyperframes.heygen.com/catalog/components/caption-emoji-pop","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-emoji-pop","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/caption-emoji-pop.png","video":"https://static.heygen.ai/hyperframes-oss/registry/components/caption-emoji-pop/preview.mp4?v=1779051416"},"runs":"local"},{"slug":"hf.caption-glitch-rgb","name":"caption-glitch-rgb","title":"Glitch RGB","summary":"RGB chromatic aberration with CRT scanline overlay","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","also":["filters","textures"],"tags":["captions","caption-style","glitch","cyber","tech"],"aspect":"any","install":"npx hyperframes add caption-glitch-rgb","docs":"https://hyperframes.heygen.com/catalog/components/caption-glitch-rgb","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-glitch-rgb","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/caption-glitch-rgb.png","video":"https://static.heygen.ai/hyperframes-oss/registry/components/caption-glitch-rgb/preview-v2.mp4"},"runs":"local"},{"slug":"hf.caption-gradient-fill","name":"caption-gradient-fill","title":"Gradient Fill","summary":"Gradient-clipped text with elastic bounce entrance","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","also":["backgrounds","text-effects","entrances"],"tags":["captions","caption-style","gradient","colorful"],"aspect":"any","install":"npx hyperframes add caption-gradient-fill","docs":"https://hyperframes.heygen.com/catalog/components/caption-gradient-fill","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-gradient-fill","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/caption-gradient-fill.png","video":"https://static.heygen.ai/hyperframes-oss/registry/components/caption-gradient-fill/preview-v2.mp4"},"runs":"local"},{"slug":"hf.caption-highlight","name":"caption-highlight","title":"Highlight","summary":"Red background sweep behind each active word, TikTok-style","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","also":["annotations","social-cards","text-effects"],"tags":["captions","caption-style","highlight","social","tiktok"],"aspect":"any","install":"npx hyperframes add caption-highlight","docs":"https://hyperframes.heygen.com/catalog/components/caption-highlight","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-highlight","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/caption-highlight.png","video":"https://static.heygen.ai/hyperframes-oss/registry/components/caption-highlight/preview-v2.mp4"},"runs":"local"},{"slug":"hf.caption-kinetic-slam","name":"caption-kinetic-slam","title":"Kinetic Slam","summary":"Full-screen single-word display with alternating entrance directions","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","also":["kinetic-type","text-effects","entrances"],"tags":["captions","caption-style","kinetic","typography","slam"],"aspect":"any","install":"npx hyperframes add caption-kinetic-slam","docs":"https://hyperframes.heygen.com/catalog/components/caption-kinetic-slam","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-kinetic-slam","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/caption-kinetic-slam.png","video":"https://static.heygen.ai/hyperframes-oss/registry/components/caption-kinetic-slam/preview.mp4?v=1779051416"},"runs":"local"},{"slug":"hf.caption-matrix-decode","name":"caption-matrix-decode","title":"Matrix Decode","summary":"Character scramble animation before text reveal","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","also":["text-effects","entrances"],"tags":["captions","caption-style","matrix","scramble","decode"],"aspect":"any","install":"npx hyperframes add caption-matrix-decode","docs":"https://hyperframes.heygen.com/catalog/components/caption-matrix-decode","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-matrix-decode","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/caption-matrix-decode.png","video":"https://static.heygen.ai/hyperframes-oss/registry/components/caption-matrix-decode/preview-v2.mp4"},"runs":"local"},{"slug":"hf.caption-neon-accent","name":"caption-neon-accent","title":"Neon Accent","summary":"Multi-color neon glow accents with wiggle drift animation","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","tags":["captions","caption-style","neon","glow","accent"],"aspect":"any","install":"npx hyperframes add caption-neon-accent","docs":"https://hyperframes.heygen.com/catalog/components/caption-neon-accent","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-neon-accent","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/caption-neon-accent.png","video":"https://static.heygen.ai/hyperframes-oss/registry/components/caption-neon-accent/preview.mp4?v=1779051416"},"runs":"local"},{"slug":"hf.caption-neon-glow","name":"caption-neon-glow","title":"Neon Glow","summary":"Cyan and magenta neon glow with keyword accent colors","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","also":["text-effects"],"tags":["captions","caption-style","neon","glow","gaming"],"aspect":"any","install":"npx hyperframes add caption-neon-glow","docs":"https://hyperframes.heygen.com/catalog/components/caption-neon-glow","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-neon-glow","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/caption-neon-glow.png","video":"https://static.heygen.ai/hyperframes-oss/registry/components/caption-neon-glow/preview.mp4?v=1779051416"},"runs":"local"},{"slug":"hf.caption-parallax-layers","name":"caption-parallax-layers","title":"Parallax Layers","summary":"Behind-subject 3D text layering with vertical stretch effect","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","also":["camera","three-d","text-effects"],"tags":["captions","caption-style","parallax","3d","depth"],"aspect":"any","install":"npx hyperframes add caption-parallax-layers","docs":"https://hyperframes.heygen.com/catalog/components/caption-parallax-layers","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-parallax-layers","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/caption-parallax-layers.png","video":"https://static.heygen.ai/hyperframes-oss/registry/components/caption-parallax-layers/preview.mp4?v=1779051692"},"runs":"local"},{"slug":"hf.caption-particle-burst","name":"caption-particle-burst","title":"Particle Burst","summary":"Keyword words trigger colored particle explosions","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","also":["particles","text-effects"],"tags":["captions","caption-style","particles","burst","effects"],"aspect":"any","install":"npx hyperframes add caption-particle-burst","docs":"https://hyperframes.heygen.com/catalog/components/caption-particle-burst","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-particle-burst","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/caption-particle-burst.png","video":"https://static.heygen.ai/hyperframes-oss/registry/components/caption-particle-burst/preview.mp4?v=1779051416"},"runs":"local"},{"slug":"hf.caption-pill-karaoke","name":"caption-pill-karaoke","title":"Pill Karaoke","summary":"Pill-shaped container with per-word karaoke color highlight","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","also":["annotations","text-effects"],"tags":["captions","caption-style","karaoke","pill"],"aspect":"any","install":"npx hyperframes add caption-pill-karaoke","docs":"https://hyperframes.heygen.com/catalog/components/caption-pill-karaoke","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-pill-karaoke","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/caption-pill-karaoke.png","video":"https://static.heygen.ai/hyperframes-oss/registry/components/caption-pill-karaoke/preview.mp4?v=1779051416"},"runs":"local"},{"slug":"hf.caption-texture","name":"caption-texture","title":"Texture","summary":"Flowing texture mask over large uppercase text — ships with 6 textures (lava, marble, metal, wood, concrete, rock), configurable via the texture variable","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","also":["textures","text-effects"],"tags":["captions","caption-style","texture","mask"],"aspect":"any","slots":[{"id":"texture","type":"string"}],"install":"npx hyperframes add caption-texture","docs":"https://hyperframes.heygen.com/catalog/components/caption-texture","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-texture","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/caption-texture.png","video":"https://static.heygen.ai/hyperframes-oss/registry/components/caption-texture-lava/preview.mp4?v=1779051416"},"runs":"local"},{"slug":"hf.caption-weight-shift","name":"caption-weight-shift","title":"Weight Shift","summary":"Elegant font-weight transition between caption lines","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"captions","also":["text-effects","transitions"],"tags":["captions","caption-style","minimal","typography"],"aspect":"any","install":"npx hyperframes add caption-weight-shift","docs":"https://hyperframes.heygen.com/catalog/components/caption-weight-shift","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caption-weight-shift","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/caption-weight-shift.png","video":"https://static.heygen.ai/hyperframes-oss/registry/components/caption-weight-shift/preview-v2.mp4"},"runs":"local"},{"slug":"hf.card-resize","name":"card-resize","title":"Card Resize","summary":"A transitions.dev-inspired card resize primitive that expands a compact card into a detail panel","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"mock-ui","also":["transitions","layouts"],"tags":["video-primitive","transition-primitive","transitions-dev-port","card","layout"],"aspect":"any","slots":[{"id":"surface","type":"enum","label":"Surface"},{"id":"accent","type":"enum","label":"Accent"},{"id":"elevation","type":"enum","label":"Elevation"}],"install":"npx hyperframes add card-resize","docs":"https://hyperframes.heygen.com/catalog/components/card-resize","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/card-resize","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/card-resize.png"},"runs":"local"},{"slug":"hf.caret-swap","name":"caret-swap","title":"Caret Swap","summary":"A gradient caret expands over one phrase, collapses to the left, then types its replacement with a blinking caret.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances","backgrounds"],"tags":["motion-primitive","text-effects","typography","swap","typewriter","remocn-port"],"author":"Remocn","aspect":"any","slots":[{"id":"from_text","type":"string","label":"From text"},{"id":"to_text","type":"string","label":"To text"},{"id":"font_size","type":"number","label":"Font size"},{"id":"font_weight","type":"enum","label":"Font weight"},{"id":"color","type":"color","label":"Text color"},{"id":"caret_color","type":"color","label":"Caret top"},{"id":"caret_color_end","type":"color","label":"Caret bottom"}],"install":"npx hyperframes add caret-swap","docs":"https://hyperframes.heygen.com/catalog/components/caret-swap","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/caret-swap","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-circle-1","name":"carousel-circle-1","title":"Circle Carousel 1","summary":"Image cards ride a circle with a size gradient by depth angle, sweeping in fast-slow-fast swings (Circle style 1); 12 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["backgrounds","entrances"],"tags":["carousel","gallery","images","showcase","circle"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-circle-1","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-circle-1","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-circle-1","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-circle-2","name":"carousel-circle-2","title":"Circle Carousel 2","summary":"Image cards ride a circle with a size gradient by depth angle, sweeping in fast-slow-fast swings (Circle style 2); 12 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["backgrounds","entrances"],"tags":["carousel","gallery","images","showcase","circle"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-circle-2","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-circle-2","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-circle-2","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-circle-3","name":"carousel-circle-3","title":"Circle Carousel 3","summary":"Image cards ride a circle with a size gradient by depth angle, sweeping in fast-slow-fast swings (Circle style 3); 12 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["backgrounds","entrances"],"tags":["carousel","gallery","images","showcase","circle"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-circle-3","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-circle-3","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-circle-3","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-circle-4","name":"carousel-circle-4","title":"Circle Carousel 4","summary":"Image cards ride a circle with a size gradient by depth angle, sweeping in fast-slow-fast swings (Circle style 4); 12 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["backgrounds","entrances"],"tags":["carousel","gallery","images","showcase","circle"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-circle-4","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-circle-4","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-circle-4","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-circle-5","name":"carousel-circle-5","title":"Circle Carousel 5","summary":"Image cards ride a circle with a size gradient by depth angle, sweeping in fast-slow-fast swings (Circle style 5); 12 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["backgrounds","entrances"],"tags":["carousel","gallery","images","showcase","circle"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-circle-5","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-circle-5","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-circle-5","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-orbit-1","name":"carousel-orbit-1","title":"Orbit Carousel 1","summary":"Image cards on a spinning 3D Fibonacci sphere, billboarded to the camera, sized by camera distance (Orbit style 1); 24 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["camera","three-d"],"tags":["carousel","gallery","images","showcase","orbit","3d"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"image13","type":"image","label":"Card image 13"},{"id":"image14","type":"image","label":"Card image 14"},{"id":"image15","type":"image","label":"Card image 15"},{"id":"image16","type":"image","label":"Card image 16"},{"id":"image17","type":"image","label":"Card image 17"},{"id":"image18","type":"image","label":"Card image 18"},{"id":"image19","type":"image","label":"Card image 19"},{"id":"image20","type":"image","label":"Card image 20"},{"id":"image21","type":"image","label":"Card image 21"},{"id":"image22","type":"image","label":"Card image 22"},{"id":"image23","type":"image","label":"Card image 23"},{"id":"image24","type":"image","label":"Card image 24"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-orbit-1","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-orbit-1","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-orbit-1","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-orbit-2","name":"carousel-orbit-2","title":"Orbit Carousel 2","summary":"Image cards on a spinning 3D Fibonacci sphere, billboarded to the camera, sized by camera distance (Orbit style 2); 24 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["camera","three-d"],"tags":["carousel","gallery","images","showcase","orbit","3d"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"image13","type":"image","label":"Card image 13"},{"id":"image14","type":"image","label":"Card image 14"},{"id":"image15","type":"image","label":"Card image 15"},{"id":"image16","type":"image","label":"Card image 16"},{"id":"image17","type":"image","label":"Card image 17"},{"id":"image18","type":"image","label":"Card image 18"},{"id":"image19","type":"image","label":"Card image 19"},{"id":"image20","type":"image","label":"Card image 20"},{"id":"image21","type":"image","label":"Card image 21"},{"id":"image22","type":"image","label":"Card image 22"},{"id":"image23","type":"image","label":"Card image 23"},{"id":"image24","type":"image","label":"Card image 24"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-orbit-2","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-orbit-2","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-orbit-2","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-orbit-3","name":"carousel-orbit-3","title":"Orbit Carousel 3","summary":"Image cards on a spinning 3D Fibonacci sphere, billboarded to the camera, sized by camera distance (Orbit style 3); 24 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["camera","three-d"],"tags":["carousel","gallery","images","showcase","orbit","3d"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"image13","type":"image","label":"Card image 13"},{"id":"image14","type":"image","label":"Card image 14"},{"id":"image15","type":"image","label":"Card image 15"},{"id":"image16","type":"image","label":"Card image 16"},{"id":"image17","type":"image","label":"Card image 17"},{"id":"image18","type":"image","label":"Card image 18"},{"id":"image19","type":"image","label":"Card image 19"},{"id":"image20","type":"image","label":"Card image 20"},{"id":"image21","type":"image","label":"Card image 21"},{"id":"image22","type":"image","label":"Card image 22"},{"id":"image23","type":"image","label":"Card image 23"},{"id":"image24","type":"image","label":"Card image 24"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-orbit-3","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-orbit-3","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-orbit-3","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-orbit-4","name":"carousel-orbit-4","title":"Orbit Carousel 4","summary":"Image cards on a spinning 3D Fibonacci sphere, billboarded to the camera, sized by camera distance (Orbit style 4); 24 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["camera","three-d"],"tags":["carousel","gallery","images","showcase","orbit","3d"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"image13","type":"image","label":"Card image 13"},{"id":"image14","type":"image","label":"Card image 14"},{"id":"image15","type":"image","label":"Card image 15"},{"id":"image16","type":"image","label":"Card image 16"},{"id":"image17","type":"image","label":"Card image 17"},{"id":"image18","type":"image","label":"Card image 18"},{"id":"image19","type":"image","label":"Card image 19"},{"id":"image20","type":"image","label":"Card image 20"},{"id":"image21","type":"image","label":"Card image 21"},{"id":"image22","type":"image","label":"Card image 22"},{"id":"image23","type":"image","label":"Card image 23"},{"id":"image24","type":"image","label":"Card image 24"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-orbit-4","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-orbit-4","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-orbit-4","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-orbit-5","name":"carousel-orbit-5","title":"Orbit Carousel 5","summary":"Image cards on a spinning 3D Fibonacci sphere, billboarded to the camera, sized by camera distance (Orbit style 5); 24 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["camera","three-d"],"tags":["carousel","gallery","images","showcase","orbit","3d"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"image13","type":"image","label":"Card image 13"},{"id":"image14","type":"image","label":"Card image 14"},{"id":"image15","type":"image","label":"Card image 15"},{"id":"image16","type":"image","label":"Card image 16"},{"id":"image17","type":"image","label":"Card image 17"},{"id":"image18","type":"image","label":"Card image 18"},{"id":"image19","type":"image","label":"Card image 19"},{"id":"image20","type":"image","label":"Card image 20"},{"id":"image21","type":"image","label":"Card image 21"},{"id":"image22","type":"image","label":"Card image 22"},{"id":"image23","type":"image","label":"Card image 23"},{"id":"image24","type":"image","label":"Card image 24"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-orbit-5","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-orbit-5","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-orbit-5","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-path-1","name":"carousel-path-1","title":"Path Carousel 1","summary":"Image cards ride an open bezier path (arc, V, diagonal, wave, S-curve) with depth scaling and tangent rotation (Path style 1); 24 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","tags":["carousel","gallery","images","showcase","path"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"image13","type":"image","label":"Card image 13"},{"id":"image14","type":"image","label":"Card image 14"},{"id":"image15","type":"image","label":"Card image 15"},{"id":"image16","type":"image","label":"Card image 16"},{"id":"image17","type":"image","label":"Card image 17"},{"id":"image18","type":"image","label":"Card image 18"},{"id":"image19","type":"image","label":"Card image 19"},{"id":"image20","type":"image","label":"Card image 20"},{"id":"image21","type":"image","label":"Card image 21"},{"id":"image22","type":"image","label":"Card image 22"},{"id":"image23","type":"image","label":"Card image 23"},{"id":"image24","type":"image","label":"Card image 24"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-path-1","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-path-1","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-path-1","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-path-2","name":"carousel-path-2","title":"Path Carousel 2","summary":"Image cards ride an open bezier path (arc, V, diagonal, wave, S-curve) with depth scaling and tangent rotation (Path style 2); 12 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","tags":["carousel","gallery","images","showcase","path"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-path-2","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-path-2","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-path-2","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-path-3","name":"carousel-path-3","title":"Path Carousel 3","summary":"Image cards ride an open bezier path (arc, V, diagonal, wave, S-curve) with depth scaling and tangent rotation (Path style 3); 12 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","tags":["carousel","gallery","images","showcase","path"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-path-3","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-path-3","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-path-3","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-path-4","name":"carousel-path-4","title":"Path Carousel 4","summary":"Image cards ride an open bezier path (arc, V, diagonal, wave, S-curve) with depth scaling and tangent rotation (Path style 4); 24 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","tags":["carousel","gallery","images","showcase","path"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"image13","type":"image","label":"Card image 13"},{"id":"image14","type":"image","label":"Card image 14"},{"id":"image15","type":"image","label":"Card image 15"},{"id":"image16","type":"image","label":"Card image 16"},{"id":"image17","type":"image","label":"Card image 17"},{"id":"image18","type":"image","label":"Card image 18"},{"id":"image19","type":"image","label":"Card image 19"},{"id":"image20","type":"image","label":"Card image 20"},{"id":"image21","type":"image","label":"Card image 21"},{"id":"image22","type":"image","label":"Card image 22"},{"id":"image23","type":"image","label":"Card image 23"},{"id":"image24","type":"image","label":"Card image 24"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-path-4","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-path-4","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-path-4","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-path-5","name":"carousel-path-5","title":"Path Carousel 5","summary":"Image cards ride an open bezier path (arc, V, diagonal, wave, S-curve) with depth scaling and tangent rotation (Path style 5); 24 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","tags":["carousel","gallery","images","showcase","path"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"image13","type":"image","label":"Card image 13"},{"id":"image14","type":"image","label":"Card image 14"},{"id":"image15","type":"image","label":"Card image 15"},{"id":"image16","type":"image","label":"Card image 16"},{"id":"image17","type":"image","label":"Card image 17"},{"id":"image18","type":"image","label":"Card image 18"},{"id":"image19","type":"image","label":"Card image 19"},{"id":"image20","type":"image","label":"Card image 20"},{"id":"image21","type":"image","label":"Card image 21"},{"id":"image22","type":"image","label":"Card image 22"},{"id":"image23","type":"image","label":"Card image 23"},{"id":"image24","type":"image","label":"Card image 24"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-path-5","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-path-5","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-path-5","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-text-circle-1","name":"carousel-text-circle-1","title":"Text + Circle Carousel 1","summary":"A headline mask-reveals word by word while a circle carousel converges from off-frame and threads the line, collapses to centre, hard-cuts to a second line that arrives at 1.4× (Circle style 1).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["text-effects","title-cards","kinetic-type"],"tags":["carousel","title-card","kinetic-text","images","showcase","circle"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":5,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"line1","type":"string","label":"Headline"},{"id":"line2","type":"string","label":"Second line"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-text-circle-1","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-text-circle-1","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-text-circle-1","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-text-circle-2","name":"carousel-text-circle-2","title":"Text + Circle Carousel 2","summary":"A headline mask-reveals word by word while a circle carousel converges from off-frame and threads the line, collapses to centre, hard-cuts to a second line that arrives at 1.4× (Circle style 2).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["text-effects","title-cards","kinetic-type"],"tags":["carousel","title-card","kinetic-text","images","showcase","circle"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":5,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"line1","type":"string","label":"Headline"},{"id":"line2","type":"string","label":"Second line"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-text-circle-2","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-text-circle-2","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-text-circle-2","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-text-circle-3","name":"carousel-text-circle-3","title":"Text + Circle Carousel 3","summary":"A headline mask-reveals word by word while a circle carousel converges from off-frame and threads the line, collapses to centre, hard-cuts to a second line that arrives at 1.4× (Circle style 3).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["text-effects","title-cards","kinetic-type"],"tags":["carousel","title-card","kinetic-text","images","showcase","circle"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":5,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"line1","type":"string","label":"Headline"},{"id":"line2","type":"string","label":"Second line"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-text-circle-3","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-text-circle-3","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-text-circle-3","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-text-circle-4","name":"carousel-text-circle-4","title":"Text + Circle Carousel 4","summary":"A headline mask-reveals word by word while a circle carousel converges from off-frame and threads the line, collapses to centre, hard-cuts to a second line that arrives at 1.4× (Circle style 4).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["text-effects","title-cards","kinetic-type"],"tags":["carousel","title-card","kinetic-text","images","showcase","circle"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":5,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"line1","type":"string","label":"Headline"},{"id":"line2","type":"string","label":"Second line"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-text-circle-4","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-text-circle-4","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-text-circle-4","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-text-circle-5","name":"carousel-text-circle-5","title":"Text + Circle Carousel 5","summary":"A headline mask-reveals word by word while a circle carousel converges from off-frame and threads the line, collapses to centre, hard-cuts to a second line that arrives at 1.4× (Circle style 5).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["text-effects","title-cards","kinetic-type"],"tags":["carousel","title-card","kinetic-text","images","showcase","circle"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":5,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"line1","type":"string","label":"Headline"},{"id":"line2","type":"string","label":"Second line"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-text-circle-5","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-text-circle-5","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-text-circle-5","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-vision-1","name":"carousel-vision-1","title":"Vision Carousel 1","summary":"A ring of large image cards tilted into a row under a 3D camera, each card turning toward the centre (Vision style 1); 12 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["three-d","camera"],"tags":["carousel","gallery","images","showcase","vision","3d"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-vision-1","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-vision-1","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-vision-1","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-vision-2","name":"carousel-vision-2","title":"Vision Carousel 2","summary":"A ring of large image cards tilted into a row under a 3D camera, each card turning toward the centre (Vision style 2); 12 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["three-d","camera"],"tags":["carousel","gallery","images","showcase","vision","3d"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-vision-2","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-vision-2","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-vision-2","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-vision-3","name":"carousel-vision-3","title":"Vision Carousel 3","summary":"A ring of large image cards tilted into a row under a 3D camera, each card turning toward the centre (Vision style 3); 12 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["three-d","camera"],"tags":["carousel","gallery","images","showcase","vision","3d"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-vision-3","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-vision-3","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-vision-3","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-vision-4","name":"carousel-vision-4","title":"Vision Carousel 4","summary":"A ring of large image cards tilted into a row under a 3D camera, each card turning toward the centre (Vision style 4); 12 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["three-d","camera"],"tags":["carousel","gallery","images","showcase","vision","3d"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-vision-4","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-vision-4","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-vision-4","license":"Apache-2.0","runs":"local"},{"slug":"hf.carousel-vision-5","name":"carousel-vision-5","title":"Vision Carousel 5","summary":"A ring of large image cards tilted into a row under a 3D camera, each card turning toward the centre (Vision style 5); 12 image slots.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["three-d","camera"],"tags":["carousel","gallery","images","showcase","vision","3d"],"author":"Jake Moran","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"image1","type":"image","label":"Card image 1"},{"id":"image2","type":"image","label":"Card image 2"},{"id":"image3","type":"image","label":"Card image 3"},{"id":"image4","type":"image","label":"Card image 4"},{"id":"image5","type":"image","label":"Card image 5"},{"id":"image6","type":"image","label":"Card image 6"},{"id":"image7","type":"image","label":"Card image 7"},{"id":"image8","type":"image","label":"Card image 8"},{"id":"image9","type":"image","label":"Card image 9"},{"id":"image10","type":"image","label":"Card image 10"},{"id":"image11","type":"image","label":"Card image 11"},{"id":"image12","type":"image","label":"Card image 12"},{"id":"speed","type":"number","label":"Speed"},{"id":"background","type":"color","label":"Background"}],"install":"npx hyperframes add carousel-vision-5","docs":"https://hyperframes.heygen.com/catalog/blocks/carousel-vision-5","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/carousel-vision-5","license":"Apache-2.0","runs":"local"},{"slug":"hf.char-slam-explode","name":"char-slam-explode","title":"Char Slam Explode","summary":"Headline glyphs hold in a deterministic scatter, then reassemble with an overshooting slam and a three-frame landing shake.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"kinetic-type","also":["text-effects","entrances","headlines"],"tags":["motion-primitive","typography","text-treatment","scatter","slam","impact"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Headline"},{"id":"accent","type":"enum","label":"Accent"},{"id":"spread","type":"enum","label":"Spread"}],"install":"npx hyperframes add char-slam-explode","docs":"https://hyperframes.heygen.com/catalog/components/char-slam-explode","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/char-slam-explode","license":"Apache-2.0","runs":"local"},{"slug":"hf.chart-story","name":"chart-story","title":"Chart Story","summary":"One chart builds from data in reading order and lands the exact supplied values: staggered bars, a left-to-right line with area fill, a sweeping donut, or filling progress bars…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"charts","also":["timers","entrances","annotations"],"tags":["motion-primitive","proof","stats","chart","bars","line","donut","progress","deterministic"],"aspect":"any","slots":[{"id":"type","type":"enum","label":"Chart type"},{"id":"data","type":"string","label":"Data"},{"id":"labels","type":"string","label":"Labels"},{"id":"emphasize","type":"number","label":"Emphasize"},{"id":"unit","type":"string","label":"Unit"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add chart-story","docs":"https://hyperframes.heygen.com/catalog/components/chart-story","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/chart-story","license":"Apache-2.0","runs":"local"},{"slug":"hf.chat-message","name":"chat-message","title":"Chat Message","summary":"One message arrives on the measured entry - scale 0.75, 0.12s, growing from its sender's corner. The type is an enum switched like marker-highlight's style: a received or sent bubble with a real tail, a large emoji row…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"chats","also":["mock-ui","annotations","title-cards"],"tags":["video-primitive","chat","mock-ui","message"],"author":"Miao Yang","aspect":"any","slots":[{"id":"type","type":"enum","label":"Type"},{"id":"text","type":"string","label":"Text"},{"id":"cardTitle","type":"string","label":"Card title"},{"id":"cardDomain","type":"string","label":"Card domain"},{"id":"tail","type":"enum","label":"Tail"},{"id":"delivered","type":"enum","label":"Delivered"}],"install":"npx hyperframes add chat-message","docs":"https://hyperframes.heygen.com/catalog/components/chat-message","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/chat-message","license":"Apache-2.0","runs":"local"},{"slug":"hf.chat-thread","name":"chat-thread","title":"Chat Thread","summary":"The measured conversation as one mountable scene at full fidelity: status bar, back badge, avatar and name pill, bubbles with real iMessage tails, a Delivered receipt, large emoji rows, a media placeholder, a link card…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"chats","also":["mock-ui","entrances","beat-sync"],"tags":["motion-primitive","chat","mock-ui","conversation","vertical"],"author":"Miao Yang","aspect":"any","slots":[{"id":"contact","type":"string","label":"Contact"},{"id":"unread","type":"number","label":"Unread badge"},{"id":"messages","type":"string","label":"Messages"},{"id":"beat","type":"number","label":"Beat"},{"id":"dots","type":"enum","label":"Typing dots"},{"id":"receipt","type":"enum","label":"Delivered receipt"}],"install":"npx hyperframes add chat-thread","docs":"https://hyperframes.heygen.com/catalog/components/chat-thread","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/chat-thread","license":"Apache-2.0","runs":"local"},{"slug":"hf.chatgpt-exchange","name":"chatgpt-exchange","title":"ChatGPT Exchange","summary":"A portrait ChatGPT-style exchange types and sends a prompt, streams an answer, assembles a comparison table, and scrolls back through the result","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"chats","also":["mock-ui","comparisons"],"tags":["showcase","mock-ui","ai","chat","vertical","ad-template"],"author":"Jake Moran","canvas":{"w":1080,"h":1920},"aspect":"9:16","duration":14.9,"install":"npx hyperframes add chatgpt-exchange","docs":"https://hyperframes.heygen.com/catalog/blocks/chatgpt-exchange","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/chatgpt-exchange","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/chatgpt-exchange/poster.jpg","video":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/chatgpt-exchange/preview.mp4"},"runs":"local"},{"slug":"hf.chromatic-aberration-wipe","name":"chromatic-aberration-wipe","title":"Chromatic Aberration Wipe","summary":"A fast slide wipe with RGB channel split on peak frames.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","also":["filters"],"tags":["video-primitive","transition-primitive"],"aspect":"any","slots":[{"id":"direction","type":"enum","label":"Direction"},{"id":"accent","type":"enum","label":"Accent"},{"id":"aberration","type":"number","label":"Aberration"}],"install":"npx hyperframes add chromatic-aberration-wipe","docs":"https://hyperframes.heygen.com/catalog/components/chromatic-aberration-wipe","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/chromatic-aberration-wipe","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/chromatic-aberration-wipe.png"},"runs":"local"},{"slug":"hf.chromatic-radial-split","name":"chromatic-radial-split","title":"Chromatic Radial Split","summary":"Shader transition with chromatic aberration radial split","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"filters","also":["transitions","shaders"],"tags":["transition","shader"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add chromatic-radial-split","docs":"https://hyperframes.heygen.com/catalog/blocks/chromatic-radial-split","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/chromatic-radial-split","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/chromatic-radial-split.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/chromatic-radial-split.mp4"},"runs":"local"},{"slug":"hf.chrome-orb","name":"chrome-orb","title":"Chrome Orb","summary":"A mirror-chrome orb reflects a bright studio light, on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","tags":["webgpu","webgpu-shader","object","chrome","metal","material"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add chrome-orb","docs":"https://hyperframes.heygen.com/catalog/blocks/chrome-orb","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/chrome-orb","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/chrome-orb.mp4"},"runs":"local"},{"slug":"hf.cinemagraph","name":"cinemagraph","title":"Cinemagraph","summary":"A still photograph with one living region: the frame is frozen while a single feathered window keeps moving - here, steam rising over a cup - drawn from the seek time alone with a period that divides the duration…","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","tags":["effect","cinemagraph","photo","loop","freeze-frame"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":10,"install":"npx hyperframes add cinemagraph","docs":"https://hyperframes.heygen.com/catalog/blocks/cinemagraph","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/cinemagraph","license":"Apache-2.0","runs":"local"},{"slug":"hf.cinematic-zoom","name":"cinematic-zoom","title":"Cinematic Zoom","summary":"Shader transition with dramatic zoom blur","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"camera","also":["transitions","shaders","filters"],"tags":["transition","shader"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add cinematic-zoom","docs":"https://hyperframes.heygen.com/catalog/blocks/cinematic-zoom","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/cinematic-zoom","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/cinematic-zoom.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/cinematic-zoom.mp4"},"runs":"local"},{"slug":"hf.claude-exchange","name":"claude-exchange","title":"Claude Exchange","summary":"A portrait Claude-style exchange types a prompt, works through search and reasoning steps, then streams a detailed answer with citations and actions","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"chats","also":["mock-ui","steps"],"tags":["showcase","mock-ui","ai","chat","vertical","ad-template"],"author":"Jake Moran","canvas":{"w":1080,"h":1920},"aspect":"9:16","duration":21.4,"install":"npx hyperframes add claude-exchange","docs":"https://hyperframes.heygen.com/catalog/blocks/claude-exchange","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/claude-exchange","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/claude-exchange/poster.jpg","video":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/claude-exchange/preview.mp4"},"runs":"local"},{"slug":"hf.code-3d-extrude","name":"code-3d-extrude","title":"Code 3D Extrude","summary":"Syntax-highlighted code on a lit, beveled 3D slab that rotates through real space and settles to a readable rest — true WebGL depth and lighting, not a 2D transform.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"code","also":["three-d","shaders","annotations"],"tags":["code","code-animation","3d","webgl","developer"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":8,"install":"npx hyperframes add code-3d-extrude","docs":"https://hyperframes.heygen.com/catalog/blocks/code-3d-extrude","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-3d-extrude","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-3d-extrude.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-3d-extrude.mp4"},"runs":"local"},{"slug":"hf.code-diff","name":"code-diff","title":"Code Diff","summary":"An edit shown as a colored diff — removed lines collapse in red, added lines expand in green.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"code","tags":["code","code-animation","diff","developer"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"install":"npx hyperframes add code-diff","docs":"https://hyperframes.heygen.com/catalog/blocks/code-diff","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-diff","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-diff.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-diff.mp4"},"runs":"local"},{"slug":"hf.code-highlight","name":"code-highlight","title":"Code Highlight Sweep","summary":"A highlight band sweeps across a target line while the surrounding context dims — draws the eye to one line.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"code","also":["annotations","entrances"],"tags":["code","code-animation","highlight","developer"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":5,"install":"npx hyperframes add code-highlight","docs":"https://hyperframes.heygen.com/catalog/blocks/code-highlight","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-highlight","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-highlight.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-highlight.mp4"},"runs":"local"},{"slug":"hf.code-morph","name":"code-morph","title":"Code Morph","summary":"One snippet transforms into another — tokens glide between positions, leavers fade out, enterers fade in. Shiki Magic Move re-driven as a paused GSAP timeline.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"code","also":["steps","entrances"],"tags":["code","code-animation","morph","refactor","developer"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":7,"install":"npx hyperframes add code-morph","docs":"https://hyperframes.heygen.com/catalog/blocks/code-morph","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-morph","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-morph.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-morph.mp4"},"runs":"local"},{"slug":"hf.code-particle-assemble","name":"code-particle-assemble","title":"Code Particle Assemble","summary":"Thousands of GPU points scatter through space and fly to the exact glyph pixels of the code, resolving into readable syntax-highlighted text — a particle system, not a token tween.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"code","also":["particles","shaders","annotations"],"tags":["code","code-animation","particles","gpu","webgl","developer"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":8,"install":"npx hyperframes add code-particle-assemble","docs":"https://hyperframes.heygen.com/catalog/blocks/code-particle-assemble","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-particle-assemble","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-particle-assemble.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-particle-assemble.mp4"},"runs":"local"},{"slug":"hf.code-scroll","name":"code-scroll","title":"Code Scroll To Line","summary":"The camera scrolls a long file to bring a target line to center and spotlights it — for walking through real modules.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"code","also":["camera"],"tags":["code","code-animation","scroll","developer"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"install":"npx hyperframes add code-scroll","docs":"https://hyperframes.heygen.com/catalog/blocks/code-scroll","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-scroll","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-scroll.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-scroll.mp4"},"runs":"local"},{"slug":"hf.code-shader-dissolve","name":"code-shader-dissolve","title":"Code Shader Dissolve","summary":"The code compiles into existence: a GPU fragment shader resolves it out of seeded noise with a chromatic dissolve front and edge glow, then holds crisp.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"code","also":["transitions","shaders","generative"],"tags":["code","code-animation","shader","webgl","developer"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":7,"install":"npx hyperframes add code-shader-dissolve","docs":"https://hyperframes.heygen.com/catalog/blocks/code-shader-dissolve","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-shader-dissolve","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-shader-dissolve.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-shader-dissolve.mp4"},"runs":"local"},{"slug":"hf.code-slice-hero","name":"code-slice-hero","title":"Code Slice Hero","summary":"A tiled headline surface flips cell by cell under a sweeping depth field to reveal the rear headline.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"code","also":["headlines","transitions","text-effects"],"tags":["3d-motion","transition","typography","tiles","flip","webgl2","shadows","two-headlines"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":8,"install":"npx hyperframes add code-slice-hero","docs":"https://hyperframes.heygen.com/catalog/blocks/code-slice-hero","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-slice-hero","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-slice-hero.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-slice-hero.mp4"},"runs":"local"},{"slug":"hf.code-snippet-apple-terminal-pro","name":"code-snippet-apple-terminal-pro","title":"Code Snippet - Apple Terminal Pro","summary":"Apple Terminal Pro profile: black background with grey text and lime green cursor, per-character typing animation of a shell session.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"code","also":["cursors","text-effects","backgrounds"],"tags":["code","developer","showcase","terminal","apple","apple-terminal"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":12,"install":"npx hyperframes add code-snippet-apple-terminal-pro","docs":"https://hyperframes.heygen.com/catalog/blocks/code-snippet-apple-terminal-pro","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-snippet-apple-terminal-pro","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-snippet-apple-terminal-pro.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-snippet-apple-terminal-pro.mp4"},"runs":"local"},{"slug":"hf.code-snippet-dark-2026","name":"code-snippet-dark-2026","title":"Code Snippet - Dark 2026","summary":"VS Code workbench with per-character typing animation in the Dark 2026 theme. Full editor chrome with activity bar, sidebar, tabs, terminal, and status bar.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"code","also":["comparisons","mock-ui","text-effects"],"tags":["code","developer","showcase","vscode"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":11,"install":"npx hyperframes add code-snippet-dark-2026","docs":"https://hyperframes.heygen.com/catalog/blocks/code-snippet-dark-2026","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-snippet-dark-2026","license":"Apache-2.0","runs":"local"},{"slug":"hf.code-snippet-dark-modern","name":"code-snippet-dark-modern","title":"Code Snippet - Dark Modern","summary":"VS Code workbench with per-character typing animation in the Dark Modern theme. Full editor chrome with activity bar, sidebar, tabs, terminal, and status bar.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"code","also":["comparisons","mock-ui","text-effects"],"tags":["code","developer","showcase","vscode"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":11,"install":"npx hyperframes add code-snippet-dark-modern","docs":"https://hyperframes.heygen.com/catalog/blocks/code-snippet-dark-modern","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-snippet-dark-modern","license":"Apache-2.0","runs":"local"},{"slug":"hf.code-terminal-run","name":"code-terminal-run","title":"Code Terminal Run","summary":"A token-chrome terminal panel runs one command: the prompt line types deterministically behind an integer-cycle caret, executes after a beat, and output lines print one per cue before a fresh prompt appears.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"code","also":["showcases","text-effects","entrances"],"tags":["motion-primitive","product-demo","terminal","typing","deterministic"],"aspect":"any","slots":[{"id":"prompt_glyph","type":"string","label":"Prompt glyph"},{"id":"cadence","type":"enum","label":"Cadence"},{"id":"cues","type":"string","label":"Cues"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add code-terminal-run","docs":"https://hyperframes.heygen.com/catalog/components/code-terminal-run","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/code-terminal-run","license":"Apache-2.0","runs":"local"},{"slug":"hf.code-typing","name":"code-typing","title":"Code Typing","summary":"Token-streamed typing reveal with a caret that tracks the frontier — deterministic, no CSS animation.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"code","also":["text-effects","entrances"],"tags":["code","code-animation","typing","developer"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":5,"install":"npx hyperframes add code-typing","docs":"https://hyperframes.heygen.com/catalog/blocks/code-typing","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/code-typing","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-typing.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/code-typing.mp4"},"runs":"local"},{"slug":"hf.color-wheel","name":"color-wheel","title":"Color Wheel","summary":"A wide gradient slides slowly through the colours of the rainbow. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["filters","backgrounds"],"tags":["webgpu","webgpu-shader","background","gradient","rainbow","color"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add color-wheel","docs":"https://hyperframes.heygen.com/catalog/blocks/color-wheel","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/color-wheel","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/color-wheel.mp4"},"runs":"local"},{"slug":"hf.colorama-wipe","name":"colorama-wipe","title":"Colorama Wipe","summary":"Headline reveal through a feathered, leaning wipe front that is blurred and colour-mapped as it passes, then settles to clean type and wipes off again — the After Effects masked-text + Compound Blur + Colorama 'shiny…","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"transitions","also":["headlines","text-effects","filters"],"tags":["text","reveal","wipe","colorama","gradient","blur","headline","saas"],"aspect":"any","install":"npx hyperframes add colorama-wipe","docs":"https://hyperframes.heygen.com/catalog/components/colorama-wipe","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/colorama-wipe","license":"Apache-2.0","runs":"local"},{"slug":"hf.comparison-split","name":"comparison-split","title":"Comparison Split","summary":"Two full-bleed panels compare before and after states as a persistent divider wipes the vivid after layer over the muted before layer and rests at a configurable split.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"comparisons","also":["mock-ui","transitions"],"tags":["prop","ui-props","compare","holdable","before-after","wipe"],"aspect":"any","slots":[{"id":"split","type":"number","label":"Split position"},{"id":"orientation","type":"enum","label":"Orientation"},{"id":"labelA","type":"string","label":"Before label"},{"id":"labelB","type":"string","label":"After label"}],"install":"npx hyperframes add comparison-split","docs":"https://hyperframes.heygen.com/catalog/components/comparison-split","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/comparison-split","license":"Apache-2.0","runs":"local"},{"slug":"hf.confetti","name":"confetti","title":"Confetti","summary":"A deterministic celebration burst with seeded particles and gravity.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"particles","tags":["effect"],"aspect":"any","install":"npx hyperframes add confetti","docs":"https://hyperframes.heygen.com/catalog/components/confetti","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/confetti","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/confetti.png"},"runs":"local"},{"slug":"hf.conic-progress-ring","name":"conic-progress-ring","title":"Conic Progress Ring","summary":"A token-driven conic progress ring whose angular fill and center count settle together from one registered percentage.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"timers","also":["stats"],"tags":["data","progress","ring","conic-gradient","prove","demonstrate"],"aspect":"any","slots":[{"id":"progress","type":"number","label":"Progress"},{"id":"thickness","type":"number","label":"Thickness"},{"id":"label","type":"string","label":"Center label"}],"install":"npx hyperframes add conic-progress-ring","docs":"https://hyperframes.heygen.com/catalog/components/conic-progress-ring","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/conic-progress-ring","license":"Apache-2.0","runs":"local"},{"slug":"hf.constellation-hub","name":"constellation-hub","title":"Constellation Hub","summary":"Feature nodes brighten in narration order as real-length SVG connectors draw outward from a fixed central hub, then settle into one lockup.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"diagrams","also":["showcases","entrances","title-cards"],"tags":["motion-primitive","feature-tour","hub","nodes","connector","reveal"],"aspect":"any","slots":[{"id":"hub_label","type":"string","label":"Hub label"},{"id":"nodes","type":"string","label":"Feature nodes"},{"id":"cues","type":"string","label":"Cues"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add constellation-hub","docs":"https://hyperframes.heygen.com/catalog/components/constellation-hub","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/constellation-hub","license":"Apache-2.0","runs":"local"},{"slug":"hf.cosmic-orb","name":"cosmic-orb","title":"Cosmic Orb","summary":"An iridescent soap-bubble planet: a slowly spinning sphere of nebula bands, dust lanes and twinkling stars wrapped in a refracting glass limb with chromatic aberration at the edge.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"three-d","also":["shaders","backgrounds","filters"],"tags":["webgl","shader","background","showcase","3d"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":10,"slots":[{"id":"hue","type":"number","label":"Nebula hue"},{"id":"accent","type":"number","label":"Accent hue"},{"id":"spin","type":"number","label":"Spin rate"},{"id":"stars","type":"number","label":"Star density"},{"id":"glow","type":"number","label":"Glow intensity"},{"id":"size","type":"number","label":"Orb size"},{"id":"pulse","type":"number","label":"Beat pulse"},{"id":"pulseEnvelope","type":"string","label":"Beat pulse envelope (comma-separated 0-1 samples)"},{"id":"backdrop","type":"color","label":"Backdrop"}],"install":"npx hyperframes add cosmic-orb","docs":"https://hyperframes.heygen.com/catalog/blocks/cosmic-orb","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/cosmic-orb","license":"Apache-2.0","runs":"local"},{"slug":"hf.count-up","name":"count-up","title":"Count Up","summary":"A token-native stat counter that eases between values, counting up or down, and lands with a restrained scale pulse.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"stats","also":["timers","entrances"],"tags":["motion-primitive","proof","stats","counter","number","countdown","deterministic"],"aspect":"any","slots":[{"id":"start","type":"number","label":"Start value"},{"id":"end","type":"number","label":"End value"},{"id":"prefix","type":"string","label":"Prefix"},{"id":"suffix","type":"string","label":"Suffix"},{"id":"accent","type":"enum","label":"Accent"},{"id":"glow","type":"boolean","label":"Glow"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add count-up","docs":"https://hyperframes.heygen.com/catalog/components/count-up","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/count-up","license":"Apache-2.0","runs":"local"},{"slug":"hf.cross-warp-morph","name":"cross-warp-morph","title":"Cross Warp Morph","summary":"Shader transition with cross-warped morphing","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["shaders"],"tags":["transition","shader"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add cross-warp-morph","docs":"https://hyperframes.heygen.com/catalog/blocks/cross-warp-morph","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/cross-warp-morph","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/cross-warp-morph.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/cross-warp-morph.mp4"},"runs":"local"},{"slug":"hf.cta-close","name":"cta-close","title":"CTA Close","summary":"A display-scale action line lands per word and fills the frame with air, one generous CTA capsule pops beneath it with a single overshoot, and the finished close holds completely still.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"outros","also":["mock-ui","entrances","text-effects"],"tags":["motion-primitive","ui-props","cta","end-card","close","ask"],"aspect":"any","slots":[{"id":"action_line","type":"string","label":"Action line"},{"id":"button_label","type":"string","label":"Button label"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add cta-close","docs":"https://hyperframes.heygen.com/catalog/components/cta-close","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cta-close","license":"Apache-2.0","runs":"local"},{"slug":"hf.cta-lockup","name":"cta-lockup","title":"CTA Lockup","summary":"A canonical closing lockup that reveals an action line, pops in an accent CTA capsule, settles supporting microcopy, and holds with confidence.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"outros","also":["title-cards","mock-ui","entrances"],"tags":["motion-primitive","ui-props","cta","end-card","lockup","ask"],"aspect":"any","slots":[{"id":"action_line","type":"string","label":"Action line"},{"id":"button_label","type":"string","label":"Button label"},{"id":"microcopy","type":"string","label":"Microcopy"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add cta-lockup","docs":"https://hyperframes.heygen.com/catalog/components/cta-lockup","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cta-lockup","license":"Apache-2.0","runs":"local"},{"slug":"hf.cuboid-carousel","name":"cuboid-carousel","title":"Cuboid Carousel","summary":"A chain of bevelled cuboids rides a travelling wave as a content carousel.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["three-d"],"tags":["3d-motion","carousel","cards","travelling-wave","pbr","shadows","room-environment"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6.7,"install":"npx hyperframes add cuboid-carousel","docs":"https://hyperframes.heygen.com/catalog/blocks/cuboid-carousel","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/cuboid-carousel","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/cuboid-carousel.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/cuboid-carousel.mp4"},"runs":"local"},{"slug":"hf.cursor-annotate","name":"cursor-annotate","title":"Annotate Cursor","summary":"A marker pen glides onto the frame and hand-draws a loose loop, an underline, or an arrow around a region, the ink laid exactly under its nib, then lifts and leaves.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","also":["annotations","entrances"],"tags":["cursor","motion-primitive","pen","annotation","draw-on","highlight"],"aspect":"any","slots":[{"id":"shape","type":"enum","label":"Mark"},{"id":"color","type":"color","label":"Ink"},{"id":"target_x","type":"number","label":"Region left"},{"id":"target_y","type":"number","label":"Region top"},{"id":"target_w","type":"number","label":"Region width"},{"id":"target_h","type":"number","label":"Region height"}],"install":"npx hyperframes add cursor-annotate","docs":"https://hyperframes.heygen.com/catalog/components/cursor-annotate","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cursor-annotate","license":"Apache-2.0","runs":"local"},{"slug":"hf.cursor-context-menu","name":"cursor-context-menu","title":"Context Menu Cursor","summary":"A cursor right-clicks a file, a context menu blooms from its tip, the hover highlight tracks the item under it, and the chosen action plays out: duplicate, rename, move to trash, or a confirmation toast.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","also":["mock-ui","entrances","annotations"],"tags":["cursor","motion-primitive","menu","right-click","desktop","files"],"aspect":"any","slots":[{"id":"items","type":"string","label":"Menu items"},{"id":"pick","type":"number","label":"Chosen item (0 = first)"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add cursor-context-menu","docs":"https://hyperframes.heygen.com/catalog/components/cursor-context-menu","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cursor-context-menu","license":"Apache-2.0","runs":"local"},{"slug":"hf.cursor-drag-drop","name":"cursor-drag-drop","title":"Drag and Drop Cursor","summary":"A cursor grabs a task card, lifts and tilts it into its motion, carries it in lockstep to an empty column, drops it with a small settle, and the list closes the gap behind it.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","also":["showcases","entrances","lists"],"tags":["cursor","motion-primitive","drag","drop","kanban","product-demo"],"aspect":"any","slots":[{"id":"card_label","type":"string","label":"Dragged card"},{"id":"accent","type":"color","label":"Accent"},{"id":"tone","type":"enum","label":"Board tone"}],"install":"npx hyperframes add cursor-drag-drop","docs":"https://hyperframes.heygen.com/catalog/components/cursor-drag-drop","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cursor-drag-drop","license":"Apache-2.0","runs":"local"},{"slug":"hf.cursor-glyph-trail","name":"cursor-glyph-trail","title":"Cursor Glyph Trail","summary":"A tutorial cursor path: on a settings screen the arrow clicks through three steps, leaving a dotted trail spaced evenly by distance and a numbered marker at each click; each step's trail fades as the next move begins.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","also":["text-effects","steps","entrances"],"tags":["cursor","motion-primitive","demonstrate","trail","tutorial","steps","deterministic"],"aspect":"any","slots":[{"id":"glyphs","type":"string","label":"Glyphs (deprecated)"},{"id":"density","type":"enum","label":"Density"},{"id":"path","type":"enum","label":"Path"},{"id":"fade","type":"number","label":"Fade"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add cursor-glyph-trail","docs":"https://hyperframes.heygen.com/catalog/components/cursor-glyph-trail","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cursor-glyph-trail","license":"Apache-2.0","runs":"local"},{"slug":"hf.cursor-marquee-select","name":"cursor-marquee-select","title":"Marquee Select Cursor","summary":"A cursor drags a selection rectangle across a photo grid; each tile rings and pops a check the frame the rectangle touches it, while a pill counts the selection up.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","also":["galleries","mock-ui","showcases"],"tags":["cursor","motion-primitive","select","marquee","grid","product-demo"],"aspect":"any","slots":[{"id":"accent","type":"color","label":"Accent"},{"id":"start_x","type":"number","label":"Drag start X"},{"id":"start_y","type":"number","label":"Drag start Y"},{"id":"end_x","type":"number","label":"Drag end X"},{"id":"end_y","type":"number","label":"Drag end Y"},{"id":"pill_label","type":"string","label":"Pill label"}],"install":"npx hyperframes add cursor-marquee-select","docs":"https://hyperframes.heygen.com/catalog/components/cursor-marquee-select","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cursor-marquee-select","license":"Apache-2.0","runs":"local"},{"slug":"hf.cursor-text-select","name":"cursor-text-select","title":"Text Select Cursor","summary":"An arrow turns into an I-beam over a document, drags a selection across a phrase character by character, raises a format toolbar, turns back into an arrow and clicks Bold.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","also":["mock-ui","text-effects","entrances"],"tags":["cursor","motion-primitive","text","selection","editor","toolbar"],"aspect":"any","slots":[{"id":"title","type":"string","label":"Heading"},{"id":"text","type":"string","label":"Paragraph"},{"id":"phrase","type":"string","label":"Phrase to select"},{"id":"accent","type":"color","label":"Accent"}],"install":"npx hyperframes add cursor-text-select","docs":"https://hyperframes.heygen.com/catalog/components/cursor-text-select","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cursor-text-select","license":"Apache-2.0","runs":"local"},{"slug":"hf.cursor-zoom-follow","name":"cursor-zoom-follow","title":"Zoom Follow Cursor","summary":"Screen-recording auto-zoom: the camera pushes in toward each upcoming click, trails the cursor on a smooth spring, marks every click with a press and a ring, then eases back out to the full screen as the cursor leaves.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","also":["social-cards","camera","showcases"],"tags":["cursor","camera","zoom","screen-recording","click","product-demo"],"aspect":"any","slots":[{"id":"image","type":"image","label":"Screenshot"},{"id":"zoom","type":"number","label":"Zoom"},{"id":"click1_x","type":"number","label":"Click 1 X"},{"id":"click1_y","type":"number","label":"Click 1 Y"},{"id":"click2_x","type":"number","label":"Click 2 X"},{"id":"click2_y","type":"number","label":"Click 2 Y"},{"id":"click3_x","type":"number","label":"Click 3 X"},{"id":"click3_y","type":"number","label":"Click 3 Y"},{"id":"accent","type":"color","label":"Ripple"}],"install":"npx hyperframes add cursor-zoom-follow","docs":"https://hyperframes.heygen.com/catalog/components/cursor-zoom-follow","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cursor-zoom-follow","license":"Apache-2.0","runs":"local"},{"slug":"hf.curtain-reveal","name":"curtain-reveal","title":"Curtain Reveal","summary":"Two pleated stage curtains gather outward from center, the way real velvet bunches at the tieback, revealing the stage underneath. A static pelmet frames the top; a soft spotlight can bloom in as they part.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["transitions","layouts"],"tags":["curtain","stage reveal","transition","motion-primitive"],"aspect":"any","slots":[{"id":"tone","type":"enum","label":"Curtain tone"},{"id":"pelmet","type":"enum","label":"Pelmet"},{"id":"spotlight","type":"enum","label":"Spotlight"}],"install":"npx hyperframes add curtain-reveal","docs":"https://hyperframes.heygen.com/catalog/components/curtain-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/curtain-reveal","license":"Apache-2.0","runs":"local"},{"slug":"hf.cut-the-curve","name":"cut-the-curve","title":"Cut the Curve","summary":"A velocity-matched directional hard cut: the outgoing subject accelerates with power4.in, swaps at peak velocity, and the incoming subject continues in the same direction with power4.out.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","tags":["transition","directional-cut","velocity-match","whip","bridge","demonstrate"],"aspect":"any","slots":[{"id":"subject","type":"enum","label":"Subject"},{"id":"direction","type":"enum","label":"Direction"},{"id":"cutFraction","type":"number","label":"Cut fraction"},{"id":"blurPx","type":"number","label":"Cut blur"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add cut-the-curve","docs":"https://hyperframes.heygen.com/catalog/components/cut-the-curve","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/cut-the-curve","license":"Apache-2.0","runs":"local"},{"slug":"hf.dart-cursor","name":"dart-cursor","title":"Dart Cursor","summary":"A bold outlined arrowhead that dives in from camera depth, flies nose-first with motion blur along its path, squashes on two clicks, and whips out of frame.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","also":["three-d","entrances","transitions"],"tags":["cursor","motion-primitive","pointer","click","motion-blur","depth"],"aspect":"any","slots":[{"id":"tone","type":"enum","label":"Tone"},{"id":"target_x","type":"number","label":"First click X"},{"id":"target_y","type":"number","label":"First click Y"},{"id":"target2_x","type":"number","label":"Second click X"},{"id":"target2_y","type":"number","label":"Second click Y"},{"id":"enter_from","type":"enum","label":"Enter from"},{"id":"exit_to","type":"enum","label":"Exit to"},{"id":"blur","type":"number","label":"Motion blur"}],"install":"npx hyperframes add dart-cursor","docs":"https://hyperframes.heygen.com/catalog/components/dart-cursor","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/dart-cursor","license":"Apache-2.0","runs":"local"},{"slug":"hf.data-chart","name":"data-chart","title":"Data Chart","summary":"Animated bar + line chart with staggered reveal, NYT-style typography, and value labels","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"charts","also":["stats","entrances"],"tags":["data","chart","statistics"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":15,"install":"npx hyperframes add data-chart","docs":"https://hyperframes.heygen.com/catalog/blocks/data-chart","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/data-chart","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/data-chart.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/data-chart.mp4"},"runs":"local"},{"slug":"hf.decision-tree","name":"decision-tree","title":"Decision Tree","summary":"Animated flowchart with branching paths","registry":"hyperframes","framework":"hyperframes","layer":"template","category":"diagrams","tags":[],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":10,"install":"npx hyperframes init my-video --example decision-tree","docs":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/decision-tree","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/decision-tree","license":"Apache-2.0","runs":"local"},{"slug":"hf.decline-chart","name":"decline-chart","title":"Decline Chart","summary":"A metric line draws downward as its value counts down and the ambient background darkens in lockstep.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"charts","also":["stats","entrances","backgrounds"],"tags":["motion-primitive","data","chart","decline","metric","problem"],"aspect":"any","slots":[{"id":"label","type":"string","label":"Metric label"},{"id":"start_value","type":"number","label":"Start value"},{"id":"end_value","type":"number","label":"End value"}],"install":"npx hyperframes add decline-chart","docs":"https://hyperframes.heygen.com/catalog/components/decline-chart","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/decline-chart","license":"Apache-2.0","runs":"local"},{"slug":"hf.device-frame-stage","name":"device-frame-stage","title":"Device Frame Stage","summary":"A phone or tablet mockup staged as a physical scene prop with a screen slot for arbitrary reconstructed UI, rising onto the stage, settling, and holding an idle float","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"devices","also":["layouts","mock-ui"],"tags":["prop","device","mobile","tablet","ui-props","holdable"],"aspect":"any","slots":[{"id":"device","type":"enum","label":"Device kind"},{"id":"cutout","type":"enum","label":"Camera cutout"},{"id":"body","type":"enum","label":"Body material"}],"install":"npx hyperframes add device-frame-stage","docs":"https://hyperframes.heygen.com/catalog/components/device-frame-stage","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/device-frame-stage","license":"Apache-2.0","runs":"local"},{"slug":"hf.directional-wipe","name":"directional-wipe","title":"Directional Wipe","summary":"A directional scene push that slides one panel over another.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","tags":["transition-primitive"],"aspect":"any","slots":[{"id":"palette","type":"enum","label":"Palette"},{"id":"corner","type":"enum","label":"Corner"}],"install":"npx hyperframes add directional-wipe","docs":"https://hyperframes.heygen.com/catalog/components/directional-wipe","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/directional-wipe","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/directional-wipe.png"},"runs":"local"},{"slug":"hf.domain-warp-dissolve","name":"domain-warp-dissolve","title":"Domain Warp Dissolve","summary":"Shader transition with fractal noise domain warping","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["shaders","generative"],"tags":["transition","shader"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add domain-warp-dissolve","docs":"https://hyperframes.heygen.com/catalog/blocks/domain-warp-dissolve","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/domain-warp-dissolve","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/domain-warp-dissolve.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/domain-warp-dissolve.mp4"},"runs":"local"},{"slug":"hf.drift-hold","name":"drift-hold","title":"Drift Hold","summary":"A centered content card stays subtly alive through loop-exact rotation, scale breathing, and a slow light sweep.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"camera","also":["backgrounds","entrances"],"tags":["motion-primitive","camera","ambient","drift","hold","loopable"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"intensity","type":"enum","label":"Intensity"}],"install":"npx hyperframes add drift-hold","docs":"https://hyperframes.heygen.com/catalog/components/drift-hold","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/drift-hold","license":"Apache-2.0","runs":"local"},{"slug":"hf.dynamic-grid","name":"dynamic-grid","title":"Dynamic Grid","summary":"A responsive animated grid background driven by CSS variables for SaaS, code, and data scenes","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"mock-ui","also":["backgrounds","entrances","code"],"tags":["video-primitive","motion-primitive","background","grid","ui"],"aspect":"any","slots":[{"id":"density","type":"enum","label":"Density"},{"id":"weight","type":"enum","label":"Weight"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add dynamic-grid","docs":"https://hyperframes.heygen.com/catalog/components/dynamic-grid","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/dynamic-grid","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/dynamic-grid.png"},"runs":"local"},{"slug":"hf.echo-smear","name":"echo-smear","title":"Echo Smear","summary":"Distance-adaptive streak — records each element's real trajectory (position, rotation, scale, opacity), then trails time-offset copies behind it in proportion to its speed, combined by brightest pixel…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","tags":["effect","smear","echo","motion-blur","velocity","after-effects","animation"],"aspect":"any","install":"npx hyperframes add echo-smear","docs":"https://hyperframes.heygen.com/catalog/components/echo-smear","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/echo-smear","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/echo-smear.png"},"runs":"local"},{"slug":"hf.echo-trail","name":"echo-trail","title":"Echo Trail","summary":"A moving element renders with N ghosted copies of itself at t minus i times delta, opacity stepped down per ghost; one traversal, echoes collapsing into the settled element at rest.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","tags":["motion-primitive","demonstrate","trail","onion-skin","ghosts","deterministic"],"aspect":"any","slots":[{"id":"echoes","type":"number","label":"Echoes"},{"id":"delta","type":"number","label":"Delta"},{"id":"path","type":"enum","label":"Path"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add echo-trail","docs":"https://hyperframes.heygen.com/catalog/components/echo-trail","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/echo-trail","license":"Apache-2.0","runs":"local"},{"slug":"hf.editorial-flash-overlay","name":"editorial-flash-overlay","title":"Editorial Flash Overlay","summary":"Finite neutral-warm light layers for a seek-safe camera-flash cut or social reveal","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"textures","also":["transitions","camera","entrances"],"tags":["flash","editorial","social","light","transition","overlay","media-treatment-overlay"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add editorial-flash-overlay","docs":"https://hyperframes.heygen.com/catalog/blocks/editorial-flash-overlay","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/editorial-flash-overlay","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/editorial-flash-overlay.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/editorial-flash-overlay.mp4"},"runs":"local"},{"slug":"hf.exploded-stack","name":"exploded-stack","title":"Exploded Stack","summary":"Isometric layer plates explode apart with a label beside each layer, hold, then collapse back into one stack. Built for architecture and system diagrams.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"diagrams","also":["three-d","shaders","stats"],"tags":["3d-object","three-js","webgl","isometric","exploded-view","layers","diagram","architecture"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":5,"install":"npx hyperframes add exploded-stack","docs":"https://hyperframes.heygen.com/catalog/blocks/exploded-stack","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/exploded-stack","license":"Apache-2.0","runs":"local"},{"slug":"hf.extended-keyframe","name":"extended-keyframe","title":"Extended Keyframe","summary":"The never-fully-lands arrival: an element covers most of its move in the first fifth of the duration and creeps the rest to the last frame, exits along its arrival vector…","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"kinetic-type","also":["text-effects","filters"],"tags":["motion","ease","arrival","kinetic-type","text","motion-blur","after-effects","slide-in","scale-in"],"aspect":"any","install":"npx hyperframes add extended-keyframe","docs":"https://hyperframes.heygen.com/catalog/components/extended-keyframe","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/extended-keyframe","license":"Apache-2.0","runs":"local"},{"slug":"hf.extruded-logo","name":"extruded-logo","title":"Extruded Logo","summary":"Beveled 3D letters flip up one by one, the word swings so light runs across the bevels, then settles for a readable hold. Chrome, gold or matte.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"logos","also":["three-d","title-cards","text-effects"],"tags":["3d-object","three-js","webgl","logo","text","extruded","title-card"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":5,"install":"npx hyperframes add extruded-logo","docs":"https://hyperframes.heygen.com/catalog/blocks/extruded-logo","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/extruded-logo","license":"Apache-2.0","runs":"local"},{"slug":"hf.facet-morph","name":"facet-morph","title":"Facet Morph","summary":"A faceted low-poly mass of 36 triangles continuously reshapes between three authored silhouettes (blob, mark, badge) with per-facet flat shading that recomputes as the vertices move…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"intros","also":["entrances","filters"],"tags":["motion-primitive","intro","morph","low-poly","svg","deterministic"],"aspect":"any","slots":[{"id":"forms","type":"string","label":"Forms"},{"id":"hold_last","type":"boolean","label":"Hold last"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add facet-morph","docs":"https://hyperframes.heygen.com/catalog/components/facet-morph","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/facet-morph","license":"Apache-2.0","runs":"local"},{"slug":"hf.fade-through","name":"fade-through","title":"Fade Through","summary":"A calm transition primitive that fades one layer out, passes through a wash, and reveals the next layer","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","also":["entrances"],"tags":["motion-primitive","transition","fade","crossfade","scene"],"aspect":"any","slots":[{"id":"wash","type":"enum","label":"Wash"},{"id":"strength","type":"number","label":"Strength"},{"id":"shape","type":"enum","label":"Shape"}],"install":"npx hyperframes add fade-through","docs":"https://hyperframes.heygen.com/catalog/components/fade-through","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/fade-through","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/fade-through.png"},"runs":"local"},{"slug":"hf.falling-lines","name":"falling-lines","title":"Falling Lines","summary":"White lines fall down the frame at varied speeds, each fading into a trail. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["textures","filters","backgrounds"],"tags":["webgpu","webgpu-shader","background","texture","lines","rain","monochrome"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add falling-lines","docs":"https://hyperframes.heygen.com/catalog/blocks/falling-lines","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/falling-lines","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/falling-lines.mp4"},"runs":"local"},{"slug":"hf.filmed-screen","name":"filmed-screen","title":"Filmed Screen","summary":"Your scene, filmed off a screen: perspective, depth of field that follows an element you name, LED sub-pixels and per-shot colour grades. Shots glide into each other, focus racks between elements…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"camera","also":["shaders","social-cards","filters"],"tags":["filmed","screen","monitor","led","camera","depth-of-field","html-in-canvas","shader","webgl","effect"],"aspect":"any","install":"npx hyperframes add filmed-screen","docs":"https://hyperframes.heygen.com/catalog/components/filmed-screen","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/filmed-screen","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/filmed-screen.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/filmed-screen.mp4"},"runs":"local"},{"slug":"hf.flash-through-white","name":"flash-through-white","title":"Flash Through White","summary":"Shader transition with white flash crossfade","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["shaders"],"tags":["transition","shader"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add flash-through-white","docs":"https://hyperframes.heygen.com/catalog/blocks/flash-through-white","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/flash-through-white","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/flash-through-white.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/flash-through-white.mp4"},"runs":"local"},{"slug":"hf.flowchart","name":"flowchart","title":"Flowchart","summary":"Animated decision tree with SVG connectors, sticky-note nodes, cursor interaction, and typing correction","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"diagrams","also":["cursors","text-effects"],"tags":["diagram","flowchart","interactive"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":12,"install":"npx hyperframes add flowchart","docs":"https://hyperframes.heygen.com/catalog/blocks/flowchart","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/flowchart","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/flowchart.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/flowchart.mp4"},"runs":"local"},{"slug":"hf.flowchart-vertical","name":"flowchart-vertical","title":"Flowchart Vertical","summary":"Portrait animated decision tree with SVG connectors, sticky-note nodes, cursor interaction, and typing correction","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"diagrams","also":["cursors","text-effects"],"tags":["diagram","flowchart","interactive","portrait"],"canvas":{"w":1440,"h":2560},"aspect":"9:16","duration":12,"install":"npx hyperframes add flowchart-vertical","docs":"https://hyperframes.heygen.com/catalog/blocks/flowchart-vertical","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/flowchart-vertical","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/flowchart-vertical.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/flowchart-vertical.mp4"},"runs":"local"},{"slug":"hf.flowing-gradient","name":"flowing-gradient","title":"Flowing Gradient","summary":"Bands of orange and violet flow across the frame in a smooth gradient. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"backgrounds","also":["shaders","filters"],"tags":["webgpu","webgpu-shader","background","gradient","color","flow"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add flowing-gradient","docs":"https://hyperframes.heygen.com/catalog/blocks/flowing-gradient","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/flowing-gradient","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/flowing-gradient.mp4"},"runs":"local"},{"slug":"hf.focus-blur-resolve","name":"focus-blur-resolve","title":"Focus Blur Resolve","summary":"A premium focus pull from heavy blur to crisp text, then a soft blur-out exit.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["filters","entrances"],"tags":["motion-primitive","typography"],"aspect":"any","slots":[{"id":"tone","type":"enum","label":"Tone"},{"id":"size","type":"enum","label":"Size"},{"id":"blur","type":"enum","label":"Blur"}],"install":"npx hyperframes add focus-blur-resolve","docs":"https://hyperframes.heygen.com/catalog/components/focus-blur-resolve","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/focus-blur-resolve","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/focus-blur-resolve.png"},"runs":"local"},{"slug":"hf.focus-rack","name":"focus-rack","title":"Focus Rack","summary":"Focus shifts once between two cards at different apparent depths through synchronized blur, dimming, scale, and parallax.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"camera","also":["three-d","entrances","filters"],"tags":["motion-primitive","camera","focus","focus-rack","depth","parallax","emphasize"],"aspect":"any","slots":[{"id":"label_a","type":"string","label":"Card A label"},{"id":"label_b","type":"string","label":"Card B label"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add focus-rack","docs":"https://hyperframes.heygen.com/catalog/components/focus-rack","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/focus-rack","license":"Apache-2.0","runs":"local"},{"slug":"hf.focus-swap","name":"focus-swap","title":"Focus Swap","summary":"Moves attention between two side-by-side cards as one recedes with scale, blur, and dimming while the other advances to full focus.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"mock-ui","also":["filters"],"tags":["effect","ui-props","focus","blur","attention","demonstrate"],"aspect":"any","slots":[{"id":"focus","type":"enum","label":"Final focus"},{"id":"blurPx","type":"number","label":"Unfocused blur"},{"id":"dim","type":"number","label":"Unfocused opacity"}],"install":"npx hyperframes add focus-swap","docs":"https://hyperframes.heygen.com/catalog/components/focus-swap","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/focus-swap","license":"Apache-2.0","runs":"local"},{"slug":"hf.fractal-noise","name":"fractal-noise","title":"Fractal Noise","summary":"Soft grey fractal noise drifts across the frame like slow clouds. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"generative","also":["shaders","textures","backgrounds"],"tags":["webgpu","webgpu-shader","background","noise","texture","clouds"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add fractal-noise","docs":"https://hyperframes.heygen.com/catalog/blocks/fractal-noise","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/fractal-noise","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/fractal-noise.mp4"},"runs":"local"},{"slug":"hf.freeze-frame-dressing","name":"freeze-frame-dressing","title":"Freeze-Frame Dressing","summary":"Timeline-driven paper, tape, and flash dressing for a freeze-frame or background-removed subject","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"textures","also":["steps","backgrounds"],"tags":["freeze-frame","cutout","scrapbook","paper","social","overlay","media-treatment-overlay"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add freeze-frame-dressing","docs":"https://hyperframes.heygen.com/catalog/blocks/freeze-frame-dressing","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/freeze-frame-dressing","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/freeze-frame-dressing.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/freeze-frame-dressing.mp4"},"runs":"local"},{"slug":"hf.frost","name":"frost","title":"Frost","summary":"A frozen blue orb with frost creeping in from its edge, on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","tags":["webgpu","webgpu-shader","orb","ice","frost","material"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add frost","docs":"https://hyperframes.heygen.com/catalog/blocks/frost","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/frost","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/frost.mp4"},"runs":"local"},{"slug":"hf.frost-sequence-camera-orbit","name":"frost-sequence-camera-orbit","title":"Frost Sequence Camera Orbit","summary":"An orbiting camera follows an ice logo as it breaks apart, reforms into two text moments, and fades.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"logos","also":["camera","headlines","three-d"],"tags":["3d-motion","ice","frost","camera-orbit","logo","particles","webgpu","two-headlines"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":22.5,"install":"npx hyperframes add frost-sequence-camera-orbit","docs":"https://hyperframes.heygen.com/catalog/blocks/frost-sequence-camera-orbit","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/frost-sequence-camera-orbit","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/frost-sequence-camera-orbit.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/frost-sequence-camera-orbit.mp4"},"runs":"local"},{"slug":"hf.gabor-noise","name":"gabor-noise","title":"Gabor Noise","summary":"Grey streaky noise drifts across the frame like a moving fingerprint. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"generative","also":["shaders","textures","filters"],"tags":["webgpu","webgpu-shader","background","texture","noise","monochrome"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add gabor-noise","docs":"https://hyperframes.heygen.com/catalog/blocks/gabor-noise","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/gabor-noise","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/gabor-noise.mp4"},"runs":"local"},{"slug":"hf.gallery-tunnel","name":"gallery-tunnel","title":"Gallery Tunnel","summary":"An infinite corridor of panels: a square tunnel receding to a vanishing point, its floor, ceiling and walls tiled with saturated colour slabs and caller-supplied images that swell toward camera and exit past you…","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["three-d","shaders","backgrounds"],"tags":["webgl","3d","background","showcase","depth","loop"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":12,"slots":[{"id":"images","type":"string","label":"Image slots: comma-separated paths, tiled into the panels (e.g. assets/shot-1.png,assets/shot-2.png)"},{"id":"imageMix","type":"number","label":"Image share of filled slots (0 = all colour, 1 = all images)"},{"id":"speed","type":"number","label":"Flight speed"},{"id":"palette","type":"string","label":"Slab palette: comma-separated hex colours"},{"id":"grid","type":"number","label":"Grid density: slots per wall face per axis (2 = 4 per face, 16 per segment)"},{"id":"fill","type":"number","label":"Slot fill rate"},{"id":"fog","type":"number","label":"Fog distance: depth at which the corridor reaches pure backdrop"},{"id":"edgeColor","type":"color","label":"Edge line colour"},{"id":"edgeOpacity","type":"number","label":"Edge line opacity"},{"id":"backdrop","type":"color","label":"Backdrop and fog colour"}],"install":"npx hyperframes add gallery-tunnel","docs":"https://hyperframes.heygen.com/catalog/blocks/gallery-tunnel","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/gallery-tunnel","license":"Apache-2.0","runs":"local"},{"slug":"hf.gesture-tap","name":"gesture-tap","title":"Gesture Tap","summary":"A contact circle taps a mobile pill button, releases it into a new labeled accent state, and lifts away.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","also":["mock-ui","entrances"],"tags":["motion-primitive","gesture","tap","interaction","ui-props"],"aspect":"any","slots":[{"id":"tap_label","type":"string","label":"Tap label"},{"id":"response_label","type":"string","label":"Response label"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add gesture-tap","docs":"https://hyperframes.heygen.com/catalog/components/gesture-tap","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/gesture-tap","license":"Apache-2.0","runs":"local"},{"slug":"hf.glass-hero","name":"glass-hero","title":"Glass Hero","summary":"A solid glass object rises in front of a giant headline and keeps turning, so the type bends and splits into colour through it.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"title-cards","also":["three-d","shaders","headlines"],"tags":["3d-object","three-js","webgl","glass","refraction","hero","title-card"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":5,"install":"npx hyperframes add glass-hero","docs":"https://hyperframes.heygen.com/catalog/blocks/glass-hero","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/glass-hero","license":"Apache-2.0","runs":"local"},{"slug":"hf.glass-shard-title","name":"glass-shard-title","title":"Glass Shard Title","summary":"Glass shards fly in through fog and tile themselves into the headline.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"title-cards","also":["three-d","headlines"],"tags":["3d-motion","title-card","glass","voronoi","shards","fog","hdr"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":12.2,"install":"npx hyperframes add glass-shard-title","docs":"https://hyperframes.heygen.com/catalog/blocks/glass-shard-title","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/glass-shard-title","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/glass-shard-title.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/glass-shard-title.mp4"},"runs":"local"},{"slug":"hf.glitch","name":"glitch","title":"Glitch","summary":"Shader transition with digital glitch artifacts","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"filters","also":["transitions","shaders"],"tags":["transition","shader"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add glitch","docs":"https://hyperframes.heygen.com/catalog/blocks/glitch","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/glitch","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/glitch.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/glitch.mp4"},"runs":"local"},{"slug":"hf.gloss-sweep","name":"gloss-sweep","title":"Gloss Sweep","summary":"A card lands with a restrained slam, catches one diagonal specular gloss, and holds perfectly still.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["kinetic-type"],"tags":["motion-primitive","celebration","gloss","card","badge","payoff"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Label"},{"id":"accent","type":"enum","label":"Accent"},{"id":"sweep_angle","type":"number","label":"Sweep angle"}],"install":"npx hyperframes add gloss-sweep","docs":"https://hyperframes.heygen.com/catalog/components/gloss-sweep","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/gloss-sweep","license":"Apache-2.0","runs":"local"},{"slug":"hf.godrays","name":"godrays","title":"Godrays","summary":"Rays of light fan out from a corner and drift across a deep blue field. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["backgrounds"],"tags":["webgpu","webgpu-shader","background","light","rays"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add godrays","docs":"https://hyperframes.heygen.com/catalog/blocks/godrays","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/godrays","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/godrays.mp4"},"runs":"local"},{"slug":"hf.goo","name":"goo","title":"Goo","summary":"A glossy green liquid ball whose surface bulges and ripples like wet goo, centred on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"three-d","also":["particles","shaders"],"tags":["webgpu","webgpu-shader","liquid","3d","organic","orb"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add goo","docs":"https://hyperframes.heygen.com/catalog/blocks/goo","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/goo","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/goo.mp4"},"runs":"local"},{"slug":"hf.gooey-split","name":"gooey-split","title":"Gooey Split","summary":"A dot splits into a three-dot menu with a gooey metaball neck, spins into a swirl mark under directional shutter motion blur, then breaks back into three dots and merges into one…","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"logos","also":["particles","social-cards","mock-ui"],"tags":["effect","gooey","metaball","motion-blur","morph","logo","icon"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4.7,"install":"npx hyperframes add gooey-split","docs":"https://hyperframes.heygen.com/catalog/blocks/gooey-split","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/gooey-split","license":"Apache-2.0","runs":"local"},{"slug":"hf.grade-split-reveal","name":"grade-split-reveal","title":"Grade Split Reveal","summary":"The same picture twice, one flat and one finished, with a hard edge sweeping between them. It stops in the middle long enough to compare, then commits and the graded look takes the frame…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"filters","also":["entrances","comparisons","social-proof"],"tags":["color-grading","media","compare","reveal","motion-primitive","grade"],"aspect":"any","slots":[{"id":"look","type":"enum","label":"Look"},{"id":"split","type":"number","label":"Split point"},{"id":"edge","type":"enum","label":"Edge"},{"id":"labels","type":"enum","label":"Labels"}],"install":"npx hyperframes add grade-split-reveal","docs":"https://hyperframes.heygen.com/catalog/components/grade-split-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/grade-split-reveal","license":"Apache-2.0","runs":"local"},{"slug":"hf.grain-field","name":"grain-field","title":"Grain Field","summary":"A clearly visible accent-tinted dot field drifts over a subtle luminance gradient in an exact ambient loop.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"textures","also":["backgrounds","entrances","filters"],"tags":["motion-primitive","background","grain","dots","texture","ambient","loopable"],"aspect":"any","slots":[{"id":"density","type":"enum","label":"Density"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add grain-field","docs":"https://hyperframes.heygen.com/catalog/components/grain-field","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/grain-field","license":"Apache-2.0","runs":"local"},{"slug":"hf.grain-overlay","name":"grain-overlay","title":"Grain Overlay","summary":"Animated film grain texture overlay using CSS keyframes — adds warmth and analog character to any composition","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"textures","tags":["texture","grain","overlay","film"],"aspect":"any","install":"npx hyperframes add grain-overlay","docs":"https://hyperframes.heygen.com/catalog/components/grain-overlay","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/grain-overlay","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/grain-overlay.png"},"runs":"local"},{"slug":"hf.gravitational-lens","name":"gravitational-lens","title":"Gravitational Lens","summary":"Shader transition with gravitational lensing distortion","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["shaders"],"tags":["transition","shader"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add gravitational-lens","docs":"https://hyperframes.heygen.com/catalog/blocks/gravitational-lens","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/gravitational-lens","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/gravitational-lens.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/gravitational-lens.mp4"},"runs":"local"},{"slug":"hf.grid-card-assemble","name":"grid-card-assemble","title":"Grid Card Assemble","summary":"N capability cards (thin-line icon that draws on, mono label, optional muted body) stagger-assemble into a grid or vertical list with a fade plus short slide into slot, then hold perfectly still.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"lists","also":["showcases","backgrounds","layouts"],"tags":["motion-primitive","layout","grid","list","stagger","assemble","feature-tour"],"aspect":"any","slots":[{"id":"items","type":"string","label":"Items"},{"id":"layout","type":"enum","label":"Layout"},{"id":"columns","type":"number","label":"Columns"},{"id":"cues","type":"string","label":"Cues"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add grid-card-assemble","docs":"https://hyperframes.heygen.com/catalog/components/grid-card-assemble","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/grid-card-assemble","license":"Apache-2.0","runs":"local"},{"slug":"hf.grid-pixelate-wipe","name":"grid-pixelate-wipe","title":"Grid Pixelate Wipe","summary":"Transition effect where the screen dissolves into a grid of squares that fade out with staggered timing — use between scenes","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","also":["filters","backgrounds","entrances"],"tags":["transition","wipe","grid","pixelate"],"aspect":"any","install":"npx hyperframes add grid-pixelate-wipe","docs":"https://hyperframes.heygen.com/catalog/components/grid-pixelate-wipe","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/grid-pixelate-wipe","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/grid-pixelate-wipe.png"},"runs":"local"},{"slug":"hf.halftone-dissolve","name":"halftone-dissolve","title":"Halftone Dissolve","summary":"Scene A dissolves into scene B through a growing halftone dot field: accent ink dots pop onto a fixed grid smallest-first, each opens into a window onto B, until the windows merge and B fully replaces A.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","also":["textures","entrances"],"tags":["motion-primitive","transition","texture","halftone","dissolve"],"aspect":"any","slots":[{"id":"dot_size","type":"enum","label":"Dot size"},{"id":"direction","type":"enum","label":"Direction"},{"id":"dissolve_at","type":"number","label":"Dissolve at"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add halftone-dissolve","docs":"https://hyperframes.heygen.com/catalog/components/halftone-dissolve","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/halftone-dissolve","license":"Apache-2.0","runs":"local"},{"slug":"hf.halftone-field","name":"halftone-field","title":"Halftone Field","summary":"A full-bleed halftone light field: a grid of dots whose size and colour track a slow flowing simplex-noise field, so broad bands of light sweep across a mostly-black frame like a giant LED wall showing a plasma…","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"textures","also":["shaders","backgrounds","generative"],"tags":["webgl","shader","background","texture","halftone"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":10,"slots":[{"id":"frequency","type":"number","label":"Field frequency"},{"id":"speed","type":"number","label":"Flow speed"},{"id":"cellSize","type":"number","label":"Cell size"},{"id":"gamma","type":"number","label":"Gamma (midtone crush)"},{"id":"paletteBias","type":"number","label":"Palette bias"},{"id":"palette1","type":"color","label":"Palette stop 1 (lows)"},{"id":"palette2","type":"color","label":"Palette stop 2"},{"id":"palette3","type":"color","label":"Palette stop 3"},{"id":"palette4","type":"color","label":"Palette stop 4 (crests)"},{"id":"background","type":"color","label":"Background"},{"id":"quantize","type":"boolean","label":"Quantise to 30fps (stepped)"}],"install":"npx hyperframes add halftone-field","docs":"https://hyperframes.heygen.com/catalog/blocks/halftone-field","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/halftone-field","license":"Apache-2.0","runs":"local"},{"slug":"hf.headline-slam","name":"headline-slam","title":"Headline Slam","summary":"A heavyweight headline scales down into frame, lands with a deterministic three-frame shake, holds with subtle drift, and whips upward on exit.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"headlines","also":["kinetic-type","text-effects","entrances"],"tags":["motion-primitive","typography","headline","slam","impact","exit"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Headline"},{"id":"accent_word_index","type":"number","label":"Accent word index"},{"id":"accent","type":"enum","label":"Accent"},{"id":"shadow","type":"boolean","label":"Shadow"}],"install":"npx hyperframes add headline-slam","docs":"https://hyperframes.heygen.com/catalog/components/headline-slam","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/headline-slam","license":"Apache-2.0","runs":"local"},{"slug":"hf.heatmap","name":"heatmap","title":"Heatmap","summary":"Thermal colours flow through a glowing orb, on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","tags":["webgpu","webgpu-shader","object","heat","thermal","glow"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add heatmap","docs":"https://hyperframes.heygen.com/catalog/blocks/heatmap","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/heatmap","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/heatmap.mp4"},"runs":"local"},{"slug":"hf.heygen-avatar-promo-card","name":"heygen-avatar-promo-card","title":"HeyGen Avatar Promo Card","summary":"A portrait HeyGen offer card pairs a moving avatar mosaic with bold promotional typography and a branded callout","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"showcases","also":["annotations"],"tags":["showcase","avatar","promotion","vertical"],"author":"HeyGen","canvas":{"w":1080,"h":1920},"aspect":"9:16","duration":10,"install":"npx hyperframes add heygen-avatar-promo-card","docs":"https://hyperframes.heygen.com/catalog/blocks/heygen-avatar-promo-card","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/heygen-avatar-promo-card","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/heygen-avatar-promo-card.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/heygen-avatar-promo-card.mp4"},"runs":"local"},{"slug":"hf.hologram","name":"hologram","title":"Hologram","summary":"A pale blue holographic orb with scan rings and flicker, on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"filters","also":["shaders"],"tags":["webgpu","webgpu-shader","object","hologram","sci-fi","blue"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add hologram","docs":"https://hyperframes.heygen.com/catalog/blocks/hologram","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/hologram","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/hologram.mp4"},"runs":"local"},{"slug":"hf.holographic","name":"holographic","title":"Holographic","summary":"An iridescent foil orb with a shifting rainbow sheen, centred on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","tags":["webgpu","webgpu-shader","holographic","iridescent","rainbow","orb"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add holographic","docs":"https://hyperframes.heygen.com/catalog/blocks/holographic","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/holographic","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/holographic.mp4"},"runs":"local"},{"slug":"hf.hw-arrow","name":"hw-arrow","title":"Hand-Drawn Arrow","summary":"Wobbled draw-on arrow with straight, gentle, and swoop curve poses, a four-way stroke texture matrix (plain/soft/sharp/spray), and a travel-aligned head-arrival stretch pulse with spring recovery; boils while on screen","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"annotations","also":["textures","entrances"],"tags":["handwritten","annotation","arrow","overlay"],"aspect":"any","install":"npx hyperframes add hw-arrow","docs":"https://hyperframes.heygen.com/catalog/components/hw-arrow","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/hw-arrow","license":"Apache-2.0","runs":"local"},{"slug":"hf.hw-boil","name":"hw-boil","title":"Hand-Drawn Boil","summary":"Hand-drawn jitter that re-poses every N frames, as seek-safe helpers: pose derives from quantized timeline time through a seeded hash; includes the shared onUpdate dispatcher, a wobbled-ellipse path generator…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"annotations","also":["steps","textures"],"tags":["handwritten","effect","annotation"],"aspect":"any","install":"npx hyperframes add hw-boil","docs":"https://hyperframes.heygen.com/catalog/components/hw-boil","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/hw-boil","license":"Apache-2.0","runs":"local"},{"slug":"hf.hw-box-label","name":"hw-box-label","title":"Hand-Drawn Box Label","summary":"Wobbled rounded rectangle draws on — across the authored stroke matrix (plain/soft/sharp/spray) — or drops in and lands with a volume-true contact squash and bouncy spring recovery…","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"annotations","also":["entrances"],"tags":["handwritten","annotation","overlay"],"aspect":"any","install":"npx hyperframes add hw-box-label","docs":"https://hyperframes.heygen.com/catalog/components/hw-box-label","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/hw-box-label","license":"Apache-2.0","runs":"local"},{"slug":"hf.hw-callout-circle","name":"hw-callout-circle","title":"Scribble Callout Circle","summary":"Wobbled ellipse draws around a target with optional scribble fill and curved connector; the handwritten label pops in WITH momentum and the drawn shapes absorb the arrival with a volume-preserving contact squash;…","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"annotations","also":["entrances"],"tags":["handwritten","annotation","callout","overlay"],"aspect":"any","install":"npx hyperframes add hw-callout-circle","docs":"https://hyperframes.heygen.com/catalog/components/hw-callout-circle","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/hw-callout-circle","license":"Apache-2.0","runs":"local"},{"slug":"hf.hw-frame","name":"hw-frame","title":"Sketched Frame","summary":"Media in a hand-drawn border with corner doodles and a handwritten caption; the unit tilts slightly and boils (images inside the block; keep live footage in the host)","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"annotations","also":["captions"],"tags":["handwritten","frame","media"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":8,"install":"npx hyperframes add hw-frame","docs":"https://hyperframes.heygen.com/catalog/blocks/hw-frame","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/hw-frame","license":"Apache-2.0","runs":"local"},{"slug":"hf.hw-path-text","name":"hw-path-text","title":"Text Along a Path","summary":"Handwriting flowing along any SVG path with a per-character reveal; the path is the only geometry input","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"annotations","also":["text-effects","mock-ui","entrances"],"tags":["handwritten","typography","path","overlay"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"install":"npx hyperframes add hw-path-text","docs":"https://hyperframes.heygen.com/catalog/blocks/hw-path-text","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/hw-path-text","license":"Apache-2.0","runs":"local"},{"slug":"hf.hw-pipeline","name":"hw-pipeline","title":"Hand-Drawn Flowchart","summary":"Wobbled boxes with handwritten labels joined by curved connectors, drawing on in sequence from a node list","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"diagrams","also":["annotations","charts","lists"],"tags":["handwritten","diagram","data-viz","overlay"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":7,"install":"npx hyperframes add hw-pipeline","docs":"https://hyperframes.heygen.com/catalog/blocks/hw-pipeline","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/hw-pipeline","license":"Apache-2.0","runs":"local"},{"slug":"hf.hw-scribble-transition","name":"hw-scribble-transition","title":"Scribble Transition","summary":"Overlay transition: scribble bands accumulate to cover the frame with a solid backstop, the host cuts beneath, and the scribble clears","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"annotations","also":["transitions","textures"],"tags":["handwritten","transition","wipe"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2.2,"install":"npx hyperframes add hw-scribble-transition","docs":"https://hyperframes.heygen.com/catalog/blocks/hw-scribble-transition","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/hw-scribble-transition","license":"Apache-2.0","runs":"local"},{"slug":"hf.hw-text-cloud","name":"hw-text-cloud","title":"Speech Bubble","summary":"Hand-drawn speech bubble with a positionable tail: outline draws on, paper fill fades in, handwritten text types per character; boils","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"annotations","also":["text-effects","textures"],"tags":["handwritten","speech-bubble","overlay"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"install":"npx hyperframes add hw-text-cloud","docs":"https://hyperframes.heygen.com/catalog/blocks/hw-text-cloud","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/hw-text-cloud","license":"Apache-2.0","runs":"local"},{"slug":"hf.hw-title","name":"hw-title","title":"Handwritten Title","summary":"Handwritten display text with a scalar-driven word-by-word highlight sweep and a seeded squiggle underline sized to the text; boils","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"annotations","also":["title-cards","text-effects","entrances"],"tags":["handwritten","typography","title-card","overlay"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"install":"npx hyperframes add hw-title","docs":"https://hyperframes.heygen.com/catalog/blocks/hw-title","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/hw-title","license":"Apache-2.0","runs":"local"},{"slug":"hf.hw-underline","name":"hw-underline","title":"Squiggle Marks","summary":"Hand-drawn squiggle underline, double-pass strikethrough, and bracket marks that draw on","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"annotations","also":["text-effects"],"tags":["handwritten","annotation","text-treatment"],"aspect":"any","install":"npx hyperframes add hw-underline","docs":"https://hyperframes.heygen.com/catalog/components/hw-underline","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/hw-underline","license":"Apache-2.0","runs":"local"},{"slug":"hf.hw-write-title","name":"hw-write-title","title":"Handwritten Write-On Title","summary":"True glyph write-on: filled Caveat letterforms revealed by baked per-glyph centerline strokes traced in real stroke order with a curvature-adaptive pen-velocity ease (fast on straights, slow into curves…","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"annotations","also":["title-cards","text-effects","entrances"],"tags":["handwritten","typography","title-card","write-on","overlay"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"install":"npx hyperframes add hw-write-title","docs":"https://hyperframes.heygen.com/catalog/blocks/hw-write-title","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/hw-write-title","license":"Apache-2.0","runs":"local"},{"slug":"hf.icon-morph-beat","name":"icon-morph-beat","title":"Icon Morph Beat","summary":"An icon morphs between authored state silhouettes, shifts to an accent color, and marks completion with one restrained pulse.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"beat-sync","also":["showcases","entrances"],"tags":["motion-primitive","product-demo","icon","morph","state-change","completion"],"aspect":"any","slots":[{"id":"pair","type":"enum","label":"Icon pair"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add icon-morph-beat","docs":"https://hyperframes.heygen.com/catalog/components/icon-morph-beat","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/icon-morph-beat","license":"Apache-2.0","runs":"local"},{"slug":"hf.icon-swap","name":"icon-swap","title":"Icon Swap","summary":"A scale-and-blur icon swap primitive for toolbar and action state changes","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"mock-ui","also":["transitions","filters"],"tags":["video-primitive","transition-primitive","transitions-dev-port","icon","swap"],"aspect":"any","slots":[{"id":"tone","type":"enum","label":"Tone"},{"id":"size","type":"enum","label":"Size"},{"id":"shape","type":"enum","label":"Shape"},{"id":"blur","type":"enum","label":"Blur"}],"install":"npx hyperframes add icon-swap","docs":"https://hyperframes.heygen.com/catalog/components/icon-swap","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/icon-swap","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/icon-swap.png"},"runs":"local"},{"slug":"hf.ink-bleed-reveal","name":"ink-bleed-reveal","title":"Ink Bleed Reveal","summary":"Liquid ink blooms through paper under a gooey blur-plus-threshold filter, merges, then contracts as a crisp slotted mark resolves beneath it, with static seeded paper grain riding the result.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["particles","textures","filters"],"tags":["motion-primitive","texture","reveal","gooey","svg-filter","deterministic","experiment"],"aspect":"any","slots":[{"id":"blobs","type":"number","label":"Blobs"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add ink-bleed-reveal","docs":"https://hyperframes.heygen.com/catalog/components/ink-bleed-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/ink-bleed-reveal","license":"Apache-2.0","runs":"local"},{"slug":"hf.inline-highlight","name":"inline-highlight","title":"Inline Highlight","summary":"A clean marker-style inline highlight that animates behind text using a CSS scale variable","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"annotations","also":["text-effects","entrances"],"tags":["motion-primitive","text","highlight","caption"],"aspect":"any","slots":[{"id":"tint","type":"enum","label":"Tint"},{"id":"thickness","type":"enum","label":"Thickness"},{"id":"origin","type":"enum","label":"Origin"}],"install":"npx hyperframes add inline-highlight","docs":"https://hyperframes.heygen.com/catalog/components/inline-highlight","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/inline-highlight","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/inline-highlight.png"},"runs":"local"},{"slug":"hf.input-feedback","name":"input-feedback","title":"Input Feedback","summary":"A transitions.dev-inspired input feedback primitive with shake, clear affordance, and success state","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"mock-ui","also":["transitions"],"tags":["transition-primitive","transitions-dev-port","input","feedback"],"aspect":"any","slots":[{"id":"status","type":"enum","label":"Status"},{"id":"value","type":"string","label":"Value"},{"id":"hint","type":"string","label":"Hint"}],"install":"npx hyperframes add input-feedback","docs":"https://hyperframes.heygen.com/catalog/components/input-feedback","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/input-feedback","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/input-feedback.png"},"runs":"local"},{"slug":"hf.instagram-follow","name":"instagram-follow","title":"Instagram Follow","summary":"Animated Instagram follow overlay with profile card and follow button","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"social-cards","also":["mock-ui","textures"],"tags":["social","overlay","instagram"],"canvas":{"w":1080,"h":1920},"aspect":"9:16","duration":4.5,"install":"npx hyperframes add instagram-follow","docs":"https://hyperframes.heygen.com/catalog/blocks/instagram-follow","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/instagram-follow","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/instagram-follow.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/instagram-follow.mp4"},"runs":"local"},{"slug":"hf.ios26-liquid-glass","name":"ios26-liquid-glass","title":"iOS 26 Liquid Glass Home Screen","summary":"3D iPhone with a normal iOS 26 home screen, liquid glass app icons, shader wallpaper, dock, and fluid glass notifications that drop from the status area onto a GLTF device model.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"mock-ui","also":["social-cards","devices","three-d"],"tags":["liquid-glass-html-in-canvas","webgpu","3d","iphone","ios26","notifications","gltf","html-in-canvas"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":15,"install":"npx hyperframes add ios26-liquid-glass","docs":"https://hyperframes.heygen.com/catalog/blocks/ios26-liquid-glass","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/ios26-liquid-glass","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ios26-liquid-glass.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ios26-liquid-glass.mp4"},"runs":"local"},{"slug":"hf.iris-reveal","name":"iris-reveal","title":"Iris Reveal","summary":"A circle clip-path opens from an authored origin revealing state B over state A in one confident pass, then holds on B. Classic register dims and desaturates the before state so the after state lands in full color; a…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["transitions","comparisons"],"tags":["transition","iris","circle-reveal","clip-path","bridge","slots"],"aspect":"any","slots":[{"id":"iris_x","type":"number","label":"Iris origin X"},{"id":"iris_y","type":"number","label":"Iris origin Y"},{"id":"open_at","type":"number","label":"Open start"},{"id":"register","type":"enum","label":"Register"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add iris-reveal","docs":"https://hyperframes.heygen.com/catalog/components/iris-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/iris-reveal","license":"Apache-2.0","runs":"local"},{"slug":"hf.keyframe-scrub-stack","name":"keyframe-scrub-stack","title":"Keyframe Scrub Stack","summary":"A keyframe-sequenced stack of cards with offset timing and easing presets.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"mock-ui","tags":["advanced-motion","anime-inspired","hyperframes-native"],"aspect":"any","install":"npx hyperframes add keyframe-scrub-stack","docs":"https://hyperframes.heygen.com/catalog/components/keyframe-scrub-stack","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/keyframe-scrub-stack","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/keyframe-scrub-stack.png"},"runs":"local"},{"slug":"hf.kinetic-center-build","name":"kinetic-center-build","title":"Kinetic Center Build","summary":"Words enter from the right and push the growing phrase left until the final line locks centered.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"kinetic-type","also":["text-effects","entrances"],"tags":["motion-primitive","text-effects","kinetic-type","reveal","remocn-port"],"author":"Remocn","aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"font_size","type":"number","label":"Font size"},{"id":"entry_offset","type":"number","label":"Entry offset"},{"id":"color","type":"color","label":"Color"},{"id":"font_weight","type":"enum","label":"Font weight"}],"install":"npx hyperframes add kinetic-center-build","docs":"https://hyperframes.heygen.com/catalog/components/kinetic-center-build","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/kinetic-center-build","license":"Apache-2.0","runs":"local"},{"slug":"hf.kinetic-type","name":"kinetic-type","title":"Kinetic Type","summary":"Bold kinetic typography promo","registry":"hyperframes","framework":"hyperframes","layer":"template","category":"kinetic-type","tags":[],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":15,"install":"npx hyperframes init my-video --example kinetic-type","docs":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/kinetic-type","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/kinetic-type","license":"Apache-2.0","runs":"local"},{"slug":"hf.kinetic-type-swap","name":"kinetic-type-swap","title":"Kinetic Type Swap","summary":"A held sentence keeps its fixed text in place while one widest-word masked slot rolls through alternatives and settles on the final option.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"kinetic-type","also":["text-effects","entrances"],"tags":["motion-primitive","text-effects","kinetic-type","word-swap","reveal"],"aspect":"any","slots":[{"id":"prefix","type":"string","label":"Prefix"},{"id":"options","type":"string","label":"Options"},{"id":"suffix","type":"string","label":"Suffix"},{"id":"cues","type":"string","label":"Cues"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add kinetic-type-swap","docs":"https://hyperframes.heygen.com/catalog/components/kinetic-type-swap","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/kinetic-type-swap","license":"Apache-2.0","runs":"local"},{"slug":"hf.lens-flare","name":"lens-flare","title":"Lens Flare","summary":"A camera lens flare: a bright star burst and a faint rainbow halo that slowly shimmer on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["backgrounds","camera","particles"],"tags":["webgpu","webgpu-shader","background","light","flare","glow"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add lens-flare","docs":"https://hyperframes.heygen.com/catalog/blocks/lens-flare","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lens-flare","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/lens-flare.mp4"},"runs":"local"},{"slug":"hf.light-edge","name":"light-edge","title":"Light Edge","summary":"Purple and cyan light races around the edge of an orb on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","tags":["webgpu","webgpu-shader","object","light","glow","neon","edge"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add light-edge","docs":"https://hyperframes.heygen.com/catalog/blocks/light-edge","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/light-edge","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/light-edge.mp4"},"runs":"local"},{"slug":"hf.light-leak","name":"light-leak","title":"Light Leak","summary":"Shader transition with cinematic light leak overlay","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"textures","also":["transitions","shaders"],"tags":["transition","shader"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add light-leak","docs":"https://hyperframes.heygen.com/catalog/blocks/light-leak","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/light-leak","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/light-leak.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/light-leak.mp4"},"runs":"local"},{"slug":"hf.light-sweep-pass","name":"light-sweep-pass","title":"Light Sweep Pass","summary":"A traveling key light re-shades a slotted scene: a soft diagonal gradient band crosses the frame once while every per-element highlight and shadow shifts in lockstep (all driven by one --light-x property)…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["logos","annotations","backgrounds"],"tags":["motion-primitive","overlay","light","sweep","slots","deterministic"],"aspect":"any","slots":[{"id":"angle","type":"number","label":"Angle"},{"id":"sweep_at","type":"number","label":"Sweep start"},{"id":"strength","type":"enum","label":"Strength"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add light-sweep-pass","docs":"https://hyperframes.heygen.com/catalog/components/light-sweep-pass","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/light-sweep-pass","license":"Apache-2.0","runs":"local"},{"slug":"hf.line-by-line-slide","name":"line-by-line-slide","title":"Line-by-Line Slide","summary":"Each line enters from the left with staggered slide and exits to the right.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances"],"tags":["motion-primitive","typography"],"aspect":"any","slots":[{"id":"size","type":"enum","label":"Size"},{"id":"tone","type":"enum","label":"Tone"},{"id":"density","type":"enum","label":"Density"},{"id":"direction","type":"enum","label":"Direction"}],"install":"npx hyperframes add line-by-line-slide","docs":"https://hyperframes.heygen.com/catalog/components/line-by-line-slide","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/line-by-line-slide","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/line-by-line-slide.png"},"runs":"local"},{"slug":"hf.line-swap","name":"line-swap","title":"Line Swap","summary":"A masked full-line beat replacement: line A holds center then exits up through an overflow-hidden mask as line B enters bottom-up on the same beat, with an optional accent underline drawing beneath one word of line B.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances","beat-sync","annotations"],"tags":["motion-primitive","text-effects","swap","beat","deterministic"],"aspect":"any","slots":[{"id":"line_a","type":"string","label":"Line A"},{"id":"line_b","type":"string","label":"Line B"},{"id":"swap_at","type":"number","label":"Swap at"},{"id":"underline_word","type":"string","label":"Underline word"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add line-swap","docs":"https://hyperframes.heygen.com/catalog/components/line-swap","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/line-swap","license":"Apache-2.0","runs":"local"},{"slug":"hf.liquid-glass-notification","name":"liquid-glass-notification","title":"Liquid Glass Notification","summary":"Frosted glass notification cards floating over an aurora shader background","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"social-cards","also":["shaders","backgrounds"],"tags":["html-in-canvas","liquid-glass-html-in-canvas","webgpu"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":8,"install":"npx hyperframes add liquid-glass-notification","docs":"https://hyperframes.heygen.com/catalog/blocks/liquid-glass-notification","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/liquid-glass-notification","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/liquid-glass-notification.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/liquid-glass-notification.mp4"},"runs":"local"},{"slug":"hf.liquid-glass-widgets","name":"liquid-glass-widgets","title":"Liquid Glass Widgets","summary":"Frosted glass stat cards, showcase panel and pill chips over an aurora shader background","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["stats","showcases","backgrounds"],"tags":["html-in-canvas","liquid-glass-html-in-canvas","webgpu"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":8,"install":"npx hyperframes add liquid-glass-widgets","docs":"https://hyperframes.heygen.com/catalog/blocks/liquid-glass-widgets","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/liquid-glass-widgets","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/liquid-glass-widgets.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/liquid-glass-widgets.mp4"},"runs":"local"},{"slug":"hf.liquid-metal","name":"liquid-metal","title":"Liquid Metal","summary":"A chrome sphere ripples and flows like molten metal on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"particles","also":["shaders","three-d"],"tags":["webgpu","webgpu-shader","object","metal","chrome","liquid","sphere"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add liquid-metal","docs":"https://hyperframes.heygen.com/catalog/blocks/liquid-metal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/liquid-metal","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/liquid-metal.mp4"},"runs":"local"},{"slug":"hf.locked-nucleus-orbit","name":"locked-nucleus-orbit","title":"Locked Nucleus Orbit","summary":"A fixed center nucleus anchors deterministic satellite orbits that settle into a composed lockup.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"intros","also":["title-cards","camera","entrances"],"tags":["motion-primitive","intro","reveal","orbit","lockup","deterministic"],"aspect":"any","slots":[{"id":"label","type":"string","label":"Nucleus label"},{"id":"accent","type":"enum","label":"Accent"},{"id":"satellites","type":"number","label":"Satellites"}],"install":"npx hyperframes add locked-nucleus-orbit","docs":"https://hyperframes.heygen.com/catalog/components/locked-nucleus-orbit","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/locked-nucleus-orbit","license":"Apache-2.0","runs":"local"},{"slug":"hf.logo-brand-close","name":"logo-brand-close","title":"Logo Brand Close","summary":"A display-scale wordmark cascades letter by letter into a centered lockup, the accent brand period lands last, an optional tagline and wide-tracked mono URL settle beneath…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"logos","also":["outros","text-effects","entrances"],"tags":["motion-primitive","typography","brand","logo","end-card","close"],"aspect":"any","slots":[{"id":"wordmark","type":"string","label":"Wordmark"},{"id":"tagline","type":"string","label":"Tagline"},{"id":"url","type":"string","label":"URL"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add logo-brand-close","docs":"https://hyperframes.heygen.com/catalog/components/logo-brand-close","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/logo-brand-close","license":"Apache-2.0","runs":"local"},{"slug":"hf.logo-outro","name":"logo-outro","title":"Logo Outro","summary":"Cinematic logo reveal with piece-by-piece assembly, glow bloom, tagline fade-in, and URL pill","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"outros","also":["logos","entrances"],"tags":["branding","outro","logo"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"install":"npx hyperframes add logo-outro","docs":"https://hyperframes.heygen.com/catalog/blocks/logo-outro","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/logo-outro","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/logo-outro.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/logo-outro.mp4"},"runs":"local"},{"slug":"hf.logo-sting","name":"logo-sting","title":"Logo Sting","summary":"A wordmark slams into its final scale, fires one accent ring and one white impact frame, then holds completely still.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"logos","also":["entrances","kinetic-type"],"tags":["motion-primitive","brand","logo","sting","impact","reveal"],"aspect":"any","slots":[{"id":"wordmark","type":"string","label":"Wordmark"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add logo-sting","docs":"https://hyperframes.heygen.com/catalog/components/logo-sting","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/logo-sting","license":"Apache-2.0","runs":"local"},{"slug":"hf.logo-wall","name":"logo-wall","title":"Logo Wall","summary":"A trusted-by wall of placeholder lettermark logos that fades and scales into place with a deterministic per-cell stagger.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"social-proof","also":["logos","entrances"],"tags":["data","logos","social-proof","stagger","prove"],"aspect":"any","slots":[{"id":"rows","type":"number","label":"Rows"},{"id":"cols","type":"number","label":"Columns"},{"id":"stagger","type":"number","label":"Stagger"}],"install":"npx hyperframes add logo-wall","docs":"https://hyperframes.heygen.com/catalog/components/logo-wall","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/logo-wall","license":"Apache-2.0","runs":"local"},{"slug":"hf.lottie-character-walk","name":"lottie-character-walk","title":"Lottie Character Walk","summary":"A jointed flat character walks in on planted feet, stops and points at a card; the body acting is a Lottie file and the stage is GSAP.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"cursors","also":["layouts"],"tags":["character","character-animation","mascot","walk-cycle","gesture","pointing","puppet","lottie","explainer"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":7.5,"slots":[{"id":"title","type":"string","label":"Card title"},{"id":"body","type":"string","label":"Card text"}],"install":"npx hyperframes add lottie-character-walk","docs":"https://hyperframes.heygen.com/catalog/blocks/lottie-character-walk","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lottie-character-walk","license":"Apache-2.0","runs":"local"},{"slug":"hf.lower-third-bild","name":"lower-third-bild","title":"Lower Third — BILD Style","summary":"News-style lower third with tight-fit text boxes: white headline bar with red drop-shadow, red sub-line with white drop-shadow.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"lower-thirds","also":["hud","headlines","text-effects"],"tags":["broadcast","lower-third","news","overlay"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":8,"slots":[{"id":"TXT_MAIN_1_Line","type":"string"},{"id":"TXT_SUB","type":"string"}],"install":"npx hyperframes add lower-third-bild","docs":"https://hyperframes.heygen.com/catalog/blocks/lower-third-bild","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lower-third-bild","license":"Apache-2.0","runs":"local"},{"slug":"hf.lt-accent-underline","name":"lt-accent-underline","title":"Lower Third — Accent Underline","summary":"Cardless lower third for footage overlay: name rises, an accent rule draws left-to-right, role fades in; text-shadowed for legibility","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"lower-thirds","also":["annotations","text-effects","textures"],"tags":["lower-third","overlay","podcast","interview","minimal"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4.8,"install":"npx hyperframes add lt-accent-underline","docs":"https://hyperframes.heygen.com/catalog/blocks/lt-accent-underline","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lt-accent-underline","license":"Apache-2.0","runs":"local"},{"slug":"hf.lt-bold-block","name":"lt-bold-block","title":"Lower Third — Bold Block","summary":"High-energy podcast lower third: solid dark block wipes in, uppercase name slams up, accent tag pops","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"lower-thirds","also":["transitions","kinetic-type","entrances"],"tags":["lower-third","overlay","podcast","interview","bold"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4.8,"install":"npx hyperframes add lt-bold-block","docs":"https://hyperframes.heygen.com/catalog/blocks/lt-bold-block","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lt-bold-block","license":"Apache-2.0","runs":"local"},{"slug":"hf.lt-clean-bar","name":"lt-clean-bar","title":"Lower Third — Clean Bar","summary":"Minimal white-card lower third for podcasts/interviews: accent tab, name + role, clip-wipe entrance","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"lower-thirds","also":["mock-ui","transitions","entrances"],"tags":["lower-third","overlay","podcast","interview"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4.8,"install":"npx hyperframes add lt-clean-bar","docs":"https://hyperframes.heygen.com/catalog/blocks/lt-clean-bar","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lt-clean-bar","license":"Apache-2.0","runs":"local"},{"slug":"hf.lt-color-block","name":"lt-color-block","title":"Lower Third — Color Block","summary":"High-energy lower third: bold accent-color block slides in with overshoot, condensed name + mono role","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"lower-thirds","tags":["lower-third","overlay","podcast","interview","bold"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4.8,"install":"npx hyperframes add lt-color-block","docs":"https://hyperframes.heygen.com/catalog/blocks/lt-color-block","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lt-color-block","license":"Apache-2.0","runs":"local"},{"slug":"hf.lt-dark-card","name":"lt-dark-card","title":"Lower Third — Dark Card","summary":"Charcoal card lower third for bright footage: name, drawn accent underline, role; slide-up entrance","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"lower-thirds","also":["annotations","entrances"],"tags":["lower-third","overlay","podcast","interview","dark"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4.8,"install":"npx hyperframes add lt-dark-card","docs":"https://hyperframes.heygen.com/catalog/blocks/lt-dark-card","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lt-dark-card","license":"Apache-2.0","runs":"local"},{"slug":"hf.lt-kicker-name","name":"lt-kicker-name","title":"Lower Third — Kicker Name","summary":"Cardless lower third with an accent eyebrow/kicker tag, heavy name, and a drawn baseline; for footage","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"lower-thirds","tags":["lower-third","overlay","podcast","interview","bold"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4.8,"install":"npx hyperframes add lt-kicker-name","docs":"https://hyperframes.heygen.com/catalog/blocks/lt-kicker-name","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lt-kicker-name","license":"Apache-2.0","runs":"local"},{"slug":"hf.lt-mask-reveal","name":"lt-mask-reveal","title":"Lower Third — Mask Reveal","summary":"Cardless lower third: an accent sweep crosses and clip-path-reveals a heavy name, role fades up; for footage","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"lower-thirds","also":["entrances"],"tags":["lower-third","overlay","podcast","interview","bold"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4.8,"install":"npx hyperframes add lt-mask-reveal","docs":"https://hyperframes.heygen.com/catalog/blocks/lt-mask-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lt-mask-reveal","license":"Apache-2.0","runs":"local"},{"slug":"hf.lt-neon-border","name":"lt-neon-border","title":"Neon Border","summary":"Two arcs of light travel the edge of a rounded panel and snap corner to corner, trailing a soft three-layer bloom. A lower third for a name and role.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"lower-thirds","tags":["lower-third","glow","loop","video-primitive"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4.8,"slots":[{"id":"name","type":"string","label":"Name"},{"id":"role","type":"string","label":"Role"},{"id":"accent","type":"color","label":"Accent"},{"id":"movement","type":"enum","label":"Movement"},{"id":"speed","type":"number","label":"Speed"},{"id":"cornerRadius","type":"number","label":"Corner radius"},{"id":"thickness","type":"number","label":"Thickness"},{"id":"arcLength","type":"number","label":"Arc length"},{"id":"glow","type":"number","label":"Glow"}],"install":"npx hyperframes add lt-neon-border","docs":"https://hyperframes.heygen.com/catalog/blocks/lt-neon-border","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lt-neon-border","license":"Apache-2.0","runs":"local"},{"slug":"hf.lt-side-rule","name":"lt-side-rule","title":"Lower Third — Side Rule","summary":"Cardless lower third with a vertical accent bar; condensed display name + mono role, text-shadowed for footage","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"lower-thirds","also":["text-effects"],"tags":["lower-third","overlay","podcast","interview","minimal"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4.8,"install":"npx hyperframes add lt-side-rule","docs":"https://hyperframes.heygen.com/catalog/blocks/lt-side-rule","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lt-side-rule","license":"Apache-2.0","runs":"local"},{"slug":"hf.lt-soft-pill","name":"lt-soft-pill","title":"Lower Third — Soft Pill","summary":"Rounded white pill lower third for podcasts/interviews: status dot, name + role, scale-pop entrance","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"lower-thirds","also":["entrances"],"tags":["lower-third","overlay","podcast","interview","minimal"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4.8,"install":"npx hyperframes add lt-soft-pill","docs":"https://hyperframes.heygen.com/catalog/blocks/lt-soft-pill","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lt-soft-pill","license":"Apache-2.0","runs":"local"},{"slug":"hf.lt-stack-bars","name":"lt-stack-bars","title":"Lower Third — Stack Bars","summary":"Two stacked bars: a dark name bar wipes from the left, an accent role bar wipes from the right","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"lower-thirds","also":["transitions"],"tags":["lower-third","overlay","podcast","interview","bold"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4.8,"install":"npx hyperframes add lt-stack-bars","docs":"https://hyperframes.heygen.com/catalog/blocks/lt-stack-bars","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/lt-stack-bars","license":"Apache-2.0","runs":"local"},{"slug":"hf.macos-notification","name":"macos-notification","title":"macOS Notification","summary":"Animated macOS-style notification banner with app icon and message","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"social-cards","also":["chats"],"tags":["social","overlay","notification"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":5,"install":"npx hyperframes add macos-notification","docs":"https://hyperframes.heygen.com/catalog/blocks/macos-notification","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/macos-notification","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/macos-notification.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/macos-notification.mp4"},"runs":"local"},{"slug":"hf.macos-tahoe-liquid-glass","name":"macos-tahoe-liquid-glass","title":"macOS Tahoe Liquid Glass Desktop","summary":"3D MacBook with a macOS Tahoe-style desktop, glass menu bar, Finder window, dock, and cinematic device camera move.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"three-d","also":["shaders","devices","mock-ui"],"tags":["html-in-canvas","3d","macos","tahoe","gltf"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":15,"install":"npx hyperframes add macos-tahoe-liquid-glass","docs":"https://hyperframes.heygen.com/catalog/blocks/macos-tahoe-liquid-glass","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/macos-tahoe-liquid-glass","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/macos-tahoe-liquid-glass.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/macos-tahoe-liquid-glass.mp4"},"runs":"local"},{"slug":"hf.magnetic-cursor","name":"magnetic-cursor","title":"Magnetic Cursor","summary":"A soft dot pointer glides across an editor toolbar, is pulled into each button and morphs into its rounded hover plate while the icon leans toward it, presses one, and leaves as a dot.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","also":["entrances","mock-ui"],"tags":["cursor","motion-primitive","pointer","hover","morph","toolbar"],"aspect":"any","slots":[{"id":"accent","type":"color","label":"Accent"},{"id":"tone","type":"enum","label":"Tone"},{"id":"visits","type":"string","label":"Buttons visited"},{"id":"press","type":"number","label":"Pressed visit"}],"install":"npx hyperframes add magnetic-cursor","docs":"https://hyperframes.heygen.com/catalog/components/magnetic-cursor","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/magnetic-cursor","license":"Apache-2.0","runs":"local"},{"slug":"hf.marble","name":"marble","title":"Marble","summary":"Ink-dark veins wind through white in a marbled pattern that slowly shifts. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["textures","backgrounds"],"tags":["webgpu","webgpu-shader","background","marble","texture"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add marble","docs":"https://hyperframes.heygen.com/catalog/blocks/marble","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/marble","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/marble.mp4"},"runs":"local"},{"slug":"hf.marker-checklist-card","name":"marker-checklist-card","title":"Marker Checklist Card","summary":"A hand-lettered paper card: marker headline with an underline and a drawn ellipse around one word, then three checklist rows whose checks draw themselves on - typewriter labels, marker values…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"annotations","also":["lists","textures","entrances"],"tags":["motion-primitive","handwritten","checklist","paper","marker"],"author":"Miao Yang","aspect":"any","slots":[{"id":"top","type":"string","label":"Headline top"},{"id":"mid","type":"string","label":"Headline middle"},{"id":"circled","type":"string","label":"Circled word"},{"id":"rest","type":"string","label":"Headline rest"},{"id":"l1","type":"string","label":"Row 1 label"},{"id":"v1","type":"string","label":"Row 1 value"},{"id":"l2","type":"string","label":"Row 2 label"},{"id":"v2","type":"string","label":"Row 2 value"},{"id":"l3","type":"string","label":"Row 3 label"},{"id":"v3","type":"string","label":"Row 3 value"}],"install":"npx hyperframes add marker-checklist-card","docs":"https://hyperframes.heygen.com/catalog/components/marker-checklist-card","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/marker-checklist-card","license":"Apache-2.0","runs":"local"},{"slug":"hf.marker-highlight","name":"marker-highlight","title":"Marker Highlight","summary":"Display text settles in, then one hand-drawn marker stroke (highlight, circle, underline, or scribble) draws over the emphasized word on cue.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"annotations","also":["text-effects","entrances"],"tags":["motion-primitive","typography","emphasis","marker","deterministic"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"emphasis_word","type":"string","label":"Emphasis word"},{"id":"style","type":"enum","label":"Marker style"},{"id":"draw_at","type":"number","label":"Draw at"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add marker-highlight","docs":"https://hyperframes.heygen.com/catalog/components/marker-highlight","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/marker-highlight","license":"Apache-2.0","runs":"local"},{"slug":"hf.match-cut","name":"match-cut","title":"Match Cut","summary":"A circle accelerates into a hard single-frame scene swap, matches the incoming circle exactly, and continues into a smaller resting pose.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","also":["entrances","logos"],"tags":["motion-primitive","transition","match-cut","hard-cut","continuity"],"aspect":"any","slots":[{"id":"accent","type":"enum","label":"Accent"},{"id":"label_a","type":"string","label":"Scene A label"},{"id":"label_b","type":"string","label":"Scene B label"}],"install":"npx hyperframes add match-cut","docs":"https://hyperframes.heygen.com/catalog/components/match-cut","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/match-cut","license":"Apache-2.0","runs":"local"},{"slug":"hf.matrix-decode","name":"matrix-decode","title":"Matrix Decode","summary":"Random scramble resolves left-to-right into the target text.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances"],"tags":["motion-primitive","typography"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Target text"},{"id":"accent","type":"enum","label":"Accent"},{"id":"size","type":"number","label":"Size"},{"id":"glow","type":"enum","label":"Glow"}],"install":"npx hyperframes add matrix-decode","docs":"https://hyperframes.heygen.com/catalog/components/matrix-decode","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/matrix-decode","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/matrix-decode.png"},"runs":"local"},{"slug":"hf.menu-morph","name":"menu-morph","title":"Menu Morph","summary":"A transitions.dev-inspired hamburger and plus-menu morph primitive for compact action menus","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"mock-ui","also":["transitions"],"tags":["video-primitive","transition-primitive","transitions-dev-port","menu","morph"],"aspect":"any","slots":[{"id":"actions","type":"string","label":"Actions"},{"id":"tone","type":"enum","label":"Tone"},{"id":"size","type":"number","label":"Button size"}],"install":"npx hyperframes add menu-morph","docs":"https://hyperframes.heygen.com/catalog/components/menu-morph","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/menu-morph","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/menu-morph.png"},"runs":"local"},{"slug":"hf.mesh-gradient","name":"mesh-gradient","title":"Mesh Gradient","summary":"Soft coral, orange and violet fields blend and drift in a mesh gradient. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"backgrounds","also":["shaders","filters"],"tags":["webgpu","webgpu-shader","background","gradient","color"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add mesh-gradient","docs":"https://hyperframes.heygen.com/catalog/blocks/mesh-gradient","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mesh-gradient","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/mesh-gradient.mp4"},"runs":"local"},{"slug":"hf.mesh-gradient-bg","name":"mesh-gradient-bg","title":"Mesh Gradient Background","summary":"A render-safe mesh gradient using animated radial layers.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"backgrounds","tags":["effect"],"aspect":"any","install":"npx hyperframes add mesh-gradient-bg","docs":"https://hyperframes.heygen.com/catalog/components/mesh-gradient-bg","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/mesh-gradient-bg","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/mesh-gradient-bg.png"},"runs":"local"},{"slug":"hf.message-thread-reveal","name":"message-thread-reveal","title":"Message Thread Reveal","summary":"A full text conversation plays out on a phone - bubbles popping in, typing indicators, a shared link card, emoji, delivered receipts - with the whole thread scrolling up beat by beat until a closing card lands…","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"chats","also":["entrances","mock-ui","beat-sync"],"tags":["showcase","mock-ui","chat","vertical","ad-template"],"author":"Miao Yang","canvas":{"w":1080,"h":1920},"aspect":"9:16","duration":25.8,"slots":[{"id":"contactName","type":"string","label":"Contact name"},{"id":"questionMessage","type":"string","label":"Opening question"},{"id":"teaserMessage","type":"string","label":"Teaser reply"},{"id":"cardImage","type":"image","label":"Link card image"},{"id":"cardTitle","type":"string","label":"Link card title"},{"id":"cardDomain","type":"string","label":"Link card domain"},{"id":"reactionMessage","type":"string","label":"Link reaction"},{"id":"reactionEmoji","type":"string","label":"Reaction emoji"},{"id":"benefitMessage","type":"string","label":"Benefit reply"},{"id":"discoveryMessage","type":"string","label":"Discovery question"},{"id":"sourceMessage","type":"string","label":"Source reply"},{"id":"workflowMessage","type":"string","label":"Workflow reply"},{"id":"ownershipMessage","type":"string","label":"Ownership reply"},{"id":"installMessage","type":"string","label":"Intent reply"},{"id":"thanksMessage","type":"string","label":"Closing reply"},{"id":"brandLogo","type":"image","label":"Brand logo"},{"id":"ecProof","type":"string","label":"End-card proof"},{"id":"ecFeature1","type":"string","label":"End-card feature 1"},{"id":"ecFeature2","type":"string","label":"End-card feature 2"},{"id":"ecFeature3","type":"string","label":"End-card feature 3"},{"id":"ecCta","type":"string","label":"End-card CTA"}],"install":"npx hyperframes add message-thread-reveal","docs":"https://hyperframes.heygen.com/catalog/blocks/message-thread-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/message-thread-reveal","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/message-thread-reveal/poster.jpg","video":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/message-thread-reveal/preview.mp4"},"runs":"local"},{"slug":"hf.micro-transitions","name":"micro-transitions","title":"Micro Transitions","summary":"A transitions.dev-inspired pack of badge, dropdown, modal, tabs, tooltip, and success-check micro transitions","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","also":["mock-ui","entrances"],"tags":["transition-primitive","motion-primitive","transitions-dev-port","ui","transition","microinteraction"],"aspect":"any","slots":[{"id":"badge","type":"string","label":"Badge"},{"id":"tooltip","type":"string","label":"Tooltip"},{"id":"tone","type":"enum","label":"Badge tone"},{"id":"travel","type":"enum","label":"Travel"}],"install":"npx hyperframes add micro-transitions","docs":"https://hyperframes.heygen.com/catalog/components/micro-transitions","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/micro-transitions","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/micro-transitions.png"},"runs":"local"},{"slug":"hf.mk-background","name":"mk-background","title":"Minimal Gradient Background","summary":"Procedural soft-blob gradient backdrop in a minimalist presentation style: two radial blobs drifting over a base color, with an animatable rounded-card bar mask and optional frosted-glass mode","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"backgrounds","tags":["background","gradient","minimal","professional","presentation"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":10,"install":"npx hyperframes add mk-background","docs":"https://hyperframes.heygen.com/catalog/blocks/mk-background","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mk-background","license":"Apache-2.0","runs":"local"},{"slug":"hf.mk-callout-highlight","name":"mk-callout-highlight","title":"Word-Sweep Highlight","summary":"A sentence whose word-by-word emphasis is driven by a single scalar — tween it to sync the highlight with a voiceover","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"annotations","also":["text-effects","entrances","captions"],"tags":["typography","karaoke","captions","minimal"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":8,"install":"npx hyperframes add mk-callout-highlight","docs":"https://hyperframes.heygen.com/catalog/blocks/mk-callout-highlight","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mk-callout-highlight","license":"Apache-2.0","runs":"local"},{"slug":"hf.mk-clone-wall-transition","name":"mk-clone-wall-transition","title":"Text Clone Wall Transition","summary":"Overlay transition: a tiled word wall covers the frame, inverts via difference blending, and clears — hard-cut the content beneath while covered","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["text-effects","textures"],"tags":["transition","typography","wipe"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2.4,"install":"npx hyperframes add mk-clone-wall-transition","docs":"https://hyperframes.heygen.com/catalog/blocks/mk-clone-wall-transition","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mk-clone-wall-transition","license":"Apache-2.0","runs":"local"},{"slug":"hf.mk-emphasis-type","name":"mk-emphasis-type","title":"Background Emphasis Type","summary":"Oversized low-contrast background word drifting slowly behind the subject — typography as texture","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"backgrounds","also":["entrances","text-effects","textures"],"tags":["typography","text-treatment","minimal"],"aspect":"any","install":"npx hyperframes add mk-emphasis-type","docs":"https://hyperframes.heygen.com/catalog/components/mk-emphasis-type","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/mk-emphasis-type","license":"Apache-2.0","runs":"local"},{"slug":"hf.mk-line-graph","name":"mk-line-graph","title":"Minimal Line Graph","summary":"One or two SVG series draw on with dots popping and value labels riding the draw front; dim baseline axis, x-labels, color-dot legend","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"charts","also":["entrances"],"tags":["data-viz","chart","graph","minimal"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":7,"install":"npx hyperframes add mk-line-graph","docs":"https://hyperframes.heygen.com/catalog/blocks/mk-line-graph","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mk-line-graph","license":"Apache-2.0","runs":"local"},{"slug":"hf.mk-placeholder-grid","name":"mk-placeholder-grid","title":"Rounded Media Grid","summary":"N-up rounded-corner media grid (2-up, 3-up, 4-up, 3x2, hero plus two): per-cell inside-scale framing, staggered box-in entrance, slow settle","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"backgrounds","also":["entrances"],"tags":["placeholder","media","grid","minimal"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":8,"install":"npx hyperframes add mk-placeholder-grid","docs":"https://hyperframes.heygen.com/catalog/blocks/mk-placeholder-grid","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mk-placeholder-grid","license":"Apache-2.0","runs":"local"},{"slug":"hf.mk-progress-stat","name":"mk-progress-stat","title":"Count-Up Stat Card","summary":"Big-numeral statistic with count-up, label, thin progress track filling to value/max, and caption; light and dark schemes","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"stats","also":["timers","charts","captions"],"tags":["data-viz","stat","minimal"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":7,"install":"npx hyperframes add mk-progress-stat","docs":"https://hyperframes.heygen.com/catalog/blocks/mk-progress-stat","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mk-progress-stat","license":"Apache-2.0","runs":"local"},{"slug":"hf.mk-specs-list","name":"mk-specs-list","title":"Specs Checklist","summary":"Left-aligned specs/traits checklist over footage or a board: rows slide in staggered with an accent underline sweep; light and dark schemes","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"lists","also":["charts","annotations","entrances"],"tags":["data-viz","list","minimal","professional"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":8,"install":"npx hyperframes add mk-specs-list","docs":"https://hyperframes.heygen.com/catalog/blocks/mk-specs-list","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/mk-specs-list","license":"Apache-2.0","runs":"local"},{"slug":"hf.mk-usage-arc","name":"mk-usage-arc","title":"Hairline Arc Gauge","summary":"Thin circular gauge that draws on while its percentage counts up; one helper call drives both","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"charts","also":["stats"],"tags":["data-viz","gauge","minimal"],"aspect":"any","install":"npx hyperframes add mk-usage-arc","docs":"https://hyperframes.heygen.com/catalog/components/mk-usage-arc","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/mk-usage-arc","license":"Apache-2.0","runs":"local"},{"slug":"hf.modal-morph","name":"modal-morph","title":"Modal Morph","summary":"A small card expands into a full panel, shared-element style: both layouts measured once at mount, the container morphs by transform only (never width/height tweens) while keyed children counter-scale and re-flow onto…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"mock-ui","also":["entrances","stats","layouts"],"tags":["motion-primitive","structure","flip","shared-element","modal","deterministic","experiment"],"aspect":"any","slots":[{"id":"from_scale","type":"number","label":"From scale"},{"id":"expand_at","type":"number","label":"Expand at"},{"id":"register","type":"enum","label":"Register"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add modal-morph","docs":"https://hyperframes.heygen.com/catalog/components/modal-morph","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/modal-morph","license":"Apache-2.0","runs":"local"},{"slug":"hf.morph-swap","name":"morph-swap","title":"Morph Swap","summary":"Two slotted siblings stacked at one shared center: A holds, then condenses or reshapes into B on a shared 50% 50% transform origin…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","tags":["transition","morph","swap","condense","reshape","holdable","slots"],"aspect":"any","slots":[{"id":"swap_at","type":"number","label":"Swap start"},{"id":"register","type":"enum","label":"Register"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add morph-swap","docs":"https://hyperframes.heygen.com/catalog/components/morph-swap","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/morph-swap","license":"Apache-2.0","runs":"local"},{"slug":"hf.morph-text","name":"morph-text","title":"Morph Text","summary":"Gooey text morph — cycles through an editable word list using SVG threshold + GSAP-driven blur for a fluid, satisfying transition effect","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"text-effects","also":["kinetic-type","particles","lists"],"tags":["text","text-effect","typography","morph","gooey","kinetic","animation"],"aspect":"any","install":"npx hyperframes add morph-text","docs":"https://hyperframes.heygen.com/catalog/components/morph-text","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/morph-text","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/morph-text.mp4"},"runs":"local"},{"slug":"hf.motion-blur","name":"motion-blur","title":"Motion Blur","summary":"After Effects-style motion blur — integrates each element over a shutter window (shutter angle, phase, samples per frame) by sampling the GSAP timeline at sub-frame times and averaging equal-weight additive copies of…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"filters","also":["steps","three-d"],"tags":["effect","motion-blur","shutter","after-effects","velocity","animation"],"aspect":"any","install":"npx hyperframes add motion-blur","docs":"https://hyperframes.heygen.com/catalog/components/motion-blur","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/motion-blur","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/motion-blur.png"},"runs":"local"},{"slug":"hf.multi-device-splay","name":"multi-device-splay","title":"Multi Device Splay","summary":"Phone, tablet, and desktop product mockups fan from a centered stack into a proud splayed arrangement with a subtle idle float.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"devices","also":["entrances"],"tags":["motion-primitive","device","phone","tablet","desktop","splay"],"aspect":"any","slots":[{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add multi-device-splay","docs":"https://hyperframes.heygen.com/catalog/components/multi-device-splay","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/multi-device-splay","license":"Apache-2.0","runs":"local"},{"slug":"hf.multiplayer-cursors","name":"multiplayer-cursors","title":"Multiplayer Cursors","summary":"Labeled collaborator cursors with token-derived colors and soft glows drift from spread positions into a shared center zone, proving live multiplayer presence.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"cursors","tags":["cursor","pointer","multiplayer","collaboration","presence","loop","prove"],"aspect":"any","slots":[{"id":"cursorCount","type":"number","label":"Cursor count"},{"id":"labels","type":"string","label":"Labels"}],"install":"npx hyperframes add multiplayer-cursors","docs":"https://hyperframes.heygen.com/catalog/components/multiplayer-cursors","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/multiplayer-cursors","license":"Apache-2.0","runs":"local"},{"slug":"hf.native-notification-pop","name":"native-notification-pop","title":"Native Notification Pop","summary":"One system-faithful notification banner (iOS or macOS) drops in over any scene on an accurate interruptible spring: fast arrival, soft overshoot, settled mass, backdrop blur, app dot, title, one body line…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"social-cards","also":["entrances","showcases","particles"],"tags":["motion-primitive","product-demo","overlay","notification","spring"],"aspect":"any","slots":[{"id":"title","type":"string","label":"Title"},{"id":"body","type":"string","label":"Body"},{"id":"app_label","type":"string","label":"App label"},{"id":"os","type":"enum","label":"OS"},{"id":"at","type":"number","label":"Drop start"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add native-notification-pop","docs":"https://hyperframes.heygen.com/catalog/components/native-notification-pop","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/native-notification-pop","license":"Apache-2.0","runs":"local"},{"slug":"hf.nebula","name":"nebula","title":"Nebula","summary":"A small world of pink and blue gas swirls inside a sphere on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["three-d"],"tags":["webgpu","webgpu-shader","object","space","nebula","sphere"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add nebula","docs":"https://hyperframes.heygen.com/catalog/blocks/nebula","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/nebula","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/nebula.mp4"},"runs":"local"},{"slug":"hf.news-ticker","name":"news-ticker","title":"News Ticker","summary":"Premium broadcast-style lower-third ticker with live label, headline ribbon, and scrolling news crawl.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"hud","also":["lower-thirds","headlines"],"tags":["lower-third","overlay","news","ticker"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":7,"install":"npx hyperframes add news-ticker","docs":"https://hyperframes.heygen.com/catalog/blocks/news-ticker","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/news-ticker","license":"Apache-2.0","runs":"local"},{"slug":"hf.north-korea-locked-down","name":"north-korea-locked-down","title":"North Korea Locked Down","summary":"Realistic map zoom into North Korea with a red scribble circle, locked-down pop-up label, and reddish editorial wash.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"maps","also":["annotations","kinetic-type","camera"],"tags":["showcase","map","annotation","youtube","kinetic"],"author":"Stronkter","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":7,"install":"npx hyperframes add north-korea-locked-down","docs":"https://hyperframes.heygen.com/catalog/blocks/north-korea-locked-down","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/north-korea-locked-down","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/north-korea-locked-down.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/north-korea-locked-down.mp4"},"runs":"local"},{"slug":"hf.notes-reveal","name":"notes-reveal","title":"Notes Reveal","summary":"A personal note is typed character by character in a notes app - caret riding every letter, the page scrolling up on measured settle curves as each line lands…","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"mock-ui","also":["entrances","text-effects","annotations"],"tags":["showcase","mock-ui","notes","typing","vertical","ad-template"],"author":"Miao Yang","canvas":{"w":1080,"h":1920},"aspect":"9:16","duration":24.9,"slots":[{"id":"titleL1","type":"string","label":"Note title line 1"},{"id":"titleL2","type":"string","label":"Note title line 2"},{"id":"noteLine1","type":"string","label":"Note body line 1"},{"id":"noteLine2","type":"string","label":"Note body line 2"},{"id":"noteLine3","type":"string","label":"Note body line 3"},{"id":"noteLine4","type":"string","label":"Note body line 4"},{"id":"noteLine5","type":"string","label":"Note body line 5"},{"id":"noteLine6","type":"string","label":"Note body line 6"},{"id":"noteLine7","type":"string","label":"Note body line 7"},{"id":"cardTop","type":"string","label":"Card headline top"},{"id":"cardMid","type":"string","label":"Card headline middle"},{"id":"cardBottom","type":"string","label":"Card headline bottom"},{"id":"check1Label","type":"string","label":"Checklist 1 label"},{"id":"check1Value","type":"string","label":"Checklist 1 value"},{"id":"check2Label","type":"string","label":"Checklist 2 label"},{"id":"check2Value","type":"string","label":"Checklist 2 value"},{"id":"check3Label","type":"string","label":"Checklist 3 label"},{"id":"check3Value","type":"string","label":"Checklist 3 value"},{"id":"brandLogo","type":"image","label":"Brand logo"},{"id":"brandDomain","type":"string","label":"Sign-off domain"}],"install":"npx hyperframes add notes-reveal","docs":"https://hyperframes.heygen.com/catalog/blocks/notes-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/notes-reveal","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/notes-reveal/poster.jpg","video":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/notes-reveal/preview.mp4"},"runs":"local"},{"slug":"hf.notes-typing","name":"notes-typing","title":"Notes Typing","summary":"The notes-app confession as a mountable scene: a bold title, then body lines typed character by character on the measured human keystroke rhythm…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"mock-ui","also":["text-effects","entrances","cursors"],"tags":["motion-primitive","notes","typing","mock-ui","vertical"],"author":"Miao Yang","aspect":"any","slots":[{"id":"title","type":"string","label":"Title"},{"id":"lines","type":"string","label":"Lines"},{"id":"speed","type":"number","label":"Speed"}],"install":"npx hyperframes add notes-typing","docs":"https://hyperframes.heygen.com/catalog/components/notes-typing","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/notes-typing","license":"Apache-2.0","runs":"local"},{"slug":"hf.notification-cascade","name":"notification-cascade","title":"Notification Cascade","summary":"Phone notifications land one after another and stack up the screen, each banner pushing the pile down as it arrives, before the whole stack lifts away into a closing card","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"social-cards","also":["mock-ui","devices"],"tags":["showcase","mock-ui","notification","vertical","ad-template"],"author":"Miao Yang","canvas":{"w":1080,"h":1920},"aspect":"9:16","duration":14,"slots":[{"id":"notifTitle","type":"string","label":"Notification title"},{"id":"message1","type":"string","label":"Message 1"},{"id":"message2","type":"string","label":"Message 2"},{"id":"message3","type":"string","label":"Message 3"},{"id":"message4","type":"string","label":"Message 4"},{"id":"appName","type":"string","label":"App name"},{"id":"headlineTop","type":"string","label":"End-card line 1"},{"id":"headlineAccent","type":"string","label":"End-card line 2"},{"id":"footerText","type":"string","label":"End-card footer"},{"id":"brandLogo","type":"image","label":"Brand logo"}],"install":"npx hyperframes add notification-cascade","docs":"https://hyperframes.heygen.com/catalog/blocks/notification-cascade","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/notification-cascade","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/notification-cascade/poster.jpg","video":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/notification-cascade/preview.mp4"},"runs":"local"},{"slug":"hf.notification-pileup","name":"notification-pileup","title":"Notification Pileup","summary":"Mobile notification cards arrive faster and faster, each new alert pushing the existing stack downward into a dense, anxious tower.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"social-cards","also":["devices","mock-ui","logos"],"tags":["notification","mobile","ui-props","overload","pileup","loop","agitate"],"aspect":"any","slots":[{"id":"count","type":"number","label":"Notification count"},{"id":"speed","type":"number","label":"Arrival speed"},{"id":"showBadges","type":"enum","label":"Unread badges"}],"install":"npx hyperframes add notification-pileup","docs":"https://hyperframes.heygen.com/catalog/components/notification-pileup","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/notification-pileup","license":"Apache-2.0","runs":"local"},{"slug":"hf.notification-stack","name":"notification-stack","title":"Notification Stack","summary":"1 to 5 token notification cards slide-settle into a vertical stack on cues, newest on top; one card grows slightly and brightens as the focus while the rest dim by position.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"social-cards","also":["showcases","entrances"],"tags":["motion-primitive","product-demo","notification","stack","stagger"],"aspect":"any","slots":[{"id":"titles","type":"string","label":"Titles"},{"id":"bodies","type":"string","label":"Bodies"},{"id":"expand","type":"number","label":"Expand"},{"id":"cues","type":"string","label":"Cues"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add notification-stack","docs":"https://hyperframes.heygen.com/catalog/components/notification-stack","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/notification-stack","license":"Apache-2.0","runs":"local"},{"slug":"hf.number-pop-in","name":"number-pop-in","title":"Number Pop In","summary":"A transitions.dev-inspired digit pop-in with blur, lift, and staggered value reveal","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["stats","mock-ui","transitions"],"tags":["video-primitive","transition-primitive","transitions-dev-port","number","pop"],"aspect":"any","slots":[{"id":"value","type":"string","label":"Value"},{"id":"unit","type":"string","label":"Unit"},{"id":"lift","type":"enum","label":"Lift"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add number-pop-in","docs":"https://hyperframes.heygen.com/catalog/components/number-pop-in","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/number-pop-in","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/number-pop-in.png"},"runs":"local"},{"slug":"hf.number-wheel","name":"number-wheel","title":"Number Wheel","summary":"A rolling digit counter primitive for metrics, prices, counts, and scoreboards","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"stats","also":["entrances","offers","hud"],"tags":["video-primitive","motion-primitive","number","counter","data"],"aspect":"any","slots":[{"id":"spin","type":"enum","label":"Spin"},{"id":"spacing","type":"enum","label":"Spacing"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add number-wheel","docs":"https://hyperframes.heygen.com/catalog/components/number-wheel","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/number-wheel","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/number-wheel.png"},"runs":"local"},{"slug":"hf.nyc-paris-flight","name":"nyc-paris-flight","title":"NYC Paris Flight","summary":"Apple-style realistic map animation with a plane flying from New York to Paris, marker circle, landing pop, and sound effects.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"maps","also":["annotations","entrances"],"tags":["showcase","travel","map","youtube","sfx"],"author":"Stronkter","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"install":"npx hyperframes add nyc-paris-flight","docs":"https://hyperframes.heygen.com/catalog/blocks/nyc-paris-flight","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/nyc-paris-flight","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/nyc-paris-flight.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/nyc-paris-flight.mp4"},"runs":"local"},{"slug":"hf.nyt-graph","name":"nyt-graph","title":"NYT Graph","summary":"Animated data chart in print editorial style","registry":"hyperframes","framework":"hyperframes","layer":"template","category":"charts","tags":[],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":15,"install":"npx hyperframes init my-video --example nyt-graph","docs":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/nyt-graph","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/nyt-graph","license":"Apache-2.0","runs":"local"},{"slug":"hf.obsidian","name":"obsidian","title":"Obsidian","summary":"A dark glass orb catches pink and cyan iridescent light on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","tags":["webgpu","webgpu-shader","object","glass","iridescent","dark"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add obsidian","docs":"https://hyperframes.heygen.com/catalog/blocks/obsidian","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/obsidian","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/obsidian.mp4"},"runs":"local"},{"slug":"hf.offset-path-traveler","name":"offset-path-traveler","title":"Offset Path Traveler","summary":"A slotted traveler follows an authored path with tangent rotation, curved entry, and curved exit.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"showcases","also":["entrances","social-cards"],"tags":["motion-primitive","product-demo","path","traveler","auto-rotate"],"aspect":"any","slots":[{"id":"path","type":"string","label":"Path"},{"id":"traveler_label","type":"string","label":"Traveler label"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add offset-path-traveler","docs":"https://hyperframes.heygen.com/catalog/components/offset-path-traveler","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/offset-path-traveler","license":"Apache-2.0","runs":"local"},{"slug":"hf.onboarding-stepper-flow","name":"onboarding-stepper-flow","title":"Onboarding Stepper Flow","summary":"A composed onboarding flow with milestone rail, active step card, and next-action button","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"steps","also":["mock-ui"],"tags":["ui-flow","onboarding","stepper"],"aspect":"any","install":"npx hyperframes add onboarding-stepper-flow","docs":"https://hyperframes.heygen.com/catalog/components/onboarding-stepper-flow","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/onboarding-stepper-flow","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/onboarding-stepper-flow.png"},"runs":"local"},{"slug":"hf.orbit-card","name":"orbit-card","title":"Orbit Card","summary":"A single feature card orbits a dot sphere on approved Blender camera motion.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"camera","also":["three-d"],"tags":["3d-motion","cards","feature-reveal","dots","orbit","blender-motion","sphere"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":10,"install":"npx hyperframes add orbit-card","docs":"https://hyperframes.heygen.com/catalog/blocks/orbit-card","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/orbit-card","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/orbit-card.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/orbit-card.mp4"},"runs":"local"},{"slug":"hf.ordered-dither-pass","name":"ordered-dither-pass","title":"Ordered Dither Pass","summary":"Bayer-matrix ordered dithering quantizes a slotted scene (rasterized once at mount): the image emerges from pure 2-tone noise to clean, or dissolves the reverse. Stateless per frame, never error diffusion.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","also":["textures","entrances","generative"],"tags":["motion-primitive","experiment","texture","dither","transition","quantize"],"aspect":"any","slots":[{"id":"matrix","type":"enum","label":"Matrix"},{"id":"direction","type":"enum","label":"Direction"},{"id":"levels","type":"number","label":"Levels"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add ordered-dither-pass","docs":"https://hyperframes.heygen.com/catalog/components/ordered-dither-pass","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/ordered-dither-pass","license":"Apache-2.0","runs":"local"},{"slug":"hf.organic-light-leak-overlay","name":"organic-light-leak-overlay","title":"Organic Light Leak Overlay","summary":"Finite CSS light-leak overlay for memory beats and motivated transitions","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"textures","also":["transitions","beat-sync"],"tags":["light-leak","film","memory","transition","overlay","media-treatment-overlay"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add organic-light-leak-overlay","docs":"https://hyperframes.heygen.com/catalog/blocks/organic-light-leak-overlay","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/organic-light-leak-overlay","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/organic-light-leak-overlay.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/organic-light-leak-overlay.mp4"},"runs":"local"},{"slug":"hf.oscilloscope-trace","name":"oscilloscope-trace","title":"Oscilloscope Trace","summary":"CRT oscilloscope beam sweeping a waveform across a 10x8 graticule, with closed-form phosphor persistence: the tail decays as exp(-age/tau) and brightens where the beam slows","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"audio-viz","also":["mock-ui","textures","entrances"],"tags":["instrument","data","showcase","retro"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"waveform","type":"enum","label":"Waveform"},{"id":"frequency","type":"number","label":"Signal frequency"},{"id":"amplitude","type":"number","label":"Amplitude"},{"id":"persistenceMs","type":"number","label":"Phosphor persistence (tau)"},{"id":"phosphorColor","type":"color","label":"Phosphor colour"},{"id":"sweepRate","type":"number","label":"Sweep rate"},{"id":"dataSeries","type":"string","label":"Data series (waveform=data)"}],"install":"npx hyperframes add oscilloscope-trace","docs":"https://hyperframes.heygen.com/catalog/blocks/oscilloscope-trace","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/oscilloscope-trace","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/oscilloscope-trace.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/oscilloscope-trace.mp4"},"runs":"local"},{"slug":"hf.outline-draw","name":"outline-draw","title":"Outline Draw","summary":"A rounded outline that proves a callout by drawing clockwise as a hollow conic-gradient border with a clean closure.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["timers","annotations","backgrounds"],"tags":["motion-primitive","effects","outline","border","mask","proof"],"aspect":"any","slots":[{"id":"progress","type":"number","label":"Draw progress"},{"id":"thickness","type":"number","label":"Stroke thickness"},{"id":"radius","type":"number","label":"Corner radius"}],"install":"npx hyperframes add outline-draw","docs":"https://hyperframes.heygen.com/catalog/components/outline-draw","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/outline-draw","license":"Apache-2.0","runs":"local"},{"slug":"hf.oversized-cursor","name":"oversized-cursor","title":"Oversized Cursor","summary":"The look-here pointer for a video: the macOS arrow at 3.5x its normal size lands its tip on one control, clicks it on, settles just below it so the result stays in view, then exits off-screen","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","also":["entrances"],"tags":["cursor","motion-primitive","actor","pointer","interaction"],"aspect":"any","slots":[{"id":"cursor_variant","type":"enum","label":"Cursor fill"},{"id":"target_x","type":"number","label":"Target X"},{"id":"target_y","type":"number","label":"Target Y"},{"id":"click_label","type":"string","label":"Click label"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add oversized-cursor","docs":"https://hyperframes.heygen.com/catalog/components/oversized-cursor","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/oversized-cursor","license":"Apache-2.0","runs":"local"},{"slug":"hf.overwhelm-surround","name":"overwhelm-surround","title":"Overwhelm Surround","summary":"Tasks, tabs, pings, and notification bubbles accelerate inward around a calm central subject, turning overload into visible spatial pressure.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"social-cards","also":["mock-ui"],"tags":["effects","agitate","overwhelm","pressure","notifications"],"aspect":"any","slots":[{"id":"count","type":"number","label":"Chip count"},{"id":"centerLabel","type":"string","label":"Center label"},{"id":"intensity","type":"number","label":"Intensity"}],"install":"npx hyperframes add overwhelm-surround","docs":"https://hyperframes.heygen.com/catalog/components/overwhelm-surround","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/overwhelm-surround","license":"Apache-2.0","runs":"local"},{"slug":"hf.page-slide","name":"page-slide","title":"Page Slide","summary":"A transitions.dev-inspired page slide primitive with outgoing and incoming panels","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"mock-ui","also":["transitions"],"tags":["video-primitive","transition-primitive","transitions-dev-port","page","slide"],"aspect":"any","slots":[{"id":"label_a","type":"string","label":"Outgoing label"},{"id":"label_b","type":"string","label":"Incoming label"},{"id":"accent","type":"enum","label":"Accent"},{"id":"corner","type":"enum","label":"Corner"}],"install":"npx hyperframes add page-slide","docs":"https://hyperframes.heygen.com/catalog/components/page-slide","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/page-slide","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/page-slide.png"},"runs":"local"},{"slug":"hf.pan-stations","name":"pan-stations","title":"Pan Stations","summary":"A lateral camera move across a continuous row of labeled feature stations, with a steady dwell at each stop before the next pan.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"camera","tags":["camera","pan","stations","features","exhibit","agitate","cross-shelved"],"aspect":"any","slots":[{"id":"stationCount","type":"number","label":"Station count"},{"id":"labels","type":"string","label":"Station labels"},{"id":"dwell","type":"number","label":"Dwell"}],"install":"npx hyperframes add pan-stations","docs":"https://hyperframes.heygen.com/catalog/components/pan-stations","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/pan-stations","license":"Apache-2.0","runs":"local"},{"slug":"hf.panel-reveal","name":"panel-reveal","title":"Panel Reveal","summary":"A panel reveal primitive with height expansion and content fade","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["mock-ui","transitions"],"tags":["transition-primitive","transitions-dev-port","panel","reveal"],"aspect":"any","slots":[{"id":"title","type":"string","label":"Title"},{"id":"width","type":"enum","label":"Width"},{"id":"tone","type":"enum","label":"Tone"},{"id":"reveal","type":"enum","label":"Reveal"}],"install":"npx hyperframes add panel-reveal","docs":"https://hyperframes.heygen.com/catalog/components/panel-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/panel-reveal","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/panel-reveal.png"},"runs":"local"},{"slug":"hf.paper-collage-reveal","name":"paper-collage-reveal","title":"Paper Collage Reveal","summary":"A scrapbook patchwork of torn paper scraps, each with its own texture and tilt, flutters away in a staggered scatter to reveal the content underneath.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"textures","also":["entrances","transitions"],"tags":["collage","scrapbook","torn paper","reveal","transition","motion-primitive"],"aspect":"any","slots":[{"id":"panels","type":"number","label":"Panels"},{"id":"tone","type":"enum","label":"Paper tone"},{"id":"spread","type":"enum","label":"Spread"}],"install":"npx hyperframes add paper-collage-reveal","docs":"https://hyperframes.heygen.com/catalog/components/paper-collage-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/paper-collage-reveal","license":"Apache-2.0","runs":"local"},{"slug":"hf.parallax-device-dive","name":"parallax-device-dive","title":"Parallax Device Dive","summary":"A canonical phone rises into view before the camera pushes through its screen and layered app UI expands to fill the frame.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"devices","also":["camera","transitions","entrances"],"tags":["motion-primitive","camera","device","phone","parallax","transition"],"aspect":"any","slots":[{"id":"accent","type":"enum","label":"Accent"},{"id":"app_title","type":"string","label":"App title"}],"install":"npx hyperframes add parallax-device-dive","docs":"https://hyperframes.heygen.com/catalog/components/parallax-device-dive","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/parallax-device-dive","license":"Apache-2.0","runs":"local"},{"slug":"hf.parallax-unzoom","name":"parallax-unzoom","title":"Parallax Unzoom","summary":"Reveal transition — focus card scales down from full frame as siblings parallax in to form a grid (reverse of parallax-zoom)","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"camera","also":["transitions","backgrounds","entrances"],"tags":["transition","reveal","unzoom","parallax","grid","hero"],"aspect":"any","install":"npx hyperframes add parallax-unzoom","docs":"https://hyperframes.heygen.com/catalog/components/parallax-unzoom","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/parallax-unzoom","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/parallax-unzoom.png"},"runs":"local"},{"slug":"hf.parallax-zoom","name":"parallax-zoom","title":"Parallax Zoom","summary":"Center card scales up to fill the frame while siblings parallax outward — inspired by the eBay Playbook hero transition","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"camera","also":["transitions","backgrounds"],"tags":["transition","zoom","parallax","grid","hero"],"aspect":"any","install":"npx hyperframes add parallax-zoom","docs":"https://hyperframes.heygen.com/catalog/components/parallax-zoom","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/parallax-zoom","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/parallax-zoom.png"},"runs":"local"},{"slug":"hf.particle-image-reveal","name":"particle-image-reveal","title":"Particle Image Reveal","summary":"A seeded deterministic particle field converges and settles while a slotted image reveals beneath it, the trail thinning until the image holds clean.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"particles","also":["entrances"],"tags":["motion-primitive","intros-reveals","particles","reveal","canvas","deterministic"],"aspect":"any","slots":[{"id":"density","type":"enum","label":"Density"},{"id":"direction","type":"enum","label":"Direction"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add particle-image-reveal","docs":"https://hyperframes.heygen.com/catalog/components/particle-image-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/particle-image-reveal","license":"Apache-2.0","runs":"local"},{"slug":"hf.particle-text-dissolve","name":"particle-text-dissolve","title":"Particle Text Dissolve","summary":"Text assembles from a seeded particle cloud (or dissolves into it): per-particle targets sampled once from the rendered text bitmap at mount, table-driven particles, zero per-particle tweens, one onUpdate painter.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","also":["text-effects","particles","entrances"],"tags":["motion-primitive","text-effects","particles","canvas","deterministic","experiment"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"direction","type":"enum","label":"Direction"},{"id":"density","type":"enum","label":"Density"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add particle-text-dissolve","docs":"https://hyperframes.heygen.com/catalog/components/particle-text-dissolve","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/particle-text-dissolve","license":"Apache-2.0","runs":"local"},{"slug":"hf.pendulum-swing","name":"pendulum-swing","title":"Pendulum Swing","summary":"Content hangs from a fixed pivot and swings into rest with gravity-damped oscillation, like a hanging sign settling on its hook.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"particles","also":["entrances","intros"],"tags":["motion-primitive","physics","swing","settle","reveal"],"aspect":"any","slots":[{"id":"pivot","type":"enum","label":"Pivot"},{"id":"amplitude","type":"enum","label":"Amplitude"},{"id":"direction","type":"enum","label":"Direction"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add pendulum-swing","docs":"https://hyperframes.heygen.com/catalog/components/pendulum-swing","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/pendulum-swing","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/pendulum-swing.png"},"runs":"local"},{"slug":"hf.per-word-crossfade","name":"per-word-crossfade","title":"Per-Word Crossfade","summary":"Words gently fade into place with a short vertical drift for calm keynote rhythm.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","also":["text-effects","entrances"],"tags":["motion-primitive","typography"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"drift","type":"enum","label":"Drift"},{"id":"blur","type":"enum","label":"Blur"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add per-word-crossfade","docs":"https://hyperframes.heygen.com/catalog/components/per-word-crossfade","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/per-word-crossfade","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/per-word-crossfade.png"},"runs":"local"},{"slug":"hf.per-word-rise","name":"per-word-rise","title":"Per Word Rise","summary":"Words or characters rise into place in a controlled blur-to-sharp cascade, settle softly on landing, and hold still until the cut (optional fade or up exit).","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances","filters"],"tags":["motion-primitive","text-effects","typography","stagger","reveal"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"split","type":"enum","label":"Split"},{"id":"cues","type":"string","label":"Cues"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add per-word-rise","docs":"https://hyperframes.heygen.com/catalog/components/per-word-rise","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/per-word-rise","license":"Apache-2.0","runs":"local"},{"slug":"hf.perspective-marquee","name":"perspective-marquee","title":"Perspective Marquee","summary":"A 3D tilted marquee with depth feel as items roll toward the horizon.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"galleries","also":["text-effects","entrances","three-d"],"tags":["motion-primitive","typography"],"aspect":"any","slots":[{"id":"tilt","type":"enum","label":"Tilt"},{"id":"travel","type":"enum","label":"Travel"},{"id":"tone","type":"enum","label":"Tone"},{"id":"words","type":"string","label":"Words"}],"install":"npx hyperframes add perspective-marquee","docs":"https://hyperframes.heygen.com/catalog/components/perspective-marquee","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/perspective-marquee","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/perspective-marquee.png"},"runs":"local"},{"slug":"hf.physical-exit","name":"physical-exit","title":"Physical Exit","summary":"A card exits with physical momentum in toss, drop, or slide mode, carrying acceleration and rotation through the final offscreen pose without fading.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","tags":["motion-primitive","exit","momentum","toss","drop","slide"],"aspect":"any","slots":[{"id":"mode","type":"enum","label":"Exit mode"},{"id":"text","type":"string","label":"Card text"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add physical-exit","docs":"https://hyperframes.heygen.com/catalog/components/physical-exit","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/physical-exit","license":"Apache-2.0","runs":"local"},{"slug":"hf.plasma","name":"plasma","title":"Plasma","summary":"Deep violet plasma folds and churns across the whole frame. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["textures","backgrounds"],"tags":["webgpu","webgpu-shader","background","texture","plasma","purple"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add plasma","docs":"https://hyperframes.heygen.com/catalog/blocks/plasma","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/plasma","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/plasma.mp4"},"runs":"local"},{"slug":"hf.plastic","name":"plastic","title":"Plastic","summary":"A glossy white plastic orb with soft studio reflections, on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","tags":["webgpu","webgpu-shader","object","plastic","material","white"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add plastic","docs":"https://hyperframes.heygen.com/catalog/blocks/plastic","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/plastic","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/plastic.mp4"},"runs":"local"},{"slug":"hf.play-mode","name":"play-mode","title":"Play Mode","summary":"Playful elastic animations","registry":"hyperframes","framework":"hyperframes","layer":"template","category":"showcases","tags":[],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":10,"install":"npx hyperframes init my-video --example play-mode","docs":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/play-mode","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/play-mode","license":"Apache-2.0","runs":"local"},{"slug":"hf.press-ripple","name":"press-ripple","title":"Press Ripple","summary":"A cursor decel-arrives from off-stage, lands slightly off-center on a caller-positioned target, compresses with it in lockstep, releases with two small click rings while the label swaps to a check…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","also":["showcases","entrances","layouts"],"tags":["cursor","motion-primitive","product-demo","press","ripple","payoff"],"aspect":"any","slots":[{"id":"label","type":"string","label":"Label"},{"id":"done_label","type":"string","label":"Done label"},{"id":"target_x","type":"number","label":"Target X"},{"id":"target_y","type":"number","label":"Target Y"},{"id":"press_at","type":"number","label":"Press at"},{"id":"cursor","type":"enum","label":"Cursor"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add press-ripple","docs":"https://hyperframes.heygen.com/catalog/components/press-ripple","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/press-ripple","license":"Apache-2.0","runs":"local"},{"slug":"hf.prism","name":"prism","title":"Prism","summary":"A white beam of light splits into a slowly turning rainbow. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["backgrounds"],"tags":["webgpu","webgpu-shader","background","light","prism","rainbow"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add prism","docs":"https://hyperframes.heygen.com/catalog/blocks/prism","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/prism","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/prism.mp4"},"runs":"local"},{"slug":"hf.product-promo","name":"product-promo","title":"Product Promo","summary":"Multi-scene product showcase with SVG assets","registry":"hyperframes","framework":"hyperframes","layer":"template","category":"showcases","tags":[],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":20,"install":"npx hyperframes init my-video --example product-promo","docs":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/product-promo","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/product-promo","license":"Apache-2.0","runs":"local"},{"slug":"hf.product-turntable","name":"product-turntable","title":"Product Turntable","summary":"A product turns a full revolution on a studio plinth in a seamless loop. Drop in a GLB or glTF model, or keep the built-in drink can with your own label.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"showcases","also":["three-d","shaders"],"tags":["3d-object","three-js","webgl","product","turntable","glb","loop"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"install":"npx hyperframes add product-turntable","docs":"https://hyperframes.heygen.com/catalog/blocks/product-turntable","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/product-turntable","license":"Apache-2.0","runs":"local"},{"slug":"hf.pull-back-reveal","name":"pull-back-reveal","title":"Pull Back Reveal","summary":"A tight stat detail holds, then one decelerating camera pull-back reveals the headline and supporting cards that recontextualize it.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"camera","also":["entrances","stats","social-proof"],"tags":["motion-primitive","camera","pull-back","reveal","recontextualize"],"aspect":"any","slots":[{"id":"detail_text","type":"string","label":"Detail text"},{"id":"headline","type":"string","label":"Headline"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add pull-back-reveal","docs":"https://hyperframes.heygen.com/catalog/components/pull-back-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/pull-back-reveal","license":"Apache-2.0","runs":"local"},{"slug":"hf.pull-to-refresh","name":"pull-to-refresh","title":"Pull to Refresh","summary":"A mobile list pulls through nonlinear rubber-band resistance, arms at a threshold, commits to a bounded loading indicator, then snaps exactly back to rest.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"cursors","also":["devices","lists"],"tags":["pointer","pointers","mobile","gesture","interaction","refresh","demonstrate"],"aspect":"any","slots":[{"id":"pullDistance","type":"number","label":"Pull distance"},{"id":"spinnerStyle","type":"enum","label":"Spinner style"}],"install":"npx hyperframes add pull-to-refresh","docs":"https://hyperframes.heygen.com/catalog/components/pull-to-refresh","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/pull-to-refresh","license":"Apache-2.0","runs":"local"},{"slug":"hf.push-in","name":"push-in","title":"Push In","summary":"A centered headline gains focus through one slow, continuous camera push and a gentle fade out.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"camera","also":["entrances","headlines"],"tags":["motion-primitive","camera","push-in","focus","emphasize","holdable"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Headline"},{"id":"intensity","type":"enum","label":"Push intensity"}],"install":"npx hyperframes add push-in","docs":"https://hyperframes.heygen.com/catalog/components/push-in","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/push-in","license":"Apache-2.0","runs":"local"},{"slug":"hf.rack-focus","name":"rack-focus","title":"Rack Focus","summary":"A focus pull with real aperture bokeh: the focal plane travels from a near subject to a far one, so one resolves as the other blows into hard-edged polygon discs that clip to a cat's eye toward the corners…","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"camera","also":["three-d","shaders"],"tags":["webgl","shader","camera","depth","cinematic","showcase"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"nearfocus","type":"number","label":"Near focal distance"},{"id":"farfocus","type":"number","label":"Far focal distance"},{"id":"focallength","type":"number","label":"Focal length"},{"id":"aperture","type":"number","label":"Aperture (f-number)"},{"id":"blades","type":"number","label":"Aperture blades (bokeh shape)"},{"id":"catseye","type":"number","label":"Cat eye clipping at the corners"},{"id":"pullstart","type":"number","label":"Pull start"},{"id":"pullduration","type":"number","label":"Pull duration"},{"id":"pullease","type":"string","label":"Pull easing (GSAP ease)"},{"id":"bokeh","type":"number","label":"Bokeh exposure"},{"id":"backdrop","type":"color","label":"Backdrop"}],"install":"npx hyperframes add rack-focus","docs":"https://hyperframes.heygen.com/catalog/blocks/rack-focus","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/rack-focus","license":"Apache-2.0","runs":"local"},{"slug":"hf.radial-surround","name":"radial-surround","title":"Radial Surround","summary":"Labeled hairline chips assemble around a centered subject on an elliptical ring, then optionally converge inward with a subtle edge dim. The center never moves: surrounded, not zoomed.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["camera"],"tags":["motion-primitive","problem-setup","radial","ring","surround","converge"],"aspect":"any","slots":[{"id":"center_label","type":"string","label":"Center label"},{"id":"chips","type":"string","label":"Chips"},{"id":"close_in","type":"boolean","label":"Close in"},{"id":"cues","type":"string","label":"Cues"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add radial-surround","docs":"https://hyperframes.heygen.com/catalog/components/radial-surround","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/radial-surround","license":"Apache-2.0","runs":"local"},{"slug":"hf.reddit-post","name":"reddit-post","title":"Reddit Post Card","summary":"Animated Reddit post card overlay with upvotes and comments","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"social-cards","also":["textures"],"tags":["social","overlay","reddit"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":5,"install":"npx hyperframes add reddit-post","docs":"https://hyperframes.heygen.com/catalog/blocks/reddit-post","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/reddit-post","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/reddit-post.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/reddit-post.mp4"},"runs":"local"},{"slug":"hf.rgb-glitch-text","name":"rgb-glitch-text","title":"RGB Glitch Text","summary":"RGB-offset text copies jitter briefly for a controlled glitch window.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["filters","entrances"],"tags":["motion-primitive","typography"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"intensity","type":"enum","label":"Intensity"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add rgb-glitch-text","docs":"https://hyperframes.heygen.com/catalog/components/rgb-glitch-text","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/rgb-glitch-text","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/rgb-glitch-text.png"},"runs":"local"},{"slug":"hf.ridged-burn","name":"ridged-burn","title":"Ridged Burn","summary":"Shader transition with ridged turbulence burn effect","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["shaders"],"tags":["transition","shader"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add ridged-burn","docs":"https://hyperframes.heygen.com/catalog/blocks/ridged-burn","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/ridged-burn","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ridged-burn.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ridged-burn.mp4"},"runs":"local"},{"slug":"hf.ripple-waves","name":"ripple-waves","title":"Ripple Waves","summary":"Shader transition with concentric ripple wave distortion","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["shaders"],"tags":["transition","shader"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add ripple-waves","docs":"https://hyperframes.heygen.com/catalog/blocks/ripple-waves","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/ripple-waves","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ripple-waves.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ripple-waves.mp4"},"runs":"local"},{"slug":"hf.ripples","name":"ripples","title":"Ripples","summary":"Concentric rings ripple outward from the centre, white on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["textures","filters","backgrounds"],"tags":["webgpu","webgpu-shader","background","texture","rings","waves","monochrome"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add ripples","docs":"https://hyperframes.heygen.com/catalog/blocks/ripples","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/ripples","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ripples.mp4"},"runs":"local"},{"slug":"hf.rubber-band-bumper","name":"rubber-band-bumper","title":"Rubber Band Bumper","summary":"An outgoing panel pulls against increasing resistance, holds at tension, then snaps past an edge with overshoot as the incoming panel settles behind it.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","also":["entrances"],"tags":["motion-primitive","transition","rubber-band","resistance","overshoot"],"aspect":"any","slots":[{"id":"direction","type":"enum","label":"Direction"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add rubber-band-bumper","docs":"https://hyperframes.heygen.com/catalog/components/rubber-band-bumper","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/rubber-band-bumper","license":"Apache-2.0","runs":"local"},{"slug":"hf.scan-band","name":"scan-band","title":"Scan Band","summary":"A diagonal distortion band sweeps once across a clean wordmark, revealing clipped red and cyan offsets only inside the moving band.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"logos","also":["text-effects","filters","entrances"],"tags":["motion-primitive","typography","scan","chromatic","distortion","wordmark"],"aspect":"any","slots":[{"id":"wordmark","type":"string","label":"Wordmark"},{"id":"band_angle","type":"number","label":"Band angle"}],"install":"npx hyperframes add scan-band","docs":"https://hyperframes.heygen.com/catalog/components/scan-band","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/scan-band","license":"Apache-2.0","runs":"local"},{"slug":"hf.scramble-reveal","name":"scramble-reveal","title":"Scramble Reveal","summary":"A deterministic hacker-style text reveal that cycles fixed glyph rows and locks the target string from left to right.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances"],"tags":["motion-primitive","text-effects","scramble","reveal","deterministic"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"accent","type":"enum","label":"Accent"},{"id":"style","type":"enum","label":"Style"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add scramble-reveal","docs":"https://hyperframes.heygen.com/catalog/components/scramble-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/scramble-reveal","license":"Apache-2.0","runs":"local"},{"slug":"hf.screen-flow-carousel","name":"screen-flow-carousel","title":"Screen Flow Carousel","summary":"Two to five app screens ride a horizontal rail: one primary at center, neighbors receded, advancing on cues with a velocity-matched throw and a smooth long-tail catch while a mono caption swaps with each advance…","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"galleries","also":["showcases","captions"],"tags":["product-demo","feature-tour","carousel","rail","slot","screens"],"aspect":"any","slots":[{"id":"screens","type":"number","label":"Screens"},{"id":"captions","type":"string","label":"Captions"},{"id":"cues","type":"string","label":"Cues"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add screen-flow-carousel","docs":"https://hyperframes.heygen.com/catalog/components/screen-flow-carousel","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/screen-flow-carousel","license":"Apache-2.0","runs":"local"},{"slug":"hf.scroll-camera-story","name":"scroll-camera-story","title":"Scroll Camera Story","summary":"A compressed forced-scroll cinematic pass: a tall scene of slotted sections travels past the camera top to bottom, depth layers parallax at different rates, each section rises as the camera reaches it…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"camera","tags":["camera","scroll","parallax","story","sections","slot","servo"],"aspect":"any","slots":[{"id":"sections","type":"number","label":"Sections"},{"id":"travel","type":"number","label":"Travel"},{"id":"cues","type":"string","label":"Cues"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add scroll-camera-story","docs":"https://hyperframes.heygen.com/catalog/components/scroll-camera-story","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/scroll-camera-story","license":"Apache-2.0","runs":"local"},{"slug":"hf.scroll-feed","name":"scroll-feed","title":"Scroll Feed","summary":"A loop-friendly column of varied skeleton post cards scrolls upward with subtle motion trails and an agitated pace.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"social-cards","also":["entrances"],"tags":["motion-primitive","effects","scroll","feed","loop","agitation"],"aspect":"any","slots":[{"id":"speed","type":"enum","label":"Scroll speed"},{"id":"card_count","type":"number","label":"Card count"},{"id":"cues","type":"string","label":"Cues"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add scroll-feed","docs":"https://hyperframes.heygen.com/catalog/components/scroll-feed","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/scroll-feed","license":"Apache-2.0","runs":"local"},{"slug":"hf.sdf-iris","name":"sdf-iris","title":"SDF Iris","summary":"Shader transition with signed distance field iris reveal","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["shaders","entrances"],"tags":["transition","shader"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add sdf-iris","docs":"https://hyperframes.heygen.com/catalog/blocks/sdf-iris","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/sdf-iris","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/sdf-iris.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/sdf-iris.mp4"},"runs":"local"},{"slug":"hf.segmentation-flood","name":"segmentation-flood","title":"Segmentation Flood","summary":"Machine-vision read of a slotted subject: translucent accent segmentation masks flood on in quantized scanline steps, each region gets a thin bracket and mono label chip…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"hud","also":["showcases","entrances","steps"],"tags":["motion-primitive","product-demo","ai","hud","canvas","deterministic","experiment"],"aspect":"any","slots":[{"id":"regions","type":"string","label":"Regions"},{"id":"flood_at","type":"number","label":"Flood at"},{"id":"flicker","type":"enum","label":"Flicker"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add segmentation-flood","docs":"https://hyperframes.heygen.com/catalog/components/segmentation-flood","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/segmentation-flood","license":"Apache-2.0","runs":"local"},{"slug":"hf.separator","name":"separator","title":"Separator","summary":"A one-pixel structural separator with horizontal and vertical variants plus a seek-safe progress reveal","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"layouts","also":["timers","entrances"],"tags":["video-primitive","separator","layout"],"aspect":"any","slots":[{"id":"orientation","type":"enum","label":"Orientation"},{"id":"thickness","type":"enum","label":"Thickness"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add separator","docs":"https://hyperframes.heygen.com/catalog/components/separator","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/separator","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/separator.png"},"runs":"local"},{"slug":"hf.settings-toggle-flow","name":"settings-toggle-flow","title":"Settings Toggle Flow","summary":"A composed settings flow with preference rows, toggle switches, and active-state feedback","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"mock-ui","tags":["ui-flow","settings","toggle"],"aspect":"any","install":"npx hyperframes add settings-toggle-flow","docs":"https://hyperframes.heygen.com/catalog/components/settings-toggle-flow","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/settings-toggle-flow","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/settings-toggle-flow.png"},"runs":"local"},{"slug":"hf.share-sheet-carousel","name":"share-sheet-carousel","title":"Share-Sheet Carousel","summary":"A share sheet springs up from the bottom of the phone and cycles previews inside its card on a fast cut rhythm while the blurred ground swaps behind it, ending on an accept tap","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"galleries","also":["mock-ui","social-proof","devices"],"tags":["showcase","mock-ui","share-sheet","vertical","ad-template"],"author":"Miao Yang","canvas":{"w":1080,"h":1920},"aspect":"9:16","duration":7.2,"slots":[{"id":"shareTitle","type":"string","label":"Sheet title"},{"id":"senderName","type":"string","label":"Sender"},{"id":"itemLabel","type":"string","label":"Item"},{"id":"stripText","type":"string","label":"Brand strip"},{"id":"acceptLabel","type":"string","label":"Accept label"},{"id":"declineLabel","type":"string","label":"Decline label"},{"id":"slideImage1","type":"image","label":"Slide image 1"},{"id":"slideImage2","type":"image","label":"Slide image 2"},{"id":"slideImage3","type":"image","label":"Slide image 3"},{"id":"slideImage4","type":"image","label":"Slide image 4"},{"id":"brandLogo","type":"image","label":"Brand logo"}],"install":"npx hyperframes add share-sheet-carousel","docs":"https://hyperframes.heygen.com/catalog/blocks/share-sheet-carousel","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/share-sheet-carousel","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/share-sheet-carousel/poster.jpg","video":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/share-sheet-carousel/preview.mp4"},"runs":"local"},{"slug":"hf.shared-axis-y","name":"shared-axis-y","title":"Shared Axis Y","summary":"Per-word vertical shared-axis transition for sharp editorial swaps.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances","transitions"],"tags":["motion-primitive","typography"],"aspect":"any","slots":[{"id":"direction","type":"enum","label":"Direction"},{"id":"distance","type":"enum","label":"Distance"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add shared-axis-y","docs":"https://hyperframes.heygen.com/catalog/components/shared-axis-y","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/shared-axis-y","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/shared-axis-y.png"},"runs":"local"},{"slug":"hf.shared-axis-z","name":"shared-axis-z","title":"Shared Axis Z","summary":"Scale-based shared-axis transition for focus shifts and context depth.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances","transitions"],"tags":["motion-primitive","typography"],"aspect":"any","slots":[{"id":"direction","type":"enum","label":"Direction"},{"id":"depth","type":"enum","label":"Depth"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add shared-axis-z","docs":"https://hyperframes.heygen.com/catalog/components/shared-axis-z","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/shared-axis-z","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/shared-axis-z.png"},"runs":"local"},{"slug":"hf.sheet-spring-up","name":"sheet-spring-up","title":"Sheet Spring-Up","summary":"A bottom sheet rushes up from below the frame on a real spring sampled frame by frame from reference footage, overshooting its resting place and settling back without an approximated ease","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["mock-ui","particles","logos"],"tags":["video-primitive","sheet","spring","mock-ui","overlay"],"author":"Miao Yang","aspect":"any","slots":[{"id":"width","type":"number","label":"Width"},{"id":"radius","type":"number","label":"Radius"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add sheet-spring-up","docs":"https://hyperframes.heygen.com/catalog/components/sheet-spring-up","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/sheet-spring-up","license":"Apache-2.0","runs":"local"},{"slug":"hf.shimmer-sweep","name":"shimmer-sweep","title":"Shimmer Sweep","summary":"Animated light sweep across text or elements using a CSS gradient mask — ideal for AI accents and premium reveals","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["annotations","text-effects","backgrounds"],"tags":["text","shimmer","highlight","effect"],"aspect":"any","install":"npx hyperframes add shimmer-sweep","docs":"https://hyperframes.heygen.com/catalog/components/shimmer-sweep","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/shimmer-sweep","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/shimmer-sweep.png"},"runs":"local"},{"slug":"hf.shutter-slam","name":"shutter-slam","title":"Shutter Slam","summary":"One word thrown through six single-property beats under integrated shutter blur — two translate slams, a scale punch, then a full turn about each axis — on the measured easing of the After Effects export the shutter…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"kinetic-type","also":["beat-sync","text-effects","filters"],"tags":["effect","motion-blur","shutter","after-effects","slam","animation"],"aspect":"any","install":"npx hyperframes add shutter-slam","docs":"https://hyperframes.heygen.com/catalog/components/shutter-slam","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/shutter-slam","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/shutter-slam.png"},"runs":"local"},{"slug":"hf.signup-flow","name":"signup-flow","title":"Signup Flow","summary":"A composed signup flow with social action, email field, password field, and submit button","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"mock-ui","also":["text-effects"],"tags":["ui-flow","signup","form"],"aspect":"any","install":"npx hyperframes add signup-flow","docs":"https://hyperframes.heygen.com/catalog/components/signup-flow","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/signup-flow","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/signup-flow.png"},"runs":"local"},{"slug":"hf.sine-wave","name":"sine-wave","title":"Sine Wave","summary":"A glowing white sine wave travels across a black frame. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["backgrounds"],"tags":["webgpu","webgpu-shader","background","wave","line","glow"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add sine-wave","docs":"https://hyperframes.heygen.com/catalog/blocks/sine-wave","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/sine-wave","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/sine-wave.mp4"},"runs":"local"},{"slug":"hf.skeleton-reveal","name":"skeleton-reveal","title":"Skeleton Reveal","summary":"A skeleton loader transition that pulses, then cross-fades into content","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["mock-ui","transitions","timers"],"tags":["video-primitive","transition-primitive","transitions-dev-port","skeleton","reveal"],"aspect":"any","slots":[{"id":"name","type":"string","label":"Name"},{"id":"detail","type":"string","label":"Detail"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add skeleton-reveal","docs":"https://hyperframes.heygen.com/catalog/components/skeleton-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/skeleton-reveal","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/skeleton-reveal.png"},"runs":"local"},{"slug":"hf.slack-notification-ad","name":"slack-notification-ad","title":"Slack Notification Ad","summary":"A portrait lock screen fills with escalating Slack video requests before HeyGen delivers the payoff","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"social-cards","also":["mock-ui"],"tags":["showcase","mock-ui","notification","vertical","ad-template"],"author":"HeyGen","canvas":{"w":1080,"h":1920},"aspect":"9:16","duration":12,"install":"npx hyperframes add slack-notification-ad","docs":"https://hyperframes.heygen.com/catalog/blocks/slack-notification-ad","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/slack-notification-ad","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/slack-notification-ad/poster.jpg","video":"https://static.heygen.ai/hyperframes/templates/promoted/254fe4bd8a3f00c1e70ac5e38a1bce25060f7590/slack-notification-ad/preview.mp4"},"runs":"local"},{"slug":"hf.slit-scan-reveal","name":"slit-scan-reveal","title":"Slit Scan Reveal","summary":"The frame's rows sample an authored subject at offset times: a canvas painter draws row slices of one pure position function evaluated at t minus offset(row)…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","tags":["motion-primitive","time","slit-scan","canvas","deterministic","experiment"],"aspect":"any","slots":[{"id":"axis","type":"enum","label":"Axis"},{"id":"spread","type":"number","label":"Spread"},{"id":"resolve_at","type":"number","label":"Resolve at"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add slit-scan-reveal","docs":"https://hyperframes.heygen.com/catalog/components/slit-scan-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/slit-scan-reveal","license":"Apache-2.0","runs":"local"},{"slug":"hf.slot-machine-roll","name":"slot-machine-roll","title":"Slot Machine Roll","summary":"A vertical reel scrolls characters from one value to another.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances","galleries"],"tags":["video-primitive","motion-primitive","typography"],"aspect":"any","slots":[{"id":"result","type":"string","label":"Result"},{"id":"direction","type":"enum","label":"Direction"},{"id":"size","type":"enum","label":"Size"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add slot-machine-roll","docs":"https://hyperframes.heygen.com/catalog/components/slot-machine-roll","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/slot-machine-roll","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/slot-machine-roll.png"},"runs":"local"},{"slug":"hf.snow","name":"snow","title":"Snow","summary":"Seek-safe falling-snow overlay: sparse or dense flakes drift down with size, speed and opacity correlated per flake for depth, radial-masked so the frame center stays clear","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"particles","also":["textures","backgrounds"],"tags":["snow","snowfall","winter","weather","overlay","ambient","particles","media-treatment-overlay","loopable"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"density","type":"enum","label":"Density"},{"id":"speed","type":"enum","label":"Fall speed"}],"install":"npx hyperframes add snow","docs":"https://hyperframes.heygen.com/catalog/blocks/snow","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/snow","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/snow.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/snow.mp4"},"runs":"local"},{"slug":"hf.social-proof-card","name":"social-proof-card","title":"Social Proof Card","summary":"The app-store close as one mountable scene: wordmark, five stars, a proof line, three feature icons and a CTA capsule build in a quiet stagger and hold - measured from reference ad footage…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"social-proof","also":["outros","entrances","logos"],"tags":["motion-primitive","social-proof","end-card","cta","vertical"],"author":"Miao Yang","aspect":"any","slots":[{"id":"brand","type":"string","label":"Brand"},{"id":"proof","type":"string","label":"Proof line"},{"id":"cta","type":"string","label":"CTA"},{"id":"f1","type":"string","label":"Feature 1"},{"id":"f2","type":"string","label":"Feature 2"},{"id":"f3","type":"string","label":"Feature 3"}],"install":"npx hyperframes add social-proof-card","docs":"https://hyperframes.heygen.com/catalog/components/social-proof-card","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/social-proof-card","license":"Apache-2.0","runs":"local"},{"slug":"hf.soft-blob-touch","name":"soft-blob-touch","title":"Soft Blob Touch","summary":"A granular soft blob idles with slow internal drift; a scripted touch dot decel-arrives, the blob deforms toward it with an attraction bulge, then recovers with a velocity-preserving spring. No hard edges anywhere.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"showcases","also":["textures","entrances"],"tags":["motion-primitive","product-demo","material","blob","touch","grain"],"aspect":"any","slots":[{"id":"touch_x","type":"number","label":"Touch X"},{"id":"touch_y","type":"number","label":"Touch Y"},{"id":"touch_at","type":"number","label":"Touch at"},{"id":"grain","type":"enum","label":"Grain"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add soft-blob-touch","docs":"https://hyperframes.heygen.com/catalog/components/soft-blob-touch","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/soft-blob-touch","license":"Apache-2.0","runs":"local"},{"slug":"hf.soft-blur-in","name":"soft-blur-in","title":"Soft Blur In","summary":"A soft opacity, blur, and lift reveal for headlines, captions, and product UI callouts","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["filters","entrances","captions"],"tags":["motion-primitive","text","reveal","blur"],"aspect":"any","slots":[{"id":"distance","type":"enum","label":"Distance"},{"id":"direction","type":"enum","label":"Direction"},{"id":"blur","type":"enum","label":"Blur"}],"install":"npx hyperframes add soft-blur-in","docs":"https://hyperframes.heygen.com/catalog/components/soft-blur-in","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/soft-blur-in","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/soft-blur-in.png"},"runs":"local"},{"slug":"hf.spain-map","name":"spain-map","title":"Spain Map","summary":"Animated Spain choropleth by autonomous community with staggered reveals and gradient legend — D3 conic conformal projection","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"maps","also":["backgrounds","entrances"],"tags":["data","map","geography","spain","europe","choropleth"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":12,"install":"npx hyperframes add spain-map","docs":"https://hyperframes.heygen.com/catalog/blocks/spain-map","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/spain-map","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/spain-map.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/spain-map.mp4"},"runs":"local"},{"slug":"hf.spiral","name":"spiral","title":"Spiral","summary":"A bold black and white spiral turns in the frame. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["filters","backgrounds"],"tags":["webgpu","webgpu-shader","background","pattern","spiral","monochrome"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add spiral","docs":"https://hyperframes.heygen.com/catalog/blocks/spiral","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/spiral","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/spiral.mp4"},"runs":"local"},{"slug":"hf.spiral-galaxy","name":"spiral-galaxy","title":"Spiral Galaxy","summary":"A spiral galaxy seen from outside, turning with real differential rotation: inner stars orbit faster than outer ones, so the arms wind up over the shot instead of spinning rigidly. 20,000 additive GPU sprites…","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"particles","also":["shaders","backgrounds"],"tags":["hero","space","particles","webgl","background"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":10,"slots":[{"id":"stars","type":"number","label":"Star count"},{"id":"arms","type":"number","label":"Arm count"},{"id":"rate","type":"number","label":"Rotation rate"},{"id":"glow","type":"number","label":"Core brightness"},{"id":"size","type":"number","label":"Star size"},{"id":"core","type":"color","label":"Core colour"},{"id":"rim","type":"color","label":"Rim colour"}],"install":"npx hyperframes add spiral-galaxy","docs":"https://hyperframes.heygen.com/catalog/blocks/spiral-galaxy","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/spiral-galaxy","license":"Apache-2.0","runs":"local"},{"slug":"hf.split-flap-board","name":"split-flap-board","title":"Split-Flap Board","summary":"Solari-style departure board: every cell walks its drum forward through the intervening characters of a fixed alphabet until it lands on its target, so the text resolves as a mechanical cascade instead of a fade.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"kinetic-type","also":["text-effects","entrances"],"tags":["text","kinetic","mechanical","split-flap","solari","departure-board","reveal"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":3.5,"slots":[{"id":"boardText","type":"string","label":"Board text"},{"id":"flapAlphabet","type":"string","label":"Flap alphabet (drum order)"},{"id":"flipDuration","type":"number","label":"Seconds per flap"},{"id":"cellStagger","type":"number","label":"Per-cell start stagger"},{"id":"cellCount","type":"number","label":"Cells on the board"}],"install":"npx hyperframes add split-flap-board","docs":"https://hyperframes.heygen.com/catalog/blocks/split-flap-board","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/split-flap-board","license":"Apache-2.0","runs":"local"},{"slug":"hf.split-tilt-cards","name":"split-tilt-cards","title":"Split Tilt Cards","summary":"Two equal-weight cards arrive from opposite wings with mirrored rotateY book-open tilts under one shared perspective, pill badges spring-pop at each inner edge…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"comparisons","also":["layouts","entrances"],"tags":["motion-primitive","layout","compare","holdable","book-open","tilt","slots"],"aspect":"any","slots":[{"id":"label_a","type":"string","label":"Left label"},{"id":"label_b","type":"string","label":"Right label"},{"id":"badge_a","type":"string","label":"Left badge"},{"id":"badge_b","type":"string","label":"Right badge"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add split-tilt-cards","docs":"https://hyperframes.heygen.com/catalog/components/split-tilt-cards","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/split-tilt-cards","license":"Apache-2.0","runs":"local"},{"slug":"hf.spotify-card","name":"spotify-card","title":"Spotify Now Playing","summary":"Animated Spotify now-playing card with album art and progress bar","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"social-cards","also":["timers"],"tags":["social","overlay","spotify"],"canvas":{"w":1080,"h":1920},"aspect":"9:16","duration":5,"install":"npx hyperframes add spotify-card","docs":"https://hyperframes.heygen.com/catalog/blocks/spotify-card","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/spotify-card","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/spotify-card.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/spotify-card.mp4"},"runs":"local"},{"slug":"hf.spotlight-card","name":"spotlight-card","title":"Spotlight Card","summary":"A card with a scripted cursor spotlight and lit border.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","tags":["effect"],"aspect":"any","install":"npx hyperframes add spotlight-card","docs":"https://hyperframes.heygen.com/catalog/components/spotlight-card","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/spotlight-card","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/spotlight-card.png"},"runs":"local"},{"slug":"hf.spring-pop","name":"spring-pop","title":"Spring Pop","summary":"A badge pops in from a visible near-rest scale, overshoots full size once, and settles cleanly.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["particles"],"tags":["motion-primitive","effects","spring","overshoot","pop","reveal"],"aspect":"any","slots":[{"id":"overshoot","type":"number","label":"Overshoot"},{"id":"fromScale","type":"number","label":"Starting scale"},{"id":"text","type":"string","label":"Label"}],"install":"npx hyperframes add spring-pop","docs":"https://hyperframes.heygen.com/catalog/components/spring-pop","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/spring-pop","license":"Apache-2.0","runs":"local"},{"slug":"hf.spring-stack-shuffle","name":"spring-stack-shuffle","title":"Spring Stack Shuffle","summary":"A stack of 3 to 5 slotted cards reshuffles on cues: the back card throws over the top and lands at the front with real mass…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["showcases","particles"],"tags":["motion-primitive","product-demo","physics","stack","interruptible-spring"],"aspect":"any","slots":[{"id":"cards","type":"number","label":"Cards"},{"id":"cues","type":"string","label":"Shuffle cues"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add spring-stack-shuffle","docs":"https://hyperframes.heygen.com/catalog/components/spring-stack-shuffle","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/spring-stack-shuffle","license":"Apache-2.0","runs":"local"},{"slug":"hf.stagger-cascade","name":"stagger-cascade","title":"Stagger Cascade","summary":"A responsive grid of tile cards that fades and travels into place with an evenly spaced per-item GSAP stagger. The ordered cascade is the only visual mechanic.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"entrances","also":["backgrounds"],"tags":["effects","grid","stagger","entrance","exhibit"],"aspect":"any","slots":[{"id":"itemCount","type":"number","label":"Item count"},{"id":"stagger","type":"number","label":"Stagger"},{"id":"direction","type":"enum","label":"Direction"}],"install":"npx hyperframes add stagger-cascade","docs":"https://hyperframes.heygen.com/catalog/components/stagger-cascade","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/stagger-cascade","license":"Apache-2.0","runs":"local"},{"slug":"hf.stagger-lattice","name":"stagger-lattice","title":"Stagger Lattice","summary":"A staggered grid reveal inspired by Anime.js v4 stagger utilities, implemented with GSAP for HyperFrames.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"entrances","tags":["advanced-motion","anime-inspired","hyperframes-native"],"aspect":"any","install":"npx hyperframes add stagger-lattice","docs":"https://hyperframes.heygen.com/catalog/components/stagger-lattice","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/stagger-lattice","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/stagger-lattice.png"},"runs":"local"},{"slug":"hf.staggered-fade-up","name":"staggered-fade-up","title":"Staggered Fade Up","summary":"Words fade in and slide up one after another with configurable delay.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["text-effects"],"tags":["video-primitive","motion-primitive","typography"],"aspect":"any","slots":[{"id":"direction","type":"enum","label":"Direction"},{"id":"distance","type":"enum","label":"Distance"},{"id":"tone","type":"enum","label":"Tone"},{"id":"words","type":"string","label":"Words"}],"install":"npx hyperframes add staggered-fade-up","docs":"https://hyperframes.heygen.com/catalog/components/staggered-fade-up","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/staggered-fade-up","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/staggered-fade-up.png"},"runs":"local"},{"slug":"hf.star-rating-fill","name":"star-rating-fill","title":"Star Rating Fill","summary":"A token-driven star row whose colored layer sweeps to a rating, preserves the fractional final star, and can count the value in sync.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"social-proof","also":["stats","entrances"],"tags":["data","rating","stars","fractional","fill","prove"],"aspect":"any","slots":[{"id":"rating","type":"number","label":"Rating"},{"id":"starCount","type":"number","label":"Star count"},{"id":"showValue","type":"enum","label":"Show value"}],"install":"npx hyperframes add star-rating-fill","docs":"https://hyperframes.heygen.com/catalog/components/star-rating-fill","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/star-rating-fill","license":"Apache-2.0","runs":"local"},{"slug":"hf.starfield","name":"starfield","title":"Starfield","summary":"Seek-safe night-sky overlay: sparse or dense stars in three size tiers that twinkle and drift in two parallax layers, radial-masked to keep the frame center clear","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"particles","also":["textures","backgrounds","camera"],"tags":["starfield","night-sky","stars","twinkle","sky","weather","overlay","ambient","particles","media-treatment-overlay","loopable"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"density","type":"enum","label":"Density"},{"id":"tone","type":"enum","label":"Tone"},{"id":"speed","type":"enum","label":"Twinkle speed"}],"install":"npx hyperframes add starfield","docs":"https://hyperframes.heygen.com/catalog/blocks/starfield","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/starfield","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/starfield.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/starfield.mp4"},"runs":"local"},{"slug":"hf.state-chip-rail","name":"state-chip-rail","title":"State Chip Rail","summary":"A rail of mono status chips advances a seek-safe data-state snap machine on a cue schedule: active chip ink on surface, done chips dim, pending chips hollow, optional badges pop beside one state.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"showcases","also":["entrances"],"tags":["motion-primitive","product-demo","state-machine","status","chips","rail"],"aspect":"any","slots":[{"id":"states","type":"string","label":"States"},{"id":"times","type":"string","label":"Times"},{"id":"badge_state","type":"number","label":"Badge state"},{"id":"badges","type":"string","label":"Badges"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add state-chip-rail","docs":"https://hyperframes.heygen.com/catalog/components/state-chip-rail","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/state-chip-rail","license":"Apache-2.0","runs":"local"},{"slug":"hf.sticky-mock-swap","name":"sticky-mock-swap","title":"Sticky Mock Swap","summary":"A pinned product mock cross-fades through accent-tinted feature states while matching captions rise, hold, and exit beside it.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"showcases","also":["transitions","entrances","captions"],"tags":["motion-primitive","product-demo","sticky","mock","crossfade","feature-tour"],"aspect":"any","slots":[{"id":"captions","type":"string","label":"Captions"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add sticky-mock-swap","docs":"https://hyperframes.heygen.com/catalog/components/sticky-mock-swap","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/sticky-mock-swap","license":"Apache-2.0","runs":"local"},{"slug":"hf.stitched-text-draw","name":"stitched-text-draw","title":"Stitched Text Draw","summary":"Text drawn as thread stitches: a single-stroke display alphabet draws via attribute-driven dashoffset with stitch-tuned dash patterns, seeded angle jitter, needle-hole dots, a leading needle…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances","backgrounds"],"tags":["motion-primitive","experiment","type","craft","stitch","deterministic"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"stitch","type":"enum","label":"Stitch"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add stitched-text-draw","docs":"https://hyperframes.heygen.com/catalog/components/stitched-text-draw","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/stitched-text-draw","license":"Apache-2.0","runs":"local"},{"slug":"hf.stop-motion-cadence","name":"stop-motion-cadence","title":"Stop Motion Cadence","summary":"The stepped-time law as a demo primitive: one driver quantizes timeline time to floor(t * fps) / fps and feeds ALL motion; four token paper-cut shapes throw-and-land with squash on hits…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["steps","particles","textures"],"tags":["motion-primitive","time-law","stop-motion","stepped","boil","deterministic","experiment"],"aspect":"any","slots":[{"id":"fps","type":"enum","label":"Cadence"},{"id":"boil","type":"enum","label":"Boil"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add stop-motion-cadence","docs":"https://hyperframes.heygen.com/catalog/components/stop-motion-cadence","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/stop-motion-cadence","license":"Apache-2.0","runs":"local"},{"slug":"hf.store-badge-lockup","name":"store-badge-lockup","title":"Store Badge Lockup","summary":"Settles a short headline above equal-size App Store and Google Play badges as a token-driven mobile end-card call to action.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"outros","also":["title-cards","devices","mock-ui"],"tags":["prop","ui-props","mobile","store-badges","cta","ask"],"aspect":"any","slots":[{"id":"headline","type":"string","label":"Headline"},{"id":"showApple","type":"enum","label":"Show App Store"},{"id":"showGoogle","type":"enum","label":"Show Google Play"}],"install":"npx hyperframes add store-badge-lockup","docs":"https://hyperframes.heygen.com/catalog/components/store-badge-lockup","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/store-badge-lockup","license":"Apache-2.0","runs":"local"},{"slug":"hf.strands","name":"strands","title":"Strands","summary":"Thin ribbons of pink and blue light weave across a black field. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["backgrounds"],"tags":["webgpu","webgpu-shader","background","light","lines","ribbons"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add strands","docs":"https://hyperframes.heygen.com/catalog/blocks/strands","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/strands","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/strands.mp4"},"runs":"local"},{"slug":"hf.streaming-text","name":"streaming-text","title":"Streaming Text","summary":"Words arrive the way an AI answer streams - in uneven bursts on a measured token rhythm, each word landing grey and inking to full colour - rather than the even tick of a typewriter","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["chats","particles"],"tags":["video-primitive","text-effect","ai","chat"],"author":"Miao Yang","aspect":"any","slots":[{"id":"size","type":"number","label":"Size"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add streaming-text","docs":"https://hyperframes.heygen.com/catalog/components/streaming-text","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/streaming-text","license":"Apache-2.0","runs":"local"},{"slug":"hf.strikethrough-replace","name":"strikethrough-replace","title":"Strikethrough Replace","summary":"Draw a strike line across old text, then reveal the replacement.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances"],"tags":["motion-primitive","typography"],"aspect":"any","slots":[{"id":"origin","type":"enum","label":"Origin"},{"id":"thickness","type":"enum","label":"Thickness"},{"id":"tint","type":"enum","label":"Tint"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add strikethrough-replace","docs":"https://hyperframes.heygen.com/catalog/components/strikethrough-replace","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/strikethrough-replace","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/strikethrough-replace.png"},"runs":"local"},{"slug":"hf.stripes","name":"stripes","title":"Stripes","summary":"Bold black and white diagonal stripes slide across the frame. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["filters","backgrounds"],"tags":["webgpu","webgpu-shader","background","pattern","stripes","monochrome"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add stripes","docs":"https://hyperframes.heygen.com/catalog/blocks/stripes","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/stripes","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/stripes.mp4"},"runs":"local"},{"slug":"hf.success-check","name":"success-check","title":"Success Check","summary":"A success check primitive with ring pop, path draw, and subtle rotate blur","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"mock-ui","also":["transitions","filters","entrances"],"tags":["video-primitive","transition-primitive","transitions-dev-port","success","check"],"aspect":"any","slots":[{"id":"tint","type":"enum","label":"Tint"},{"id":"size","type":"enum","label":"Size"},{"id":"ring","type":"enum","label":"Ring"},{"id":"spin","type":"enum","label":"Spin"}],"install":"npx hyperframes add success-check","docs":"https://hyperframes.heygen.com/catalog/components/success-check","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/success-check","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/success-check.png"},"runs":"local"},{"slug":"hf.sun-burst","name":"sun-burst","title":"Sun Burst","summary":"Cream and black rays fan out from the centre and slowly turn. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"particles","also":["shaders","backgrounds"],"tags":["webgpu","webgpu-shader","background","light","rays","radial"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add sun-burst","docs":"https://hyperframes.heygen.com/catalog/blocks/sun-burst","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/sun-burst","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/sun-burst.mp4"},"runs":"local"},{"slug":"hf.svg-line-draw-loader","name":"svg-line-draw-loader","title":"SVG Line Draw Loader","summary":"An Anime.js-style path drawing loader implemented as a seekable GSAP stroke timeline.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"timers","also":["steps"],"tags":["video-primitive","advanced-motion","anime-inspired","hyperframes-native"],"aspect":"any","install":"npx hyperframes add svg-line-draw-loader","docs":"https://hyperframes.heygen.com/catalog/components/svg-line-draw-loader","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/svg-line-draw-loader","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/svg-line-draw-loader.png"},"runs":"local"},{"slug":"hf.svg-mask-reveal","name":"svg-mask-reveal","title":"SVG Mask Reveal","summary":"A soft token-colored sweep reveals media only through an editable SVG wordmark mask.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"entrances","also":["logos"],"tags":["effect","svg","mask","wordmark","reveal","exhibit"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Wordmark"},{"id":"revealProgress","type":"number","label":"Reveal progress"},{"id":"featherPx","type":"number","label":"Edge feather"}],"install":"npx hyperframes add svg-mask-reveal","docs":"https://hyperframes.heygen.com/catalog/components/svg-mask-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/svg-mask-reveal","license":"Apache-2.0","runs":"local"},{"slug":"hf.svg-stroke-trace","name":"svg-stroke-trace","title":"SVG Stroke Trace","summary":"An authored SVG path draws from its measured length, holds with subtle drift, and optionally fills when the path is closed.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"intros","also":["entrances"],"tags":["motion-primitive","intro","reveal","svg","stroke","line-draw"],"aspect":"any","slots":[{"id":"path","type":"string","label":"Path"},{"id":"stroke_width","type":"number","label":"Stroke width"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add svg-stroke-trace","docs":"https://hyperframes.heygen.com/catalog/components/svg-stroke-trace","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/svg-stroke-trace","license":"Apache-2.0","runs":"local"},{"slug":"hf.swipe-rail","name":"swipe-rail","title":"Swipe Rail","summary":"A contact circle leads a horizontal card rail through a fast drag, momentum carry, and settled snap to the next card.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","also":["entrances"],"tags":["motion-primitive","interaction","gesture","swipe","cards","rail"],"aspect":"any","slots":[{"id":"card_count","type":"number","label":"Card count"},{"id":"accent","type":"enum","label":"Accent"},{"id":"card_label_prefix","type":"string","label":"Card label prefix"}],"install":"npx hyperframes add swipe-rail","docs":"https://hyperframes.heygen.com/catalog/components/swipe-rail","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/swipe-rail","license":"Apache-2.0","runs":"local"},{"slug":"hf.swirl","name":"swirl","title":"Swirl","summary":"Orange and blue color fields swirl and flow into each other across the whole frame. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["backgrounds"],"tags":["webgpu","webgpu-shader","background","gradient","flow","abstract"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add swirl","docs":"https://hyperframes.heygen.com/catalog/blocks/swirl","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/swirl","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/swirl.mp4"},"runs":"local"},{"slug":"hf.swirl-vortex","name":"swirl-vortex","title":"Swirl Vortex","summary":"Shader transition with swirling vortex distortion","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["shaders"],"tags":["transition","shader"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add swirl-vortex","docs":"https://hyperframes.heygen.com/catalog/blocks/swirl-vortex","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/swirl-vortex","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/swirl-vortex.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/swirl-vortex.mp4"},"runs":"local"},{"slug":"hf.swiss-grid","name":"swiss-grid","title":"Swiss Grid","summary":"Structured grid layout","registry":"hyperframes","framework":"hyperframes","layer":"template","category":"layouts","tags":[],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":10,"install":"npx hyperframes init my-video --example swiss-grid","docs":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/swiss-grid","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/swiss-grid","license":"Apache-2.0","runs":"local"},{"slug":"hf.tabs-slide-indicator","name":"tabs-slide-indicator","title":"Tabs Slide Indicator","summary":"A pill indicator transition that slides between active tabs","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"mock-ui","also":["transitions"],"tags":["transition-primitive","transitions-dev-port","tabs","indicator"],"aspect":"any","slots":[{"id":"accent","type":"enum","label":"Accent"},{"id":"width","type":"enum","label":"Tab width"},{"id":"shape","type":"enum","label":"Shape"},{"id":"labels","type":"string","label":"Labels"}],"install":"npx hyperframes add tabs-slide-indicator","docs":"https://hyperframes.heygen.com/catalog/components/tabs-slide-indicator","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/tabs-slide-indicator","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/tabs-slide-indicator.png"},"runs":"local"},{"slug":"hf.telemetry-hud","name":"telemetry-hud","title":"Telemetry HUD","summary":"Quiet mono debug-HUD readouts frame a slotted subject: corner brackets draw on, label:value lines tick their values on cues, one readout emphasized in accent. The subject never moves; the HUD breathes zero.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"hud","also":["showcases","entrances"],"tags":["motion-primitive","product-demo","hud","telemetry","deterministic"],"aspect":"any","slots":[{"id":"readouts","type":"string","label":"Readouts"},{"id":"emphasize","type":"number","label":"Emphasize"},{"id":"cues","type":"string","label":"Cues"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add telemetry-hud","docs":"https://hyperframes.heygen.com/catalog/components/telemetry-hud","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/telemetry-hud","license":"Apache-2.0","runs":"local"},{"slug":"hf.terminal-simulator","name":"terminal-simulator","title":"Terminal Simulator","summary":"A terminal window types commands and streams log output.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"code","tags":["code-animation"],"aspect":"any","install":"npx hyperframes add terminal-simulator","docs":"https://hyperframes.heygen.com/catalog/components/terminal-simulator","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/terminal-simulator","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/terminal-simulator.png"},"runs":"local"},{"slug":"hf.testimonial-card","name":"testimonial-card","title":"Testimonial Card","summary":"Reveals a customer quote at reading pace, then settles its avatar, author name, and handle beneath as a clean proof beat.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"social-proof","also":["headlines","mock-ui","beat-sync"],"tags":["prop","ui-props","testimonial","social-proof","quote","prove"],"aspect":"any","slots":[{"id":"quote","type":"string","label":"Quote"},{"id":"author","type":"string","label":"Author"},{"id":"handle","type":"string","label":"Handle"},{"id":"rating","type":"number","label":"Rating"}],"install":"npx hyperframes add testimonial-card","docs":"https://hyperframes.heygen.com/catalog/components/testimonial-card","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/testimonial-card","license":"Apache-2.0","runs":"local"},{"slug":"hf.testimonial-proof-card","name":"testimonial-proof-card","title":"Testimonial Proof Card","summary":"A quote card whose testimonial reveals per-line through a soft mask, with an avatar disc (initials default, image slot), mono name and role, an optional company text mark…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"social-proof","also":["headlines","entrances","annotations"],"tags":["motion-primitive","proof","testimonial","quote","social-proof","deterministic"],"aspect":"any","slots":[{"id":"quote","type":"string","label":"Quote"},{"id":"name","type":"string","label":"Name"},{"id":"role","type":"string","label":"Role"},{"id":"company","type":"string","label":"Company"},{"id":"emphasis","type":"string","label":"Emphasis"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add testimonial-proof-card","docs":"https://hyperframes.heygen.com/catalog/components/testimonial-proof-card","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/testimonial-proof-card","license":"Apache-2.0","runs":"local"},{"slug":"hf.text-match-cut","name":"text-match-cut","title":"Text Match Cut","summary":"One line of text becomes another mid-move: both ride a single 85 % easy-ease curve and hard-swap at the speed peak, as scale, tracking, or a same-direction slide.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","also":["text-effects","entrances"],"tags":["motion-primitive","transition","typography","match-cut","hard-cut","continuity"],"aspect":"any","slots":[{"id":"text_a","type":"string","label":"Outgoing text"},{"id":"text_b","type":"string","label":"Incoming text"},{"id":"mode","type":"enum","label":"Move"},{"id":"sweep","type":"enum","label":"Gradient sweep"},{"id":"background","type":"enum","label":"Background"}],"install":"npx hyperframes add text-match-cut","docs":"https://hyperframes.heygen.com/catalog/components/text-match-cut","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/text-match-cut","license":"Apache-2.0","runs":"local"},{"slug":"hf.text-shimmer","name":"text-shimmer","title":"Text Shimmer","summary":"A static headline receives one clean specular gradient sweep through its glyphs, then returns to its ordinary text color.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances","headlines","backgrounds"],"tags":["motion-primitive","text-effects","shimmer","specular","emphasis"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Headline"},{"id":"accent","type":"enum","label":"Accent"},{"id":"sweep_at","type":"number","label":"Sweep start"}],"install":"npx hyperframes add text-shimmer","docs":"https://hyperframes.heygen.com/catalog/components/text-shimmer","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/text-shimmer","license":"Apache-2.0","runs":"local"},{"slug":"hf.text-stagger","name":"text-stagger","title":"Text Stagger","summary":"A transitions.dev-inspired text stagger primitive with enter, shimmer, and exit-ready words","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances","mock-ui","transitions"],"tags":["video-primitive","transition-primitive","transitions-dev-port","text","stagger"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"size","type":"number","label":"Size"},{"id":"tone","type":"enum","label":"Tone"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add text-stagger","docs":"https://hyperframes.heygen.com/catalog/components/text-stagger","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/text-stagger","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/text-stagger.png"},"runs":"local"},{"slug":"hf.text-state-swap","name":"text-state-swap","title":"Text State Swap","summary":"A text state swap primitive with outgoing blur and incoming lift","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["mock-ui","transitions","filters"],"tags":["video-primitive","transition-primitive","transitions-dev-port","text","swap"],"aspect":"any","slots":[{"id":"from-text","type":"string","label":"From text"},{"id":"to-text","type":"string","label":"To text"},{"id":"distance","type":"enum","label":"Distance"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add text-state-swap","docs":"https://hyperframes.heygen.com/catalog/components/text-state-swap","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/text-state-swap","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/text-state-swap.png"},"runs":"local"},{"slug":"hf.texture-mask-text","name":"texture-mask-text","title":"Texture Mask Text","summary":"CSS luminance masks that cut holes through letterforms - 66 pre-built texture masks from ambientCG PBR color maps","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["textures","backgrounds"],"tags":["text","text-effect","effect","texture","mask"],"aspect":"any","install":"npx hyperframes add texture-mask-text","docs":"https://hyperframes.heygen.com/catalog/components/texture-mask-text","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/texture-mask-text","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/texture-mask-text.png"},"runs":"local"},{"slug":"hf.thermal-distortion","name":"thermal-distortion","title":"Thermal Distortion","summary":"Shader transition with heat haze thermal distortion","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["shaders"],"tags":["transition","shader"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add thermal-distortion","docs":"https://hyperframes.heygen.com/catalog/blocks/thermal-distortion","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/thermal-distortion","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/thermal-distortion.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/thermal-distortion.mp4"},"runs":"local"},{"slug":"hf.thin-film","name":"thin-film","title":"Thin Film","summary":"An orb's rim shimmers with soap-bubble iridescence on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","tags":["webgpu","webgpu-shader","object","iridescent","bubble","rainbow"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add thin-film","docs":"https://hyperframes.heygen.com/catalog/blocks/thin-film","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/thin-film","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/thin-film.mp4"},"runs":"local"},{"slug":"hf.thread-message-stack","name":"thread-message-stack","title":"Thread Message Stack","summary":"A source-owned editable conversation stack with arbitrary incoming and outgoing messages","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"chats","tags":["social","conversation","messages"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":8,"install":"npx hyperframes add thread-message-stack","docs":"https://hyperframes.heygen.com/catalog/blocks/thread-message-stack","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/thread-message-stack","license":"Apache-2.0","runs":"local"},{"slug":"hf.three-orbiting-cards","name":"three-orbiting-cards","title":"Three Orbiting Cards","summary":"A Three.js-powered orbit scene driven by a paused GSAP timeline for deterministic renders.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"three-d","also":["shaders","steps"],"tags":["video-primitive","three-js","webgl","hyperframes-native"],"aspect":"any","install":"npx hyperframes add three-orbiting-cards","docs":"https://hyperframes.heygen.com/catalog/components/three-orbiting-cards","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/three-orbiting-cards","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/three-orbiting-cards.png"},"runs":"local"},{"slug":"hf.ticker-takeover","name":"ticker-takeover","title":"Ticker Takeover","summary":"A mono ticker rolls through options, locks on a final word with an accent flash, and promotes it into a full-frame headline.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"hud","also":["headlines","text-effects","entrances"],"tags":["motion-primitive","typography","ticker","slot-machine","headline","reveal"],"aspect":"any","slots":[{"id":"options","type":"string","label":"Options"},{"id":"final_word","type":"string","label":"Final word"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add ticker-takeover","docs":"https://hyperframes.heygen.com/catalog/components/ticker-takeover","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/ticker-takeover","license":"Apache-2.0","runs":"local"},{"slug":"hf.tiktok-follow","name":"tiktok-follow","title":"TikTok Follow","summary":"Animated TikTok follow overlay with profile card and follow button","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"social-cards","also":["mock-ui","textures"],"tags":["social","overlay","tiktok"],"canvas":{"w":1080,"h":1920},"aspect":"9:16","duration":4.5,"install":"npx hyperframes add tiktok-follow","docs":"https://hyperframes.heygen.com/catalog/blocks/tiktok-follow","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/tiktok-follow","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/tiktok-follow.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/tiktok-follow.mp4"},"runs":"local"},{"slug":"hf.tilt-card","name":"tilt-card","title":"Tilt Card","summary":"A transitions.dev-inspired tilt card primitive with depth layers and hover-style parallax","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"mock-ui","also":["transitions","camera"],"tags":["video-primitive","transition-primitive","transitions-dev-port","card","tilt"],"aspect":"any","slots":[{"id":"eyebrow","type":"string","label":"Eyebrow"},{"id":"headline","type":"string","label":"Headline"},{"id":"glow","type":"enum","label":"Glow"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add tilt-card","docs":"https://hyperframes.heygen.com/catalog/components/tilt-card","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/tilt-card","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/tilt-card.png"},"runs":"local"},{"slug":"hf.titlecard-calm","name":"titlecard-calm","title":"Titlecard Calm","summary":"A restrained title card where a mono kicker and generous grotesque headline fade upward, drift almost imperceptibly, and exit cleanly.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"title-cards","also":["text-effects","entrances","headlines"],"tags":["motion-primitive","typography","title-card","calm","orient"],"aspect":"any","slots":[{"id":"headline","type":"string","label":"Headline"},{"id":"kicker","type":"string","label":"Kicker"}],"install":"npx hyperframes add titlecard-calm","docs":"https://hyperframes.heygen.com/catalog/components/titlecard-calm","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/titlecard-calm","license":"Apache-2.0","runs":"local"},{"slug":"hf.titlecard-lockup","name":"titlecard-lockup","title":"Titlecard Lockup","summary":"The calm breather titlecard: an optional mono kicker fades up, the wordmark settles dead-center with one restrained move, a hairline rule draws left to right, a mono label fades beneath, and the lockup holds truly still.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"title-cards","also":["text-effects","entrances","logos"],"tags":["motion-primitive","typography","title-card","lockup","breather","orient"],"aspect":"any","slots":[{"id":"wordmark","type":"string","label":"Wordmark"},{"id":"label","type":"string","label":"Label"},{"id":"kicker","type":"string","label":"Kicker"},{"id":"rule","type":"enum","label":"Rule"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add titlecard-lockup","docs":"https://hyperframes.heygen.com/catalog/components/titlecard-lockup","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/titlecard-lockup","license":"Apache-2.0","runs":"local"},{"slug":"hf.toggle-flip","name":"toggle-flip","title":"Toggle Flip","summary":"An oversized UI toggle switch that flips with real physicality: thumb overshoot, track color crossfade, and a soft press-compress before release. The reference prop of the ui-props family.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"mock-ui","also":["transitions"],"tags":["prop","ui-props","toggle","interaction","reference-prop","demonstrate"],"aspect":"any","slots":[{"id":"direction","type":"enum","label":"Flip direction"},{"id":"label","type":"string","label":"Caption"},{"id":"size","type":"number","label":"Size"}],"install":"npx hyperframes add toggle-flip","docs":"https://hyperframes.heygen.com/catalog/components/toggle-flip","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/toggle-flip","license":"Apache-2.0","runs":"local"},{"slug":"hf.top-down-letters","name":"top-down-letters","title":"Top-Down Letters","summary":"Letters descend from above in a pronounced staircase with zero blur.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances","filters"],"tags":["video-primitive","motion-primitive","typography"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"distance","type":"enum","label":"Distance"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add top-down-letters","docs":"https://hyperframes.heygen.com/catalog/components/top-down-letters","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/top-down-letters","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/top-down-letters.png"},"runs":"local"},{"slug":"hf.torn-paper-rip","name":"torn-paper-rip","title":"Torn Paper Rip","summary":"A fibrous paper tear runs across the frame: the torn sheet shows its white paper core along the edge and lifts away on a soft shadow, leaving the next scene standing.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"textures","also":["transitions","entrances"],"tags":["torn paper","paper rip","paper tear","transition","texture","motion-primitive"],"aspect":"any","slots":[{"id":"direction","type":"enum","label":"Direction"},{"id":"tone","type":"enum","label":"Paper tone"},{"id":"roughness","type":"number","label":"Roughness"}],"install":"npx hyperframes add torn-paper-rip","docs":"https://hyperframes.heygen.com/catalog/components/torn-paper-rip","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/torn-paper-rip","license":"Apache-2.0","runs":"local"},{"slug":"hf.touch-indicator","name":"touch-indicator","title":"Touch Indicator","summary":"A translucent contact-circle gesture actor for mobile UI scenes: it touches the glass on the frame the host target responds, then lifts. Tap or swipe, picked by variable.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"cursors","also":["devices","entrances","mock-ui"],"tags":["cursor","motion-primitive","mobile","gesture","touch","pointer"],"aspect":"any","slots":[{"id":"gesture","type":"enum","label":"Gesture"},{"id":"polarity","type":"enum","label":"Polarity"},{"id":"targetX","type":"number","label":"Target X"},{"id":"targetY","type":"number","label":"Target Y"}],"install":"npx hyperframes add touch-indicator","docs":"https://hyperframes.heygen.com/catalog/components/touch-indicator","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/touch-indicator","license":"Apache-2.0","runs":"local"},{"slug":"hf.tracing-beam","name":"tracing-beam","title":"Tracing Beam","summary":"A glowing dash follows one SVG path through three UI elements, lifting and brightening each element in sequence.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"showcases","also":["entrances","social-cards","mock-ui"],"tags":["motion-primitive","product-demo","attention","beam","path","spotlight"],"aspect":"any","slots":[{"id":"labels","type":"string","label":"Labels"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add tracing-beam","docs":"https://hyperframes.heygen.com/catalog/components/tracing-beam","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/tracing-beam","license":"Apache-2.0","runs":"local"},{"slug":"hf.tracking-in","name":"tracking-in","title":"Tracking In","summary":"A precise letter-spacing reveal for premium headings and interface labels","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances"],"tags":["motion-primitive","text","reveal","typography"],"aspect":"any","slots":[{"id":"tracking","type":"enum","label":"Tracking"},{"id":"rise","type":"enum","label":"Rise"},{"id":"tone","type":"enum","label":"Tone"}],"install":"npx hyperframes add tracking-in","docs":"https://hyperframes.heygen.com/catalog/components/tracking-in","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/tracking-in","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/tracking-in.png"},"runs":"local"},{"slug":"hf.transitions-3d","name":"transitions-3d","title":"3D Transitions","summary":"Showcase of 3D perspective flip and rotate transitions","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["three-d","showcases"],"tags":["transition","showcase"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":11,"install":"npx hyperframes add transitions-3d","docs":"https://hyperframes.heygen.com/catalog/blocks/transitions-3d","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-3d","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-3d.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-3d.mp4"},"runs":"local"},{"slug":"hf.transitions-blur","name":"transitions-blur","title":"Blur Transitions","summary":"Showcase of blur-based transitions between scenes","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["filters","showcases"],"tags":["transition","showcase"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":20,"install":"npx hyperframes add transitions-blur","docs":"https://hyperframes.heygen.com/catalog/blocks/transitions-blur","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-blur","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-blur.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-blur.mp4"},"runs":"local"},{"slug":"hf.transitions-cover","name":"transitions-cover","title":"Cover Transitions","summary":"Showcase of cover/uncover slide transitions","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["showcases"],"tags":["transition","showcase"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":21,"install":"npx hyperframes add transitions-cover","docs":"https://hyperframes.heygen.com/catalog/blocks/transitions-cover","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-cover","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-cover.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-cover.mp4"},"runs":"local"},{"slug":"hf.transitions-destruction","name":"transitions-destruction","title":"Destruction Transitions","summary":"Showcase of destructive break-apart transitions","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["showcases"],"tags":["transition","showcase"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":14,"install":"npx hyperframes add transitions-destruction","docs":"https://hyperframes.heygen.com/catalog/blocks/transitions-destruction","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-destruction","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-destruction.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-destruction.mp4"},"runs":"local"},{"slug":"hf.transitions-dissolve","name":"transitions-dissolve","title":"Dissolve Transitions","summary":"Showcase of dissolve and fade transitions","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["showcases"],"tags":["transition","showcase","crossfade"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":24,"install":"npx hyperframes add transitions-dissolve","docs":"https://hyperframes.heygen.com/catalog/blocks/transitions-dissolve","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-dissolve","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-dissolve.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-dissolve.mp4"},"runs":"local"},{"slug":"hf.transitions-distortion","name":"transitions-distortion","title":"Distortion Transitions","summary":"Showcase of warp and distortion transitions","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["showcases"],"tags":["transition","showcase"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":21,"install":"npx hyperframes add transitions-distortion","docs":"https://hyperframes.heygen.com/catalog/blocks/transitions-distortion","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-distortion","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-distortion.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-distortion.mp4"},"runs":"local"},{"slug":"hf.transitions-grid","name":"transitions-grid","title":"Grid Transitions","summary":"Showcase of grid-based tile transitions","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["showcases"],"tags":["transition","showcase"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":11,"install":"npx hyperframes add transitions-grid","docs":"https://hyperframes.heygen.com/catalog/blocks/transitions-grid","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-grid","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-grid.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-grid.mp4"},"runs":"local"},{"slug":"hf.transitions-light","name":"transitions-light","title":"Light Transitions","summary":"Showcase of light-based glow and flash transitions","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["showcases"],"tags":["transition","showcase"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":21,"install":"npx hyperframes add transitions-light","docs":"https://hyperframes.heygen.com/catalog/blocks/transitions-light","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-light","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-light.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-light.mp4"},"runs":"local"},{"slug":"hf.transitions-mechanical","name":"transitions-mechanical","title":"Mechanical Transitions","summary":"Showcase of mechanical shutter and iris transitions","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["showcases"],"tags":["transition","showcase"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":15,"install":"npx hyperframes add transitions-mechanical","docs":"https://hyperframes.heygen.com/catalog/blocks/transitions-mechanical","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-mechanical","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-mechanical.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-mechanical.mp4"},"runs":"local"},{"slug":"hf.transitions-other","name":"transitions-other","title":"Other Transitions","summary":"Showcase of miscellaneous creative transitions","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["showcases"],"tags":["transition","showcase"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":20,"install":"npx hyperframes add transitions-other","docs":"https://hyperframes.heygen.com/catalog/blocks/transitions-other","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-other","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-other.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-other.mp4"},"runs":"local"},{"slug":"hf.transitions-push","name":"transitions-push","title":"Push Transitions","summary":"Showcase of push and slide transitions","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["showcases"],"tags":["transition","showcase"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":24,"install":"npx hyperframes add transitions-push","docs":"https://hyperframes.heygen.com/catalog/blocks/transitions-push","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-push","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-push.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-push.mp4"},"runs":"local"},{"slug":"hf.transitions-radial","name":"transitions-radial","title":"Radial Transitions","summary":"Showcase of radial wipe and reveal transitions","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["showcases","entrances"],"tags":["transition","showcase"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":20,"install":"npx hyperframes add transitions-radial","docs":"https://hyperframes.heygen.com/catalog/blocks/transitions-radial","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-radial","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-radial.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-radial.mp4"},"runs":"local"},{"slug":"hf.transitions-scale","name":"transitions-scale","title":"Scale Transitions","summary":"Showcase of scale and zoom transitions","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["showcases","camera"],"tags":["transition","showcase"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":15,"install":"npx hyperframes add transitions-scale","docs":"https://hyperframes.heygen.com/catalog/blocks/transitions-scale","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/transitions-scale","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-scale.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/transitions-scale.mp4"},"runs":"local"},{"slug":"hf.trust-strip","name":"trust-strip","title":"Trust Strip","summary":"A monochrome trust row of wide-tracked mono wordmarks that fade in with an opacity-only left-to-right stagger, then hold dead still.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"social-proof","also":["entrances","logos","filters"],"tags":["motion-primitive","proof","trust","logo-strip","wordmarks"],"aspect":"any","slots":[{"id":"marks","type":"string","label":"Marks"},{"id":"tone","type":"enum","label":"Tone"},{"id":"cues","type":"string","label":"Cues"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add trust-strip","docs":"https://hyperframes.heygen.com/catalog/components/trust-strip","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/trust-strip","license":"Apache-2.0","runs":"local"},{"slug":"hf.type-match-cut","name":"type-match-cut","title":"Type Match Cut","summary":"A headline splits vertically around an incoming panel, which grows from the negative space and takes the frame as the words exit through opposite edges.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","also":["text-effects","entrances","headlines"],"tags":["motion-primitive","transition","typography","match-cut","continuity"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Headline"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add type-match-cut","docs":"https://hyperframes.heygen.com/catalog/components/type-match-cut","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/type-match-cut","license":"Apache-2.0","runs":"local"},{"slug":"hf.typed-prompt","name":"typed-prompt","title":"Typed Prompt","summary":"A prompt line types itself in chunked human cadence behind a deterministic blinking caret, with optional backspace-and-retype correction of the final word.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"showcases","also":["text-effects","entrances"],"tags":["motion-primitive","product-demo","typing","prompt","deterministic"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"prompt_glyph","type":"string","label":"Prompt glyph"},{"id":"cadence","type":"enum","label":"Cadence"},{"id":"caret","type":"enum","label":"Caret"},{"id":"correction","type":"string","label":"Correction"},{"id":"cues","type":"string","label":"Cues"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add typed-prompt","docs":"https://hyperframes.heygen.com/catalog/components/typed-prompt","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/typed-prompt","license":"Apache-2.0","runs":"local"},{"slug":"hf.typewriter","name":"typewriter","title":"Typewriter","summary":"Character-by-character text reveal with a deterministic blinking cursor.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances","cursors"],"tags":["video-primitive","motion-primitive","typography"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"tone","type":"enum","label":"Tone"},{"id":"caret","type":"enum","label":"Caret"}],"install":"npx hyperframes add typewriter","docs":"https://hyperframes.heygen.com/catalog/components/typewriter","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/typewriter","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/typewriter.png"},"runs":"local"},{"slug":"hf.typing-indicator","name":"typing-indicator","title":"Typing Indicator","summary":"The three-dot chat bubble that says someone is writing: it pops in at the thread's edge exactly as messaging apps do, holds while the reply is coming, and vanishes when the message lands","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"chats","also":["text-effects","mock-ui","entrances"],"tags":["video-primitive","chat","mock-ui","overlay"],"author":"Miao Yang","aspect":"any","slots":[{"id":"size","type":"number","label":"Size"},{"id":"tone","type":"enum","label":"Tone"},{"id":"tail","type":"enum","label":"Tail"}],"install":"npx hyperframes add typing-indicator","docs":"https://hyperframes.heygen.com/catalog/components/typing-indicator","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/typing-indicator","license":"Apache-2.0","runs":"local"},{"slug":"hf.ui-3d-reveal","name":"ui-3d-reveal","title":"3D UI Reveal","summary":"Perspective 3D reveal animation for UI elements","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"mock-ui","also":["three-d","entrances"],"tags":["showcase","3d","reveal"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":13,"install":"npx hyperframes add ui-3d-reveal","docs":"https://hyperframes.heygen.com/catalog/blocks/ui-3d-reveal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/ui-3d-reveal","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ui-3d-reveal.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/ui-3d-reveal.mp4"},"runs":"local"},{"slug":"hf.ui-focus-zoom","name":"ui-focus-zoom","title":"UI Focus Zoom","summary":"A full app surface establishes with one settle, then the camera zooms and pans to an anchored region on its cue and holds the zoomed state, with an optional soft focus halo at the anchor…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"mock-ui","also":["camera","showcases"],"tags":["camera","product-demo","zoom","focus","pan","slot","servo"],"aspect":"any","slots":[{"id":"anchor_x","type":"number","label":"Anchor X"},{"id":"anchor_y","type":"number","label":"Anchor Y"},{"id":"zoom","type":"number","label":"Zoom"},{"id":"zoom_at","type":"number","label":"Zoom at"},{"id":"halo","type":"enum","label":"Halo"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add ui-focus-zoom","docs":"https://hyperframes.heygen.com/catalog/components/ui-focus-zoom","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/ui-focus-zoom","license":"Apache-2.0","runs":"local"},{"slug":"hf.us-map","name":"us-map","title":"US Map","summary":"Animated US choropleth map with staggered state reveals, value labels, and gradient legend — pure inline SVG with GSAP","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"maps","also":["backgrounds","entrances"],"tags":["data","map","geography","usa","choropleth"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":12,"install":"npx hyperframes add us-map","docs":"https://hyperframes.heygen.com/catalog/blocks/us-map","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/us-map","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map.mp4"},"runs":"local"},{"slug":"hf.us-map-bubble","name":"us-map-bubble","title":"US Bubble Map","summary":"Animated US bubble map with proportional city markers, value callouts, and connection lines — composable with us-map","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"maps","also":["annotations"],"tags":["data","map","geography","usa","bubble","cities"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":12,"install":"npx hyperframes add us-map-bubble","docs":"https://hyperframes.heygen.com/catalog/blocks/us-map-bubble","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/us-map-bubble","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map-bubble.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map-bubble.mp4"},"runs":"local"},{"slug":"hf.us-map-flow","name":"us-map-flow","title":"US Flow Map","summary":"Animated connection arcs between US cities over a base map — composable origin-destination flow visualization","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"maps","tags":["data","map","geography","usa","flow","connections","arcs"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":12,"install":"npx hyperframes add us-map-flow","docs":"https://hyperframes.heygen.com/catalog/blocks/us-map-flow","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/us-map-flow","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map-flow.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map-flow.mp4"},"runs":"local"},{"slug":"hf.us-map-hex","name":"us-map-hex","title":"US Hex Grid Map","summary":"Animated hexagonal tile grid map — each state as an equal-weight hex with data fill and abbreviation label","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"maps","tags":["data","map","geography","usa","hexgrid","tilegrid"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":10,"install":"npx hyperframes add us-map-hex","docs":"https://hyperframes.heygen.com/catalog/blocks/us-map-hex","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/us-map-hex","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map-hex.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/us-map-hex.mp4"},"runs":"local"},{"slug":"hf.variable-axis-type","name":"variable-axis-type","title":"Variable Axis Type","summary":"A locked one-line headline whose weight or width axis morphs into a decisive emphasis beat.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"kinetic-type","also":["text-effects","entrances","beat-sync"],"tags":["typography","variable-font","kinetic-type","axis","emphasize"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"axis","type":"enum","label":"Axis"},{"id":"fromValue","type":"number","label":"From value"},{"id":"toValue","type":"number","label":"To value"}],"install":"npx hyperframes add variable-axis-type","docs":"https://hyperframes.heygen.com/catalog/components/variable-axis-type","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/variable-axis-type","license":"Apache-2.0","runs":"local"},{"slug":"hf.variable-font-flex","name":"variable-font-flex","title":"Variable Font Flex","summary":"A word lands while its variable-font weight and width axes flex from hairline-condensed to black-wide with per-character stagger; font-size eases inversely so the letterforms gain mass while the box holds.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"text-effects","also":["entrances"],"tags":["motion-primitive","experiment","type","variable-font","deterministic"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"axis","type":"enum","label":"Axis"},{"id":"stagger","type":"number","label":"Stagger"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add variable-font-flex","docs":"https://hyperframes.heygen.com/catalog/components/variable-font-flex","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/variable-font-flex","license":"Apache-2.0","runs":"local"},{"slug":"hf.vector-editor-rig","name":"vector-editor-rig","title":"Vector Editor Rig","summary":"A dark design-tool app chrome with a live vector pen path, sequential anchor points, bezier handles, a selection frame, and theme-driven blue accents.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"mock-ui","tags":["prop","ui-props","demonstrate","vector","design-tool","pen-tool","bezier","app-chrome"],"aspect":"any","slots":[{"id":"tool","type":"enum","label":"Active tool"},{"id":"pathLabel","type":"string","label":"Path label"}],"install":"npx hyperframes add vector-editor-rig","docs":"https://hyperframes.heygen.com/catalog/components/vector-editor-rig","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/vector-editor-rig","license":"Apache-2.0","runs":"local"},{"slug":"hf.velocity-throw-snap","name":"velocity-throw-snap","title":"Velocity Throw Snap","summary":"A five-shot rail whips past on a fast decaying curve, then overshoots and snaps the selected hero shot exactly to center.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"showcases","also":["particles","entrances","mock-ui"],"tags":["motion-primitive","feature-tour","rail","velocity","throw","snap","physics"],"aspect":"any","slots":[{"id":"hero_index","type":"number","label":"Hero index"},{"id":"accent","type":"enum","label":"Accent"},{"id":"card_label_prefix","type":"string","label":"Card label prefix"}],"install":"npx hyperframes add velocity-throw-snap","docs":"https://hyperframes.heygen.com/catalog/components/velocity-throw-snap","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/velocity-throw-snap","license":"Apache-2.0","runs":"local"},{"slug":"hf.vfx-anamorphic-flare","name":"vfx-anamorphic-flare","title":"Anamorphic Streak Flare","summary":"A drifting field of bright points, each one throwing the long horizontal blue-violet streak a real anamorphic cinema lens produces. Built from the measured filter constants: a 0.3 high-pass…","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"backgrounds","also":["filters"],"tags":["vfx","background","showcase","optical","canvas"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":10,"slots":[{"id":"intensity","type":"number","label":"Streak intensity"},{"id":"threshold","type":"number","label":"High-pass threshold"},{"id":"streakLength","type":"number","label":"Streak length gain"},{"id":"tint","type":"color","label":"Streak tint"},{"id":"bloomRadius","type":"number","label":"Bloom radius"},{"id":"timeScale","type":"number","label":"Drift rate"},{"id":"emitters","type":"number","label":"Emitter count"},{"id":"backdrop","type":"color","label":"Backdrop"}],"install":"npx hyperframes add vfx-anamorphic-flare","docs":"https://hyperframes.heygen.com/catalog/blocks/vfx-anamorphic-flare","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/vfx-anamorphic-flare","license":"Apache-2.0","runs":"local"},{"slug":"hf.vfx-iphone-device","name":"vfx-iphone-device","title":"iPhone & MacBook 3D Showcase","summary":"Real GLTF iPhone 15 Pro Max and MacBook Pro models with live HTML-in-Canvas screen content, morphing glass lens, product review camera choreography, and 360° turntable.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"devices","also":["showcases","three-d","shaders"],"tags":["html-in-canvas","3d","device","iphone","macbook","gltf"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":15,"install":"npx hyperframes add vfx-iphone-device","docs":"https://hyperframes.heygen.com/catalog/blocks/vfx-iphone-device","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/vfx-iphone-device","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-iphone-device.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-iphone-device.mp4"},"runs":"local"},{"slug":"hf.vfx-liquid-background","name":"vfx-liquid-background","title":"Liquid Background","summary":"Organic liquid simulation with vertex displacement on a subdivided plane. HTML content floats above rippling fluid surface with real-time wave dynamics.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"backgrounds","also":["particles","shaders"],"tags":["html-in-canvas","liquid","webgl","displacement","background"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":12,"install":"npx hyperframes add vfx-liquid-background","docs":"https://hyperframes.heygen.com/catalog/blocks/vfx-liquid-background","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/vfx-liquid-background","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-liquid-background.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-liquid-background.mp4"},"runs":"local"},{"slug":"hf.vfx-liquid-glass","name":"vfx-liquid-glass","title":"Liquid Glass","summary":"VFX composition block","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","tags":["html-in-canvas","webgl"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":20,"install":"npx hyperframes add vfx-liquid-glass","docs":"https://hyperframes.heygen.com/catalog/blocks/vfx-liquid-glass","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/vfx-liquid-glass","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-liquid-glass.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-liquid-glass.mp4"},"runs":"local"},{"slug":"hf.vfx-magnetic","name":"vfx-magnetic","title":"Magnetic","summary":"VFX composition block","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","tags":["html-in-canvas","webgl"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":15,"install":"npx hyperframes add vfx-magnetic","docs":"https://hyperframes.heygen.com/catalog/blocks/vfx-magnetic","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/vfx-magnetic","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-magnetic.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-magnetic.mp4"},"runs":"local"},{"slug":"hf.vfx-portal","name":"vfx-portal","title":"Portal","summary":"VFX composition block","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","tags":["html-in-canvas","webgl"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":10,"install":"npx hyperframes add vfx-portal","docs":"https://hyperframes.heygen.com/catalog/blocks/vfx-portal","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/vfx-portal","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-portal.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-portal.mp4"},"runs":"local"},{"slug":"hf.vfx-shatter","name":"vfx-shatter","title":"Shatter","summary":"VFX composition block","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","tags":["html-in-canvas","webgl"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":12,"install":"npx hyperframes add vfx-shatter","docs":"https://hyperframes.heygen.com/catalog/blocks/vfx-shatter","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/vfx-shatter","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-shatter.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-shatter.mp4"},"runs":"local"},{"slug":"hf.vfx-text-cursor","name":"vfx-text-cursor","title":"VFX Text Cursor","summary":"Dramatic text reveal with cursor glow, chromatic shadow rays, and directional lighting on a black stage. Canvas-based shader post-processing with spectral color edges.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"text-effects","also":["cursors","shaders","filters"],"tags":["html-in-canvas","text","shader","cursor","chromatic"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":8,"install":"npx hyperframes add vfx-text-cursor","docs":"https://hyperframes.heygen.com/catalog/blocks/vfx-text-cursor","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/vfx-text-cursor","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-text-cursor.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vfx-text-cursor.mp4"},"runs":"local"},{"slug":"hf.vignelli","name":"vignelli","title":"Vignelli","summary":"Bold typography with red accents","registry":"hyperframes","framework":"hyperframes","layer":"template","category":"showcases","tags":[],"canvas":{"w":1080,"h":1920},"aspect":"9:16","duration":10,"install":"npx hyperframes init my-video --example vignelli","docs":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/vignelli","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/vignelli","license":"Apache-2.0","runs":"local"},{"slug":"hf.vignette","name":"vignette","title":"Vignette","summary":"Cinematic radial vignette overlay using a pure-CSS gradient — darkens the edges to pull focus toward the center","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"textures","also":["backgrounds"],"tags":["vignette","overlay","cinematic","effect"],"aspect":"any","install":"npx hyperframes add vignette","docs":"https://hyperframes.heygen.com/catalog/components/vignette","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/vignette","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/vignette.png"},"runs":"local"},{"slug":"hf.voronoi","name":"voronoi","title":"Voronoi","summary":"Magenta cells with glowing blue centres shift and reshape across the frame. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["backgrounds"],"tags":["webgpu","webgpu-shader","background","pattern","cells","voronoi"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add voronoi","docs":"https://hyperframes.heygen.com/catalog/blocks/voronoi","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/voronoi","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/voronoi.mp4"},"runs":"local"},{"slug":"hf.vox-annotate","name":"vox-annotate","title":"Vox Annotate","summary":"The Vox-style annotate gesture: a keyword in a held sentence gets a hand-drawn marker while a thin connector draws up to a mono callout label, all as one choreographed beat on the cue.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"annotations","also":["text-effects","entrances","beat-sync"],"tags":["motion-primitive","typography","annotation","marker","deterministic"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Text"},{"id":"keyword","type":"string","label":"Keyword"},{"id":"note","type":"string","label":"Note"},{"id":"style","type":"enum","label":"Marker style"},{"id":"draw_at","type":"number","label":"Draw at"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add vox-annotate","docs":"https://hyperframes.heygen.com/catalog/components/vox-annotate","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/vox-annotate","license":"Apache-2.0","runs":"local"},{"slug":"hf.vpn-youtube-spot","name":"vpn-youtube-spot","title":"VPN YouTube Spot","summary":"Snappy Apple-style YouTube insert showing a phone finding and installing a friendly VPN app with sound effects.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"social-cards","also":["mock-ui","devices"],"tags":["app","showcase","youtube","sfx"],"author":"Stronkter","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":7,"install":"npx hyperframes add vpn-youtube-spot","docs":"https://hyperframes.heygen.com/catalog/blocks/vpn-youtube-spot","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/vpn-youtube-spot","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vpn-youtube-spot.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/vpn-youtube-spot.mp4"},"runs":"local"},{"slug":"hf.warm-grain","name":"warm-grain","title":"Warm Grain","summary":"Cream aesthetic with grain texture","registry":"hyperframes","framework":"hyperframes","layer":"template","category":"textures","tags":[],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":10,"install":"npx hyperframes init my-video --example warm-grain","docs":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/warm-grain","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/examples/warm-grain","license":"Apache-2.0","runs":"local"},{"slug":"hf.water","name":"water","title":"Water","summary":"A sphere of wind-rippled water reflecting a blue sky, on black. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"shaders","also":["three-d"],"tags":["webgpu","webgpu-shader","orb","water","material","blue"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add water","docs":"https://hyperframes.heygen.com/catalog/blocks/water","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/water","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/water.mp4"},"runs":"local"},{"slug":"hf.waveform","name":"waveform","title":"Waveform","summary":"Equalizer bars in a blue to pink gradient pulse across the middle of the frame, like an audio visualizer. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"audio-viz","also":["shaders","backgrounds"],"tags":["webgpu","webgpu-shader","audio","music","visualizer","bars"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add waveform","docs":"https://hyperframes.heygen.com/catalog/blocks/waveform","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/waveform","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/waveform.mp4"},"runs":"local"},{"slug":"hf.week-in-merges","name":"week-in-merges","title":"Week in Merges","summary":"Each author's avatar bounces across their row at a speed set by how many pull requests they merged","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"charts","also":["lists","entrances"],"tags":["data","chart","ranking","leaderboard"],"canvas":{"w":1080,"h":1350},"aspect":"4:5","duration":16,"slots":[{"id":"eyebrow","type":"string","label":"Eyebrow"},{"id":"title","type":"string","label":"Title"},{"id":"period","type":"string","label":"Period"},{"id":"total","type":"string","label":"Total"},{"id":"footer","type":"string","label":"Footer"},{"id":"source","type":"string","label":"Source line"},{"id":"rows","type":"string","label":"Rows (JSON array of name, merges, avatar)"},{"id":"rows_max","type":"number","label":"Maximum rows"},{"id":"overflow","type":"string","label":"Overflow line"}],"install":"npx hyperframes add week-in-merges","docs":"https://hyperframes.heygen.com/catalog/blocks/week-in-merges","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/week-in-merges","license":"Apache-2.0","runs":"local"},{"slug":"hf.weight-wave","name":"weight-wave","title":"Weight Wave","summary":"A crest of thickness travels along a headline: each character swells from light to black and leans forward as the wave passes, driven by the wght and slnt variable-font axes rather than by transforms.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"title-cards","also":["kinetic-type","text-effects","headlines"],"tags":["typography","kinetic-type","title","variable-font","text"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"slots":[{"id":"text","type":"string","label":"Headline"},{"id":"color","type":"color","label":"Text color"},{"id":"background","type":"color","label":"Background"},{"id":"weightFrom","type":"number","label":"Weight (rest)"},{"id":"weightTo","type":"number","label":"Weight (crest)"},{"id":"crestWidth","type":"number","label":"Crest width"},{"id":"sweepSpeed","type":"number","label":"Sweep speed"},{"id":"slant","type":"number","label":"Slant at crest"},{"id":"direction","type":"enum","label":"Direction"}],"install":"npx hyperframes add weight-wave","docs":"https://hyperframes.heygen.com/catalog/blocks/weight-wave","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/weight-wave","license":"Apache-2.0","runs":"local"},{"slug":"hf.whip-pan","name":"whip-pan","title":"Whip Pan","summary":"Shader transition simulating a fast camera whip pan","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"transitions","also":["camera","shaders"],"tags":["transition","shader"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4,"install":"npx hyperframes add whip-pan","docs":"https://hyperframes.heygen.com/catalog/blocks/whip-pan","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/whip-pan","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/whip-pan.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/whip-pan.mp4"},"runs":"local"},{"slug":"hf.whip-pan-cut","name":"whip-pan-cut","title":"Whip Pan Cut","summary":"A full-frame whip pan: scene A whips off laterally with capped directional motion blur while scene B enters in the same direction at matched velocity, on a speed-ramp profile with a decelerating catch…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","also":["camera","social-proof","comparisons"],"tags":["transition","whip-pan","motion-blur","velocity-match","speed-ramp","bridge","slots"],"aspect":"any","slots":[{"id":"direction","type":"enum","label":"Direction"},{"id":"whip_at","type":"number","label":"Whip start"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add whip-pan-cut","docs":"https://hyperframes.heygen.com/catalog/components/whip-pan-cut","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/whip-pan-cut","license":"Apache-2.0","runs":"local"},{"slug":"hf.whiteboard-ink","name":"whiteboard-ink","title":"Whiteboard Ink","summary":"A whiteboard sketch draws one measured stroke at a time while a pen nib follows the active tip. Preset sketches (bulb, flow…","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"intros","also":["entrances","social-cards"],"tags":["motion-primitive","intro","reveal","svg","whiteboard","line-draw","slot"],"aspect":"any","slots":[{"id":"sketch","type":"enum","label":"Sketch"},{"id":"caption","type":"string","label":"Caption"},{"id":"pen","type":"enum","label":"Pen"},{"id":"accent","type":"enum","label":"Accent"},{"id":"exit","type":"enum","label":"Exit"}],"install":"npx hyperframes add whiteboard-ink","docs":"https://hyperframes.heygen.com/catalog/components/whiteboard-ink","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/whiteboard-ink","license":"Apache-2.0","runs":"local"},{"slug":"hf.wireframe-portal-title","name":"wireframe-portal-title","title":"Wireframe Portal Title","summary":"A wireframe portal bursts open, the title comes through, then its letters swap into a second phrase.","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"title-cards","also":["text-effects","three-d","particles"],"tags":["3d-motion","title-card","wireframe","portal","burst","typography","post-processing","phrase-swap"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":8,"install":"npx hyperframes add wireframe-portal-title","docs":"https://hyperframes.heygen.com/catalog/blocks/wireframe-portal-title","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/wireframe-portal-title","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/wireframe-portal-title.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/wireframe-portal-title.mp4"},"runs":"local"},{"slug":"hf.wordmark-tiles","name":"wordmark-tiles","title":"Wordmark Tiles","summary":"A wordmark resolves from deterministic color noise into correctly cropped glyph tiles through a spatially modulated GSAP wave.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"logos","also":["text-effects","entrances","generative"],"tags":["typography","wordmark","tiles","raster","reveal"],"aspect":"any","slots":[{"id":"text","type":"string","label":"Wordmark"},{"id":"columns","type":"number","label":"Columns"},{"id":"waveStagger","type":"number","label":"Wave stagger"}],"install":"npx hyperframes add wordmark-tiles","docs":"https://hyperframes.heygen.com/catalog/components/wordmark-tiles","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/wordmark-tiles","license":"Apache-2.0","runs":"local"},{"slug":"hf.world-map","name":"world-map","title":"World Map","summary":"Animated world choropleth with country-by-country reveal, tooltip labels, and rotating globe inset — D3 Natural Earth projection","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"maps","also":["entrances"],"tags":["data","map","geography","world","choropleth"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":14,"install":"npx hyperframes add world-map","docs":"https://hyperframes.heygen.com/catalog/blocks/world-map","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/world-map","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/world-map.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/world-map.mp4"},"runs":"local"},{"slug":"hf.worley-noise","name":"worley-noise","title":"Worley Noise","summary":"A field of drifting cells, light at their centres and dark at their edges. A WebGPU shader from the Shaders library (shaders.com, MIT).","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"generative","also":["shaders","textures","filters"],"tags":["webgpu","webgpu-shader","background","texture","noise","cells","monochrome"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":2,"install":"npx hyperframes add worley-noise","docs":"https://hyperframes.heygen.com/catalog/blocks/worley-noise","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/worley-noise","license":"Apache-2.0","preview":{"video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/worley-noise.mp4"},"runs":"local"},{"slug":"hf.x-follow-card","name":"x-follow-card","title":"X Follow Card","summary":"A social follow card with avatar, handle, and follower motion.","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"social-cards","tags":["social-overlay"],"aspect":"any","install":"npx hyperframes add x-follow-card","docs":"https://hyperframes.heygen.com/catalog/components/x-follow-card","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/x-follow-card","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/x-follow-card.png"},"runs":"local"},{"slug":"hf.x-post","name":"x-post","title":"X Post Card","summary":"Animated X/Twitter post card overlay with engagement metrics","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"social-cards","also":["stats","textures"],"tags":["social","overlay","twitter"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":5,"install":"npx hyperframes add x-post","docs":"https://hyperframes.heygen.com/catalog/blocks/x-post","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/x-post","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/x-post.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/x-post.mp4"},"runs":"local"},{"slug":"hf.yt-camera-move","name":"yt-camera-move","title":"Camera Punch-In","summary":"Dynamic zoom, slide, and 3D tilt-pan helpers for any wrapper (video, include, card) with cubic-easing defaults and an edge-defocus pulse overlay","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"camera","also":["three-d","textures"],"tags":["camera","zoom","effect","creator"],"aspect":"any","install":"npx hyperframes add yt-camera-move","docs":"https://hyperframes.heygen.com/catalog/components/yt-camera-move","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/yt-camera-move","license":"Apache-2.0","runs":"local"},{"slug":"hf.yt-circle-pointer","name":"yt-circle-pointer","title":"Pointer Circle + Countdown","summary":"Draw-on annotation ellipse around a target plus a countdown chip that pulses each tick","registry":"hyperframes","framework":"hyperframes","layer":"component","category":"cursors","also":["timers","annotations"],"tags":["annotation","countdown","overlay"],"aspect":"any","install":"npx hyperframes add yt-circle-pointer","docs":"https://hyperframes.heygen.com/catalog/components/yt-circle-pointer","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/yt-circle-pointer","license":"Apache-2.0","runs":"local"},{"slug":"hf.yt-comment-card","name":"yt-comment-card","title":"Comment Cards","summary":"Social comments typing on over footage: avatar pop, username and time, per-character typewriter, likes row; image avatars or initials chips","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"social-cards","also":["text-effects","entrances"],"tags":["social","comments","creator","overlay"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":8,"install":"npx hyperframes add yt-comment-card","docs":"https://hyperframes.heygen.com/catalog/blocks/yt-comment-card","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/yt-comment-card","license":"Apache-2.0","runs":"local"},{"slug":"hf.yt-feather-highlight","name":"yt-feather-highlight","title":"Feathered Spotlight","summary":"Dims the frame except a feathered ellipse; the hole's position and size are CSS variables, so helpers glide the spotlight between targets","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"annotations","tags":["highlight","spotlight","effect","overlay"],"aspect":"any","install":"npx hyperframes add yt-feather-highlight","docs":"https://hyperframes.heygen.com/catalog/components/yt-feather-highlight","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/yt-feather-highlight","license":"Apache-2.0","runs":"local"},{"slug":"hf.yt-lcd-background","name":"yt-lcd-background","title":"Scanline Board Background","summary":"Textured paper board: scanlines with slow drift, optional pixel grid, static grain, and display text with a blur-focus entrance and chromatic-fringe title","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"textures","also":["backgrounds","title-cards","text-effects"],"tags":["background","texture","creator"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":10,"install":"npx hyperframes add yt-lcd-background","docs":"https://hyperframes.heygen.com/catalog/blocks/yt-lcd-background","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/yt-lcd-background","license":"Apache-2.0","runs":"local"},{"slug":"hf.yt-logo-intro","name":"yt-logo-intro","title":"Logo Intro Sequence","summary":"Logo stamp pops on a lined board, a kicker line gives way to the title with an accent arrow chip; seeded line distortion","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"intros","also":["logos","title-cards","entrances"],"tags":["logo","intro","creator"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"install":"npx hyperframes add yt-logo-intro","docs":"https://hyperframes.heygen.com/catalog/blocks/yt-logo-intro","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/yt-logo-intro","license":"Apache-2.0","runs":"local"},{"slug":"hf.yt-lower-third","name":"yt-lower-third","title":"YouTube Lower Third","summary":"Animated YouTube subscribe lower third with avatar and channel info","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"lower-thirds","also":["social-cards"],"tags":["social","overlay","youtube"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":4.5,"install":"npx hyperframes add yt-lower-third","docs":"https://hyperframes.heygen.com/catalog/blocks/yt-lower-third","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/yt-lower-third","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/yt-lower-third.png","video":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/yt-lower-third.mp4"},"runs":"local"},{"slug":"hf.yt-prism-title","name":"yt-prism-title","title":"Chromatic Fringe Title","summary":"Display title on a transparent root: blur-focus entrance, red/blue fringe that settles then breathes, perspective bow, slow scale drift","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"title-cards","also":["filters","text-effects","entrances"],"tags":["typography","title-card","creator"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":6,"install":"npx hyperframes add yt-prism-title","docs":"https://hyperframes.heygen.com/catalog/blocks/yt-prism-title","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/yt-prism-title","license":"Apache-2.0","runs":"local"},{"slug":"hf.yt-screen-warp","name":"yt-screen-warp","title":"On-Screen Display Effect","summary":"Grid, scanline, vignette, and sheen overlay plus a 3D-warp wrapper class that makes footage read as if playing on a physical display","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"textures","also":["three-d"],"tags":["effect","overlay","texture"],"aspect":"any","install":"npx hyperframes add yt-screen-warp","docs":"https://hyperframes.heygen.com/catalog/components/yt-screen-warp","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/yt-screen-warp","license":"Apache-2.0","runs":"local"},{"slug":"hf.yt-vertical-fill","name":"yt-vertical-fill","title":"Vertical Media Filler","summary":"Portrait media filling a widescreen frame via blurred-scale, mirror, or copy side fills; grid texture and foreground contrast lift (images inside the block; keep live footage in the host)","registry":"hyperframes","framework":"hyperframes","layer":"block","category":"textures","also":["filters"],"tags":["placeholder","vertical","media"],"canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":8,"install":"npx hyperframes add yt-vertical-fill","docs":"https://hyperframes.heygen.com/catalog/blocks/yt-vertical-fill","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/blocks/yt-vertical-fill","license":"Apache-2.0","runs":"local"},{"slug":"hf.zoom-through-transition","name":"zoom-through-transition","title":"Zoom Through Transition","summary":"A transition that zooms through a focal card into the next scene.","registry":"hyperframes","framework":"hyperframes","layer":"primitive","category":"transitions","also":["camera"],"tags":["transition-primitive"],"aspect":"any","slots":[{"id":"from-label","type":"string","label":"Outgoing label"},{"id":"to-label","type":"string","label":"Incoming label"},{"id":"depth","type":"enum","label":"Depth"},{"id":"accent","type":"enum","label":"Accent"}],"install":"npx hyperframes add zoom-through-transition","docs":"https://hyperframes.heygen.com/catalog/components/zoom-through-transition","source":"https://github.com/heygen-com/hyperframes/tree/main/registry/components/zoom-through-transition","license":"Apache-2.0","preview":{"poster":"https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/zoom-through-transition.png"},"runs":"local"},{"slug":"remocn.accordion","name":"accordion","title":"UI Accordion","summary":"A disclosure whose opened/closed state is a pure function of the timeline; the panel reveal, chevron, and background are keyframed presets.","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","backgrounds","entrances"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"title","type":"string"},{"id":"content","type":"string"},{"id":"variant","type":"string"},{"id":"state","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/accordion","docs":"https://remocn.dev/docs/ui/components/accordion","source":"https://remocn.dev/r/accordion.json","license":"MIT","runs":"local"},{"slug":"remocn.accordion-unfold","name":"accordion-unfold","title":"Accordion Unfold","summary":"A tight paper zigzag unfolds sideways into a flat card with the logo printed across it.","registry":"remocn","framework":"remotion","layer":"block","category":"logos","tags":["logo-stings"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":2.2,"slots":[{"id":"panels","type":"number"},{"id":"foldAngle","type":"number"},{"id":"shade","type":"number"},{"id":"color","type":"color"},{"id":"backgroundColor","type":"color"}],"install":"npx shadcn@latest add @remocn/accordion-unfold","docs":"https://remocn.dev/docs/logo-stings/accordion-unfold","source":"https://remocn.dev/r/accordion-unfold.json","license":"MIT","runs":"local"},{"slug":"remocn.agent-run","name":"agent-run","title":"Agent Run","summary":"Animated brand-neutral AI agent run — a Thinking status and short plan, tool calls whose spinners close into checks while a timer counts real seconds…","registry":"remocn","framework":"remotion","layer":"component","category":"code","tags":["ai"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"theme","type":"string"},{"id":"accentColor","type":"color"},{"id":"compression","type":"number"},{"id":"seed","type":"number"}],"install":"npx shadcn@latest add @remocn/agent-run","docs":"https://remocn.dev/docs/ai/agent-run","source":"https://remocn.dev/r/agent-run.json","license":"MIT","runs":"local"},{"slug":"remocn.ai-prompt-flow","name":"ai-prompt-flow","title":"UI AI Prompt Flow","summary":"An AI prompt composition: a prompt types into the field, the Generate button runs hover → press → loading, a skeleton shimmer reveals, then crossfades into the generated answer, and a ready toast slides in…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["intros","transitions","entrances"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","deps":["remocn-ui","input","button","skeleton","skeleton-block","toast"],"install":"npx shadcn@latest add @remocn/ai-prompt-flow","docs":"https://remocn.dev/docs/ui/blocks/ai-prompt-flow","source":"https://remocn.dev/r/ai-prompt-flow.json","license":"MIT","runs":"local"},{"slug":"remocn.alert-dialog","name":"alert-dialog","title":"UI Alert Dialog","summary":"A modal alert dialog whose opened/closed state is a pure function of the timeline; the backdrop dim and popup zoom are keyframed presets. Self-contained — pair it with the Button as a trigger (see the example).","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","camera","backgrounds"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"title","type":"string"},{"id":"actionLabel","type":"string"},{"id":"cancelLabel","type":"string"},{"id":"state","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/alert-dialog","docs":"https://remocn.dev/docs/ui/components/alert-dialog","source":"https://remocn.dev/r/alert-dialog.json","license":"MIT","runs":"local"},{"slug":"remocn.anamorphic-flare","name":"anamorphic-flare","title":"Anamorphic Flare","summary":"A point of light grows into a cinematic anamorphic streak that sweeps the frame and reveals the logo in its wake.","registry":"remocn","framework":"remotion","layer":"block","category":"logos","tags":["logo-stings"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":2.3,"slots":[{"id":"ghosts","type":"number"},{"id":"y","type":"number"},{"id":"seed","type":"number"},{"id":"tint","type":"color"},{"id":"coreColor","type":"color"},{"id":"backgroundColor","type":"color"}],"install":"npx shadcn@latest add @remocn/anamorphic-flare","docs":"https://remocn.dev/docs/logo-stings/anamorphic-flare","source":"https://remocn.dev/r/anamorphic-flare.json","license":"MIT","runs":"local"},{"slug":"remocn.animated-bar-chart","name":"animated-bar-chart","title":"Animated Bar Chart","summary":"Bars spring up from the baseline in a staggered cascade.","registry":"remocn","framework":"remotion","layer":"block","category":"charts","also":["entrances"],"tags":["ui-blocks"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":3,"slots":[{"id":"barColor","type":"color"},{"id":"gap","type":"number"},{"id":"staggerFrames","type":"number"}],"install":"npx shadcn@latest add @remocn/animated-bar-chart","docs":"https://remocn.dev/docs/ui-blocks/animated-bar-chart","source":"https://remocn.dev/r/animated-bar-chart.json","license":"MIT","runs":"local"},{"slug":"remocn.animated-line-chart","name":"animated-line-chart","title":"Animated Line Chart","summary":"Line chart whose SVG path draws on from left to right with a leading dot.","registry":"remocn","framework":"remotion","layer":"block","category":"charts","tags":["ui-blocks"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":3,"slots":[{"id":"strokeColor","type":"color"},{"id":"strokeWidth","type":"number"},{"id":"gridColor","type":"color"},{"id":"showDot","type":"boolean"}],"install":"npx shadcn@latest add @remocn/animated-line-chart","docs":"https://remocn.dev/docs/ui-blocks/animated-line-chart","source":"https://remocn.dev/r/animated-line-chart.json","license":"MIT","runs":"local"},{"slug":"remocn.ascii-dissolve","name":"ascii-dissolve","title":"ASCII Dissolve","summary":"Dissolve one scene into the next through a drifting field of ASCII glyphs.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"colorBack","type":"color"},{"id":"colorFront","type":"color"},{"id":"cellSize","type":"number"}],"install":"npx shadcn@latest add @remocn/ascii-dissolve","docs":"https://remocn.dev/docs/transitions/ascii-dissolve","source":"https://remocn.dev/r/ascii-dissolve.json","license":"MIT","runs":"local"},{"slug":"remocn.ascii-render","name":"ascii-render","title":"ASCII Render","summary":"Redraw a live scene as ASCII: the frame divides into glyph cells and each one becomes the character matching the brightness of the picture inside it.","registry":"remocn","framework":"remotion","layer":"primitive","category":"generative","also":["text-effects"],"tags":["filters"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"glyphSize","type":"number"},{"id":"charset","type":"string"},{"id":"colored","type":"boolean"},{"id":"ink","type":"color"},{"id":"intensity","type":"number"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/ascii-render","docs":"https://remocn.dev/docs/filters/components/ascii-render","source":"https://remocn.dev/r/ascii-render.json","license":"MIT","runs":"local"},{"slug":"remocn.backdrop","name":"backdrop","title":"Backdrop","summary":"Configurable full-frame background (color / gradient / image / live component) with Screen Studio-style padding and a rounded, shadowed content frame.","registry":"remocn","framework":"remotion","layer":"component","category":"backgrounds","also":["layouts"],"tags":["layout"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fillType","type":"string"},{"id":"color","type":"color"},{"id":"gradient","type":"string"},{"id":"image","type":"string"},{"id":"padding","type":"number"},{"id":"radius","type":"number"},{"id":"shadow","type":"string"}],"install":"npx shadcn@latest add @remocn/backdrop","docs":"https://remocn.dev/docs/layout/backdrop","source":"https://remocn.dev/r/backdrop.json","license":"MIT","runs":"local"},{"slug":"remocn.bauhaus-build","name":"bauhaus-build","title":"Bauhaus Build","summary":"Flat Bauhaus circles, arcs, squares and bars tumble corner over corner on a hidden grid into an asymmetric frieze, then rebuild into two friezes around an open band for the title.","registry":"remocn","framework":"remotion","layer":"component","category":"stats","also":["title-cards"],"tags":["motion-graphics"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"scale","type":"number"},{"id":"seed","type":"number"},{"id":"inkColor","type":"color"},{"id":"accentColor","type":"color"},{"id":"secondaryColor","type":"color"},{"id":"tertiaryColor","type":"color"},{"id":"loop","type":"boolean"}],"install":"npx shadcn@latest add @remocn/bauhaus-build","docs":"https://remocn.dev/docs/motion-graphics/bauhaus-build","source":"https://remocn.dev/r/bauhaus-build.json","license":"MIT","runs":"local"},{"slug":"remocn.blueprint","name":"blueprint","title":"Blueprint","summary":"The product wipes left to right into a technical drawing: blueprint grid, white linework, dimension lines with ticks, labels and a red callout.","registry":"remocn","framework":"remotion","layer":"primitive","category":"annotations","also":["transitions"],"tags":["graphic-looks"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"blueprintColor","type":"color"},{"id":"lineColor","type":"color"},{"id":"calloutColor","type":"color"},{"id":"productColor","type":"color"},{"id":"background","type":"color"}],"install":"npx shadcn@latest add @remocn/blueprint","docs":"https://remocn.dev/docs/graphic-looks/blueprint","source":"https://remocn.dev/r/blueprint.json","license":"MIT","runs":"local"},{"slug":"remocn.blur-in","name":"blur-in","title":"UI Blur In","summary":"A wrapper that reveals a single child with blur + opacity + a directional offset; a pure state atom, theme-independent — its context is a motion config (blur/distance/axis), not a theme.","registry":"remocn","framework":"remotion","layer":"component","category":"text-effects","also":["mock-ui","filters","entrances"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"state","type":"string"},{"id":"blur","type":"number"},{"id":"distance","type":"number"},{"id":"direction","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/blur-in","docs":"https://remocn.dev/docs/ui/components/blur-in","source":"https://remocn.dev/r/blur-in.json","license":"MIT","runs":"local"},{"slug":"remocn.blur-out-up","name":"blur-out-up","title":"Blur Out Up","summary":"Words arrive clean and depart upward with increasing blur for airy exits.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"staggerDelay","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/blur-out-up","docs":"https://remocn.dev/docs/typography/blur-out-up","source":"https://remocn.dev/r/blur-out-up.json","license":"MIT","runs":"local"},{"slug":"remocn.bottom-up-letters","name":"bottom-up-letters","title":"Bottom-Up Letters","summary":"Letters rise from below in a pronounced staircase, one symbol at a time, with zero blur.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"staggerDelay","type":"number"},{"id":"distance","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/bottom-up-letters","docs":"https://remocn.dev/docs/typography/bottom-up-letters","source":"https://remocn.dev/r/bottom-up-letters.json","license":"MIT","runs":"local"},{"slug":"remocn.brand-guidelines","name":"brand-guidelines","title":"Brand Guidelines","summary":"An independent 17.9-second identity film with a geometric mark, sliding palette, kinetic type specimens, and original object photography.","registry":"remocn","framework":"remotion","layer":"template","category":"logos","also":["stats","galleries","kinetic-type"],"tags":["templates"],"author":"Kapish Dima","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":17.9,"slots":[{"id":"brandName","type":"string"},{"id":"accentColor","type":"color"},{"id":"reducedMotion","type":"boolean"}],"deps":["caret"],"install":"npx shadcn@latest add @remocn/brand-guidelines","docs":"https://remocn.dev/docs/templates/brand-guidelines","source":"https://remocn.dev/r/brand-guidelines.json","license":"MIT","runs":"local"},{"slug":"remocn.brick-mosaic","name":"brick-mosaic","title":"Brick Mosaic","summary":"Toy bricks drop in row by row from the bottom with a tiny bounce, rebuilding a pixel-art logo on a baseplate.","registry":"remocn","framework":"remotion","layer":"primitive","category":"logos","also":["entrances"],"tags":["graphic-looks"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"cols","type":"number"},{"id":"rows","type":"number"},{"id":"rowDelay","type":"number"},{"id":"background","type":"color"}],"install":"npx shadcn@latest add @remocn/brick-mosaic","docs":"https://remocn.dev/docs/graphic-looks/brick-mosaic","source":"https://remocn.dev/r/brick-mosaic.json","license":"MIT","runs":"local"},{"slug":"remocn.brush","name":"brush","title":"Brush","summary":"Variable-width brush ribbons for Remotion. Pressure taper, grain displacement, and spine samplers shared by the ink marks.","registry":"remocn","framework":"remotion","layer":"component","category":"textures","tags":["remocn"],"author":"Kapish Dima","aspect":"any","deps":["stop-motion"],"install":"npx shadcn@latest add @remocn/brush","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/brush.json","license":"MIT","runs":"local"},{"slug":"remocn.button","name":"button","title":"UI Button","summary":"A button whose idle/hover/press/loading/success state is a pure function of the timeline; the loading state composes the Spinner motion atom.","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["timers","steps"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"label","type":"string"},{"id":"variant","type":"string"},{"id":"size","type":"string"},{"id":"state","type":"string"},{"id":"primary","type":"string"}],"deps":["remocn-ui","spinner"],"install":"npx shadcn@latest add @remocn/button","docs":"https://remocn.dev/docs/ui/components/button","source":"https://remocn.dev/r/button.json","license":"MIT","runs":"local"},{"slug":"remocn.camera-lens","name":"camera-lens","title":"Camera Lens","summary":"Put a scene behind real glass: resolution falls off toward the corners, highlights bloom through the optics, colour fringes at the edges — a screencast that reads as filmed rather than rendered.","registry":"remocn","framework":"remotion","layer":"primitive","category":"camera","also":["annotations"],"tags":["filters"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"softness","type":"number"},{"id":"bloom","type":"number"},{"id":"aberration","type":"number"},{"id":"vignette","type":"number"},{"id":"distortion","type":"number"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/camera-lens","docs":"https://remocn.dev/docs/filters/components/camera-lens","source":"https://remocn.dev/r/camera-lens.json","license":"MIT","runs":"local"},{"slug":"remocn.canvas-presentation","name":"canvas-presentation","title":"Canvas Presentation","summary":"The html-in-canvas scaffolding the canvas transitions and scene filters share: support detection, a full-screen WebGL2 shader fed either both sides of a cut or the single scene a filter wraps…","registry":"remocn","framework":"remotion","layer":"lib","category":"utilities","tags":["remocn"],"author":"Kapish Dima","aspect":"any","install":"npx shadcn@latest add @remocn/canvas-presentation","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/canvas-presentation.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-active-pop","name":"caption-active-pop","title":"Caption Active Pop","summary":"The word being spoken turns to the accent colour and springs up in scale, then settles back as the voice moves on.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"activeColor","type":"color"},{"id":"popScale","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-active-pop","docs":"https://remocn.dev/docs/captions/components/caption-active-pop","source":"https://remocn.dev/r/caption-active-pop.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-blur-in","name":"caption-blur-in","title":"Caption Blur In","summary":"Each word resolves out of a soft blur the moment it is spoken, for captions that arrive quietly.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"blur","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-blur-in","docs":"https://remocn.dev/docs/captions/components/caption-blur-in","source":"https://remocn.dev/r/caption-blur-in.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-bounce-in","name":"caption-bounce-in","title":"Caption Bounce In","summary":"Each word springs up into place with a little overshoot the moment it is spoken, and the phrase builds word by word.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"bounce","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-bounce-in","docs":"https://remocn.dev/docs/captions/components/caption-bounce-in","source":"https://remocn.dev/r/caption-bounce-in.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-core","name":"caption-core","title":"Caption Core","summary":"The timing engine every caption style shares: pages a timed transcript, finds the word being spoken and how far into it the voice is, and decides when a page leaves the screen.","registry":"remocn","framework":"remotion","layer":"lib","category":"utilities","tags":["remocn"],"author":"Kapish Dima","aspect":"any","install":"npx shadcn@latest add @remocn/caption-core","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/caption-core.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-cube","name":"caption-cube","title":"Caption Cube","summary":"Each new phrase turns into view as the next face of a 3D cube, the previous phrase rotating up and away on a horizontal hinge.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"tintActive","type":"boolean"},{"id":"activeColor","type":"color"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-cube","docs":"https://remocn.dev/docs/captions/components/caption-cube","source":"https://remocn.dev/r/caption-cube.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-dim-progress","name":"caption-dim-progress","title":"Caption Dim Progress","summary":"The whole phrase sits on screen dimmed and each word brightens the moment it is spoken, with no motion at all.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"dimOpacity","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-dim-progress","docs":"https://remocn.dev/docs/captions/components/caption-dim-progress","source":"https://remocn.dev/r/caption-dim-progress.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-drop","name":"caption-drop","title":"Caption Drop","summary":"Each word falls into place from above and bounces as it lands the moment it is spoken, and the whole phrase drops out of frame when the speaker pauses.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"bounce","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-drop","docs":"https://remocn.dev/docs/captions/components/caption-drop","source":"https://remocn.dev/r/caption-drop.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-emoji","name":"caption-emoji","title":"Caption Emoji","summary":"An emoji pops up above a chosen word the moment it is spoken and stays until the phrase leaves.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"emojiSize","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-emoji","docs":"https://remocn.dev/docs/captions/components/caption-emoji","source":"https://remocn.dev/r/caption-emoji.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-handwrite","name":"caption-handwrite","title":"Caption Handwrite","summary":"Each word is inked in by hand from left to right at the pace it is spoken, every word sitting at its own slight angle.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"wobble","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-handwrite","docs":"https://remocn.dev/docs/captions/components/caption-handwrite","source":"https://remocn.dev/r/caption-handwrite.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-highlight-box","name":"caption-highlight-box","title":"Caption Highlight Box","summary":"A solid box travels behind the word being spoken, sliding from word to word as the voice moves on.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"activeColor","type":"color"},{"id":"boxColor","type":"color"},{"id":"boxRadius","type":"number"},{"id":"boxPadding","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-highlight-box","docs":"https://remocn.dev/docs/captions/components/caption-highlight-box","source":"https://remocn.dev/r/caption-highlight-box.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-karaoke","name":"caption-karaoke","title":"Caption Karaoke","summary":"Transcript captions where each word fills with colour left to right exactly as it is spoken, the whole phrase readable before the voice reaches it.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"activeColor","type":"color"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-karaoke","docs":"https://remocn.dev/docs/captions/components/caption-karaoke","source":"https://remocn.dev/r/caption-karaoke.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-knockout","name":"caption-knockout","title":"Caption Knockout","summary":"A solid plate with the words cut clean through it, each word punching out the moment it is spoken so the footage shows through the letters.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"plateColor","type":"color"},{"id":"upcomingOpacity","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-knockout","docs":"https://remocn.dev/docs/captions/components/caption-knockout","source":"https://remocn.dev/r/caption-knockout.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-label-maker","name":"caption-label-maker","title":"Caption Label Maker","summary":"Each phrase is punched letter by letter into a strip of embossing tape at the pace it is spoken, the tape feeding out as the words arrive.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"tapeColor","type":"color"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-label-maker","docs":"https://remocn.dev/docs/captions/components/caption-label-maker","source":"https://remocn.dev/r/caption-label-maker.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-marker","name":"caption-marker","title":"Caption Marker","summary":"Plain captions where the words that matter get a highlighter swipe the moment they are spoken.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"markerColor","type":"color"},{"id":"markerTextColor","type":"color"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-marker","docs":"https://remocn.dev/docs/captions/components/caption-marker","source":"https://remocn.dev/r/caption-marker.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-outline","name":"caption-outline","title":"Caption Outline","summary":"Heavy-stroked captions that stay readable over any footage, with the spoken word switching to a contrast colour and nothing else moving.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"activeColor","type":"color"},{"id":"strokeColor","type":"color"},{"id":"strokeWidth","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-outline","docs":"https://remocn.dev/docs/captions/components/caption-outline","source":"https://remocn.dev/r/caption-outline.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-prosody","name":"caption-prosody","title":"Caption Prosody","summary":"Word size follows the delivery, so drawn-out words land large and rushed words stay small, and the rhythm of the voice is visible with the sound off.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"activeColor","type":"color"},{"id":"minScale","type":"number"},{"id":"maxScale","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-prosody","docs":"https://remocn.dev/docs/captions/components/caption-prosody","source":"https://remocn.dev/r/caption-prosody.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-redact","name":"caption-redact","title":"Caption Redact","summary":"The whole phrase starts blacked out like a declassified file, and each bar pulls away the moment its word is spoken.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"barColor","type":"color"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-redact","docs":"https://remocn.dev/docs/captions/components/caption-redact","source":"https://remocn.dev/r/caption-redact.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-rise","name":"caption-rise","title":"Caption Rise","summary":"Each word slides up out of a mask at its baseline the moment it is spoken, with no bounce and no scale.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-rise","docs":"https://remocn.dev/docs/captions/components/caption-rise","source":"https://remocn.dev/r/caption-rise.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-scramble","name":"caption-scramble","title":"Caption Scramble","summary":"Each word arrives as random glyphs at the moment it is spoken and decodes left to right into the real letters.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"glyphColor","type":"color"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-scramble","docs":"https://remocn.dev/docs/captions/components/caption-scramble","source":"https://remocn.dev/r/caption-scramble.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-slice","name":"caption-slice","title":"Caption Slice","summary":"Each word arrives cut in two, the top half sliding in from the left and the bottom from the right, locking together the moment it is spoken.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"distance","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-slice","docs":"https://remocn.dev/docs/captions/components/caption-slice","source":"https://remocn.dev/r/caption-slice.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-slot","name":"caption-slot","title":"Caption Slot","summary":"One short line at a time, each new phrase rolling up into place as the previous one rolls out the top.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-slot","docs":"https://remocn.dev/docs/captions/components/caption-slot","source":"https://remocn.dev/r/caption-slot.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-speaker","name":"caption-speaker","title":"Caption Speaker","summary":"Dialogue captions where every phrase takes its speaker's colour, so a conversation reads like a script.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"upcomingOpacity","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-speaker","docs":"https://remocn.dev/docs/captions/components/caption-speaker","source":"https://remocn.dev/r/caption-speaker.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-split-flap","name":"caption-split-flap","title":"Caption Split Flap","summary":"Every letter sits on its own flap tile and clatters through a few characters before landing the moment the word is spoken, like a station departure board.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"tileColor","type":"color"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-split-flap","docs":"https://remocn.dev/docs/captions/components/caption-split-flap","source":"https://remocn.dev/r/caption-split-flap.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-stack","name":"caption-stack","title":"Caption Stack","summary":"Kinetic captions stacked a couple of words per line, with the keyword of each page set large on its own line.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"emphasisColor","type":"color"},{"id":"emphasisScale","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-stack","docs":"https://remocn.dev/docs/captions/components/caption-stack","source":"https://remocn.dev/r/caption-stack.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-stamp","name":"caption-stamp","title":"Caption Stamp","summary":"Plain captions where the words that matter slam down as a rubber stamp the moment they are spoken.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"stampColor","type":"color"},{"id":"texture","type":"boolean"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-stamp","docs":"https://remocn.dev/docs/captions/components/caption-stamp","source":"https://remocn.dev/r/caption-stamp.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-subtitle","name":"caption-subtitle","title":"Caption Subtitle","summary":"Classic broadcast subtitles, a whole phrase on a translucent plate, with no word-level animation at all.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"box","type":"boolean"},{"id":"boxColor","type":"color"},{"id":"boxOpacity","type":"number"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-subtitle","docs":"https://remocn.dev/docs/captions/components/caption-subtitle","source":"https://remocn.dev/r/caption-subtitle.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-teleprompter","name":"caption-teleprompter","title":"Caption Teleprompter","summary":"The whole transcript scrolls smoothly through a short window with the current line centred, past lines fading above and the next line waiting below.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"visibleLines","type":"number"},{"id":"pastOpacity","type":"number"},{"id":"futureOpacity","type":"number"},{"id":"upcomingOpacity","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-teleprompter","docs":"https://remocn.dev/docs/captions/components/caption-teleprompter","source":"https://remocn.dev/r/caption-teleprompter.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-timeline","name":"caption-timeline","title":"Caption Timeline","summary":"The whole transcript laid out on a scrolling time strip that slides under a fixed playhead, so every pause shows up as space between words.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"playheadColor","type":"color"},{"id":"width","type":"number"},{"id":"pxPerSecond","type":"number"},{"id":"playheadPosition","type":"number"},{"id":"upcomingOpacity","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-timeline","docs":"https://remocn.dev/docs/captions/components/caption-timeline","source":"https://remocn.dev/r/caption-timeline.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-typewriter","name":"caption-typewriter","title":"Caption Typewriter","summary":"Each word types out character by character at the pace it is spoken, with a caret that blinks while the speaker pauses.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"caret","type":"boolean"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-typewriter","docs":"https://remocn.dev/docs/captions/components/caption-typewriter","source":"https://remocn.dev/r/caption-typewriter.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-underline","name":"caption-underline","title":"Caption Underline","summary":"A bar slides under the word being spoken, travelling from word to word while the text itself stays untouched.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"underlineColor","type":"color"},{"id":"thickness","type":"number"},{"id":"underlineOffset","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-underline","docs":"https://remocn.dev/docs/captions/components/caption-underline","source":"https://remocn.dev/r/caption-underline.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-weight","name":"caption-weight","title":"Caption Weight","summary":"The word being spoken swells from a light weight to a heavy one and relaxes as the voice moves on, with no layout shift.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"activeWeight","type":"number"},{"id":"color","type":"color"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-weight","docs":"https://remocn.dev/docs/captions/components/caption-weight","source":"https://remocn.dev/r/caption-weight.json","license":"MIT","runs":"local"},{"slug":"remocn.caption-word-pop","name":"caption-word-pop","title":"Caption Word Pop","summary":"One large word at a time, each popping in on a spring the moment it is spoken.","registry":"remocn","framework":"remotion","layer":"component","category":"captions","tags":["captions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"color","type":"color"},{"id":"popScale","type":"number"},{"id":"combineTokensWithinMilliseconds","type":"number"},{"id":"holdMs","type":"number"},{"id":"shadow","type":"boolean"}],"deps":["caption-core"],"install":"npx shadcn@latest add @remocn/caption-word-pop","docs":"https://remocn.dev/docs/captions/components/caption-word-pop","source":"https://remocn.dev/r/caption-word-pop.json","license":"MIT","runs":"local"},{"slug":"remocn.caret","name":"caret","title":"UI Caret","summary":"A blinking text caret — a controlled vertical bar, or a pure motion atom that blinks deterministically from useCurrentFrame.","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["text-effects"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"height","type":"number"},{"id":"width","type":"number"},{"id":"radius","type":"number"},{"id":"blink","type":"boolean"},{"id":"blinkPerSecond","type":"number"},{"id":"color","type":"color"}],"install":"npx shadcn@latest add @remocn/caret","docs":"https://remocn.dev/docs/ui/components/caret","source":"https://remocn.dev/r/caret.json","license":"MIT","runs":"local"},{"slug":"remocn.caret-swap","name":"caret-swap","title":"Caret Swap","summary":"A gradient caret swells into a block that consumes the first phrase right-to-left, collapses back and types the second phrase out with a blinking caret.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fromText","type":"string"},{"id":"toText","type":"string"},{"id":"fontSize","type":"number"},{"id":"swapAt","type":"number"},{"id":"typeSpeed","type":"number"},{"id":"color","type":"color"},{"id":"caretColor","type":"color"},{"id":"caretColorEnd","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/caret-swap","docs":"https://remocn.dev/docs/typography/caret-swap","source":"https://remocn.dev/r/caret-swap.json","license":"MIT","runs":"local"},{"slug":"remocn.caret-wipe","name":"caret-wipe","title":"Caret Wipe","summary":"Sweep a typing caret across the frame, wiping the outgoing scene into the next.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"direction","type":"string"},{"id":"caretColor","type":"color"},{"id":"caretWidth","type":"number"}],"install":"npx shadcn@latest add @remocn/caret-wipe","docs":"https://remocn.dev/docs/transitions/caret-wipe","source":"https://remocn.dev/r/caret-wipe.json","license":"MIT","runs":"local"},{"slug":"remocn.centered-word-build","name":"centered-word-build","title":"Centered Word Build","summary":"Words appear sharply from below while the centered phrase pushes cumulatively closer on every beat, then clears through a soft left-to-right opacity wipe.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"fontSize","type":"number"},{"id":"wordGap","type":"number"},{"id":"accel","type":"number"},{"id":"rise","type":"number"},{"id":"zoomStep","type":"number"},{"id":"settleFrames","type":"number"},{"id":"exitAt","type":"number"},{"id":"exitFrames","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/centered-word-build","docs":"https://remocn.dev/docs/typography/centered-word-build","source":"https://remocn.dev/r/centered-word-build.json","license":"MIT","runs":"local"},{"slug":"remocn.chat-flow","name":"chat-flow","title":"UI Chat Flow","summary":"A messaging composition: an outgoing message types into the composer, the send button presses, and the bubble rises in; the other side shows a typing indicator that swaps into the reply, and reactions pop in…","registry":"remocn","framework":"remotion","layer":"component","category":"chats","also":["mock-ui","intros","text-effects"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","deps":["remocn-ui","caret","message-bubble","typing-indicator"],"install":"npx shadcn@latest add @remocn/chat-flow","docs":"https://remocn.dev/docs/ui/blocks/chat-flow","source":"https://remocn.dev/r/chat-flow.json","license":"MIT","runs":"local"},{"slug":"remocn.chat-gpt","name":"chat-gpt","title":"ChatGPT","summary":"Animated ChatGPT composer — types a prompt into the pill input, the blue voice button morphs into a send button, and the suggestion chips fade out. Light/dark themes.","registry":"remocn","framework":"remotion","layer":"component","category":"chats","also":["mock-ui"],"tags":["ai"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"greeting","type":"string"},{"id":"placeholder","type":"string"},{"id":"prompt","type":"string"},{"id":"accentColor","type":"color"}],"deps":["caret","remocn-ui"],"install":"npx shadcn@latest add @remocn/chat-gpt","docs":"https://remocn.dev/docs/ai/chat-gpt","source":"https://remocn.dev/r/chat-gpt.json","license":"MIT","runs":"local"},{"slug":"remocn.chat-to-preview-layout","name":"chat-to-preview-layout","title":"Chat to Preview Layout","summary":"Two-column layout where chat shrinks and preview expands.","registry":"remocn","framework":"remotion","layer":"component","category":"chats","also":["layouts"],"tags":["layout"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"startChatRatio","type":"number"},{"id":"endChatRatio","type":"number"}],"install":"npx shadcn@latest add @remocn/chat-to-preview-layout","docs":"https://remocn.dev/docs/layout/chat-to-preview-layout","source":"https://remocn.dev/r/chat-to-preview-layout.json","license":"MIT","runs":"local"},{"slug":"remocn.check-list","name":"check-list","title":"Check List","summary":"A handwritten checklist that writes itself out in full, then ticks and strikes through every done item, one at a time.","registry":"remocn","framework":"remotion","layer":"block","category":"lists","also":["annotations"],"tags":["ui-blocks"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":12,"slots":[{"id":"fontSize","type":"number"},{"id":"itemGap","type":"number"},{"id":"closeGap","type":"number"},{"id":"perStep","type":"number"},{"id":"strokeWidth","type":"number"},{"id":"color","type":"color"},{"id":"tickColor","type":"color"},{"id":"step","type":"number"}],"deps":["stop-motion","handwrite"],"install":"npx shadcn@latest add @remocn/check-list","docs":"https://remocn.dev/docs/ui-blocks/check-list","source":"https://remocn.dev/r/check-list.json","license":"MIT","runs":"local"},{"slug":"remocn.checkbox","name":"checkbox","title":"UI Checkbox","summary":"A checkbox whose checked/unchecked state is a pure function of the timeline; the box fill, border, and checkmark draw are keyframed presets.","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"label","type":"string"},{"id":"size","type":"string"},{"id":"state","type":"string"},{"id":"primary","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/checkbox","docs":"https://remocn.dev/docs/ui/components/checkbox","source":"https://remocn.dev/r/checkbox.json","license":"MIT","runs":"local"},{"slug":"remocn.checkout-flow","name":"checkout-flow","title":"UI Checkout Flow","summary":"A cursor-driven checkout card: the card and its fields blur-in, then the pointer flips a billing-cycle toggle, types a card number, ticks the terms checkbox, and presses Pay through to success, ending in a toast…","registry":"remocn","framework":"remotion","layer":"component","category":"offers","also":["mock-ui","cursors","intros"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","deps":["remocn-ui","toggle-group","input","checkbox","button","field","blur-in","cursor","toast"],"install":"npx shadcn@latest add @remocn/checkout-flow","docs":"https://remocn.dev/docs/ui/blocks/checkout-flow","source":"https://remocn.dev/r/checkout-flow.json","license":"MIT","runs":"local"},{"slug":"remocn.chromatic-wave","name":"chromatic-wave","title":"Chromatic Wave","summary":"A soft wave travels down through the type; where it crosses, the letters ripple and split into RGB fringes.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"headline","type":"string"},{"id":"kicker","type":"string"},{"id":"fill","type":"string"},{"id":"waveHeight","type":"number"},{"id":"maxDisplacementPx","type":"number"},{"id":"turbulentAmount","type":"number"}],"install":"npx shadcn@latest add @remocn/chromatic-wave","docs":"https://remocn.dev/docs/typography/chromatic-wave","source":"https://remocn.dev/r/chromatic-wave.json","license":"MIT","runs":"local"},{"slug":"remocn.claude-chat","name":"claude-chat","title":"Claude Chat","summary":"Animated Claude chat input — types a prompt character-by-character and the waveform button morphs into a terracotta send button the moment text appears. Warm light/dark themes.","registry":"remocn","framework":"remotion","layer":"component","category":"chats","also":["mock-ui"],"tags":["ai"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"greeting","type":"string"},{"id":"placeholder","type":"string"},{"id":"prompt","type":"string"},{"id":"modelName","type":"string"},{"id":"modelTier","type":"string"},{"id":"accentColor","type":"color"}],"deps":["caret","remocn-ui"],"install":"npx shadcn@latest add @remocn/claude-chat","docs":"https://remocn.dev/docs/ai/claude-chat","source":"https://remocn.dev/r/claude-chat.json","license":"MIT","runs":"local"},{"slug":"remocn.claude-code","name":"claude-code","title":"Claude Code","summary":"Animated Claude Code CLI welcome screen — terminal window with a dashed welcome box, recent activity and what's new panels, and a prompt line that types a command with a block cursor. Dark/light themes.","registry":"remocn","framework":"remotion","layer":"component","category":"code","tags":["ai"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"title","type":"string"},{"id":"userName","type":"string"},{"id":"model","type":"string"},{"id":"cwd","type":"string"},{"id":"placeholder","type":"object"},{"id":"prompt","type":"string"},{"id":"accentColor","type":"color"}],"deps":["caret","remocn-ui"],"install":"npx shadcn@latest add @remocn/claude-code","docs":"https://remocn.dev/docs/ai/claude-code","source":"https://remocn.dev/r/claude-code.json","license":"MIT","runs":"local"},{"slug":"remocn.cloth-reveal","name":"cloth-reveal","title":"Cloth Reveal","summary":"A satin sheet draped over the content is yanked from one corner, folding and fluttering as a simulated cloth before it clears the frame.","registry":"remocn","framework":"remotion","layer":"primitive","category":"camera","tags":["camera"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"direction","type":"string"},{"id":"clothColor","type":"color"},{"id":"undersideColor","type":"color"},{"id":"background","type":"color"},{"id":"delay","type":"number"},{"id":"seed","type":"number"}],"install":"npx shadcn@latest add @remocn/cloth-reveal","docs":"https://remocn.dev/docs/camera/cloth-reveal","source":"https://remocn.dev/r/cloth-reveal.json","license":"MIT","runs":"local"},{"slug":"remocn.code-morph","name":"code-morph","title":"Code Morph","summary":"A flat code editor that morphs between versions of a file, gliding each surviving token to its new line and column while removed code dissolves and new code fades in.","registry":"remocn","framework":"remotion","layer":"block","category":"code","also":["transitions"],"tags":["ui-blocks"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":4.6,"slots":[{"id":"filename","type":"string"},{"id":"theme","type":"string"},{"id":"accentColor","type":"color"},{"id":"morphDuration","type":"number"},{"id":"fontSize","type":"number"},{"id":"highlight","type":"boolean"},{"id":"lineNumbers","type":"boolean"},{"id":"windowDots","type":"boolean"}],"install":"npx shadcn@latest add @remocn/code-morph","docs":"https://remocn.dev/docs/ui-blocks/code-morph","source":"https://remocn.dev/r/code-morph.json","license":"MIT","runs":"local"},{"slug":"remocn.combobox","name":"combobox","title":"UI Combobox","summary":"A combobox whose opened/closed state is a pure function of the timeline; the panel fade/scale/lift are keyframed presets like select…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["lists","steps","entrances"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"state","type":"string"},{"id":"query","type":"string"},{"id":"revealCount","type":"number"},{"id":"placeholder","type":"string"},{"id":"selectedIndex","type":"number"},{"id":"highlightedIndex","type":"number"}],"deps":["remocn-ui","input","select-item"],"install":"npx shadcn@latest add @remocn/combobox","docs":"https://remocn.dev/docs/ui/components/combobox","source":"https://remocn.dev/r/combobox.json","license":"MIT","runs":"local"},{"slug":"remocn.comic-panels","name":"comic-panels","title":"Comic Panels","summary":"The frame cracks into a three-panel comic page with speed lines, red halftone and a starburst, then the action panel bursts into a full-frame POW.","registry":"remocn","framework":"remotion","layer":"primitive","category":"layouts","also":["particles","textures"],"tags":["graphic-looks"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"word","type":"string"},{"id":"heroScale","type":"number"},{"id":"ink","type":"color"},{"id":"paper","type":"string"},{"id":"accent","type":"color"}],"install":"npx shadcn@latest add @remocn/comic-panels","docs":"https://remocn.dev/docs/graphic-looks/comic-panels","source":"https://remocn.dev/r/comic-panels.json","license":"MIT","runs":"local"},{"slug":"remocn.command-menu","name":"command-menu","title":"UI Command Menu","summary":"A ⌘K command palette whose opened/closed state is a pure function of the timeline; the panel zoom + backdrop dim are dialog-like keyframed presets. The search row reveals the typed query…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["lists","steps","camera"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"state","type":"string"},{"id":"query","type":"string"},{"id":"revealCount","type":"number"},{"id":"selectedIndex","type":"number"},{"id":"highlightedIndex","type":"number"}],"deps":["remocn-ui","command-menu-item"],"install":"npx shadcn@latest add @remocn/command-menu","docs":"https://remocn.dev/docs/ui/components/command-menu","source":"https://remocn.dev/r/command-menu.json","license":"MIT","runs":"local"},{"slug":"remocn.command-menu-item","name":"command-menu-item","title":"UI Command Menu Item","summary":"A command-palette row whose idle/hover/press/selected state is a pure function of the timeline. Leading icon + label + trailing shortcut kbd…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","backgrounds"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"label","type":"string"},{"id":"icon","type":"string"},{"id":"shortcut","type":"string"},{"id":"state","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/command-menu-item","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/command-menu-item.json","license":"MIT","runs":"local"},{"slug":"remocn.confetti","name":"confetti","title":"Confetti","summary":"Deterministic confetti burst for Remotion — seeded particles with gravity, spin, and flutter so every render is identical. Fire it on any frame as a celebratory overlay.","registry":"remocn","framework":"remotion","layer":"primitive","category":"particles","also":["textures"],"tags":["effects"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"particleCount","type":"number"},{"id":"power","type":"number"},{"id":"gravity","type":"number"},{"id":"size","type":"number"},{"id":"seed","type":"number"}],"install":"npx shadcn@latest add @remocn/confetti","docs":"https://remocn.dev/docs/effects/confetti","source":"https://remocn.dev/r/confetti.json","license":"MIT","runs":"local"},{"slug":"remocn.context-menu","name":"context-menu","title":"UI Context Menu","summary":"A right-click context menu whose opened/closed state is a pure function of the timeline; the panel scales from its top-left corner (the click point) with a fade + lift. No trigger — the caller positions it…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["cursors","steps"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"state","type":"string"},{"id":"highlightedIndex","type":"number"}],"deps":["remocn-ui","dropdown-menu-item"],"install":"npx shadcn@latest add @remocn/context-menu","docs":"https://remocn.dev/docs/ui/components/context-menu","source":"https://remocn.dev/r/context-menu.json","license":"MIT","runs":"local"},{"slug":"remocn.crt-screen","name":"crt-screen","title":"CRT Screen","summary":"Put a scene behind curved glass: the picture bulges out to the corners, an RGB phosphor mask and scanlines ride the curve, bright areas flood the mask, and the tube falls away into darkness at the rim.","registry":"remocn","framework":"remotion","layer":"primitive","category":"textures","tags":["filters"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"curvature","type":"number"},{"id":"scanlines","type":"number"},{"id":"maskScale","type":"number"},{"id":"vignette","type":"number"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/crt-screen","docs":"https://remocn.dev/docs/filters/components/crt-screen","source":"https://remocn.dev/r/crt-screen.json","license":"MIT","runs":"local"},{"slug":"remocn.crumple-toss","name":"crumple-toss","title":"Crumple Toss","summary":"Crushes an element into a ball of paper and throws it out of frame on an arc, leaving the scene around it running.","registry":"remocn","framework":"remotion","layer":"primitive","category":"textures","tags":["effects"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"at","type":"number"},{"id":"crumpleSteps","type":"number"},{"id":"tossSteps","type":"number"},{"id":"direction","type":"number"},{"id":"distance","type":"number"},{"id":"spin","type":"number"},{"id":"segments","type":"number"},{"id":"layers","type":"number"},{"id":"randomness","type":"number"},{"id":"crushTo","type":"number"},{"id":"seed","type":"string"},{"id":"step","type":"number"}],"deps":["stop-motion"],"install":"npx shadcn@latest add @remocn/crumple-toss","docs":"https://remocn.dev/docs/effects/crumple-toss","source":"https://remocn.dev/r/crumple-toss.json","license":"MIT","runs":"local"},{"slug":"remocn.cursor","name":"cursor","title":"UI Cursor","summary":"An animated cursor that moves between waypoints, clicks (ripple), and drags. The Cursor renderer is a pure function of a numeric CursorStyle channel; useCursorPath reads the frame and eases the path, ripple…","registry":"remocn","framework":"remotion","layer":"component","category":"cursors","also":["mock-ui"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"variant","type":"string"},{"id":"size","type":"number"},{"id":"rippleColor","type":"color"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/cursor","docs":"https://remocn.dev/docs/ui/components/cursor","source":"https://remocn.dev/r/cursor.json","license":"MIT","runs":"local"},{"slug":"remocn.cursor-gravity","name":"cursor-gravity","title":"Cursor Gravity","summary":"A rounded triangular cursor tugs a button out of the screen edge with pulsed elastic resistance.","registry":"remocn","framework":"remotion","layer":"primitive","category":"cursors","also":["particles","mock-ui"],"tags":["effects"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"label","type":"string"},{"id":"tension","type":"number"},{"id":"cursorColor","type":"color"},{"id":"color","type":"color"},{"id":"textColor","type":"color"},{"id":"backgroundColor","type":"color"}],"install":"npx shadcn@latest add @remocn/cursor-gravity","docs":"https://remocn.dev/docs/effects/cursor-gravity","source":"https://remocn.dev/r/cursor-gravity.json","license":"MIT","runs":"local"},{"slug":"remocn.dialog","name":"dialog","title":"UI Dialog","summary":"A modal dialog whose opened/closed state is a pure function of the timeline; the backdrop dim and popup zoom are keyframed presets, with a close button and a primary action…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","camera","backgrounds"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"title","type":"string"},{"id":"actionLabel","type":"string"},{"id":"cancelLabel","type":"string"},{"id":"state","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/dialog","docs":"https://remocn.dev/docs/ui/components/dialog","source":"https://remocn.dev/r/dialog.json","license":"MIT","runs":"local"},{"slug":"remocn.displacement","name":"displacement","title":"Displacement","summary":"The frame breaks into a grid of cells that shear apart into offset, colour-fringed tiles under film grain, then settle back carrying the next scene.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"grid","type":"number"},{"id":"cellAspect","type":"number"},{"id":"shift","type":"number"},{"id":"aberration","type":"number"},{"id":"grain","type":"number"},{"id":"stagger","type":"number"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/displacement","docs":"https://remocn.dev/docs/transitions/displacement","source":"https://remocn.dev/r/displacement.json","license":"MIT","runs":"local"},{"slug":"remocn.dither-dissolve","name":"dither-dissolve","title":"Dither Dissolve","summary":"A dithering shader transition that dissolves one scene into the next.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"shape","type":"string"},{"id":"colorBack","type":"color"},{"id":"colorFront","type":"color"}],"deps":["shader-dithering"],"install":"npx shadcn@latest add @remocn/dither-dissolve","docs":"https://remocn.dev/docs/transitions/dither-dissolve","source":"https://remocn.dev/r/dither-dissolve.json","license":"MIT","runs":"local"},{"slug":"remocn.dolly-zoom","name":"dolly-zoom","title":"Dolly Zoom","summary":"The vertigo shot: a perspective corridor with a red door stretches deeper while the subject in the center holds its exact size.","registry":"remocn","framework":"remotion","layer":"primitive","category":"camera","tags":["camera"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"intensity","type":"number"},{"id":"reverse","type":"boolean"},{"id":"doorColor","type":"color"},{"id":"figureColor","type":"color"},{"id":"lineColor","type":"color"}],"install":"npx shadcn@latest add @remocn/dolly-zoom","docs":"https://remocn.dev/docs/camera/dolly-zoom","source":"https://remocn.dev/r/dolly-zoom.json","license":"MIT","runs":"local"},{"slug":"remocn.drawer","name":"drawer","title":"UI Drawer","summary":"A bottom panel whose opened/closed state is a pure function of the timeline; the backdrop dim and bottom-edge slide-up are keyframed presets, with a drag handle and a primary action…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","backgrounds"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"title","type":"string"},{"id":"actionLabel","type":"string"},{"id":"cancelLabel","type":"string"},{"id":"state","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/drawer","docs":"https://remocn.dev/docs/ui/components/drawer","source":"https://remocn.dev/r/drawer.json","license":"MIT","runs":"local"},{"slug":"remocn.drift","name":"drift","title":"Drift","summary":"A slow linear camera push-in wrapper that scales its scene from 1 to 1+grow across the sequence so no frame is ever static.","registry":"remocn","framework":"remotion","layer":"component","category":"layouts","also":["camera"],"tags":["layout"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"grow","type":"number"}],"install":"npx shadcn@latest add @remocn/drift","docs":"https://remocn.dev/docs/layout/drift","source":"https://remocn.dev/r/drift.json","license":"MIT","runs":"local"},{"slug":"remocn.dropdown-menu","name":"dropdown-menu","title":"UI Dropdown Menu","summary":"A dropdown menu whose opened/closed state is a pure function of the timeline; the trigger reuses the Button primitive and the reveal panel composes DropdownMenuItem rows. The panel fade, scale, lift…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","entrances"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"label","type":"string"},{"id":"state","type":"string"},{"id":"highlightedIndex","type":"number"}],"deps":["remocn-ui","button","dropdown-menu-item"],"install":"npx shadcn@latest add @remocn/dropdown-menu","docs":"https://remocn.dev/docs/ui/components/dropdown-menu","source":"https://remocn.dev/r/dropdown-menu.json","license":"MIT","runs":"local"},{"slug":"remocn.dropdown-menu-item","name":"dropdown-menu-item","title":"UI Dropdown Menu Item","summary":"A dropdown menu action row whose idle/hover/press state is a pure function of the timeline; the row background and label color are keyframed presets. Composed inside the DropdownMenu panel.","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","backgrounds"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"label","type":"string"},{"id":"state","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/dropdown-menu-item","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/dropdown-menu-item.json","license":"MIT","runs":"local"},{"slug":"remocn.duotone-beat","name":"duotone-beat","title":"Duotone Beat","summary":"A two-ink halftone portrait swaps its ink pair on every beat, with a punch-in on the downbeat and a bar indicator.","registry":"remocn","framework":"remotion","layer":"primitive","category":"beat-sync","also":["filters","textures"],"tags":["graphic-looks"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"beatFrames","type":"number"},{"id":"beatsPerBar","type":"number"},{"id":"punch","type":"number"},{"id":"halftone","type":"number"},{"id":"showIndicator","type":"boolean"}],"install":"npx shadcn@latest add @remocn/duotone-beat","docs":"https://remocn.dev/docs/graphic-looks/duotone-beat","source":"https://remocn.dev/r/duotone-beat.json","license":"MIT","runs":"local"},{"slug":"remocn.echo-stack","name":"echo-stack","title":"Echo Stack","summary":"A word focuses in at the center while outline copies of it unfold above and below and keep drifting, like the one clear line on a spinning drum.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"color","type":"color"},{"id":"echoColor","type":"color"},{"id":"direction","type":"string"},{"id":"fontSize","type":"number"},{"id":"echoes","type":"number"},{"id":"echoOpacity","type":"number"},{"id":"cycle","type":"number"}],"install":"npx shadcn@latest add @remocn/echo-stack","docs":"https://remocn.dev/docs/typography/echo-stack","source":"https://remocn.dev/r/echo-stack.json","license":"MIT","runs":"local"},{"slug":"remocn.ecosystem-constellation","name":"ecosystem-constellation","title":"Ecosystem Constellation","summary":"A central logo orbited by integration satellites with pulsing data lines.","registry":"remocn","framework":"remotion","layer":"block","category":"diagrams","tags":["compositions"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":8,"slots":[{"id":"satelliteCount","type":"number"},{"id":"centerLabel","type":"string"},{"id":"accentColor","type":"color"}],"install":"npx shadcn@latest add @remocn/ecosystem-constellation","docs":"https://remocn.dev/docs/compositions/ecosystem-constellation","source":"https://remocn.dev/r/ecosystem-constellation.json","license":"MIT","runs":"local"},{"slug":"remocn.ember-burn","name":"ember-burn","title":"Ember Burn","summary":"The outgoing frame catches fire where it is brightest, boils in the heat, chars at the rim, and blows away as sparks carrying its own colour.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"patches","type":"number"},{"id":"edgeSoftness","type":"number"},{"id":"contentBias","type":"number"},{"id":"heat","type":"number"},{"id":"glowColor","type":"color"},{"id":"emberAmount","type":"number"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/ember-burn","docs":"https://remocn.dev/docs/transitions/ember-burn","source":"https://remocn.dev/r/ember-burn.json","license":"MIT","runs":"local"},{"slug":"remocn.exploded-view","name":"exploded-view","title":"Exploded View","summary":"An isometric stack of slabs springs apart with leader lines and labels, holds, then clicks back together.","registry":"remocn","framework":"remotion","layer":"primitive","category":"camera","tags":["camera"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"labels","type":"string"},{"id":"layers","type":"number"},{"id":"highlight","type":"number"},{"id":"backgroundColor","type":"color"},{"id":"labelColor","type":"color"}],"install":"npx shadcn@latest add @remocn/exploded-view","docs":"https://remocn.dev/docs/camera/exploded-view","source":"https://remocn.dev/r/exploded-view.json","license":"MIT","runs":"local"},{"slug":"remocn.extrude-pop","name":"extrude-pop","title":"Extrude Pop","summary":"A flat word pops up out of the plane on a solid colored 3D body, no camera involved.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"letter","type":"string"},{"id":"bodyColor","type":"color"},{"id":"faceColor","type":"color"},{"id":"minimaxRadius","type":"number"},{"id":"extrudeAngleDeg","type":"number"},{"id":"extrudeEndFrame","type":"number"}],"install":"npx shadcn@latest add @remocn/extrude-pop","docs":"https://remocn.dev/docs/typography/extrude-pop","source":"https://remocn.dev/r/extrude-pop.json","license":"MIT","runs":"local"},{"slug":"remocn.fade-through","name":"fade-through","title":"Fade Through","summary":"A Material-style content transition: old fades out, new fades in with a soft delay.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fromText","type":"string"},{"id":"toText","type":"string"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/fade-through","docs":"https://remocn.dev/docs/typography/fade-through","source":"https://remocn.dev/r/fade-through.json","license":"MIT","runs":"local"},{"slug":"remocn.field","name":"field","title":"UI Field","summary":"A static layout family for composing labeled form controls, modeled on shadcn's Field: FieldGroup ▸ Field ▸ FieldLabel / FieldControl / FieldDescription…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["layouts"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/field","docs":"https://remocn.dev/docs/ui/components/field","source":"https://remocn.dev/r/field.json","license":"MIT","runs":"local"},{"slug":"remocn.flow-field","name":"flow-field","title":"Flow Field","summary":"Hundreds of particles ride a seeded noise field, leaving silky fading trails in a seamless loop.","registry":"remocn","framework":"remotion","layer":"component","category":"generative","also":["particles"],"tags":["motion-graphics"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"particles","type":"number"},{"id":"trailLength","type":"number"},{"id":"strokeWidth","type":"number"},{"id":"accentRatio","type":"number"},{"id":"loopFrames","type":"number"},{"id":"seed","type":"number"},{"id":"background","type":"color"},{"id":"color","type":"color"},{"id":"accent","type":"color"}],"install":"npx shadcn@latest add @remocn/flow-field","docs":"https://remocn.dev/docs/motion-graphics/flow-field","source":"https://remocn.dev/r/flow-field.json","license":"MIT","runs":"local"},{"slug":"remocn.focus-blur-resolve","name":"focus-blur-resolve","title":"Focus Blur Resolve","summary":"A premium focus pull from heavy blur to crisp text, then a soft blur-out exit.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"blur","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/focus-blur-resolve","docs":"https://remocn.dev/docs/typography/focus-blur-resolve","source":"https://remocn.dev/r/focus-blur-resolve.json","license":"MIT","runs":"local"},{"slug":"remocn.focus-pull","name":"focus-pull","title":"Focus Pull","summary":"A rack-focus transition that defocuses the outgoing scene into a bright blur and resolves the next one into focus.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"blur","type":"number"}],"install":"npx shadcn@latest add @remocn/focus-pull","docs":"https://remocn.dev/docs/transitions/focus-pull","source":"https://remocn.dev/r/focus-pull.json","license":"MIT","runs":"local"},{"slug":"remocn.fog-rise","name":"fog-rise","title":"Fog Rise","summary":"Display text resolves out of fog: characters sharpen from heavy blur center-out with vertical streaks dissolving above them, as if rising along the z-axis.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"fontSize","type":"number"},{"id":"stagger","type":"number"},{"id":"blur","type":"number"},{"id":"tilt","type":"number"},{"id":"depth","type":"number"},{"id":"lift","type":"number"},{"id":"drift","type":"number"},{"id":"exitAt","type":"number"},{"id":"exitAccel","type":"number"},{"id":"mass","type":"number"},{"id":"stiffness","type":"number"},{"id":"damping","type":"number"},{"id":"spreadGap","type":"number"},{"id":"tracking","type":"number"},{"id":"resolveFrames","type":"number"},{"id":"fadeFrames","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/fog-rise","docs":"https://remocn.dev/docs/typography/fog-rise","source":"https://remocn.dev/r/fog-rise.json","license":"MIT","runs":"local"},{"slug":"remocn.fomo-limit-orders","name":"fomo-limit-orders","title":"Order Flow","summary":"An independent 18-second trading-interface demo with fictional market data, graphite and amber styling, an original stepped mark, and editable camera choreography.","registry":"remocn","framework":"remotion","layer":"template","category":"offers","also":["camera"],"tags":["templates"],"author":"Kapish Dima","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":18.5,"slots":[{"id":"brandName","type":"string"},{"id":"accentColor","type":"color"}],"install":"npx shadcn@latest add @remocn/fomo-limit-orders","docs":"https://remocn.dev/docs/templates/fomo-limit-orders","source":"https://remocn.dev/r/fomo-limit-orders.json","license":"MIT","runs":"local"},{"slug":"remocn.github-sponsors","name":"github-sponsors","title":"GitHub Sponsors","summary":"Self-drawing Sponsors heart that docks to a header, every sponsor avatar blur-staggering into a grid, then a thank-you headline and a CTA. Single seek-safe timeline, 270 frames at 30fps.","registry":"remocn","framework":"remotion","layer":"component","category":"social-proof","tags":["social"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"account","type":"string"},{"id":"accentColor","type":"color"},{"id":"theme","type":"string"}],"deps":["soft-blur-in","blur-out-up"],"install":"npx shadcn@latest add @remocn/github-sponsors","docs":"https://remocn.dev/docs/social/github-sponsors","source":"https://remocn.dev/r/github-sponsors.json","license":"MIT","runs":"local"},{"slug":"remocn.github-stars","name":"github-stars","title":"GitHub Stars","summary":"Inertial fly-through of a repo's stargazers with a synced count-up odometer that locks on the total. Horizontal 16:9 or vertical 9:16.","registry":"remocn","framework":"remotion","layer":"component","category":"social-proof","tags":["social"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"repo","type":"string"},{"id":"totalStars","type":"number"},{"id":"orientation","type":"string"},{"id":"accentColor","type":"color"},{"id":"theme","type":"string"}],"deps":["number-wheel"],"install":"npx shadcn@latest add @remocn/github-stars","docs":"https://remocn.dev/docs/social/github-stars","source":"https://remocn.dev/r/github-stars.json","license":"MIT","runs":"local"},{"slug":"remocn.glass-code-block","name":"glass-code-block","title":"Glass Code Block","summary":"A premium frosted-glass code editor window with a regex tokenizer and line-by-line stagger reveal.","registry":"remocn","framework":"remotion","layer":"block","category":"code","also":["entrances"],"tags":["ui-blocks"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":6,"slots":[{"id":"title","type":"string"},{"id":"width","type":"number"},{"id":"height","type":"number"},{"id":"fontSize","type":"number"},{"id":"glassColor","type":"color"},{"id":"staggerFrames","type":"number"},{"id":"showTrafficLights","type":"boolean"}],"install":"npx shadcn@latest add @remocn/glass-code-block","docs":"https://remocn.dev/docs/ui-blocks/glass-code-block","source":"https://remocn.dev/r/glass-code-block.json","license":"MIT","runs":"local"},{"slug":"remocn.glass-code-walk","name":"glass-code-walk","title":"Glass Code Walk","summary":"A camera that scans a glass code block top to bottom as it types, then pulls back to a centered hold.","registry":"remocn","framework":"remotion","layer":"block","category":"code","also":["camera"],"tags":["ui-blocks"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":5,"slots":[{"id":"title","type":"string"},{"id":"zoom","type":"number"},{"id":"fontSize","type":"number"},{"id":"staggerFrames","type":"number"},{"id":"width","type":"number"},{"id":"height","type":"number"}],"deps":["glass-code-block"],"install":"npx shadcn@latest add @remocn/glass-code-walk","docs":"https://remocn.dev/docs/ui-blocks/glass-code-walk","source":"https://remocn.dev/r/glass-code-walk.json","license":"MIT","runs":"local"},{"slug":"remocn.glitch-cut","name":"glitch-cut","title":"Glitch Cut","summary":"A broadcast-glitch hard cut: the frame tears into displaced slices with channel split and corrupted blocks, and the incoming scene takes over slice by slice at the peak.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"intensity","type":"number"},{"id":"slices","type":"number"},{"id":"rgbSplit","type":"number"},{"id":"blockNoise","type":"number"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/glitch-cut","docs":"https://remocn.dev/docs/transitions/glitch-cut","source":"https://remocn.dev/r/glitch-cut.json","license":"MIT","runs":"local"},{"slug":"remocn.glyph-anatomy","name":"glyph-anatomy","title":"Glyph Anatomy","summary":"A word builds as in a font editor, with metric guides, anchors along each contour and Bézier handles that pull straight segments into curves before the glyphs fill.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","also":["stats"],"tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"color","type":"color"},{"id":"guideColor","type":"color"},{"id":"fontSize","type":"number"},{"id":"guides","type":"boolean"},{"id":"keepPoints","type":"boolean"}],"install":"npx shadcn@latest add @remocn/glyph-anatomy","docs":"https://remocn.dev/docs/typography/glyph-anatomy","source":"https://remocn.dev/r/glyph-anatomy.json","license":"MIT","runs":"local"},{"slug":"remocn.gooey-morph","name":"gooey-morph","title":"Gooey Morph","summary":"Bars fly in Tetris-style, land as a row, and melt into a word through a gooey blur-and-threshold morph.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"word","type":"string"},{"id":"fill","type":"string"},{"id":"fontFamily","type":"string"},{"id":"blurRadius","type":"number"},{"id":"displaceAmount","type":"number"},{"id":"barTravelFrames","type":"number"}],"install":"npx shadcn@latest add @remocn/gooey-morph","docs":"https://remocn.dev/docs/typography/gooey-morph","source":"https://remocn.dev/r/gooey-morph.json","license":"MIT","runs":"local"},{"slug":"remocn.gradient-scale-cut-text","name":"gradient-scale-cut-text","title":"Gradient Scale Cut Text","summary":"An oversized gradient reveal snaps to a separate compact blurred line that settles left while the reveal continues.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"giantFontSize","type":"number"},{"id":"compactFontSize","type":"number"},{"id":"anchorOffsetX","type":"number"},{"id":"giantTravel","type":"number"},{"id":"settleTravel","type":"number"},{"id":"cutFrame","type":"number"},{"id":"revealSoftness","type":"number"},{"id":"compactBlur","type":"number"},{"id":"gradientStart","type":"string"},{"id":"gradientEnd","type":"string"},{"id":"ghostColor","type":"color"},{"id":"backgroundColor","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/gradient-scale-cut-text","docs":"https://remocn.dev/docs/typography/gradient-scale-cut-text","source":"https://remocn.dev/r/gradient-scale-cut-text.json","license":"MIT","runs":"local"},{"slug":"remocn.grain-dissolve","name":"grain-dissolve","title":"Grain Dissolve","summary":"A grain-gradient shader transition that disintegrates the outgoing scene into soft grainy shapes and condenses the next scene out of the noise.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"shape","type":"string"},{"id":"noise","type":"number"},{"id":"zoom","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-grain-gradient"],"install":"npx shadcn@latest add @remocn/grain-dissolve","docs":"https://remocn.dev/docs/transitions/grain-dissolve","source":"https://remocn.dev/r/grain-dissolve.json","license":"MIT","runs":"local"},{"slug":"remocn.gravity-pile","name":"gravity-pile","title":"Gravity Pile","summary":"Seeded circles, squares and triangles rain down, bounce off the floor and each other, and settle into a heap.","registry":"remocn","framework":"remotion","layer":"primitive","category":"camera","tags":["camera"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"count","type":"number"},{"id":"gravity","type":"number"},{"id":"seed","type":"number"},{"id":"accentColor","type":"color"},{"id":"backgroundColor","type":"color"}],"install":"npx shadcn@latest add @remocn/gravity-pile","docs":"https://remocn.dev/docs/camera/gravity-pile","source":"https://remocn.dev/r/gravity-pile.json","license":"MIT","runs":"local"},{"slug":"remocn.grid-wave","name":"grid-wave","title":"Grid Wave","summary":"A wave travels across the frame raising the picture into a grid of solid blocks with lit tops and shaded sides, which set back down carrying the next scene.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"tileSize","type":"number"},{"id":"waveWidth","type":"number"},{"id":"lift","type":"number"},{"id":"gap","type":"number"},{"id":"tint","type":"color"},{"id":"direction","type":"string"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/grid-wave","docs":"https://remocn.dev/docs/transitions/grid-wave","source":"https://remocn.dev/r/grid-wave.json","license":"MIT","runs":"local"},{"slug":"remocn.halftone-print","name":"halftone-print","title":"Halftone Print","summary":"Print a scene onto paper: each colour separates onto its own rotated screen of dots sized by the ink under them, slightly out of register the way a real press runs.","registry":"remocn","framework":"remotion","layer":"primitive","category":"textures","tags":["filters"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"dotSize","type":"number"},{"id":"angle","type":"number"},{"id":"misregistration","type":"number"},{"id":"paperTint","type":"color"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/halftone-print","docs":"https://remocn.dev/docs/filters/components/halftone-print","source":"https://remocn.dev/r/halftone-print.json","license":"MIT","runs":"local"},{"slug":"remocn.hand-count","name":"hand-count","title":"Hand Count","summary":"A number that counts up in stop-motion poses, rewritten by hand at every pose and freezing still once it lands.","registry":"remocn","framework":"remotion","layer":"primitive","category":"stats","also":["text-effects"],"tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"to","type":"number"},{"id":"from","type":"number"},{"id":"durationSteps","type":"number"},{"id":"decimals","type":"number"},{"id":"prefix","type":"string"},{"id":"suffix","type":"string"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"ease","type":"string"},{"id":"seed","type":"string"},{"id":"step","type":"number"}],"deps":["stop-motion"],"install":"npx shadcn@latest add @remocn/hand-count","docs":"https://remocn.dev/docs/typography/hand-count","source":"https://remocn.dev/r/hand-count.json","license":"MIT","runs":"local"},{"slug":"remocn.handwrite","name":"handwrite","title":"Handwrite","summary":"Handwritten text laid down letter by letter on a quantized stop-motion clock, each glyph keeping its own slant and baseline wobble.","registry":"remocn","framework":"remotion","layer":"primitive","category":"annotations","also":["text-effects"],"tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"fontSize","type":"number"},{"id":"perStep","type":"number"},{"id":"weight","type":"string"},{"id":"color","type":"color"},{"id":"align","type":"string"},{"id":"step","type":"number"}],"deps":["stop-motion"],"install":"npx shadcn@latest add @remocn/handwrite","docs":"https://remocn.dev/docs/typography/handwrite","source":"https://remocn.dev/r/handwrite.json","license":"MIT","runs":"local"},{"slug":"remocn.hologram","name":"hologram","title":"Hologram","summary":"Play a scene as a projection: a ghost double shimmers off the image, emission lines structure it, and only what is bright enough carries through the dark volume it hangs in.","registry":"remocn","framework":"remotion","layer":"primitive","category":"filters","tags":["filters"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"tint","type":"color"},{"id":"glow","type":"number"},{"id":"ghost","type":"number"},{"id":"flicker","type":"number"},{"id":"intensity","type":"number"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/hologram","docs":"https://remocn.dev/docs/filters/components/hologram","source":"https://remocn.dev/r/hologram.json","license":"MIT","runs":"local"},{"slug":"remocn.hyperspace","name":"hyperspace","title":"Hyperspace","summary":"A deterministic starfield stretches into radial streaks, the scene tunnels forward and a white flash at the cut reveals the next scene.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"stars","type":"number"},{"id":"streakColor","type":"color"},{"id":"accentColor","type":"color"},{"id":"accentRatio","type":"number"},{"id":"flash","type":"boolean"},{"id":"flashColor","type":"color"}],"install":"npx shadcn@latest add @remocn/hyperspace","docs":"https://remocn.dev/docs/transitions/hyperspace","source":"https://remocn.dev/r/hyperspace.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-activity","name":"icon-activity","title":"Activity","summary":"Animated Lucide activity icon — the pulse line sweeps through like an EKG, popping at the peak. Loops by default.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-activity","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-activity.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-alert-triangle","name":"icon-alert-triangle","title":"Alert Triangle","summary":"Animated Lucide triangle-alert icon — the outline draws on, the mark pops in, then the exclamation blinks to flag a risk or warning.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-alert-triangle","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-alert-triangle.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-arrow-down","name":"icon-arrow-down","title":"Arrow Down","summary":"Animated Lucide arrow-down icon — the shaft and head draw on, then the arrow nudges down for cost/latency reduction beats or scroll cues.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-arrow-down","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-arrow-down.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-arrow-left","name":"icon-arrow-left","title":"Arrow Left","summary":"Animated Lucide arrow-left icon — the shaft and head draw on, then the arrow nudges back for back navigation or 'previously' callbacks.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-arrow-left","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-arrow-left.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-arrow-right","name":"icon-arrow-right","title":"Arrow Right","summary":"Animated Lucide arrow-right icon — the shaft and head draw on, then the arrow nudges forward for CTAs, next-step pointers, or flow direction.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-arrow-right","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-arrow-right.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-arrow-up","name":"icon-arrow-up","title":"Arrow Up","summary":"Animated Lucide arrow-up icon — the shaft and head draw on, then the arrow nudges up for growth, improvement, or upward-trend beats.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-arrow-up","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-arrow-up.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-at-sign","name":"icon-at-sign","title":"At Sign","summary":"Animated Lucide at-sign icon — the inner 'a' draws and pops, then the outer swoosh re-traces its tail: a mention landing.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-at-sign","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-at-sign.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-award","name":"icon-award","title":"Award","summary":"Animated Lucide award icon — the medal draws on, the ribbon unfurls beneath it, then the medal swings to rest.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-award","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-award.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-bar-chart-3","name":"icon-bar-chart-3","title":"Bar Chart 3","summary":"Animated Lucide bar-chart-3 icon — the axis draws on, then three bars rise left to right with overshoot: the classic growth chart.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-bar-chart-3","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-bar-chart-3.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-bell","name":"icon-bell","title":"Bell","summary":"Animated Lucide bell icon — the body draws on, the clapper follows, then the bell swings from its mount to signal a notification or alert.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-bell","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-bell.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-bookmark","name":"icon-bookmark","title":"Bookmark","summary":"Animated Lucide bookmark icon — draws on, then drops into place from above with a spring landing.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-bookmark","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-bookmark.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-calendar","name":"icon-calendar","title":"Calendar","summary":"Animated Lucide calendar icon — the pad draws on, then the binder rings dip and the page snaps into place.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-calendar","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-calendar.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-camera","name":"icon-camera","title":"Camera","summary":"Animated Lucide camera icon — draws on, then the lens blinks shut and open like a shutter firing.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-camera","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-camera.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-check","name":"icon-check","title":"Check","summary":"Animated Lucide check icon — the stroke draws on, then stamps with a spring pop to mark a step, task, or claim as done.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-check","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-check.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-check-circle","name":"icon-check-circle","title":"Check Circle","summary":"Animated Lucide circle-check icon — the ring draws clockwise, the checkmark traces in, then the whole mark pops to confirm a completed or successful state.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-check-circle","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-check-circle.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-chevron-down","name":"icon-chevron-down","title":"Chevron Down","summary":"Animated Lucide chevron-down icon — draws on, then nudges downward with a fading echo.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-chevron-down","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-chevron-down.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-chevron-left","name":"icon-chevron-left","title":"Chevron Left","summary":"Animated Lucide chevron-left icon — draws on, then nudges left with a fading echo.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-chevron-left","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-chevron-left.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-chevron-right","name":"icon-chevron-right","title":"Chevron Right","summary":"Animated Lucide chevron-right icon — draws on, then nudges right with a fading echo.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-chevron-right","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-chevron-right.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-chevron-up","name":"icon-chevron-up","title":"Chevron Up","summary":"Animated Lucide chevron-up icon — draws on, then nudges upward with a fading echo.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-chevron-up","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-chevron-up.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-clock","name":"icon-clock","title":"Clock","summary":"Animated Lucide clock icon — the face draws on, then the hands sweep through discrete ticks. Loops by default.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-clock","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-clock.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-cloud","name":"icon-cloud","title":"Cloud","summary":"Animated Lucide cloud icon — draws on, then floats: a weightless bob and a half before settling.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-cloud","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-cloud.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-code","name":"icon-code","title":"Code","summary":"Animated Lucide code icon — the angle brackets draw on, pull apart, and snap back around their code.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-code","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-code.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-copy","name":"icon-copy","title":"Copy","summary":"Animated Lucide copy icon — the two sheets draw back-to-front, then the front sheet lifts and settles to read as a duplicate for a copy-to-clipboard beat.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-copy","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-copy.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-credit-card","name":"icon-credit-card","title":"Credit Card","summary":"Animated Lucide credit-card icon — the card draws on, then the stripe swipes through and the card tips: payment accepted.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-credit-card","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-credit-card.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-crown","name":"icon-crown","title":"Crown","summary":"Animated Lucide crown icon — descends into place from above, lands with a pop, then rocks regally to rest.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-crown","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-crown.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-database","name":"icon-database","title":"Database","summary":"Animated Lucide database icon — the cylinder draws on, then a write lands: the top disc pops and data settles down the stack.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-database","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-database.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-dollar-sign","name":"icon-dollar-sign","title":"Dollar Sign","summary":"Animated Lucide dollar-sign icon — draws on, then the sign stretches tall: understated cha-ching.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-dollar-sign","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-dollar-sign.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-download","name":"icon-download","title":"Download","summary":"Animated Lucide download icon — the tray draws on, the arrow fades in, then drops into the tray with a squash on impact for a download or export beat.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-download","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-download.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-external-link","name":"icon-external-link","title":"External Link","summary":"Animated Lucide external-link icon — the box and arrow draw on, then the arrow darts out toward the top-right for 'view on GitHub', external docs, or open-in-new-tab beats.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-external-link","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-external-link.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-eye","name":"icon-eye","title":"Eye","summary":"Animated Lucide eye icon — draws on, then blinks once and refocuses its pupil.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-eye","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-eye.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-eye-off","name":"icon-eye-off","title":"Eye Off","summary":"Animated Lucide eye-off icon — the eye fragments draw on, then the slash cuts through and visibility dims.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-eye-off","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-eye-off.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-file-text","name":"icon-file-text","title":"File Text","summary":"Animated Lucide file-text icon — the page draws on, then the text lines type themselves in, top to bottom.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-file-text","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-file-text.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-filter","name":"icon-filter","title":"Filter","summary":"Animated Lucide filter icon — the funnel draws on, then gives two quick shakes as results fall through.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-filter","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-filter.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-flame","name":"icon-flame","title":"Flame","summary":"Animated Lucide flame icon — the outline draws on, then flickers with a looping scale-and-skew wobble for hot features, trending items, or streaks. Loops by default.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-flame","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-flame.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-folder","name":"icon-folder","title":"Folder","summary":"Animated Lucide folder icon — draws on, then the folder tips open for a peek and closes.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-folder","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-folder.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-gem","name":"icon-gem","title":"Gem","summary":"Animated Lucide gem icon — the stone draws on, then light catches it: facets re-trace in sequence with a flicker and a pop.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-gem","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-gem.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-gift","name":"icon-gift","title":"Gift","summary":"Animated Lucide gift icon — draws on, then the lid lifts for a peek and lands with a ribbon pop: almost unwrapped.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-gift","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-gift.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-globe","name":"icon-globe","title":"Globe","summary":"Animated Lucide globe icon — draws on, then the meridian sweeps west to east like the world turning. Loops by default.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-globe","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-globe.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-heart","name":"icon-heart","title":"Heart","summary":"Animated Lucide heart icon — the outline draws on, then a lub-dub heartbeat pulse for likes, favorites, or built-with-love moments.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-heart","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-heart.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-help-circle","name":"icon-help-circle","title":"Help Circle","summary":"Animated Lucide help-circle icon — the ring draws on, then the question mark re-draws and tilts like a curious head.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-help-circle","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-help-circle.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-home","name":"icon-home","title":"Home","summary":"Animated Lucide home icon — the house draws on, then the door re-draws open and the house settles: welcome home.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-home","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-home.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-image","name":"icon-image","title":"Image","summary":"Animated Lucide image icon — the frame draws on, then the mountain redraws and the sun drifts into place like a photo developing.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-image","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-image.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-inbox","name":"icon-inbox","title":"Inbox","summary":"Animated Lucide inbox icon — the tray draws on, then dips under the weight of an arriving item and springs back.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-inbox","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-inbox.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-info","name":"icon-info","title":"Info","summary":"Animated Lucide info icon — the ring draws clockwise, the dot pops and stem draws in, then the dot bobs to draw a gentle, neutral note.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-info","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-info.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-key","name":"icon-key","title":"Key","summary":"Animated Lucide key icon — draws on, then turns in an invisible lock and springs back.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-key","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-key.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-layout-grid","name":"icon-layout-grid","title":"Layout Grid","summary":"Animated Lucide layout-grid icon — four tiles draw on, then re-pop into place clockwise like a dashboard assembling.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-layout-grid","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-layout-grid.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-link","name":"icon-link","title":"Link","summary":"Animated Lucide link icon — two chain halves draw on, pull apart, and click together.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-link","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-link.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-loader","name":"icon-loader","title":"Loader","summary":"Animated Lucide loader-circle icon — the arc draws on, then spins continuously for a loading or processing beat. Loops by default.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-loader","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-loader.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-lock","name":"icon-lock","title":"Lock","summary":"Animated Lucide lock icon — the body draws on, then the shackle lifts and slams shut with a confirming pop.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-lock","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-lock.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-log-out","name":"icon-log-out","title":"Log Out","summary":"Animated Lucide log-out icon — draws on, then the arrow steps out through the door frame with a fading echo.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-log-out","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-log-out.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-mail","name":"icon-mail","title":"Mail","summary":"Animated Lucide mail icon — the envelope draws on, then the flap re-traces open and the whole envelope pops: you've got mail.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-mail","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-mail.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-maximize","name":"icon-maximize","title":"Maximize","summary":"Animated Lucide maximize icon — four corner brackets draw on, then fly outward and spring back like a window going fullscreen.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-maximize","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-maximize.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-menu","name":"icon-menu","title":"Menu","summary":"Animated Lucide menu icon — the three bars slide in from the left, top to bottom, each overshooting into place.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-menu","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-menu.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-message-circle","name":"icon-message-circle","title":"Message Circle","summary":"Animated Lucide message-circle icon — the bubble draws on, then inflates from its tail like a message arriving.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-message-circle","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-message-circle.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-mic","name":"icon-mic","title":"Mic","summary":"Animated Lucide mic icon — draws on, then the capsule bounces twice like a level meter picking up voice.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-mic","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-mic.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-monitor","name":"icon-monitor","title":"Monitor","summary":"Animated Lucide monitor icon — the stand draws, then the screen powers on with a CRT-style unsquash.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-monitor","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-monitor.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-moon","name":"icon-moon","title":"Moon","summary":"Animated Lucide moon icon — draws on, then rocks gently into place: settling in for the night.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-moon","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-moon.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-more-horizontal","name":"icon-more-horizontal","title":"More Horizontal","summary":"Animated Lucide more-horizontal icon — three dots pop in, then do a left-to-right thinking wave.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-more-horizontal","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-more-horizontal.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-package","name":"icon-package","title":"Package","summary":"Animated Lucide package icon — the box draws on, lands with a squash-and-stretch, then the tape seam seals it.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-package","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-package.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-party-popper","name":"icon-party-popper","title":"Party Popper","summary":"Animated Lucide party-popper icon — the cone draws on, then confetti bursts outward as the cone recoils for launch, milestone, or celebration finales.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-party-popper","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-party-popper.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-pause","name":"icon-pause","title":"Pause","summary":"Animated Lucide pause icon — the two bars draw on, then pinch toward each other and settle like a held breath.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-pause","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-pause.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-pencil","name":"icon-pencil","title":"Pencil","summary":"Animated Lucide pencil icon — draws on, then scribbles: the pencil rocks around its tip as if writing.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-pencil","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-pencil.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-phone","name":"icon-phone","title":"Phone","summary":"Animated Lucide phone icon — draws on, then rings: three decaying rotation oscillations around center.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-phone","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-phone.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-play","name":"icon-play","title":"Play","summary":"Animated Lucide play icon — the triangle draws on, then presses in and springs forward like a play button being hit.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-play","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-play.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-plus","name":"icon-plus","title":"Plus","summary":"Animated Lucide plus icon — the two strokes draw on, then the mark twirls 90deg with a scale pop for an energetic add or create beat.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-plus","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-plus.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-plus-circle","name":"icon-plus-circle","title":"Plus Circle","summary":"Animated Lucide plus-circle icon — the ring draws on, the plus crosses in, then the whole badge pops.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-plus-circle","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-plus-circle.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-refresh-cw","name":"icon-refresh-cw","title":"Refresh Cw","summary":"Animated Lucide refresh-cw icon — the two arcs draw on, arrowheads pop, then the whole mark spins in cycles for sync, retry, or up-to-date messaging. Loops by default.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-refresh-cw","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-refresh-cw.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-rocket","name":"icon-rocket","title":"Rocket","summary":"Animated Lucide rocket icon — draws on, then lifts off: the ship rises on a tilt while the flame re-ignites, then eases back to rest.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-rocket","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-rocket.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-save","name":"icon-save","title":"Save","summary":"Animated Lucide save icon — the disk draws on, then presses down and writes: the label slot re-draws as data commits.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-save","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-save.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-scatter","name":"icon-scatter","title":"Icon Scatter","summary":"Scatter a field of icons over the cut, hiding the scene swap at the field's peak.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"count","type":"number"},{"id":"color","type":"color"},{"id":"coverColor","type":"color"},{"id":"flyDistance","type":"number"}],"install":"npx shadcn@latest add @remocn/icon-scatter","docs":"https://remocn.dev/docs/transitions/icon-scatter","source":"https://remocn.dev/r/icon-scatter.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-search","name":"icon-search","title":"Search","summary":"Animated Lucide search icon — the lens draws on, the handle extends, then the magnifier sweeps a small scanning path for a search or discovery beat.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-search","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-search.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-send","name":"icon-send","title":"Send","summary":"Animated Lucide send icon — the paper plane draws on, then darts forward with a wind-up and settles back for a send-message beat.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-send","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-send.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-settings","name":"icon-settings","title":"Settings","summary":"Animated Lucide settings icon — the gear and center draw on, then the gear turns exactly one tooth for a settings, configuration, or customization beat.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-settings","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-settings.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-share-2","name":"icon-share-2","title":"Share 2","summary":"Animated Lucide share-2 icon — three nodes draw on, then the connections re-trace and the receiving nodes pop as the share lands.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-share-2","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-share-2.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-shield","name":"icon-shield","title":"Shield","summary":"Animated Lucide shield icon — draws on, then braces: a firm guard pulse that asserts protection.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-shield","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-shield.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-shopping-cart","name":"icon-shopping-cart","title":"Shopping Cart","summary":"Animated Lucide shopping-cart icon — draws on, then rolls forward to checkout, wheels popping as it stops.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-shopping-cart","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-shopping-cart.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-skip-forward","name":"icon-skip-forward","title":"Skip Forward","summary":"Animated Lucide skip-forward icon — draws on, then dashes forward past center and snaps against its end bar.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-skip-forward","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-skip-forward.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-smartphone","name":"icon-smartphone","title":"Smartphone","summary":"Animated Lucide smartphone icon — draws on, then buzzes: three fast vibration oscillations.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-smartphone","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-smartphone.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-sparkles","name":"icon-sparkles","title":"Sparkles","summary":"Animated Lucide sparkles icon — the main sparkle draws on, the accents pop, then a looping twinkle for AI, magic, or premium highlights. Loops by default.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-sparkles","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-sparkles.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-star","name":"icon-star","title":"Star","summary":"Animated Lucide star icon — the outline draws on, then twinkles into place with a small rotate and scale pop for ratings, favorites, or star callouts.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-star","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-star.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-sun","name":"icon-sun","title":"Sun","summary":"Animated Lucide sun icon — the core draws on, then eight rays fan out clockwise and the sun swells: sunrise.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-sun","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-sun.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-tag","name":"icon-tag","title":"Tag","summary":"Animated Lucide tag icon — draws on, then swings from its hole like a price tag flicked by a shopper.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-tag","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-tag.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-target","name":"icon-target","title":"Target","summary":"Animated Lucide target icon — three rings draw in from outside, then the bullseye hits: inner dot pops and the board shudders.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-target","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-target.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-terminal","name":"icon-terminal","title":"Terminal","summary":"Animated Lucide terminal icon — draws on, then the prompt nudges forward and the cursor blinks twice.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-terminal","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-terminal.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-thumbs-up","name":"icon-thumbs-up","title":"Thumbs Up","summary":"Animated Lucide thumbs-up icon — the hand draws on, then springs up with an approving stamp for positive reviews, approvals, or social-proof beats.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-thumbs-up","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-thumbs-up.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-timer","name":"icon-timer","title":"Timer","summary":"Animated Lucide timer icon — draws on, then the start button clicks and the hand sweeps: the stopwatch is running.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-timer","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-timer.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-trash","name":"icon-trash","title":"Trash","summary":"Animated Lucide trash-2 icon — the can draws on, then the lid flips open and the contents vanish for a delete or cleanup beat.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-trash","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-trash.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-trending-down","name":"icon-trending-down","title":"Trending Down","summary":"Animated Lucide trending-down icon — the line descends across, then the arrowhead lands with damped weight.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-trending-down","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-trending-down.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-trending-up","name":"icon-trending-up","title":"Trending Up","summary":"Animated Lucide trending-up icon — the line climbs across, then the arrowhead pops at the peak.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-trending-up","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-trending-up.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-trophy","name":"icon-trophy","title":"Trophy","summary":"Animated Lucide trophy icon — draws on, then hoists: the cup hops with a pop at the apex while its handles flash in.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-trophy","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-trophy.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-upload","name":"icon-upload","title":"Upload","summary":"Animated Lucide upload icon — the tray draws on, the arrow fades in, then launches upward with a spring for an upload, publish, or submission beat.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-upload","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-upload.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-user","name":"icon-user","title":"User","summary":"Animated Lucide user icon — draws on, then gives a small presence nod: head dips as shoulders rise to meet it.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-user","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-user.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-user-plus","name":"icon-user-plus","title":"User Plus","summary":"Animated Lucide user-plus icon — the figure draws on, then the plus strokes draw in and pop: a new member added.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-user-plus","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-user-plus.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-users","name":"icon-users","title":"Users","summary":"Animated Lucide users icon — the front figure draws on and pops, then the second figure slides in from behind: the team assembles.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-users","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-users.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-video","name":"icon-video","title":"Video","summary":"Animated Lucide video icon — draws on, then the lens wedge pans out and snaps back to its shot.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-video","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-video.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-volume-2","name":"icon-volume-2","title":"Volume 2","summary":"Animated Lucide volume-2 icon — the speaker draws on, then the two sound waves ripple outward one after the other.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-volume-2","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-volume-2.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-volume-x","name":"icon-volume-x","title":"Volume X","summary":"Animated Lucide volume-x icon — the speaker draws on, then the X slashes in and the glyph shakes off the sound.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-volume-x","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-volume-x.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-wallet","name":"icon-wallet","title":"Wallet","summary":"Animated Lucide wallet icon — draws on, then the wallet thickens with a quiet x-scale: money in.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-wallet","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-wallet.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-x","name":"icon-x","title":"X","summary":"Animated Lucide x icon — the two diagonals draw in crosswise, then the mark shakes to punctuate an error, removal, or dismissal.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-x","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-x.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-x-circle","name":"icon-x-circle","title":"X Circle","summary":"Animated Lucide x-circle icon — the ring draws on, the X slashes in, and the badge shakes once: firmly rejected.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-x-circle","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-x-circle.json","license":"MIT","runs":"local"},{"slug":"remocn.icon-zap","name":"icon-zap","title":"Zap","summary":"Animated Lucide zap icon — the bolt draws in fast, then flashes with a double blink for speed, performance, or instant-result claims.","registry":"remocn","framework":"remotion","layer":"component","category":"icons","tags":["icons"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"animation","type":"string"},{"id":"loop","type":"boolean"},{"id":"size","type":"number"},{"id":"color","type":"color"},{"id":"strokeWidth","type":"number"}],"deps":["icons-core"],"install":"npx shadcn@latest add @remocn/icon-zap","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icon-zap.json","license":"MIT","runs":"local"},{"slug":"remocn.icons-core","name":"icons-core","title":"Icons Core","summary":"Shared animation contract, pure frame-to-phase timeline, and SVG path-draw helpers for remocn icons.","registry":"remocn","framework":"remotion","layer":"lib","category":"utilities","tags":["icons"],"author":"Kapish Dima","aspect":"any","install":"npx shadcn@latest add @remocn/icons-core","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/icons-core.json","license":"MIT","runs":"local"},{"slug":"remocn.imessage-chat-flow","name":"imessage-chat-flow","title":"UI iMessage Chat Flow","summary":"An iMessage-styled messaging composition: gray incoming and blue outgoing bubbles with tails, an in-thread typing bubble with dots, a Delivered label, and tapback-style reaction badges…","registry":"remocn","framework":"remotion","layer":"component","category":"chats","also":["mock-ui","text-effects"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","deps":["remocn-ui","caret","typing-indicator"],"install":"npx shadcn@latest add @remocn/imessage-chat-flow","docs":"https://remocn.dev/docs/ui/blocks/imessage-chat-flow","source":"https://remocn.dev/r/imessage-chat-flow.json","license":"MIT","runs":"local"},{"slug":"remocn.impact-shake","name":"impact-shake","title":"Impact Shake","summary":"Heavy content slams in from above with squash, a damped camera jolt, a two-frame RGB split and dust puffs kicking out sideways.","registry":"remocn","framework":"remotion","layer":"primitive","category":"camera","tags":["camera"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"intensity","type":"number"},{"id":"impact","type":"number"},{"id":"foregroundColor","type":"color"},{"id":"backgroundColor","type":"color"},{"id":"seed","type":"number"}],"install":"npx shadcn@latest add @remocn/impact-shake","docs":"https://remocn.dev/docs/camera/impact-shake","source":"https://remocn.dev/r/impact-shake.json","license":"MIT","runs":"local"},{"slug":"remocn.infinite-bento-pan","name":"infinite-bento-pan","title":"Infinite Bento Pan","summary":"A camera diagonally drifts across an oversized bento grid behind a soft vignette.","registry":"remocn","framework":"remotion","layer":"block","category":"layouts","tags":["compositions"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":10,"slots":[{"id":"panSpeed","type":"number"},{"id":"accentColor","type":"color"}],"install":"npx shadcn@latest add @remocn/infinite-bento-pan","docs":"https://remocn.dev/docs/compositions/infinite-bento-pan","source":"https://remocn.dev/r/infinite-bento-pan.json","license":"MIT","runs":"local"},{"slug":"remocn.infinite-marquee","name":"infinite-marquee","title":"Infinite Marquee","summary":"Seamlessly looping horizontal text strip with optional stroke style.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"},{"id":"pixelsPerFrame","type":"number"},{"id":"stroke","type":"boolean"},{"id":"strokeColor","type":"color"}],"install":"npx shadcn@latest add @remocn/infinite-marquee","docs":"https://remocn.dev/docs/typography/infinite-marquee","source":"https://remocn.dev/r/infinite-marquee.json","license":"MIT","runs":"local"},{"slug":"remocn.inflate","name":"inflate","title":"Inflate","summary":"A deflated red sliver puffs up like a balloon toy, overshoots, squashes wide and settles into a glossy rounded mark.","registry":"remocn","framework":"remotion","layer":"block","category":"logos","tags":["logo-stings"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":2.2,"slots":[{"id":"color","type":"color"},{"id":"highlight","type":"string"},{"id":"dotColor","type":"color"},{"id":"backgroundColor","type":"color"}],"install":"npx shadcn@latest add @remocn/inflate","docs":"https://remocn.dev/docs/logo-stings/inflate","source":"https://remocn.dev/r/inflate.json","license":"MIT","runs":"local"},{"slug":"remocn.ink-arrow","name":"ink-arrow","title":"Ink Arrow","summary":"A hand-drawn brush arrow that sweeps itself from one point to another, thickening into the head that pops on the final poses.","registry":"remocn","framework":"remotion","layer":"primitive","category":"annotations","also":["entrances"],"tags":["effects"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"curvature","type":"number"},{"id":"strokeWidth","type":"number"},{"id":"pressure","type":"number"},{"id":"release","type":"number"},{"id":"grain","type":"number"},{"id":"headSize","type":"number"},{"id":"drawDur","type":"number"},{"id":"headDur","type":"number"},{"id":"color","type":"color"},{"id":"seed","type":"string"},{"id":"step","type":"number"}],"deps":["stop-motion","brush"],"install":"npx shadcn@latest add @remocn/ink-arrow","docs":"https://remocn.dev/docs/effects/ink-arrow","source":"https://remocn.dev/r/ink-arrow.json","license":"MIT","runs":"local"},{"slug":"remocn.ink-underline","name":"ink-underline","title":"Ink Underline","summary":"A hand-dragged brush underline that sweeps itself across in a few stop-motion poses, thinning to a dry tail.","registry":"remocn","framework":"remotion","layer":"primitive","category":"annotations","also":["text-effects"],"tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"width","type":"number"},{"id":"color","type":"color"},{"id":"thickness","type":"number"},{"id":"pressure","type":"number"},{"id":"release","type":"number"},{"id":"grain","type":"number"},{"id":"durationSteps","type":"number"},{"id":"seed","type":"string"},{"id":"step","type":"number"}],"deps":["stop-motion","brush"],"install":"npx shadcn@latest add @remocn/ink-underline","docs":"https://remocn.dev/docs/typography/ink-underline","source":"https://remocn.dev/r/ink-underline.json","license":"MIT","runs":"local"},{"slug":"remocn.inline-highlight","name":"inline-highlight","title":"Inline Highlight","summary":"Animates one word inside a sentence from a base color to a brand color.","registry":"remocn","framework":"remotion","layer":"primitive","category":"annotations","also":["text-effects"],"tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"before","type":"string"},{"id":"highlight","type":"string"},{"id":"after","type":"string"},{"id":"baseColor","type":"color"},{"id":"highlightColor","type":"color"},{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/inline-highlight","docs":"https://remocn.dev/docs/typography/inline-highlight","source":"https://remocn.dev/r/inline-highlight.json","license":"MIT","runs":"local"},{"slug":"remocn.inline-pill-takeover","name":"inline-pill-takeover","title":"Inline Pill Takeover","summary":"A clipped pill expands inside a sentence, physically pushes the surrounding words apart, removes them through blur and takes over the frame with a fast camera punch-in.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"before","type":"string"},{"id":"insert","type":"string"},{"id":"after","type":"string"},{"id":"fontSize","type":"number"},{"id":"pillWidth","type":"number"},{"id":"expandFrames","type":"number"},{"id":"pillRevealHeightScale","type":"number"},{"id":"pillGrowAt","type":"number"},{"id":"pillGrowFrames","type":"number"},{"id":"pillGrowWidthScale","type":"number"},{"id":"pillGrowHeightScale","type":"number"},{"id":"outerExitFrames","type":"number"},{"id":"takeoverAt","type":"number"},{"id":"takeoverScale","type":"number"},{"id":"blur","type":"number"},{"id":"color","type":"color"},{"id":"pillColor","type":"color"},{"id":"pillTextColor","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/inline-pill-takeover","docs":"https://remocn.dev/docs/typography/inline-pill-takeover","source":"https://remocn.dev/r/inline-pill-takeover.json","license":"MIT","runs":"local"},{"slug":"remocn.inline-word-roll","name":"inline-word-roll","title":"Inline Word Roll","summary":"Roll through words beside a fixed prefix with accelerating timing and smoothly centered width.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"prefix","type":"string"},{"id":"text","type":"string"},{"id":"suffix","type":"string"},{"id":"fontSize","type":"number"},{"id":"interval","type":"number"},{"id":"acceleration","type":"number"},{"id":"transitionFrames","type":"number"},{"id":"color","type":"color"}],"install":"npx shadcn@latest add @remocn/inline-word-roll","docs":"https://remocn.dev/docs/typography/inline-word-roll","source":"https://remocn.dev/r/inline-word-roll.json","license":"MIT","runs":"local"},{"slug":"remocn.input","name":"input","title":"UI Input","summary":"A text input whose idle/hover/active/typing/invalid state is a pure function of the timeline; the focus ring, border, caret, and value reveal are keyframed presets.","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","text-effects","entrances"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"placeholder","type":"string"},{"id":"value","type":"string"},{"id":"size","type":"string"},{"id":"state","type":"string"},{"id":"primary","type":"string"}],"deps":["remocn-ui","caret"],"install":"npx shadcn@latest add @remocn/input","docs":"https://remocn.dev/docs/ui/components/input","source":"https://remocn.dev/r/input.json","license":"MIT","runs":"local"},{"slug":"remocn.iris-wipe","name":"iris-wipe","title":"Iris Wipe","summary":"An old-cartoon iris closes on the subject, holds a beat as a dot, then opens on the next scene.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"color","type":"color"},{"id":"centerX","type":"number"},{"id":"centerY","type":"number"},{"id":"holdRadius","type":"number"}],"install":"npx shadcn@latest add @remocn/iris-wipe","docs":"https://remocn.dev/docs/transitions/iris-wipe","source":"https://remocn.dev/r/iris-wipe.json","license":"MIT","runs":"local"},{"slug":"remocn.isometric-build","name":"isometric-build","title":"Isometric Build","summary":"An isometric tile grid springs up row by row into a stepped block sculpture with one accent tower, then holds.","registry":"remocn","framework":"remotion","layer":"component","category":"stats","also":["entrances"],"tags":["motion-graphics"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"grid","type":"number"},{"id":"maxHeight","type":"number"},{"id":"stagger","type":"number"},{"id":"gap","type":"number"},{"id":"floors","type":"boolean"},{"id":"seed","type":"number"},{"id":"background","type":"color"},{"id":"color","type":"color"},{"id":"accent","type":"color"}],"install":"npx shadcn@latest add @remocn/isometric-build","docs":"https://remocn.dev/docs/motion-graphics/isometric-build","source":"https://remocn.dev/r/isometric-build.json","license":"MIT","runs":"local"},{"slug":"remocn.keystroke","name":"keystroke","title":"Keystroke","summary":"Physical keycaps rise in for each shortcut, press in real order with the modifiers held while the letter taps, spring back with a small capped overshoot, and leave after an idle hold…","registry":"remocn","framework":"remotion","layer":"primitive","category":"cursors","also":["steps","mock-ui","text-effects"],"tags":["effects"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"platform","type":"string"},{"id":"theme","type":"string"},{"id":"accent","type":"color"},{"id":"size","type":"number"},{"id":"linger","type":"number"},{"id":"x","type":"number"},{"id":"y","type":"number"}],"install":"npx shadcn@latest add @remocn/keystroke","docs":"https://remocn.dev/docs/effects/keystroke","source":"https://remocn.dev/r/keystroke.json","license":"MIT","runs":"local"},{"slug":"remocn.kinetic-center-build","name":"kinetic-center-build","title":"Kinetic Center Build","summary":"A word appears in the center; each new word enters from the right and pushes the line until the full phrase locks centered.","registry":"remocn","framework":"remotion","layer":"primitive","category":"kinetic-type","also":["text-effects"],"tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"entryOffset","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/kinetic-center-build","docs":"https://remocn.dev/docs/typography/kinetic-center-build","source":"https://remocn.dev/r/kinetic-center-build.json","license":"MIT","runs":"local"},{"slug":"remocn.kinetic-morph-text","name":"kinetic-morph-text","title":"Kinetic Morph Text","summary":"Letters lift, rotate, and softly reshape into editable phrases with sampled outline trails.","registry":"remocn","framework":"remotion","layer":"primitive","category":"kinetic-type","also":["text-effects"],"tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"string"},{"id":"spread","type":"number"},{"id":"rotation","type":"number"},{"id":"morph","type":"number"},{"id":"trails","type":"number"},{"id":"transitionFrames","type":"number"},{"id":"holdFrames","type":"number"},{"id":"loop","type":"boolean"},{"id":"color","type":"color"},{"id":"backgroundColor","type":"color"}],"install":"npx shadcn@latest add @remocn/kinetic-morph-text","docs":"https://remocn.dev/docs/typography/kinetic-morph-text","source":"https://remocn.dev/r/kinetic-morph-text.json","license":"MIT","runs":"local"},{"slug":"remocn.kinetic-warp","name":"kinetic-warp","title":"Kinetic Warp","summary":"A coarse mesh warp bends a whole word in staccato beats, one axis per keyframe.","registry":"remocn","framework":"remotion","layer":"primitive","category":"kinetic-type","also":["text-effects"],"tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"textColor","type":"color"},{"id":"fontFamily","type":"string"},{"id":"fontWeight","type":"string"},{"id":"fontSize","type":"number"},{"id":"layerScale","type":"number"},{"id":"keyframeStride","type":"number"}],"install":"npx shadcn@latest add @remocn/kinetic-warp","docs":"https://remocn.dev/docs/typography/kinetic-warp","source":"https://remocn.dev/r/kinetic-warp.json","license":"MIT","runs":"local"},{"slug":"remocn.launch-anything","name":"launch-anything","title":"Product Showcase","summary":"An independent 26.7-second editorial product film with forest-green accents, original photography, seven editable demos, and geometric marks.","registry":"remocn","framework":"remotion","layer":"template","category":"showcases","also":["stats","galleries"],"tags":["templates"],"author":"Kapish Dima","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":26.7,"slots":[{"id":"opening","type":"string"},{"id":"subject","type":"string"},{"id":"brandUrl","type":"string"},{"id":"accentColor","type":"color"}],"deps":["shader-text-reveal"],"install":"npx shadcn@latest add @remocn/launch-anything","docs":"https://remocn.dev/docs/templates/launch-anything","source":"https://remocn.dev/r/launch-anything.json","license":"MIT","runs":"local"},{"slug":"remocn.lens-zoom","name":"lens-zoom","title":"Lens Zoom","summary":"A hard cut disguised as a lens punch-in: barrel distortion, zoom blur, chromatic split and camera shake around the splice.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"lensSteps","type":"number"},{"id":"blurSamples","type":"number"},{"id":"shakeAmount","type":"number"},{"id":"shakeTranslatePx","type":"number"}],"install":"npx shadcn@latest add @remocn/lens-zoom","docs":"https://remocn.dev/docs/transitions/lens-zoom","source":"https://remocn.dev/r/lens-zoom.json","license":"MIT","runs":"local"},{"slug":"remocn.life-grid","name":"life-grid","title":"Life Grid","summary":"Conway's Game of Life plays out on a seeded grid, with newborn cells flashing in the accent.","registry":"remocn","framework":"remotion","layer":"component","category":"generative","tags":["motion-graphics"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"cols","type":"number"},{"id":"density","type":"number"},{"id":"framesPerGeneration","type":"number"},{"id":"gap","type":"number"},{"id":"showGrid","type":"boolean"},{"id":"seed","type":"number"},{"id":"background","type":"color"},{"id":"color","type":"color"},{"id":"accent","type":"color"}],"install":"npx shadcn@latest add @remocn/life-grid","docs":"https://remocn.dev/docs/motion-graphics/life-grid","source":"https://remocn.dev/r/life-grid.json","license":"MIT","runs":"local"},{"slug":"remocn.light-leak","name":"light-leak","title":"Light Leak","summary":"A warm analog light leak drifts in from an edge and blows the frame out to near-white at the cut, then cools off to reveal the next scene.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"origin","type":"string"},{"id":"intensity","type":"number"},{"id":"leakColor","type":"color"},{"id":"blowoutColor","type":"color"}],"install":"npx shadcn@latest add @remocn/light-leak","docs":"https://remocn.dev/docs/transitions/light-leak","source":"https://remocn.dev/r/light-leak.json","license":"MIT","runs":"local"},{"slug":"remocn.line-boil","name":"line-boil","title":"Line Boil","summary":"A hand-drawn outline boils like a cel animation, redrawn every few frames with a varying pen weight, then fills with color while it keeps boiling.","registry":"remocn","framework":"remotion","layer":"primitive","category":"filters","tags":["graphic-looks"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"boilEvery","type":"number"},{"id":"drawings","type":"number"},{"id":"amplitude","type":"number"},{"id":"strokeWidth","type":"number"},{"id":"size","type":"number"},{"id":"line","type":"string"},{"id":"fill","type":"string"},{"id":"background","type":"color"}],"install":"npx shadcn@latest add @remocn/line-boil","docs":"https://remocn.dev/docs/graphic-looks/line-boil","source":"https://remocn.dev/r/line-boil.json","license":"MIT","runs":"local"},{"slug":"remocn.line-by-line-slide","name":"line-by-line-slide","title":"Line-by-Line Slide","summary":"Each line enters from the left with a staggered slide and exits to the right for a flowing paragraph reveal.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"distance","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/line-by-line-slide","docs":"https://remocn.dev/docs/typography/line-by-line-slide","source":"https://remocn.dev/r/line-by-line-slide.json","license":"MIT","runs":"local"},{"slug":"remocn.liquid-fill","name":"liquid-fill","title":"Liquid Fill","summary":"A drop falls into an outlined mark and liquid rises with a sloshing, damping surface and bubbles until the mark is solid.","registry":"remocn","framework":"remotion","layer":"block","category":"logos","tags":["logo-stings"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":2.6,"slots":[{"id":"liquidColor","type":"color"},{"id":"outlineColor","type":"color"},{"id":"bubbleColor","type":"color"},{"id":"backgroundColor","type":"color"}],"install":"npx shadcn@latest add @remocn/liquid-fill","docs":"https://remocn.dev/docs/logo-stings/liquid-fill","source":"https://remocn.dev/r/liquid-fill.json","license":"MIT","runs":"local"},{"slug":"remocn.live-code-compilation","name":"live-code-compilation","title":"Live Code Compilation","summary":"Split-screen where typed code on the left snaps a live UI preview on the right, HMR-style.","registry":"remocn","framework":"remotion","layer":"block","category":"code","tags":["compositions"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":8.7,"slots":[{"id":"accentColor","type":"color"}],"install":"npx shadcn@latest add @remocn/live-code-compilation","docs":"https://remocn.dev/docs/compositions/live-code-compilation","source":"https://remocn.dev/r/live-code-compilation.json","license":"MIT","runs":"local"},{"slug":"remocn.logo-enter","name":"logo-enter","title":"Logo Enter","summary":"A stacked group of round brand chips that spring in one-by-one, then hold. Swap the logos to feature any set of marks. Horizontal or vertical stacking.","registry":"remocn","framework":"remotion","layer":"component","category":"social-proof","tags":["social"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"diameter","type":"number"},{"id":"overlap","type":"number"},{"id":"ringColor","type":"color"},{"id":"orientation","type":"string"},{"id":"stagger","type":"number"}],"install":"npx shadcn@latest add @remocn/logo-enter","docs":"https://remocn.dev/docs/social/logo-enter","source":"https://remocn.dev/r/logo-enter.json","license":"MIT","runs":"local"},{"slug":"remocn.long-shadow","name":"long-shadow","title":"Long Shadow","summary":"A flat icon casts a long shadow to the frame edge, then the light swings and the shadow sweeps around on a spring.","registry":"remocn","framework":"remotion","layer":"primitive","category":"entrances","tags":["graphic-looks"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"angleFrom","type":"number"},{"id":"angleTo","type":"number"},{"id":"fade","type":"number"},{"id":"shadowColor","type":"color"},{"id":"background","type":"color"},{"id":"iconColor","type":"color"},{"id":"checkColor","type":"color"}],"install":"npx shadcn@latest add @remocn/long-shadow","docs":"https://remocn.dev/docs/graphic-looks/long-shadow","source":"https://remocn.dev/r/long-shadow.json","license":"MIT","runs":"local"},{"slug":"remocn.marker-highlight","name":"marker-highlight","title":"Marker Highlight","summary":"Colored marker block draws behind a phrase as the text color shifts.","registry":"remocn","framework":"remotion","layer":"primitive","category":"annotations","also":["text-effects"],"tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"before","type":"string"},{"id":"highlight","type":"string"},{"id":"after","type":"string"},{"id":"markerColor","type":"color"},{"id":"baseColor","type":"color"},{"id":"highlightedTextColor","type":"color"},{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/marker-highlight","docs":"https://remocn.dev/docs/typography/marker-highlight","source":"https://remocn.dev/r/marker-highlight.json","license":"MIT","runs":"local"},{"slug":"remocn.mask-reveal-up","name":"mask-reveal-up","title":"Mask Reveal Up","summary":"Lines reveal upward with a soft masked feel and compact stagger.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"distance","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/mask-reveal-up","docs":"https://remocn.dev/docs/typography/mask-reveal-up","source":"https://remocn.dev/r/mask-reveal-up.json","license":"MIT","runs":"local"},{"slug":"remocn.matrix-decode","name":"matrix-decode","title":"Matrix Decode","summary":"Random scramble resolves left-to-right into the target text.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"charset","type":"string"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"},{"id":"revealDuration","type":"number"}],"install":"npx shadcn@latest add @remocn/matrix-decode","docs":"https://remocn.dev/docs/typography/matrix-decode","source":"https://remocn.dev/r/matrix-decode.json","license":"MIT","runs":"local"},{"slug":"remocn.message-bubble","name":"message-bubble","title":"UI Message Bubble","summary":"A chat message bubble whose hidden/visible state is a pure function of the timeline. The renderer is a pure function of a MessageBubbleStyle (opacity, translateY…","registry":"remocn","framework":"remotion","layer":"component","category":"chats","also":["mock-ui","steps","transitions"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"variant","type":"string"},{"id":"reaction","type":"string"},{"id":"state","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/message-bubble","docs":"https://remocn.dev/docs/ui/components/message-bubble","source":"https://remocn.dev/r/message-bubble.json","license":"MIT","runs":"local"},{"slug":"remocn.micro-scale-fade","name":"micro-scale-fade","title":"Micro Scale Fade","summary":"A calm, tiny scale pop used as subtle premium polish for labels and headings.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"scaleFrom","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/micro-scale-fade","docs":"https://remocn.dev/docs/typography/micro-scale-fade","source":"https://remocn.dev/r/micro-scale-fade.json","license":"MIT","runs":"local"},{"slug":"remocn.mondrian-split","name":"mondrian-split","title":"Mondrian Split","summary":"Black lines cut the frame into a seeded De Stijl grid, primaries wipe into its cells, the grid reflows like rubber, and one cell pushes its own lines out past the edges to become a clean color field or the next scene.","registry":"remocn","framework":"remotion","layer":"component","category":"transitions","tags":["motion-graphics"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"seed","type":"number"},{"id":"splits","type":"number"},{"id":"lineWeight","type":"number"},{"id":"expandCell","type":"number"},{"id":"lineColor","type":"color"},{"id":"redColor","type":"color"},{"id":"yellowColor","type":"color"},{"id":"blueColor","type":"color"},{"id":"fieldColor","type":"color"}],"install":"npx shadcn@latest add @remocn/mondrian-split","docs":"https://remocn.dev/docs/motion-graphics/mondrian-split","source":"https://remocn.dev/r/mondrian-split.json","license":"MIT","runs":"local"},{"slug":"remocn.neon-sign","name":"neon-sign","title":"Neon Sign","summary":"A glass neon tube stutters alive segment by segment with a hot white core and wall glow, buzzes off once, then holds lit.","registry":"remocn","framework":"remotion","layer":"block","category":"logos","tags":["logo-stings"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":2.3,"slots":[{"id":"strokeWidth","type":"number"},{"id":"fit","type":"number"},{"id":"seed","type":"number"},{"id":"color","type":"color"},{"id":"glowColor","type":"color"},{"id":"tubeColor","type":"color"},{"id":"coreColor","type":"color"},{"id":"backgroundColor","type":"color"}],"install":"npx shadcn@latest add @remocn/neon-sign","docs":"https://remocn.dev/docs/logo-stings/neon-sign","source":"https://remocn.dev/r/neon-sign.json","license":"MIT","runs":"local"},{"slug":"remocn.number-wheel","name":"number-wheel","title":"Number Wheel","summary":"Mechanical odometer that rolls an integer up or down to its target, direction inferred from the values.","registry":"remocn","framework":"remotion","layer":"primitive","category":"stats","also":["text-effects"],"tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"from","type":"number"},{"id":"to","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"}],"install":"npx shadcn@latest add @remocn/number-wheel","docs":"https://remocn.dev/docs/typography/number-wheel","source":"https://remocn.dev/r/number-wheel.json","license":"MIT","runs":"local"},{"slug":"remocn.onboarding-stepper-flow","name":"onboarding-stepper-flow","title":"UI Onboarding Stepper Flow","summary":"A multi-step onboarding composition: a horizontal stepper advances through panels of input, radio, and switch fields, finishing on a Finish button that runs to success…","registry":"remocn","framework":"remotion","layer":"component","category":"steps","also":["mock-ui","intros","transitions"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","deps":["remocn-ui","stepper","input","radio","switch","button"],"install":"npx shadcn@latest add @remocn/onboarding-stepper-flow","docs":"https://remocn.dev/docs/ui/blocks/onboarding-stepper-flow","source":"https://remocn.dev/r/onboarding-stepper-flow.json","license":"MIT","runs":"local"},{"slug":"remocn.opencode","name":"opencode","title":"OpenCode","summary":"Animated OpenCode TUI welcome screen — two-tone wordmark, an input box with a blue accent bar that types a query, a model status line, and command hints. Dark/light themes.","registry":"remocn","framework":"remotion","layer":"component","category":"code","also":["mock-ui"],"tags":["ai"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"placeholder","type":"string"},{"id":"query","type":"object"},{"id":"agentName","type":"string"},{"id":"modelName","type":"string"},{"id":"provider","type":"string"},{"id":"accentColor","type":"color"}],"deps":["caret","remocn-ui"],"install":"npx shadcn@latest add @remocn/opencode","docs":"https://remocn.dev/docs/ai/opencode","source":"https://remocn.dev/r/opencode.json","license":"MIT","runs":"local"},{"slug":"remocn.orbit-lock","name":"orbit-lock","title":"Orbit Lock","summary":"Three moons ride tilted, shrinking orbits into a red core that bursts into a ring flash and springs the logo into place.","registry":"remocn","framework":"remotion","layer":"block","category":"logos","tags":["logo-stings"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":2.6,"slots":[{"id":"moons","type":"number"},{"id":"tilt","type":"number"},{"id":"coreColor","type":"color"},{"id":"moonColor","type":"color"},{"id":"flashColor","type":"color"},{"id":"backgroundColor","type":"color"}],"install":"npx shadcn@latest add @remocn/orbit-lock","docs":"https://remocn.dev/docs/logo-stings/orbit-lock","source":"https://remocn.dev/r/orbit-lock.json","license":"MIT","runs":"local"},{"slug":"remocn.outline-fill-track-text","name":"outline-fill-track-text","title":"Outline Fill Track Text","summary":"A rising lead word gives way to an outlined value that fills from left to right while both travel on one continuous track.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"leadText","type":"string"},{"id":"valueText","type":"string"},{"id":"fontSize","type":"number"},{"id":"enterOffset","type":"number"},{"id":"anchorOffsetX","type":"number"},{"id":"trackDistance","type":"number"},{"id":"wordGap","type":"number"},{"id":"endPadding","type":"number"},{"id":"fillDuration","type":"number"},{"id":"outlineWidth","type":"number"},{"id":"color","type":"color"},{"id":"outlineColor","type":"color"},{"id":"backgroundColor","type":"color"},{"id":"glowColor","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/outline-fill-track-text","docs":"https://remocn.dev/docs/typography/outline-fill-track-text","source":"https://remocn.dev/r/outline-fill-track-text.json","license":"MIT","runs":"local"},{"slug":"remocn.outline-trace","name":"outline-trace","title":"Outline Trace","summary":"Every glyph contour draws itself as a stroke, letter by letter, then the fill wipes up inside each letter and the stroke fades into it.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"color","type":"color"},{"id":"strokeColor","type":"color"},{"id":"fontSize","type":"number"},{"id":"strokeWidth","type":"number"},{"id":"stagger","type":"number"},{"id":"fill","type":"boolean"},{"id":"keepStroke","type":"boolean"}],"install":"npx shadcn@latest add @remocn/outline-trace","docs":"https://remocn.dev/docs/typography/outline-trace","source":"https://remocn.dev/r/outline-trace.json","license":"MIT","runs":"local"},{"slug":"remocn.page-turn","name":"page-turn","title":"Page Turn","summary":"The exiting scene swings up and away like a notebook page in stop-motion poses, staying above the scene it reveals.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"angle","type":"number"},{"id":"poses","type":"number"}],"install":"npx shadcn@latest add @remocn/page-turn","docs":"https://remocn.dev/docs/transitions/page-turn","source":"https://remocn.dev/r/page-turn.json","license":"MIT","runs":"local"},{"slug":"remocn.paper-sticker","name":"paper-sticker","title":"Paper Sticker","summary":"A taped paper chip that slaps onto the scene over two stop-motion poses, keeping a hand-placed tilt and per-pose wobble.","registry":"remocn","framework":"remotion","layer":"block","category":"icons","also":["hud","textures"],"tags":["ui-blocks"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":4,"slots":[{"id":"at","type":"number"},{"id":"padding","type":"string"},{"id":"background","type":"color"},{"id":"maxTilt","type":"number"},{"id":"seed","type":"string"},{"id":"step","type":"number"}],"deps":["stop-motion"],"install":"npx shadcn@latest add @remocn/paper-sticker","docs":"https://remocn.dev/docs/ui-blocks/paper-sticker","source":"https://remocn.dev/r/paper-sticker.json","license":"MIT","runs":"local"},{"slug":"remocn.paper-tear","name":"paper-tear","title":"Paper Tear","summary":"A jagged rip runs down the frame, then both halves peel apart on a spring with white fibrous torn edges, revealing the scene underneath.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"impact","type":"number"},{"id":"roughness","type":"number"},{"id":"seed","type":"number"},{"id":"edgeColor","type":"color"}],"install":"npx shadcn@latest add @remocn/paper-tear","docs":"https://remocn.dev/docs/transitions/paper-tear","source":"https://remocn.dev/r/paper-tear.json","license":"MIT","runs":"local"},{"slug":"remocn.paper-wobble","name":"paper-wobble","title":"Paper Wobble","summary":"Per-pose reshoot jitter that makes any content feel hand-placed on a desk.","registry":"remocn","framework":"remotion","layer":"primitive","category":"textures","tags":["effects"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"amp","type":"number"},{"id":"rotAmp","type":"number"},{"id":"seed","type":"string"},{"id":"step","type":"number"}],"deps":["stop-motion"],"install":"npx shadcn@latest add @remocn/paper-wobble","docs":"https://remocn.dev/docs/effects/paper-wobble","source":"https://remocn.dev/r/paper-wobble.json","license":"MIT","runs":"local"},{"slug":"remocn.parallax-depth","name":"parallax-depth","title":"Parallax Depth","summary":"A flat landscape built from depth layers trucks sideways with a gentle push-in, near layers sliding faster than far ones.","registry":"remocn","framework":"remotion","layer":"primitive","category":"camera","tags":["camera"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distance","type":"number"},{"id":"push","type":"number"},{"id":"direction","type":"string"},{"id":"seed","type":"number"},{"id":"skyColor","type":"color"},{"id":"sunColor","type":"color"}],"install":"npx shadcn@latest add @remocn/parallax-depth","docs":"https://remocn.dev/docs/camera/parallax-depth","source":"https://remocn.dev/r/parallax-depth.json","license":"MIT","runs":"local"},{"slug":"remocn.particle-dissolve","name":"particle-dissolve","title":"Particle Dissolve","summary":"The frame is ground into drifting grey dust whose specks carry real fragments of the picture, and the next scene coalesces back out of the same dust.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"particleSize","type":"number"},{"id":"scatter","type":"number"},{"id":"shimmer","type":"number"},{"id":"aberration","type":"number"},{"id":"direction","type":"string"},{"id":"stagger","type":"number"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/particle-dissolve","docs":"https://remocn.dev/docs/transitions/particle-dissolve","source":"https://remocn.dev/r/particle-dissolve.json","license":"MIT","runs":"local"},{"slug":"remocn.path-ride","name":"path-ride","title":"Path Ride","summary":"A line draws itself along a curve with the text riding behind its head, then the curve pulls taut and the text settles on a straight, centered baseline.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"path","type":"string"},{"id":"color","type":"color"},{"id":"lineColor","type":"color"},{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"lineWidth","type":"number"}],"install":"npx shadcn@latest add @remocn/path-ride","docs":"https://remocn.dev/docs/typography/path-ride","source":"https://remocn.dev/r/path-ride.json","license":"MIT","runs":"local"},{"slug":"remocn.pendulum-wave","name":"pendulum-wave","title":"Pendulum Wave","summary":"A row of pendulums with tuned periods drifts from a straight line into waves and braids, then realigns for a seamless loop.","registry":"remocn","framework":"remotion","layer":"component","category":"particles","tags":["motion-graphics"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"count","type":"number"},{"id":"cycles","type":"number"},{"id":"loopFrames","type":"number"},{"id":"showGuides","type":"boolean"},{"id":"background","type":"color"},{"id":"color","type":"color"},{"id":"accent","type":"color"}],"install":"npx shadcn@latest add @remocn/pendulum-wave","docs":"https://remocn.dev/docs/motion-graphics/pendulum-wave","source":"https://remocn.dev/r/pendulum-wave.json","license":"MIT","runs":"local"},{"slug":"remocn.per-character-rise","name":"per-character-rise","title":"Per Character Rise","summary":"Letters slide up from below with no blur — crisp, deliberate, kinetic.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","also":["kinetic-type"],"tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"distance","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/per-character-rise","docs":"https://remocn.dev/docs/typography/per-character-rise","source":"https://remocn.dev/r/per-character-rise.json","license":"MIT","runs":"local"},{"slug":"remocn.per-word-crossfade","name":"per-word-crossfade","title":"Per-Word Crossfade","summary":"Words gently fade into place one after another, with a short vertical drift for a calm keynote rhythm.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fromText","type":"string"},{"id":"toText","type":"string"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/per-word-crossfade","docs":"https://remocn.dev/docs/typography/per-word-crossfade","source":"https://remocn.dev/r/per-word-crossfade.json","license":"MIT","runs":"local"},{"slug":"remocn.period-drop","name":"period-drop","title":"Period Drop","summary":"A word rises out of its line, then a colored dot falls from above the frame, bounces with squash and stretch, and settles as the period.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"color","type":"color"},{"id":"dotColor","type":"color"},{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"dotSize","type":"number"}],"install":"npx shadcn@latest add @remocn/period-drop","docs":"https://remocn.dev/docs/typography/period-drop","source":"https://remocn.dev/r/period-drop.json","license":"MIT","runs":"local"},{"slug":"remocn.perlin-dissolve","name":"perlin-dissolve","title":"Perlin Dissolve","summary":"A perlin-noise shader transition that sweeps its noise threshold to dissolve one scene into the next.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"colorFront","type":"color"},{"id":"colorBack","type":"color"},{"id":"softness","type":"number"}],"deps":["shader-perlin-noise"],"install":"npx shadcn@latest add @remocn/perlin-dissolve","docs":"https://remocn.dev/docs/transitions/perlin-dissolve","source":"https://remocn.dev/r/perlin-dissolve.json","license":"MIT","runs":"local"},{"slug":"remocn.perspective-marquee","name":"perspective-marquee","title":"Perspective Marquee","summary":"A 3D-tilted infinite marquee with depth-of-field blur on items rolling toward the horizon.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"},{"id":"pixelsPerFrame","type":"number"},{"id":"rotateY","type":"number"},{"id":"rotateX","type":"number"},{"id":"perspective","type":"number"},{"id":"fadeColor","type":"color"}],"install":"npx shadcn@latest add @remocn/perspective-marquee","docs":"https://remocn.dev/docs/typography/perspective-marquee","source":"https://remocn.dev/r/perspective-marquee.json","license":"MIT","runs":"local"},{"slug":"remocn.perspective-squeeze","name":"perspective-squeeze","title":"Perspective Squeeze","summary":"Two lines of heavy type endlessly trade height while corner-pinned perspective bends the flat stack into receding planes.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"upperText","type":"string"},{"id":"lowerText","type":"string"},{"id":"fill","type":"string"},{"id":"upperFontFamily","type":"string"},{"id":"lowerFontFamily","type":"string"},{"id":"lineGap","type":"number"}],"install":"npx shadcn@latest add @remocn/perspective-squeeze","docs":"https://remocn.dev/docs/typography/perspective-squeeze","source":"https://remocn.dev/r/perspective-squeeze.json","license":"MIT","runs":"local"},{"slug":"remocn.phyllotaxis","name":"phyllotaxis","title":"Phyllotaxis","summary":"Seeds spiral out at the golden angle into a sunflower head, then an accent Fibonacci arm pulses outward.","registry":"remocn","framework":"remotion","layer":"component","category":"generative","tags":["motion-graphics"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"count","type":"number"},{"id":"size","type":"number"},{"id":"arm","type":"number"},{"id":"growFrames","type":"number"},{"id":"pulseFrames","type":"number"},{"id":"rotation","type":"number"},{"id":"background","type":"color"},{"id":"color","type":"color"},{"id":"accent","type":"color"}],"install":"npx shadcn@latest add @remocn/phyllotaxis","docs":"https://remocn.dev/docs/motion-graphics/phyllotaxis","source":"https://remocn.dev/r/phyllotaxis.json","license":"MIT","runs":"local"},{"slug":"remocn.pixel-sort","name":"pixel-sort","title":"Pixel Sort","summary":"The scene melts into seeded vertical streaks like glitch-art pixel sorting, then the next scene's columns fall in and snap into place.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"columns","type":"number"},{"id":"seed","type":"number"},{"id":"streakColor","type":"color"}],"install":"npx shadcn@latest add @remocn/pixel-sort","docs":"https://remocn.dev/docs/transitions/pixel-sort","source":"https://remocn.dev/r/pixel-sort.json","license":"MIT","runs":"local"},{"slug":"remocn.pixelate-region","name":"pixelate-region","title":"Pixelate Region","summary":"Cover rectangles of a scene with an opaque mosaic while the rest passes through untouched — redact keys, addresses and personal data before a demo goes out.","registry":"remocn","framework":"remotion","layer":"primitive","category":"filters","tags":["filters"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"cellSize","type":"number"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/pixelate-region","docs":"https://remocn.dev/docs/filters/components/pixelate-region","source":"https://remocn.dev/r/pixelate-region.json","license":"MIT","runs":"local"},{"slug":"remocn.polaroid","name":"polaroid","title":"Polaroid","summary":"An instant-photo frame with a handwritten caption for video, images, or live compositions.","registry":"remocn","framework":"remotion","layer":"block","category":"galleries","also":["captions","annotations"],"tags":["ui-blocks"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":5,"slots":[{"id":"caption","type":"string"},{"id":"captionAt","type":"number"},{"id":"width","type":"number"},{"id":"captionSize","type":"number"},{"id":"step","type":"number"}],"deps":["stop-motion","handwrite"],"install":"npx shadcn@latest add @remocn/polaroid","docs":"https://remocn.dev/docs/ui-blocks/polaroid","source":"https://remocn.dev/r/polaroid.json","license":"MIT","runs":"local"},{"slug":"remocn.popover","name":"popover","title":"UI Popover","summary":"A popover/hover-card whose opened/closed state is a pure function of the timeline. The Popover renderer is a pure function of a PopoverStyle (opacity, scale…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["entrances","steps","title-cards"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"title","type":"string"},{"id":"description","type":"string"},{"id":"side","type":"string"},{"id":"width","type":"number"},{"id":"state","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/popover","docs":"https://remocn.dev/docs/ui/components/popover","source":"https://remocn.dev/r/popover.json","license":"MIT","runs":"local"},{"slug":"remocn.progress","name":"progress","title":"UI Progress","summary":"A progress bar whose fill is a pure function of a numeric value channel (value-channel deviation). The Progress renderer takes a clamped 0–100 value; useProgressTransition reads the frame and eases the fill between…","registry":"remocn","framework":"remotion","layer":"component","category":"timers","also":["mock-ui","stats","steps"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"value","type":"number"},{"id":"width","type":"number"},{"id":"showLabel","type":"boolean"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/progress","docs":"https://remocn.dev/docs/ui/components/progress","source":"https://remocn.dev/r/progress.json","license":"MIT","runs":"local"},{"slug":"remocn.push-through","name":"push-through","title":"Push Through","summary":"A dolly transition that blows the outgoing scene past the camera while the next one approaches from the depth.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"zoom","type":"number"},{"id":"blur","type":"number"}],"install":"npx shadcn@latest add @remocn/push-through","docs":"https://remocn.dev/docs/transitions/push-through","source":"https://remocn.dev/r/push-through.json","license":"MIT","runs":"local"},{"slug":"remocn.puzzle-snap","name":"puzzle-snap","title":"Puzzle Snap","summary":"Geometric pieces spin in from scattered positions and magnet-snap into a mark with a spark burst, then the mark slides aside for the wordmark.","registry":"remocn","framework":"remotion","layer":"block","category":"logos","tags":["logo-stings"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":2.2,"slots":[{"id":"square","type":"boolean"},{"id":"seed","type":"number"},{"id":"primaryColor","type":"color"},{"id":"secondaryColor","type":"color"},{"id":"sparkColor","type":"color"},{"id":"backgroundColor","type":"color"}],"install":"npx shadcn@latest add @remocn/puzzle-snap","docs":"https://remocn.dev/docs/logo-stings/puzzle-snap","source":"https://remocn.dev/r/puzzle-snap.json","license":"MIT","runs":"local"},{"slug":"remocn.radial-burst","name":"radial-burst","title":"Radial Burst","summary":"Sculptural ribbons twist into a tilted ring and sweep outward through contour echoes for an expressive product introduction.","registry":"remocn","framework":"remotion","layer":"primitive","category":"particles","also":["entrances"],"tags":["effects"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"segments","type":"number"},{"id":"radius","type":"number"},{"id":"thickness","type":"number"},{"id":"rotation","type":"number"},{"id":"intensity","type":"number"},{"id":"twist","type":"number"},{"id":"echoes","type":"number"},{"id":"color","type":"color"},{"id":"accentColor","type":"color"},{"id":"backgroundColor","type":"color"},{"id":"loop","type":"boolean"}],"install":"npx shadcn@latest add @remocn/radial-burst","docs":"https://remocn.dev/docs/effects/radial-burst","source":"https://remocn.dev/r/radial-burst.json","license":"MIT","runs":"local"},{"slug":"remocn.radio","name":"radio","title":"UI Radio","summary":"A radio whose checked/unchecked state is a pure function of the timeline; the ring border and inner dot pop are keyframed presets.","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","entrances"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"label","type":"string"},{"id":"size","type":"string"},{"id":"state","type":"string"},{"id":"primary","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/radio","docs":"https://remocn.dev/docs/ui/components/radio","source":"https://remocn.dev/r/radio.json","license":"MIT","runs":"local"},{"slug":"remocn.reel","name":"reel","title":"Reel","summary":"A fixed centered card where images stack on the z-axis and each blooms open over the last via a centre-out mask.","registry":"remocn","framework":"remotion","layer":"block","category":"galleries","tags":["ui-blocks"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":5.3,"slots":[{"id":"width","type":"number"},{"id":"height","type":"number"},{"id":"radius","type":"number"},{"id":"step","type":"number"},{"id":"reveal","type":"number"}],"install":"npx shadcn@latest add @remocn/reel","docs":"https://remocn.dev/docs/ui-blocks/reel","source":"https://remocn.dev/r/reel.json","license":"MIT","runs":"local"},{"slug":"remocn.release-teaser","name":"release-teaser","title":"Release Teaser","summary":"A 16-second cinematic release teaser with center-out typography, a procedural dimensional mark, moving edge light, and an independent fictional identity.","registry":"remocn","framework":"remotion","layer":"template","category":"intros","tags":["templates"],"author":"Kapish Dima","canvas":{"w":1920,"h":1080},"aspect":"16:9","slots":[{"id":"brandName","type":"string"},{"id":"release","type":"string"},{"id":"tagline","type":"string"},{"id":"accentColor","type":"color"},{"id":"reducedMotion","type":"boolean"}],"install":"npx shadcn@latest add @remocn/release-teaser","docs":"https://remocn.dev/docs/templates/release-teaser","source":"https://remocn.dev/r/release-teaser.json","license":"MIT","runs":"local"},{"slug":"remocn.remocn-ui","name":"remocn-ui","title":"remocn UI Core","summary":"Shared timeline-fold hook, theme context, and color math for remocn UI primitives.","registry":"remocn","framework":"remotion","layer":"lib","category":"utilities","tags":["ui"],"author":"Kapish Dima","aspect":"any","install":"npx shadcn@latest add @remocn/remocn-ui","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/remocn-ui.json","license":"MIT","runs":"local"},{"slug":"remocn.resizable","name":"resizable","title":"UI Resizable","summary":"Two panels split by a draggable handle, where the split ratio is a numeric channel plus a handle idle/hover/press channel (dual-channel value-channel deviation). The Resizable renderer is pure (clamped 0–1 ratio…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["transitions"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"ratio","type":"number"},{"id":"handleState","type":"string"},{"id":"direction","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/resizable","docs":"https://remocn.dev/docs/ui/components/resizable","source":"https://remocn.dev/r/resizable.json","license":"MIT","runs":"local"},{"slug":"remocn.rgb-glitch-text","name":"rgb-glitch-text","title":"RGB Glitch Text","summary":"Three RGB-offset text copies jitter for a brief glitch window.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"},{"id":"glitchAt","type":"number"},{"id":"glitchDuration","type":"number"},{"id":"intensity","type":"number"},{"id":"seed","type":"string"}],"install":"npx shadcn@latest add @remocn/rgb-glitch-text","docs":"https://remocn.dev/docs/typography/rgb-glitch-text","source":"https://remocn.dev/r/rgb-glitch-text.json","license":"MIT","runs":"local"},{"slug":"remocn.ring-text","name":"ring-text","title":"Ring Text","summary":"Text runs around a tilted 3D band that spins, reading on the near side and mirrored on the far side.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"separator","type":"string"},{"id":"color","type":"color"},{"id":"band","type":"string"},{"id":"radius","type":"number"},{"id":"fontSize","type":"number"},{"id":"tilt","type":"number"},{"id":"roll","type":"number"},{"id":"period","type":"number"}],"install":"npx shadcn@latest add @remocn/ring-text","docs":"https://remocn.dev/docs/typography/ring-text","source":"https://remocn.dev/r/ring-text.json","license":"MIT","runs":"local"},{"slug":"remocn.ripple-zoom","name":"ripple-zoom","title":"Ripple Zoom","summary":"A grain-gradient ripple transition that flies the camera through the center of the rings while the next scene approaches from the depth.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"zoom","type":"number"},{"id":"intensity","type":"number"},{"id":"softness","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-grain-gradient"],"install":"npx shadcn@latest add @remocn/ripple-zoom","docs":"https://remocn.dev/docs/transitions/ripple-zoom","source":"https://remocn.dev/r/ripple-zoom.json","license":"MIT","runs":"local"},{"slug":"remocn.riso-print","name":"riso-print","title":"Riso Print","summary":"A two-ink risograph print: the accent plate slides in off-register, wobbles and settles a hair out of alignment over grainy paper.","registry":"remocn","framework":"remotion","layer":"primitive","category":"textures","tags":["graphic-looks"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"keyInk","type":"color"},{"id":"accentInk","type":"color"},{"id":"paper","type":"string"},{"id":"grain","type":"number"},{"id":"jitter","type":"number"},{"id":"marks","type":"boolean"}],"install":"npx shadcn@latest add @remocn/riso-print","docs":"https://remocn.dev/docs/graphic-looks/riso-print","source":"https://remocn.dev/r/riso-print.json","license":"MIT","runs":"local"},{"slug":"remocn.rolling-number","name":"rolling-number","title":"Rolling Number","summary":"Odometer where every place rolls at its own speed, new places rising into view, settling exactly on the target value.","registry":"remocn","framework":"remotion","layer":"primitive","category":"stats","also":["text-effects"],"tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"from","type":"number"},{"id":"to","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"}],"install":"npx shadcn@latest add @remocn/rolling-number","docs":"https://remocn.dev/docs/typography/rolling-number","source":"https://remocn.dev/r/rolling-number.json","license":"MIT","runs":"local"},{"slug":"remocn.rolodex-flip","name":"rolodex-flip","title":"Rolodex Flip","summary":"Cycles a word through a list of values with a 3D rolodex card flip while an invisible sizer keeps the line width and baseline stable.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"interval","type":"number"},{"id":"flipDuration","type":"number"}],"install":"npx shadcn@latest add @remocn/rolodex-flip","docs":"https://remocn.dev/docs/typography/rolodex-flip","source":"https://remocn.dev/r/rolodex-flip.json","license":"MIT","runs":"local"},{"slug":"remocn.rush-type","name":"rush-type","title":"Rush Type","summary":"A resting white word blasts through vertical scale motion, separating into energy-conserving RGB shutter trails before the next word resolves.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"phrase","type":"string"},{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"string"},{"id":"color","type":"color"},{"id":"backgroundColor","type":"color"},{"id":"verticalStretch","type":"number"},{"id":"chromaticSpread","type":"number"},{"id":"restDuration","type":"number"},{"id":"peakHoldDuration","type":"number"}],"install":"npx shadcn@latest add @remocn/rush-type","docs":"https://remocn.dev/docs/typography/rush-type","source":"https://remocn.dev/r/rush-type.json","license":"MIT","runs":"local"},{"slug":"remocn.scale-down-fade","name":"scale-down-fade","title":"Scale Down Fade","summary":"Subtle premium settle-in with a restrained scale-down fade on exit.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/scale-down-fade","docs":"https://remocn.dev/docs/typography/scale-down-fade","source":"https://remocn.dev/r/scale-down-fade.json","license":"MIT","runs":"local"},{"slug":"remocn.scene-motion","name":"scene-motion","title":"Scene Motion","summary":"The motion vocabulary scene content is built from: an exponential travel curve, a separate opacity ramp, three spring easings, and a compressing stagger.","registry":"remocn","framework":"remotion","layer":"lib","category":"utilities","tags":["remocn"],"author":"Kapish Dima","aspect":"any","install":"npx shadcn@latest add @remocn/scene-motion","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/scene-motion.json","license":"MIT","runs":"local"},{"slug":"remocn.scribble-circle","name":"scribble-circle","title":"Scribble Circle","summary":"A brush circle swept around a region of the frame, opening thin and closing thick, with grain breaking up the dry opening.","registry":"remocn","framework":"remotion","layer":"primitive","category":"annotations","also":["textures"],"tags":["effects"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"laps","type":"number"},{"id":"strokeWidth","type":"number"},{"id":"pressure","type":"number"},{"id":"grain","type":"number"},{"id":"durationSteps","type":"number"},{"id":"color","type":"color"},{"id":"seed","type":"string"},{"id":"step","type":"number"}],"deps":["stop-motion","brush"],"install":"npx shadcn@latest add @remocn/scribble-circle","docs":"https://remocn.dev/docs/effects/scribble-circle","source":"https://remocn.dev/r/scribble-circle.json","license":"MIT","runs":"local"},{"slug":"remocn.search-reveal","name":"search-reveal","title":"Search Reveal","summary":"Expanding construction circles snap into a search pill, type editable text, and reveal an abstract graphic panel.","registry":"remocn","framework":"remotion","layer":"block","category":"mock-ui","also":["entrances","text-effects"],"tags":["ui-blocks"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":3.6,"slots":[{"id":"text","type":"string"},{"id":"fieldWidth","type":"number"},{"id":"fontSize","type":"number"},{"id":"framesPerCharacter","type":"number"},{"id":"showPanel","type":"boolean"},{"id":"showGuides","type":"boolean"},{"id":"color","type":"color"},{"id":"fieldColor","type":"color"},{"id":"ringColor","type":"color"},{"id":"panelColor","type":"color"},{"id":"accentColor","type":"color"},{"id":"backgroundColor","type":"color"},{"id":"reducedMotion","type":"boolean"}],"install":"npx shadcn@latest add @remocn/search-reveal","docs":"https://remocn.dev/docs/ui-blocks/search-reveal","source":"https://remocn.dev/r/search-reveal.json","license":"MIT","runs":"local"},{"slug":"remocn.security-cam","name":"security-cam","title":"Security Cam","summary":"Run a scene through a cheap recorder: macroblocks flatten under a starved bitrate, colour resolution collapses to half the luma, blacks crush and shadows crawl with sensor noise.","registry":"remocn","framework":"remotion","layer":"primitive","category":"filters","also":["generative"],"tags":["filters"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"compression","type":"number"},{"id":"blockSize","type":"number"},{"id":"noise","type":"number"},{"id":"intensity","type":"number"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/security-cam","docs":"https://remocn.dev/docs/filters/components/security-cam","source":"https://remocn.dev/r/security-cam.json","license":"MIT","runs":"local"},{"slug":"remocn.select","name":"select","title":"UI Select","summary":"A select whose opened/closed state is a pure function of the timeline; the trigger reuses the Button primitive and the reveal panel composes SelectItem rows. The panel fade, scale, lift…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","entrances"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"label","type":"string"},{"id":"state","type":"string"},{"id":"selectedIndex","type":"number"},{"id":"highlightedIndex","type":"number"}],"deps":["remocn-ui","button","select-item"],"install":"npx shadcn@latest add @remocn/select","docs":"https://remocn.dev/docs/ui/components/select","source":"https://remocn.dev/r/select.json","license":"MIT","runs":"local"},{"slug":"remocn.select-item","name":"select-item","title":"UI Select Item","summary":"A select option row whose idle/hover/press/selected state is a pure function of the timeline; the row background, label color, and check icon are keyframed presets. Composed inside the Select panel.","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","backgrounds"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"label","type":"string"},{"id":"state","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/select-item","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/select-item.json","license":"MIT","runs":"local"},{"slug":"remocn.select-menu","name":"select-menu","title":"UI Select Menu","summary":"A vertical option list where exactly one row is highlighted; the highlight bar and left accent slide smoothly between rows. Fully controlled via selectedIndex/state or useSelectMenuTransition.","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["annotations","lists","transitions"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"selectedIndex","type":"number"},{"id":"variant","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/select-menu","docs":"https://remocn.dev/docs/ui/components/select-menu","source":"https://remocn.dev/r/select-menu.json","license":"MIT","runs":"local"},{"slug":"remocn.selection-snap","name":"selection-snap","title":"Selection Snap","summary":"A thin word in a loose viewfinder snaps into a design-tool selection while it goes from Thin to Black, pops its handles and counts up a size badge.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"color","type":"color"},{"id":"accent","type":"color"},{"id":"selectionColor","type":"color"},{"id":"fontSize","type":"number"},{"id":"fromWeight","type":"number"},{"id":"toWeight","type":"number"},{"id":"badge","type":"boolean"}],"install":"npx shadcn@latest add @remocn/selection-snap","docs":"https://remocn.dev/docs/typography/selection-snap","source":"https://remocn.dev/r/selection-snap.json","license":"MIT","runs":"local"},{"slug":"remocn.settings-toggle-flow","name":"settings-toggle-flow","title":"UI Settings Toggle Flow","summary":"A two-column settings card: the card and its controls blur-in, then the cursor flips a switch, opens a select, drags a labeled slider, and clicks Save, ending in a saved toast…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["cursors","intros","transitions"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","deps":["remocn-ui","switch","select","slider","button","blur-in","cursor","toast"],"install":"npx shadcn@latest add @remocn/settings-toggle-flow","docs":"https://remocn.dev/docs/ui/blocks/settings-toggle-flow","source":"https://remocn.dev/r/settings-toggle-flow.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-caustics","name":"shader-caustics","title":"Shader Caustics","summary":"A field of refracted light — the bright filaments light makes through a rippling surface.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"scale","type":"number"},{"id":"intensity","type":"number"},{"id":"accent","type":"color"},{"id":"accentAmount","type":"number"}],"install":"npx shadcn@latest add @remocn/shader-caustics","docs":"https://remocn.dev/docs/shaders/components/shader-caustics","source":"https://remocn.dev/r/shader-caustics.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-color-panels","name":"shader-color-panels","title":"Shader Color Panels","summary":"Overlapping translucent color panels sliding past each other.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"density","type":"number"},{"id":"length","type":"number"},{"id":"colorBack","type":"color"}],"install":"npx shadcn@latest add @remocn/shader-color-panels","docs":"https://remocn.dev/docs/shaders/components/shader-color-panels","source":"https://remocn.dev/r/shader-color-panels.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-dithering","name":"shader-dithering","title":"Shader Dithering","summary":"Ordered-dither shading over an animated gradient field.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"size","type":"number"},{"id":"colorBack","type":"color"},{"id":"colorFront","type":"color"}],"install":"npx shadcn@latest add @remocn/shader-dithering","docs":"https://remocn.dev/docs/shaders/components/shader-dithering","source":"https://remocn.dev/r/shader-dithering.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-dot-orbit","name":"shader-dot-orbit","title":"Shader Dot Orbit","summary":"Dots orbiting on concentric paths across the frame.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"size","type":"number"},{"id":"spreading","type":"number"},{"id":"colorBack","type":"color"}],"install":"npx shadcn@latest add @remocn/shader-dot-orbit","docs":"https://remocn.dev/docs/shaders/components/shader-dot-orbit","source":"https://remocn.dev/r/shader-dot-orbit.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-gem-smoke","name":"shader-gem-smoke","title":"Shader Gem Smoke","summary":"Paper's Gem Smoke shader driven by the frame — smoke flowing behind and inside a glassy logo.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"colorBack","type":"color"},{"id":"innerDistortion","type":"number"},{"id":"outerDistortion","type":"number"},{"id":"size","type":"number"}],"install":"npx shadcn@latest add @remocn/shader-gem-smoke","docs":"https://remocn.dev/docs/shaders/components/shader-gem-smoke","source":"https://remocn.dev/r/shader-gem-smoke.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-god-rays","name":"shader-god-rays","title":"Shader God Rays","summary":"Volumetric light rays radiating from an off-screen source.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"intensity","type":"number"},{"id":"density","type":"number"},{"id":"bloom","type":"number"},{"id":"colorBack","type":"color"}],"install":"npx shadcn@latest add @remocn/shader-god-rays","docs":"https://remocn.dev/docs/shaders/components/shader-god-rays","source":"https://remocn.dev/r/shader-god-rays.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-grain-gradient","name":"shader-grain-gradient","title":"Shader Grain Gradient","summary":"Grainy multi-stop gradient that drifts slowly with film-grain texture over the blend.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"softness","type":"number"},{"id":"intensity","type":"number"},{"id":"noise","type":"number"},{"id":"colorBack","type":"color"}],"install":"npx shadcn@latest add @remocn/shader-grain-gradient","docs":"https://remocn.dev/docs/shaders/components/shader-grain-gradient","source":"https://remocn.dev/r/shader-grain-gradient.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-grain-gradient-arcade","name":"shader-grain-gradient-arcade","title":"Shader Grain Gradient Arcade","summary":"Retro grainy dots in orange, yellow and green on black.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"softness","type":"number"},{"id":"intensity","type":"number"},{"id":"noise","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-grain-gradient"],"install":"npx shadcn@latest add @remocn/shader-grain-gradient-arcade","docs":"https://remocn.dev/docs/shaders/components/shader-grain-gradient","source":"https://remocn.dev/r/shader-grain-gradient-arcade.json","license":"MIT","presetOf":"shader-grain-gradient","runs":"local"},{"slug":"remocn.shader-grain-gradient-blush","name":"shader-grain-gradient-blush","title":"Shader Grain Gradient Blush","summary":"Pastel pink and apricot blob morphing on warm off-white.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"softness","type":"number"},{"id":"intensity","type":"number"},{"id":"noise","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-grain-gradient"],"install":"npx shadcn@latest add @remocn/shader-grain-gradient-blush","docs":"https://remocn.dev/docs/shaders/components/shader-grain-gradient","source":"https://remocn.dev/r/shader-grain-gradient-blush.json","license":"MIT","presetOf":"shader-grain-gradient","runs":"local"},{"slug":"remocn.shader-grain-gradient-dune","name":"shader-grain-gradient-dune","title":"Shader Grain Gradient Dune","summary":"Sandy grain wave in tan, caramel and rust.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"softness","type":"number"},{"id":"intensity","type":"number"},{"id":"noise","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-grain-gradient"],"install":"npx shadcn@latest add @remocn/shader-grain-gradient-dune","docs":"https://remocn.dev/docs/shaders/components/shader-grain-gradient","source":"https://remocn.dev/r/shader-grain-gradient-dune.json","license":"MIT","presetOf":"shader-grain-gradient","runs":"local"},{"slug":"remocn.shader-grain-gradient-horizon","name":"shader-grain-gradient-horizon","title":"Shader Grain Gradient Horizon","summary":"Peach horizon band rolling between navy and pale sky.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"softness","type":"number"},{"id":"intensity","type":"number"},{"id":"noise","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-grain-gradient"],"install":"npx shadcn@latest add @remocn/shader-grain-gradient-horizon","docs":"https://remocn.dev/docs/shaders/components/shader-grain-gradient","source":"https://remocn.dev/r/shader-grain-gradient-horizon.json","license":"MIT","presetOf":"shader-grain-gradient","runs":"local"},{"slug":"remocn.shader-grain-gradient-nebula","name":"shader-grain-gradient-nebula","title":"Shader Grain Gradient Nebula","summary":"Magenta and cyan glow blooming from the corners of deep space.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"softness","type":"number"},{"id":"intensity","type":"number"},{"id":"noise","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-grain-gradient"],"install":"npx shadcn@latest add @remocn/shader-grain-gradient-nebula","docs":"https://remocn.dev/docs/shaders/components/shader-grain-gradient","source":"https://remocn.dev/r/shader-grain-gradient-nebula.json","license":"MIT","presetOf":"shader-grain-gradient","runs":"local"},{"slug":"remocn.shader-grain-gradient-orb","name":"shader-grain-gradient-orb","title":"Shader Grain Gradient Orb","summary":"Large grainy sphere in periwinkle, violet and pink.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"softness","type":"number"},{"id":"intensity","type":"number"},{"id":"noise","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-grain-gradient"],"install":"npx shadcn@latest add @remocn/shader-grain-gradient-orb","docs":"https://remocn.dev/docs/shaders/components/shader-grain-gradient","source":"https://remocn.dev/r/shader-grain-gradient-orb.json","license":"MIT","presetOf":"shader-grain-gradient","runs":"local"},{"slug":"remocn.shader-grain-gradient-sunrise","name":"shader-grain-gradient-sunrise","title":"Shader Grain Gradient Sunrise","summary":"Grainy wave of coral and gold rising over a plum night.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"softness","type":"number"},{"id":"intensity","type":"number"},{"id":"noise","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-grain-gradient"],"install":"npx shadcn@latest add @remocn/shader-grain-gradient-sunrise","docs":"https://remocn.dev/docs/shaders/components/shader-grain-gradient","source":"https://remocn.dev/r/shader-grain-gradient-sunrise.json","license":"MIT","presetOf":"shader-grain-gradient","runs":"local"},{"slug":"remocn.shader-grain-gradient-tide","name":"shader-grain-gradient-tide","title":"Shader Grain Gradient Tide","summary":"Teal ripple ring pulsing out of a dark sea-green core.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"softness","type":"number"},{"id":"intensity","type":"number"},{"id":"noise","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-grain-gradient"],"install":"npx shadcn@latest add @remocn/shader-grain-gradient-tide","docs":"https://remocn.dev/docs/shaders/components/shader-grain-gradient","source":"https://remocn.dev/r/shader-grain-gradient-tide.json","license":"MIT","presetOf":"shader-grain-gradient","runs":"local"},{"slug":"remocn.shader-grain-gradient-ultraviolet","name":"shader-grain-gradient-ultraviolet","title":"Shader Grain Gradient Ultraviolet","summary":"Electric magenta and blue blob morphing on ultraviolet black.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"softness","type":"number"},{"id":"intensity","type":"number"},{"id":"noise","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-grain-gradient"],"install":"npx shadcn@latest add @remocn/shader-grain-gradient-ultraviolet","docs":"https://remocn.dev/docs/shaders/components/shader-grain-gradient","source":"https://remocn.dev/r/shader-grain-gradient-ultraviolet.json","license":"MIT","presetOf":"shader-grain-gradient","runs":"local"},{"slug":"remocn.shader-light-tunnel","name":"shader-light-tunnel","title":"Light Tunnel","summary":"Fly straight through a tunnel made from the original OpenShaders hero shader.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"twist","type":"number"},{"id":"spirals","type":"number"},{"id":"glow","type":"number"},{"id":"depth","type":"number"},{"id":"timeOffset","type":"number"}],"install":"npx shadcn@latest add @remocn/shader-light-tunnel","docs":"https://remocn.dev/docs/shaders/components/shader-light-tunnel","source":"https://remocn.dev/r/shader-light-tunnel.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-liquid-metal","name":"shader-liquid-metal","title":"Shader Liquid Metal","summary":"Molten metallic surface with flowing specular highlights.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"repetition","type":"number"},{"id":"contour","type":"number"},{"id":"colorBack","type":"color"},{"id":"colorTint","type":"color"}],"install":"npx shadcn@latest add @remocn/shader-liquid-metal","docs":"https://remocn.dev/docs/shaders/components/shader-liquid-metal","source":"https://remocn.dev/r/shader-liquid-metal.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-mesh-gradient","name":"shader-mesh-gradient","title":"Shader Mesh Gradient","summary":"WebGL mesh gradient backdrop driven per-frame for deterministic Remotion renders.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"}],"install":"npx shadcn@latest add @remocn/shader-mesh-gradient","docs":"https://remocn.dev/docs/shaders/components/shader-mesh-gradient","source":"https://remocn.dev/r/shader-mesh-gradient.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-mesh-gradient-aurora","name":"shader-mesh-gradient-aurora","title":"Shader Mesh Gradient Aurora","summary":"Cyan and violet ribbons swirling out of a near-black sky.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"}],"deps":["shader-mesh-gradient"],"install":"npx shadcn@latest add @remocn/shader-mesh-gradient-aurora","docs":"https://remocn.dev/docs/shaders/components/shader-mesh-gradient","source":"https://remocn.dev/r/shader-mesh-gradient-aurora.json","license":"MIT","presetOf":"shader-mesh-gradient","runs":"local"},{"slug":"remocn.shader-mesh-gradient-dusk","name":"shader-mesh-gradient-dusk","title":"Shader Mesh Gradient Dusk","summary":"Violet dusk with coral and peach light drifting through deep indigo.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"}],"deps":["shader-mesh-gradient"],"install":"npx shadcn@latest add @remocn/shader-mesh-gradient-dusk","docs":"https://remocn.dev/docs/shaders/components/shader-mesh-gradient","source":"https://remocn.dev/r/shader-mesh-gradient-dusk.json","license":"MIT","presetOf":"shader-mesh-gradient","runs":"local"},{"slug":"remocn.shader-mesh-gradient-ember","name":"shader-mesh-gradient-ember","title":"Shader Mesh Gradient Ember","summary":"Molten orange and amber pooling in dark oxblood.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"}],"deps":["shader-mesh-gradient"],"install":"npx shadcn@latest add @remocn/shader-mesh-gradient-ember","docs":"https://remocn.dev/docs/shaders/components/shader-mesh-gradient","source":"https://remocn.dev/r/shader-mesh-gradient-ember.json","license":"MIT","presetOf":"shader-mesh-gradient","runs":"local"},{"slug":"remocn.shader-mesh-gradient-ink","name":"shader-mesh-gradient-ink","title":"Shader Mesh Gradient Ink","summary":"Monochrome ink folds in charcoal and silver with grain.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"}],"deps":["shader-mesh-gradient"],"install":"npx shadcn@latest add @remocn/shader-mesh-gradient-ink","docs":"https://remocn.dev/docs/shaders/components/shader-mesh-gradient","source":"https://remocn.dev/r/shader-mesh-gradient-ink.json","license":"MIT","presetOf":"shader-mesh-gradient","runs":"local"},{"slug":"remocn.shader-mesh-gradient-lagoon","name":"shader-mesh-gradient-lagoon","title":"Shader Mesh Gradient Lagoon","summary":"Bright aqua and teal shallows with a deep-blue undertow.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"}],"deps":["shader-mesh-gradient"],"install":"npx shadcn@latest add @remocn/shader-mesh-gradient-lagoon","docs":"https://remocn.dev/docs/shaders/components/shader-mesh-gradient","source":"https://remocn.dev/r/shader-mesh-gradient-lagoon.json","license":"MIT","presetOf":"shader-mesh-gradient","runs":"local"},{"slug":"remocn.shader-mesh-gradient-lavender","name":"shader-mesh-gradient-lavender","title":"Shader Mesh Gradient Lavender","summary":"Soft lilac and pink haze with grain-softened edges.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"}],"deps":["shader-mesh-gradient"],"install":"npx shadcn@latest add @remocn/shader-mesh-gradient-lavender","docs":"https://remocn.dev/docs/shaders/components/shader-mesh-gradient","source":"https://remocn.dev/r/shader-mesh-gradient-lavender.json","license":"MIT","presetOf":"shader-mesh-gradient","runs":"local"},{"slug":"remocn.shader-mesh-gradient-mint","name":"shader-mesh-gradient-mint","title":"Shader Mesh Gradient Mint","summary":"Airy mint and sky-blue pastel wash around a deeper green core.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"}],"deps":["shader-mesh-gradient"],"install":"npx shadcn@latest add @remocn/shader-mesh-gradient-mint","docs":"https://remocn.dev/docs/shaders/components/shader-mesh-gradient","source":"https://remocn.dev/r/shader-mesh-gradient-mint.json","license":"MIT","presetOf":"shader-mesh-gradient","runs":"local"},{"slug":"remocn.shader-mesh-gradient-peach","name":"shader-mesh-gradient-peach","title":"Shader Mesh Gradient Peach","summary":"Warm peach and cream glow with a whisper of film grain.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"}],"deps":["shader-mesh-gradient"],"install":"npx shadcn@latest add @remocn/shader-mesh-gradient-peach","docs":"https://remocn.dev/docs/shaders/components/shader-mesh-gradient","source":"https://remocn.dev/r/shader-mesh-gradient-peach.json","license":"MIT","presetOf":"shader-mesh-gradient","runs":"local"},{"slug":"remocn.shader-mesh-gradient-synthwave","name":"shader-mesh-gradient-synthwave","title":"Shader Mesh Gradient Synthwave","summary":"Night-purple field lit by a warm coral sunset glow.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"}],"deps":["shader-mesh-gradient"],"install":"npx shadcn@latest add @remocn/shader-mesh-gradient-synthwave","docs":"https://remocn.dev/docs/shaders/components/shader-mesh-gradient","source":"https://remocn.dev/r/shader-mesh-gradient-synthwave.json","license":"MIT","presetOf":"shader-mesh-gradient","runs":"local"},{"slug":"remocn.shader-metaballs","name":"shader-metaballs","title":"Shader Metaballs","summary":"Organic blobs merging and splitting like lava.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"count","type":"number"},{"id":"size","type":"number"},{"id":"colorBack","type":"color"}],"install":"npx shadcn@latest add @remocn/shader-metaballs","docs":"https://remocn.dev/docs/shaders/components/shader-metaballs","source":"https://remocn.dev/r/shader-metaballs.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-neuro-noise","name":"shader-neuro-noise","title":"Shader Neuro Noise","summary":"Organic neural-web noise field that slowly morphs.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"brightness","type":"number"},{"id":"contrast","type":"number"},{"id":"colorBack","type":"color"},{"id":"colorMid","type":"color"}],"install":"npx shadcn@latest add @remocn/shader-neuro-noise","docs":"https://remocn.dev/docs/shaders/components/shader-neuro-noise","source":"https://remocn.dev/r/shader-neuro-noise.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-perlin-noise","name":"shader-perlin-noise","title":"Shader Perlin Noise","summary":"Classic Perlin noise clouds drifting across the frame.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"proportion","type":"number"},{"id":"softness","type":"number"},{"id":"colorBack","type":"color"},{"id":"colorFront","type":"color"}],"install":"npx shadcn@latest add @remocn/shader-perlin-noise","docs":"https://remocn.dev/docs/shaders/components/shader-perlin-noise","source":"https://remocn.dev/r/shader-perlin-noise.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-pulsing-border","name":"shader-pulsing-border","title":"Shader Pulsing Border","summary":"Glowing border frame that pulses around the edges.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"thickness","type":"number"},{"id":"roundness","type":"number"},{"id":"intensity","type":"number"},{"id":"colorBack","type":"color"}],"install":"npx shadcn@latest add @remocn/shader-pulsing-border","docs":"https://remocn.dev/docs/shaders/components/shader-pulsing-border","source":"https://remocn.dev/r/shader-pulsing-border.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-seam","name":"shader-seam","title":"Shader Seam","summary":"Dissolve a stationary OpenShaders material to uncover the next scene.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"softness","type":"number"},{"id":"detail","type":"number"},{"id":"timeOffset","type":"number"}],"install":"npx shadcn@latest add @remocn/shader-seam","docs":"https://remocn.dev/docs/transitions/shader-seam","source":"https://remocn.dev/r/shader-seam.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-simplex-noise","name":"shader-simplex-noise","title":"Shader Simplex Noise","summary":"Simplex noise flow field, smoother than Perlin.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"stepsPerColor","type":"number"},{"id":"softness","type":"number"}],"install":"npx shadcn@latest add @remocn/shader-simplex-noise","docs":"https://remocn.dev/docs/shaders/components/shader-simplex-noise","source":"https://remocn.dev/r/shader-simplex-noise.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-smoke-ring","name":"shader-smoke-ring","title":"Shader Smoke Ring","summary":"Soft smoke ring curling and dissipating in place.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"radius","type":"number"},{"id":"thickness","type":"number"},{"id":"scale","type":"number"},{"id":"colorBack","type":"color"}],"install":"npx shadcn@latest add @remocn/shader-smoke-ring","docs":"https://remocn.dev/docs/shaders/components/shader-smoke-ring","source":"https://remocn.dev/r/shader-smoke-ring.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-spiral","name":"shader-spiral","title":"Shader Spiral","summary":"Rotating spiral arms radiating from the center.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"density","type":"number"},{"id":"strokeWidth","type":"number"},{"id":"softness","type":"number"},{"id":"colorBack","type":"color"}],"install":"npx shadcn@latest add @remocn/shader-spiral","docs":"https://remocn.dev/docs/shaders/components/shader-spiral","source":"https://remocn.dev/r/shader-spiral.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-spiral-pass","name":"shader-spiral-pass","title":"Shader Spiral Pass","summary":"Accelerate into the hero spiral and emerge through its soft center into the next scene.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"spirals","type":"number"},{"id":"twist","type":"number"},{"id":"zoom","type":"number"},{"id":"softness","type":"number"},{"id":"timeOffset","type":"number"}],"deps":["shader-light-tunnel"],"install":"npx shadcn@latest add @remocn/shader-spiral-pass","docs":"https://remocn.dev/docs/transitions/shader-spiral-pass","source":"https://remocn.dev/r/shader-spiral-pass.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-strata","name":"shader-strata","title":"Shader Strata","summary":"Fine horizontal sediment layers displaced by fbm noise, each drifting at its own depth.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"layers","type":"number"},{"id":"amplitude","type":"number"},{"id":"accent","type":"color"},{"id":"accentAmount","type":"number"}],"install":"npx shadcn@latest add @remocn/shader-strata","docs":"https://remocn.dev/docs/shaders/components/shader-strata","source":"https://remocn.dev/r/shader-strata.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-swirl","name":"shader-swirl","title":"Shader Swirl","summary":"Concentric bands swirling around a center point.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"bandCount","type":"number"},{"id":"twist","type":"number"},{"id":"softness","type":"number"},{"id":"colorBack","type":"color"}],"install":"npx shadcn@latest add @remocn/shader-swirl","docs":"https://remocn.dev/docs/shaders/components/shader-swirl","source":"https://remocn.dev/r/shader-swirl.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-swirl-candy","name":"shader-swirl-candy","title":"Shader Swirl Candy","summary":"Pastel pink, lilac and sky-blue spiral, soft and sweet.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"bandCount","type":"number"},{"id":"twist","type":"number"},{"id":"softness","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-swirl"],"install":"npx shadcn@latest add @remocn/shader-swirl-candy","docs":"https://remocn.dev/docs/shaders/components/shader-swirl","source":"https://remocn.dev/r/shader-swirl-candy.json","license":"MIT","presetOf":"shader-swirl","runs":"local"},{"slug":"remocn.shader-swirl-citrus","name":"shader-swirl-citrus","title":"Shader Swirl Citrus","summary":"Juicy yellow, pink and green bands spiralling on cream.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"bandCount","type":"number"},{"id":"twist","type":"number"},{"id":"softness","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-swirl"],"install":"npx shadcn@latest add @remocn/shader-swirl-citrus","docs":"https://remocn.dev/docs/shaders/components/shader-swirl","source":"https://remocn.dev/r/shader-swirl-citrus.json","license":"MIT","presetOf":"shader-swirl","runs":"local"},{"slug":"remocn.shader-swirl-ember","name":"shader-swirl-ember","title":"Shader Swirl Ember","summary":"Gold and orange fire bands spinning around a dark core.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"bandCount","type":"number"},{"id":"twist","type":"number"},{"id":"softness","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-swirl"],"install":"npx shadcn@latest add @remocn/shader-swirl-ember","docs":"https://remocn.dev/docs/shaders/components/shader-swirl","source":"https://remocn.dev/r/shader-swirl-ember.json","license":"MIT","presetOf":"shader-swirl","runs":"local"},{"slug":"remocn.shader-swirl-hypno","name":"shader-swirl-hypno","title":"Shader Swirl Hypno","summary":"High-contrast black and white hypnotic spiral.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"bandCount","type":"number"},{"id":"twist","type":"number"},{"id":"softness","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-swirl"],"install":"npx shadcn@latest add @remocn/shader-swirl-hypno","docs":"https://remocn.dev/docs/shaders/components/shader-swirl","source":"https://remocn.dev/r/shader-swirl-hypno.json","license":"MIT","presetOf":"shader-swirl","runs":"local"},{"slug":"remocn.shader-swirl-lilac","name":"shader-swirl-lilac","title":"Shader Swirl Lilac","summary":"Dreamy lilac and baby-blue swirl around a dark eye.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"bandCount","type":"number"},{"id":"twist","type":"number"},{"id":"softness","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-swirl"],"install":"npx shadcn@latest add @remocn/shader-swirl-lilac","docs":"https://remocn.dev/docs/shaders/components/shader-swirl","source":"https://remocn.dev/r/shader-swirl-lilac.json","license":"MIT","presetOf":"shader-swirl","runs":"local"},{"slug":"remocn.shader-swirl-neon","name":"shader-swirl-neon","title":"Shader Swirl Neon","summary":"Neon teal, purple and pink vortex around a dark core.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"bandCount","type":"number"},{"id":"twist","type":"number"},{"id":"softness","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-swirl"],"install":"npx shadcn@latest add @remocn/shader-swirl-neon","docs":"https://remocn.dev/docs/shaders/components/shader-swirl","source":"https://remocn.dev/r/shader-swirl-neon.json","license":"MIT","presetOf":"shader-swirl","runs":"local"},{"slug":"remocn.shader-swirl-retro","name":"shader-swirl-retro","title":"Shader Swirl Retro","summary":"Seventies spiral in orange, sand and teal.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"bandCount","type":"number"},{"id":"twist","type":"number"},{"id":"softness","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-swirl"],"install":"npx shadcn@latest add @remocn/shader-swirl-retro","docs":"https://remocn.dev/docs/shaders/components/shader-swirl","source":"https://remocn.dev/r/shader-swirl-retro.json","license":"MIT","presetOf":"shader-swirl","runs":"local"},{"slug":"remocn.shader-swirl-sunburst","name":"shader-swirl-sunburst","title":"Shader Swirl Sunburst","summary":"Retro cream and orange bands sweeping in from above.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"bandCount","type":"number"},{"id":"twist","type":"number"},{"id":"softness","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-swirl"],"install":"npx shadcn@latest add @remocn/shader-swirl-sunburst","docs":"https://remocn.dev/docs/shaders/components/shader-swirl","source":"https://remocn.dev/r/shader-swirl-sunburst.json","license":"MIT","presetOf":"shader-swirl","runs":"local"},{"slug":"remocn.shader-swirl-tide","name":"shader-swirl-tide","title":"Shader Swirl Tide","summary":"Silky blue bands twisting into a deep navy whirlpool.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"bandCount","type":"number"},{"id":"twist","type":"number"},{"id":"softness","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-swirl"],"install":"npx shadcn@latest add @remocn/shader-swirl-tide","docs":"https://remocn.dev/docs/shaders/components/shader-swirl","source":"https://remocn.dev/r/shader-swirl-tide.json","license":"MIT","presetOf":"shader-swirl","runs":"local"},{"slug":"remocn.shader-text-reveal","name":"shader-text-reveal","title":"Shader Text Reveal","summary":"Reveal words through the original OpenShaders hero shader, then settle into white type.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"fontSize","type":"number"},{"id":"wordDuration","type":"number"},{"id":"intensity","type":"number"}],"install":"npx shadcn@latest add @remocn/shader-text-reveal","docs":"https://remocn.dev/docs/typography/shader-text-reveal","source":"https://remocn.dev/r/shader-text-reveal.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-voronoi","name":"shader-voronoi","title":"Shader Voronoi","summary":"Animated Voronoi cells shifting and re-tessellating.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"gap","type":"number"},{"id":"glow","type":"number"},{"id":"colorGap","type":"color"}],"install":"npx shadcn@latest add @remocn/shader-voronoi","docs":"https://remocn.dev/docs/shaders/components/shader-voronoi","source":"https://remocn.dev/r/shader-voronoi.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-warp","name":"shader-warp","title":"Shader Warp","summary":"Domain-warped color field that folds and stretches like liquid.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"},{"id":"softness","type":"number"},{"id":"proportion","type":"number"}],"install":"npx shadcn@latest add @remocn/shader-warp","docs":"https://remocn.dev/docs/shaders/components/shader-warp","source":"https://remocn.dev/r/shader-warp.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-warp-acid","name":"shader-warp-acid","title":"Shader Warp Acid","summary":"Loud lime and cyan fluid swirling over black.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"},{"id":"softness","type":"number"},{"id":"proportion","type":"number"}],"deps":["shader-warp"],"install":"npx shadcn@latest add @remocn/shader-warp-acid","docs":"https://remocn.dev/docs/shaders/components/shader-warp","source":"https://remocn.dev/r/shader-warp-acid.json","license":"MIT","presetOf":"shader-warp","runs":"local"},{"slug":"remocn.shader-warp-cream","name":"shader-warp-cream","title":"Shader Warp Cream","summary":"Soft peach-to-coral cream gradient with a gentle drift.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"},{"id":"softness","type":"number"},{"id":"proportion","type":"number"}],"deps":["shader-warp"],"install":"npx shadcn@latest add @remocn/shader-warp-cream","docs":"https://remocn.dev/docs/shaders/components/shader-warp","source":"https://remocn.dev/r/shader-warp-cream.json","license":"MIT","presetOf":"shader-warp","runs":"local"},{"slug":"remocn.shader-warp-deep-sea","name":"shader-warp-deep-sea","title":"Shader Warp Deep Sea","summary":"Diagonal teal bands rippling through midnight blue.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"},{"id":"softness","type":"number"},{"id":"proportion","type":"number"}],"deps":["shader-warp"],"install":"npx shadcn@latest add @remocn/shader-warp-deep-sea","docs":"https://remocn.dev/docs/shaders/components/shader-warp","source":"https://remocn.dev/r/shader-warp-deep-sea.json","license":"MIT","presetOf":"shader-warp","runs":"local"},{"slug":"remocn.shader-warp-marble","name":"shader-warp-marble","title":"Shader Warp Marble","summary":"Cream and charcoal marble veins swirling together.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"},{"id":"softness","type":"number"},{"id":"proportion","type":"number"}],"deps":["shader-warp"],"install":"npx shadcn@latest add @remocn/shader-warp-marble","docs":"https://remocn.dev/docs/shaders/components/shader-warp","source":"https://remocn.dev/r/shader-warp-marble.json","license":"MIT","presetOf":"shader-warp","runs":"local"},{"slug":"remocn.shader-warp-ocean","name":"shader-warp-ocean","title":"Shader Warp Ocean","summary":"Glossy aqua currents traced with dark ink edges.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"},{"id":"softness","type":"number"},{"id":"proportion","type":"number"}],"deps":["shader-warp"],"install":"npx shadcn@latest add @remocn/shader-warp-ocean","docs":"https://remocn.dev/docs/shaders/components/shader-warp","source":"https://remocn.dev/r/shader-warp-ocean.json","license":"MIT","presetOf":"shader-warp","runs":"local"},{"slug":"remocn.shader-warp-rose-gold","name":"shader-warp-rose-gold","title":"Shader Warp Rose Gold","summary":"Satin rose-gold folds with a soft sheen.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"},{"id":"softness","type":"number"},{"id":"proportion","type":"number"}],"deps":["shader-warp"],"install":"npx shadcn@latest add @remocn/shader-warp-rose-gold","docs":"https://remocn.dev/docs/shaders/components/shader-warp","source":"https://remocn.dev/r/shader-warp-rose-gold.json","license":"MIT","presetOf":"shader-warp","runs":"local"},{"slug":"remocn.shader-warp-silk","name":"shader-warp-silk","title":"Shader Warp Silk","summary":"Violet and pink liquid silk folding in slow waves.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"},{"id":"softness","type":"number"},{"id":"proportion","type":"number"}],"deps":["shader-warp"],"install":"npx shadcn@latest add @remocn/shader-warp-silk","docs":"https://remocn.dev/docs/shaders/components/shader-warp","source":"https://remocn.dev/r/shader-warp-silk.json","license":"MIT","presetOf":"shader-warp","runs":"local"},{"slug":"remocn.shader-warp-storm","name":"shader-warp-storm","title":"Shader Warp Storm","summary":"Deep violet and lavender storm of marbled fluid.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"},{"id":"softness","type":"number"},{"id":"proportion","type":"number"}],"deps":["shader-warp"],"install":"npx shadcn@latest add @remocn/shader-warp-storm","docs":"https://remocn.dev/docs/shaders/components/shader-warp","source":"https://remocn.dev/r/shader-warp-storm.json","license":"MIT","presetOf":"shader-warp","runs":"local"},{"slug":"remocn.shader-warp-sunset","name":"shader-warp-sunset","title":"Shader Warp Sunset","summary":"Marbled coral, peach and wine flowing like warm liquid.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders","preset"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"},{"id":"softness","type":"number"},{"id":"proportion","type":"number"}],"deps":["shader-warp"],"install":"npx shadcn@latest add @remocn/shader-warp-sunset","docs":"https://remocn.dev/docs/shaders/components/shader-warp","source":"https://remocn.dev/r/shader-warp-sunset.json","license":"MIT","presetOf":"shader-warp","runs":"local"},{"slug":"remocn.shader-water","name":"shader-water","title":"Shader Water","summary":"Caustic water-surface ripples with subtle refraction.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"waves","type":"number"},{"id":"caustic","type":"number"},{"id":"highlights","type":"number"},{"id":"colorBack","type":"color"}],"install":"npx shadcn@latest add @remocn/shader-water","docs":"https://remocn.dev/docs/shaders/components/shader-water","source":"https://remocn.dev/r/shader-water.json","license":"MIT","runs":"local"},{"slug":"remocn.shader-weave","name":"shader-weave","title":"Shader Weave","summary":"A woven substrate of warp and weft threads crossing on a domain-warped grid, with a travelling sheen.","registry":"remocn","framework":"remotion","layer":"component","category":"shaders","tags":["shaders"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"scale","type":"number"},{"id":"warp","type":"number"},{"id":"accent","type":"color"},{"id":"accentAmount","type":"number"}],"install":"npx shadcn@latest add @remocn/shader-weave","docs":"https://remocn.dev/docs/shaders/components/shader-weave","source":"https://remocn.dev/r/shader-weave.json","license":"MIT","runs":"local"},{"slug":"remocn.shadow-sweep-text","name":"shadow-sweep-text","title":"Shadow Sweep Text","summary":"A line rises up and left while one dense dark shadow uncovers it and a second shadow sweeps back across it for the exit.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"fontSize","type":"number"},{"id":"rise","type":"number"},{"id":"driftLeft","type":"number"},{"id":"shadowSoftness","type":"number"},{"id":"color","type":"color"},{"id":"backgroundColor","type":"color"},{"id":"shadowColor","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/shadow-sweep-text","docs":"https://remocn.dev/docs/typography/shadow-sweep-text","source":"https://remocn.dev/r/shadow-sweep-text.json","license":"MIT","runs":"local"},{"slug":"remocn.shared-axis-y","name":"shared-axis-y","title":"Shared Axis Y","summary":"Per-word hard-cut transition with staircase timing for sharp editorial swaps.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fromText","type":"string"},{"id":"toText","type":"string"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/shared-axis-y","docs":"https://remocn.dev/docs/typography/shared-axis-y","source":"https://remocn.dev/r/shared-axis-y.json","license":"MIT","runs":"local"},{"slug":"remocn.shared-axis-z","name":"shared-axis-z","title":"Shared Axis Z","summary":"Scale-based shared-axis transition for focus shifts and context depth.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"fromText","type":"string"},{"id":"toText","type":"string"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/shared-axis-z","docs":"https://remocn.dev/docs/typography/shared-axis-z","source":"https://remocn.dev/r/shared-axis-z.json","license":"MIT","runs":"local"},{"slug":"remocn.sheen-slide-in","name":"sheen-slide-in","title":"Sheen Slide In","summary":"A title glides in from the right with an exponential settle and a slow final creep to center, while a gradient sheen sweeps once through the glyphs.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","also":["title-cards"],"tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"exitAt","type":"number"},{"id":"fontSize","type":"number"},{"id":"baseColor","type":"color"},{"id":"sheenColor","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/sheen-slide-in","docs":"https://remocn.dev/docs/typography/sheen-slide-in","source":"https://remocn.dev/r/sheen-slide-in.json","license":"MIT","runs":"local"},{"slug":"remocn.sheet","name":"sheet","title":"UI Sheet","summary":"A side panel whose opened/closed state is a pure function of the timeline; the backdrop dim and right-edge slide-in are keyframed presets, with a close button and a primary action…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","backgrounds"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"title","type":"string"},{"id":"actionLabel","type":"string"},{"id":"cancelLabel","type":"string"},{"id":"state","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/sheet","docs":"https://remocn.dev/docs/ui/components/sheet","source":"https://remocn.dev/r/sheet.json","license":"MIT","runs":"local"},{"slug":"remocn.shimmer-sweep","name":"shimmer-sweep","title":"Shimmer Sweep","summary":"Light shine sweeps across muted text via background-clip:text.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"baseColor","type":"color"},{"id":"shineColor","type":"color"},{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/shimmer-sweep","docs":"https://remocn.dev/docs/typography/shimmer-sweep","source":"https://remocn.dev/r/shimmer-sweep.json","license":"MIT","runs":"local"},{"slug":"remocn.short-slide-down","name":"short-slide-down","title":"Short Slide Down","summary":"Each new word drops in from above into its own line and pushes the stack downward until a centered three-line composition locks in place.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"entryOffset","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/short-slide-down","docs":"https://remocn.dev/docs/typography/short-slide-down","source":"https://remocn.dev/r/short-slide-down.json","license":"MIT","runs":"local"},{"slug":"remocn.short-slide-right","name":"short-slide-right","title":"Short Slide Right","summary":"The whole phrase glides in from the left as one compact move while words reveal in sequence through opacity.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"distance","type":"number"},{"id":"staggerDelay","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/short-slide-right","docs":"https://remocn.dev/docs/typography/short-slide-right","source":"https://remocn.dev/r/short-slide-right.json","license":"MIT","runs":"local"},{"slug":"remocn.signup-flow","name":"signup-flow","title":"UI Signup Flow","summary":"A signup card composition: a real shadcn-style card (header, labeled Full Name / Email / Password / Confirm fields, primary + Google-outline buttons, sign-in footer) whose cursor fills each field top-to-bottom…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["cursors","intros","transitions"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","deps":["remocn-ui","cursor","input","button","toast","field","blur-in"],"install":"npx shadcn@latest add @remocn/signup-flow","docs":"https://remocn.dev/docs/ui/blocks/signup-flow","source":"https://remocn.dev/r/signup-flow.json","license":"MIT","runs":"local"},{"slug":"remocn.simulated-cursor","name":"simulated-cursor","title":"Simulated Cursor","summary":"Animated mouse cursor moving between waypoints with click ripple feedback.","registry":"remocn","framework":"remotion","layer":"primitive","category":"cursors","tags":["effects"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"color","type":"color"},{"id":"size","type":"number"}],"install":"npx shadcn@latest add @remocn/simulated-cursor","docs":"https://remocn.dev/docs/effects/simulated-cursor","source":"https://remocn.dev/r/simulated-cursor.json","license":"MIT","runs":"local"},{"slug":"remocn.skeleton","name":"skeleton","title":"UI Skeleton","summary":"A skeleton→content crossfade whose loading/loaded state is a pure function of the timeline. The Skeleton renderer is pure (reads no frame); only the composed SkeletonBlock shimmer reads it…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","transitions","textures"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"layout","type":"string"},{"id":"state","type":"string"}],"deps":["remocn-ui","skeleton-block"],"install":"npx shadcn@latest add @remocn/skeleton","docs":"https://remocn.dev/docs/ui/components/skeleton","source":"https://remocn.dev/r/skeleton.json","license":"MIT","runs":"local"},{"slug":"remocn.skeleton-block","name":"skeleton-block","title":"UI Skeleton Block","summary":"A shimmer placeholder block — a motion atom (spinner pattern). A directional highlight gradient sweeps across deterministically from useCurrentFrame() and loops seamlessly…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["timers","annotations","backgrounds"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"width","type":"number"},{"id":"height","type":"number"},{"id":"radius","type":"number"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/skeleton-block","docs":"https://remocn.dev/docs/ui/components/skeleton-block","source":"https://remocn.dev/r/skeleton-block.json","license":"MIT","runs":"local"},{"slug":"remocn.slide-swap","name":"slide-swap","title":"Slide Swap","summary":"A scene sequencer where the outgoing content is shoved off on an accelerating curve and the next springs in from the opposite edge, on one canvas, with no overlap.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"axis","type":"string"},{"id":"inDistance","type":"number"},{"id":"outDistance","type":"number"},{"id":"slideFrames","type":"number"}],"install":"npx shadcn@latest add @remocn/slide-swap","docs":"https://remocn.dev/docs/transitions/slide-swap","source":"https://remocn.dev/r/slide-swap.json","license":"MIT","runs":"local"},{"slug":"remocn.slider","name":"slider","title":"UI Slider","summary":"A slider whose fill is a numeric value channel plus a thumb idle/hover/press channel (dual-channel value-channel deviation). The Slider renderer is pure (clamped 0–100 value, thumb scale…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["transitions"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"value","type":"number"},{"id":"thumbState","type":"string"},{"id":"width","type":"number"},{"id":"showValue","type":"boolean"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/slider","docs":"https://remocn.dev/docs/ui/components/slider","source":"https://remocn.dev/r/slider.json","license":"MIT","runs":"local"},{"slug":"remocn.slot-machine-roll","name":"slot-machine-roll","title":"Slot Machine Roll","summary":"Vertical reel scrolls characters from one value to another.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"from","type":"string"},{"id":"to","type":"string"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/slot-machine-roll","docs":"https://remocn.dev/docs/typography/slot-machine-roll","source":"https://remocn.dev/r/slot-machine-roll.json","license":"MIT","runs":"local"},{"slug":"remocn.smoke-dissolve","name":"smoke-dissolve","title":"Smoke Dissolve","summary":"A smoke-ring shader transition that expands the ring outward to reveal the next scene.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"ringColor","type":"color"},{"id":"colorBack","type":"color"}],"deps":["shader-smoke-ring"],"install":"npx shadcn@latest add @remocn/smoke-dissolve","docs":"https://remocn.dev/docs/transitions/smoke-dissolve","source":"https://remocn.dev/r/smoke-dissolve.json","license":"MIT","runs":"local"},{"slug":"remocn.soft-blur-in","name":"soft-blur-in","title":"Soft Blur In","summary":"Per-character fade-in with a gentle blur and upward motion. Apple's signature hero-title reveal.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","also":["title-cards"],"tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"blur","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/soft-blur-in","docs":"https://remocn.dev/docs/typography/soft-blur-in","source":"https://remocn.dev/r/soft-blur-in.json","license":"MIT","runs":"local"},{"slug":"remocn.speed-lines","name":"speed-lines","title":"Speed Lines","summary":"Parallel streaks trail an element as it flies in at its real speed, the element stretching with that speed and landing with a squash and a small bounce as the streaks die…","registry":"remocn","framework":"remotion","layer":"component","category":"entrances","tags":["motion-graphics"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"mode","type":"string"},{"id":"count","type":"number"},{"id":"weight","type":"number"},{"id":"spread","type":"number"},{"id":"duration","type":"number"},{"id":"bounce","type":"number"},{"id":"squash","type":"number"},{"id":"x","type":"number"},{"id":"y","type":"number"},{"id":"delay","type":"number"},{"id":"color","type":"color"},{"id":"seed","type":"number"}],"install":"npx shadcn@latest add @remocn/speed-lines","docs":"https://remocn.dev/docs/motion-graphics/speed-lines","source":"https://remocn.dev/r/speed-lines.json","license":"MIT","runs":"local"},{"slug":"remocn.spinner","name":"spinner","title":"UI Spinner","summary":"A deterministic spinning arc that loops on the Remotion frame — a pure motion atom with no state.","registry":"remocn","framework":"remotion","layer":"component","category":"timers","also":["mock-ui"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"size","type":"number"},{"id":"strokeWidth","type":"number"}],"install":"npx shadcn@latest add @remocn/spinner","docs":"https://remocn.dev/docs/ui/components/spinner","source":"https://remocn.dev/r/spinner.json","license":"MIT","runs":"local"},{"slug":"remocn.spotlight","name":"spotlight","title":"Spotlight","summary":"A soft spotlight cone searches the dark stage, overshoots, and lands on the logo before the house lights lift.","registry":"remocn","framework":"remotion","layer":"block","category":"logos","tags":["logo-stings"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":2.7,"slots":[{"id":"dim","type":"number"},{"id":"beamColor","type":"color"},{"id":"stageColor","type":"color"}],"install":"npx shadcn@latest add @remocn/spotlight","docs":"https://remocn.dev/docs/logo-stings/spotlight","source":"https://remocn.dev/r/spotlight.json","license":"MIT","runs":"local"},{"slug":"remocn.spring-scale-in","name":"spring-scale-in","title":"Spring Scale In","summary":"Words pop in with a soft overshoot scale, like a physical spring settling into place.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"staggerDelay","type":"number"},{"id":"scaleFrom","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/spring-scale-in","docs":"https://remocn.dev/docs/typography/spring-scale-in","source":"https://remocn.dev/r/spring-scale-in.json","license":"MIT","runs":"local"},{"slug":"remocn.spring-settle","name":"spring-settle","title":"Spring Settle","summary":"A scene sequencer where the outgoing scene shrinks away as one group, the stage holds empty for a beat, and the next scene's items land staggered from above-1 scale.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"enterScale","type":"number"},{"id":"enterStagger","type":"number"},{"id":"exitScale","type":"number"},{"id":"exitFrames","type":"number"}],"deps":["scene-motion"],"install":"npx shadcn@latest add @remocn/spring-settle","docs":"https://remocn.dev/docs/transitions/spring-settle","source":"https://remocn.dev/r/spring-settle.json","license":"MIT","runs":"local"},{"slug":"remocn.squeeze-in","name":"squeeze-in","title":"Squeeze In","summary":"Characters appear one by one on a tight stagger; when the last one lands, every letter gap compresses as one and the word squeezes together.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"fontSize","type":"number"},{"id":"stagger","type":"number"},{"id":"squeeze","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/squeeze-in","docs":"https://remocn.dev/docs/typography/squeeze-in","source":"https://remocn.dev/r/squeeze-in.json","license":"MIT","runs":"local"},{"slug":"remocn.squiggle","name":"squiggle","title":"Squiggle","summary":"A flat line draws itself along a straight course as a traveling wave whose crests swim forward and calm down as the head runs out, in wave, zigzag, loop or coil shapes, then erases toward its end point.","registry":"remocn","framework":"remotion","layer":"component","category":"annotations","tags":["motion-graphics"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"shape","type":"string"},{"id":"color","type":"color"},{"id":"weight","type":"number"},{"id":"amplitude","type":"number"},{"id":"wavelength","type":"number"},{"id":"length","type":"number"},{"id":"angle","type":"number"},{"id":"x","type":"number"},{"id":"y","type":"number"},{"id":"settle","type":"number"},{"id":"hold","type":"number"},{"id":"erase","type":"boolean"},{"id":"delay","type":"number"}],"install":"npx shadcn@latest add @remocn/squiggle","docs":"https://remocn.dev/docs/motion-graphics/squiggle","source":"https://remocn.dev/r/squiggle.json","license":"MIT","runs":"local"},{"slug":"remocn.stage","name":"stage","title":"Stage","summary":"Place a screenshot, recording, or long page on a perspective studio plane and direct an integrated camera across it with timeline keyframes.","registry":"remocn","framework":"remotion","layer":"component","category":"layouts","also":["camera"],"tags":["layout"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"preset","type":"string"},{"id":"shake","type":"number"},{"id":"seed","type":"string"},{"id":"backdrop","type":"string"},{"id":"rotateX","type":"number"},{"id":"rotateY","type":"number"},{"id":"perspective","type":"number"},{"id":"scale","type":"number"},{"id":"radius","type":"number"},{"id":"reflection","type":"number"},{"id":"shadow","type":"number"},{"id":"light","type":"number"}],"deps":["scene-motion"],"install":"npx shadcn@latest add @remocn/stage","docs":"https://remocn.dev/docs/layout/stage","source":"https://remocn.dev/r/stage.json","license":"MIT","runs":"local"},{"slug":"remocn.staggered-fade-up","name":"staggered-fade-up","title":"Staggered Fade Up","summary":"Words fade in and slide up one after another with a configurable delay.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"staggerDelay","type":"number"},{"id":"distance","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/staggered-fade-up","docs":"https://remocn.dev/docs/typography/staggered-fade-up","source":"https://remocn.dev/r/staggered-fade-up.json","license":"MIT","runs":"local"},{"slug":"remocn.stepper","name":"stepper","title":"UI Stepper","summary":"A horizontal onboarding stepper whose progress is a pure function of a continuous step index (value-channel deviation). Every circle (fill, number…","registry":"remocn","framework":"remotion","layer":"component","category":"steps","also":["mock-ui","timers","transitions"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"activeIndex","type":"number"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/stepper","docs":"https://remocn.dev/docs/ui/components/stepper","source":"https://remocn.dev/r/stepper.json","license":"MIT","runs":"local"},{"slug":"remocn.stop-motion","name":"stop-motion","title":"Stop Motion Clock","summary":"Quantized stop-motion clock for Remotion. Stepped frames, stepped springs, deterministic hashing, and per-pose paper jitter.","registry":"remocn","framework":"remotion","layer":"lib","category":"utilities","tags":["remocn"],"author":"Kapish Dima","aspect":"any","install":"npx shadcn@latest add @remocn/stop-motion","docs":"https://remocn.dev/docs/components","source":"https://remocn.dev/r/stop-motion.json","license":"MIT","runs":"local"},{"slug":"remocn.stretch-in","name":"stretch-in","title":"Stretch In","summary":"Letters fly in from off-canvas and smear horizontally on the way — a vertex-lag deformation, not a scale.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"fill","type":"string"},{"id":"fontSize","type":"number"},{"id":"entryStagger","type":"number"},{"id":"travelFrames","type":"number"},{"id":"vertexLagFrames","type":"number"}],"install":"npx shadcn@latest add @remocn/stretch-in","docs":"https://remocn.dev/docs/typography/stretch-in","source":"https://remocn.dev/r/stretch-in.json","license":"MIT","runs":"local"},{"slug":"remocn.strikethrough-replace","name":"strikethrough-replace","title":"Strikethrough Replace","summary":"Draws a strike line across old text then reveals new text in its place.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"from","type":"string"},{"id":"to","type":"string"},{"id":"lineColor","type":"color"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/strikethrough-replace","docs":"https://remocn.dev/docs/typography/strikethrough-replace","source":"https://remocn.dev/r/strikethrough-replace.json","license":"MIT","runs":"local"},{"slug":"remocn.string-art","name":"string-art","title":"String Art","summary":"Threads string a ring of pins times-table style while the multiplier morphs from cardioid to nephroid and beyond.","registry":"remocn","framework":"remotion","layer":"component","category":"generative","tags":["motion-graphics"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"pins","type":"number"},{"id":"from","type":"number"},{"id":"to","type":"number"},{"id":"morphFrames","type":"number"},{"id":"sweep","type":"number"},{"id":"threadOpacity","type":"number"},{"id":"showLabel","type":"boolean"},{"id":"background","type":"color"},{"id":"color","type":"color"},{"id":"accent","type":"color"}],"install":"npx shadcn@latest add @remocn/string-art","docs":"https://remocn.dev/docs/motion-graphics/string-art","source":"https://remocn.dev/r/string-art.json","license":"MIT","runs":"local"},{"slug":"remocn.stripe-type","name":"stripe-type","title":"Stripe Type","summary":"A word cut into horizontal bands, as in the IBM logo, slides together from alternating sides and locks, then can pass on through.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"color","type":"color"},{"id":"settle","type":"string"},{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"stripes","type":"number"},{"id":"gap","type":"number"},{"id":"hold","type":"number"},{"id":"exit","type":"boolean"}],"install":"npx shadcn@latest add @remocn/stripe-type","docs":"https://remocn.dev/docs/typography/stripe-type","source":"https://remocn.dev/r/stripe-type.json","license":"MIT","runs":"local"},{"slug":"remocn.sustained-glitch","name":"sustained-glitch","title":"Sustained Glitch","summary":"Broadcast corruption held over a scene in scheduled bursts: slices tear sideways, channels split, and blocks fill with picture pulled from somewhere else — then the frame rests clean until the next hit.","registry":"remocn","framework":"remotion","layer":"primitive","category":"filters","also":["hud","particles"],"tags":["filters"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"intensity","type":"number"},{"id":"frequency","type":"number"},{"id":"slices","type":"number"},{"id":"seed","type":"number"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/sustained-glitch","docs":"https://remocn.dev/docs/filters/components/sustained-glitch","source":"https://remocn.dev/r/sustained-glitch.json","license":"MIT","runs":"local"},{"slug":"remocn.swirl-dissolve","name":"swirl-dissolve","title":"Swirl Dissolve","summary":"A swirl shader transition that unwinds open and winds shut to reveal the next scene.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"bandCount","type":"number"},{"id":"softness","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-swirl"],"install":"npx shadcn@latest add @remocn/swirl-dissolve","docs":"https://remocn.dev/docs/transitions/swirl-dissolve","source":"https://remocn.dev/r/swirl-dissolve.json","license":"MIT","runs":"local"},{"slug":"remocn.switch","name":"switch","title":"UI Switch","summary":"A switch whose checked/unchecked state is a pure function of the timeline; the track fill and sliding thumb are keyframed presets.","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"label","type":"string"},{"id":"size","type":"string"},{"id":"state","type":"string"},{"id":"primary","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/switch","docs":"https://remocn.dev/docs/ui/components/switch","source":"https://remocn.dev/r/switch.json","license":"MIT","runs":"local"},{"slug":"remocn.synthwave","name":"synthwave","title":"Synthwave","summary":"A retro neon horizon: a scrolling perspective grid, a rising striped sun and mountain ranges that slide in.","registry":"remocn","framework":"remotion","layer":"primitive","category":"filters","tags":["graphic-looks"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"gridSpeed","type":"number"},{"id":"horizon","type":"number"},{"id":"sunStripes","type":"boolean"},{"id":"grid","type":"string"},{"id":"sunTop","type":"string"},{"id":"sunBottom","type":"string"},{"id":"skyHorizon","type":"string"}],"install":"npx shadcn@latest add @remocn/synthwave","docs":"https://remocn.dev/docs/graphic-looks/synthwave","source":"https://remocn.dev/r/synthwave.json","license":"MIT","runs":"local"},{"slug":"remocn.tabs","name":"tabs","title":"UI Tabs","summary":"A tabs widget whose active-tab state is a pure function of the timeline; the sliding indicator, label colors, and panel crossfade are keyframed/derived presets.","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","transitions"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"state","type":"string"},{"id":"variant","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/tabs","docs":"https://remocn.dev/docs/ui/components/tabs","source":"https://remocn.dev/r/tabs.json","license":"MIT","runs":"local"},{"slug":"remocn.telegram-chat-flow","name":"telegram-chat-flow","title":"UI Telegram Chat Flow","summary":"A Telegram-styled messaging composition: tailed bubbles (white incoming, blue outgoing) with in-bubble timestamps and delivery checks, a header that flips to 'typing…' while the other side replies, reaction chips…","registry":"remocn","framework":"remotion","layer":"component","category":"chats","also":["mock-ui","steps","text-effects"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","deps":["remocn-ui","caret"],"install":"npx shadcn@latest add @remocn/telegram-chat-flow","docs":"https://remocn.dev/docs/ui/blocks/telegram-chat-flow","source":"https://remocn.dev/r/telegram-chat-flow.json","license":"MIT","runs":"local"},{"slug":"remocn.terminal-cursor-zoom","name":"terminal-cursor-zoom","title":"Terminal Cursor Zoom","summary":"Camera locked to the typing cursor, dollying across a terminal as a command types at high zoom.","registry":"remocn","framework":"remotion","layer":"block","category":"code","also":["cursors","camera","text-effects"],"tags":["ui-blocks"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":3,"slots":[{"id":"command","type":"string"},{"id":"zoom","type":"number"},{"id":"fontSize","type":"number"},{"id":"prompt","type":"string"},{"id":"title","type":"string"}],"deps":["terminal-simulator"],"install":"npx shadcn@latest add @remocn/terminal-cursor-zoom","docs":"https://remocn.dev/docs/ui-blocks/terminal-cursor-zoom","source":"https://remocn.dev/r/terminal-cursor-zoom.json","license":"MIT","runs":"local"},{"slug":"remocn.terminal-simulator","name":"terminal-simulator","title":"Terminal Simulator","summary":"Terminal window that types out commands and rolls old lines off the top.","registry":"remocn","framework":"remotion","layer":"block","category":"code","tags":["ui-blocks"],"author":"Kapish Dima","canvas":{"w":1280,"h":720},"aspect":"16:9","duration":8,"slots":[{"id":"prompt","type":"string"},{"id":"title","type":"string"},{"id":"background","type":"color"},{"id":"chromeColor","type":"color"},{"id":"fontSize","type":"number"},{"id":"charsPerFrame","type":"number"},{"id":"chunkSize","type":"number"}],"install":"npx shadcn@latest add @remocn/terminal-simulator","docs":"https://remocn.dev/docs/ui-blocks/terminal-simulator","source":"https://remocn.dev/r/terminal-simulator.json","license":"MIT","runs":"local"},{"slug":"remocn.tiny-planet","name":"tiny-planet","title":"Tiny Planet","summary":"A seeded flat skyline bends into a tiny planet through a polar remap, then slowly spins beside a red sun.","registry":"remocn","framework":"remotion","layer":"primitive","category":"camera","tags":["camera"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"buildings","type":"number"},{"id":"spin","type":"number"},{"id":"seed","type":"number"},{"id":"skyColor","type":"color"},{"id":"sunColor","type":"color"},{"id":"buildingColor","type":"color"},{"id":"groundColor","type":"color"}],"install":"npx shadcn@latest add @remocn/tiny-planet","docs":"https://remocn.dev/docs/camera/tiny-planet","source":"https://remocn.dev/r/tiny-planet.json","license":"MIT","runs":"local"},{"slug":"remocn.toast","name":"toast","title":"UI Toast","summary":"A toast notification whose hidden/visible state is a pure function of the timeline. The Toast renderer is a pure function of a ToastStyle (opacity, translateY…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["social-cards","steps","transitions"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"title","type":"string"},{"id":"description","type":"string"},{"id":"variant","type":"string"},{"id":"state","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/toast","docs":"https://remocn.dev/docs/ui/components/toast","source":"https://remocn.dev/r/toast.json","license":"MIT","runs":"local"},{"slug":"remocn.toggle-group","name":"toggle-group","title":"UI Toggle Group","summary":"A segmented control whose active value is a pure function of the timeline; a raised thumb SLIDES between segments (position + width derived from a float indicator offset…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","transitions"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"state","type":"string"},{"id":"size","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/toggle-group","docs":"https://remocn.dev/docs/ui/components/toggle-group","source":"https://remocn.dev/r/toggle-group.json","license":"MIT","runs":"local"},{"slug":"remocn.tooltip","name":"tooltip","title":"UI Tooltip","summary":"A tooltip whose hidden/visible state is a pure function of the timeline. The Tooltip renderer is a pure function of a TooltipStyle (opacity, scale, translate); useTooltipTransition eases both the show and the hide…","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","also":["steps","transitions"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"label","type":"string"},{"id":"side","type":"string"},{"id":"state","type":"string"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/tooltip","docs":"https://remocn.dev/docs/ui/components/tooltip","source":"https://remocn.dev/r/tooltip.json","license":"MIT","runs":"local"},{"slug":"remocn.top-down-letters","name":"top-down-letters","title":"Top-Down Letters","summary":"Letters descend from above in a pronounced staircase, one symbol at a time, with zero blur.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"staggerDelay","type":"number"},{"id":"distance","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/top-down-letters","docs":"https://remocn.dev/docs/typography/top-down-letters","source":"https://remocn.dev/r/top-down-letters.json","license":"MIT","runs":"local"},{"slug":"remocn.topo-lines","name":"topo-lines","title":"Topo Lines","summary":"Topographic contour lines around a few seeded peaks breathe and shift in a seamless loop, one contour picked out in the accent color.","registry":"remocn","framework":"remotion","layer":"component","category":"generative","tags":["motion-graphics"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"levels","type":"number"},{"id":"peaks","type":"number"},{"id":"highlight","type":"number"},{"id":"indexEvery","type":"number"},{"id":"loopFrames","type":"number"},{"id":"seed","type":"number"},{"id":"background","type":"color"},{"id":"color","type":"color"},{"id":"accent","type":"color"}],"install":"npx shadcn@latest add @remocn/topo-lines","docs":"https://remocn.dev/docs/motion-graphics/topo-lines","source":"https://remocn.dev/r/topo-lines.json","license":"MIT","runs":"local"},{"slug":"remocn.tracking-in","name":"tracking-in","title":"Tracking In","summary":"Letter-spacing collapses and blur clears with a springy motion.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"startTracking","type":"number"},{"id":"startBlur","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/tracking-in","docs":"https://remocn.dev/docs/typography/tracking-in","source":"https://remocn.dev/r/tracking-in.json","license":"MIT","runs":"local"},{"slug":"remocn.trim-burst","name":"trim-burst","title":"Trim Burst","summary":"A ring of short straight strokes shoots out from a point like Trim Paths: each end races ahead on a hard-braking ease-out while its start holds, then chases it on a smoother ease-in-out, so every stroke grows…","registry":"remocn","framework":"remotion","layer":"component","category":"particles","tags":["motion-graphics"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"count","type":"number"},{"id":"innerRadius","type":"number"},{"id":"reach","type":"number"},{"id":"strokeLength","type":"number"},{"id":"weight","type":"number"},{"id":"rotation","type":"number"},{"id":"spread","type":"number"},{"id":"jitter","type":"number"},{"id":"dots","type":"boolean"},{"id":"cap","type":"string"},{"id":"color","type":"color"},{"id":"seed","type":"number"},{"id":"delay","type":"number"},{"id":"x","type":"number"},{"id":"y","type":"number"}],"install":"npx shadcn@latest add @remocn/trim-burst","docs":"https://remocn.dev/docs/motion-graphics/trim-burst","source":"https://remocn.dev/r/trim-burst.json","license":"MIT","runs":"local"},{"slug":"remocn.truchet-flip","name":"truchet-flip","title":"Truchet Flip","summary":"Quarter-circle Truchet tiles snap a quarter turn as a wave crosses the grid, rerouting continuous lines until they settle into concentric loops, a calm field, or a circle of small rings.","registry":"remocn","framework":"remotion","layer":"component","category":"generative","tags":["motion-graphics"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"tiles","type":"number"},{"id":"weight","type":"number"},{"id":"passes","type":"number"},{"id":"waveMode","type":"string"},{"id":"resolve","type":"string"},{"id":"variant","type":"string"},{"id":"color","type":"color"},{"id":"secondaryColor","type":"color"},{"id":"seed","type":"number"},{"id":"loop","type":"boolean"}],"install":"npx shadcn@latest add @remocn/truchet-flip","docs":"https://remocn.dev/docs/motion-graphics/truchet-flip","source":"https://remocn.dev/r/truchet-flip.json","license":"MIT","runs":"local"},{"slug":"remocn.turntable","name":"turntable","title":"Turntable","summary":"A product card spins on an invisible turntable through front, edge and back in real 3D, with face shading and a breathing floor shadow.","registry":"remocn","framework":"remotion","layer":"primitive","category":"camera","tags":["camera"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"turns","type":"number"},{"id":"thickness","type":"number"},{"id":"tilt","type":"number"},{"id":"frontColor","type":"color"},{"id":"edgeColor","type":"color"},{"id":"backColor","type":"color"},{"id":"backgroundColor","type":"color"}],"install":"npx shadcn@latest add @remocn/turntable","docs":"https://remocn.dev/docs/camera/turntable","source":"https://remocn.dev/r/turntable.json","license":"MIT","runs":"local"},{"slug":"remocn.tv-power-off","name":"tv-power-off","title":"TV Power Off","summary":"End a scene the way a tube does: the picture collapses into a glowing horizontal line, the line pinches to a phosphor dot, the dot decays, and the frame is left dead black.","registry":"remocn","framework":"remotion","layer":"primitive","category":"textures","tags":["effects"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"durationInFrames","type":"number"},{"id":"gain","type":"number"},{"id":"afterglow","type":"number"},{"id":"phosphor","type":"string"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/tv-power-off","docs":"https://remocn.dev/docs/effects/tv-power-off","source":"https://remocn.dev/r/tv-power-off.json","license":"MIT","runs":"local"},{"slug":"remocn.type-fossil","name":"type-fossil","title":"Type Fossil","summary":"A readable word carries layers of fine contours, revises itself, then compresses into a clean typographic imprint.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"drafts","type":"string"},{"id":"layers","type":"number"},{"id":"depth","type":"number"},{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"string"},{"id":"color","type":"color"},{"id":"accentColor","type":"color"},{"id":"backgroundColor","type":"color"}],"install":"npx shadcn@latest add @remocn/type-fossil","docs":"https://remocn.dev/docs/typography/type-fossil","source":"https://remocn.dev/r/type-fossil.json","license":"MIT","runs":"local"},{"slug":"remocn.type-repeater","name":"type-repeater","title":"Type Repeater","summary":"An After Effects style repeater on a word, where copies unfold into a tunnel, a spiral or a fan behind it, breathe, then fold back into the word.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"mode","type":"string"},{"id":"color","type":"color"},{"id":"accent","type":"color"},{"id":"copies","type":"number"},{"id":"fontSize","type":"number"},{"id":"fontWeight","type":"number"},{"id":"outline","type":"boolean"}],"install":"npx shadcn@latest add @remocn/type-repeater","docs":"https://remocn.dev/docs/typography/type-repeater","source":"https://remocn.dev/r/type-repeater.json","license":"MIT","runs":"local"},{"slug":"remocn.type-wall","name":"type-wall","title":"Type Wall","summary":"Rows of one word fill the frame, run in alternating directions at different speeds in heavy, narrow and outline faces, with an accent band through the middle.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"separator","type":"string"},{"id":"color","type":"color"},{"id":"accent","type":"color"},{"id":"accentText","type":"color"},{"id":"fontSize","type":"number"},{"id":"seed","type":"number"}],"install":"npx shadcn@latest add @remocn/type-wall","docs":"https://remocn.dev/docs/typography/type-wall","source":"https://remocn.dev/r/type-wall.json","license":"MIT","runs":"local"},{"slug":"remocn.typed-split-wipe","name":"typed-split-wipe","title":"Typed Split Wipe","summary":"A centered cursorless type build holds, then exits through opposing fixed-layout glyph wipes that leave the anchor visible longest.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"prefix","type":"string"},{"id":"anchor","type":"string"},{"id":"suffix","type":"string"},{"id":"typeFrames","type":"number"},{"id":"exitAt","type":"number"},{"id":"exitFrames","type":"number"},{"id":"wordStagger","type":"number"},{"id":"anchorShift","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/typed-split-wipe","docs":"https://remocn.dev/docs/typography/typed-split-wipe","source":"https://remocn.dev/r/typed-split-wipe.json","license":"MIT","runs":"local"},{"slug":"remocn.typewriter","name":"typewriter","title":"Typewriter","summary":"Character-by-character text reveal with a deterministic blinking cursor.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"cursor","type":"boolean"},{"id":"charsPerSecond","type":"number"},{"id":"fontSize","type":"number"},{"id":"color","type":"color"},{"id":"cursorColor","type":"color"},{"id":"fontWeight","type":"string"}],"deps":["remocn-ui","caret"],"install":"npx shadcn@latest add @remocn/typewriter","docs":"https://remocn.dev/docs/typography/typewriter","source":"https://remocn.dev/r/typewriter.json","license":"MIT","runs":"local"},{"slug":"remocn.typing-indicator","name":"typing-indicator","title":"UI Typing Indicator","summary":"A continuous typing animation: N dots bounce with a staggered sine wave. A motion atom — it reads the frame and takes color, size, gap, and speed props, defaulting to currentColor so it inherits the bubble it sits in.","registry":"remocn","framework":"remotion","layer":"component","category":"chats","also":["mock-ui","text-effects","entrances"],"tags":["ui"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"dotCount","type":"number"},{"id":"size","type":"number"},{"id":"amplitude","type":"number"}],"deps":["remocn-ui"],"install":"npx shadcn@latest add @remocn/typing-indicator","docs":"https://remocn.dev/docs/ui/components/typing-indicator","source":"https://remocn.dev/r/typing-indicator.json","license":"MIT","runs":"local"},{"slug":"remocn.underwater-ripple","name":"underwater-ripple","title":"Underwater Ripple","summary":"Hold a scene under moving water: every pixel is read through a layered refraction field that closes on a whole number of cycles, with colour fringing where the water bends hardest.","registry":"remocn","framework":"remotion","layer":"primitive","category":"filters","tags":["filters"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"amplitude","type":"number"},{"id":"scale","type":"number"},{"id":"dispersion","type":"number"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/underwater-ripple","docs":"https://remocn.dev/docs/filters/components/underwater-ripple","source":"https://remocn.dev/r/underwater-ripple.json","license":"MIT","runs":"local"},{"slug":"remocn.v0","name":"v0","title":"v0","summary":"Animated Vercel v0 composer — types a prompt into the dark textarea and the mic button morphs into a send button. Dark/light themes.","registry":"remocn","framework":"remotion","layer":"component","category":"mock-ui","tags":["ai"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"greeting","type":"string"},{"id":"placeholder","type":"string"},{"id":"prompt","type":"string"},{"id":"modelName","type":"string"},{"id":"projectName","type":"string"}],"deps":["caret","remocn-ui"],"install":"npx shadcn@latest add @remocn/v0","docs":"https://remocn.dev/docs/ai/v0","source":"https://remocn.dev/r/v0.json","license":"MIT","runs":"local"},{"slug":"remocn.value-swap","name":"value-swap","title":"Value Swap","summary":"Swaps a value in place with a vertical slide — the old value exits up as the new one enters from below while an invisible sizer keeps the width stable.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"duration","type":"number"},{"id":"distance","type":"number"},{"id":"direction","type":"string"}],"install":"npx shadcn@latest add @remocn/value-swap","docs":"https://remocn.dev/docs/typography/value-swap","source":"https://remocn.dev/r/value-swap.json","license":"MIT","runs":"local"},{"slug":"remocn.venetian-blinds","name":"venetian-blinds","title":"Venetian Blinds","summary":"The outgoing scene splits into horizontal slats that turn edge-on in a staggered ripple, revealing the next scene behind them.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"slats","type":"number"},{"id":"stagger","type":"number"},{"id":"direction","type":"string"},{"id":"shadeColor","type":"color"}],"install":"npx shadcn@latest add @remocn/venetian-blinds","docs":"https://remocn.dev/docs/transitions/venetian-blinds","source":"https://remocn.dev/r/venetian-blinds.json","license":"MIT","runs":"local"},{"slug":"remocn.vhs-filter","name":"vhs-filter","title":"VHS Filter","summary":"Hold a scene under analog tape: chroma bleeds sideways off every edge, rows wobble out of line, the bottom of the frame tears on the head switch, and luma noise settles over all of it.","registry":"remocn","framework":"remotion","layer":"primitive","category":"textures","also":["generative"],"tags":["filters"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"bleed","type":"number"},{"id":"wobble","type":"number"},{"id":"noise","type":"number"},{"id":"intensity","type":"number"}],"deps":["canvas-presentation"],"install":"npx shadcn@latest add @remocn/vhs-filter","docs":"https://remocn.dev/docs/filters/components/vhs-filter","source":"https://remocn.dev/r/vhs-filter.json","license":"MIT","runs":"local"},{"slug":"remocn.warp-dissolve","name":"warp-dissolve","title":"Warp Dissolve","summary":"A domain-warp shader transition that melts the outgoing scene into a folding color field and straightens back out into the next.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"distortion","type":"number"},{"id":"swirl","type":"number"},{"id":"softness","type":"number"}],"deps":["shader-warp"],"install":"npx shadcn@latest add @remocn/warp-dissolve","docs":"https://remocn.dev/docs/transitions/warp-dissolve","source":"https://remocn.dev/r/warp-dissolve.json","license":"MIT","runs":"local"},{"slug":"remocn.wave-wipe","name":"wave-wipe","title":"Wave Wipe","summary":"A grain-gradient wave that sweeps up across the frame, covering the outgoing scene and revealing the next one from below.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"intensity","type":"number"},{"id":"softness","type":"number"},{"id":"noise","type":"number"},{"id":"colorBack","type":"color"}],"deps":["shader-grain-gradient"],"install":"npx shadcn@latest add @remocn/wave-wipe","docs":"https://remocn.dev/docs/transitions/wave-wipe","source":"https://remocn.dev/r/wave-wipe.json","license":"MIT","runs":"local"},{"slug":"remocn.whip-pan","name":"whip-pan","title":"Whip Pan","summary":"A whip-pan transition that flies both scenes through the frame in one move with velocity-based motion blur.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"direction","type":"string"},{"id":"blur","type":"number"}],"install":"npx shadcn@latest add @remocn/whip-pan","docs":"https://remocn.dev/docs/transitions/whip-pan","source":"https://remocn.dev/r/whip-pan.json","license":"MIT","runs":"local"},{"slug":"remocn.word-push","name":"word-push","title":"Word Push","summary":"A phrase builds from its first word centered: each next word drives in from the right and pushes the line left, easing into the new center.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"fontSize","type":"number"},{"id":"wordGap","type":"number"},{"id":"accel","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/word-push","docs":"https://remocn.dev/docs/typography/word-push","source":"https://remocn.dev/r/word-push.json","license":"MIT","runs":"local"},{"slug":"remocn.word-stream","name":"word-stream","title":"Word Stream","summary":"Voiceover-paced phrases that build word by word — the next word looms as a blurred ghost before it resolves, then the phrase cuts away.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","also":["kinetic-type"],"tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"fontSize","type":"number"},{"id":"wordGap","type":"number"},{"id":"hold","type":"number"},{"id":"drift","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/word-stream","docs":"https://remocn.dev/docs/typography/word-stream","source":"https://remocn.dev/r/word-stream.json","license":"MIT","runs":"local"},{"slug":"remocn.workflow-console","name":"workflow-console","title":"Workflow Console","summary":"An independent 46.8-second release automation demo with typed commands, environment diagrams, pipeline metrics, and an original node mark.","registry":"remocn","framework":"remotion","layer":"template","category":"code","also":["steps","diagrams","stats"],"tags":["templates"],"author":"Kapish Dima","canvas":{"w":1920,"h":1080},"aspect":"16:9","duration":46.8,"slots":[{"id":"productName","type":"string"},{"id":"accentColor","type":"color"},{"id":"backgroundColor","type":"color"}],"deps":["typed-split-wipe","caret"],"install":"npx shadcn@latest add @remocn/workflow-console","docs":"https://remocn.dev/docs/templates/workflow-console","source":"https://remocn.dev/r/workflow-console.json","license":"MIT","runs":"local"},{"slug":"remocn.x-follow-card","name":"x-follow-card","title":"X Follow Card","summary":"Animated X profile follow card — spring bounce-in, staggered blur-in, a synthetic cursor that clicks Follow and flips it to Following. Light/dark, horizontal or vertical.","registry":"remocn","framework":"remotion","layer":"component","category":"social-cards","tags":["social"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"name","type":"string"},{"id":"handle","type":"string"},{"id":"bio","type":"string"},{"id":"avatarUrl","type":"string"},{"id":"coverUrl","type":"string"},{"id":"location","type":"string"},{"id":"website","type":"string"},{"id":"joined","type":"string"},{"id":"verified","type":"boolean"},{"id":"accentColor","type":"color"},{"id":"orientation","type":"string"}],"deps":["cursor"],"install":"npx shadcn@latest add @remocn/x-follow-card","docs":"https://remocn.dev/docs/social/x-follow-card","source":"https://remocn.dev/r/x-follow-card.json","license":"MIT","runs":"local"},{"slug":"remocn.x-followers-overview","name":"x-followers-overview","title":"X Followers Overview","summary":"X follow notifications cycle through as 3D flipping text — '<name> followed you · 7h' — then the total follower count pops in with a confetti burst. Hardcoded sample list (X API ready). Light/dark…","registry":"remocn","framework":"remotion","layer":"component","category":"social-cards","tags":["social"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"totalFollowers","type":"number"},{"id":"handle","type":"string"},{"id":"avatarUrl","type":"string"},{"id":"accentColor","type":"color"},{"id":"orientation","type":"string"}],"deps":["confetti"],"install":"npx shadcn@latest add @remocn/x-followers-overview","docs":"https://remocn.dev/docs/social/x-followers-overview","source":"https://remocn.dev/r/x-followers-overview.json","license":"MIT","runs":"local"},{"slug":"remocn.x-ray-scan","name":"x-ray-scan","title":"X-Ray Scan","summary":"A glowing scanner bar sweeps across a device, turning the shell dark and revealing white-line internals with one part in red.","registry":"remocn","framework":"remotion","layer":"primitive","category":"filters","also":["devices","entrances"],"tags":["graphic-looks"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"direction","type":"string"},{"id":"shell","type":"string"},{"id":"accent","type":"color"},{"id":"line","type":"string"},{"id":"background","type":"color"}],"install":"npx shadcn@latest add @remocn/x-ray-scan","docs":"https://remocn.dev/docs/graphic-looks/x-ray-scan","source":"https://remocn.dev/r/x-ray-scan.json","license":"MIT","runs":"local"},{"slug":"remocn.zoom-blur","name":"zoom-blur","title":"Zoom Blur","summary":"A depth punch-in transition that pushes the outgoing scene through the viewer while the incoming one resolves out of blur.","registry":"remocn","framework":"remotion","layer":"primitive","category":"transitions","tags":["transitions"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"blur","type":"number"},{"id":"rise","type":"number"}],"install":"npx shadcn@latest add @remocn/zoom-blur","docs":"https://remocn.dev/docs/transitions/zoom-blur","source":"https://remocn.dev/r/zoom-blur.json","license":"MIT","runs":"local"},{"slug":"remocn.zoom-words","name":"zoom-words","title":"Zoom Words","summary":"A close-up word reveal: huge words fade into a long line while the camera rides the write head, the line streaming off-frame as the shot eases into focus.","registry":"remocn","framework":"remotion","layer":"primitive","category":"text-effects","tags":["typography"],"author":"Kapish Dima","aspect":"any","slots":[{"id":"text","type":"string"},{"id":"fontSize","type":"number"},{"id":"wordGap","type":"number"},{"id":"zoom","type":"number"},{"id":"anchor","type":"number"},{"id":"blur","type":"number"},{"id":"blurFrames","type":"number"},{"id":"color","type":"color"},{"id":"fontWeight","type":"string"}],"install":"npx shadcn@latest add @remocn/zoom-words","docs":"https://remocn.dev/docs/typography/zoom-words","source":"https://remocn.dev/r/zoom-words.json","license":"MIT","runs":"local"},{"slug":"glt.cross-zoom","name":"cross-zoom","title":"CrossZoom","summary":"The first shot rushes into a radial zoom blur that bursts open and resolves on the next shot","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","zoom","blur","crossfade","energetic","glsl","mit"],"author":"rectalogic","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/CrossZoom","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/CrossZoom.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/2150ba674cf9/lib-gl-transitions-cross-zoom.webp","video":"https://s3.varg.ai/how-to/previews/d162efca1c14/lib-gl-transitions-cross-zoom.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"CrossZoom\" by rectalogic (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"CrossZoom\" transition from GL Transitions (by rectalogic, MIT; https://gl-transitions.com/editor/CrossZoom, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/CrossZoom.glsl) on the cut from the hook to scene 2: 0.7 s, ease-in-out. It reads as a punch-in, so land it on a beat or a whoosh. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"CrossZoom\", params: { strength: 0.4 } })}` and `timing={linearTiming({ durationInFrames: 21, easing: Easing.inOut(Easing.cubic) })}` (21 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 0.7, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. Tune `strength` (0.4 default; 0.2 for a gentle push, 0.6+ for a violent rush)."},{"slug":"glt.dreamy-zoom","name":"dreamy-zoom","title":"DreamyZoom","summary":"Zooms and twists into a white flash, then spins back out onto the next shot","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","zoom","rotate","flash","dreamy","glsl","mit"],"author":"zeh-fernando","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/DreamyZoom","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DreamyZoom.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/f516235fbd03/lib-gl-transitions-dreamy-zoom.webp","video":"https://s3.varg.ai/how-to/previews/734658abbdfd/lib-gl-transitions-dreamy-zoom.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"DreamyZoom\" by Zeh Fernando (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"DreamyZoom\" transition from GL Transitions (by Zeh Fernando, MIT; https://gl-transitions.com/editor/DreamyZoom, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DreamyZoom.glsl) between two scenes that jump in place or time: 1 s, ease-in-out. The white peak at the midpoint hides the swap; sync it with a hit or the top of a riser. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"DreamyZoom\", params: { rotation: 6, scale: 1.2 } })}` and `timing={linearTiming({ durationInFrames: 30, easing: Easing.inOut(Easing.cubic) })}` (30 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `rotation` is in degrees (6 default; 0 for a straight zoom, 20+ for a spin) and `scale` sets how deep it zooms (1.2)."},{"slug":"glt.directional-warp","name":"directional-warp","title":"DirectionalWarp","summary":"A diagonal wipe whose leading edge smears and stretches the pixels it passes over","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","wipe","warp","diagonal","swipe","glsl","mit"],"author":"pschroen","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/DirectionalWarp","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DirectionalWarp.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/94ebaf27d836/lib-gl-transitions-directional-warp.webp","video":"https://s3.varg.ai/how-to/previews/d16737699632/lib-gl-transitions-directional-warp.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"DirectionalWarp\" by pschroen (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"DirectionalWarp\" transition from GL Transitions (by pschroen, MIT; https://gl-transitions.com/editor/DirectionalWarp, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DirectionalWarp.glsl) between two product or B-roll shots: 0.8 s, ease-in-out. It moves like a fast finger swipe, which suits social cuts. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"DirectionalWarp\", params: { direction: [-1, 1], smoothness: 0.1 } })}` and `timing={linearTiming({ durationInFrames: 24, easing: Easing.inOut(Easing.cubic) })}` (24 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 0.8, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `direction` sets the sweep (vec2(-1, 1) default; vec2(1, 0) sweeps horizontally) and `smoothness` (0.1) softens the warped edge."},{"slug":"glt.linear-blur","name":"linear-blur","title":"LinearBlur","summary":"Both shots soften into a heavy blur, crossfade, then pull back into focus on the next","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","blur","crossfade","soft","focus","glsl","mit"],"author":"gre","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/LinearBlur","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/LinearBlur.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/120e7a2e5e29/lib-gl-transitions-linear-blur.webp","video":"https://s3.varg.ai/how-to/previews/ff415c28465c/lib-gl-transitions-linear-blur.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"LinearBlur\" by gre (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"LinearBlur\" transition from GL Transitions (by gre, MIT; https://gl-transitions.com/editor/LinearBlur, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/LinearBlur.glsl) between two calm scenes, or into a title card: 0.9 s, ease-in-out. A softer alternative to a plain dissolve that also hides mismatched framing. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"LinearBlur\", params: { intensity: 0.1 } })}` and `timing={linearTiming({ durationInFrames: 27, easing: Easing.inOut(Easing.cubic) })}` (27 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 0.9, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `intensity` is the blur radius (0.1 default; 0.04 subtle, 0.2 heavy)."},{"slug":"glt.burn-through","name":"burn-through","title":"BurnThrough","summary":"Noisy holes burn through the first shot with glowing orange edges, revealing the next","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","burn","fire","glow","noise","glsl","mit"],"author":"liubailin2020","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/BurnThrough","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/BurnThrough.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/7a8e6891a6df/lib-gl-transitions-burn-through.webp","video":"https://s3.varg.ai/how-to/previews/94e0e8ca51a7/lib-gl-transitions-burn-through.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"BurnThrough\" by liubailin2020 (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"BurnThrough\" transition from GL Transitions (by liubailin2020, MIT; https://gl-transitions.com/editor/BurnThrough, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/BurnThrough.glsl) on a dramatic cut, for example into the reveal or the end card: 1.2 s, linear progress. It reads like paper catching fire. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"BurnThrough\", params: { burnColor: [1.0, 0.5, 0.0] } })}` and `timing={linearTiming({ durationInFrames: 36 })}` (36 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1.2, 0, 1); never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `burnColor` is the edge glow as RGB (vec3(1.0, 0.5, 0.0) is orange; vec3(0.3, 0.6, 1.0) gives an electric blue)."},{"slug":"glt.glitch-memories","name":"glitch-memories","title":"GlitchMemories","summary":"A crossfade broken into offset, color-split blocks, like a corrupted video file","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","glitch","rgb-split","crossfade","digital","glsl","mit"],"author":"gunnar-roth","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/GlitchMemories","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/GlitchMemories.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/75c93742e8f7/lib-gl-transitions-glitch-memories.webp","video":"https://s3.varg.ai/how-to/previews/18d251ba164a/lib-gl-transitions-glitch-memories.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"GlitchMemories\" by Gunnar Roth (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"GlitchMemories\" transition from GL Transitions (by Gunnar Roth, MIT; https://gl-transitions.com/editor/GlitchMemories, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/GlitchMemories.glsl) between fast scenes of a tech or gaming edit: 0.6 s, linear progress. Stack it with a glitch sound effect. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"GlitchMemories\" })}` and `timing={linearTiming({ durationInFrames: 18 })}` (18 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 0.6, 0, 1); never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. It has no parameters; timing is the control (0.3 s hits hard, 1 s lingers)."},{"slug":"glt.glitch-displace","name":"glitch-displace","title":"GlitchDisplace","summary":"The frame liquefies into a washed-out displacement glitch and snaps onto the next shot","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","glitch","displace","liquid","digital","glsl","mit"],"author":"matt-deslauriers","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/GlitchDisplace","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/GlitchDisplace.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/97e91ff2fa81/lib-gl-transitions-glitch-displace.webp","video":"https://s3.varg.ai/how-to/previews/b5f07bb5d839/lib-gl-transitions-glitch-displace.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"GlitchDisplace\" by Matt DesLauriers (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"GlitchDisplace\" transition from GL Transitions (by Matt DesLauriers, MIT; https://gl-transitions.com/editor/GlitchDisplace, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/GlitchDisplace.glsl) between the problem and the solution beats of an ad: 0.7 s, ease-in-out. The image smears and desaturates at the midpoint, then lands clean. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"GlitchDisplace\" })}` and `timing={linearTiming({ durationInFrames: 21, easing: Easing.inOut(Easing.cubic) })}` (21 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 0.7, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. It has no parameters; 0.4 s feels like a hit, 1 s like a melt."},{"slug":"glt.strip-datamosh-glitch","name":"strip-datamosh-glitch","title":"StripDatamoshGlitch","summary":"Datamosh: torn horizontal strips, chroma shift and scan noise drag the first shot into the next","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","glitch","datamosh","chromatic","scanlines","glsl","mit"],"author":"bread","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/StripDatamoshGlitch","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/StripDatamoshGlitch.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/e77664f36413/lib-gl-transitions-strip-datamosh-glitch.webp","video":"https://s3.varg.ai/how-to/previews/fefcf6d5350c/lib-gl-transitions-strip-datamosh-glitch.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"StripDatamoshGlitch\" by bread (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"StripDatamoshGlitch\" transition from GL Transitions (by bread, MIT; https://gl-transitions.com/editor/StripDatamoshGlitch, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/StripDatamoshGlitch.glsl) on a hard beat in a music or gaming edit: 0.6 s, linear progress. It is busy on purpose; keep it short. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"StripDatamoshGlitch\", params: { strength: 1.0, chroma: 0.032, tear: 0.18 } })}` and `timing={linearTiming({ durationInFrames: 18 })}` (18 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 0.6, 0, 1); never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. Of its nine uniforms the useful ones are `strength` (1.0), `horizontalBars` (42) and `verticalSlits` (18) for strip density, `chroma` (0.032) for the RGB split, `tear` (0.18) and `flashAmount` (0.2)."},{"slug":"glt.revolve","name":"revolve","title":"Revolve","summary":"The first shot spins into a zooming, motion-blurred vortex that unwinds into the next","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","spin","zoom","swirl","motion-blur","glsl","mit"],"author":"bread","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/Revolve","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Revolve.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/d0917c004a62/lib-gl-transitions-revolve.webp","video":"https://s3.varg.ai/how-to/previews/9ae1dbb6ec20/lib-gl-transitions-revolve.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"Revolve\" by bread (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"Revolve\" transition from GL Transitions (by bread, MIT; https://gl-transitions.com/editor/Revolve, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Revolve.glsl) on a fast cut between two locations: 1 s, ease-in-out. It feels like a whip-spin with real motion blur. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"Revolve\", params: { direction: -1, maxRotation: 1.95, peakZoom: 2.22 } })}` and `timing={linearTiming({ durationInFrames: 30, easing: Easing.inOut(Easing.cubic) })}` (30 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `direction` (-1 or 1) sets the spin, `maxRotation` (1.95) and `peakZoom` (2.22) how violent it gets, `motionBlur` (1.0) the smear and `center` (vec2(0.46, 0.52)) where it spins from."},{"slug":"glt.cube","name":"cube","title":"Cube","summary":"Both shots sit on the faces of a 3D cube that turns over a glossy floor reflection","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","3d","cube","rotate","reflection","glsl","mit"],"author":"gre","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/Cube","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Cube.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/8b26b3e3e1e1/lib-gl-transitions-cube.webp","video":"https://s3.varg.ai/how-to/previews/c62b6d8fdbea/lib-gl-transitions-cube.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"Cube\" by gre (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"Cube\" transition from GL Transitions (by gre, MIT; https://gl-transitions.com/editor/Cube, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Cube.glsl) between two slides of a product carousel or a before/after: 1 s, ease-in-out. The camera pulls back as the cube turns, then pushes in on the new face. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"Cube\", params: { persp: 0.7, unzoom: 0.3, reflection: 0.4, floating: 3.0 } })}` and `timing={linearTiming({ durationInFrames: 30, easing: Easing.inOut(Easing.cubic) })}` (30 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `persp` (0.7) is the perspective, `unzoom` (0.3) how far the camera backs off, `reflection` (0.4) the floor mirror and `floating` (3.0) its gap. Where the shader draws no image it returns transparent pixels, which encode as black: put a backdrop color or a blurred copy of the frame under the canvas."},{"slug":"glt.doorway","name":"doorway","title":"Doorway","summary":"The first shot splits and swings open like double doors as the next shot comes forward","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","3d","doors","reveal","reflection","glsl","mit"],"author":"gre","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/Doorway","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Doorway.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/1c547aa1172e/lib-gl-transitions-doorway.webp","video":"https://s3.varg.ai/how-to/previews/2ddd2e3604c4/lib-gl-transitions-doorway.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"Doorway\" by gre (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"Doorway\" transition from GL Transitions (by gre, MIT; https://gl-transitions.com/editor/Doorway, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Doorway.glsl) into a reveal: a new room, the product, the result: 1.2 s, ease-in-out. The incoming shot grows from the gap between the doors. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"Doorway\", params: { reflection: 0.4, perspective: 0.4, depth: 3.0 } })}` and `timing={linearTiming({ durationInFrames: 36, easing: Easing.inOut(Easing.cubic) })}` (36 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1.2, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `perspective` (0.4) and `depth` (3.0) shape the doors, `reflection` (0.4) the floor mirror. Where the shader draws no image it returns transparent pixels, which encode as black: put a backdrop color or a blurred copy of the frame under the canvas."},{"slug":"glt.swap","name":"swap","title":"Swap","summary":"The two shots slide past each other in 3D, trading places over a reflective floor","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","3d","swap","reflection","carousel","glsl","mit"],"author":"gre","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/Swap","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Swap.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/658af5cff689/lib-gl-transitions-swap.webp","video":"https://s3.varg.ai/how-to/previews/5dcda67e8737/lib-gl-transitions-swap.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"Swap\" by gre (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"Swap\" transition from GL Transitions (by gre, MIT; https://gl-transitions.com/editor/Swap, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Swap.glsl) between two options, versions or products being compared: 1 s, ease-in-out. It reads as \"this one, or this one\". Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"Swap\", params: { reflection: 0.4, perspective: 0.2, depth: 3.0 } })}` and `timing={linearTiming({ durationInFrames: 30, easing: Easing.inOut(Easing.cubic) })}` (30 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `perspective` (0.2) and `depth` (3.0) set how far the cards travel in space, `reflection` (0.4) the floor mirror. Where the shader draws no image it returns transparent pixels, which encode as black: put a backdrop color or a blurred copy of the frame under the canvas."},{"slug":"glt.inverted-page-curl","name":"inverted-page-curl","title":"InvertedPageCurl","summary":"The first shot peels back from the corner like a curling page, revealing the next beneath","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","page-curl","3d","paper","storybook","glsl","bsd-3-clause"],"author":"hewlett-packard","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/InvertedPageCurl","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/InvertedPageCurl.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/a87ec70d7fc2/lib-gl-transitions-inverted-page-curl.webp","video":"https://s3.varg.ai/how-to/previews/5d95936f9b3c/lib-gl-transitions-inverted-page-curl.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"InvertedPageCurl\" by Hewlett-Packard (BSD 3-Clause), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"InvertedPageCurl\" transition from GL Transitions (by Hewlett-Packard, BSD 3-Clause, not MIT: fine in a commercial video, but keep the Hewlett-Packard copyright header if you ship the shader code; https://gl-transitions.com/editor/InvertedPageCurl, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/InvertedPageCurl.glsl) between chapters of a story or the steps of a recipe: 1.2 s, ease-in-out. The underside of the page shows a pale, shaded back. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"InvertedPageCurl\" })}` and `timing={linearTiming({ durationInFrames: 36, easing: Easing.inOut(Easing.cubic) })}` (36 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1.2, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. It has no parameters; to curl a page back in, swap the two scenes and run progress from 1 to 0."},{"slug":"glt.book-flip","name":"book-flip","title":"BookFlip","summary":"The first shot turns over like a book page, right to left, and lands on the next","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","page","flip","3d","book","glsl","mit"],"author":"hong","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/BookFlip","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/BookFlip.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/f8d2b4e4a5f2/lib-gl-transitions-book-flip.webp","video":"https://s3.varg.ai/how-to/previews/b844d95f9cdd/lib-gl-transitions-book-flip.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"BookFlip\" by hong (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"BookFlip\" transition from GL Transitions (by hong, MIT; https://gl-transitions.com/editor/BookFlip, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/BookFlip.glsl) between pages of a lookbook, a menu or a step-by-step: 1 s, ease-in-out. The page folds at the spine in the middle of the frame. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"BookFlip\" })}` and `timing={linearTiming({ durationInFrames: 30, easing: Easing.inOut(Easing.cubic) })}` (30 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. It has no parameters; give it 1.2 s or more so the fold reads on a phone."},{"slug":"glt.stereo-viewer","name":"stereo-viewer","title":"StereoViewer","summary":"Both shots shrink into rounded cards that slide past each other, like a stereo-viewer reel","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","cards","retro","slide","zoom","glsl","bsd-2-clause"],"author":"ted-schundler","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/StereoViewer","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/StereoViewer.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/0accd35832a4/lib-gl-transitions-stereo-viewer.webp","video":"https://s3.varg.ai/how-to/previews/8987012d2f67/lib-gl-transitions-stereo-viewer.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"StereoViewer\" by Ted Schundler (BSD 2-Clause), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"StereoViewer\" transition from GL Transitions (by Ted Schundler, BSD 2-Clause, not MIT: fine in a commercial video, but keep the Ted Schundler copyright header if you ship the shader code; https://gl-transitions.com/editor/StereoViewer, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/StereoViewer.glsl) between photos of a retro slideshow or a memories montage: 1.2 s, ease-in-out. The frame goes fully dark for a beat at the midpoint, between the two cards. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"StereoViewer\", params: { zoom: 0.88, corner_radius: 0.22 } })}` and `timing={linearTiming({ durationInFrames: 36, easing: Easing.inOut(Easing.cubic) })}` (36 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1.2, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `zoom` (0.88, range 0.5–1) is how far the cards shrink and `corner_radius` (0.22) their rounding. Where the shader draws no image it returns transparent pixels, which encode as black: put a backdrop color or a blurred copy of the frame under the canvas."},{"slug":"glt.dreamy","name":"dreamy","title":"Dreamy","summary":"A soft crossfade in which both shots ripple sideways in slow waves, like a dream sequence","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","wave","dreamy","crossfade","flashback","glsl","mit"],"author":"mikolalysenko","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/Dreamy","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Dreamy.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/419cb72d1388/lib-gl-transitions-dreamy.webp","video":"https://s3.varg.ai/how-to/previews/432ab18ce4b4/lib-gl-transitions-dreamy.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"Dreamy\" by mikolalysenko (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"Dreamy\" transition from GL Transitions (by mikolalysenko, MIT; https://gl-transitions.com/editor/Dreamy, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Dreamy.glsl) into a flashback, a memory or a dream: 1.4 s, ease-in-out. It is gentle enough for long holds and slow music. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"Dreamy\" })}` and `timing={linearTiming({ durationInFrames: 42, easing: Easing.inOut(Easing.cubic) })}` (42 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1.4, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. It has no parameters; give it 1.5–2 s for a slower drift."},{"slug":"glt.water-drop","name":"water-drop","title":"WaterDrop","summary":"Rings ripple out from the center like a drop hitting water while the shots crossfade","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","ripple","water","crossfade","calm","glsl","mit"],"author":"pawel-plociennik","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/WaterDrop","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/WaterDrop.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/202d6157d5de/lib-gl-transitions-water-drop.webp","video":"https://s3.varg.ai/how-to/previews/0ce4ed7b8440/lib-gl-transitions-water-drop.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"WaterDrop\" by Paweł Płóciennik (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"WaterDrop\" transition from GL Transitions (by Paweł Płóciennik, MIT; https://gl-transitions.com/editor/WaterDrop, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/WaterDrop.glsl) between calm scenes of a travel, wellness or nature edit: 1.2 s, ease-out. The rings are strongest at the start and settle as the next shot clears. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"WaterDrop\", params: { amplitude: 30, speed: 30 } })}` and `timing={linearTiming({ durationInFrames: 36, easing: Easing.out(Easing.cubic) })}` (36 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1.2, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `amplitude` (30) is the ripple strength and `speed` (30) how many rings pass."},{"slug":"glt.wind","name":"wind","title":"Wind","summary":"A ragged left-to-right wipe that blows the first shot away in horizontal streaks","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","wipe","wind","streaks","whoosh","glsl","mit"],"author":"gre","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/Wind","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Wind.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/6a9033ac4500/lib-gl-transitions-wind.webp","video":"https://s3.varg.ai/how-to/previews/5d61fb5da0e7/lib-gl-transitions-wind.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"Wind\" by gre (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"Wind\" transition from GL Transitions (by gre, MIT; https://gl-transitions.com/editor/Wind, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Wind.glsl) between scenes that move left to right, under a whoosh sound: 0.8 s, ease-in. The torn edge makes it feel faster than a straight wipe. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"Wind\", params: { size: 0.2, reversed: false } })}` and `timing={linearTiming({ durationInFrames: 24, easing: Easing.in(Easing.cubic) })}` (24 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 0.8, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `size` (0.2) is the length of the streaks; set `reversed: true` to blow the other way."},{"slug":"glt.swirl","name":"swirl","title":"Swirl","summary":"Both shots twist into a spinning vortex at the center, then unwind onto the next","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","swirl","vortex","rotate","crossfade","glsl","mit"],"author":"sergey-kosarevsky","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/Swirl","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Swirl.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/28054c933273/lib-gl-transitions-swirl.webp","video":"https://s3.varg.ai/how-to/previews/87ae65e0cee3/lib-gl-transitions-swirl.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"Swirl\" by Sergey Kosarevsky (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"Swirl\" transition from GL Transitions (by Sergey Kosarevsky, MIT; https://gl-transitions.com/editor/Swirl, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Swirl.glsl) between two scenes of a playful or psychedelic edit: 1 s, ease-in-out. The twist peaks at the midpoint, so center that moment on a beat. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"Swirl\" })}` and `timing={linearTiming({ durationInFrames: 30, easing: Easing.inOut(Easing.cubic) })}` (30 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. It has no parameters; slow it to 1.5 s for a hypnotic version."},{"slug":"glt.morph","name":"morph","title":"Morph","summary":"Each shot warps along the other's colors, a liquid morph that melts one image into the next","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","morph","liquid","distort","crossfade","glsl","mit"],"author":"paniq","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/Morph","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Morph.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/20840222be51/lib-gl-transitions-morph.webp","video":"https://s3.varg.ai/how-to/previews/ec38a3719a96/lib-gl-transitions-morph.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"Morph\" by paniq (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"Morph\" transition from GL Transitions (by paniq, MIT; https://gl-transitions.com/editor/Morph, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Morph.glsl) between two similar framings: portrait to portrait, product to product: 1 s, ease-in-out. It works best when the two shots share a composition. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"Morph\", params: { strength: 0.1 } })}` and `timing={linearTiming({ durationInFrames: 30, easing: Easing.inOut(Easing.cubic) })}` (30 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `strength` (0.1) sets how far pixels travel; above 0.3 it gets messy."},{"slug":"glt.butterfly-wave-scrawler","name":"butterfly-wave-scrawler","title":"ButterflyWaveScrawler","summary":"Wavy, color-split ripples scramble the frame into psychedelic bands before the next shot settles","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","wave","chromatic","psychedelic","distort","glsl","mit"],"author":"mandubian","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/ButterflyWaveScrawler","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/ButterflyWaveScrawler.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/f95a0214270f/lib-gl-transitions-butterfly-wave-scrawler.webp","video":"https://s3.varg.ai/how-to/previews/a2eae9495b04/lib-gl-transitions-butterfly-wave-scrawler.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"ButterflyWaveScrawler\" by mandubian (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"ButterflyWaveScrawler\" transition from GL Transitions (by mandubian, MIT; https://gl-transitions.com/editor/ButterflyWaveScrawler, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/ButterflyWaveScrawler.glsl) in a music video or a trippy hook: 1 s, ease-in-out. The color separation reads as an analog glitch. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"ButterflyWaveScrawler\", params: { amplitude: 1.0, waves: 30.0, colorSeparation: 0.3 } })}` and `timing={linearTiming({ durationInFrames: 30, easing: Easing.inOut(Easing.cubic) })}` (30 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `amplitude` (1.0) and `waves` (30) shape the ripples, `colorSeparation` (0.3) the RGB split."},{"slug":"glt.crazy-parametric-fun","name":"crazy-parametric-fun","title":"CrazyParametricFun","summary":"The frame is flung into hypnotic concentric bands along a parametric curve, then settles on the next","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","psychedelic","rings","distort","hypnotic","glsl","mit"],"author":"mandubian","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/CrazyParametricFun","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/CrazyParametricFun.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/9cce1908e50b/lib-gl-transitions-crazy-parametric-fun.webp","video":"https://s3.varg.ai/how-to/previews/ea1b77ac8191/lib-gl-transitions-crazy-parametric-fun.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"CrazyParametricFun\" by mandubian (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"CrazyParametricFun\" transition from GL Transitions (by mandubian, MIT; https://gl-transitions.com/editor/CrazyParametricFun, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/CrazyParametricFun.glsl) on the drop of a music edit: 1.2 s, ease-in-out. It is loud: use it once per video. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"CrazyParametricFun\", params: { a: 4, b: 1, amplitude: 120, smoothness: 0.1 } })}` and `timing={linearTiming({ durationInFrames: 36, easing: Easing.inOut(Easing.cubic) })}` (36 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1.2, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `a` (4) and `b` (1) shape the curve, `amplitude` (120) its reach and `smoothness` (0.1) the blend."},{"slug":"glt.kaleidoscope","name":"kaleidoscope","title":"Kaleidoscope","summary":"The shots fold into a spinning kaleidoscope of mirrored wedges and open onto the next","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","kaleidoscope","mirror","psychedelic","spin","glsl","mit"],"author":"nwoeanhinnogaehr","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/Kaleidoscope","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Kaleidoscope.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/3a9fdd746f29/lib-gl-transitions-kaleidoscope.webp","video":"https://s3.varg.ai/how-to/previews/0d999c9334e1/lib-gl-transitions-kaleidoscope.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"Kaleidoscope\" by nwoeanhinnogaehr (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"Kaleidoscope\" transition from GL Transitions (by nwoeanhinnogaehr, MIT; https://gl-transitions.com/editor/Kaleidoscope, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Kaleidoscope.glsl) between scenes of a festival, fashion or music edit: 1.2 s, ease-in-out. Colorful footage makes the mirrored wedges pop. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"Kaleidoscope\", params: { speed: 1.0, angle: 1.0, power: 1.5 } })}` and `timing={linearTiming({ durationInFrames: 36, easing: Easing.inOut(Easing.cubic) })}` (36 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1.2, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `speed` (1.0) spins it, `angle` (1.0) sets the wedge and `power` (1.5) how hard the mirror kicks in."},{"slug":"glt.film-burn","name":"film-burn","title":"FilmBurn","summary":"Warm, glowing film-burn light leaks wash over the shot and fade out on the next","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","film-burn","light-leak","analog","warm","glsl","mit"],"author":"anastasia-dunbar","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/FilmBurn","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/FilmBurn.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/3c12da2df43b/lib-gl-transitions-film-burn.webp","video":"https://s3.varg.ai/how-to/previews/6494330e3dbd/lib-gl-transitions-film-burn.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"FilmBurn\" by Anastasia Dunbar (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"FilmBurn\" transition from GL Transitions (by Anastasia Dunbar, MIT; https://gl-transitions.com/editor/FilmBurn, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/FilmBurn.glsl) between scenes of a vlog, wedding or travel edit: 1.2 s, ease-in-out. It pairs with a film-grain overlay for an analog look. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"FilmBurn\", params: { Seed: 2.31 } })}` and `timing={linearTiming({ durationInFrames: 36, easing: Easing.inOut(Easing.cubic) })}` (36 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1.2, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `Seed` (2.31) picks a different burn; change it on every cut so the leaks never repeat."},{"slug":"glt.doom-melt","name":"doom-melt","title":"DoomMelt","summary":"The first shot melts down the screen in uneven dripping columns, like the classic Doom screen wipe","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","melt","columns","retro","game","glsl","mit"],"author":"zeh-fernando","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/DoomMelt","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DoomMelt.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/55386e2c20ff/lib-gl-transitions-doom-melt.webp","video":"https://s3.varg.ai/how-to/previews/0b0cf59f0043/lib-gl-transitions-doom-melt.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"DoomMelt\" by Zeh Fernando (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"DoomMelt\" transition from GL Transitions (by Zeh Fernando, MIT; https://gl-transitions.com/editor/DoomMelt, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/DoomMelt.glsl) between levels of a gaming edit or into a retro end card: 1.4 s, linear progress. The columns fall early in the transition, so give it room. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"DoomMelt\", params: { bars: 30, amplitude: 2, noise: 0.1, frequency: 0.5, dripScale: 0.5 } })}` and `timing={linearTiming({ durationInFrames: 42 })}` (42 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1.4, 0, 1); never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `bars` (30) is the number of columns, `amplitude` (2) how fast they fall (lower it for a slower melt), `noise` (0.1) and `frequency` (0.5) how uneven they are, `dripScale` (0.5) the drips."},{"slug":"glt.luminance-melt","name":"luminance-melt","title":"LuminanceMelt","summary":"The first shot drips away in noisy vertical streaks, tone by tone, revealing the next","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","melt","luma","streaks","drip","glsl","mit"],"author":"0gust1","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/LuminanceMelt","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/LuminanceMelt.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/cef1fa9f0b6a/lib-gl-transitions-luminance-melt.webp","video":"https://s3.varg.ai/how-to/previews/f0bb0db786a5/lib-gl-transitions-luminance-melt.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"LuminanceMelt\" by 0gust1 (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"LuminanceMelt\" transition from GL Transitions (by 0gust1, MIT; https://gl-transitions.com/editor/LuminanceMelt, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/LuminanceMelt.glsl) between a bright scene and a dark one: 1.4 s, linear progress. The order of the melt follows the brightness of the first shot. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"LuminanceMelt\", params: { direction: true, l_threshold: 0.8, above: false } })}` and `timing={linearTiming({ durationInFrames: 42 })}` (42 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1.4, 0, 1); never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `direction` (true drips down, false up), `l_threshold` (0.8) and `above` (false) choose which tones melt first."},{"slug":"glt.polka-dots-curtain","name":"polka-dots-curtain","title":"PolkaDotsCurtain","summary":"The next shot appears through a grid of polka dots that grow until they cover the frame","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","dots","pattern","pop","reveal","glsl","mit"],"author":"bobylito","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/PolkaDotsCurtain","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/PolkaDotsCurtain.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/e90ecb02528a/lib-gl-transitions-polka-dots-curtain.webp","video":"https://s3.varg.ai/how-to/previews/5f65b0203f08/lib-gl-transitions-polka-dots-curtain.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"PolkaDotsCurtain\" by bobylito (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"PolkaDotsCurtain\" transition from GL Transitions (by bobylito, MIT; https://gl-transitions.com/editor/PolkaDotsCurtain, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/PolkaDotsCurtain.glsl) between scenes of a playful, pop-styled edit: 0.9 s, ease-in-out. The dots grow from one corner across the frame. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"PolkaDotsCurtain\", params: { dots: 20.0, center: [0, 0] } })}` and `timing={linearTiming({ durationInFrames: 27, easing: Easing.inOut(Easing.cubic) })}` (27 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 0.9, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `dots` (20) is the grid density and `center` (vec2(0, 0), bottom-left) where the dots start growing; vec2(0.5, 0.5) grows them from the middle."},{"slug":"glt.mosaic","name":"mosaic","title":"Mosaic","summary":"The camera pulls back over a wall of rotated tiles from both shots, pans, and settles on the next","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","mosaic","tiles","pan","zoom","glsl","mit"],"author":"xaychru","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/Mosaic","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Mosaic.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/02430899cf2a/lib-gl-transitions-mosaic.webp","video":"https://s3.varg.ai/how-to/previews/56754b4af9ee/lib-gl-transitions-mosaic.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"Mosaic\" by Xaychru (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"Mosaic\" transition from GL Transitions (by Xaychru, MIT; https://gl-transitions.com/editor/Mosaic, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Mosaic.glsl) between two scenes of a recap or a portfolio reel: 1.4 s, ease-in-out. Mirrored and upside-down copies of both shots fill the wall. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"Mosaic\", params: { endx: 2, endy: -1 } })}` and `timing={linearTiming({ durationInFrames: 42, easing: Easing.inOut(Easing.cubic) })}` (42 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1.4, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `endx` (2) and `endy` (-1) are integers that set which tile the pan ends on."},{"slug":"glt.pixelize","name":"pixelize","title":"Pixelize","summary":"Both shots break into chunky 8-bit pixels, crossfade, then sharpen back into the next","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","pixel","8-bit","retro","game","glsl","mit"],"author":"gre","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/Pixelize","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Pixelize.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/268ea710c2ec/lib-gl-transitions-pixelize.webp","video":"https://s3.varg.ai/how-to/previews/4f7225b14901/lib-gl-transitions-pixelize.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"Pixelize\" by gre (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"Pixelize\" transition from GL Transitions (by gre, MIT; https://gl-transitions.com/editor/Pixelize, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Pixelize.glsl) between scenes of a gaming, retro or tech edit: 0.8 s, ease-in-out. It pairs with chiptune sound effects. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"Pixelize\", params: { squaresMin: [20, 20], steps: 50 } })}` and `timing={linearTiming({ durationInFrames: 24, easing: Easing.inOut(Easing.cubic) })}` (24 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 0.8, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `squaresMin` (ivec2(20)) is the block count at the coarsest point and `steps` (50) how stepped the change is; 0 makes it continuous."},{"slug":"glt.grid-flip","name":"grid-flip","title":"GridFlip","summary":"The frame splits into a 4×4 grid of tiles that flip one by one to the next shot","registry":"gl-transitions","framework":"glsl","layer":"primitive","category":"transitions","tags":["transition","grid","tiles","flip","catalog","glsl","mit"],"author":"timdonselaar","aspect":"any","install":"npm install gl-transitions","docs":"https://gl-transitions.com/editor/GridFlip","source":"https://github.com/gl-transitions/gl-transitions/blob/master/transitions/GridFlip.glsl","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/6fb3cf294d64/lib-gl-transitions-grid-flip.webp","video":"https://s3.varg.ai/how-to/previews/ed10d88a5632/lib-gl-transitions-grid-flip.mp4","credit":"Rendered by varg from the library’s own code (GL Transitions · rendered by varg)","note":"\"GridFlip\" by TimDonselaar (MIT), gl-transitions@2.0.0 GLSL with default parameters, rendered in a WebGL harness: hold 0.6 s, 1.6 s smoothstep transition, hold. Stills: Big Buck Bunny (2008) at 1:50, (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; Spring (2019) at 1:10, Andy Goralczyk / Blender Foundation (Blender Studio) | studio.blender.org, CC BY 4.0 (center-cropped to 16:9)."},"runs":"local","clock":"seek-safe","prompt":"Add the \"GridFlip\" transition from GL Transitions (by TimDonselaar, MIT; https://gl-transitions.com/editor/GridFlip, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/GridFlip.glsl) between products of a catalog or photos of a recap: 1.2 s, ease-in-out. Thin dividers open between the tiles while they flip. Remotion: `npm install gl-transitions @gl-transitions/remotion @remotion/transitions`, then a `<TransitionSeries.Transition>` with `presentation={glTransition({ name: \"GridFlip\", params: { size: [4, 4], pause: 0.1, dividerWidth: 0.05, bgcolor: [0, 0, 0, 1], randomness: 0.1 } })}` and `timing={linearTiming({ durationInFrames: 36, easing: Easing.inOut(Easing.cubic) })}` (36 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1.2, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. `size` (ivec2(4)) is columns and rows (try ivec2(3, 5) for 9:16), `dividerWidth` (0.05) the gaps, `bgcolor` (black) what shows behind the tiles, `randomness` (0.1) the flip order and `pause` (0.1) the hold."},{"slug":"reactbits.aurora","name":"aurora","title":"Aurora","summary":"Northern-lights curtains in violet and green hanging from the top edge, swaying slowly over black","registry":"react-bits","framework":"react","layer":"component","category":"shaders","also":["backgrounds"],"tags":["background","aurora","northern lights","gradient","glow","shader","webgl","hero"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Aurora-JS-CSS","docs":"https://reactbits.dev/backgrounds/aurora","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Aurora/Aurora.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/5b914f90627c/lib-react-bits-aurora.webp","video":"https://s3.varg.ai/how-to/previews/a8571edaffa5/lib-react-bits-aurora.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"seek-safe","prompt":"Use the Aurora background from React Bits (https://reactbits.dev/backgrounds/aurora, MIT + Commons Clause: fine to render into a video, but don't resell the component code). Install it with `npx shadcn@latest add @react-bits/Aurora-JS-CSS` and mount it full-frame behind the title, with the text in the darker lower half. Set colorStops to three brand colours, amplitude 1–1.3, blend 0.5, and speed 0.5–0.8 for a calm drift. It takes a time prop: pass time={frame / fps} with paused, intro={false} and mouseInteraction={false}, and every frame draws from the composition clock (useCurrentFrame() in Remotion, the timeline time in HyperFrames)."},{"slug":"reactbits.silk","name":"silk","title":"Silk","summary":"Violet silk folds rippling diagonally, a soft sheen running along each crease","registry":"react-bits","framework":"react","layer":"component","category":"shaders","also":["backgrounds"],"tags":["background","silk","fabric","waves","luxury","shader","webgl"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Silk-JS-CSS","docs":"https://reactbits.dev/backgrounds/silk","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Silk/Silk.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/9495da84188e/lib-react-bits-silk.webp","video":"https://s3.varg.ai/how-to/previews/0c9046598c5a/lib-react-bits-silk.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use the Silk background from React Bits (https://reactbits.dev/backgrounds/silk, MIT + Commons Clause: OK inside a video, no reselling the code). Install with `npx shadcn@latest add @react-bits/Silk-JS-CSS` and use it as a full-frame backdrop for beauty, fashion or product titles. Set color to a deep brand tone, sheenColor to a light tint, speed 3–5, noiseIntensity about 1.5, and rotation to angle the folds. The shader adds the requestAnimationFrame delta to its own clock: patch the loop to set time = frame / fps * speed and draw once per frame, with intro={false}, mouseInteraction={false} and clickRipple={false}."},{"slug":"reactbits.threads","name":"threads","title":"Threads","summary":"A bundle of fine pale threads waving and fraying across a dark frame like a slow string curtain","registry":"react-bits","framework":"react","layer":"component","category":"shaders","also":["backgrounds"],"tags":["background","lines","threads","waves","minimal","shader","webgl"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Threads-JS-CSS","docs":"https://reactbits.dev/backgrounds/threads","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Threads/Threads.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/65e0fc4ab590/lib-react-bits-threads.webp","video":"https://s3.varg.ai/how-to/previews/8de9250751a6/lib-react-bits-threads.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Threads from React Bits (https://reactbits.dev/backgrounds/threads, MIT + Commons Clause: fine in videos, don't redistribute the component). Install with `npx shadcn@latest add @react-bits/Threads-JS-CSS` and place it full-frame behind minimal type, or as a texture band in the lower third. Tune color (an RGB array in 0–1), accentColor, lineCount 60–120, amplitude and angle to fit the layout. The WebGL loop adds the frame delta to state.time: replace that with time = frame / fps * speed, keep enableMouseInteraction off, and draw once per composition frame."},{"slug":"reactbits.iridescence","name":"iridescence","title":"Iridescence","summary":"Pastel holographic sheen in cyan, pink and violet, flowing like oil on water","registry":"react-bits","framework":"react","layer":"component","category":"shaders","also":["backgrounds"],"tags":["background","holographic","iridescent","pastel","liquid","shader","webgl"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Iridescence-JS-CSS","docs":"https://reactbits.dev/backgrounds/iridescence","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Iridescence/Iridescence.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/5d3c2d0ccb81/lib-react-bits-iridescence.webp","video":"https://s3.varg.ai/how-to/previews/ef2aafe95bed/lib-react-bits-iridescence.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Iridescence from React Bits (https://reactbits.dev/backgrounds/iridescence, MIT + Commons Clause: OK in videos, no reselling the code). Install with `npx shadcn@latest add @react-bits/Iridescence-JS-CSS` and run it full-frame as a holographic backdrop for beauty, fashion or tech titles. Set color (an RGB tint in 0–1), speed 0.5–1, amplitude, warp and hueShift to pull the palette toward the brand. Its requestAnimationFrame loop adds dt to a private clock: patch it to use frame / fps, set mouseReact={false} and clickSwirl={false}, and draw once per frame."},{"slug":"reactbits.galaxy","name":"galaxy","title":"Galaxy","summary":"Layered starfield twinkling and drifting toward the camera, the brightest stars with soft flares","registry":"react-bits","framework":"react","layer":"component","category":"shaders","also":["particles"],"tags":["background","stars","space","galaxy","starfield","shader","webgl"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Galaxy-JS-CSS","docs":"https://reactbits.dev/backgrounds/galaxy","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Galaxy/Galaxy.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/2a0b090434d5/lib-react-bits-galaxy.webp","video":"https://s3.varg.ai/how-to/previews/816d130ec90e/lib-react-bits-galaxy.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Galaxy from React Bits (https://reactbits.dev/backgrounds/galaxy, MIT + Commons Clause: fine for a rendered video, but the component can't be resold). Install with `npx shadcn@latest add @react-bits/Galaxy-JS-CSS` and use it full-frame behind space, AI or launch titles. For video, raise density to 1.5–2 and starSize/glowIntensity so the stars survive compression. Set hueShift and saturation for colour, and starSpeed and rotationSpeed for drift. Patch its requestAnimationFrame clock to time = frame / fps, and turn off mouseInteraction, mouseRepulsion, clickWarp and intro so every frame is reproducible."},{"slug":"reactbits.hyperspeed","name":"hyperspeed","title":"Hyperspeed","summary":"Pink and cyan light trails streaking down a winding night highway toward the viewer","registry":"react-bits","framework":"react","layer":"component","category":"three-d","also":["backgrounds"],"tags":["background","speed","highway","light trails","neon","three.js","3d"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Hyperspeed-JS-CSS","docs":"https://reactbits.dev/backgrounds/hyperspeed","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Hyperspeed/Hyperspeed.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/ee8c08dc6f31/lib-react-bits-hyperspeed.webp","video":"https://s3.varg.ai/how-to/previews/97c038e01213/lib-react-bits-hyperspeed.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Hyperspeed from React Bits (https://reactbits.dev/backgrounds/hyperspeed, MIT + Commons Clause: OK to render, not to resell the code). Install with `npx shadcn@latest add @react-bits/Hyperspeed-JS-CSS` (it brings in three) and use it full-frame for a speed or launch intro or behind a countdown. Toggling boosting={true} on a beat widens the field of view for a hyperspace moment. Set tailColors and headColors to the brand palette, plus curve, speed and density. It runs a Three.js clock on requestAnimationFrame: drive uTime and the car offsets from frame / fps instead, set interactive={false}, and render the scene once per frame. For 9:16, raise fov so the road fills the frame."},{"slug":"reactbits.balatro","name":"balatro","title":"Balatro","summary":"Thick red and blue paint swirling into a slow psychedelic vortex, softly pixelated like the Balatro card game","registry":"react-bits","framework":"react","layer":"component","category":"shaders","tags":["background","swirl","psychedelic","paint","retro","gaming","shader"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Balatro-JS-CSS","docs":"https://reactbits.dev/backgrounds/balatro","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Balatro/Balatro.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/4da2098eda1b/lib-react-bits-balatro.webp","video":"https://s3.varg.ai/how-to/previews/68901a8cd440/lib-react-bits-balatro.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Balatro from React Bits (https://reactbits.dev/backgrounds/balatro, MIT + Commons Clause: fine in a video, no reselling). Install with `npx shadcn@latest add @react-bits/Balatro-JS-CSS` and place it full-frame for gaming, music or retro content. Set color1, color2 and color3 from the brand, swirl 0.2–0.4, contrast, pixelSize (higher gives a chunkier look) and crt for scanlines. Replace its performance.now-based clock with frame / fps, turn off mouseInteraction, clickSwirl and intro, and draw once per frame."},{"slug":"reactbits.liquid-chrome","name":"liquid-chrome","title":"Liquid Chrome","summary":"Mercury-like chrome surface rippling in black and white, sharp highlights sliding across the folds","registry":"react-bits","framework":"react","layer":"component","category":"shaders","tags":["background","chrome","metal","liquid","monochrome","shader","webgl"],"aspect":"any","install":"npx shadcn@latest add @react-bits/LiquidChrome-JS-CSS","docs":"https://reactbits.dev/backgrounds/liquid-chrome","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/LiquidChrome/LiquidChrome.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/36c851adefdb/lib-react-bits-liquid-chrome.webp","video":"https://s3.varg.ai/how-to/previews/d4f9b8cf3448/lib-react-bits-liquid-chrome.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Liquid Chrome from React Bits (https://reactbits.dev/backgrounds/liquid-chrome, MIT + Commons Clause: OK in videos, don't resell the component). Install with `npx shadcn@latest add @react-bits/LiquidChrome-JS-CSS` and run it full-frame under a bold logo or product name. It reads best in monochrome or with one tinted color. Tune color, speed 0.15–0.3, amplitude, frequencyX/frequencyY and roughness. The component starts its clock at a random value, advances it on requestAnimationFrame and sways the camera with it. Fix the start value, compute time = start + frame / fps * speed, and set interactive={false} and intro={false}."},{"slug":"reactbits.particles","name":"particles","title":"Particles","summary":"Sparse 3D field of glowing dots slowly turning and bobbing in depth","registry":"react-bits","framework":"react","layer":"component","category":"particles","also":["backgrounds"],"tags":["background","particles","dots","dust","3d","webgl","overlay"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Particles-JS-CSS","docs":"https://reactbits.dev/backgrounds/particles","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Particles/Particles.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/65e2d4a92049/lib-react-bits-particles.webp","video":"https://s3.varg.ai/how-to/previews/fba57fe122d4/lib-react-bits-particles.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Particles from React Bits (https://reactbits.dev/backgrounds/particles, MIT + Commons Clause: fine in a render, not for resale). Install with `npx shadcn@latest add @react-bits/Particles-JS-CSS` and layer it full-frame behind titles, or as a dust overlay on footage, since it draws on a transparent canvas. For 1080p video, raise particleCount to 400–1200 and increase particleBaseSize. Set particleColors to the brand, turn on connections for a network look, or use drift 'up' for rising embers. Its clock accumulates on requestAnimationFrame, while the layout is already seeded by the variation prop. Drive state.clock from frame / fps, keep variation fixed, and turn off moveParticlesOnHover, clickBurst and intro."},{"slug":"reactbits.lightning","name":"lightning","title":"Lightning","summary":"A single electric-blue lightning bolt crackling down the frame, flickering and re-branching","registry":"react-bits","framework":"react","layer":"component","category":"shaders","tags":["background","lightning","electric","energy","storm","shader","webgl"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Lightning-JS-CSS","docs":"https://reactbits.dev/backgrounds/lightning","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Lightning/Lightning.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/262ce7e0a9b4/lib-react-bits-lightning.webp","video":"https://s3.varg.ai/how-to/previews/4d1899c1cf3f/lib-react-bits-lightning.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Lightning from React Bits (https://reactbits.dev/backgrounds/lightning, MIT + Commons Clause: fine for video). Install with `npx shadcn@latest add @react-bits/Lightning-JS-CSS` and use it full-frame behind a reveal, or as an energy accent beside a product. It renders on transparency, so it can sit over footage with screen blending. Set color, bolts, branches, angle, xOffset and flicker. The bolt phase advances on requestAnimationFrame, and the extra strikes come from clicks. Compute the phase from frame / fps * speed, set clickStrike={false} and mouseInteraction={false} (or inject strikes at fixed frames), and set intro={false}."},{"slug":"reactbits.dither","name":"dither","title":"Dither","summary":"Grey noise waves pushed through a retro ordered dither, the pixel grid shimmering as the pattern rolls","registry":"react-bits","framework":"react","layer":"component","category":"generative","also":["filters"],"tags":["background","dither","pixel","retro","1-bit","noise","shader"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Dither-JS-CSS","docs":"https://reactbits.dev/backgrounds/dither","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Dither/Dither.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/9af79cfb9fc9/lib-react-bits-dither.webp","video":"https://s3.varg.ai/how-to/previews/fd3356d32599/lib-react-bits-dither.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Dither from React Bits (https://reactbits.dev/backgrounds/dither, MIT + Commons Clause: OK to render into video). Install with `npx shadcn@latest add @react-bits/Dither-JS-CSS` and put it full-frame behind tech or retro-computing titles, or use it as a texture panel. Set waveColor and backgroundColor (RGB in 0–1), colorNum 2–4 for a hard 1-bit look, pixelSize 2–4 (bigger cells survive compression better), ditherMode and waveSpeed. Set its state.time to frame / fps instead of adding the requestAnimationFrame delta (the shader multiplies it by waveSpeed), and set enableMouseInteraction={false}, clickRipple={false} and intro={false}."},{"slug":"reactbits.orb","name":"orb","title":"Orb","summary":"A hollow ring of violet and cyan light breathing on black, its edge wobbling like plasma","registry":"react-bits","framework":"react","layer":"component","category":"shaders","tags":["background","orb","ring","glow","ai","assistant","shader"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Orb-JS-CSS","docs":"https://reactbits.dev/backgrounds/orb","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Orb/Orb.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/544d8092e687/lib-react-bits-orb.webp","video":"https://s3.varg.ai/how-to/previews/ce14f7dc6f87/lib-react-bits-orb.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Orb from React Bits (https://reactbits.dev/backgrounds/orb, MIT + Commons Clause: fine in videos, no reselling the code). Install with `npx shadcn@latest add @react-bits/Orb-JS-CSS` and centre it behind a logo, a voice-assistant UI or a single word. It also works as the 'AI is thinking' element in a product demo. Set colors (three stops), hue, size, glow, wobble and backgroundColor to match the scene. Its state.time steps forward on requestAnimationFrame. Feed it time = frame / fps * speed, pin forceHoverState if you want the energized look, and turn off followCursor, rotateOnHover, clickPulse and intro."},{"slug":"reactbits.ballpit","name":"ballpit","title":"Ballpit","summary":"Hundreds of soft white spheres jostling and bouncing around the frame like a zero-gravity ball pit","registry":"react-bits","framework":"react","layer":"component","category":"particles","also":["three-d"],"tags":["background","balls","physics","3d","playful","gravity","webgl"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Ballpit-JS-CSS","docs":"https://reactbits.dev/backgrounds/ballpit","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Ballpit/Ballpit.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/9f6a8b59e43b/lib-react-bits-ballpit.webp","video":"https://s3.varg.ai/how-to/previews/a669c7b6e356/lib-react-bits-ballpit.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Ballpit from React Bits (https://reactbits.dev/backgrounds/ballpit, MIT + Commons Clause: fine for rendered video). Install with `npx shadcn@latest add @react-bits/Ballpit-JS-CSS` and use it full-frame for playful brand intros, or as a ball drop behind a headline. Set count (100–300), colors from the brand palette, material ('gloss', 'satin', 'metal', and so on), gravity, and minSize/maxSize. It is a physics simulation stepped by the requestAnimationFrame delta. Step it with a fixed dt of 1/fps per frame from a fixed seed, render frames in order, and turn off followCursor, grab and clickEffect. Keep intro only if the drop-in should be part of the shot."},{"slug":"reactbits.beams","name":"beams","title":"Beams","summary":"Diagonal bars of white light sliding in a slow wave across black, like studio light through blinds","registry":"react-bits","framework":"react","layer":"component","category":"shaders","also":["backgrounds"],"tags":["background","beams","light","stripes","studio","moody","shader"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Beams-JS-CSS","docs":"https://reactbits.dev/backgrounds/beams","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Beams/Beams.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/e6173623aaa6/lib-react-bits-beams.webp","video":"https://s3.varg.ai/how-to/previews/ab6a9e032d80/lib-react-bits-beams.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Beams from React Bits (https://reactbits.dev/backgrounds/beams, MIT + Commons Clause: OK in a video, but the code itself can't be resold). Install with `npx shadcn@latest add @react-bits/Beams-JS-CSS` and run it full-frame behind product names or quotes for a moody studio-light look. Set color, beamWidth, rotation (the angle of the bars), speed, brightness and grain. The loop adds dt to an internal clock: patch it to frame / fps * speed, set mouseInteraction={false}, and set intro={false} or drive the intro from the timeline."},{"slug":"reactbits.light-rays","name":"light-rays","title":"Light Rays","summary":"Soft god rays streaming down from the top centre, shifting gently through a light haze","registry":"react-bits","framework":"react","layer":"component","category":"shaders","also":["textures"],"tags":["background","light rays","god rays","volumetric","glow","overlay","shader"],"aspect":"any","install":"npx shadcn@latest add @react-bits/LightRays-JS-CSS","docs":"https://reactbits.dev/backgrounds/light-rays","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/LightRays/LightRays.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/9d5660dcc486/lib-react-bits-light-rays.webp","video":"https://s3.varg.ai/how-to/previews/84f4f70e0bd7/lib-react-bits-light-rays.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Light Rays from React Bits (https://reactbits.dev/backgrounds/light-rays, MIT + Commons Clause: fine in video). Install with `npx shadcn@latest add @react-bits/LightRays-JS-CSS` and place it full-frame over dark footage or behind a reveal. It draws on transparency, so it can sit over a product shot with screen blending. Set raysOrigin, raysColor, raysSpeed, lightSpread, rayLength and pulsating. Its time accumulates on requestAnimationFrame: compute it from frame / fps * raysSpeed, and set followMouse={false}, cursorShadow={false}, clickPulse={false} and intro={false}."},{"slug":"reactbits.prism","name":"prism","title":"Prism","summary":"A glowing glass pyramid turning in the dark, its edges throwing rainbow light over a bright base","registry":"react-bits","framework":"react","layer":"component","category":"shaders","also":["logos"],"tags":["background","prism","rainbow","refraction","glass","launch","shader"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Prism-JS-CSS","docs":"https://reactbits.dev/backgrounds/prism","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Prism/Prism.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/ccaf6ed0acef/lib-react-bits-prism.webp","video":"https://s3.varg.ai/how-to/previews/96fb389f4276/lib-react-bits-prism.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Prism from React Bits (https://reactbits.dev/backgrounds/prism, MIT + Commons Clause: fine to render). Install with `npx shadcn@latest add @react-bits/Prism-JS-CSS` and use it full-frame behind a launch title or a keynote-style reveal. Set animationType ('rotate' or 'rotate3d'; 'hover' needs a pointer), glow, scale, hueShift, colorFrequency and timeScale. The shader time runs on requestAnimationFrame: set it to frame / fps * timeScale, and set interactive={false} and intro={false}."},{"slug":"reactbits.plasma","name":"plasma","title":"Plasma","summary":"Smoky pale plasma folding over itself in slow silky curls","registry":"react-bits","framework":"react","layer":"component","category":"shaders","tags":["background","plasma","smoke","silky","abstract","shader","webgl"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Plasma-JS-CSS","docs":"https://reactbits.dev/backgrounds/plasma","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/Plasma/Plasma.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/28ac07e4572c/lib-react-bits-plasma.webp","video":"https://s3.varg.ai/how-to/previews/f8bc2d0a4aa3/lib-react-bits-plasma.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Plasma from React Bits (https://reactbits.dev/backgrounds/plasma, MIT + Commons Clause: fine in video). Install with `npx shadcn@latest add @react-bits/Plasma-JS-CSS` and run it full-frame behind headlines. Tinted with one brand colour, it becomes a subtle moving texture. Set color, speed, direction ('forward', 'reverse' or 'pingpong'), scale, twist and grain. Patch the requestAnimationFrame clock to frame / fps * speed, and set mouseInteractive={false} and intro={false}."},{"slug":"reactbits.dark-veil","name":"dark-veil","title":"Dark Veil","summary":"Dark violet veil of light rippling slowly, like a lit curtain behind fog","registry":"react-bits","framework":"react","layer":"component","category":"shaders","also":["backgrounds"],"tags":["background","veil","dark","violet","moody","tech","shader"],"aspect":"any","install":"npx shadcn@latest add @react-bits/DarkVeil-JS-CSS","docs":"https://reactbits.dev/backgrounds/dark-veil","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/DarkVeil/DarkVeil.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/cfd01d2efc71/lib-react-bits-dark-veil.webp","video":"https://s3.varg.ai/how-to/previews/29c3377b8524/lib-react-bits-dark-veil.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Dark Veil from React Bits (https://reactbits.dev/backgrounds/dark-veil, MIT + Commons Clause: OK to render). Install with `npx shadcn@latest add @react-bits/DarkVeil-JS-CSS` and use it as a quiet full-frame backdrop under white type for tech, SaaS or music visuals. Set color, speed, scale, warp, flow, glow and grain. Replace the internal requestAnimationFrame clock with frame / fps * speed, and set mouseInteraction={false} and intro={false}."},{"slug":"reactbits.prismatic-burst","name":"prismatic-burst","title":"Prismatic Burst","summary":"Violet light rays bursting out of the centre and slowly rotating, like a radial light tunnel","registry":"react-bits","framework":"react","layer":"component","category":"shaders","also":["logos"],"tags":["background","burst","rays","radial","tunnel","reveal","shader"],"aspect":"any","install":"npx shadcn@latest add @react-bits/PrismaticBurst-JS-CSS","docs":"https://reactbits.dev/backgrounds/prismatic-burst","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Backgrounds/PrismaticBurst/PrismaticBurst.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/b0618c99a4a1/lib-react-bits-prismatic-burst.webp","video":"https://s3.varg.ai/how-to/previews/6b1898acc196/lib-react-bits-prismatic-burst.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Prismatic Burst from React Bits (https://reactbits.dev/backgrounds/prismatic-burst, MIT + Commons Clause: fine for video). Install with `npx shadcn@latest add @react-bits/PrismaticBurst-JS-CSS` and use it behind a centred logo or on a reveal beat. The built-in intro reads as a burst, so drive it from the timeline. Set colors, intensity, speed, animationType ('rotate', 'rotate3d' or 'hover'), rayCount and distort. Advance state.time and the intro from frame / fps instead of the requestAnimationFrame delta, and set mouseInteraction={false} and clickBurst={false}."},{"slug":"reactbits.split-text","name":"split-text","title":"Split Text","summary":"Headline letters rising into place one by one with a soft stagger","registry":"react-bits","framework":"react","layer":"primitive","category":"text-effects","tags":["text","text reveal","stagger","title","letters","gsap"],"aspect":"any","install":"npx shadcn@latest add @react-bits/SplitText-JS-CSS","docs":"https://reactbits.dev/text-animations/split-text","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/TextAnimations/SplitText/SplitText.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/a25dc68c2f03/lib-react-bits-split-text.webp","video":"https://s3.varg.ai/how-to/previews/c8de66e010f6/lib-react-bits-split-text.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage (replayed with the demo refresh button)"},"runs":"local","clock":"adapt","prompt":"Use Split Text from React Bits (https://reactbits.dev/text-animations/split-text, MIT + Commons Clause: fine in video). Install with `npx shadcn@latest add @react-bits/SplitText-JS-CSS`; it uses GSAP and the SplitText plugin. Use it for title cards and lower-third names. Set text, splitType ('chars', 'words' or 'lines'), delay between pieces in ms, duration, ease and from/to. It plays a GSAP tween once the element scrolls into view. Build the timeline paused instead and call tl.seek((frame - startFrame) / fps) on every frame, so the reveal lands exactly on your cue."},{"slug":"reactbits.blur-text","name":"blur-text","title":"Blur Text","summary":"Words sliding down out of a heavy blur and snapping sharp, one after another","registry":"react-bits","framework":"react","layer":"primitive","category":"text-effects","tags":["text","blur","text reveal","words","title","motion"],"aspect":"any","install":"npx shadcn@latest add @react-bits/BlurText-JS-CSS","docs":"https://reactbits.dev/text-animations/blur-text","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/TextAnimations/BlurText/BlurText.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/1ed167670e54/lib-react-bits-blur-text.webp","video":"https://s3.varg.ai/how-to/previews/2f63afd5bd96/lib-react-bits-blur-text.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage (replayed with the demo refresh button)"},"runs":"local","clock":"adapt","prompt":"Use Blur Text from React Bits (https://reactbits.dev/text-animations/blur-text, MIT + Commons Clause: OK in a video). Install with `npx shadcn@latest add @react-bits/BlurText-JS-CSS` and use it for the opening line, a quote or a caption that eases in. Set text, animateBy ('words' or 'letters'), direction ('top' or 'bottom'), delay in ms, stepDuration, blur and distance. It runs Motion animations triggered by IntersectionObserver. For a frame-exact render, compute each word's opacity, blur and offset from (frame - startFrame - index * delay) / fps, using Remotion's interpolate or a GSAP timeline seeked by the HyperFrames clock."},{"slug":"reactbits.shiny-text","name":"shiny-text","title":"Shiny Text","summary":"Muted grey text with a bright highlight band sweeping across it on a loop","registry":"react-bits","framework":"react","layer":"primitive","category":"text-effects","tags":["text","shine","shimmer","highlight","label","loop"],"aspect":"any","install":"npx shadcn@latest add @react-bits/ShinyText-JS-CSS","docs":"https://reactbits.dev/text-animations/shiny-text","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/TextAnimations/ShinyText/ShinyText.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/a83e73b0a0e2/lib-react-bits-shiny-text.webp","video":"https://s3.varg.ai/how-to/previews/d7fb32b6472c/lib-react-bits-shiny-text.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Shiny Text from React Bits (https://reactbits.dev/text-animations/shiny-text, MIT + Commons Clause: fine in video). Install with `npx shadcn@latest add @react-bits/ShinyText-JS-CSS` and use it on a badge, a kicker above the title or a 'new' label. Set color (base), shineColor, speed (seconds per sweep), angle, shineWidth and bands. The sweep position is advanced by its own animation loop: set it to ((frame / fps) % speed) / speed through the component's background position, or rebuild the sweep as a GSAP tween seeked by the timeline. Keep trigger='loop'."},{"slug":"reactbits.decrypted-text","name":"decrypted-text","title":"Decrypted Text","summary":"Random characters scrambling and resolving into a sentence, hacker-terminal style","registry":"react-bits","framework":"react","layer":"primitive","category":"text-effects","tags":["text","scramble","decrypt","hacker","terminal","glitch","text reveal"],"aspect":"any","install":"npx shadcn@latest add @react-bits/DecryptedText-JS-CSS","docs":"https://reactbits.dev/text-animations/decrypted-text","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/TextAnimations/DecryptedText/DecryptedText.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/cf92e33c2e37/lib-react-bits-decrypted-text.webp","video":"https://s3.varg.ai/how-to/previews/66d4b6f33c67/lib-react-bits-decrypted-text.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage (replayed with the demo refresh button)"},"runs":"local","clock":"adapt","prompt":"Use Decrypted Text from React Bits (https://reactbits.dev/text-animations/decrypted-text, MIT + Commons Clause: OK in a video). Install with `npx shadcn@latest add @react-bits/DecryptedText-JS-CSS` and use it for tech or security reveals: a product name, a code word, a stat. Set text, speed (ms per scramble step), maxIterations, sequential with revealDirection, and characters for the scramble set. It scrambles on setInterval with Math.random, so a render will differ every time. Compute the revealed count from (frame - startFrame) / fps * 1000 / speed and pick the scramble glyphs with a random function seeded by frame and character index."},{"slug":"reactbits.rotating-text","name":"rotating-text","title":"Rotating Text","summary":"A highlighted word in a pill flips to the next word on a timer, its letters staggering in","registry":"react-bits","framework":"react","layer":"primitive","category":"text-effects","tags":["text","rotating words","word swap","headline","highlight","motion"],"aspect":"any","install":"npx shadcn@latest add @react-bits/RotatingText-JS-CSS","docs":"https://reactbits.dev/text-animations/rotating-text","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/TextAnimations/RotatingText/RotatingText.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/11992a9b980c/lib-react-bits-rotating-text.webp","video":"https://s3.varg.ai/how-to/previews/a0e7ee64546c/lib-react-bits-rotating-text.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Rotating Text from React Bits (https://reactbits.dev/text-animations/rotating-text, MIT + Commons Clause: fine in video). Install with `npx shadcn@latest add @react-bits/RotatingText-JS-CSS` and put it in a headline like 'Built for [creators / teams / brands]'. Set texts, effect ('slide' or 'flip'), rotationInterval, staggerDuration, highlight and highlightColor from the brand. It swaps words on a setTimeout chain and animates with Motion's AnimatePresence. Derive the active index from floor((frame / fps * 1000) / rotationInterval) and each letter's progress from the time since the last swap, or give each word its own Remotion Sequence."},{"slug":"reactbits.count-up","name":"count-up","title":"Count Up","summary":"A number ticking up from zero to its target, easing to a stop on the final value","registry":"react-bits","framework":"react","layer":"primitive","category":"stats","also":["text-effects"],"tags":["text","counter","number","stat","metrics","kpi"],"aspect":"any","install":"npx shadcn@latest add @react-bits/CountUp-JS-CSS","docs":"https://reactbits.dev/text-animations/count-up","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/TextAnimations/CountUp/CountUp.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/f4a7879d0acc/lib-react-bits-count-up.webp","video":"https://s3.varg.ai/how-to/previews/0eb0b72b5627/lib-react-bits-count-up.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage (replayed with the demo refresh button)"},"runs":"local","clock":"adapt","prompt":"Use Count Up from React Bits (https://reactbits.dev/text-animations/count-up, MIT + Commons Clause: OK in a video). Install with `npx shadcn@latest add @react-bits/CountUp-JS-CSS` and use it for stat beats: users, revenue, percent growth, set large and centred or beside a label. Set from, to, duration, separator, prefix/suffix, decimals and easing. It animates with Motion once it scrolls into view. For video, compute value = from + (to - from) * ease(clamp((frame - startFrame) / (duration * fps), 0, 1)) and format it the same way."},{"slug":"reactbits.ascii-text","name":"ascii-text","title":"ASCII Text","summary":"A word built out of ASCII characters, rippling in waves with a chromatic colour fringe","registry":"react-bits","framework":"react","layer":"primitive","category":"text-effects","also":["generative"],"tags":["text","ascii","retro","glitch","chromatic","typography","webgl"],"aspect":"any","install":"npx shadcn@latest add @react-bits/ASCIIText-JS-CSS","docs":"https://reactbits.dev/text-animations/ascii-text","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/TextAnimations/ASCIIText/ASCIIText.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/556e893726d0/lib-react-bits-ascii-text.webp","video":"https://s3.varg.ai/how-to/previews/d7d0db68cd24/lib-react-bits-ascii-text.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use ASCII Text from React Bits (https://reactbits.dev/text-animations/ascii-text, MIT + Commons Clause: fine in video). Install with `npx shadcn@latest add @react-bits/ASCIIText-JS-CSS` and use it as a big title or logo word for dev, gaming or retro-tech content. Set text, asciiFontSize (6–10), textColor, colors for the chromatic tint, waves, waveSpeed and scramble. Its uTime comes from performance.now in a requestAnimationFrame loop. Patch it to frame / fps, and set interactive={false}, clickRipple={false} and intro={false} (or drive the intro from the same clock)."},{"slug":"reactbits.true-focus","name":"true-focus","title":"True Focus","summary":"Corner brackets jump from word to word, sharpening the framed word while the rest stay blurred","registry":"react-bits","framework":"react","layer":"primitive","category":"text-effects","tags":["text","focus","blur","brackets","emphasis","headline"],"aspect":"any","install":"npx shadcn@latest add @react-bits/TrueFocus-JS-CSS","docs":"https://reactbits.dev/text-animations/true-focus","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/TextAnimations/TrueFocus/TrueFocus.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/c89ca9f8a802/lib-react-bits-true-focus.webp","video":"https://s3.varg.ai/how-to/previews/43e0b5cdc6cb/lib-react-bits-true-focus.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use True Focus from React Bits (https://reactbits.dev/text-animations/true-focus, MIT + Commons Clause: OK in a video). Install with `npx shadcn@latest add @react-bits/TrueFocus-JS-CSS` and use it on a short claim where each word should land on a beat ('Fast. Private. Yours.'). Set sentence, blurAmount, borderColor and glowColor from the brand, focusStyle, animationDuration and pauseBetweenAnimations. It moves the focus on setInterval with Motion. Compute the focused index as floor(t / (animationDuration + pauseBetweenAnimations)) % words, with t = frame / fps, ease the bracket position from the time inside that step, and keep manualMode off."},{"slug":"reactbits.noise","name":"noise","title":"Noise","summary":"Fine animated film grain crawling over a misty photo, giving it a shot-on-film texture","registry":"react-bits","framework":"react","layer":"component","category":"textures","tags":["overlay","grain","film","noise","texture","analog"],"aspect":"any","install":"npx shadcn@latest add @react-bits/Noise-JS-CSS","docs":"https://reactbits.dev/animations/noise","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Animations/Noise/Noise.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/d675f97d54e8/lib-react-bits-noise.webp","video":"https://s3.varg.ai/how-to/previews/5c739b2aae29/lib-react-bits-noise.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Noise from React Bits (https://reactbits.dev/animations/noise, MIT + Commons Clause: fine in video). Install with `npx shadcn@latest add @react-bits/Noise-JS-CSS` and lay it over the whole composition as the top layer to glue AI footage, type and graphics together with grain. Set opacity 0.08–0.2, size, blendMode 'overlay' or 'soft-light', contrast, and optional dust, scratches, scanlines and flicker for an old-film look. It redraws random grain in a requestAnimationFrame loop throttled to its own fps. Seed the random generator with the frame number (frame / fps * grainFps, floored) so each video frame gets a fixed pattern. Keep the intensity modest, because heavy grain eats bitrate."},{"slug":"reactbits.metallic-paint","name":"metallic-paint","title":"Metallic Paint","summary":"A logo filled with liquid chrome that ripples and throws rainbow fringes along its edges","registry":"react-bits","framework":"react","layer":"component","category":"logos","also":["shaders"],"tags":["element","logo","chrome","metal","liquid","reveal","shader"],"aspect":"any","install":"npx shadcn@latest add @react-bits/MetallicPaint-JS-CSS","docs":"https://reactbits.dev/animations/metallic-paint","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Animations/MetallicPaint/MetallicPaint.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/c44b2aef80e9/lib-react-bits-metallic-paint.webp","video":"https://s3.varg.ai/how-to/previews/9f7750fb96d7/lib-react-bits-metallic-paint.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Metallic Paint from React Bits (https://reactbits.dev/animations/metallic-paint, MIT + Commons Clause: fine in a video). Install with `npx shadcn@latest add @react-bits/MetallicPaint-JS-CSS` and use it for a logo sting or end card: pass the brand mark as imageSrc (a high-contrast PNG or SVG works best) or a short word as text, centred on a dark plate. Set color, density, dispersion, distortion, angle, speed and scale. Its u_time is stepped on requestAnimationFrame. Set it to frame / fps * speed, turn mouseTilt to 0, and drive or disable the intro reveal from the timeline."},{"slug":"reactbits.laser-flow","name":"laser-flow","title":"Laser Flow","summary":"A blue laser beam pouring down onto an app window, flooding it with glow, fog and drifting sparks","registry":"react-bits","framework":"react","layer":"component","category":"shaders","also":["backgrounds"],"tags":["background","laser","beam","light","sci-fi","glow","shader"],"aspect":"any","install":"npx shadcn@latest add @react-bits/LaserFlow-JS-CSS","docs":"https://reactbits.dev/animations/laser-flow","source":"https://github.com/DavidHDev/react-bits/blob/main/src/content/Animations/LaserFlow/LaserFlow.jsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/9f8aac167879/lib-react-bits-laser-flow.webp","video":"https://s3.varg.ai/how-to/previews/507e43e1bb97/lib-react-bits-laser-flow.mp4","credit":"Captured from the library’s own demo page (React Bits)","note":"Live demo on reactbits.dev, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use Laser Flow from React Bits (https://reactbits.dev/animations/laser-flow, MIT + Commons Clause: OK in a video). Install with `npx shadcn@latest add @react-bits/LaserFlow-JS-CSS` and use it full-frame above a product card or UI screenshot: point surfaceRef at the element the beam lands on and set beamPosition to where it should hit. Set color, intensity, beamWidth, flare, fog, dust and pulse. The shader time adds the requestAnimationFrame delta. Set state.time = frame / fps * speed, fix seed, set mouseInteraction={false}, and play or skip the intro from the timeline."},{"slug":"magicui.globe","name":"globe","title":"Globe","summary":"Dotted white earth turning slowly, orange city markers glowing on it, rising from the bottom of the frame","registry":"magic-ui","framework":"react","layer":"component","category":"maps","also":["three-d"],"tags":["element","globe","earth","map","webgl","cobe","3d","global"],"aspect":"any","install":"npx shadcn@latest add @magicui/globe","docs":"https://magicui.design/docs/components/globe","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/globe.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/0cecb341f5b7/lib-magic-ui-globe.webp","video":"https://s3.varg.ai/how-to/previews/e0d08abc7d68/lib-magic-ui-globe.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Add the Globe from Magic UI (https://magicui.design/docs/components/globe, MIT) as a hero element: the dotted cobe earth rising from the lower third with a headline above it. Out of the box it spins by adding 0.005 to phi on every animation frame and smooths drag input with a spring, so its speed depends on the frame rate. Remove the pointer handlers and set state.phi from time inside onRender: phi = (frame / fps) * 0.3 in Remotion, or the paused timeline's time in HyperFrames, and make sure cobe has drawn before each frame is captured. Set markers to the cities in your story, markerColor and glowColor from the brand, dark: 1 for a night globe, and keep mapSamples around 16000 so the dots stay crisp at 1080p."},{"slug":"magicui.animated-beam","name":"animated-beam","title":"Animated Beam","summary":"Light pulses run along curved lines between app icons and a central logo, like data flowing into a hub","registry":"magic-ui","framework":"react","layer":"component","category":"diagrams","tags":["element","integrations","diagram","connections","svg","beam","flow","logos"],"aspect":"any","install":"npx shadcn@latest add @magicui/animated-beam","docs":"https://magicui.design/docs/components/animated-beam","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/animated-beam.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/2a281036d87a/lib-magic-ui-animated-beam.webp","video":"https://s3.varg.ai/how-to/previews/1c410e7c7d56/lib-magic-ui-animated-beam.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Animated Beam from Magic UI (https://magicui.design/docs/components/animated-beam, MIT) for an integrations shot: your logo in the centre, partner icons on the left and right, one beam per connection. Each beam is an SVG path with a linear gradient whose x1/x2 are animated by motion on an endless repeat, so it plays on wall-clock time. For a render, compute the gradient position from the frame, p = ((frame / fps - delay) % duration) / duration, and map p to x1/x2 along the path; in HyperFrames tween those attributes on the paused timeline with a finite repeat. Tune curvature, pathColor, pathWidth, gradientStartColor and gradientStopColor (brand colours), duration, and reverse for return traffic."},{"slug":"magicui.marquee","name":"marquee","title":"Marquee","summary":"Two rows of testimonial cards drifting sideways in opposite directions, fading out at the left and right edges","registry":"magic-ui","framework":"react","layer":"component","category":"galleries","also":["social-proof"],"tags":["element","marquee","testimonials","logos","social-proof","scroll","loop"],"aspect":"any","install":"npx shadcn@latest add @magicui/marquee","docs":"https://magicui.design/docs/components/marquee","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/marquee.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/b5e4ca47e444/lib-magic-ui-marquee.webp","video":"https://s3.varg.ai/how-to/previews/de8904a0ede1/lib-magic-ui-marquee.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Marquee from Magic UI (https://magicui.design/docs/components/marquee, MIT) for a social-proof band: review cards, customer logos or product shots scrolling across the middle of the frame, with a second row reversed. It moves with a CSS keyframe (translateX over --duration, infinite). HyperFrames' CSS adapter can seek it once you give it a finite iteration count that covers the clip; in Remotion set translateX yourself: x = -((frame / fps) / duration % 1) * (trackWidth + gap). Worth changing: --duration (slower reads better on phones), --gap, reverse, vertical for a 9:16 column, and repeat so the track never runs empty."},{"slug":"magicui.orbiting-circles","name":"orbiting-circles","title":"Orbiting Circles","summary":"App icons circling an empty centre on two thin rings, the inner ring turning one way and the outer the other","registry":"magic-ui","framework":"react","layer":"component","category":"diagrams","also":["logos"],"tags":["element","orbit","icons","integrations","rings","logos","loop"],"aspect":"any","install":"npx shadcn@latest add @magicui/orbiting-circles","docs":"https://magicui.design/docs/components/orbiting-circles","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/orbiting-circles.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/cb3b39ce9357/lib-magic-ui-orbiting-circles.webp","video":"https://s3.varg.ai/how-to/previews/01246d7e6592/lib-magic-ui-orbiting-circles.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Orbiting Circles from Magic UI (https://magicui.design/docs/components/orbiting-circles, MIT) around a logo or product in the centre of the frame, with tool or partner icons on the rings. Each icon rides a CSS keyframe that turns it around the centre at --radius over --duration. HyperFrames' CSS adapter can seek it with a finite iteration count; in Remotion compute the angle per icon, angle = startAngle + 360 * (frame / fps) / duration (negated for reverse), and place it with rotate(angle) translateX(radius) rotate(-angle). Set radius, duration, iconSize, reverse and path (the thin ring), and keep 4–6 icons per ring so they stay readable."},{"slug":"magicui.animated-list","name":"animated-list","title":"Animated List","summary":"Notification cards pop in one at a time at the top of a stack, pushing older ones down with a springy settle","registry":"magic-ui","framework":"react","layer":"component","category":"social-cards","also":["lists"],"tags":["element","notifications","list","feed","spring","ui","app"],"aspect":"any","install":"npx shadcn@latest add @magicui/animated-list","docs":"https://magicui.design/docs/components/animated-list","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/animated-list.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/289534e8cea0/lib-magic-ui-animated-list.webp","video":"https://s3.varg.ai/how-to/previews/52e51fc6e447/lib-magic-ui-animated-list.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Animated List from Magic UI (https://magicui.design/docs/components/animated-list, MIT) for a stream of notifications, payments or sign-ups on one side of the frame or inside a phone mockup. It adds the next item on a setTimeout every `delay` ms and springs it in with motion, so it runs on wall time. For a render, derive the visible count from the frame, n = floor((frame / fps) / (delay / 1000)) + 1, and bring each new card in with Remotion's spring({ frame: frame - itemStart, fps }) on scale and opacity; in HyperFrames build the same entrances as a staggered timeline with a back-out ease. Fill the items with your own icon, title, time and colour, and keep 4–5 on screen."},{"slug":"magicui.terminal","name":"terminal","title":"Terminal","summary":"Dark macOS-style terminal types a command, then prints green check lines one after another","registry":"magic-ui","framework":"react","layer":"component","category":"code","tags":["element","terminal","cli","code","developer","typing","macos"],"aspect":"any","install":"npx shadcn@latest add @magicui/terminal","docs":"https://magicui.design/docs/components/terminal","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/terminal.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/143d0f7985bb/lib-magic-ui-terminal.webp","video":"https://s3.varg.ai/how-to/previews/419ca5b56dc4/lib-magic-ui-terminal.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Terminal from Magic UI (https://magicui.design/docs/components/terminal, MIT) for developer or CLI moments: the window centred in the frame, your real command in the typing line and its output as AnimatedSpan lines. Typing runs on setInterval and the lines fade in with motion once the window is in view, so nothing is tied to frame time. For a render, show floor((frame / fps - start) * charsPerSecond) characters of the command, then reveal each output line at its own start time with an opacity and y tween; put those on the paused timeline in HyperFrames, or use interpolate on the frame in Remotion. Set the command, the output lines and their colours, the typing speed and the gap between lines."},{"slug":"magicui.number-ticker","name":"number-ticker","title":"Number Ticker","summary":"A large number counts up from zero and eases to a stop on its target value","registry":"magic-ui","framework":"react","layer":"primitive","category":"stats","also":["text-effects"],"tags":["text","counter","stats","numbers","count-up","kpi","spring"],"aspect":"any","install":"npx shadcn@latest add @magicui/number-ticker","docs":"https://magicui.design/docs/components/number-ticker","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/number-ticker.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/880d2ee07de6/lib-magic-ui-number-ticker.webp","video":"https://s3.varg.ai/how-to/previews/b13a9201afca/lib-magic-ui-number-ticker.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Number Ticker from Magic UI (https://magicui.design/docs/components/number-ticker, MIT) for a stat beat: one big number in the middle of the frame with a label under it. It springs from startValue to value with motion's useSpring once it scrolls into view, so it starts on wall time. For a render, compute the value from the frame: in Remotion v = startValue + (value - startValue) * spring({ frame: frame - delayFrames, fps, config: { damping: 60, stiffness: 100 } }); in HyperFrames tween a plain object on the paused timeline and write the formatted number in onUpdate. Format with Intl.NumberFormat, set value, startValue, decimalPlaces and direction, and use tabular-nums so the width does not jitter."},{"slug":"magicui.text-animate","name":"text-animate","title":"Text Animate","summary":"A line of text appears letter by letter, each character rising out of a blur","registry":"magic-ui","framework":"react","layer":"primitive","category":"text-effects","tags":["text","text-reveal","blur","stagger","titles","captions","motion"],"aspect":"any","install":"npx shadcn@latest add @magicui/text-animate","docs":"https://magicui.design/docs/components/text-animate","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/text-animate.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/fe57b2c4c7c7/lib-magic-ui-text-animate.webp","video":"https://s3.varg.ai/how-to/previews/cec571c11c18/lib-magic-ui-text-animate.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Text Animate from Magic UI (https://magicui.design/docs/components/text-animate, MIT) for titles and captions, centred or in the lower third. It splits text by character, word or line and plays motion variants (fadeIn, blurInUp, slideUp, scaleUp and others) with a stagger, triggered on mount or on view. For a render, give every segment its own start, i * stagger, and compute opacity, y and blur from the frame (Remotion: interpolate(frame - start, [0, durationFrames], [0, 1]) with an ease-out), or rebuild the same stagger on HyperFrames' paused timeline. Pick `by` (character for short words, word for sentences), the animation preset, duration and delay, and take the font and colour from the brand."},{"slug":"magicui.hyper-text","name":"hyper-text","title":"Hyper Text","summary":"A monospace word scrambles through random letters and locks into the real text from left to right","registry":"magic-ui","framework":"react","layer":"primitive","category":"text-effects","tags":["text","scramble","decode","glitch","monospace","tech","titles"],"aspect":"any","install":"npx shadcn@latest add @magicui/hyper-text","docs":"https://magicui.design/docs/components/hyper-text","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/hyper-text.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/8e31612c140c/lib-magic-ui-hyper-text.webp","video":"https://s3.varg.ai/how-to/previews/732c8464e959/lib-magic-ui-hyper-text.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Hyper Text from Magic UI (https://magicui.design/docs/components/hyper-text, MIT) for a decode-style title or label, centred or as a kicker above a headline. It runs on requestAnimationFrame and picks letters with Math.random, so two renders never match. Make it seek-safe: with progress p = clamp((t - start) / duration), character i shows its real letter once p ≥ i / length, otherwise a letter from characterSet chosen by a seeded random of (i, frame). Take t from frame / fps in Remotion or from the timeline time in HyperFrames. Set the text, duration, characterSet (A–Z, digits, glyphs) and a monospace font so the width stays fixed."},{"slug":"magicui.word-rotate","name":"word-rotate","title":"Word Rotate","summary":"One word at a time drops in from above and slides out below, cycling through a short list","registry":"magic-ui","framework":"react","layer":"primitive","category":"kinetic-type","also":["text-effects"],"tags":["text","rotating-words","headline","swap","cycle","kinetic-type"],"aspect":"any","install":"npx shadcn@latest add @magicui/word-rotate","docs":"https://magicui.design/docs/components/word-rotate","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/word-rotate.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/28f012f871b0/lib-magic-ui-word-rotate.webp","video":"https://s3.varg.ai/how-to/previews/eb0de7bf9b84/lib-magic-ui-word-rotate.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Word Rotate from Magic UI (https://magicui.design/docs/components/word-rotate, MIT) for the changing word in a headline (\"Build / Ship / Grow\"). It swaps words on a setInterval and animates them with motion's AnimatePresence, so the timing follows the wall clock. For a render, index = floor((frame / fps) / duration) % words.length, and the local progress inside each slot drives y and opacity for the incoming and outgoing word; in HyperFrames lay the words out on the paused timeline as a sequence of in and out tweens. Set words, duration per word and the motionProps for the enter and exit move, and line the swaps up with the music beat."},{"slug":"magicui.typing-animation","name":"typing-animation","title":"Typing Animation","summary":"Words type out letter by letter behind a blinking cursor, get deleted, and the next word types in","registry":"magic-ui","framework":"react","layer":"primitive","category":"text-effects","tags":["text","typewriter","typing","cursor","headline","prompt","loop"],"aspect":"any","install":"npx shadcn@latest add @magicui/typing-animation","docs":"https://magicui.design/docs/components/typing-animation","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/typing-animation.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/27d2f877ed9c/lib-magic-ui-typing-animation.webp","video":"https://s3.varg.ai/how-to/previews/95d4aa16d0fd/lib-magic-ui-typing-animation.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live 'multiple words with loop' demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Typing Animation from Magic UI (https://magicui.design/docs/components/typing-animation, MIT) for a typed headline, a search bar or a chat prompt. It types and deletes with setTimeout and blinks the cursor with a CSS keyframe, so it drifts in a render. Make it a pure function of time: chars = floor((t - start) * 1000 / typeSpeed) while typing, count back with deleteSpeed after pauseDelay, step through words, and show the cursor when floor(t * 2) is even. Take t from frame / fps in Remotion or from the paused timeline in HyperFrames. Set words (or children), typeSpeed, deleteSpeed, pauseDelay, loop, cursorStyle and the font."},{"slug":"magicui.morphing-text","name":"morphing-text","title":"Morphing Text","summary":"Big words melt into each other through a gooey blur, one dissolving as the next one forms","registry":"magic-ui","framework":"react","layer":"primitive","category":"kinetic-type","also":["text-effects"],"tags":["text","morph","liquid","blur","svg-filter","headline","kinetic-type"],"aspect":"any","install":"npx shadcn@latest add @magicui/morphing-text","docs":"https://magicui.design/docs/components/morphing-text","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/morphing-text.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/f53213a06272/lib-magic-ui-morphing-text.webp","video":"https://s3.varg.ai/how-to/previews/cfeaeeccc7aa/lib-magic-ui-morphing-text.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Morphing Text from Magic UI (https://magicui.design/docs/components/morphing-text, MIT) for a title that morphs between two to four words, centred in the frame. It cross-fades two text layers with blur and runs them through an SVG threshold filter for the liquid look, timed by requestAnimationFrame and Date (1.5 s morph, 0.5 s hold). For a render, compute the morph fraction from time: cycle = morphTime + cooldownTime, slot = floor(t / cycle), fraction = clamp((t % cycle) / morphTime), then apply the same blur and opacity formula to both layers; t is frame / fps in Remotion or the timeline time in HyperFrames. Keep the SVG filter, set texts, weight and size, and check that the edges survive video compression."},{"slug":"magicui.sparkles-text","name":"sparkles-text","title":"Sparkles Text","summary":"Bold word with small four-point stars popping up, spinning and fading around its letters","registry":"magic-ui","framework":"react","layer":"primitive","category":"text-effects","tags":["text","sparkles","stars","highlight","brand-name","shine"],"aspect":"any","install":"npx shadcn@latest add @magicui/sparkles-text","docs":"https://magicui.design/docs/components/sparkles-text","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/sparkles-text.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/fc9d089478e2/lib-magic-ui-sparkles-text.webp","video":"https://s3.varg.ai/how-to/previews/85141ac8c810/lib-magic-ui-sparkles-text.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Sparkles Text from Magic UI (https://magicui.design/docs/components/sparkles-text, MIT) on a brand name or a key word, centred or inside a headline. A setInterval respawns sparkles at random positions and motion scales and spins them, so each run differs. For a render, generate the sparkles up front from a seeded random (position, delay, lifetime) and compute each one's scale, rotation and opacity from the frame; in HyperFrames add them to the paused timeline as finite repeated tweens. Set sparklesCount, colors.first and colors.second from the brand palette, and a large text size so the stars still read at 1080p."},{"slug":"magicui.aurora-text","name":"aurora-text","title":"Aurora Text","summary":"A headline word filled with slowly shifting aurora colours, pink through purple to blue","registry":"magic-ui","framework":"react","layer":"primitive","category":"text-effects","tags":["text","gradient-text","aurora","colour","headline","highlight"],"aspect":"any","install":"npx shadcn@latest add @magicui/aurora-text","docs":"https://magicui.design/docs/components/aurora-text","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/aurora-text.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/c66903a2eb98/lib-magic-ui-aurora-text.webp","video":"https://s3.varg.ai/how-to/previews/f81d29927b0c/lib-magic-ui-aurora-text.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Aurora Text from Magic UI (https://magicui.design/docs/components/aurora-text, MIT) for the highlighted word of a headline. The gradient is clipped to the text and its background position moves on a CSS keyframe whose duration is 10 s divided by speed. HyperFrames' CSS adapter can seek that keyframe once the iteration count is finite; in Remotion compute background-position from frame / fps, or pause the animation and set animation-delay to minus the current time. Set colors (3–4 brand hues), speed, and a heavy weight so the colour reads."},{"slug":"magicui.video-text","name":"video-text","title":"Video Text","summary":"Huge block letters cut out of a playing video, so the footage only shows through the type","registry":"magic-ui","framework":"react","layer":"primitive","category":"headlines","also":["text-effects"],"tags":["text","video-mask","knockout","footage","title","masking"],"aspect":"any","install":"npx shadcn@latest add @magicui/video-text","docs":"https://magicui.design/docs/components/video-text","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/video-text.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/1974da0006f2/lib-magic-ui-video-text.webp","video":"https://s3.varg.ai/how-to/previews/abc1ae7d7177/lib-magic-ui-video-text.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme); the footage is the docs' own sample clip"},"runs":"local","clock":"adapt","prompt":"Use Video Text from Magic UI (https://magicui.design/docs/components/video-text, MIT) for a title made of footage: one word filling the frame, the clip visible only inside the letters. It masks an autoplaying, looping <video> with an SVG text mask. In a render the video has to follow the composition clock: in HyperFrames use a framework-owned video element (class=\"clip\" with data-start) under the same mask, in Remotion swap the <video> for <OffthreadVideo> or <Video>. Set src to your own clip, the word, fontSize, fontWeight and fontFamily; short, heavy words work best."},{"slug":"magicui.particles","name":"particles","title":"Particles","summary":"Fine white dots drifting slowly in random directions across black, nudged away by the cursor","registry":"magic-ui","framework":"react","layer":"component","category":"particles","also":["backgrounds"],"tags":["background","particles","dots","canvas","ambient","space"],"aspect":"any","install":"npx shadcn@latest add @magicui/particles","docs":"https://magicui.design/docs/components/particles","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/particles.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/4710483fbf32/lib-magic-ui-particles.webp","video":"https://s3.varg.ai/how-to/previews/305e83d58916/lib-magic-ui-particles.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Particles from Magic UI (https://magicui.design/docs/components/particles, MIT) as a quiet full-frame background behind text or a product. It draws on a canvas in a requestAnimationFrame loop with random start positions and mouse magnetism, so it is not repeatable. For a render, seed the random generator, drop the mouse handlers and compute every dot's position from time: p = p0 + v * t, wrapped at the edges, plus a small sine drift; t comes from frame / fps in Remotion or the timeline time in HyperFrames. Set quantity, size, color (from the brand), vx and vy for a steady drift, and staticity and ease for how lively it feels."},{"slug":"magicui.meteors","name":"meteors","title":"Meteors","summary":"Thin meteor streaks with fading tails falling at an angle across a dark panel","registry":"magic-ui","framework":"react","layer":"component","category":"particles","tags":["overlay","meteors","shooting-stars","streaks","night"],"aspect":"any","install":"npx shadcn@latest add @magicui/meteors","docs":"https://magicui.design/docs/components/meteors","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/meteors.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/b5313688cf20/lib-magic-ui-meteors.webp","video":"https://s3.varg.ai/how-to/previews/a5e9dfa0ec09/lib-magic-ui-meteors.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Meteors from Magic UI (https://magicui.design/docs/components/meteors, MIT) as an overlay on a dark card or across the whole frame behind a title. Each meteor is a CSS keyframe with a random left offset, delay and duration picked by Math.random on mount. For a render, generate those values from a seeded random, then either let HyperFrames' CSS adapter seek the keyframes (with a finite iteration count) or, in Remotion, compute each meteor's translate and opacity from (frame / fps - delay) % duration. Set number, angle, minDelay/maxDelay and minDuration/maxDuration, and tint the tail colour."},{"slug":"magicui.retro-grid","name":"retro-grid","title":"Retro Grid","summary":"Synthwave floor grid in perspective rolling toward the viewer under a pink-to-orange title","registry":"magic-ui","framework":"react","layer":"component","category":"backgrounds","tags":["background","synthwave","grid","retro","80s","perspective","webgl"],"aspect":"any","install":"npx shadcn@latest add @magicui/retro-grid","docs":"https://magicui.design/docs/components/retro-grid","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/retro-grid.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/d31901582eb8/lib-magic-ui-retro-grid.webp","video":"https://s3.varg.ai/how-to/previews/553e6744d692/lib-magic-ui-retro-grid.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Retro Grid from Magic UI (https://magicui.design/docs/components/retro-grid, MIT) as the floor of a full-frame background with a title above the horizon. It is a WebGL shader with a u_time uniform that requestAnimationFrame feeds from the clock, plus a CSS scroll as a fallback. For a render, set u_time from the composition (frame / fps in Remotion, the paused timeline's time in HyperFrames) and draw once per frame. Set angle (tilt), cellSize, opacity and the light and dark line colours from the brand; a neon gradient headline above it is the classic look."},{"slug":"magicui.flickering-grid","name":"flickering-grid","title":"Flickering Grid","summary":"A grid of tiny grey squares twinkling at random brightness, like a dim LED wall","registry":"magic-ui","framework":"react","layer":"component","category":"backgrounds","also":["generative"],"tags":["background","grid","led","flicker","texture","canvas","tech"],"aspect":"any","install":"npx shadcn@latest add @magicui/flickering-grid","docs":"https://magicui.design/docs/components/flickering-grid","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/flickering-grid.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/829542ee962f/lib-magic-ui-flickering-grid.webp","video":"https://s3.varg.ai/how-to/previews/2be6dd5c7132/lib-magic-ui-flickering-grid.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (light theme, where the grid reads better)"},"runs":"local","clock":"adapt","prompt":"Use Flickering Grid from Magic UI (https://magicui.design/docs/components/flickering-grid, MIT) as a textured full-frame background, or masked behind a logo. It redraws a canvas in requestAnimationFrame and re-rolls a random opacity per square according to flickerChance, so frames are not reproducible. For a render, compute each square's opacity from a seeded hash of (column, row, floor(t * flickerRate)) and draw that frame; t is frame / fps in Remotion or the timeline time in HyperFrames. Set squareSize, gridGap, color, maxOpacity and flickerChance; a radial mask keeps the middle clean for text."},{"slug":"magicui.warp-background","name":"warp-background","title":"Warp Background","summary":"A card floats in a perspective tunnel while coloured light streaks race along the grid walls","registry":"magic-ui","framework":"react","layer":"component","category":"backgrounds","also":["three-d"],"tags":["background","warp","tunnel","perspective","beams","speed","hero"],"aspect":"any","install":"npx shadcn@latest add @magicui/warp-background","docs":"https://magicui.design/docs/components/warp-background","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/warp-background.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/19f179398445/lib-magic-ui-warp-background.webp","video":"https://s3.varg.ai/how-to/previews/23d0573a586e/lib-magic-ui-warp-background.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Warp Background from Magic UI (https://magicui.design/docs/components/warp-background, MIT) behind a hero card, a quote or a product shot in the centre of the frame. The tunnel is CSS 3D; the streaks are motion animations with random hue, lane and delay that repeat forever. For a render, pick each beam's lane, hue and delay from a seeded random and compute its travel from ((frame / fps - delay) % beamDuration) / beamDuration; in HyperFrames put the same beams on the paused timeline with finite repeats. Set perspective, beamsPerSide, beamSize, beamDuration, beamDelayMin/beamDelayMax and gridColor."},{"slug":"magicui.ripple","name":"ripple","title":"Ripple","summary":"Soft concentric rings around a centred word, breathing in and out in a staggered wave","registry":"magic-ui","framework":"react","layer":"component","category":"backgrounds","also":["logos"],"tags":["background","ripple","rings","pulse","logo","focus"],"aspect":"any","install":"npx shadcn@latest add @magicui/ripple","docs":"https://magicui.design/docs/components/ripple","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/ripple.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/03338c2fb910/lib-magic-ui-ripple.webp","video":"https://s3.varg.ai/how-to/previews/a127f5f40e13/lib-magic-ui-ripple.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Ripple from Magic UI (https://magicui.design/docs/components/ripple, MIT) behind a logo, an app icon or one word in the middle of the frame. The rings are divs that scale down and back on a CSS keyframe, each with a slightly later delay and lower opacity, which reads as a slow wave. HyperFrames' CSS adapter can seek them with a finite iteration count; in Remotion compute each ring's scale from ((frame / fps) - i * ringDelay) % period. Set mainCircleSize, mainCircleOpacity and numCircles, and tint the ring fill and border from the brand."},{"slug":"magicui.confetti","name":"confetti","title":"Confetti","summary":"Colourful paper confetti bursts out over a title and flutters down out of frame","registry":"magic-ui","framework":"react","layer":"component","category":"particles","tags":["overlay","confetti","celebration","burst","canvas","win"],"aspect":"any","install":"npx shadcn@latest add @magicui/confetti","docs":"https://magicui.design/docs/components/confetti","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/confetti.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/d356faa9d47b/lib-magic-ui-confetti.webp","video":"https://s3.varg.ai/how-to/previews/ec72769743a6/lib-magic-ui-confetti.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Confetti from Magic UI (https://magicui.design/docs/components/confetti, MIT) as a celebration overlay on a reveal, a milestone or a call to action. It wraps canvas-confetti, which runs its own physics loop with random spread and velocity, so a render cannot seek it. For video, simulate the burst yourself: seed the particles (angle, speed, colour, spin) and compute each one's position from time with gravity and drag, x = x0 + vx * t, y = y0 + vy * t + 0.5 * g * t²; t is frame / fps in Remotion or the timeline time in HyperFrames. Keep the library's look: particleCount, spread, origin, brand colours, and the shapes or emoji from the docs examples."},{"slug":"magicui.border-beam","name":"border-beam","title":"Border Beam","summary":"Red and blue light streaks chase each other around the border of a dark music-player card","registry":"magic-ui","framework":"react","layer":"primitive","category":"entrances","tags":["element","border","beam","highlight","card","glow","ui"],"aspect":"any","install":"npx shadcn@latest add @magicui/border-beam","docs":"https://magicui.design/docs/components/border-beam","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/border-beam.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/cb12026c9e35/lib-magic-ui-border-beam.webp","video":"https://s3.varg.ai/how-to/previews/9ed49e6132ca/lib-magic-ui-border-beam.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live 'music player' demo cropped from the Magic UI docs page (dark theme)"},"runs":"local","clock":"adapt","prompt":"Use Border Beam from Magic UI (https://magicui.design/docs/components/border-beam, MIT) to draw the eye to one card, button or screenshot in the frame. The beam is a small gradient element moving along the border with CSS offset-path, and motion animates offset-distance from 0% to 100% forever. For a render, set offset-distance yourself, ((frame / fps - delay) / duration % 1) * 100%, in Remotion, or use a finite-repeat tween on HyperFrames' paused timeline. Set size, duration, colorFrom and colorTo (brand), borderWidth and reverse; two beams running opposite ways look good on a hero card."},{"slug":"magicui.iphone","name":"iphone","title":"iPhone","summary":"Dark iPhone frame with Dynamic Island and side buttons, a video playing edge to edge on its screen","registry":"magic-ui","framework":"react","layer":"component","category":"devices","tags":["device","iphone","mockup","phone","screen-recording","app"],"aspect":"any","install":"npx shadcn@latest add @magicui/iphone","docs":"https://magicui.design/docs/components/iphone","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/iphone.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/c909e6a45efc/lib-magic-ui-iphone.webp","video":"https://s3.varg.ai/how-to/previews/691a756f7871/lib-magic-ui-iphone.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live 'with video' demo cropped from the Magic UI docs page (dark theme); the screen footage is the docs' sample clip"},"runs":"local","clock":"static","prompt":"Use the iPhone mockup from Magic UI (https://magicui.design/docs/components/iphone, MIT) to present an app screen recording: the phone centred in a 16:9 frame or filling most of a 9:16 frame. The frame is a static SVG with the screen area positioned in percentages, and it takes src (an image) or videoSrc. In a render the screen video must follow the composition clock: in HyperFrames place a framework-owned <video class=\"clip\" data-start> in the screen area, in Remotion render <OffthreadVideo> there instead of videoSrc. Animate the phone itself on the timeline (a slow push-in or tilt), and pick a recording that matches the screen's aspect ratio."},{"slug":"magicui.safari","name":"safari","title":"Safari","summary":"Dark Safari browser window with traffic lights and an address bar, a video playing in the page area","registry":"magic-ui","framework":"react","layer":"component","category":"devices","tags":["device","browser","safari","mockup","website","screen-recording","saas"],"aspect":"16:9","install":"npx shadcn@latest add @magicui/safari","docs":"https://magicui.design/docs/components/safari","source":"https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/safari.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/f88750415c05/lib-magic-ui-safari.webp","video":"https://s3.varg.ai/how-to/previews/f0382ac63ae6/lib-magic-ui-safari.mp4","credit":"Captured from the library’s own demo page (Magic UI)","note":"Live 'with video' demo cropped from the Magic UI docs page (dark theme); the page footage is the docs' sample clip"},"runs":"local","clock":"static","prompt":"Use the Safari mockup from Magic UI (https://magicui.design/docs/components/safari, MIT) to frame a website or web-app recording, centred in a 16:9 frame with some margin. The window is a static SVG with the URL in the address bar (url prop) and the page area filled by imageSrc or videoSrc; mode \"simple\" drops the toolbar icons. In a render the page video must follow the composition clock: in HyperFrames use a framework-owned <video class=\"clip\" data-start> in the page area, in Remotion <OffthreadVideo>. Set url to the real domain, use a 16:10 recording, and move the window on the timeline (scale-in, slow pan) for life."},{"slug":"vanta.birds","name":"birds","title":"Birds","summary":"A flock of small pink low-poly birds wheeling and scattering across a deep navy sky","registry":"vanta","framework":"html","layer":"component","category":"particles","also":["backgrounds"],"tags":["background","three.js","webgl","flocking","birds","dark","3d"],"aspect":"any","install":"npm i vanta","docs":"https://www.vantajs.com/?effect=birds","source":"https://github.com/tengbao/vanta/blob/master/src/vanta.birds.js","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/37352ada0f39/lib-vanta-birds.webp","video":"https://s3.varg.ai/how-to/previews/ab066f3ee514/lib-vanta-birds.mp4","credit":"Rendered by varg from the library’s own code (Vanta.js · rendered by varg)","note":"vanta@0.5.24 + three r134, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the Vanta.js Birds effect (https://www.vantajs.com/?effect=birds, MIT, source github.com/tengbao/vanta/blob/master/src/vanta.birds.js) as the full-frame background behind the opening title. Load three.js r134 and vanta@0.5.24/dist/vanta.birds.min.js, then mount VANTA.BIRDS on a div that fills the frame with mouseControls, touchControls and gyroControls set to false. Birds is a GPU flocking simulation that reads performance.now every requestAnimationFrame, so make it deterministic: seed Math.random before init, swap performance.now and requestAnimationFrame for a virtual clock that advances 1000/fps ms per video frame, and render frames in order from frame 0 (the flock carries state, so replay from the start after a backwards seek). Take backgroundColor, color1 and color2 from the brand palette, keep quantity at 3–4 so the title stays readable, and lower speedLimit for a calmer flock."},{"slug":"vanta.fog","name":"fog","title":"Fog","summary":"Soft orange, peach and cream fog with hints of mauve, folding slowly across the whole frame","registry":"vanta","framework":"html","layer":"component","category":"shaders","also":["backgrounds"],"tags":["background","shader","webgl","fog","gradient","soft","warm"],"aspect":"any","install":"npm i vanta","docs":"https://www.vantajs.com/?effect=fog","source":"https://github.com/tengbao/vanta/blob/master/src/vanta.fog.js","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/0a083b49c029/lib-vanta-fog.webp","video":"https://s3.varg.ai/how-to/previews/d0d457beef76/lib-vanta-fog.mp4","credit":"Rendered by varg from the library’s own code (Vanta.js · rendered by varg)","note":"vanta@0.5.24 + three r134, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the Vanta.js Fog effect (https://www.vantajs.com/?effect=fog, MIT, source github.com/tengbao/vanta/blob/master/src/vanta.fog.js) as a full-frame background for a title card or quote. Load three.js r134 and vanta@0.5.24/dist/vanta.fog.min.js and mount VANTA.FOG on a full-frame div with mouse, touch and gyro controls off. Fog is a fragment shader whose only clock is the iTime uniform, so it can be made frame-exact: cancel its loop with cancelAnimationFrame(effect.req), then for every frame set effect.uniforms.iTime.value = seconds × speed and call effect.renderer.render(effect.scene, effect.camera). Map highlightColor, midtoneColor, lowlightColor and baseColor to the brand palette, raise blurFactor for a softer field, and keep speed between 0.5 and 1 so it drifts instead of boiling."},{"slug":"vanta.waves","name":"waves","title":"Waves","summary":"A glossy faceted blue water surface rolling in slow swells, filling the frame edge to edge","registry":"vanta","framework":"html","layer":"component","category":"backgrounds","also":["three-d"],"tags":["background","three.js","webgl","water","waves","3d","low-poly"],"aspect":"any","install":"npm i vanta","docs":"https://www.vantajs.com/?effect=waves","source":"https://github.com/tengbao/vanta/blob/master/src/vanta.waves.js","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/bd36aeb60da6/lib-vanta-waves.webp","video":"https://s3.varg.ai/how-to/previews/aad1d7893dd6/lib-vanta-waves.mp4","credit":"Rendered by varg from the library’s own code (Vanta.js · rendered by varg)","note":"vanta@0.5.24 + three r134, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the Vanta.js Waves effect (https://www.vantajs.com/?effect=waves, MIT, source github.com/tengbao/vanta/blob/master/src/vanta.waves.js) as the full-frame background under a headline or product name. Load three.js r134 and vanta@0.5.24/dist/vanta.waves.min.js and mount VANTA.WAVES on a full-frame div with mouse, touch and gyro controls off. The surface height is computed from effect.t (Vanta counts 60 ticks per second), so seed Math.random before init (the triangle layout is random), cancel effect.req, and for every frame set effect.t = seconds × 60, call effect.onUpdate() and then effect.renderer.render(effect.scene, effect.camera). Set color to a dark brand tone, shininess 30–60 for the highlights, waveHeight 10–20 and waveSpeed below 1 for a calm sea; zoom 0.8 shows more horizon."},{"slug":"vanta.clouds","name":"clouds","title":"Clouds","summary":"A pale blue sky over soft drifting clouds, with the sun glowing at the top of the frame","registry":"vanta","framework":"html","layer":"component","category":"shaders","also":["backgrounds"],"tags":["background","shader","webgl","sky","clouds","sun","bright"],"aspect":"any","install":"npm i vanta","docs":"https://www.vantajs.com/?effect=clouds","source":"https://github.com/tengbao/vanta/blob/master/src/vanta.clouds.js","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/5aebc7f914b2/lib-vanta-clouds.webp","video":"https://s3.varg.ai/how-to/previews/6e97391f1abc/lib-vanta-clouds.mp4","credit":"Rendered by varg from the library’s own code (Vanta.js · rendered by varg)","note":"vanta@0.5.24 + three r134, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the Vanta.js Clouds effect (https://www.vantajs.com/?effect=clouds, MIT, source github.com/tengbao/vanta/blob/master/src/vanta.clouds.js) as a bright full-frame sky behind a title, travel or weather beat. Load three.js r134 and vanta@0.5.24/dist/vanta.clouds.min.js and mount VANTA.CLOUDS on a full-frame div with mouse, touch and gyro controls off. It is a single shader driven by the iTime uniform, so render it frame-exact: cancel effect.req and on each frame set effect.uniforms.iTime.value = seconds × speed, then call effect.renderer.render(effect.scene, effect.camera). Tune skyColor, cloudColor, cloudShadowColor and the three sun colors for golden hour or overcast, and keep speed at 0.5–1. Pass scale: 1 for a sharper 1080p render than the default upscaled buffer."},{"slug":"vanta.clouds2","name":"clouds2","title":"Clouds2","summary":"Flying low over a thick bank of volumetric clouds, with blue sky above","registry":"vanta","framework":"html","layer":"component","category":"shaders","also":["backgrounds"],"tags":["background","shader","webgl","clouds","volumetric","sky","flight"],"aspect":"any","install":"npm i vanta","docs":"https://www.vantajs.com/?effect=clouds2","source":"https://github.com/tengbao/vanta/blob/master/src/vanta.clouds2.js","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/df968508492c/lib-vanta-clouds2.webp","video":"https://s3.varg.ai/how-to/previews/fe5e1fc526c3/lib-vanta-clouds2.mp4","credit":"Rendered by varg from the library’s own code (Vanta.js · rendered by varg)","note":"vanta@0.5.24 + three r134, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the Vanta.js Clouds2 effect (https://www.vantajs.com/?effect=clouds2, MIT, source github.com/tengbao/vanta/blob/master/src/vanta.clouds2.js) as a full-frame 'above the clouds' background for an intro or a calm outro. Load three.js r134 and vanta@0.5.24/dist/vanta.clouds2.min.js and mount VANTA.CLOUDS2 with mouse, touch and gyro controls off. It samples a noise texture: download gallery/noise.png from vantajs.com into the project and pass it as texturePath (a local file or data URI, so WebGL can read it without CORS). The shader is driven by iTime alone, so cancel effect.req and per frame set effect.uniforms.iTime.value = seconds × speed, then call effect.renderer.render(effect.scene, effect.camera). Set skyColor, cloudColor and lightColor from the palette and speed around 0.6–1."},{"slug":"vanta.globe","name":"globe","title":"Globe","summary":"A pink wireframe globe ringed with spikes, turning slowly off-centre over a faint net on dark purple","registry":"vanta","framework":"html","layer":"component","category":"generative","also":["backgrounds"],"tags":["background","three.js","webgl","globe","network","plexus","dark"],"aspect":"any","install":"npm i vanta","docs":"https://www.vantajs.com/?effect=globe","source":"https://github.com/tengbao/vanta/blob/master/src/vanta.globe.js","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/420a3ed52fa7/lib-vanta-globe.webp","video":"https://s3.varg.ai/how-to/previews/9d34f0a93bae/lib-vanta-globe.mp4","credit":"Rendered by varg from the library’s own code (Vanta.js · rendered by varg)","note":"vanta@0.5.24 + three r134, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the Vanta.js Globe effect (https://www.vantajs.com/?effect=globe, MIT, source github.com/tengbao/vanta/blob/master/src/vanta.globe.js) as the full-frame background for a 'global' or network beat, with the headline on the side the globe leaves free. Load three.js r134 and vanta@0.5.24/dist/vanta.globe.min.js and mount VANTA.GLOBE with mouse, touch and gyro controls off. Its points, links and camera update a little on every requestAnimationFrame, so seed Math.random before init, replace performance.now and requestAnimationFrame with a virtual clock that advances 1000/fps ms per video frame, and render frames in order from frame 0. Set color (links), color2 (dots) and backgroundColor from the brand, and size 0.8–1.2 to scale the globe."},{"slug":"vanta.net","name":"net","title":"Net","summary":"Pink nodes and connecting lines forming a loose 3D mesh that rotates slowly on dark purple","registry":"vanta","framework":"html","layer":"component","category":"generative","also":["backgrounds"],"tags":["background","three.js","webgl","network","plexus","nodes","tech"],"aspect":"any","install":"npm i vanta","docs":"https://www.vantajs.com/?effect=net","source":"https://github.com/tengbao/vanta/blob/master/src/vanta.net.js","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/f14e15d69304/lib-vanta-net.webp","video":"https://s3.varg.ai/how-to/previews/981ba2193ff4/lib-vanta-net.mp4","credit":"Rendered by varg from the library’s own code (Vanta.js · rendered by varg)","note":"vanta@0.5.24 + three r134, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the Vanta.js Net effect (https://www.vantajs.com/?effect=net, MIT, source github.com/tengbao/vanta/blob/master/src/vanta.net.js) as a full-frame tech or 'connected' background behind titles and stats. Load three.js r134 and vanta@0.5.24/dist/vanta.net.min.js and mount VANTA.NET with mouse, touch and gyro controls off. The nodes advance a fixed step on every requestAnimationFrame call, so seed Math.random before init, cancel effect.req and step it yourself 60/fps times per video frame (twice at 30 fps), in order from frame 0: each step adds 1 to effect.t, calls effect.onUpdate() and then effect.renderer.render(effect.scene, effect.camera). Set color and backgroundColor from the brand, points 8–12 and maxDistance 18–24 for line density, and spacing to spread the mesh out."},{"slug":"vanta.cells","name":"cells","title":"Cells","summary":"Lime and deep-green cell membranes glowing and shifting like a living microscope slide","registry":"vanta","framework":"html","layer":"component","category":"shaders","also":["backgrounds"],"tags":["background","shader","webgl","voronoi","organic","cells","bright"],"aspect":"any","install":"npm i vanta","docs":"https://www.vantajs.com/?effect=cells","source":"https://github.com/tengbao/vanta/blob/master/src/vanta.cells.js","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/4795c68059dc/lib-vanta-cells.webp","video":"https://s3.varg.ai/how-to/previews/52fb5354b162/lib-vanta-cells.mp4","credit":"Rendered by varg from the library’s own code (Vanta.js · rendered by varg)","note":"vanta@0.5.24 + three r134, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the Vanta.js Cells effect (https://www.vantajs.com/?effect=cells, MIT, source github.com/tengbao/vanta/blob/master/src/vanta.cells.js) as a full-frame organic background for a science, health or playful brand beat. Load three.js r134 and vanta@0.5.24/dist/vanta.cells.min.js and mount VANTA.CELLS with mouse, touch and gyro controls off. It is one fragment shader clocked by the iTime uniform, so make it frame-exact: cancel effect.req and on each frame set effect.uniforms.iTime.value = seconds × speed, then call effect.renderer.render(effect.scene, effect.camera). Recolor it with color1, color2 and backgroundColor, use size 1–3 for bigger or smaller cells, and keep speed at 0.5–1. Darken the colors if text sits on top."},{"slug":"vanta.trunk","name":"trunk","title":"Trunk","summary":"Dozens of thin wobbling rings around an empty centre, like tree rings drawn in one pen","registry":"vanta","framework":"html","layer":"component","category":"generative","tags":["background","p5.js","canvas","line-art","rings","noise","minimal"],"aspect":"any","install":"npm i vanta","docs":"https://www.vantajs.com/?effect=trunk","source":"https://github.com/tengbao/vanta/blob/master/src/vanta.trunk.js","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/533ca2739e91/lib-vanta-trunk.webp","video":"https://s3.varg.ai/how-to/previews/050a1161e3a0/lib-vanta-trunk.mp4","credit":"Rendered by varg from the library’s own code (Vanta.js · rendered by varg)","note":"vanta@0.5.24 + p5 1.1.9, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the Vanta.js Trunk effect (https://www.vantajs.com/?effect=trunk, MIT, source github.com/tengbao/vanta/blob/master/src/vanta.trunk.js) as a full-frame line-art background; the empty centre suits a logo or a single word. It runs on p5.js, not three: load p5 1.x (vantajs.com uses 1.1.9) and vanta@0.5.24/dist/vanta.trunk.min.js, then mount VANTA.TRUNK with mouse, touch and gyro controls off. The rings move a fixed step per p5 draw call, so seed Math.random before init, call effect.p5.noLoop(), and per video frame call effect.p5.redraw() 60/fps times, in order from frame 0. Set color and backgroundColor from the brand, chaos 1–4 for how much the rings wobble, and spacing 0–5 to open them up."},{"slug":"vanta.topology","name":"topology","title":"Topology","summary":"Thin green strands streaming along a flow field, combing into a contour-like texture on dark teal","registry":"vanta","framework":"html","layer":"component","category":"generative","tags":["background","p5.js","canvas","flow-field","generative","texture","dark"],"aspect":"any","install":"npm i vanta","docs":"https://www.vantajs.com/?effect=topology","source":"https://github.com/tengbao/vanta/blob/master/src/vanta.topology.js","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/333ae2c8ea63/lib-vanta-topology.webp","video":"https://s3.varg.ai/how-to/previews/bcf9d36057b8/lib-vanta-topology.mp4","credit":"Rendered by varg from the library’s own code (Vanta.js · rendered by varg)","note":"vanta@0.5.24 + p5 1.1.9, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the Vanta.js Topology effect (https://www.vantajs.com/?effect=topology, MIT, source github.com/tengbao/vanta/blob/master/src/vanta.topology.js) as a slow, textured full-frame background under titles or data callouts. It runs on p5.js: load p5 1.x (vantajs.com uses 1.1.9) and vanta@0.5.24/dist/vanta.topology.min.js, then mount VANTA.TOPOLOGY with mouse, touch and gyro controls off. The image builds up stroke by stroke, so frame N depends on every frame before it: seed Math.random before init, call effect.p5.noLoop(), and per video frame call effect.p5.redraw() 60/fps times, in order from frame 0. Pre-roll a second or two of draws before the scene starts if you want it already textured. Set color and backgroundColor from the brand palette."},{"slug":"vanta.dots","name":"dots","title":"Dots","summary":"A spiky orange starburst of lines turning above a faint rolling grid of dots on charcoal","registry":"vanta","framework":"html","layer":"component","category":"generative","also":["three-d"],"tags":["background","three.js","webgl","dots","grid","3d","dark"],"aspect":"any","install":"npm i vanta","docs":"https://www.vantajs.com/?effect=dots","source":"https://github.com/tengbao/vanta/blob/master/src/vanta.dots.js","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/2a2c0684e0ec/lib-vanta-dots.webp","video":"https://s3.varg.ai/how-to/previews/2356913801d0/lib-vanta-dots.mp4","credit":"Rendered by varg from the library’s own code (Vanta.js · rendered by varg)","note":"vanta@0.5.24 + three r134, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the Vanta.js Dots effect (https://www.vantajs.com/?effect=dots, MIT, source github.com/tengbao/vanta/blob/master/src/vanta.dots.js) as a full-frame background for a tech or data section. Load three.js r134 and vanta@0.5.24/dist/vanta.dots.min.js and mount VANTA.DOTS with mouse, touch and gyro controls off. The dot heights and the line mesh change by a small step on every requestAnimationFrame, so seed Math.random before init, replace performance.now and requestAnimationFrame with a virtual clock that advances 1000/fps ms per video frame, and render frames in order from frame 0. Set color, color2 and backgroundColor from the brand, size 2–4 and spacing 30–40 for density, and showLines: false for a calmer dot field."},{"slug":"vanta.rings","name":"rings","title":"Rings","summary":"Neon arcs in green, pink, orange and blue orbiting a tangled core of rings, tilted in 3D on charcoal","registry":"vanta","framework":"html","layer":"component","category":"backgrounds","tags":["background","three.js","webgl","rings","arcs","neon","dark"],"aspect":"any","install":"npm i vanta","docs":"https://www.vantajs.com/?effect=rings","source":"https://github.com/tengbao/vanta/blob/master/src/vanta.rings.js","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/a6262bdc04a6/lib-vanta-rings.webp","video":"https://s3.varg.ai/how-to/previews/3c5c160e6bf6/lib-vanta-rings.mp4","credit":"Rendered by varg from the library’s own code (Vanta.js · rendered by varg)","note":"vanta@0.5.24 + three r134, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the Vanta.js Rings effect (https://www.vantajs.com/?effect=rings, MIT, source github.com/tengbao/vanta/blob/master/src/vanta.rings.js) as a full-frame background for a loading, progress or launch-countdown beat. Load three.js r134 and vanta@0.5.24/dist/vanta.rings.min.js and mount VANTA.RINGS with mouse, touch and gyro controls off. Each ring adds its own rotation step on every requestAnimationFrame, so seed Math.random before init (ring sizes and colors are random), cancel effect.req and step it yourself 60/fps times per video frame, in order from frame 0: each step adds 1 to effect.t, calls effect.onUpdate() and then effect.renderer.render(effect.scene, effect.camera). Set backgroundColor and the base color from the brand; edit the effect's colors list if the default neon mix clashes."},{"slug":"vanta.halo","name":"halo","title":"Halo","summary":"An iridescent ring of pink, white and teal light swirling slowly on a deep navy field","registry":"vanta","framework":"html","layer":"component","category":"shaders","also":["backgrounds"],"tags":["background","shader","webgl","halo","glow","ring","dark"],"aspect":"any","install":"npm i vanta","docs":"https://www.vantajs.com/?effect=halo","source":"https://github.com/tengbao/vanta/blob/master/src/vanta.halo.js","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/5eb5e2cd72cf/lib-vanta-halo.webp","video":"https://s3.varg.ai/how-to/previews/38e4d1d4802b/lib-vanta-halo.mp4","credit":"Rendered by varg from the library’s own code (Vanta.js · rendered by varg)","note":"vanta@0.5.24 + three r134, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the Vanta.js Halo effect (https://www.vantajs.com/?effect=halo, MIT, source github.com/tengbao/vanta/blob/master/src/vanta.halo.js) as a full-frame background with a logo, product shot or one word inside the ring. Load three.js r134 and vanta@0.5.24/dist/vanta.halo.min.js and mount VANTA.HALO with mouse, touch and gyro controls off. Halo feeds each frame back into the next through two render targets, so it must be rendered in order: cancel effect.req and per video frame advance effect.uniforms.iTime.value by speed/fps, then call effect.onUpdate() and effect.renderer.render(effect.scene, effect.camera), starting from frame 0. Set baseColor, color2 and backgroundColor from the brand, size 0.8–1.5 for the ring, and xOffset/yOffset to place it (it drifts a little left of centre in 16:9 by default)."},{"slug":"shadergradient.halo","name":"halo","title":"Halo","summary":"A grainy diagonal band of lavender and ice blue sweeping through hot orange-red","registry":"shadergradient","framework":"react","layer":"component","category":"backgrounds","also":["shaders"],"tags":["background","gradient","grain","warm","orange","plane","bold"],"aspect":"any","install":"npm i @shadergradient/react @react-three/fiber three three-stdlib camera-controls","docs":"https://shadergradient.co/customize","source":"https://github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts#L4","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/8cf8f85a59d3/lib-shadergradient-halo.webp","video":"https://s3.varg.ai/how-to/previews/ed517bc409d4/lib-shadergradient-halo.mp4","credit":"Rendered by varg from the library’s own code (ShaderGradient · rendered by varg)","note":"@shadergradient/react 2.4.20 presets.halo.props unchanged (react-three-fiber 8.17, three 0.169), rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the ShaderGradient \"Halo\" preset (preset 00 on https://shadergradient.co/customize, MIT; exported as presets.halo from @shadergradient/react, source github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts) as the full-frame background behind a bold title or a launch announcement. Install @shadergradient/react with @react-three/fiber and three, then render <ShaderGradientCanvas style={{position:'absolute',inset:0}} lazyLoad={false} pixelDensity={1}> with <ShaderGradient {...presets.halo.props} /> inside. To make it frame-exact, override animate=\"off\" and pass uTime={seconds} (the shader multiplies it by uSpeed 0.4), set enableTransition={false} so the camera starts in place, and let R3F draw once before each frame is captured. Swap color1–color3 for the brand palette (color1 is the dominant field), move positionX to slide the band across the frame, and keep grain \"on\" for the risograph texture; uSpeed above about 0.6 starts to look busy."},{"slug":"shadergradient.pensive","name":"pensive","title":"Pensive","summary":"A grainy cyan and violet spiral slowly uncoiling on a periwinkle field","registry":"shadergradient","framework":"react","layer":"component","category":"backgrounds","also":["shaders"],"tags":["background","gradient","grain","violet","purple","sphere","moody"],"aspect":"any","install":"npm i @shadergradient/react @react-three/fiber three three-stdlib camera-controls","docs":"https://shadergradient.co/customize","source":"https://github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts#L52","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/c480d9a77ca9/lib-shadergradient-pensive.webp","video":"https://s3.varg.ai/how-to/previews/73532f859e29/lib-shadergradient-pensive.mp4","credit":"Rendered by varg from the library’s own code (ShaderGradient · rendered by varg)","note":"@shadergradient/react 2.4.20 presets.pensive.props unchanged (react-three-fiber 8.17, three 0.169), rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the ShaderGradient \"Pensive\" preset (preset 01 on https://shadergradient.co/customize, MIT; exported as presets.pensive from @shadergradient/react, source github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts) as a moody full-frame background for a quote, a reflective voiceover or an end card. Install @shadergradient/react with @react-three/fiber and three, then render <ShaderGradientCanvas style={{position:'absolute',inset:0}} lazyLoad={false} pixelDensity={1}> with <ShaderGradient {...presets.pensive.props} /> inside. To make it frame-exact, override animate=\"off\" and pass uTime={seconds} (the shader multiplies it by uSpeed 0.3), set enableTransition={false} so the camera starts in place, and let R3F draw once before each frame is captured. Recolor with color1–color3, raise uAmplitude for deeper folds or lower it for a calmer surface, and adjust cameraZoom (12.5 by default) to move closer or further from the sphere."},{"slug":"shadergradient.mint","name":"mint","title":"Mint","summary":"Pale mint and aqua ripples washing across a bright water surface, no grain","registry":"shadergradient","framework":"react","layer":"component","category":"backgrounds","also":["shaders"],"tags":["background","gradient","mint","aqua","water","fresh","light"],"aspect":"any","install":"npm i @shadergradient/react @react-three/fiber three three-stdlib camera-controls","docs":"https://shadergradient.co/customize","source":"https://github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts#L97","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/6cf751fbb9c1/lib-shadergradient-mint.webp","video":"https://s3.varg.ai/how-to/previews/4aa7bebd7b87/lib-shadergradient-mint.mp4","credit":"Rendered by varg from the library’s own code (ShaderGradient · rendered by varg)","note":"@shadergradient/react 2.4.20 presets.mint.props unchanged (react-three-fiber 8.17, three 0.169), rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the ShaderGradient \"Mint\" preset (preset 02 on https://shadergradient.co/customize, MIT; exported as presets.mint from @shadergradient/react, source github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts) as a fresh, light full-frame background for health, finance or product UI shots with dark text on top. Install @shadergradient/react with @react-three/fiber and three, then render <ShaderGradientCanvas style={{position:'absolute',inset:0}} lazyLoad={false} pixelDensity={1}> with <ShaderGradient {...presets.mint.props} /> inside. To make it frame-exact, override animate=\"off\" and pass uTime={seconds} (the shader multiplies it by uSpeed 0.2), set enableTransition={false} so the camera starts in place, and let R3F draw once before each frame is captured. Swap the mint and aqua for brand pastels, raise uStrength for taller ripples, and turn grain \"on\" if the clean gradient bands after compression."},{"slug":"shadergradient.interstella","name":"interstella","title":"Interstella","summary":"A dark close-up sphere with an amber glow on one side and a teal rim of light sweeping in, grainy","registry":"shadergradient","framework":"react","layer":"component","category":"backgrounds","also":["shaders"],"tags":["background","gradient","grain","teal","amber","sphere","cinematic"],"aspect":"any","install":"npm i @shadergradient/react @react-three/fiber three three-stdlib camera-controls","docs":"https://shadergradient.co/customize","source":"https://github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts#L142","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/6a5381aa93cd/lib-shadergradient-interstella.webp","video":"https://s3.varg.ai/how-to/previews/1db6ac0da274/lib-shadergradient-interstella.mp4","credit":"Rendered by varg from the library’s own code (ShaderGradient · rendered by varg)","note":"@shadergradient/react 2.4.20 presets.interstella.props unchanged (react-three-fiber 8.17, three 0.169), rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the ShaderGradient \"Interstella\" preset (preset 03 on https://shadergradient.co/customize, MIT; exported as presets.interstella from @shadergradient/react, source github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts) as a cinematic full-frame background for a sci-fi, travel or tech title sequence. Install @shadergradient/react with @react-three/fiber and three, then render <ShaderGradientCanvas style={{position:'absolute',inset:0}} lazyLoad={false} pixelDensity={1}> with <ShaderGradient {...presets.interstella.props} /> inside. To make it frame-exact, override animate=\"off\" and pass uTime={seconds} (the shader multiplies it by uSpeed 0.3), set enableTransition={false} so the camera starts in place, and let R3F draw once before each frame is captured. It is lit by an environment map (lightType \"env\", envPreset \"city\"), which loads an HDR file at startup, so preload it before rendering or set envBasePath to a local copy. Recolor color1–color3 and nudge reflection for more or less gloss."},{"slug":"shadergradient.nighty-night","name":"nighty-night","title":"Nighty night","summary":"Indigo and lavender swells rising out of near-black under heavy film grain","registry":"shadergradient","framework":"react","layer":"component","category":"backgrounds","also":["shaders"],"tags":["background","gradient","grain","dark","lavender","water","calm"],"aspect":"any","install":"npm i @shadergradient/react @react-three/fiber three three-stdlib camera-controls","docs":"https://shadergradient.co/customize","source":"https://github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts#L187","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/38ff2b143def/lib-shadergradient-nighty-night.webp","video":"https://s3.varg.ai/how-to/previews/3c9475a56a8d/lib-shadergradient-nighty-night.mp4","credit":"Rendered by varg from the library’s own code (ShaderGradient · rendered by varg)","note":"@shadergradient/react 2.4.20 presets.nightyNight.props unchanged (react-three-fiber 8.17, three 0.169), rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the ShaderGradient \"Nighty night\" preset (preset 04 on https://shadergradient.co/customize, MIT; exported as presets.nightyNight from @shadergradient/react, source github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts) as a dark full-frame background for night-time, sleep, music or late-show titles in white type. Install @shadergradient/react with @react-three/fiber and three, then render <ShaderGradientCanvas style={{position:'absolute',inset:0}} lazyLoad={false} pixelDensity={1}> with <ShaderGradient {...presets.nightyNight.props} /> inside. To make it frame-exact, override animate=\"off\" and pass uTime={seconds} (the shader multiplies it by uSpeed 0.3), set enableTransition={false} so the camera starts in place, and let R3F draw once before each frame is captured. Keep color3 near-black so text stays readable, tint color1 and color2 toward the brand, and lower uStrength for flatter, quieter swells."},{"slug":"shadergradient.viola","name":"viola","title":"Viola","summary":"A saturated amber and yellow field with a blue-violet hollow slowly drifting through it","registry":"shadergradient","framework":"react","layer":"component","category":"backgrounds","also":["shaders"],"tags":["background","gradient","blue","amber","sphere","vivid","contrast"],"aspect":"any","install":"npm i @shadergradient/react @react-three/fiber three three-stdlib camera-controls","docs":"https://shadergradient.co/customize","source":"https://github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts#L232","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/a993505479a7/lib-shadergradient-viola.webp","video":"https://s3.varg.ai/how-to/previews/4ec2e9594133/lib-shadergradient-viola.mp4","credit":"Rendered by varg from the library’s own code (ShaderGradient · rendered by varg)","note":"@shadergradient/react 2.4.20 presets.violaOrientalis.props unchanged (react-three-fiber 8.17, three 0.169), rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the ShaderGradient \"Viola\" preset (preset 05 on https://shadergradient.co/customize, MIT; exported as presets.violaOrientalis from @shadergradient/react, source github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts) as a vivid full-frame background for a product reveal or a punchy hook. Install @shadergradient/react with @react-three/fiber and three, then render <ShaderGradientCanvas style={{position:'absolute',inset:0}} lazyLoad={false} pixelDensity={1}> with <ShaderGradient {...presets.violaOrientalis.props} /> inside. To make it frame-exact, override animate=\"off\" and pass uTime={seconds} (the shader multiplies it by uSpeed 0.1), set enableTransition={false} so the camera starts in place, and let R3F draw once before each frame is captured. The frame is mostly amber (color2) with the blue (color3) showing only in the hollow, so put the brand color in color2 and keep color3 dark for contrast. Raise uSpeed toward 0.2 if the slow default barely moves over a short clip, and change cameraZoom to reframe the sphere."},{"slug":"shadergradient.universe","name":"universe","title":"Universe","summary":"Violet and coral currents flowing out of black, like a slow-moving nebula","registry":"shadergradient","framework":"react","layer":"component","category":"backgrounds","also":["shaders"],"tags":["background","gradient","dark","violet","coral","space","water"],"aspect":"any","install":"npm i @shadergradient/react @react-three/fiber three three-stdlib camera-controls","docs":"https://shadergradient.co/customize","source":"https://github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts#L276","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/b4a5fce8eaa6/lib-shadergradient-universe.webp","video":"https://s3.varg.ai/how-to/previews/e7c8c44b4909/lib-shadergradient-universe.mp4","credit":"Rendered by varg from the library’s own code (ShaderGradient · rendered by varg)","note":"@shadergradient/react 2.4.20 presets.universe.props unchanged (react-three-fiber 8.17, three 0.169), rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the ShaderGradient \"Universe\" preset (preset 06 on https://shadergradient.co/customize, MIT; exported as presets.universe from @shadergradient/react, source github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts) as a dark full-frame background for space, AI or night-sky themes with light text on top. Install @shadergradient/react with @react-three/fiber and three, then render <ShaderGradientCanvas style={{position:'absolute',inset:0}} lazyLoad={false} pixelDensity={1}> with <ShaderGradient {...presets.universe.props} /> inside. To make it frame-exact, override animate=\"off\" and pass uTime={seconds} (the shader multiplies it by uSpeed 0.1), set enableTransition={false} so the camera starts in place, and let R3F draw once before each frame is captured. Keep color3 black for depth, swap violet and coral for brand accents, raise uStrength for more turbulence, and bump uSpeed to 0.15–0.2 for clips under five seconds."},{"slug":"shadergradient.sunset","name":"sunset","title":"Sunset","summary":"Peach, orange and hazy blue bands drifting diagonally, like a sunset through frosted glass","registry":"shadergradient","framework":"react","layer":"component","category":"backgrounds","also":["shaders"],"tags":["background","gradient","sunset","orange","blue","sphere","warm"],"aspect":"any","install":"npm i @shadergradient/react @react-three/fiber three three-stdlib camera-controls","docs":"https://shadergradient.co/customize","source":"https://github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts#L320","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/eb69582f99a2/lib-shadergradient-sunset.webp","video":"https://s3.varg.ai/how-to/previews/9230994ab096/lib-shadergradient-sunset.mp4","credit":"Rendered by varg from the library’s own code (ShaderGradient · rendered by varg)","note":"@shadergradient/react 2.4.20 presets.sunset.props unchanged (react-three-fiber 8.17, three 0.169), rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the ShaderGradient \"Sunset\" preset (preset 07 on https://shadergradient.co/customize, MIT; exported as presets.sunset from @shadergradient/react, source github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts) as a warm full-frame background for travel, lifestyle or end-of-day storytelling. Install @shadergradient/react with @react-three/fiber and three, then render <ShaderGradientCanvas style={{position:'absolute',inset:0}} lazyLoad={false} pixelDensity={1}> with <ShaderGradient {...presets.sunset.props} /> inside. To make it frame-exact, override animate=\"off\" and pass uTime={seconds} (the shader multiplies it by uSpeed 0.1), set enableTransition={false} so the camera starts in place, and let R3F draw once before each frame is captured. Recolor color1–color3 for a different time of day, lower brightness (1.5 by default) for deeper color, and push uSpeed toward 0.2 if the bands need to visibly move in a short shot."},{"slug":"shadergradient.mandarin","name":"mandarin","title":"Mandarin","summary":"A single-hue tangerine surface rippling from bright orange into burnt red","registry":"shadergradient","framework":"react","layer":"component","category":"backgrounds","also":["shaders"],"tags":["background","gradient","orange","monochrome","water","warm","bold"],"aspect":"any","install":"npm i @shadergradient/react @react-three/fiber three three-stdlib camera-controls","docs":"https://shadergradient.co/customize","source":"https://github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts#L366","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/a086c02b9c3a/lib-shadergradient-mandarin.webp","video":"https://s3.varg.ai/how-to/previews/116afb46b09e/lib-shadergradient-mandarin.mp4","credit":"Rendered by varg from the library’s own code (ShaderGradient · rendered by varg)","note":"@shadergradient/react 2.4.20 presets.mandarin.props unchanged (react-three-fiber 8.17, three 0.169), rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the ShaderGradient \"Mandarin\" preset (preset 08 on https://shadergradient.co/customize, MIT; exported as presets.mandarin from @shadergradient/react, source github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts) as a monochrome full-frame brand-color background for titles, stats or a CTA. Install @shadergradient/react with @react-three/fiber and three, then render <ShaderGradientCanvas style={{position:'absolute',inset:0}} lazyLoad={false} pixelDensity={1}> with <ShaderGradient {...presets.mandarin.props} /> inside. To make it frame-exact, override animate=\"off\" and pass uTime={seconds} (the shader multiplies it by uSpeed 0.2), set enableTransition={false} so the camera starts in place, and let R3F draw once before each frame is captured. It is three shades of one hue, so replace them with three shades of the brand color (light, mid, dark), move positionY to shift where the ripples sit, and raise uDensity for tighter waves."},{"slug":"shadergradient.cotton-candy","name":"cotton-candy","title":"Cotton Candy","summary":"Barely-there pastel white and ice-blue ripples drifting across an almost paper-white frame","registry":"shadergradient","framework":"react","layer":"component","category":"backgrounds","also":["shaders"],"tags":["background","gradient","pastel","white","light","water","minimal"],"aspect":"any","install":"npm i @shadergradient/react @react-three/fiber three three-stdlib camera-controls","docs":"https://shadergradient.co/customize","source":"https://github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts#L412","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/fd42104cd8d7/lib-shadergradient-cotton-candy.webp","video":"https://s3.varg.ai/how-to/previews/202e86cd8dd6/lib-shadergradient-cotton-candy.mp4","credit":"Rendered by varg from the library’s own code (ShaderGradient · rendered by varg)","note":"@shadergradient/react 2.4.20 presets.cottonCandy.props unchanged (react-three-fiber 8.17, three 0.169), rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the ShaderGradient \"Cotton Candy\" preset (preset 09 on https://shadergradient.co/customize, MIT; exported as presets.cottonCandy from @shadergradient/react, source github.com/ruucm/shadergradient/blob/main/packages/shadergradient/src/presets.ts) as a near-white full-frame background for minimal product, SaaS or wedding titles in dark type. Install @shadergradient/react with @react-three/fiber and three, then render <ShaderGradientCanvas style={{position:'absolute',inset:0}} lazyLoad={false} pixelDensity={1}> with <ShaderGradient {...presets.cottonCandy.props} /> inside. To make it frame-exact, override animate=\"off\" and pass uTime={seconds} (the shader multiplies it by uSpeed 0.3), set enableTransition={false} so the camera starts in place, and let R3F draw once before each frame is captured. The colors are nearly white, so tint one of them a little more (a pale pink or blue) if the motion needs to show on screen, and raise uStrength for more visible ripples."},{"slug":"aceternity.aurora-background","name":"aurora-background","title":"Aurora Background","summary":"Blurred blue, grey and amber light streaks drift sideways across a dark frame like a slow aurora","registry":"aceternity","framework":"react","layer":"component","category":"backgrounds","tags":["background","aurora","gradient","light","hero","css"],"aspect":"any","install":"npx shadcn@latest add @aceternity/aurora-background","docs":"https://ui.aceternity.com/components/aurora-background","source":"https://ui.aceternity.com/components/aurora-background","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Use the Aurora Background from Aceternity UI (https://ui.aceternity.com/components/aurora-background; free component under the Aceternity License, fine in a commercial video, do not redistribute its source) as the full-frame backdrop behind my title. Install it with `npx shadcn@latest add @aceternity/aurora-background`. The drift is a CSS keyframe on background-position, so make it seek-safe: in Remotion pause the animation and set animation-delay to -(frame / fps)s on the aurora layer; in HyperFrames run it through the CSS-keyframes adapter on the paused timeline. Keep the dark variant, set showRadialGradient to taste, retint the --aurora gradient stops to my brand colors, and shorten the 60 s cycle so the movement reads in a 10 s clip.","preview":{"poster":"https://s3.varg.ai/how-to/previews/e7bd4e3efb69/lib-aceternity-aurora-background.webp","video":"https://s3.varg.ai/how-to/previews/ba650f55f055/lib-aceternity-aurora-background.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/aurora-background); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.background-beams-with-collision","name":"background-beams-with-collision","title":"Background Beams With Collision","summary":"Thin glowing beams fall from the top and burst into small sparks when they hit the floor","registry":"aceternity","framework":"react","layer":"component","category":"particles","also":["backgrounds"],"tags":["background","beams","particles","explosion","light","motion"],"aspect":"any","install":"npx shadcn@latest add @aceternity/background-beams-with-collision","docs":"https://ui.aceternity.com/components/background-beams-with-collision","source":"https://ui.aceternity.com/components/background-beams-with-collision","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Add Background Beams With Collision from Aceternity UI (https://ui.aceternity.com/components/background-beams-with-collision; free under the Aceternity License, fine in commercial video, source not redistributable) behind a centered headline, filling the frame. Install with `npx shadcn@latest add @aceternity/background-beams-with-collision`. The beams are Motion tweens on repeat with random delays, and the bursts come from a collision check on a timer, so for a render compute each beam's y from frame / fps, place the explosion at the frame where a beam reaches the floor, and seed the random spark directions. In HyperFrames, build the same beams on the paused timeline. Tune the beamOptions list (initialX, duration, delay, repeatDelay, className) for density and color.","preview":{"poster":"https://s3.varg.ai/how-to/previews/70f30e5ddb5b/lib-aceternity-background-beams-with-collision.webp","video":"https://s3.varg.ai/how-to/previews/daa4c0aac94f/lib-aceternity-background-beams-with-collision.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/background-beams-with-collision); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.background-gradient-animation","name":"background-gradient-animation","title":"Background Gradient Animation","summary":"Large blurred purple, pink and blue blobs orbit and blend into each other behind a headline","registry":"aceternity","framework":"react","layer":"component","category":"backgrounds","tags":["background","gradient","blobs","mesh","color","css"],"aspect":"any","install":"npx shadcn@latest add @aceternity/background-gradient-animation","docs":"https://ui.aceternity.com/components/background-gradient-animation","source":"https://ui.aceternity.com/components/background-gradient-animation","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Use Aceternity UI's Background Gradient Animation (https://ui.aceternity.com/components/background-gradient-animation; free component, Aceternity License, fine in commercial video, do not redistribute the code) as a full-bleed color backdrop, with my text on top. Install it with `npx shadcn@latest add @aceternity/background-gradient-animation`. The blobs move on CSS keyframes, so pause them and set animation-delay to -(frame / fps)s in Remotion, or use the CSS-keyframes adapter in HyperFrames. Set interactive={false} for video (the pointer blob follows the mouse), then pick gradientBackgroundStart/End, firstColor to fifthColor (RGB strings), size and blendingValue to match the brand palette.","preview":{"poster":"https://s3.varg.ai/how-to/previews/a2052d9ed404/lib-aceternity-background-gradient-animation.webp","video":"https://s3.varg.ai/how-to/previews/ebd6e2280eaf/lib-aceternity-background-gradient-animation.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/background-gradient-animation); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.lamp-effect","name":"lamp-effect","title":"Lamp Effect","summary":"A cyan lamp bar stretches open at the top and casts a cone of light down onto the title","registry":"aceternity","framework":"react","layer":"component","category":"title-cards","also":["backgrounds"],"tags":["background","lamp","light","glow","title","reveal"],"aspect":"any","install":"npx shadcn@latest add @aceternity/lamp","docs":"https://ui.aceternity.com/components/lamp-effect","source":"https://ui.aceternity.com/components/lamp-effect","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Open the video with Aceternity UI's Lamp Effect (https://ui.aceternity.com/components/lamp-effect; free under the Aceternity License, fine in commercial video, source not redistributable): the LampContainer fills the frame and my title sits under the light. Install with `npx shadcn@latest add @aceternity/lamp`. The lamp opens with Motion whileInView tweens (width 15rem to 30rem over 0.8 s), which fire on a viewport event, so replace them with widths and opacities interpolated from frame / fps (Remotion) or with a GSAP tween on the paused HyperFrames timeline. Swap the cyan-500 conic gradients for my accent color and keep the slate-950 background.","preview":{"poster":"https://s3.varg.ai/how-to/previews/90ae6fc98ddb/lib-aceternity-lamp-effect.webp","video":"https://s3.varg.ai/how-to/previews/4a615eeb14b0/lib-aceternity-lamp-effect.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/lamp); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.spotlight-new","name":"spotlight-new","title":"Spotlight New","summary":"Soft white light cones fall from both top corners and sway slowly left and right over a dark frame","registry":"aceternity","framework":"react","layer":"component","category":"textures","tags":["overlay","spotlight","light","beam","hero","subtle"],"aspect":"any","install":"npx shadcn@latest add @aceternity/spotlight-new","docs":"https://ui.aceternity.com/components/spotlight-new","source":"https://ui.aceternity.com/components/spotlight-new","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Layer Aceternity UI's Spotlight New (https://ui.aceternity.com/components/spotlight-new; free component, Aceternity License, fine in commercial video, do not redistribute the source) over a dark background as a slow light sweep behind my headline. Install with `npx shadcn@latest add @aceternity/spotlight-new`. The sway is a Motion x animation that mirrors forever, so in Remotion set x from a sine of frame / fps with the same duration, and in HyperFrames put a yoyo tween on the paused timeline. Adjust gradientFirst/Second/Third for the light color, width, height, smallWidth, translateY, xOffset and duration (7 s by default).","preview":{"poster":"https://s3.varg.ai/how-to/previews/7828539450f0/lib-aceternity-spotlight-new.webp","video":"https://s3.varg.ai/how-to/previews/48791363c6c6/lib-aceternity-spotlight-new.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/spotlight-new); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.sparkles","name":"sparkles","title":"Sparkles","summary":"Fine white particles twinkle in a band under a glowing blue horizon line below a big wordmark","registry":"aceternity","framework":"react","layer":"component","category":"particles","also":["logos"],"tags":["overlay","sparkles","particles","stars","logo","tsparticles"],"aspect":"any","install":"npx shadcn@latest add @aceternity/sparkles","docs":"https://ui.aceternity.com/components/sparkles","source":"https://ui.aceternity.com/components/sparkles","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Use Aceternity UI's Sparkles (https://ui.aceternity.com/components/sparkles; free under the Aceternity License, fine in commercial video, source not redistributable) as a particle band under my logo or wordmark, on black. Install with `npx shadcn@latest add @aceternity/sparkles`. It runs tsParticles on its own requestAnimationFrame loop with random particles, so for a frame-exact render give it a fixed seed and step the engine from frame / fps, or rebuild the field as a seeded canvas that draws particle positions as a function of t (HyperFrames: drive it from the timeline). Tune particleColor, particleDensity, minSize, maxSize, speed and background, and keep the gradient horizon lines.","preview":{"poster":"https://s3.varg.ai/how-to/previews/fc4836035086/lib-aceternity-sparkles.webp","video":"https://s3.varg.ai/how-to/previews/154df33a4442/lib-aceternity-sparkles.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/sparkles); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.wavy-background","name":"wavy-background","title":"Wavy Background","summary":"Thick blurred neon waves in cyan and violet roll horizontally through the middle of a black frame","registry":"aceternity","framework":"react","layer":"component","category":"backgrounds","tags":["background","waves","neon","noise","canvas","hero"],"aspect":"any","install":"npx shadcn@latest add @aceternity/wavy-background","docs":"https://ui.aceternity.com/components/wavy-background","source":"https://ui.aceternity.com/components/wavy-background","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Put Aceternity UI's Wavy Background (https://ui.aceternity.com/components/wavy-background; free component, Aceternity License, fine in commercial video, do not redistribute the code) full-frame behind my headline. Install with `npx shadcn@latest add @aceternity/wavy-background`. The waves are drawn on a canvas from simplex noise, and the noise time advances inside a requestAnimationFrame loop, so replace that counter with a value computed from frame / fps (Remotion) or from the HyperFrames timeline time and redraw once per frame. Set colors (array of hex), waveWidth, blur, waveOpacity, backgroundFill and speed (\"slow\" or \"fast\").","preview":{"poster":"https://s3.varg.ai/how-to/previews/3e0acf0e5984/lib-aceternity-wavy-background.webp","video":"https://s3.varg.ai/how-to/previews/807bd5f62c59/lib-aceternity-wavy-background.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/wavy-background); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.vortex","name":"vortex","title":"Vortex","summary":"Hundreds of small glowing particles stream along a noisy swirl, each leaving a short trail","registry":"aceternity","framework":"react","layer":"component","category":"particles","also":["backgrounds"],"tags":["background","particles","swirl","noise","canvas","glow"],"aspect":"any","install":"npx shadcn@latest add @aceternity/vortex","docs":"https://ui.aceternity.com/components/vortex","source":"https://ui.aceternity.com/components/vortex","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Use Aceternity UI's Vortex (https://ui.aceternity.com/components/vortex; free under the Aceternity License, fine in commercial video, source not redistributable) as an energetic full-frame backdrop for a title or CTA. Install with `npx shadcn@latest add @aceternity/vortex`. Particles move through simplex noise on a canvas requestAnimationFrame loop with Math.random spawns, so for rendering seed the random generator and advance the simulation a fixed number of steps per frame from frame 0 (Remotion), or step it from the HyperFrames timeline. Tune particleCount, baseHue, rangeY, baseSpeed, rangeSpeed, baseRadius, rangeRadius and backgroundColor.","preview":{"poster":"https://s3.varg.ai/how-to/previews/144f405abe5b/lib-aceternity-vortex.webp","video":"https://s3.varg.ai/how-to/previews/b77be8279bc2/lib-aceternity-vortex.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/vortex); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.shooting-stars-and-stars-background","name":"shooting-stars-and-stars-background","title":"Shooting Stars and Stars Background","summary":"A dim star field twinkles while occasional shooting stars streak diagonally across the frame","registry":"aceternity","framework":"react","layer":"component","category":"particles","also":["backgrounds"],"tags":["background","stars","night","space","canvas","shooting-star"],"aspect":"any","install":"npx shadcn@latest add @aceternity/shooting-stars","docs":"https://ui.aceternity.com/components/shooting-stars-and-stars-background","source":"https://ui.aceternity.com/components/shooting-stars-and-stars-background","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Build a night-sky backdrop from Aceternity UI's Shooting Stars and Stars Background (https://ui.aceternity.com/components/shooting-stars-and-stars-background; free components, Aceternity License, fine in commercial video, do not redistribute the source): StarsBackground fills the frame and ShootingStars sits on top. Install ShootingStars with `npx shadcn@latest add @aceternity/shooting-stars`; StarsBackground is on the same page. Both run on requestAnimationFrame and timers with random positions and delays, so seed the randomness and compute twinkle and streak positions from frame / fps (Remotion) or from the HyperFrames timeline time. Set starDensity, allStarsTwinkle, twinkleProbability, minSpeed/maxSpeed, minDelay/maxDelay, starColor and trailColor.","preview":{"poster":"https://s3.varg.ai/how-to/previews/6819ebde2665/lib-aceternity-shooting-stars-and-stars-background.webp","video":"https://s3.varg.ai/how-to/previews/02168f34f80e/lib-aceternity-shooting-stars-and-stars-background.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/shooting-stars); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.background-lines","name":"background-lines","title":"Background Lines","summary":"Thin colored curves draw themselves across a black frame in staggered waves behind centered text","registry":"aceternity","framework":"react","layer":"component","category":"backgrounds","also":["generative"],"tags":["background","lines","svg","draw","strokes","hero"],"aspect":"any","install":"npx shadcn@latest add @aceternity/background-lines","docs":"https://ui.aceternity.com/components/background-lines","source":"https://ui.aceternity.com/components/background-lines","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Add Aceternity UI's Background Lines (https://ui.aceternity.com/components/background-lines; free under the Aceternity License, fine in commercial video, source not redistributable) as a full-frame layer behind my headline. Install with `npx shadcn@latest add @aceternity/background-lines`. Each SVG path animates its stroke-dashoffset with Motion on repeat with random delays, so in Remotion compute every path's dash offset from frame / fps with fixed per-path delays, and in HyperFrames tween strokeDashoffset on the paused timeline. Set svgOptions.duration for speed and recolor the path palette to the brand.","preview":{"poster":"https://s3.varg.ai/how-to/previews/a06e2f65d00c/lib-aceternity-background-lines.webp","video":"https://s3.varg.ai/how-to/previews/f94cc18a44bc/lib-aceternity-background-lines.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/background-lines); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.cloud-shader","name":"cloud-shader","title":"Cloud Shader","summary":"Fluffy white clouds drift slowly across a bright blue sky, drawn live in a WebGL shader","registry":"aceternity","framework":"react","layer":"component","category":"shaders","also":["backgrounds"],"tags":["background","clouds","sky","shader","webgl","daylight"],"aspect":"any","install":"npx shadcn@latest add @aceternity/cloud-shader","docs":"https://ui.aceternity.com/components/cloud-shader","source":"https://ui.aceternity.com/components/cloud-shader","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Use Aceternity UI's Cloud Shader (https://ui.aceternity.com/components/cloud-shader; free component under the Aceternity License, fine in commercial video, do not redistribute the code) as a bright sky backdrop filling the frame, with a product shot or headline in front. Install with `npx shadcn@latest add @aceternity/cloud-shader`. The shader already takes time as the u_time uniform, but the component sets it from performance.now() in a requestAnimationFrame loop; set u_time to frame / fps × speed instead (Remotion) or from the HyperFrames timeline, and it renders the same frame every time. Adjust speed, count (1 to 6 clouds), cloudColor, skyTopColor and skyBottomColor.","preview":{"poster":"https://s3.varg.ai/how-to/previews/894dfd0d509e/lib-aceternity-cloud-shader.webp","video":"https://s3.varg.ai/how-to/previews/c27b16969ed1/lib-aceternity-cloud-shader.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/cloud-shader); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.text-generate-effect","name":"text-generate-effect","title":"Text Generate Effect","summary":"A paragraph appears word by word, each word fading in from blur to crisp white","registry":"aceternity","framework":"react","layer":"primitive","category":"text-effects","tags":["text","reveal","blur","words","caption"],"aspect":"any","install":"npx shadcn@latest add @aceternity/text-generate-effect","docs":"https://ui.aceternity.com/components/text-generate-effect","source":"https://ui.aceternity.com/components/text-generate-effect","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Reveal a quote or voice-over line with Aceternity UI's Text Generate Effect (https://ui.aceternity.com/components/text-generate-effect; free under the Aceternity License, fine in commercial video, source not redistributable), centered in the frame in large type. Install with `npx shadcn@latest add @aceternity/text-generate-effect`. It staggers each word's opacity and blur with Motion's useAnimate on mount, so in Remotion compute every word's opacity and blur from frame / fps with a per-word delay, and in HyperFrames stagger the words on the paused timeline. Pass words, filter (blur on or off) and duration, and time the stagger to the narration.","preview":{"poster":"https://s3.varg.ai/how-to/previews/06f4daa3e191/lib-aceternity-text-generate-effect.webp","video":"https://s3.varg.ai/how-to/previews/52ab6081e3ab/lib-aceternity-text-generate-effect.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/text-generate-effect); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.typewriter-effect","name":"typewriter-effect","title":"Typewriter Effect","summary":"A headline types itself letter by letter, the last word in blue, followed by a blinking cursor","registry":"aceternity","framework":"react","layer":"primitive","category":"text-effects","tags":["text","typewriter","typing","cursor","headline"],"aspect":"any","install":"npx shadcn@latest add @aceternity/typewriter-effect","docs":"https://ui.aceternity.com/components/typewriter-effect","source":"https://ui.aceternity.com/components/typewriter-effect","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Type out my headline with Aceternity UI's Typewriter Effect (https://ui.aceternity.com/components/typewriter-effect; free component, Aceternity License, fine in commercial video, do not redistribute the source), centered in the frame. Install with `npx shadcn@latest add @aceternity/typewriter-effect`. TypewriterEffect reveals characters with a Motion stagger when the element enters view, and TypewriterEffectSmooth animates a width mask with whileInView; for a render, derive the number of visible characters (or the mask width) and the cursor blink from frame / fps (Remotion) or the HyperFrames timeline. Pass words as [{ text, className }] to color single words, and set cursorClassName for the cursor color.","preview":{"poster":"https://s3.varg.ai/how-to/previews/335100ec7d3e/lib-aceternity-typewriter-effect.webp","video":"https://s3.varg.ai/how-to/previews/7dba4dc6ebaf/lib-aceternity-typewriter-effect.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/typewriter-effect); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.flip-words","name":"flip-words","title":"Flip Words","summary":"One word in a sentence swaps every few seconds, the new word blurring in letter by letter","registry":"aceternity","framework":"react","layer":"primitive","category":"text-effects","tags":["text","words","rotate","swap","headline"],"aspect":"any","install":"npx shadcn@latest add @aceternity/flip-words","docs":"https://ui.aceternity.com/components/flip-words","source":"https://ui.aceternity.com/components/flip-words","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Use Aceternity UI's Flip Words (https://ui.aceternity.com/components/flip-words; free under the Aceternity License, fine in commercial video, source not redistributable) for a headline like \"Build ___ videos\" where the blank cycles through my words. Install with `npx shadcn@latest add @aceternity/flip-words`. It switches words on a setTimeout and animates letters with Motion springs and AnimatePresence, so in Remotion pick the current word from Math.floor(frame / (fps × duration)) and interpolate each letter's opacity and blur from the frame offset within that word; in HyperFrames sequence the same on the paused timeline. Set words and duration (ms between swaps), and style the active word color.","preview":{"poster":"https://s3.varg.ai/how-to/previews/9352ca8f06e0/lib-aceternity-flip-words.webp","video":"https://s3.varg.ai/how-to/previews/148e4a557b2b/lib-aceternity-flip-words.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/flip-words); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.container-text-flip","name":"container-text-flip","title":"Container Text Flip","summary":"A rounded pill resizes smoothly as the word inside flips to the next one in a list","registry":"aceternity","framework":"react","layer":"primitive","category":"text-effects","tags":["text","words","pill","badge","swap"],"aspect":"any","install":"npx shadcn@latest add @aceternity/container-text-flip","docs":"https://ui.aceternity.com/components/container-text-flip","source":"https://ui.aceternity.com/components/container-text-flip","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Add Aceternity UI's Container Text Flip (https://ui.aceternity.com/components/container-text-flip; free component, Aceternity License, fine in commercial video, do not redistribute the code) as a word badge inside my headline, so the pill shrinks or grows to fit each new word. Install with `npx shadcn@latest add @aceternity/container-text-flip`. Words change on a setInterval and the width and letters animate with Motion, so for rendering pick the word index from frame / fps ÷ interval, measure each word's width once, and interpolate the pill width and letter blur from the frame (Remotion) or tween them on the HyperFrames timeline. Set words, interval, animationDuration, className and textClassName.","preview":{"poster":"https://s3.varg.ai/how-to/previews/c34b92d8ae60/lib-aceternity-container-text-flip.webp","video":"https://s3.varg.ai/how-to/previews/51c108abbeed/lib-aceternity-container-text-flip.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/container-text-flip); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.colourful-text","name":"colourful-text","title":"Colourful Text","summary":"Each letter of a word cycles through bright colors and briefly blurs, lifts and scales in turn","registry":"aceternity","framework":"react","layer":"primitive","category":"text-effects","tags":["text","color","letters","rainbow","headline"],"aspect":"any","install":"npx shadcn@latest add @aceternity/colourful-text","docs":"https://ui.aceternity.com/components/colourful-text","source":"https://ui.aceternity.com/components/colourful-text","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Highlight one key word of my headline with Aceternity UI's Colourful Text (https://ui.aceternity.com/components/colourful-text; free under the Aceternity License, fine in commercial video, source not redistributable), in large bold type over a dark frame. Install with `npx shadcn@latest add @aceternity/colourful-text`. It shuffles the color list on a setInterval (every 5 s) and animates each letter with Motion, so in Remotion compute the palette step from frame / fps with a fixed shuffle order and drive each letter's color, y, scale and blur from the frame; in HyperFrames tween them on the paused timeline. Pass text and replace the built-in color list with the brand palette.","preview":{"poster":"https://s3.varg.ai/how-to/previews/47377a50a518/lib-aceternity-colourful-text.webp","video":"https://s3.varg.ai/how-to/previews/bebdd261fe81/lib-aceternity-colourful-text.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/colourful-text); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.text-flipping-board","name":"text-flipping-board","title":"Text Flipping Board","summary":"A split-flap departure board whose tiles flip through letters until a short quote spells out","registry":"aceternity","framework":"react","layer":"primitive","category":"kinetic-type","also":["text-effects"],"tags":["text","split-flap","board","airport","letters"],"aspect":"any","install":"npx shadcn@latest add @aceternity/text-flipping-board","docs":"https://ui.aceternity.com/components/text-flipping-board","source":"https://ui.aceternity.com/components/text-flipping-board","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Spell out a short message on Aceternity UI's Text Flipping Board (https://ui.aceternity.com/components/text-flipping-board; free component, Aceternity License, fine in commercial video, do not redistribute the source), centered in the frame like an airport departure board. Install with `npx shadcn@latest add @aceternity/text-flipping-board`. Tiles advance on setTimeout steps through random intermediate letters, with Motion flip tweens, so for a render seed the random letters and compute each tile's current glyph and flip progress from frame / fps (Remotion), or schedule the flips on the HyperFrames timeline. Set text (use line breaks for rows) and duration, and change the board size and colors in its classes.","preview":{"poster":"https://s3.varg.ai/how-to/previews/edcdc6e4c251/lib-aceternity-text-flipping-board.webp","video":"https://s3.varg.ai/how-to/previews/6177d2c767ae/lib-aceternity-text-flipping-board.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/text-flipping-board); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.github-globe","name":"github-globe","title":"GitHub Globe","summary":"A dark-blue dotted 3D globe spins slowly while glowing arcs fly between cities","registry":"aceternity","framework":"react","layer":"component","category":"maps","also":["three-d"],"tags":["element","globe","3d","arcs","world","three.js"],"aspect":"any","install":"npx shadcn@latest add @aceternity/globe","docs":"https://ui.aceternity.com/components/github-globe","source":"https://ui.aceternity.com/components/github-globe","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Place Aceternity UI's GitHub Globe (https://ui.aceternity.com/components/github-globe; free under the Aceternity License, fine in commercial video, source not redistributable) in the lower two thirds of the frame under a title about global reach. Install with `npx shadcn@latest add @aceternity/globe`. It is three.js and three-globe inside React Three Fiber with autoRotate, timed arc animations and random rings, so for a render set the globe's rotation from frame / fps, drive the arc dash animation from the same time and seed the rings (in Remotion use @remotion/three and useCurrentFrame; in HyperFrames use the Three.js adapter). Edit globeConfig (globeColor, atmosphereColor, polygonColor, arcTime, autoRotateSpeed) and the data array of arcs (startLat, startLng, endLat, endLng, arcAlt, color).","preview":{"poster":"https://s3.varg.ai/how-to/previews/3a1cf4f1eb58/lib-aceternity-github-globe.webp","video":"https://s3.varg.ai/how-to/previews/9dcd7f8ed048/lib-aceternity-github-globe.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/globe); demo copy and layout by varg, recorded in headless Chrome at 1280×720. Country shapes from Natural Earth (public domain)."}},{"slug":"aceternity.world-map","name":"world-map","title":"World Map","summary":"A dotted world map where curved arcs draw between pinned cities that pulse with small rings","registry":"aceternity","framework":"react","layer":"component","category":"maps","tags":["element","map","world","arcs","connections","svg"],"aspect":"any","install":"npx shadcn@latest add @aceternity/world-map","docs":"https://ui.aceternity.com/components/world-map","source":"https://ui.aceternity.com/components/world-map","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Show connections between cities with Aceternity UI's World Map (https://ui.aceternity.com/components/world-map; free component, Aceternity License, fine in commercial video, do not redistribute the code), spanning the frame width below a title. Install with `npx shadcn@latest add @aceternity/world-map`. Arcs draw in with Motion pathLength tweens on mount and the city dots pulse with SVG animate, so in Remotion set each arc's pathLength from frame / fps with a per-arc delay and scale the pulse rings from the same clock; in HyperFrames tween pathLength on the paused timeline. Pass dots as [{ start: { lat, lng }, end: { lat, lng } }], set lineColor, and use the dark map variant for a black frame.","preview":{"poster":"https://s3.varg.ai/how-to/previews/0ad241811633/lib-aceternity-world-map.webp","video":"https://s3.varg.ai/how-to/previews/c51a7532731d/lib-aceternity-world-map.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/world-map); demo copy and layout by varg, recorded in headless Chrome at 1280×720."}},{"slug":"aceternity.3d-marquee","name":"3d-marquee","title":"3D Marquee","summary":"A tilted wall of screenshots seen at an isometric angle, its columns scrolling up and down","registry":"aceternity","framework":"react","layer":"component","category":"galleries","also":["three-d"],"tags":["element","marquee","3d","wall","screenshots","isometric"],"aspect":"any","install":"npx shadcn@latest add @aceternity/3d-marquee","docs":"https://ui.aceternity.com/components/3d-marquee","source":"https://ui.aceternity.com/components/3d-marquee","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Use Aceternity UI's 3D Marquee (https://ui.aceternity.com/components/3d-marquee; free under the Aceternity License, fine in commercial video, source not redistributable) as a full-frame showcase of my product screenshots or past work, tilted in perspective. Install with `npx shadcn@latest add @aceternity/3d-marquee`. Each column moves up or down with a Motion y animation that mirrors forever (10 s and 15 s), so in Remotion set each column's translateY from a triangle wave of frame / fps with the same periods, and in HyperFrames use yoyo tweens on the paused timeline. Pass images (16 or more same-ratio screenshots) and adjust the rotateX/rotateZ tilt in className.","preview":{"poster":"https://s3.varg.ai/how-to/previews/1a92fda3dac5/lib-aceternity-3d-marquee.webp","video":"https://s3.varg.ai/how-to/previews/cc6052dd4318/lib-aceternity-3d-marquee.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/3d-marquee); demo copy and layout by varg, recorded in headless Chrome at 1280×720. Tiles are varg’s own renders of Vanta.js, ShaderGradient, tsParticles and Hero Patterns."}},{"slug":"aceternity.macbook-scroll","name":"macbook-scroll","title":"Macbook Scroll","summary":"A CSS-built MacBook whose lid tilts open and whose screen image lifts toward the viewer","registry":"aceternity","framework":"react","layer":"component","category":"devices","tags":["device","macbook","laptop","mockup","scroll"],"aspect":"any","install":"npx shadcn@latest add @aceternity/macbook-scroll","docs":"https://ui.aceternity.com/components/macbook-scroll","source":"https://ui.aceternity.com/components/macbook-scroll","license":"Aceternity License (free components)","runs":"local","clock":"adapt","prompt":"Present a screen recording inside Aceternity UI's Macbook Scroll (https://ui.aceternity.com/components/macbook-scroll; free component, Aceternity License, fine in commercial video, do not redistribute the source), the laptop centered in the frame. Install with `npx shadcn@latest add @aceternity/macbook-scroll`. The lid angle, screen scale and lift all come from Motion useScroll and useTransform, so replace scrollYProgress with a progress value interpolated from frame / fps (0 to 1 over the reveal) in Remotion, or tween the same rotateX, scale and translateY on the HyperFrames timeline. Set src to my screenshot or swap in a video element, plus title, badge and showGradient.","preview":{"poster":"https://s3.varg.ai/how-to/previews/d49a96cf3f5b/lib-aceternity-macbook-scroll.webp","video":"https://s3.varg.ai/how-to/previews/cccf2248df97/lib-aceternity-macbook-scroll.mp4","credit":"Rendered by varg from the library’s own code (Aceternity UI)","note":"Installed unmodified from Aceternity’s registry (npx shadcn add @aceternity/macbook-scroll); demo copy and layout by varg, recorded in headless Chrome at 1280×720. The screen shows a screenshot of skills.varg.ai."}},{"slug":"tsparticles.confetti","name":"confetti","title":"Confetti","summary":"One burst of confetti squares and dots flung up from the centre, tumbling, flipping and fading as it falls","registry":"tsparticles","framework":"html","layer":"component","category":"particles","tags":["overlay","confetti","celebration","burst","transparent","canvas"],"aspect":"any","install":"pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>","docs":"https://particles.js.org/demos/recipes/confetti","source":"https://github.com/tsparticles/presets/blob/main/presets/confetti/src/options.ts","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/959a12321bf9/lib-tsparticles-confetti.webp","video":"https://s3.varg.ai/how-to/previews/c97bba1d9f56/lib-tsparticles-confetti.mp4","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","note":"@tsparticles/preset-confetti 4.4.0 with emitters.startCount raised from 50 to 120 so the burst reads at preview size, fired every 2 s over a dark backdrop (the preset itself is transparent), rendered in headless Chrome at 640x360"},"runs":"local","clock":"adapt","prompt":"Use the tsParticles Confetti preset (https://particles.js.org/demos/recipes/confetti, MIT, options in github.com/tsparticles/presets/blob/main/presets/confetti/src/options.ts) as a transparent overlay over the footage on a celebration beat (a launch, a milestone number, a \"we did it\" line). Load @tsparticles/engine and @tsparticles/preset-confetti (or its CDN bundle tsparticles.preset.confetti.bundle.min.js), call loadConfettiPreset(tsParticles), then tsParticles.load({ id, options: { preset: \"confetti\", fullScreen: { enable: false } } }) into a full-frame div layered above the video. Create the container on the beat frame so the burst lands on it. tsParticles ticks on requestAnimationFrame and derives each step from the frame timestamp, so make it deterministic: seed Math.random before loading, swap requestAnimationFrame for a queue you flush once per video frame with the timestamp frame × 1000 / fps (keep fpsLimit at or above the video fps), and render frames in order from the moment it starts (it is a running simulation, so replay from that point after a backwards seek). Override the colors with brand hex values, raise emitters.startCount (50 by default) for a bigger burst, and move emitters.position (percent of the frame) to fire from behind a logo or a number."},{"slug":"tsparticles.confetti-explosions","name":"confetti-explosions","title":"Confetti Explosions","summary":"Confetti bursts popping one after another at random spots across the frame, each spraying outward and dropping","registry":"tsparticles","framework":"html","layer":"component","category":"particles","tags":["overlay","confetti","celebration","bursts","transparent","party"],"aspect":"any","install":"pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>","docs":"https://particles.js.org/demos/recipes/confetti-explosions","source":"https://github.com/tsparticles/presets/blob/main/presets/confettiExplosions/src/options.ts","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/04be03438ab8/lib-tsparticles-confetti-explosions.webp","video":"https://s3.varg.ai/how-to/previews/213dce52aa79/lib-tsparticles-confetti-explosions.mp4","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","note":"@tsparticles/preset-confetti-explosions 4.4.0, default options over a dark backdrop (the preset itself is transparent), rendered in headless Chrome at 640x360"},"runs":"local","clock":"adapt","prompt":"Use the tsParticles Confetti Explosions preset (https://particles.js.org/demos/recipes/confetti-explosions, MIT, options in github.com/tsparticles/presets/blob/main/presets/confettiExplosions/src/options.ts) as a transparent overlay for a sustained party or winner moment, over footage or a title card. Load @tsparticles/engine and @tsparticles/preset-confetti-explosions (or its CDN bundle tsparticles.preset.confettiExplosions.bundle.min.js), call loadConfettiExplosionsPreset(tsParticles), then tsParticles.load({ id, options: { preset: \"confettiExplosions\", fullScreen: { enable: false } } }) into a full-frame div layered above the video. tsParticles ticks on requestAnimationFrame and derives each step from the frame timestamp, so make it deterministic: seed Math.random before loading, swap requestAnimationFrame for a queue you flush once per video frame with the timestamp frame × 1000 / fps (keep fpsLimit at or above the video fps), and render frames in order from the moment it starts (it is a running simulation, so replay from that point after a backwards seek). Set the colors from the brand, lengthen emitters.rate.delay (0.4 s by default) for fewer, more readable pops, and lower rate.quantity for smaller bursts. Seeding Math.random also fixes where each burst lands."},{"slug":"tsparticles.confetti-falling","name":"confetti-falling","title":"Confetti Falling","summary":"A steady shower of confetti squares and dots tumbling down from the top with a gentle wobble","registry":"tsparticles","framework":"html","layer":"component","category":"particles","tags":["overlay","confetti","falling","celebration","transparent","loop"],"aspect":"any","install":"pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>","docs":"https://particles.js.org/demos/recipes/confetti-falling","source":"https://github.com/tsparticles/presets/blob/main/presets/confettiFalling/src/options.ts","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/3346e3b2a0cb/lib-tsparticles-confetti-falling.webp","video":"https://s3.varg.ai/how-to/previews/2f32ded441f6/lib-tsparticles-confetti-falling.mp4","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","note":"@tsparticles/preset-confetti-falling 4.4.0 with density scaling off (200 pieces in the small frame) over a dark backdrop (the preset itself is transparent), rendered in headless Chrome at 640x360"},"runs":"local","clock":"adapt","prompt":"Use the tsParticles Confetti Falling preset (https://particles.js.org/demos/recipes/confetti-falling, MIT, options in github.com/tsparticles/presets/blob/main/presets/confettiFalling/src/options.ts) as a transparent overlay that keeps falling under an end card, a thank-you screen or a results reveal. Load @tsparticles/engine and @tsparticles/preset-confetti-falling (or its CDN bundle tsparticles.preset.confettiFalling.bundle.min.js), call loadConfettiFallingPreset(tsParticles), then tsParticles.load({ id, options: { preset: \"confettiFalling\", fullScreen: { enable: false } } }) into a full-frame div layered above the scene. Pre-roll a second or two of ticks before the scene starts so the frame is already full instead of filling from the top. tsParticles ticks on requestAnimationFrame and derives each step from the frame timestamp, so make it deterministic: seed Math.random before loading, swap requestAnimationFrame for a queue you flush once per video frame with the timestamp frame × 1000 / fps (keep fpsLimit at or above the video fps), and render frames in order from the moment it starts (it is a running simulation, so replay from that point after a backwards seek). Set the colors from the brand, particles.number.value for density (200, scaled by frame area unless you set number.density.enable to false, which you want for a fixed count at 1080p), and move.speed for how fast it falls."},{"slug":"tsparticles.confetti-parade","name":"confetti-parade","title":"Confetti Parade","summary":"Two confetti cannons firing continuous streams in from the left and right edges, arcing over the middle","registry":"tsparticles","framework":"html","layer":"component","category":"particles","tags":["overlay","confetti","cannons","celebration","transparent","stream"],"aspect":"any","install":"pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>","docs":"https://particles.js.org/demos/recipes/confetti-parade","source":"https://github.com/tsparticles/presets/blob/main/presets/confettiParade/src/options.ts","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/7a061eda90dd/lib-tsparticles-confetti-parade.webp","video":"https://s3.varg.ai/how-to/previews/a3429a290b9a/lib-tsparticles-confetti-parade.mp4","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","note":"@tsparticles/preset-confetti-parade 4.4.0, default options, started at the beginning of the clip over a dark backdrop (the preset itself is transparent), rendered in headless Chrome at 640x360"},"runs":"local","clock":"adapt","prompt":"Use the tsParticles Confetti Parade preset (https://particles.js.org/demos/recipes/confetti-parade, MIT, options in github.com/tsparticles/presets/blob/main/presets/confettiParade/src/options.ts) as a transparent overlay that frames a winner, a product or a big number from both sides. Load @tsparticles/engine and @tsparticles/preset-confetti-parade (or its CDN bundle tsparticles.preset.confettiParade.bundle.min.js), call loadConfettiParadePreset(tsParticles), then tsParticles.load({ id, options: { preset: \"confettiParade\", fullScreen: { enable: false } } }) into a full-frame div layered above the video. The cannons fire for about 10 s from the moment the container is created, so create it on the cue. tsParticles ticks on requestAnimationFrame and derives each step from the frame timestamp, so make it deterministic: seed Math.random before loading, swap requestAnimationFrame for a queue you flush once per video frame with the timestamp frame × 1000 / fps (keep fpsLimit at or above the video fps), and render frames in order from the moment it starts (it is a running simulation, so replay from that point after a backwards seek). Set the colors from the brand, emitters[].rate.quantity for how thick the streams are, and emitters[].position.y to raise or lower the cannons."},{"slug":"tsparticles.confetti-bundle","name":"confetti-bundle","title":"Confetti bundle","summary":"Two side cannons firing confetti in from the bottom corners, arcing up and raining down over the middle","registry":"tsparticles","framework":"html","layer":"component","category":"particles","tags":["overlay","confetti","cannons","celebration","transparent","one-liner"],"aspect":"any","install":"pnpm add @tsparticles/confetti","docs":"https://confetti.js.org","source":"https://github.com/tsparticles/tsparticles/blob/main/bundles/confetti/src/confetti.ts","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/938760b6f82a/lib-tsparticles-confetti-bundle.webp","video":"https://s3.varg.ai/how-to/previews/97309fc4c4d8/lib-tsparticles-confetti-bundle.mp4","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","note":"@tsparticles/confetti 4.4.0: a two-cannon confetti.create() salute (startVelocity 48) fired every 1.2 s over a dark backdrop, rendered in headless Chrome at 640x360"},"runs":"local","clock":"adapt","prompt":"Use the tsParticles Confetti bundle (https://confetti.js.org, MIT, source github.com/tsparticles/tsparticles/tree/main/bundles/confetti) to fire confetti over the footage exactly on a beat. Put a full-frame transparent canvas above the video, bind it with const fire = await confetti.create(canvas, {}), and on the cue frame call fire({ count: 140, angle: 55, spread: 60, startVelocity: 60, position: { x: 0, y: 85 } }) plus a mirrored call with angle 125 from x: 100 for a two-cannon salute (position is in percent of the frame). tsParticles ticks on requestAnimationFrame and derives each step from the frame timestamp, so make it deterministic: seed Math.random before firing, swap requestAnimationFrame for a queue you flush once per video frame with the timestamp frame × 1000 / fps (keep fpsLimit at or above the video fps), and render frames in order from the moment it starts (it is a running simulation, so replay from that point after a backwards seek). Pass colors with brand hex values, shapes for squares, circles or emoji, and ticks for how long the pieces stay on screen."},{"slug":"tsparticles.fireworks","name":"fireworks","title":"Fireworks","summary":"Rockets streaking up from the bottom and bursting into colored sparks that fade and fall against black","registry":"tsparticles","framework":"html","layer":"component","category":"particles","tags":["overlay","fireworks","celebration","night","sparks","new-year","dark"],"aspect":"any","install":"pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>","docs":"https://particles.js.org/demos/recipes/fireworks","source":"https://github.com/tsparticles/presets/blob/main/presets/fireworks/src/options.ts","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/0741abc5b266/lib-tsparticles-fireworks.webp","video":"https://s3.varg.ai/how-to/previews/1834a96cc843/lib-tsparticles-fireworks.mp4","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","note":"@tsparticles/preset-fireworks 4.4.0, default options (black background), rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the tsParticles Fireworks preset (https://particles.js.org/demos/recipes/fireworks, MIT, options in github.com/tsparticles/presets/blob/main/presets/fireworks/src/options.ts) as a full-frame night-sky background for New Year, launch or anniversary titles, or as an overlay on night footage with the background cleared. Load @tsparticles/engine and @tsparticles/preset-fireworks (or its CDN bundle tsparticles.preset.fireworks.bundle.min.js), call loadFireworksPreset(tsParticles), then tsParticles.load({ id, options: { preset: \"fireworks\", fullScreen: { enable: false } } }) into a full-frame div. tsParticles ticks on requestAnimationFrame and derives each step from the frame timestamp, so make it deterministic: seed Math.random before loading, swap requestAnimationFrame for a queue you flush once per video frame with the timestamp frame × 1000 / fps (keep fpsLimit at or above the video fps), and render frames in order from the moment it starts (it is a running simulation, so replay from that point after a backwards seek). The @tsparticles/fireworks bundle wraps the same effect behind a fireworks() call if that is simpler. Clear background.color to composite it over footage, lengthen emitters.rate.delay (0.3 s) for fewer, bigger moments, and set sounds: { enable: false } (the preset plays explosion sounds), since the audio belongs in the edit."},{"slug":"tsparticles.snow","name":"snow","title":"Snow","summary":"Soft white snowflakes of mixed sizes drifting down with a slow side-to-side sway","registry":"tsparticles","framework":"html","layer":"component","category":"particles","tags":["overlay","snow","winter","holiday","transparent","ambient"],"aspect":"any","install":"pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>","docs":"https://particles.js.org/demos/recipes/snow","source":"https://github.com/tsparticles/presets/blob/main/presets/snow/src/options.ts","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/a39593304fe3/lib-tsparticles-snow.webp","video":"https://s3.varg.ai/how-to/previews/5dcfebde4066/lib-tsparticles-snow.mp4","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","note":"@tsparticles/preset-snow 4.4.0, default options over a dark navy backdrop (the preset itself is transparent), rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the tsParticles Snow preset (https://particles.js.org/demos/recipes/snow, MIT, options in github.com/tsparticles/presets/blob/main/presets/snow/src/options.ts) as a transparent overlay over winter or holiday footage, product shots or a seasonal title card. Load @tsparticles/engine and @tsparticles/preset-snow (or its CDN bundle tsparticles.preset.snow.bundle.min.js), call loadSnowPreset(tsParticles), then tsParticles.load({ id, options: { preset: \"snow\", fullScreen: { enable: false } } }) into a full-frame div layered above the video. Pre-roll a couple of seconds of ticks so the first frame already has snow across the whole height. tsParticles ticks on requestAnimationFrame and derives each step from the frame timestamp, so make it deterministic: seed Math.random before loading, swap requestAnimationFrame for a queue you flush once per video frame with the timestamp frame × 1000 / fps (keep fpsLimit at or above the video fps), and render frames in order from the moment it starts (it is a running simulation, so replay from that point after a backwards seek). Raise particles.number.value for a heavier fall, lower move.speed for a calmer drift, and tint the flakes slightly toward the grade if pure white looks pasted on."},{"slug":"tsparticles.stars","name":"stars","title":"Stars","summary":"A black sky of tiny white stars, twinkling as each one slowly pulses in brightness","registry":"tsparticles","framework":"html","layer":"component","category":"particles","also":["backgrounds"],"tags":["background","stars","night","space","twinkle","dark","minimal"],"aspect":"any","install":"pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-stars","docs":"https://particles.js.org/demos/recipes/stars","source":"https://github.com/tsparticles/presets/blob/main/presets/stars/src/options.ts","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/d81e8ef01813/lib-tsparticles-stars.webp","video":"https://s3.varg.ai/how-to/previews/520f64e5f079/lib-tsparticles-stars.mp4","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","note":"@tsparticles/preset-stars 4.4.0, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the tsParticles Stars preset (https://particles.js.org/demos/recipes/stars, MIT, options in github.com/tsparticles/presets/blob/main/presets/stars/src/options.ts) as a quiet full-frame night-sky background behind white titles, credits or a space-themed intro. Load @tsparticles/engine and @tsparticles/preset-stars (or its CDN bundle tsparticles.preset.stars.bundle.min.js), call loadStarsPreset(tsParticles), then tsParticles.load({ id, options: { preset: \"stars\", fullScreen: { enable: false } } }) into a full-frame div. tsParticles ticks on requestAnimationFrame and derives each step from the frame timestamp, so make it deterministic: seed Math.random before loading, swap requestAnimationFrame for a queue you flush once per video frame with the timestamp frame × 1000 / fps (keep fpsLimit at or above the video fps), and render frames in order from the moment it starts (it is a running simulation, so replay from that point after a backwards seek). Swap background.color for a deep navy if pure black crushes in the encode, raise particles.number.value for a denser sky, and slow the opacity animation for a calmer twinkle."},{"slug":"tsparticles.links","name":"links","title":"Links","summary":"White dots drifting on black, joined by thin lines whenever two come close, forming a shifting network","registry":"tsparticles","framework":"html","layer":"component","category":"generative","also":["particles"],"tags":["background","network","plexus","links","tech","dark","nodes"],"aspect":"any","install":"pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>","docs":"https://particles.js.org/demos/recipes/links","source":"https://github.com/tsparticles/presets/blob/main/presets/links/src/options.ts","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/eddc03a2c4e8/lib-tsparticles-links.webp","video":"https://s3.varg.ai/how-to/previews/2f0054dbce72/lib-tsparticles-links.mp4","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","note":"@tsparticles/preset-links 4.4.0, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the tsParticles Links preset (https://particles.js.org/demos/recipes/links, MIT, options in github.com/tsparticles/presets/blob/main/presets/links/src/options.ts) as a full-frame tech background behind titles, feature lists or a \"connected\" message. Load @tsparticles/engine and @tsparticles/preset-links (or its CDN bundle tsparticles.preset.links.bundle.min.js), call loadLinksPreset(tsParticles), then tsParticles.load({ id, options: { preset: \"links\", fullScreen: { enable: false } } }) into a full-frame div. tsParticles ticks on requestAnimationFrame and derives each step from the frame timestamp, so make it deterministic: seed Math.random before loading, swap requestAnimationFrame for a queue you flush once per video frame with the timestamp frame × 1000 / fps (keep fpsLimit at or above the video fps), and render frames in order from the moment it starts (it is a running simulation, so replay from that point after a backwards seek). Recolor dots and links to the brand accent, lower particles.number.value or links.distance if the mesh gets busy behind text, and slow move.speed for a calmer drift."},{"slug":"tsparticles.triangles","name":"triangles","title":"Triangles","summary":"A drifting point network on black whose links fill in as translucent white triangles, like a moving low-poly mesh","registry":"tsparticles","framework":"html","layer":"component","category":"generative","also":["particles"],"tags":["background","low-poly","triangles","network","tech","dark","mesh"],"aspect":"any","install":"pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>","docs":"https://particles.js.org/demos/recipes/triangles","source":"https://github.com/tsparticles/presets/blob/main/presets/triangles/src/options.ts","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/312b79751c41/lib-tsparticles-triangles.webp","video":"https://s3.varg.ai/how-to/previews/66017fac0bde/lib-tsparticles-triangles.mp4","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","note":"@tsparticles/preset-triangles 4.4.0, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the tsParticles Triangles preset (https://particles.js.org/demos/recipes/triangles, MIT, options in github.com/tsparticles/presets/blob/main/presets/triangles/src/options.ts) as a full-frame low-poly tech background behind titles or a product name. Load @tsparticles/engine and @tsparticles/preset-triangles (or its CDN bundle tsparticles.preset.triangles.bundle.min.js), call loadTrianglesPreset(tsParticles), then tsParticles.load({ id, options: { preset: \"triangles\", fullScreen: { enable: false } } }) into a full-frame div. tsParticles ticks on requestAnimationFrame and derives each step from the frame timestamp, so make it deterministic: seed Math.random before loading, swap requestAnimationFrame for a queue you flush once per video frame with the timestamp frame × 1000 / fps (keep fpsLimit at or above the video fps), and render frames in order from the moment it starts (it is a running simulation, so replay from that point after a backwards seek). Tint the links and triangles toward a brand color, lower the triangle opacity if text sits on top, and slow move.speed for a more architectural feel."},{"slug":"tsparticles.hyperspace","name":"hyperspace","title":"Hyperspace","summary":"White star streaks rushing out from the centre toward the edges, a jump-to-lightspeed tunnel on black","registry":"tsparticles","framework":"html","layer":"component","category":"particles","also":["backgrounds"],"tags":["background","hyperspace","warp","space","speed","tunnel","dark"],"aspect":"any","install":"pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>","docs":"https://particles.js.org/demos/recipes/hyperspace","source":"https://github.com/tsparticles/presets/blob/main/presets/hyperspace/src/options.ts","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/21e322c03833/lib-tsparticles-hyperspace.webp","video":"https://s3.varg.ai/how-to/previews/fa1b06e9e758/lib-tsparticles-hyperspace.mp4","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","note":"@tsparticles/preset-hyperspace 4.4.0, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the tsParticles Hyperspace preset (https://particles.js.org/demos/recipes/hyperspace, MIT, options in github.com/tsparticles/presets/blob/main/presets/hyperspace/src/options.ts) as a full-frame transition background for a speed, launch or \"next level\" beat, or behind a centered logo. Load @tsparticles/engine and @tsparticles/preset-hyperspace (or its CDN bundle tsparticles.preset.hyperspace.bundle.min.js), call loadHyperspacePreset(tsParticles), then tsParticles.load({ id, options: { preset: \"hyperspace\", fullScreen: { enable: false } } }) into a full-frame div. Pre-roll a second of ticks so the streaks already reach the edges on the first frame. tsParticles ticks on requestAnimationFrame and derives each step from the frame timestamp, so make it deterministic: seed Math.random before loading, swap requestAnimationFrame for a queue you flush once per video frame with the timestamp frame × 1000 / fps (keep fpsLimit at or above the video fps), and render frames in order from the moment it starts (it is a running simulation, so replay from that point after a backwards seek). Raise move.speed and the emitter rate for a faster jump, tint the streaks to the brand color, and move the emitter position to shift the vanishing point."},{"slug":"tsparticles.sea-anemone","name":"sea-anemone","title":"Sea Anemone","summary":"Rainbow-colored trails spiralling out of the centre and curling back, like a swaying sea anemone on black","registry":"tsparticles","framework":"html","layer":"component","category":"generative","also":["particles"],"tags":["background","generative","rainbow","trails","organic","dark","hypnotic"],"aspect":"any","install":"pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>","docs":"https://particles.js.org/demos/recipes/sea-anemone","source":"https://github.com/tsparticles/presets/blob/main/presets/seaAnemone/src/options.ts","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/c855ed4b4b9c/lib-tsparticles-sea-anemone.webp","video":"https://s3.varg.ai/how-to/previews/b9df6163c3db/lib-tsparticles-sea-anemone.mp4","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","note":"@tsparticles/preset-sea-anemone 4.4.0, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the tsParticles Sea Anemone preset (https://particles.js.org/demos/recipes/sea-anemone, MIT, options in github.com/tsparticles/presets/blob/main/presets/seaAnemone/src/options.ts) as a hypnotic full-frame background for a music, art or intro sequence, with type kept to the edges. Load @tsparticles/engine and @tsparticles/preset-sea-anemone (or its CDN bundle tsparticles.preset.seaAnemone.bundle.min.js), call loadSeaAnemonePreset(tsParticles), then tsParticles.load({ id, options: { preset: \"seaAnemone\", fullScreen: { enable: false } } }) into a full-frame div. Pre-roll a second or two so the tentacles have grown before the scene starts. tsParticles ticks on requestAnimationFrame and derives each step from the frame timestamp, so make it deterministic: seed Math.random before loading, swap requestAnimationFrame for a queue you flush once per video frame with the timestamp frame × 1000 / fps (keep fpsLimit at or above the video fps), and render frames in order from the moment it starts (it is a running simulation, so replay from that point after a backwards seek). Narrow the color animation to brand hues instead of the full rainbow, lengthen the trail for smoother curves, and lower particles.number.limit (300) for a sparser bloom."},{"slug":"tsparticles.matrix","name":"matrix","title":"Matrix","summary":"Columns of green glyphs raining down a black screen, each trail fading behind its bright leading character","registry":"tsparticles","framework":"html","layer":"component","category":"generative","tags":["background","matrix","code","hacker","green","glyphs","dark"],"aspect":"any","install":"pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>","docs":"https://particles.js.org/demos/recipes/matrix","source":"https://github.com/tsparticles/presets/blob/main/presets/matrix/src/options.ts","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/dd2e1205a581/lib-tsparticles-matrix.webp","video":"https://s3.varg.ai/how-to/previews/f7d088a73233/lib-tsparticles-matrix.mp4","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","note":"@tsparticles/preset-matrix 4.4.0, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the tsParticles Matrix preset (https://particles.js.org/demos/recipes/matrix, MIT, options in github.com/tsparticles/presets/blob/main/presets/matrix/src/options.ts) as a full-frame background for hacking, security, data or AI beats, behind white or green type. Load @tsparticles/engine and @tsparticles/preset-matrix (or its CDN bundle tsparticles.preset.matrix.bundle.min.js), call loadMatrixPreset(tsParticles), then tsParticles.load({ id, options: { preset: \"matrix\", fullScreen: { enable: false } } }) into a full-frame div. Pre-roll a couple of seconds of ticks so the rain already fills the screen. tsParticles ticks on requestAnimationFrame and derives each step from the frame timestamp, so make it deterministic: seed Math.random before loading, swap requestAnimationFrame for a queue you flush once per video frame with the timestamp frame × 1000 / fps (keep fpsLimit at or above the video fps), and render frames in order from the moment it starts (it is a running simulation, so replay from that point after a backwards seek). Swap the green for a brand color, change particles.number.value for density, and adjust move.speed for a calmer or more frantic rain."},{"slug":"tsparticles.ambient","name":"ambient","title":"Ambient","summary":"Out-of-focus cyan rings and dots floating slowly over a dark slate gradient, like bokeh","registry":"tsparticles","framework":"html","layer":"component","category":"backgrounds","also":["particles"],"tags":["background","bokeh","ambient","calm","cyan","dark","soft"],"aspect":"any","install":"pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>","docs":"https://particles.js.org/demos/recipes/ambient","source":"https://github.com/tsparticles/presets/blob/main/presets/ambient/src/options.ts","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/7a8e2bf56e35/lib-tsparticles-ambient.webp","video":"https://s3.varg.ai/how-to/previews/c56a87eff5da/lib-tsparticles-ambient.mp4","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","note":"@tsparticles/preset-ambient 4.4.0, default options, rendered in headless Chrome at 960x540"},"runs":"local","clock":"adapt","prompt":"Use the tsParticles Ambient preset (https://particles.js.org/demos/recipes/ambient, MIT, options in github.com/tsparticles/presets/blob/main/presets/ambient/src/options.ts) as a calm full-frame background for an explainer, a quote or a lower-third heavy talking segment. Load @tsparticles/engine and @tsparticles/preset-ambient (or its CDN bundle tsparticles.preset.ambient.bundle.min.js), call loadAmbientPreset(tsParticles), then tsParticles.load({ id, options: { preset: \"ambient\", fullScreen: { enable: false } } }) into a full-frame div. tsParticles ticks on requestAnimationFrame and derives each step from the frame timestamp, so make it deterministic: seed Math.random before loading, swap requestAnimationFrame for a queue you flush once per video frame with the timestamp frame × 1000 / fps (keep fpsLimit at or above the video fps), and render frames in order from the moment it starts (it is a running simulation, so replay from that point after a backwards seek). Recolor the three particle groups and the background gradient to the brand, lower the particle count for a sparser field, and keep the speed low so it never competes with the text."},{"slug":"tsparticles.fire","name":"fire","title":"Fire","summary":"Sparse orange embers drifting upward over a deep red radial vignette","registry":"tsparticles","framework":"html","layer":"component","category":"particles","also":["backgrounds"],"tags":["background","embers","fire","warm","dark","sparks","ambient"],"aspect":"any","install":"pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>","docs":"https://particles.js.org/demos/recipes/fire","source":"https://github.com/tsparticles/presets/blob/main/presets/fire/src/options.ts","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/0db3a564d18e/lib-tsparticles-fire.webp","video":"https://s3.varg.ai/how-to/previews/164c93a2b688/lib-tsparticles-fire.mp4","credit":"Rendered by varg from the library’s own code (tsParticles · rendered by varg)","note":"@tsparticles/preset-fire 4.4.0, default options, rendered in headless Chrome at 640x360"},"runs":"local","clock":"adapt","prompt":"Use the tsParticles Fire preset (https://particles.js.org/demos/recipes/fire, MIT, options in github.com/tsparticles/presets/blob/main/presets/fire/src/options.ts) as a full-frame dark background for dramatic, gaming or \"hot deal\" titles. Load @tsparticles/engine and @tsparticles/preset-fire (or its CDN bundle tsparticles.preset.fire.bundle.min.js), call loadFirePreset(tsParticles), then tsParticles.load({ id, options: { preset: \"fire\", fullScreen: { enable: false } } }) into a full-frame div. tsParticles ticks on requestAnimationFrame and derives each step from the frame timestamp, so make it deterministic: seed Math.random before loading, swap requestAnimationFrame for a queue you flush once per video frame with the timestamp frame × 1000 / fps (keep fpsLimit at or above the video fps), and render frames in order from the moment it starts (it is a running simulation, so replay from that point after a backwards seek). Raise particles.number.value for more embers, enlarge size for closer sparks, and swap the radial-gradient background for a brand-tinted one; the click-to-add interaction is irrelevant in a render."},{"slug":"codrops.webgl-blobs","name":"webgl-blobs","title":"Creative WebGL Blobs","summary":"Noise-deformed Three.js spheres banded in iridescent orange and blue, slowly warping as they float","registry":"codrops","framework":"html","layer":"component","category":"shaders","also":["three-d"],"tags":["background","three.js","webgl","shader","blob","3d","iridescent"],"aspect":"any","install":"git clone https://github.com/codrops/WebGLBlobs","docs":"https://tympanus.net/Tutorials/WebGLBlobs/","source":"https://github.com/codrops/WebGLBlobs","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/63966d3f75ad/lib-codrops-webgl-blobs.webp","video":"https://s3.varg.ai/how-to/previews/5f59a11b1a9b/lib-codrops-webgl-blobs.mp4","credit":"From the library’s repo (Codrops — Mario Carrillo)","note":"Codrops demo from github.com/codrops/WebGLBlobs (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; canvas only, page text hidden. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Use Codrops' Creative WebGL Blobs by Mario Carrillo (demo https://tympanus.net/Tutorials/WebGLBlobs/, article https://tympanus.net/codrops/?p=52932, code https://github.com/codrops/WebGLBlobs, MIT) as a 3D backdrop: one large blob bleeding off a corner and two smaller ones floating near the title. Copy scripts/gl/Blob.js and the two GLSL shaders; each blob is an icosahedron displaced by noise in the vertex shader and coloured by a cosine palette from uHue. The demo feeds uTime from a THREE.Clock inside requestAnimationFrame: remove that loop and set uTime = frame / fps on every blob, rendering once per frame (HyperFrames: on the hf-seek event; Remotion: from useCurrentFrame() in a layout effect). Tune size, uSpeed, uHue, uNoiseDensity and uNoiseStrength per blob, and render the canvas with a transparent background so it composites over the frame."},{"slug":"codrops.slideshow-animations","name":"slideshow-animations","title":"Slideshow Animations","summary":"Full-screen image slideshow with 32 transition styles, from parallax pushes to a photo eroding into sand","registry":"codrops","framework":"html","layer":"primitive","category":"transitions","also":["galleries"],"tags":["transition","slideshow","gsap","three.js","webgl","image-transition","parallax"],"aspect":"any","install":"git clone https://github.com/codrops/SlideshowAnimations","docs":"https://tympanus.net/Development/SlideshowAnimations/","source":"https://github.com/codrops/SlideshowAnimations","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/181e52133207/lib-codrops-slideshow-animations.webp","video":"https://s3.varg.ai/how-to/previews/00aafc2ba936/lib-codrops-slideshow-animations.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/SlideshowAnimations (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; variation 21 (sand erosion), next slide triggered twice. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Cut between my full-bleed images with one of Codrops' Slideshow Animations (demo https://tympanus.net/Development/SlideshowAnimations/, article https://tympanus.net/codrops/?p=73708, code https://github.com/codrops/SlideshowAnimations, MIT). Pick a variation from index.html to index32.html: 1–16 are GSAP pushes, zooms, spins and coloured wipes, 17–22 are three.js effects (paper curl, print developing, two-tone, pixels rebuilding, sand erosion, liquid), 23–32 are pans, columns, doors and a cube. Copy that variation's js/demoN folder. Each slideshow.next() builds a GSAP timeline: create it paused at the cut point and seek it with the composition (HyperFrames: register on window.__timelines; Remotion: tl.seek(frame / fps)), and for the WebGL variations also set the shader's time or progress uniform from the same clock. Replace the images with mine at the frame's resolution and remove the wheel and keyboard handlers."},{"slug":"codrops.shape-slideshow","name":"shape-slideshow","title":"Shape Slideshow with Clip-path","summary":"Full-screen photo slides revealed through a growing circle, with a two-line serif caption sliding in","registry":"codrops","framework":"html","layer":"primitive","category":"transitions","also":["galleries"],"tags":["transition","clip-path","slideshow","shape","gsap","editorial"],"aspect":"16:9","install":"git clone https://github.com/codrops/ShapesSlideshow","docs":"https://tympanus.net/Development/ShapesSlideshow/","source":"https://github.com/codrops/ShapesSlideshow","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/fd8ec88edc67/lib-codrops-shape-slideshow.webp","video":"https://s3.varg.ai/how-to/previews/10d9ad5b0a35/lib-codrops-shape-slideshow.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/ShapesSlideshow (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; demo 1, next slide triggered twice. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Use Codrops' Shape Slideshow with Clip-path (demo https://tympanus.net/Development/ShapesSlideshow/, article https://tympanus.net/codrops/?p=53694, code https://github.com/codrops/ShapesSlideshow, MIT) for editorial transitions between full-frame photos with a two-line serif caption. Four demo variants change the clip shape (circle, rounded shapes, polygons); copy the one you like from src. Each navigation runs a GSAP timeline that animates the next slide's clip-path and the caption lines: build it paused at the cut and seek it from the video clock (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)). Drop the prev/next buttons and counter, swap in my images and copy, and keep the caption inside the title-safe area."},{"slug":"codrops.pixel-transition","name":"pixel-transition","title":"Pixel Transition Effects","summary":"A grid of square cells blacks out a type-and-image layout block by block, then opens on a full-screen photo","registry":"codrops","framework":"html","layer":"primitive","category":"transitions","tags":["transition","pixel","grid","page-transition","gsap","stagger"],"aspect":"any","install":"git clone https://github.com/codrops/PixelTransition","docs":"https://tympanus.net/Development/PixelTransition/","source":"https://github.com/codrops/PixelTransition","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/9de203d66921/lib-codrops-pixel-transition.webp","video":"https://s3.varg.ai/how-to/previews/f0ce7b2e735d/lib-codrops-pixel-transition.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/PixelTransition (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; demo 1, first image clicked to run the transition. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Use Codrops' Pixel Transition Effects (demo https://tympanus.net/Development/PixelTransition/, article https://tympanus.net/codrops/?p=71437, code https://github.com/codrops/PixelTransition, MIT) as a scene transition: an overlay of square cells (8 rows × 14 columns in demo 1) scales in with a stagger to cover the frame, the scene swaps underneath, and the cells scale away. Six variations change the stagger origin and direction (js/demo1–6). Copy overlay.js; its show() and hide() return GSAP tweens, so build both into one paused timeline centred on the cut and seek it from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)). Set rows and columns for the aspect ratio (fewer columns in 9:16) and the cell colour to the brand colour."},{"slug":"codrops.layers-animation","name":"layers-animation","title":"Image Layer Animations with Clip-Path","summary":"Stacked image layers sweep across the screen one after another in clip-path wipes, ending on a new scene","registry":"codrops","framework":"html","layer":"primitive","category":"transitions","tags":["transition","clip-path","layers","page-transition","gsap","wipe"],"aspect":"any","install":"git clone https://github.com/codrops/LayersAnimation","docs":"https://tympanus.net/Development/LayersAnimation/","source":"https://github.com/codrops/LayersAnimation","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/88430dd66661/lib-codrops-layers-animation.webp","video":"https://s3.varg.ai/how-to/previews/e171c39de7a9/lib-codrops-layers-animation.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/LayersAnimation (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; variation 1, page clicked twice to run the layer wipes. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Use Codrops' Image Layer Animations with Clip-Path (demo https://tympanus.net/Development/LayersAnimation/, article https://tympanus.net/codrops/?p=74227, code https://github.com/codrops/LayersAnimation, MIT) as a fast, punchy cut between two scenes: a stack of image layers wipes across with clip-path, each layer 0.2 s after the previous (1.4 s, power3.inOut), and the last one becomes the next scene. Six variations change the wipe direction and shape (js/demo1–6). The demo starts the GSAP timeline on a document click; build it paused instead and seek it from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)). Fill the layers with frames from my footage or brand colours."},{"slug":"codrops.rapid-layers-animation","name":"rapid-layers-animation","title":"Rapid Image Layers Animation","summary":"A burst of full-screen photos slamming in one on top of another before landing on the final image","registry":"codrops","framework":"html","layer":"primitive","category":"intros","also":["transitions"],"tags":["transition","layers","splash","intro","gsap","fast-cut"],"aspect":"any","install":"git clone https://github.com/codrops/RapidLayersAnimation","docs":"https://tympanus.net/Development/RapidLayersAnimation/","source":"https://github.com/codrops/RapidLayersAnimation","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/f096f1ef9277/lib-codrops-rapid-layers-animation.webp","video":"https://s3.varg.ai/how-to/previews/1b9880c6836c/lib-codrops-rapid-layers-animation.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/RapidLayersAnimation (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; middle menu item clicked to run the layers. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Use Codrops' Rapid Image Layers Animation (demo https://tympanus.net/Development/RapidLayersAnimation/, article https://tympanus.net/codrops/?p=48939, code https://github.com/codrops/RapidLayersAnimation, MIT) as a splash intro or a hard transition: a series of full-frame images slides in rapid succession, each layer covering the last, ending on the hero image. The logic is in src/js/revealer.js, a GSAP timeline that the demo creates paused and plays on a menu click; keep it paused and seek it with the video (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)). Load 5–8 of my stills into the .layers__item elements, set duration and the per-layer offset to the beat of the music."},{"slug":"codrops.kinetic-type-page-transition","name":"kinetic-type-page-transition","title":"Kinetic Typography Page Transition","summary":"Columns of giant serif words sweep across an orange screen to bridge a grid of photos and an article","registry":"codrops","framework":"html","layer":"primitive","category":"transitions","tags":["transition","kinetic-type","typography","page-transition","gsap","marquee"],"aspect":"any","install":"git clone https://github.com/codrops/KineticTypePageTransition","docs":"https://tympanus.net/Development/KineticTypePageTransition/","source":"https://github.com/codrops/KineticTypePageTransition","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/2c6afa5416f2/lib-codrops-kinetic-type-page-transition.webp","video":"https://s3.varg.ai/how-to/previews/139d19a1964a/lib-codrops-kinetic-type-page-transition.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/KineticTypePageTransition (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; first item clicked to run the transition. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Use Codrops' Kinetic Typography Page Transition (demo https://tympanus.net/Development/KineticTypePageTransition/, article https://tympanus.net/codrops/?p=56722, code https://github.com/codrops/KineticTypePageTransition, MIT) between two scenes: rows of a repeated word fill the screen and slide in alternating directions while the scene changes behind them. The effect is src/js/typeTransition.js, which returns paused GSAP timelines for in and out; chain them in one paused timeline around the cut and seek it from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)) instead of the item click. Set the word to my brand word or title, the background and text colours, and the row count so the rows fill a 9:16 frame when needed."},{"slug":"codrops.type-shuffle-animation","name":"type-shuffle-animation","title":"Type Shuffle Animation","summary":"Monospace profile text and an ASCII portrait scrambling through random characters before settling","registry":"codrops","framework":"html","layer":"primitive","category":"text-effects","tags":["text","scramble","ascii","monospace","terminal","glitch"],"aspect":"any","install":"git clone https://github.com/codrops/TypeShuffleAnimation","docs":"https://tympanus.net/Development/TypeShuffleAnimation/","source":"https://github.com/codrops/TypeShuffleAnimation","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/5519b43e310b/lib-codrops-type-shuffle-animation.webp","video":"https://s3.varg.ai/how-to/previews/0f710adb032a/lib-codrops-type-shuffle-animation.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/TypeShuffleAnimation (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; effect 1 on load, then effect 3. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Use Codrops' Type Shuffle Animation (demo https://tympanus.net/Development/TypeShuffleAnimation/, article https://tympanus.net/codrops/?p=70337, code https://github.com/codrops/TypeShuffleAnimation, MIT) for a hacker-terminal reveal: monospace lines whose characters cycle through random glyphs and colours before resolving, with six effects (fx1–fx6 in src/js/typeShuffle.js). It splits lines and characters with SplitType and shuffles them on timers with Math.random, so it is not seek-safe as shipped: replace the random source with a seeded generator and compute each character's state from frame / fps (how many shuffle cycles have passed for that cell), or rebuild the effect as a paused GSAP timeline. Put it in a dark full frame or a terminal window, with my own copy in the lines."},{"slug":"codrops.text-block-transitions","name":"text-block-transitions","title":"Text Block Transitions","summary":"A paragraph of large serif text on white dissolving word by word into a new paragraph","registry":"codrops","framework":"html","layer":"primitive","category":"text-effects","tags":["text","paragraph","words","stagger","gsap","splitting","editorial"],"aspect":"any","install":"git clone https://github.com/codrops/TextBlockTransitions","docs":"https://tympanus.net/Development/TextBlockTransitions/","source":"https://github.com/codrops/TextBlockTransitions","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/2685a1f95642/lib-codrops-text-block-transitions.webp","video":"https://s3.varg.ai/how-to/previews/4c974843b32d/lib-codrops-text-block-transitions.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/TextBlockTransitions (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; variation 1, transition triggered twice. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Swap one block of text for another with Codrops' Text Block Transitions (demo https://tympanus.net/Development/TextBlockTransitions/, article https://tympanus.net/codrops/?p=72862, code https://github.com/codrops/TextBlockTransitions, MIT): twelve variations (js/demo1–12) split the paragraph into words or characters with Splitting.js and animate them out and the next text in with GSAP staggers (blur, slide, scale, colour flashes). Use it for a quote, a manifesto or a two-beat statement on a plain background. Each switchTexts() call builds a GSAP timeline; create it paused at the moment the text should change and seek it from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)). Set the font size so the block fills about two thirds of the frame width."},{"slug":"codrops.repetitive-typography","name":"repetitive-typography","title":"Repetitive Typography","summary":"One title repeated in rows that slide and scale in until the whole screen is lined with the same words","registry":"codrops","framework":"html","layer":"primitive","category":"kinetic-type","also":["text-effects"],"tags":["text","repetition","kinetic-type","rows","intro","gsap"],"aspect":"any","install":"git clone https://github.com/codrops/RepetitiveTypography","docs":"https://tympanus.net/Development/RepetitiveTypography/","source":"https://github.com/codrops/RepetitiveTypography","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/ecf3bf3827be/lib-codrops-repetitive-typography.webp","video":"https://s3.varg.ai/how-to/previews/db39d299c121/lib-codrops-repetitive-typography.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/RepetitiveTypography (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; intro timeline from page load. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Open with Codrops' Repetitive Typography (demo https://tympanus.net/Development/RepetitiveTypography/, article https://tympanus.net/codrops/?p=56972, code https://github.com/codrops/RepetitiveTypography, MIT): a single title grows, its letters split, copies fill the gaps and spread into rows that cover the whole frame, after which photos appear. The sequence is one GSAP timeline (introTimeline in src/js/index.js) that plays on load; create it paused and seek it from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)), and drop the hover timelines. Replace \"Summer 22\" with my short title (one or two words work best), keep the high-contrast palette, and stop before the photo grid if I only need the type."},{"slug":"codrops.circular-text-effect","name":"circular-text-effect","title":"Circular Text Effect","summary":"Concentric rings of serif words that scale in and turn around a small round button","registry":"codrops","framework":"html","layer":"primitive","category":"kinetic-type","tags":["text","circular","svg","text-path","rotation","intro"],"aspect":"any","install":"git clone https://github.com/codrops/CircularTextEffect","docs":"https://tympanus.net/Development/CircularTextEffect/","source":"https://github.com/codrops/CircularTextEffect","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/2e87e5076150/lib-codrops-circular-text-effect.webp","video":"https://s3.varg.ai/how-to/previews/11ca78ba0b24/lib-codrops-circular-text-effect.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/CircularTextEffect (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; demo 1 intro from page load, then the hover turn. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Build an intro around Codrops' Circular Text Effect (demo https://tympanus.net/Development/CircularTextEffect/, article https://tympanus.net/codrops/?p=53487, code https://github.com/codrops/CircularTextEffect, MIT): several SVG text rings on circular paths scale in from 0.3 with an expo ease and then rotate in staggered steps around a centre mark. Put my logo or a short word where the Enter button is and set the ring texts to words from the brief. The start and hover animations are GSAP tweens in src/js/demo1/intro.js; collect them in one paused timeline (scale-in, then rotate: \"+=180\" steps on the beat) and seek it from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)). Works square or vertical; let the outer rings bleed off the frame."},{"slug":"codrops.typography-motion","name":"typography-motion","title":"Typography Motion Effect","summary":"Big serif headline letters that drop away in a stagger while the next text rises into place","registry":"codrops","framework":"html","layer":"primitive","category":"text-effects","tags":["text","letter-stagger","splitting","gsap","serif","editorial"],"aspect":"any","install":"git clone https://github.com/codrops/TypographyMotion","docs":"https://tympanus.net/Tutorials/TypographyMotion/","source":"https://github.com/codrops/TypographyMotion","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/a8de4c7b25f7/lib-codrops-typography-motion.webp","video":"https://s3.varg.ai/how-to/previews/235b1a4ff8f2/lib-codrops-typography-motion.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/TypographyMotion (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; About link clicked to run the letter stagger. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Use Codrops' Typography Motion Effect (demo https://tympanus.net/Tutorials/TypographyMotion/, article https://tympanus.net/codrops/?p=50136, code https://github.com/codrops/TypographyMotion, MIT, after a design by Thibaud Allie) to switch between two text screens: every character of the current paragraph moves out in a fast stagger as the next paragraph's characters come in. The demo builds one paused GSAP timeline in src/js/index.js and plays it on the About link; keep it paused and seek it from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)). Set both texts to my lines, keep the light cream background and the large serif, and place the block left of centre."},{"slug":"codrops.scroll-blur-typography","name":"scroll-blur-typography","title":"On-Scroll Blur Reveal","summary":"Paragraphs on black sharpening out of a heavy blur word by word as they move up the screen","registry":"codrops","framework":"html","layer":"primitive","category":"text-effects","tags":["text","blur","reveal","scroll","gsap","scrolltrigger","split-type"],"aspect":"any","install":"git clone https://github.com/codrops/ScrollBlurTypography","docs":"https://tympanus.net/Development/ScrollBlurTypography/","source":"https://github.com/codrops/ScrollBlurTypography","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/815273b87625/lib-codrops-scroll-blur-typography.webp","video":"https://s3.varg.ai/how-to/previews/772a10940ae0/lib-codrops-scroll-blur-typography.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/ScrollBlurTypography (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; page scrolled by script at a steady pace. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Reveal a block of narration or a quote with Codrops' On-Scroll Blur Reveal (demo https://tympanus.net/Development/ScrollBlurTypography/, article https://tympanus.net/codrops/?p=76992, code https://github.com/codrops/ScrollBlurTypography, MIT): words or characters (split with SplitType) go from blurred, faint and offset to sharp as the text moves into view, with several styles in js/index.js. In the demo GSAP ScrollTrigger scrubs each tween from the scroll position. For a video, drop ScrollTrigger and Lenis, build the same tweens in one paused timeline where time stands in for scroll, and seek it from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)); move the text block up with the same clock if you want the scroll feel. Use a dark background and a large type size."},{"slug":"codrops.on-scroll-typography-animations","name":"on-scroll-typography-animations","title":"On-Scroll Typography Animations","summary":"Giant two-word titles on electric blue whose letters fly, flip and scale into place as they enter","registry":"codrops","framework":"html","layer":"primitive","category":"kinetic-type","also":["text-effects"],"tags":["text","kinetic-type","letters","scroll","gsap","scrolltrigger","splitting"],"aspect":"any","install":"git clone https://github.com/codrops/OnScrollTypographyAnimations","docs":"https://tympanus.net/Development/OnScrollTypographyAnimations/","source":"https://github.com/codrops/OnScrollTypographyAnimations","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/5523ff54a881/lib-codrops-on-scroll-typography-animations.webp","video":"https://s3.varg.ai/how-to/previews/664673f21520/lib-codrops-on-scroll-typography-animations.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/OnScrollTypographyAnimations (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; page scrolled by script at a steady pace. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Use Codrops' On-Scroll Typography Animations (demo https://tympanus.net/Development/OnScrollTypographyAnimations/, article https://tympanus.net/codrops/?p=69734, code https://github.com/codrops/OnScrollTypographyAnimations, MIT) for big kinetic title cards: about fifteen styles, each animating the characters of a huge two-word title (split with Splitting.js) with 3D rotation, scale, skew or scatter as it enters. Pick one style from src/js/index.js per title. The demo scrubs them with ScrollTrigger; for a video build the chosen tween in a paused timeline over the title's on-screen time and seek it from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)). Keep the words short so they fill the width, one title per beat."},{"slug":"codrops.image-stack-intro","name":"image-stack-intro","title":"Image Stack Intro Animation","summary":"A pile of photos shuffles behind a big serif title, then one settles into a framed portrait with its name","registry":"codrops","framework":"html","layer":"primitive","category":"intros","also":["galleries"],"tags":["transition","intro","image-stack","grid","gsap","gallery"],"aspect":"16:9","install":"git clone https://github.com/codrops/ImageStackGrid","docs":"https://tympanus.net/Development/ImageStackGrid/","source":"https://github.com/codrops/ImageStackGrid","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/25197781b9ab/lib-codrops-image-stack-intro.webp","video":"https://s3.varg.ai/how-to/previews/8076b8d8b942/lib-codrops-image-stack-intro.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/ImageStackGrid (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; demo 1 intro from page load. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Open a photo-heavy video with Codrops' Image Stack Intro Animation (demo https://tympanus.net/Development/ImageStackGrid/, article https://tympanus.net/codrops/?p=52018, code https://github.com/codrops/ImageStackGrid, MIT): the images start piled in the centre, the title animates in, then each image travels to its own spot in a loose grid. The intro is one GSAP timeline (intro() in src/js/demo1/galleryController.js) that runs on load; create it paused and seek it from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)), and remove Locomotive Scroll. Use 6–10 of my photos and my title, on a dark background."},{"slug":"codrops.grid-flow-effect","name":"grid-flow-effect","title":"Grid Flow Effect","summary":"Small dark thumbnails popping in one by one across a black screen until they form a loose grid","registry":"codrops","framework":"html","layer":"primitive","category":"transitions","also":["galleries"],"tags":["transition","grid","flip","thumbnails","loader","gsap"],"aspect":"any","install":"git clone https://github.com/codrops/GridFlowEffect","docs":"https://tympanus.net/Development/GridFlowEffect/","source":"https://github.com/codrops/GridFlowEffect","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/9771429c6cb6/lib-codrops-grid-flow-effect.webp","video":"https://s3.varg.ai/how-to/previews/2b74a41321b6/lib-codrops-grid-flow-effect.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/GridFlowEffect (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; loader and grid flow from page load. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Use Codrops' Grid Flow Effect (demo https://tympanus.net/Development/GridFlowEffect/, article https://tympanus.net/codrops/?p=73018, code https://github.com/codrops/GridFlowEffect, MIT) to bring a set of images on screen: thumbnails flow in a diagonal cascade and settle into a grid, and the next/prev navigation reflows them with GSAP Flip. The loader and the navigate() transitions in js/index.js are GSAP tweens; record the Flip states up front, build the flow as a paused timeline and seek it from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)) instead of the arrow clicks. Feed it 12–20 of my stills on black."},{"slug":"codrops.intro-trail-effect","name":"intro-trail-effect","title":"Intro Image Trail Animation","summary":"A loading counter, copies of a portrait trailing up the screen, a big two-line name, then a content page","registry":"codrops","framework":"html","layer":"primitive","category":"intros","also":["galleries"],"tags":["transition","intro","image-trail","title","gsap","portfolio"],"aspect":"any","install":"git clone https://github.com/codrops/IntroTrailEffect","docs":"https://tympanus.net/Development/IntroTrailEffect/","source":"https://github.com/codrops/IntroTrailEffect","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/1dd889e6b0fc/lib-codrops-intro-trail-effect.webp","video":"https://s3.varg.ai/how-to/previews/a64c6f16a23e/lib-codrops-intro-trail-effect.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/IntroTrailEffect (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; loading trail from page load, then Enter clicked. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Introduce a person or a brand with Codrops' Intro Image Trail Animation (demo https://tympanus.net/Development/IntroTrailEffect/, article https://tympanus.net/codrops/?p=63293, code https://github.com/codrops/IntroTrailEffect, MIT): a stack of copies of one image moves as a trail while the two-line name above it splits up and down and the layout changes into a content page. The enter sequence is a GSAP timeline in src/js/index.js (showContent) started by the Enter button; build it paused and seek it from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)). Use my portrait and name, and the dark warm background."},{"slug":"codrops.infinite-menu-background","name":"infinite-menu-background","title":"Infinite Menu Background Animation","summary":"A curved shape wipes up over a giant serif name, then rows of words and photos loop past","registry":"codrops","framework":"html","layer":"primitive","category":"transitions","tags":["transition","svg-morph","marquee","menu","wipe","gsap","css-animation"],"aspect":"16:9","install":"git clone https://github.com/codrops/Theodore","docs":"https://tympanus.net/Development/Theodore/","source":"https://github.com/codrops/Theodore","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/aca2dee2655f/lib-codrops-infinite-menu-background.webp","video":"https://s3.varg.ai/how-to/previews/5b50edee32f6/lib-codrops-infinite-menu-background.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/Theodore (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; menu button clicked to run the wipe and the marquee. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Use Codrops' Infinite Menu Background Animation (demo https://tympanus.net/Development/Theodore/, article https://tympanus.net/codrops/?p=57286, code https://github.com/codrops/Theodore, MIT) as a fashion-style transition: an SVG overlay path morphs from a flat line into a curve and then a full cover (GSAP attr tweens on the path's d), the title slides away, and a menu appears over rows of text and images running in an endless 10 s CSS marquee. Build openMenu() from src/js/index.js as a paused GSAP timeline and seek it from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)); seek the marquee as a CSS animation (HyperFrames' css adapter) or set its translate from frame / fps in Remotion. Replace the words and photos with mine and keep the muted green and black palette or swap it for the brand's."},{"slug":"codrops.zoom-slideshow","name":"zoom-slideshow","title":"Zoom Slideshow","summary":"A framed image in the centre zooms up to fill the screen while the next one appears small inside it","registry":"codrops","framework":"html","layer":"primitive","category":"transitions","also":["galleries"],"tags":["transition","zoom","slideshow","gsap","observer","dreamy"],"aspect":"any","install":"git clone https://github.com/codrops/ZoomSlideshow","docs":"https://tympanus.net/Development/ZoomSlideshow/","source":"https://github.com/codrops/ZoomSlideshow","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/d3be1af9917d/lib-codrops-zoom-slideshow.webp","video":"https://s3.varg.ai/how-to/previews/f331b6d86b53/lib-codrops-zoom-slideshow.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/ZoomSlideshow (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; demo 1, next triggered twice. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Use Codrops' Zoom Slideshow (demo https://tympanus.net/Development/ZoomSlideshow/, article https://tympanus.net/codrops/?p=72565, code https://github.com/codrops/ZoomSlideshow, MIT, after Patrick Mason's site for Lauren Bamford) for an endless zoom-through between images: the current slide scales up past the frame while the next grows from a small centred card. navigate() in js/demo1/index.js builds a GSAP timeline per step; chain the steps you need in one paused timeline and seek it from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)), dropping the buttons and the GSAP Observer. Use 4–6 of my images with a shared colour mood; demo 2 is a variation of the move."},{"slug":"codrops.glitchy-grid-slideshow","name":"glitchy-grid-slideshow","title":"Glitchy Grid Layout Slideshow","summary":"A scattered photo grid around a serif phrase that breaks apart and re-forms as the slides change","registry":"codrops","framework":"html","layer":"primitive","category":"transitions","also":["galleries"],"tags":["transition","glitch","grid","slideshow","gsap","editorial"],"aspect":"16:9","install":"git clone https://github.com/codrops/GlitchyGrid","docs":"https://tympanus.net/Development/GlitchyGrid/","source":"https://github.com/codrops/GlitchyGrid","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/ad130b9bf9da/lib-codrops-glitchy-grid-slideshow.webp","video":"https://s3.varg.ai/how-to/previews/49a66a36345d/lib-codrops-glitchy-grid-slideshow.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/GlitchyGrid (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; slides 2 and 3 triggered from the nav. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Use Codrops' Glitchy Grid Layout Slideshow (demo https://tympanus.net/Development/GlitchyGrid/, article https://tympanus.net/codrops/?p=50258, code https://github.com/codrops/GlitchyGrid, MIT) for an editorial sequence: each slide is a CSS grid of photos around a short serif phrase, and changing slides runs a glitchy GSAP timeline that jitters and swaps the images. navigate() in src/js/slideshow.js builds that timeline; create it paused per slide change, chain the changes and seek them from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)), replacing the nav clicks. Put my photos and lines in the slides and keep the light paper background."},{"slug":"codrops.scroll-3d-grid","name":"scroll-3d-grid","title":"On-Scroll 3D Grid Animations","summary":"Image grids tilted in perspective that rotate, spread and fly toward the camera between big titles","registry":"codrops","framework":"html","layer":"component","category":"galleries","also":["three-d"],"tags":["element","3d","perspective","grid","scroll","gsap","scrolltrigger"],"aspect":"any","install":"git clone https://github.com/codrops/Scroll3DGrid","docs":"https://tympanus.net/Development/Scroll3DGrid/","source":"https://github.com/codrops/Scroll3DGrid","license":"MIT (per demo repo)","preview":{"poster":"https://s3.varg.ai/how-to/previews/a2d4df39f6c0/lib-codrops-scroll-3d-grid.webp","video":"https://s3.varg.ai/how-to/previews/cf9bd20c1ab9/lib-codrops-scroll-3d-grid.mp4","credit":"From the library’s repo (Codrops — Manoela Ilic)","note":"Codrops demo from github.com/codrops/Scroll3DGrid (MIT) served locally and recorded in headless Chrome, demo frame UI hidden; page scrolled by script at a steady pace. tympanus.net answers headless browsers with a bot check, so the repo copy was used."},"runs":"local","clock":"adapt","prompt":"Use Codrops' On-Scroll 3D Grid Animations (demo https://tympanus.net/Development/Scroll3DGrid/, article https://tympanus.net/codrops/?p=73075, code https://github.com/codrops/Scroll3DGrid, MIT) as a camera move through a wall of images: each section is a grid of photos in CSS 3D perspective that rotates, spreads apart or rushes toward the viewer, with a large serif line in between. In the demo GSAP ScrollTrigger scrubs each grid's tween with the page scroll (smoothed by Lenis). For a video, pick a section from js/index.js, build its tween in a paused timeline over the shot length and seek it from the frame (HyperFrames: window.__timelines; Remotion: tl.seek(frame / fps)). Fill the grid with 20–30 of my stills and set the line of copy."},{"slug":"fancy.vertical-cut-reveal","name":"vertical-cut-reveal","title":"Vertical Cut Reveal","summary":"Letters slide up out of invisible slots line by line, emoji included, like type cut out of the frame","registry":"fancy","framework":"react","layer":"primitive","category":"text-effects","tags":["text","text reveal","stagger","headline","editorial","motion"],"aspect":"any","install":"npx shadcn add @fancy/vertical-cut-reveal","docs":"https://www.fancycomponents.dev/docs/components/text/vertical-cut-reveal","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/text/vertical-cut-reveal.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/6a44e64cf8cf/lib-fancy-vertical-cut-reveal.webp","video":"https://s3.varg.ai/how-to/previews/9783f39c5aa3/lib-fancy-vertical-cut-reveal.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box (replayed with the demo restart key)"},"runs":"local","clock":"adapt","prompt":"Use Vertical Cut Reveal from Fancy Components (https://www.fancycomponents.dev/docs/components/text/vertical-cut-reveal, MIT). Install with `npx shadcn add @fancy/vertical-cut-reveal` after adding the @fancy registry to components.json. Use it for the opening headline or a quote card, set large and left-aligned. Set splitBy ('characters', 'words' or 'lines'), staggerDuration, staggerFrom ('first', 'last', 'center' or 'random') and a spring transition. Motion animates each piece from y: 100% to 0 on mount. For a frame-exact render, compute every piece's translateY from (frame - startFrame - index * stagger * fps) with Remotion's spring/interpolate, or a paused GSAP timeline seeked by HyperFrames, and set autoStart={false}."},{"slug":"fancy.text-rotate","name":"text-rotate","title":"Text Rotate","summary":"A word in a coloured box swaps for the next one, its letters springing up from below in a stagger","registry":"fancy","framework":"react","layer":"primitive","category":"text-effects","tags":["text","rotating words","word swap","headline","highlight","motion"],"aspect":"any","install":"npx shadcn add @fancy/text-rotate","docs":"https://www.fancycomponents.dev/docs/components/text/text-rotate","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/text/text-rotate.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/39f3b4922989/lib-fancy-text-rotate.webp","video":"https://s3.varg.ai/how-to/previews/e1c3eecd3a60/lib-fancy-text-rotate.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box"},"runs":"local","clock":"adapt","prompt":"Use Text Rotate from Fancy Components (https://www.fancycomponents.dev/docs/components/text/text-rotate, MIT). Install with `npx shadcn add @fancy/text-rotate` once the @fancy registry is in components.json. Put it in a headline like 'Make it [fancy / right / yours]', with the changing word in a brand-coloured pill. Set texts, rotationInterval, staggerDuration, staggerFrom, splitBy and the spring transition. It switches words on setInterval and animates with AnimatePresence. Compute the active index from floor(frame / fps * 1000 / rotationInterval) and each letter's offset from the time since the last switch, or render each word in its own Remotion Sequence, with auto={false}."},{"slug":"fancy.typewriter","name":"typewriter","title":"Typewriter","summary":"A phrase typed and deleted letter by letter with a blinking cursor, cycling through endings","registry":"fancy","framework":"react","layer":"primitive","category":"text-effects","tags":["text","typewriter","typing","cursor","caption","loop"],"aspect":"any","install":"npx shadcn add @fancy/typewriter","docs":"https://www.fancycomponents.dev/docs/components/text/typewriter","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/text/typewriter.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/5261d220cca4/lib-fancy-typewriter.webp","video":"https://s3.varg.ai/how-to/previews/02bcb4fdb2cd/lib-fancy-typewriter.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box"},"runs":"local","clock":"adapt","prompt":"Use Typewriter from Fancy Components (https://www.fancycomponents.dev/docs/components/text/typewriter, MIT). Install with `npx shadcn add @fancy/typewriter` with the @fancy registry set in components.json. Use it for a prompt-box effect, a search bar or a sentence whose last word keeps changing ('We're born to [create / dance]'). Set text (a string or an array), speed, deleteSpeed, waitTime, loop and cursorChar. It types on chained setTimeout calls and blinks the cursor with a Motion loop. Rebuild it as a pure function of t = frame / fps: walk the type/hold/delete schedule to get the visible substring, and blink the cursor with floor(t * 2) % 2."},{"slug":"fancy.scramble-in","name":"scramble-in","title":"Scramble In","summary":"Lines of text typing in from the left with a few random glyphs flickering at the leading edge","registry":"fancy","framework":"react","layer":"primitive","category":"text-effects","tags":["text","scramble","typing","list","tracklist","glitch","text reveal"],"aspect":"any","install":"npx shadcn add @fancy/scramble-in","docs":"https://www.fancycomponents.dev/docs/components/text/scramble-in","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/text/scramble-in.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/bcaf25c5f15a/lib-fancy-scramble-in.webp","video":"https://s3.varg.ai/how-to/previews/b7ab2e8c2986/lib-fancy-scramble-in.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box; stepped frame by frame on a fake page clock and replayed with the demo restart button"},"runs":"local","clock":"adapt","prompt":"Use Scramble In from Fancy Components (https://www.fancycomponents.dev/docs/components/text/scramble-in, MIT). Install with `npx shadcn add @fancy/scramble-in` after adding the @fancy registry to components.json. It suits tracklists, credits, specs or a list of features revealed one row after another. Set text, scrambleSpeed (ms per step), scrambledLetterCount and characters. It runs on setInterval with Math.random. Compute the revealed length from (frame - startFrame) / fps * 1000 / scrambleSpeed, pick the trailing glyphs with a random function seeded by frame and position, and stagger rows by start frame. Set autoStart={false}."},{"slug":"fancy.breathing-text","name":"breathing-text","title":"Breathing Text","summary":"Variable-font letters swelling bold and italic then thinning back, a wave rolling through the word","registry":"fancy","framework":"react","layer":"primitive","category":"kinetic-type","tags":["text","variable font","breathing","wave","typography","loop"],"aspect":"any","install":"npx shadcn add @fancy/breathing-text","docs":"https://www.fancycomponents.dev/docs/components/text/breathing-text","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/text/breathing-text.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/2027b37536fd/lib-fancy-breathing-text.webp","video":"https://s3.varg.ai/how-to/previews/3146e7a224cf/lib-fancy-breathing-text.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box"},"runs":"local","clock":"adapt","prompt":"Use Breathing Text from Fancy Components (https://www.fancycomponents.dev/docs/components/text/breathing-text, MIT). Install with `npx shadcn add @fancy/breathing-text` with the @fancy registry in components.json. Use it on a brand word or title that should feel alive while it holds on screen. It needs a variable font such as Roboto Flex or Overused Grotesk, loaded before render. Set fromFontVariationSettings and toFontVariationSettings (for example \"'wght' 100, 'slnt' 0\" to \"'wght' 800, 'slnt' -10\"), staggerDuration, staggerFrom and repeatDelay. Motion loops it with repeat: Infinity. Set each letter's font-variation-settings from a sine of (frame / fps - index * stagger) instead."},{"slug":"fancy.basic-number-ticker","name":"basic-number-ticker","title":"Basic Number Ticker","summary":"A large percentage counting up from zero to its target, easing out on the final number","registry":"fancy","framework":"react","layer":"primitive","category":"stats","also":["text-effects"],"tags":["text","counter","number","percent","stat","kpi"],"aspect":"any","install":"npx shadcn add @fancy/basic-number-ticker","docs":"https://www.fancycomponents.dev/docs/components/text/basic-number-ticker","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/text/basic-number-ticker.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/942fda1567dc/lib-fancy-basic-number-ticker.webp","video":"https://s3.varg.ai/how-to/previews/2d9f6c4c0618/lib-fancy-basic-number-ticker.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box (replayed with the demo restart key)"},"runs":"local","clock":"adapt","prompt":"Use Basic Number Ticker from Fancy Components (https://www.fancycomponents.dev/docs/components/text/basic-number-ticker, MIT). Install with `npx shadcn add @fancy/basic-number-ticker` after adding the @fancy registry to components.json. Use it for a stat beat: a big centred number with a % or unit, followed by a one-line label. Set from, target and the transition (duration, ease), and format with Intl.NumberFormat. It runs Motion's animate() on a motion value at mount. In the render, compute value = from + (target - from) * ease(clamp((frame - startFrame) / (duration * fps), 0, 1)), and set autoStart={false}."},{"slug":"fancy.text-along-path","name":"text-along-path","title":"Text Along Path","summary":"Rows of city names gliding along curved lines across the frame, like a ticker bent into waves","registry":"fancy","framework":"react","layer":"primitive","category":"kinetic-type","tags":["text","text path","svg","ticker","curved text","loop"],"aspect":"any","install":"npx shadcn add @fancy/text-along-path","docs":"https://www.fancycomponents.dev/docs/components/text/text-along-path","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/text/text-along-path.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/285c20d55f93/lib-fancy-text-along-path.webp","video":"https://s3.varg.ai/how-to/previews/36891e738253/lib-fancy-text-along-path.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box (auto variant)"},"runs":"local","clock":"adapt","prompt":"Use Text Along Path from Fancy Components (https://www.fancycomponents.dev/docs/components/text/text-along-path, MIT). Install with `npx shadcn add @fancy/text-along-path` with the @fancy registry in components.json. Use it as a looping band of words (cities, tags, a slogan) curving across the frame, or wrapped around a circle as a badge. Set path (any SVG path d), text, animationType='auto', duration, viewBox, textAnchor and textClassName for font and colour. The auto mode uses an SVG <animate> on startOffset. To seek it, call svg.pauseAnimations() and svg.setCurrentTime(frame / fps) each frame, or set startOffset yourself from ((frame / fps) % duration) / duration."},{"slug":"fancy.text-highlighter","name":"text-highlighter","title":"Text Highlighter","summary":"Marker-style highlight strokes sweeping behind key phrases in a paragraph, one phrase after another","registry":"fancy","framework":"react","layer":"primitive","category":"annotations","also":["text-effects"],"tags":["text","highlight","marker","emphasis","paragraph","explainer"],"aspect":"any","install":"npx shadcn add @fancy/text-highlighter","docs":"https://www.fancycomponents.dev/docs/components/text/text-highlighter","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/text/text-highlighter.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/893c8015496b/lib-fancy-text-highlighter.webp","video":"https://s3.varg.ai/how-to/previews/e90e479f86d8/lib-fancy-text-highlighter.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box; stepped frame by frame on a fake page clock and replayed with the demo restart button"},"runs":"local","clock":"adapt","prompt":"Use Text Highlighter from Fancy Components (https://www.fancycomponents.dev/docs/components/text/text-highlighter, MIT). Install with `npx shadcn add @fancy/text-highlighter` after adding the @fancy registry to components.json. Use it in explainers and quote cards to mark the key phrase while the voiceover says it. Set highlightColor from the brand, direction ('ltr', 'rtl', 'ttb' or 'btt'), and the transition. Use triggerType 'ref', since 'inView' and 'hover' don't fire in a render. It animates background-size with Motion. Compute the highlight's background-size from (frame - phraseStartFrame) / fps with an ease, so each phrase lands on its word in the voiceover."},{"slug":"fancy.animated-gradient-with-svg","name":"animated-gradient-with-svg","title":"Animated Gradient With SVG","summary":"Blurred orange and red colour blobs drifting and pulsing inside a card, like a soft lava gradient","registry":"fancy","framework":"react","layer":"component","category":"backgrounds","tags":["background","gradient","blur","blobs","mesh","card","css"],"aspect":"any","install":"npx shadcn add @fancy/animated-gradient-with-svg","docs":"https://www.fancycomponents.dev/docs/components/background/animated-gradient-svg","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/background/animated-gradient-with-svg.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/c5f3ef8a5d15/lib-fancy-animated-gradient-with-svg.webp","video":"https://s3.varg.ai/how-to/previews/19c506f43b09/lib-fancy-animated-gradient-with-svg.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box"},"runs":"local","clock":"adapt","prompt":"Use Animated Gradient With SVG from Fancy Components (https://www.fancycomponents.dev/docs/components/background/animated-gradient-with-svg, MIT). Install with `npx shadcn add @fancy/animated-gradient-with-svg` after adding the @fancy registry to components.json, and copy the background-gradient keyframes from the docs into your CSS. Use it as a soft full-frame or card background behind titles or bento tiles. Set colors (3–6 brand tones), speed and blur ('light', 'medium' or 'heavy'). Blob sizes and positions come from Math.random on each mount, so replace them with seeded values. The motion is a CSS keyframe animation: pause it and set each animation's currentTime from frame / fps (HyperFrames' CSS adapter can do this for you)."},{"slug":"fancy.float","name":"float","title":"Float","summary":"An album cover bobbing and tilting gently in 3D above its caption, as if floating in water","registry":"fancy","framework":"react","layer":"primitive","category":"entrances","also":["three-d"],"tags":["element","float","hover","3d tilt","product","idle motion"],"aspect":"any","install":"npx shadcn add @fancy/float","docs":"https://www.fancycomponents.dev/docs/components/blocks/float","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/blocks/float.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/50a76e80a095/lib-fancy-float.webp","video":"https://s3.varg.ai/how-to/previews/998cb3f37716/lib-fancy-float.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box"},"runs":"local","clock":"adapt","prompt":"Use Float from Fancy Components (https://www.fancycomponents.dev/docs/components/blocks/float, MIT). Install with `npx shadcn add @fancy/float` with the @fancy registry in components.json. Wrap a product shot, album cover, phone mockup or sticker in it so the object idles with life during a hold. Set speed, amplitude [x, y, z] and rotationRange [x, y, z], and give several floating items different timeOffset values so they don't move in sync. It reads time from Motion's useAnimationFrame. Compute the sine offsets from t = frame / fps + timeOffset instead and set the transform directly."},{"slug":"fancy.circling-elements","name":"circling-elements","title":"Circling Elements","summary":"A ring of photos orbiting a centre point, every image staying upright as the circle turns","registry":"fancy","framework":"react","layer":"component","category":"galleries","tags":["element","orbit","circle","gallery","photos","loop","css"],"aspect":"any","install":"npx shadcn add @fancy/circling-elements","docs":"https://www.fancycomponents.dev/docs/components/blocks/circling-elements","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/blocks/circling-elements.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/7c22217a7b70/lib-fancy-circling-elements.webp","video":"https://s3.varg.ai/how-to/previews/5101dbbde2da/lib-fancy-circling-elements.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box"},"runs":"local","clock":"adapt","prompt":"Use Circling Elements from Fancy Components (https://www.fancycomponents.dev/docs/components/blocks/circling-elements, MIT). Install with `npx shadcn add @fancy/circling-elements` after adding the @fancy registry to components.json, plus the circling keyframes from its docs page. Orbit product shots, avatars, logos or app icons around a central title or logo. Set radius (scale it to the frame, e.g. 35% of the short side), duration, easing and direction. The orbit is a CSS keyframe animation, so pause it and set the animation time from frame / fps, or compute each item's angle as 360 * ((frame / fps) / duration) + index * 360 / count and position it directly."},{"slug":"fancy.marquee-along-svg-path","name":"marquee-along-svg-path","title":"Marquee Along SVG Path","summary":"A ribbon of colourful tiles snaking along a looping curve across the frame","registry":"fancy","framework":"react","layer":"component","category":"galleries","tags":["element","marquee","svg path","ticker","tiles","loop"],"aspect":"any","install":"npx shadcn add @fancy/marquee-along-svg-path","docs":"https://www.fancycomponents.dev/docs/components/blocks/marquee-along-svg-path","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/blocks/marquee-along-svg-path.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/156debcbd1ac/lib-fancy-marquee-along-svg-path.webp","video":"https://s3.varg.ai/how-to/previews/a0bcad40e8fa/lib-fancy-marquee-along-svg-path.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box"},"runs":"local","clock":"adapt","prompt":"Use Marquee Along SVG Path from Fancy Components (https://www.fancycomponents.dev/docs/components/blocks/marquee-along-svg-path, MIT). Install with `npx shadcn add @fancy/marquee-along-svg-path` with the @fancy registry in components.json. Send logos, product thumbnails, stickers or words along a custom curve (a loop, an S, a spiral) as a playful transition or a busy background layer. Set path, viewBox, baseVelocity, direction, repeat and enableRollingZIndex. Motion's useAnimationFrame advances the offset. Set the offset to (frame / fps) * baseVelocity, wrapped to the path length, and turn off draggable, slowdownOnHover and useScrollVelocity."},{"slug":"fancy.simple-marquee","name":"simple-marquee","title":"Simple Marquee","summary":"Rows of gradient tiles scrolling sideways at different speeds under a serif title","registry":"fancy","framework":"react","layer":"component","category":"galleries","also":["social-proof"],"tags":["element","marquee","ticker","gallery","logos","loop"],"aspect":"any","install":"npx shadcn add @fancy/simple-marquee","docs":"https://www.fancycomponents.dev/docs/components/blocks/simple-marquee","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/blocks/simple-marquee.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/1be66434f46d/lib-fancy-simple-marquee.webp","video":"https://s3.varg.ai/how-to/previews/85e25819e363/lib-fancy-simple-marquee.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box"},"runs":"local","clock":"adapt","prompt":"Use Simple Marquee from Fancy Components (https://www.fancycomponents.dev/docs/components/blocks/simple-marquee, MIT). Install with `npx shadcn add @fancy/simple-marquee` after adding the @fancy registry to components.json. Use it for logo walls, a strip of product shots or a headline ticker, stacking two or three rows in opposite directions. Set direction ('left', 'right', 'up' or 'down'), baseVelocity, repeat and an easing for the speed curve. Motion's useAnimationFrame moves it. Compute the offset from (frame / fps) * baseVelocity, wrapped to one repeat width, and turn off draggable, slowdownOnHover and useScrollVelocity."},{"slug":"fancy.box-carousel","name":"box-carousel","title":"Box Carousel","summary":"Photos on the faces of a 3D box that turns to bring the next image forward","registry":"fancy","framework":"react","layer":"component","category":"galleries","also":["three-d"],"tags":["element","carousel","3d","cube","gallery","slideshow"],"aspect":"any","install":"npx shadcn add @fancy/box-carousel","docs":"https://www.fancycomponents.dev/docs/components/carousel/box-carousel","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/carousel/box-carousel.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/d96af885dd8b/lib-fancy-box-carousel.webp","video":"https://s3.varg.ai/how-to/previews/7c2a5b5afbc5/lib-fancy-box-carousel.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box (autoplay variant)"},"runs":"local","clock":"adapt","prompt":"Use Box Carousel from Fancy Components (https://www.fancycomponents.dev/docs/components/carousel/box-carousel, MIT). Install with `npx shadcn add @fancy/box-carousel` with the @fancy registry in components.json. Use it as a 3D slideshow for product shots, before/after images or video clips (faces can hold <video>). Set items, width, height, direction ('left', 'right', 'top' or 'bottom'), perspective and autoPlayInterval. The autoplay uses setInterval and Motion springs. Compute the face index from floor(frame / fps * 1000 / autoPlayInterval) and the box rotation from the eased time since the last turn, and set enableDrag={false}."},{"slug":"fancy.gravity","name":"gravity","title":"Gravity","summary":"Coloured pill tags dropping into the frame and tumbling into a pile under real physics","registry":"fancy","framework":"react","layer":"component","category":"particles","tags":["element","physics","matter.js","gravity","tags","playful"],"aspect":"any","install":"npx shadcn add @fancy/gravity","docs":"https://www.fancycomponents.dev/docs/components/physics/gravity","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/physics/gravity.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/c0e06941080e/lib-fancy-gravity.webp","video":"https://s3.varg.ai/how-to/previews/f49b11aec8bf/lib-fancy-gravity.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box (replayed with the demo restart key)"},"runs":"local","clock":"adapt","prompt":"Use Gravity from Fancy Components (https://www.fancycomponents.dev/docs/components/physics/gravity, MIT). Install with `npx shadcn add @fancy/gravity` after adding the @fancy registry to components.json, plus matter-js, poly-decomp and svg-path-commander. Drop feature tags, skills, logos or emoji into the bottom of the frame as an outro or a 'what's inside' beat. Wrap each item in MatterBody with x, y, angle and bodyType ('rectangle', 'circle' or 'svg'), and set gravity. It runs a Matter.js Runner in real time, so set autoStart={false}, step Engine.update(engine, 1000 / fps) once per frame in order from fixed start positions, and set isDraggable={false}."},{"slug":"fancy.screensaver","name":"screensaver","title":"Screensaver","summary":"A stack of photos bouncing off the frame edges like the old DVD screensaver logo","registry":"fancy","framework":"react","layer":"component","category":"particles","tags":["element","screensaver","dvd","bounce","retro","playful"],"aspect":"any","install":"npx shadcn add @fancy/screensaver","docs":"https://www.fancycomponents.dev/docs/components/blocks/screensaver","source":"https://github.com/danielpetho/fancy/blob/main/src/fancy/components/blocks/screensaver.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/85b9b9243f8d/lib-fancy-screensaver.webp","video":"https://s3.varg.ai/how-to/previews/73852910d0eb/lib-fancy-screensaver.mp4","credit":"Captured from the library’s own demo page (Fancy Components)","note":"Live demo on fancycomponents.dev, cropped to the preview box"},"runs":"local","clock":"adapt","prompt":"Use Screensaver from Fancy Components (https://www.fancycomponents.dev/docs/components/blocks/screensaver, MIT). Install with `npx shadcn add @fancy/screensaver` with the @fancy registry in components.json. Bounce a logo, sticker or a stack of photos around the frame for a retro, ironic or 'idle' moment, or behind a 'page not found' joke. Set speed, startPosition and startAngle, and pass containerRef pointing at the frame. It moves with Motion's useAnimationFrame and reflects off the walls in real time. Compute the position as a pure function of t = frame / fps: unfold the bounce with a triangle wave per axis, x = tri(x0 + vx * t, W - w)."},{"slug":"animateui.bubble-background","name":"bubble-background","title":"Bubble Background","summary":"Blurred cyan, violet and magenta glows drifting and orbiting over a deep violet-to-blue field","registry":"animate-ui","framework":"react","layer":"component","category":"backgrounds","tags":["background","gradient","blobs","blur","ambient","react","motion"],"aspect":"any","install":"npx shadcn@latest add @animate-ui/backgrounds-bubble","docs":"https://animate-ui.com/docs/backgrounds/bubble","source":"https://github.com/imskyleen/animate-ui/blob/main/apps/v2/registry/backgrounds/bubble/index.tsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/aa4104c7a541/lib-animate-ui-bubble-background.webp","video":"https://s3.varg.ai/how-to/previews/05d565d4dd2d/lib-animate-ui-bubble-background.mp4","credit":"Captured from the library’s own demo page (Animate UI)","note":"Live demo on the Animate UI docs page, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use the Bubble Background from Animate UI (https://animate-ui.com/docs/backgrounds/bubble, MIT + Commons Clause) as the full-frame backdrop behind my title. Install it with `npx shadcn@latest add @animate-ui/backgrounds-bubble` and place <BubbleBackground className=\"absolute inset-0\" /> at the bottom layer of the frame. Its five blobs move on Motion loops (two drift back and forth over 30 s and 40 s, three orbit over 20–40 s), which run on wall-clock time, so drive them from the frame instead: in Remotion compute each blob's translate and rotation from useCurrentFrame() / fps with the same periods; in HyperFrames rebuild the five loops as a paused GSAP timeline. Leave interactive off. Set `colors` (six r,g,b strings) to my palette and keep the text on top with good contrast."},{"slug":"animateui.fireworks-background","name":"fireworks-background","title":"Fireworks Background","summary":"White rockets streak up from the bottom edge and burst into falling, fading sparks on a dark canvas","registry":"animate-ui","framework":"react","layer":"component","category":"particles","tags":["background","fireworks","particles","celebration","canvas","react"],"aspect":"any","install":"npx shadcn@latest add @animate-ui/backgrounds-fireworks","docs":"https://animate-ui.com/docs/backgrounds/fireworks","source":"https://github.com/imskyleen/animate-ui/blob/main/apps/v2/registry/backgrounds/fireworks/index.tsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/e689916a4bea/lib-animate-ui-fireworks-background.webp","video":"https://s3.varg.ai/how-to/previews/f44fc0532bc3/lib-animate-ui-fireworks-background.mp4","credit":"Captured from the library’s own demo page (Animate UI)","note":"Live demo on the Animate UI docs page, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Add the Fireworks Background from Animate UI (https://animate-ui.com/docs/backgrounds/fireworks, MIT + Commons Clause) behind a celebration moment: a launch, a milestone, a year-end card. Install with `npx shadcn@latest add @animate-ui/backgrounds-fireworks` and put <FireworksBackground className=\"absolute inset-0\" /> under the text. The canvas advances one simulation step per requestAnimationFrame and uses Math.random, so it is not frame-exact: copy the component, swap Math.random for a seeded generator, and step the simulation exactly once per video frame (Remotion: in an effect keyed on useCurrentFrame(), replaying steps from 0 when seeking; HyperFrames: on hf-seek, simulate up to frame = time × fps). Tune `population` for density, `color` for brand colours, and the speed and size ranges."},{"slug":"animateui.glyph-background","name":"glyph-background","title":"Glyph Background","summary":"A dark grid of random monospace characters lit by slow, drifting glows that flicker letters into view","registry":"animate-ui","framework":"react","layer":"component","category":"generative","tags":["background","ascii","glyphs","webgl","matrix","tech","monospace"],"aspect":"any","install":"npx shadcn@latest add @animate-ui/backgrounds-glyph","docs":"https://animate-ui.com/docs/backgrounds/glyph","source":"https://github.com/imskyleen/animate-ui/blob/main/apps/v2/registry/backgrounds/glyph/index.tsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/dcb0328178f0/lib-animate-ui-glyph-background.webp","video":"https://s3.varg.ai/how-to/previews/1a5833633611/lib-animate-ui-glyph-background.mp4","credit":"Captured from the library’s own demo page (Animate UI)","note":"Live demo on the Animate UI docs page, cropped to the preview stage; a scripted pointer path wakes the glows and two clicks send waves"},"runs":"local","clock":"adapt","prompt":"Use the Glyph Background from Animate UI (https://animate-ui.com/docs/backgrounds/glyph, MIT + Commons Clause) as a techy full-frame backdrop for a product or AI announcement. Install with `npx shadcn@latest add @animate-ui/backgrounds-glyph`, wrap it in a dark container (#121212) with text-white and place it under the headline. It is a WebGL shader whose draw function takes a time value but is called from requestAnimationFrame: copy the component, remove the loop and call draw(frame / fps * 1000) yourself (Remotion: from useCurrentFrame(); HyperFrames: on the hf-seek event). Set interactive={false}, pick glowColor for the drifting light and fontSize for the grid density."},{"slug":"animateui.gradient-background","name":"gradient-background","title":"Gradient Background","summary":"A purple-to-pink diagonal gradient sliding slowly back and forth across the frame","registry":"animate-ui","framework":"react","layer":"component","category":"backgrounds","tags":["background","gradient","ambient","css","react","simple"],"aspect":"any","install":"npx shadcn@latest add @animate-ui/backgrounds-gradient","docs":"https://animate-ui.com/docs/backgrounds/gradient","source":"https://github.com/imskyleen/animate-ui/blob/main/apps/v2/registry/backgrounds/gradient/index.tsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/cbb3afea6459/lib-animate-ui-gradient-background.webp","video":"https://s3.varg.ai/how-to/previews/8f87a6cf1d13/lib-animate-ui-gradient-background.mp4","credit":"Captured from the library’s own demo page (Animate UI)","note":"Live demo on the Animate UI docs page, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Put Animate UI's Gradient Background (https://animate-ui.com/docs/backgrounds/gradient, MIT + Commons Clause) behind my title card. Install with `npx shadcn@latest add @animate-ui/backgrounds-gradient`. It is a 400%-sized Tailwind gradient whose background-position Motion animates from 0% 50% to 100% 50% and back every 15 s. For a frame-exact render skip Motion: in Remotion set backgroundPosition from interpolate(frame % (15 * fps), [0, 7.5 * fps, 15 * fps], [0, 100, 0]); in HyperFrames use a CSS keyframe or a paused GSAP tween on background-position. Swap the from/via/to colours for my brand and shorten the period if the clip is short."},{"slug":"animateui.gravity-stars-background","name":"gravity-stars-background","title":"Gravity Stars Background","summary":"Small white dots drifting over a dark canvas and gathering, brighter, around a moving point of gravity","registry":"animate-ui","framework":"react","layer":"component","category":"particles","also":["backgrounds"],"tags":["background","stars","particles","space","canvas","react"],"aspect":"any","install":"npx shadcn@latest add @animate-ui/backgrounds-gravity-stars","docs":"https://animate-ui.com/docs/backgrounds/gravity-stars","source":"https://github.com/imskyleen/animate-ui/blob/main/apps/v2/registry/backgrounds/gravity-stars/index.tsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/4779ef9048e4/lib-animate-ui-gravity-stars-background.webp","video":"https://s3.varg.ai/how-to/previews/d248b61af6cf/lib-animate-ui-gravity-stars-background.mp4","credit":"Captured from the library’s own demo page (Animate UI)","note":"Live demo on the Animate UI docs page, cropped to the preview stage; a scripted pointer path pulls the stars"},"runs":"local","clock":"adapt","prompt":"Use Animate UI's Gravity Stars Background (https://animate-ui.com/docs/backgrounds/gravity-stars, MIT + Commons Clause) as a quiet space backdrop. Install with `npx shadcn@latest add @animate-ui/backgrounds-gravity-stars` and place it full-frame; the stars take the text colour, so set text-white on a dark container. It is a canvas simulation stepped once per requestAnimationFrame with random starting positions: copy it, seed the random source and step once per video frame (Remotion: from useCurrentFrame(), replaying from frame 0 on seek; HyperFrames: on hf-seek). To get the gravity pull without a mouse, feed a fixed or animated pointer position into the simulation. Tune starsCount, starsSize, movementSpeed, glowIntensity and gravityStrength."},{"slug":"animateui.hole-background","name":"hole-background","title":"Hole Background","summary":"Thin grid rings sinking into a dark tunnel under a glow that cycles through magenta, blue and teal","registry":"animate-ui","framework":"react","layer":"component","category":"particles","also":["backgrounds"],"tags":["background","tunnel","vortex","particles","canvas","sci-fi","react"],"aspect":"any","install":"npx shadcn@latest add @animate-ui/backgrounds-hole","docs":"https://animate-ui.com/docs/backgrounds/hole","source":"https://github.com/imskyleen/animate-ui/blob/main/apps/v2/registry/backgrounds/hole/index.tsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/6643fdbe9793/lib-animate-ui-hole-background.webp","video":"https://s3.varg.ai/how-to/previews/f887cac0c891/lib-animate-ui-hole-background.mp4","credit":"Captured from the library’s own demo page (Animate UI)","note":"Live demo on the Animate UI docs page, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use the Hole Background from Animate UI (https://animate-ui.com/docs/backgrounds/hole, MIT + Commons Clause) as a hypnotic tunnel behind a reveal or a logo. Install with `npx shadcn@latest add @animate-ui/backgrounds-hole` and place <HoleBackground className=\"absolute inset-0\" /> full-frame, the logo centred over the mouth of the tunnel. The rings and particles advance one step per requestAnimationFrame and the aurora runs on a 5 s CSS cycle: copy the component and step the canvas once per video frame from the frame number (seed the particle randomness), and seek the aurora as a CSS animation (HyperFrames' css adapter does this) or set its offset from frame / fps in Remotion. Set strokeColor, numberOfLines, numberOfDiscs and particleRGBColor to match the palette."},{"slug":"animateui.stars-background","name":"stars-background","title":"Stars Background","summary":"Three layers of tiny stars scrolling upward at different speeds over a dark radial gradient","registry":"animate-ui","framework":"react","layer":"component","category":"particles","also":["backgrounds"],"tags":["background","stars","space","parallax","night","react"],"aspect":"any","install":"npx shadcn@latest add @animate-ui/backgrounds-stars","docs":"https://animate-ui.com/docs/backgrounds/stars","source":"https://github.com/imskyleen/animate-ui/blob/main/apps/v2/registry/backgrounds/stars/index.tsx","license":"MIT + Commons Clause","runs":"local","clock":"adapt","prompt":"Add Animate UI's Stars Background (https://animate-ui.com/docs/backgrounds/stars, MIT + Commons Clause) as a starfield behind an intro title. Install with `npx shadcn@latest add @animate-ui/backgrounds-stars` and place it full-frame. Three star layers (1, 2 and 3 px) scroll upward in Motion loops; the smallest crosses 2000 px in `speed` seconds and the others take two and three times longer. For a frame-exact render, set each layer's translateY from the frame: -(frame / fps / (speed × k) × 2000) mod 2000 with k = 1, 2, 3 (Remotion via useCurrentFrame(), HyperFrames via a paused GSAP timeline). Turn the mouse parallax off, set starColor, and lower speed for a slower drift."},{"slug":"animateui.topography-background","name":"topography-background","title":"Topography Background","summary":"Thin contour lines of a noise terrain rising from flat and slowly reshaping, like a breathing map","registry":"animate-ui","framework":"react","layer":"component","category":"generative","also":["backgrounds"],"tags":["background","contour","topographic","lines","webgl","minimal","map"],"aspect":"any","install":"npx shadcn@latest add @animate-ui/backgrounds-topography","docs":"https://animate-ui.com/docs/backgrounds/topography","source":"https://github.com/imskyleen/animate-ui/blob/main/apps/v2/registry/backgrounds/topography/index.tsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/8f9ebe1f9f0d/lib-animate-ui-topography-background.webp","video":"https://s3.varg.ai/how-to/previews/c082745fb8d0/lib-animate-ui-topography-background.mp4","credit":"Captured from the library’s own demo page (Animate UI)","note":"Live demo on the Animate UI docs page, cropped to the preview stage"},"runs":"local","clock":"adapt","prompt":"Use the Topography Background from Animate UI (https://animate-ui.com/docs/backgrounds/topography, MIT + Commons Clause) as a calm, editorial backdrop of living contour lines. Install with `npx shadcn@latest add @animate-ui/backgrounds-topography` and place it full-frame with text-neutral-500 (or set lineColor). The shader samples noise at z = time × 0.00005 × speed and the opening rise is a 1.8 s ease-out, both called from requestAnimationFrame: copy the component, drop the loop and call its draw with time = frame / fps × 1000 (Remotion: useCurrentFrame(); HyperFrames: on hf-seek), computing the rise from the same clock. Set interactive={false}; tune levels for line count, scale for feature size and speed for drift."},{"slug":"animateui.gradient-text","name":"gradient-text","title":"Gradient Text","summary":"A bold headline filled with a purple, pink and blue gradient that slides slowly across the letters","registry":"animate-ui","framework":"react","layer":"primitive","category":"text-effects","tags":["text","gradient","headline","title","glow","react"],"aspect":"any","install":"npm install @animate-ui/react motion","docs":"https://animate-ui.com/docs/primitives/animate-ui/gradient-text","source":"https://github.com/imskyleen/animate-ui/blob/main/packages/react/src/primitives/texts/gradient/index.tsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/a7dc894c1452/lib-animate-ui-gradient-text.webp","video":"https://s3.varg.ai/how-to/previews/d3d4f1117a1f/lib-animate-ui-gradient-text.mp4","credit":"Captured from the library’s own demo page (Animate UI)","note":"Live demo on the Animate UI docs page, cropped to the preview stage; demo text enlarged to 88px and replayed at the start of the clip"},"runs":"local","clock":"adapt","prompt":"Set my title with Animate UI's Gradient Text (https://animate-ui.com/docs/primitives/animate-ui/gradient-text, MIT + Commons Clause): `npm install @animate-ui/react motion`, then <GradientText text=\"…\" neon /> centred in the frame at display size. The gradient sweep is one Motion value on a 50 s linear loop, far too slow for a short clip and tied to wall-clock time: for the render, set background-position yourself from the frame (Remotion: interpolate(frame, [0, durationInFrames], [0, 100]) as a percentage; HyperFrames: a paused GSAP tween on background-position) and let one sweep cover the shot. Pass `gradient` with brand colours; neon adds a blurred glow copy behind the text."},{"slug":"animateui.shimmering-text","name":"shimmering-text","title":"Shimmering Text","summary":"A glint of light running letter by letter across grey text, each letter brightening as it passes","registry":"animate-ui","framework":"react","layer":"primitive","category":"text-effects","tags":["text","shimmer","loading","glint","per-letter","react"],"aspect":"any","install":"npm install @animate-ui/react motion","docs":"https://animate-ui.com/docs/primitives/animate-ui/shimmering-text","source":"https://github.com/imskyleen/animate-ui/blob/main/packages/react/src/primitives/texts/shimmering/index.tsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/e178ea852acc/lib-animate-ui-shimmering-text.webp","video":"https://s3.varg.ai/how-to/previews/25a0d11eb722/lib-animate-ui-shimmering-text.mp4","credit":"Captured from the library’s own demo page (Animate UI)","note":"Live demo on the Animate UI docs page, cropped to the preview stage; demo text enlarged to 80px and replayed at the start of the clip"},"runs":"local","clock":"adapt","prompt":"Use Animate UI's Shimmering Text (https://animate-ui.com/docs/primitives/animate-ui/shimmering-text, MIT + Commons Clause) for an AI \"thinking…\" line or a subtle caption. `npm install @animate-ui/react motion` and render <ShimmeringText text=\"…\" />. Each letter pulses from `color` to `shimmeringColor` and back over `duration`, staggered by duration / letters, on Motion's clock. To render it frame-exact, compute each letter's colour mix from the frame: phase = (frame / fps − i × duration / n) mod (duration + 0.05 × n), mapped through an ease-in-out (Remotion: interpolateColors; HyperFrames: a paused GSAP stagger on the letter spans). Set color and shimmeringColor; `wave` adds a small lift and turn as the glint passes."},{"slug":"animateui.typing-text","name":"typing-text","title":"Typing Text","summary":"Words typed one character at a time behind a blinking cursor, held, erased and replaced","registry":"animate-ui","framework":"react","layer":"primitive","category":"text-effects","tags":["text","typewriter","typing","cursor","headline","react"],"aspect":"any","install":"npm install @animate-ui/react motion","docs":"https://animate-ui.com/docs/primitives/animate-ui/typing-text","source":"https://github.com/imskyleen/animate-ui/blob/main/packages/react/src/primitives/texts/typing/index.tsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/4629b940bfb5/lib-animate-ui-typing-text.webp","video":"https://s3.varg.ai/how-to/previews/e1e16a179610/lib-animate-ui-typing-text.mp4","credit":"Captured from the library’s own demo page (Animate UI)","note":"Live demo on the Animate UI docs page, cropped to the preview stage; demo text enlarged to 56px and replayed at the start of the clip"},"runs":"local","clock":"adapt","prompt":"Add a typewriter headline with Animate UI's Typing Text (https://animate-ui.com/docs/primitives/animate-ui/typing-text, MIT + Commons Clause): `npm install @animate-ui/react motion`, then <TypingText text={[\"Design\", \"Build\", \"Ship\"]} loop><TypingTextCursor /></TypingText>. It types one character every `duration` ms (100 by default) on timers, holds for `holdDelay`, erases at the same pace and moves on. For a video, derive the visible substring from the frame instead: chars = floor((frame / fps × 1000 − delay) / duration), with the hold and erase phases laid out the same way, and blink the cursor on a 1 s period from frame / fps. Keep it large, left-aligned or centred in the lower third."},{"slug":"animateui.morphing-text","name":"morphing-text","title":"Morphing Text","summary":"One word morphs into the next: shared letters glide into place while the rest blur out and rise in","registry":"animate-ui","framework":"react","layer":"primitive","category":"text-effects","tags":["text","morph","word-swap","headline","spring","react"],"aspect":"any","install":"npm install @animate-ui/react motion","docs":"https://animate-ui.com/docs/primitives/animate-ui/morphing-text","source":"https://github.com/imskyleen/animate-ui/blob/main/packages/react/src/primitives/texts/morphing/index.tsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/996e00b7323d/lib-animate-ui-morphing-text.webp","video":"https://s3.varg.ai/how-to/previews/0ef5cfe294bc/lib-animate-ui-morphing-text.mp4","credit":"Captured from the library’s own demo page (Animate UI)","note":"Live demo on the Animate UI docs page, cropped to the preview stage; demo text enlarged to 52px and replayed at the start of the clip"},"runs":"local","clock":"adapt","prompt":"Use Animate UI's Morphing Text (https://animate-ui.com/docs/primitives/animate-ui/morphing-text, MIT + Commons Clause) for a word that keeps changing in a tagline (\"Fast → Accessible → Animated\"). `npm install @animate-ui/react motion`, then <MorphingText text={[…]} loop />, set big and centred. Letters both words share slide to their new place on a spring (stiffness 300, damping 30); the others blur out in 150 ms and the new ones rise in over 300 ms, 12 ms apart. Motion runs these on wall-clock time, so for the render lay each morph out on the frame: hold for holdDelay, then drive the slides with Remotion's spring({ frame, fps }) and the fades with interpolate, or rebuild them as a paused GSAP timeline in HyperFrames. Tune holdDelay to the edit's beat."},{"slug":"animateui.rotating-text","name":"rotating-text","title":"Rotating Text","summary":"Words taking turns in one slot: the current word slides up and fades out as the next slides in","registry":"animate-ui","framework":"react","layer":"primitive","category":"text-effects","tags":["text","word-rotator","slot","tagline","react"],"aspect":"any","install":"npm install @animate-ui/react motion","docs":"https://animate-ui.com/docs/primitives/animate-ui/rotating-text","source":"https://github.com/imskyleen/animate-ui/blob/main/packages/react/src/primitives/texts/rotating/index.tsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/3deb15ceea14/lib-animate-ui-rotating-text.webp","video":"https://s3.varg.ai/how-to/previews/42f123539f67/lib-animate-ui-rotating-text.mp4","credit":"Captured from the library’s own demo page (Animate UI)","note":"Live demo on the Animate UI docs page, cropped to the preview stage; demo text enlarged to 88px and replayed at the start of the clip"},"runs":"local","clock":"adapt","prompt":"Build a \"We make it ___\" line with Animate UI's Rotating Text (https://animate-ui.com/docs/primitives/animate-ui/rotating-text, MIT + Commons Clause): `npm install @animate-ui/react motion`, then <RotatingTextContainer text={[…]} align=\"start\"><RotatingText /></RotatingTextContainer> after the fixed words. Every `duration` the word slides out by `y` and fades while the next slides in, 0.3 s each on an ease-out, scheduled with timers. For the render compute the index and the slide progress from the frame: index = floor(frame / (duration × fps)) and the out/in offsets with interpolate over the first 0.6 s of each slot (or a paused GSAP timeline in HyperFrames). Time `duration` to the music."},{"slug":"animateui.rolling-text","name":"rolling-text","title":"Rolling Text","summary":"Letters flipping over one after another in 3D, like a split-flap board settling on a word","registry":"animate-ui","framework":"react","layer":"primitive","category":"text-effects","tags":["text","flip","split-flap","3d","per-letter","react"],"aspect":"any","install":"npm install @animate-ui/react motion","docs":"https://animate-ui.com/docs/primitives/animate-ui/rolling-text","source":"https://github.com/imskyleen/animate-ui/blob/main/packages/react/src/primitives/texts/rolling/index.tsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/8610b66be51b/lib-animate-ui-rolling-text.webp","video":"https://s3.varg.ai/how-to/previews/fa7d83d07320/lib-animate-ui-rolling-text.mp4","credit":"Captured from the library’s own demo page (Animate UI)","note":"Live demo on the Animate UI docs page, cropped to the preview stage; demo text enlarged to 84px and replayed at the start of the clip"},"runs":"local","clock":"adapt","prompt":"Reveal a title with Animate UI's Rolling Text (https://animate-ui.com/docs/primitives/animate-ui/rolling-text, MIT + Commons Clause): `npm install @animate-ui/react motion`, then <RollingText text=\"…\" /> centred in the frame. Each letter turns over on rotateX: the front copy rolls away while the back copy rolls in 0.3 s later, 0.5 s each on an ease-out, letters 0.1 s apart. It plays once on mount or in view, on Motion's clock, so for a video set each letter's two rotations from the frame: t = frame / fps − i × 0.1, then interpolate rotateX over [0, 0.5] and [0.3, 0.8] with an ease-out (Remotion), or rebuild it as a paused GSAP timeline with a 0.1 stagger (HyperFrames). Start it on the cut where the title appears."},{"slug":"animateui.splitting-text","name":"splitting-text","title":"Splitting Text","summary":"A line of text sliding in from the right piece by piece, characters or words fading up in a stagger","registry":"animate-ui","framework":"react","layer":"primitive","category":"text-effects","tags":["text","stagger","reveal","split-text","headline","react"],"aspect":"any","install":"npm install @animate-ui/react motion","docs":"https://animate-ui.com/docs/primitives/animate-ui/splitting-text","source":"https://github.com/imskyleen/animate-ui/blob/main/packages/react/src/primitives/texts/splitting/index.tsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/711a6b96a194/lib-animate-ui-splitting-text.webp","video":"https://s3.varg.ai/how-to/previews/d75797a36a03/lib-animate-ui-splitting-text.mp4","credit":"Captured from the library’s own demo page (Animate UI)","note":"Live demo on the Animate UI docs page, cropped to the preview stage; demo text enlarged to 64px and replayed at the start of the clip"},"runs":"local","clock":"adapt","prompt":"Bring a headline in with Animate UI's Splitting Text (https://animate-ui.com/docs/primitives/animate-ui/splitting-text, MIT + Commons Clause): `npm install @animate-ui/react motion`, then <SplittingText text=\"…\" type=\"chars\" />. Each piece fades in and slides 150 px from the right over 0.7 s on an ease-out, 0.05 s apart for characters, 0.2 s for words, 0.3 s for lines. It plays once on Motion's clock, so for the render compute each piece from the frame: t = frame / fps − i × stagger, opacity and x interpolated over [0, 0.7] with an ease-out (Remotion), or a paused GSAP from() with the same stagger (HyperFrames). Pick type by length (chars for short titles, words or lines for sentences)."},{"slug":"animateui.sliding-number","name":"sliding-number","title":"Sliding Number","summary":"An odometer number whose digits roll on little wheels up to their final value","registry":"animate-ui","framework":"react","layer":"primitive","category":"stats","also":["text-effects"],"tags":["text","counter","odometer","numbers","stats","react"],"aspect":"any","install":"npm install @animate-ui/react motion","docs":"https://animate-ui.com/docs/primitives/animate-ui/sliding-number","source":"https://github.com/imskyleen/animate-ui/blob/main/packages/react/src/primitives/texts/sliding-number/index.tsx","license":"MIT + Commons Clause","preview":{"poster":"https://s3.varg.ai/how-to/previews/0c5acad145d7/lib-animate-ui-sliding-number.webp","video":"https://s3.varg.ai/how-to/previews/93d859f91de4/lib-animate-ui-sliding-number.mp4","credit":"Captured from the library’s own demo page (Animate UI)","note":"Live demo on the Animate UI docs page, cropped to the preview stage; demo text enlarged to 110px and replayed at the start of the clip"},"runs":"local","clock":"adapt","prompt":"Show a stat with Animate UI's Sliding Number (https://animate-ui.com/docs/primitives/animate-ui/sliding-number, MIT + Commons Clause): `npm install @animate-ui/react motion`, then <SlidingNumber number={12500} fromNumber={0} thousandSeparator=\",\" /> at display size, centred or beside a label. Each digit sits on a wheel positioned in percent of its own height; with fromNumber it counts on a spring (stiffness 90, damping 50) and every digit rolls on the way. Motion's springs run on wall-clock time, so for the render compute the current value from the frame (Remotion: spring({ frame, fps, config: { stiffness: 90, damping: 50 } }) mapped from fromNumber to number) and place each wheel from that value; in HyperFrames tween a value in a paused GSAP timeline and write the digits on update. Set decimalPlaces and padStart as needed."},{"slug":"motionprimitives.text-effect","name":"text-effect","title":"Text Effect","summary":"A line of text resolves letter by letter out of dark blur, then lifts and fades away, on a loop","registry":"motion-primitives","framework":"react","layer":"primitive","category":"text-effects","tags":["text","reveal","blur","stagger","caption"],"aspect":"any","install":"npx motion-primitives@latest add text-effect","docs":"https://motion-primitives.com/docs/text-effect","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/text-effect.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/56dedd9f952c/lib-motion-primitives-text-effect.webp","video":"https://s3.varg.ai/how-to/previews/584e08817603/lib-motion-primitives-text-effect.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"adapt","prompt":"Animate my caption lines with Motion Primitives' Text Effect (https://motion-primitives.com/docs/text-effect, MIT), centered or in the lower third. Install with `npx motion-primitives@latest add text-effect`. It splits text per char, word or line and staggers Motion variants on mount, with AnimatePresence for the exit, so for a render compute each segment's opacity, blur and y from frame / fps with its stagger offset (Remotion), or stagger the segments on the paused HyperFrames timeline; toggle trigger at the exact frame a line should leave. Set per, preset (blur, fade-in-blur, scale, fade, slide), delay, speedReveal and speedSegment, or pass custom variants."},{"slug":"motionprimitives.text-shimmer","name":"text-shimmer","title":"Text Shimmer","summary":"A bright highlight sweeps across grey monospace text, like a 'generating…' status label","registry":"motion-primitives","framework":"react","layer":"primitive","category":"text-effects","tags":["text","shimmer","loading","status","gradient"],"aspect":"any","install":"npx motion-primitives@latest add text-shimmer","docs":"https://motion-primitives.com/docs/text-shimmer","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/text-shimmer.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/deff638a3656/lib-motion-primitives-text-shimmer.webp","video":"https://s3.varg.ai/how-to/previews/2fb8558b8450/lib-motion-primitives-text-shimmer.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"adapt","prompt":"Use Motion Primitives' Text Shimmer (https://motion-primitives.com/docs/text-shimmer, MIT) for an AI 'thinking' or 'generating' status line in a UI walkthrough, placed where the app would show it. Install with `npx motion-primitives@latest add text-shimmer`. The highlight is a background-position loop run by Motion with repeat: Infinity, so set backgroundPosition from frame / fps modulo duration (Remotion) or loop the same tween on the paused HyperFrames timeline. Set duration and spread, and color it with the --base-color and --base-gradient-color CSS variables; scale the font up for video."},{"slug":"motionprimitives.text-shimmer-wave","name":"text-shimmer-wave","title":"Text Shimmer Wave","summary":"Letters bob forward and brighten one after another as a light wave rolls through the word","registry":"motion-primitives","framework":"react","layer":"primitive","category":"text-effects","tags":["text","shimmer","wave","letters","loading"],"aspect":"any","install":"npx motion-primitives@latest add text-shimmer-wave","docs":"https://motion-primitives.com/docs/text-shimmer-wave","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/text-shimmer-wave.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/3ff1d1f5034a/lib-motion-primitives-text-shimmer-wave.webp","video":"https://s3.varg.ai/how-to/previews/ed1d73e6c483/lib-motion-primitives-text-shimmer-wave.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"adapt","prompt":"Add Motion Primitives' Text Shimmer Wave (https://motion-primitives.com/docs/text-shimmer-wave, MIT) to a short status word or label, centered or inside a UI mockup. Install with `npx motion-primitives@latest add text-shimmer-wave`. Each letter runs its own infinite Motion keyframe loop (z, x, y, scale, rotateY and color) with a stagger, so in Remotion compute each letter's phase from frame / fps plus its index offset and set those transforms directly; in HyperFrames put staggered repeating tweens on the paused timeline. Tune duration, spread, zDistance, xDistance, yDistance, scaleDistance and rotateYDistance, and color it via the CSS variables."},{"slug":"motionprimitives.text-scramble","name":"text-scramble","title":"Text Scramble","summary":"Monospace letters churn through random characters before settling into the final word","registry":"motion-primitives","framework":"react","layer":"primitive","category":"text-effects","tags":["text","scramble","decode","hacker","glitch"],"aspect":"any","install":"npx motion-primitives@latest add text-scramble","docs":"https://motion-primitives.com/docs/text-scramble","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/text-scramble.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/ce7ab5435d2c/lib-motion-primitives-text-scramble.webp","video":"https://s3.varg.ai/how-to/previews/e1b373a3b564/lib-motion-primitives-text-scramble.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"adapt","prompt":"Decode a title or label with Motion Primitives' Text Scramble (https://motion-primitives.com/docs/text-scramble, MIT), in a monospace font wherever the word sits in the frame. Install with `npx motion-primitives@latest add text-scramble`. It replaces letters on a setInterval with Math.random picks from characterSet until duration runs out, so for a render compute the step from frame / fps ÷ speed, reveal letters left to right by progress, and pick scrambled characters with a seeded random keyed on (step, index); in HyperFrames run that function from the timeline time. Set duration, speed, characterSet and fire trigger at the frame the decode should start."},{"slug":"motionprimitives.text-roll","name":"text-roll","title":"Text Roll","summary":"Each letter flips over on its horizontal axis, rolling the word out and back in letter by letter","registry":"motion-primitives","framework":"react","layer":"primitive","category":"text-effects","tags":["text","roll","flip","letters","3d"],"aspect":"any","install":"npx motion-primitives@latest add text-roll","docs":"https://motion-primitives.com/docs/text-roll","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/text-roll.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/f8de63df5754/lib-motion-primitives-text-roll.webp","video":"https://s3.varg.ai/how-to/previews/7dd5fd71dadb/lib-motion-primitives-text-roll.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"adapt","prompt":"Roll a short brand word or headline with Motion Primitives' Text Roll (https://motion-primitives.com/docs/text-roll, MIT), set large in the center of the frame. Install with `npx motion-primitives@latest add text-roll`. Each letter has an exit and an enter copy that rotate on X with Motion, staggered by getEnterDelay and getExitDelay, so in Remotion compute each copy's rotateX and opacity from frame / fps minus its delay, and in HyperFrames build the same staggered flips on the paused timeline. Set duration, getEnterDelay, getExitDelay, transition and custom variants for the rotation."},{"slug":"motionprimitives.text-loop","name":"text-loop","title":"Text Loop","summary":"Words cycle in one spot, each sliding up and fading out as the next slides in from below","registry":"motion-primitives","framework":"react","layer":"primitive","category":"text-effects","tags":["text","loop","words","rotate","carousel"],"aspect":"any","install":"npx motion-primitives@latest add text-loop","docs":"https://motion-primitives.com/docs/text-loop","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/text-loop.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/151891ebd433/lib-motion-primitives-text-loop.webp","video":"https://s3.varg.ai/how-to/previews/e7e93a410b11/lib-motion-primitives-text-loop.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"adapt","prompt":"Cycle a list of words inside a sentence with Motion Primitives' Text Loop (https://motion-primitives.com/docs/text-loop, MIT), for lines like \"Made for ___\" in the middle of the frame. Install with `npx motion-primitives@latest add text-loop`. The index advances on a setInterval and AnimatePresence plays the swap, so in Remotion compute the current index from frame / fps ÷ interval and interpolate the outgoing and incoming word's y and opacity from the time within that slot; in HyperFrames sequence the swaps on the paused timeline. Set interval, transition, variants and mode, and pass one child per word."},{"slug":"motionprimitives.text-morph","name":"text-morph","title":"Text Morph","summary":"A button label morphs between two words, shared letters gliding into their new positions","registry":"motion-primitives","framework":"react","layer":"primitive","category":"text-effects","tags":["text","morph","button","label","layout"],"aspect":"any","install":"npx motion-primitives@latest add text-morph","docs":"https://motion-primitives.com/docs/text-morph","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/text-morph.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/5e273541cf23/lib-motion-primitives-text-morph.webp","video":"https://s3.varg.ai/how-to/previews/bae884c725f9/lib-motion-primitives-text-morph.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"adapt","prompt":"Morph a button or status label between two words with Motion Primitives' Text Morph (https://motion-primitives.com/docs/text-morph, MIT), e.g. Continue to Confirm in a product walkthrough, placed on the UI element. Install with `npx motion-primitives@latest add text-morph`. Letters are keyed with layoutId and moved by Motion layout animations, which measure the DOM at runtime, so for a render precompute each letter's start and end x, then interpolate position and opacity from frame / fps (Remotion), or tween them on the paused HyperFrames timeline. Change the text prop at the frame the morph should happen and tune transition and variants."},{"slug":"motionprimitives.animated-number","name":"animated-number","title":"Animated Number","summary":"A big monospace number springs up from zero to its target value, digits rolling as it climbs","registry":"motion-primitives","framework":"react","layer":"primitive","category":"stats","also":["text-effects"],"tags":["text","counter","number","stats","spring","ticker"],"aspect":"any","install":"npx motion-primitives@latest add animated-number","docs":"https://motion-primitives.com/docs/animated-number","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/animated-number.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/f4423076db6e/lib-motion-primitives-animated-number.webp","video":"https://s3.varg.ai/how-to/previews/0243438b160b/lib-motion-primitives-animated-number.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"adapt","prompt":"Count up a stat (users, stars, revenue) with Motion Primitives' Animated Number (https://motion-primitives.com/docs/animated-number, MIT), large and centered or in a stat card. Install with `npx motion-primitives@latest add animated-number`. The value follows a Motion useSpring, which runs on its own clock, so in Remotion compute the displayed number from frame / fps with interpolate or Remotion's spring() and format it with toLocaleString; in HyperFrames tween a number on the paused timeline and write it into the text. Set value, springOptions (bounce, duration) and a monospace class so the width stays steady."},{"slug":"motionprimitives.sliding-number","name":"sliding-number","title":"Sliding Number","summary":"Clock digits slide vertically into place as each second ticks over","registry":"motion-primitives","framework":"react","layer":"primitive","category":"stats","also":["text-effects"],"tags":["text","digits","clock","counter","odometer","number"],"aspect":"any","install":"npx motion-primitives@latest add sliding-number","docs":"https://motion-primitives.com/docs/sliding-number","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/sliding-number.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/9c369ebe95da/lib-motion-primitives-sliding-number.webp","video":"https://s3.varg.ai/how-to/previews/952535e7abc4/lib-motion-primitives-sliding-number.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"adapt","prompt":"Use Motion Primitives' Sliding Number (https://motion-primitives.com/docs/sliding-number, MIT) for a countdown, timer or odometer-style figure, set big in the frame. Install with `npx motion-primitives@latest add sliding-number`. Each digit is a column of 0 to 9 that a Motion spring scrolls to the target, so in Remotion compute the value from frame / fps and set each column's translateY from an interpolated or spring() progress for that frame; in HyperFrames tween the columns on the paused timeline. Set value, padStart and decimalSeparator, and use tabular or monospace digits."},{"slug":"motionprimitives.spinning-text","name":"spinning-text","title":"Spinning Text","summary":"A short phrase set around a circle rotates steadily, like a stamp badge","registry":"motion-primitives","framework":"react","layer":"component","category":"kinetic-type","also":["icons"],"tags":["element","circle","badge","rotate","stamp","text"],"aspect":"any","install":"npx motion-primitives@latest add spinning-text","docs":"https://motion-primitives.com/docs/spinning-text","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/spinning-text.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/4e7e99676891/lib-motion-primitives-spinning-text.webp","video":"https://s3.varg.ai/how-to/previews/d5d9c6305b1f/lib-motion-primitives-spinning-text.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"adapt","prompt":"Put Motion Primitives' Spinning Text (https://motion-primitives.com/docs/spinning-text, MIT) in a corner of the frame as a rotating badge (\"new drop • limited •\"), or around a logo. Install with `npx motion-primitives@latest add spinning-text`. The ring rotates with a linear Motion loop (repeat: Infinity), so set rotate to (frame / fps / duration) × 360 degrees in Remotion, or loop a rotation tween on the paused HyperFrames timeline. Set duration, radius, fontSize and reverse, and end the phrase with a separator so the loop reads cleanly."},{"slug":"motionprimitives.glow-effect","name":"glow-effect","title":"Glow Effect","summary":"A blurred multicolor glow behind a card or button, its hue shifting around the edges","registry":"motion-primitives","framework":"react","layer":"primitive","category":"entrances","tags":["element","glow","gradient","card","button","halo"],"aspect":"any","install":"npx motion-primitives@latest add glow-effect","docs":"https://motion-primitives.com/docs/glow-effect","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/glow-effect.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/b7b5a115b32f/lib-motion-primitives-glow-effect.webp","video":"https://s3.varg.ai/how-to/previews/988e698b6e8c/lib-motion-primitives-glow-effect.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"adapt","prompt":"Put Motion Primitives' Glow Effect (https://motion-primitives.com/docs/glow-effect, MIT) behind a product card, CTA button or app screenshot to make it pop off a dark frame. Install with `npx motion-primitives@latest add glow-effect`. Modes such as rotate, pulse, breathe, colorShift and flowHorizontal animate a gradient background with infinite Motion loops, so in Remotion compute the gradient angle, scale or opacity from frame / fps modulo duration, and in HyperFrames loop the same tween on the paused timeline (mode static needs nothing). Set colors, mode, blur (softest to strongest or a number), scale and duration."},{"slug":"motionprimitives.border-trail","name":"border-trail","title":"Border Trail","summary":"A short bright segment races around the border of a dark card in an endless loop","registry":"motion-primitives","framework":"react","layer":"primitive","category":"entrances","tags":["element","border","trail","card","loading","light"],"aspect":"any","install":"npx motion-primitives@latest add border-trail","docs":"https://motion-primitives.com/docs/border-trail","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/border-trail.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/b82d5c80cf22/lib-motion-primitives-border-trail.webp","video":"https://s3.varg.ai/how-to/previews/62707e85df32/lib-motion-primitives-border-trail.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"adapt","prompt":"Run Motion Primitives' Border Trail (https://motion-primitives.com/docs/border-trail, MIT) around a card, input or screenshot frame to show something is loading or to draw the eye. Install with `npx motion-primitives@latest add border-trail`. The light moves along the border with CSS offset-path while Motion animates offsetDistance from 0% to 100% on repeat, so set offsetDistance to ((frame / fps) / duration mod 1) × 100% in Remotion, or loop that tween on the paused HyperFrames timeline. Set size, the transition duration and the trail color through className (e.g. a bg gradient)."},{"slug":"motionprimitives.infinite-slider","name":"infinite-slider","title":"Infinite Slider","summary":"A row of logos glides sideways forever in a seamless loop","registry":"motion-primitives","framework":"react","layer":"component","category":"galleries","also":["social-proof"],"tags":["element","marquee","logos","slider","carousel","loop"],"aspect":"any","install":"npx motion-primitives@latest add infinite-slider","docs":"https://motion-primitives.com/docs/infinite-slider","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/infinite-slider.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/496b02c9cad5/lib-motion-primitives-infinite-slider.webp","video":"https://s3.varg.ai/how-to/previews/33926d9fc704/lib-motion-primitives-infinite-slider.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"adapt","prompt":"Run a strip of client logos or product thumbnails across the frame with Motion Primitives' Infinite Slider (https://motion-primitives.com/docs/infinite-slider, MIT), as a band in the lower third or behind a title. Install with `npx motion-primitives@latest add infinite-slider`. It measures the content and animates translateX with Motion's animate() on repeat, so in Remotion set translateX to -((frame / fps × speed) mod contentWidth) after measuring once, and in HyperFrames loop the same tween on the paused timeline. Set gap, speed, direction (horizontal or vertical) and reverse, and leave speedOnHover off."},{"slug":"motionprimitives.animated-background","name":"animated-background","title":"Animated Background","summary":"A rounded highlight pill slides between tab items as the active tab changes","registry":"motion-primitives","framework":"react","layer":"component","category":"mock-ui","tags":["element","tabs","highlight","pill","ui","layout"],"aspect":"any","install":"npx motion-primitives@latest add animated-background","docs":"https://motion-primitives.com/docs/animated-background","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/animated-background.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/c6b8c7601abf/lib-motion-primitives-animated-background.webp","video":"https://s3.varg.ai/how-to/previews/b3673d435c03/lib-motion-primitives-animated-background.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"adapt","prompt":"Show a navigation or tab switch in a UI walkthrough with Motion Primitives' Animated Background (https://motion-primitives.com/docs/animated-background, MIT): a highlight pill glides between items in a tab bar placed where the app shows it. Install with `npx motion-primitives@latest add animated-background`. The pill moves with a shared layoutId layout animation that measures the DOM at runtime, so for a render measure each tab's x and width once and interpolate the pill's position and width from frame / fps (Remotion), or tween it on the paused HyperFrames timeline. Set defaultValue, the transition (spring bounce and duration) and className for the pill color; keep enableHover off."},{"slug":"motionprimitives.animated-group","name":"animated-group","title":"Animated Group","summary":"A row of images pops in one after another, each scaling up from small with a short stagger","registry":"motion-primitives","framework":"react","layer":"primitive","category":"entrances","also":["galleries"],"tags":["element","stagger","group","entrance","images","grid"],"aspect":"any","install":"npx motion-primitives@latest add animated-group","docs":"https://motion-primitives.com/docs/animated-group","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/animated-group.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/f85dd9077189/lib-motion-primitives-animated-group.webp","video":"https://s3.varg.ai/how-to/previews/ecc2d653f7a3/lib-motion-primitives-animated-group.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"adapt","prompt":"Bring in a grid of product shots, features or logos with Motion Primitives' Animated Group (https://motion-primitives.com/docs/animated-group, MIT), filling the middle of the frame. Install with `npx motion-primitives@latest add animated-group`. Children get Motion variants with staggerChildren on mount, so in Remotion compute each child's opacity, scale, blur or y from frame / fps minus index × stagger, and in HyperFrames stagger the same tweens on the paused timeline. Pick a preset (fade, slide, scale, blur, blur-slide, zoom, flip, bounce, rotate, swing) or pass custom variants."},{"slug":"motionprimitives.progressive-blur","name":"progressive-blur","title":"Progressive Blur","summary":"A strip of content slides sideways and melts into soft stacked blur at both edges","registry":"motion-primitives","framework":"react","layer":"primitive","category":"filters","tags":["overlay","blur","fade","mask","edge"],"aspect":"any","install":"npx motion-primitives@latest add progressive-blur","docs":"https://motion-primitives.com/docs/progressive-blur","source":"https://github.com/ibelick/motion-primitives/blob/main/components/core/progressive-blur.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/73cdc65f740e/lib-motion-primitives-progressive-blur.webp","video":"https://s3.varg.ai/how-to/previews/da32d260e1e1/lib-motion-primitives-progressive-blur.mp4","credit":"Captured from the library’s own demo page (Motion Primitives)","note":"Live demo from the docs page, isolated and magnified (CSS zoom) for the preview"},"runs":"local","clock":"static","prompt":"Soften the edges of a marquee, image or caption block with Motion Primitives' Progressive Blur (https://motion-primitives.com/docs/progressive-blur, MIT): place an absolutely positioned ProgressiveBlur over the edge that should fade. Install with `npx motion-primitives@latest add progressive-blur`. It is a stack of backdrop-filter layers with gradient masks and has no clock of its own, so it renders the same on every frame in Remotion or HyperFrames; make sure the renderer supports backdrop-filter (headless Chrome does). Set direction (top, right, bottom, left), blurLayers and blurIntensity."},{"slug":"animata.glitch-text","name":"glitch-text","title":"Glitch text","summary":"White 404 on deep blue; magenta and cyan ghost copies snap sideways in brief glitch bursts","registry":"animata","framework":"react","layer":"primitive","category":"text-effects","tags":["text","glitch","rgb-split","error","tech","css-keyframes","titles"],"aspect":"any","install":"npx shadcn@latest add https://animata.design/r/text/glitch-text.json","docs":"https://animata.design/docs/text/glitch-text","source":"https://github.com/codse/animata/blob/main/animata/text/glitch-text.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/521d0af5e695/lib-animata-glitch-text.webp","video":"https://s3.varg.ai/how-to/previews/f0dc4104b6fb/lib-animata-glitch-text.mp4","credit":"Captured from the library’s own demo page (Animata)","note":"Live demo cropped from the Animata docs page"},"runs":"local","clock":"adapt","prompt":"Use Glitch text from Animata (https://animata.design/docs/text/glitch-text, MIT) for an error screen, a tech title or a hard-cut word, centred on a solid or starfield background. It stacks the label three times and jitters the two coloured ghosts with CSS keyframes on an endless cycle (--glitch-duration, 2.5 s by default). HyperFrames' CSS adapter can seek the keyframes once you give them a finite iteration count for the clip; in Remotion pause the ghost animations and set animation-delay to -(frame / fps)s so every frame shows the right offset. Props: intensity, step, duration, baseColor, colorA and colorB (brand accents), and blendMode normal on very dark backgrounds."},{"slug":"animata.soft-blur-in","name":"soft-blur-in","title":"Soft Blur In","summary":"A phrase fades up character by character out of a soft blur, holds, then drifts up and blurs away","registry":"animata","framework":"react","layer":"primitive","category":"text-effects","tags":["text","blur","text-reveal","per-character","keynote","titles","waapi"],"aspect":"any","install":"npx shadcn@latest add https://animata.design/r/text/soft-blur-in.json","docs":"https://animata.design/docs/text/soft-blur-in","source":"https://github.com/codse/animata/blob/main/animata/text/soft-blur-in.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/b64f584b0371/lib-animata-soft-blur-in.webp","video":"https://s3.varg.ai/how-to/previews/5f558997b818/lib-animata-soft-blur-in.mp4","credit":"Captured from the library’s own demo page (Animata)","note":"Live demo cropped from the Animata docs page"},"runs":"local","clock":"adapt","prompt":"Use Soft Blur In from Animata (https://animata.design/docs/text/soft-blur-in, MIT) for hero titles and chapter cards, centred in the frame. It runs on Animata's TextAnimator, which plays Web Animations per character and sequences enter, hold and exit with timers. For a render, drop the timers and build the same keyframes (opacity 0→1, y 16px→0, blur 12px→0, 900 ms, 25 ms stagger, ease-out cubic) as finite WAAPI animations or a GSAP stagger on HyperFrames' paused timeline; in Remotion compute each character's progress from (frame / fps - start - i * 0.025) / 0.9 with the same easing. Pass your phrases (an array cycles), and set the font, size and colour."},{"slug":"animata.kinetic-center-build","name":"kinetic-center-build","title":"Kinetic Center Build","summary":"Words arrive one at a time with a light blur, pushing the line along until the phrase sits centred","registry":"animata","framework":"react","layer":"primitive","category":"kinetic-type","also":["text-effects"],"tags":["text","kinetic-type","word-by-word","tagline","beat","waapi"],"aspect":"any","install":"npx shadcn@latest add https://animata.design/r/text/kinetic-center-build.json","docs":"https://animata.design/docs/text/kinetic-center-build","source":"https://github.com/codse/animata/blob/main/animata/text/kinetic-center-build.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/630fa0c3a5f4/lib-animata-kinetic-center-build.webp","video":"https://s3.varg.ai/how-to/previews/9fadd38e2164/lib-animata-kinetic-center-build.mp4","credit":"Captured from the library’s own demo page (Animata)","note":"Live demo cropped from the Animata docs page"},"runs":"local","clock":"adapt","prompt":"Use Kinetic Center Build from Animata (https://animata.design/docs/text/kinetic-center-build, MIT) for punchy taglines on a beat: the first word lands in the centre, each new word slides in from the right and nudges the line until the whole phrase is centred. Like the other TextAnimator effects it chains Web Animations with timers and measures word widths at runtime. For a render, measure the words once, give each word a start time on your beat grid, and compute its x, opacity and blur from time (about 360 ms per entrance, 3.5 px blur); in HyperFrames put those tweens on the paused timeline, in Remotion use interpolate on the frame. Set the phrases, the word timing, font and colour."},{"slug":"animata.per-character-rise","name":"per-character-rise","title":"Per-Character Rise","summary":"Letters slide up into place one after another with no blur, a crisp keynote-style reveal","registry":"animata","framework":"react","layer":"primitive","category":"text-effects","tags":["text","text-reveal","per-character","stagger","keynote","titles","waapi"],"aspect":"any","install":"npx shadcn@latest add https://animata.design/r/text/per-character-rise.json","docs":"https://animata.design/docs/text/per-character-rise","source":"https://github.com/codse/animata/blob/main/animata/text/per-character-rise.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/a9a01caddd00/lib-animata-per-character-rise.webp","video":"https://s3.varg.ai/how-to/previews/f20268cc1227/lib-animata-per-character-rise.mp4","credit":"Captured from the library’s own demo page (Animata)","note":"Live demo cropped from the Animata docs page"},"runs":"local","clock":"adapt","prompt":"Use Per-Character Rise from Animata (https://animata.design/docs/text/per-character-rise, MIT) for clean title reveals, centred or in the lower third. Each letter rises 32 px while fading in, 700 ms with a 24 ms stagger, and the TextAnimator engine plays it with Web Animations and timers, then exits upward. For a render, recreate it as a finite stagger on HyperFrames' paused timeline, or in Remotion compute each letter's y and opacity with interpolate(frame - start - i * staggerFrames, [0, durationFrames], [0, 1]) and an ease-out curve. Set the phrases, font weight, size and colour; heavier weights read better on phones."},{"slug":"animata.focus-blur-resolve","name":"focus-blur-resolve","title":"Focus Blur Resolve","summary":"A whole line pulls from heavy blur into sharp focus, rests, then softens and fades out","registry":"animata","framework":"react","layer":"primitive","category":"text-effects","tags":["text","blur","focus-pull","text-reveal","cinematic","titles","waapi"],"aspect":"any","install":"npx shadcn@latest add https://animata.design/r/text/focus-blur-resolve.json","docs":"https://animata.design/docs/text/focus-blur-resolve","source":"https://github.com/codse/animata/blob/main/animata/text/focus-blur-resolve.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/b0a807f14cc7/lib-animata-focus-blur-resolve.webp","video":"https://s3.varg.ai/how-to/previews/d85e5fcae0df/lib-animata-focus-blur-resolve.mp4","credit":"Captured from the library’s own demo page (Animata)","note":"Live demo cropped from the Animata docs page"},"runs":"local","clock":"adapt","prompt":"Use Focus Blur Resolve from Animata (https://animata.design/docs/text/focus-blur-resolve, MIT) for a cinematic title or quote, centred over footage or a dark plate. The whole line animates as one: blur 14px→0, y 14px→0, opacity 0→1 over 760 ms, then a 520 ms exit back into blur, sequenced by TextAnimator's timers around Web Animations. For a render, express it as two finite tweens on HyperFrames' paused timeline (enter at the clip start, exit before the cut), or in Remotion compute filter: blur() and opacity from interpolate on the frame with the same cubic-bezier easing. Set the phrases, hold time, font and colour."},{"slug":"animata.gibberish-text","name":"gibberish-text","title":"Gibberish Text","summary":"Each letter of a bold monospace word flickers through random capitals before settling on the real one","registry":"animata","framework":"react","layer":"primitive","category":"text-effects","tags":["text","scramble","decode","monospace","glitch","tech","titles"],"aspect":"any","install":"npx shadcn@latest add https://animata.design/r/text/gibberish-text.json","docs":"https://animata.design/docs/text/gibberish-text","source":"https://github.com/codse/animata/blob/main/animata/text/gibberish-text.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/fbd713ce8c09/lib-animata-gibberish-text.webp","video":"https://s3.varg.ai/how-to/previews/b93a62bcd92b/lib-animata-gibberish-text.mp4","credit":"Captured from the library’s own demo page (Animata)","note":"Live demo cropped from the Animata docs page"},"runs":"local","clock":"adapt","prompt":"Use Gibberish Text from Animata (https://animata.design/docs/text/gibberish-text, MIT) for a decode-style word, centred or as a label over a product shot. Each letter runs its own setInterval that swaps in random capitals (Math.random) a random number of times before showing the real letter, so no two runs match. For a render, give letter i a fixed settle time from a seeded random and, before that time, show a capital chosen by a seeded hash of (i, frame); t comes from frame / fps in Remotion or the timeline time in HyperFrames. Set the text, a monospace font and the settle window (around 0.5–1 s)."},{"slug":"animata.wave-reveal","name":"wave-reveal","title":"Wave Reveal","summary":"Large letters drop into place one after another in a wave, each settling out of a short slide","registry":"animata","framework":"react","layer":"primitive","category":"text-effects","tags":["text","text-reveal","wave","stagger","letters","css-keyframes","titles"],"aspect":"any","install":"npx shadcn@latest add https://animata.design/r/text/wave-reveal.json","docs":"https://animata.design/docs/text/wave-reveal","source":"https://github.com/codse/animata/blob/main/animata/text/wave-reveal.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/f562e52a8cca/lib-animata-wave-reveal.webp","video":"https://s3.varg.ai/how-to/previews/6a9b00ad72ee/lib-animata-wave-reveal.mp4","credit":"Captured from the library’s own demo page (Animata)","note":"Live demo cropped from the Animata docs page"},"runs":"local","clock":"adapt","prompt":"Use Wave Reveal from Animata (https://animata.design/docs/text/wave-reveal, MIT) for a headline that builds letter by letter or word by word, centred in the frame. It splits the text and plays a CSS keyframe per piece with an increasing animation-delay, with direction (up or down), mode (letter or word), duration, delay and an optional blur. HyperFrames' CSS adapter can seek these keyframes as they are, as long as the element mounts with the clip; in Remotion pause the animations and set each piece's animation-delay to (its delay - frame / fps) seconds. Set text, direction, mode, duration and blur, and use a bold display font."},{"slug":"animata.typing-text","name":"typing-text","title":"Typing Text","summary":"A shell prompt types out a command in amber monospace, holds, erases it and types it again","registry":"animata","framework":"react","layer":"primitive","category":"text-effects","tags":["text","typewriter","terminal","cli","typing","cursor","monospace"],"aspect":"any","install":"npx shadcn@latest add https://animata.design/r/text/typing-text.json","docs":"https://animata.design/docs/text/typing-text","source":"https://github.com/codse/animata/blob/main/animata/text/typing-text.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/0800858f9fb8/lib-animata-typing-text.webp","video":"https://s3.varg.ai/how-to/previews/d1edd587a45e/lib-animata-typing-text.mp4","credit":"Captured from the library’s own demo page (Animata)","note":"Live demo cropped from the Animata docs page"},"runs":"local","clock":"adapt","prompt":"Use Typing Text from Animata (https://animata.design/docs/text/typing-text, MIT) for a command line, a search box or a typed caption. It adds one character per `delay` ms with setInterval, waits `waitTime`, and with repeat on erases and types again, all on wall time. For a render, compute the visible count from time: n = clamp(floor((t - start) * 1000 / delay), 0, text.length), mirrored for the erase phase when repeat is on, and blink the cursor from floor(t * 2); t is frame / fps in Remotion or the timeline time in HyperFrames. Set text, delay, repeat, waitTime, smooth and hideCursorOnComplete, and the colours of the prompt."},{"slug":"animata.counter","name":"counter","title":"Counter","summary":"A bold number spins up from zero and slows to a stop on its target","registry":"animata","framework":"react","layer":"primitive","category":"stats","also":["text-effects"],"tags":["text","counter","count-up","stats","numbers","kpi","spring"],"aspect":"any","install":"npx shadcn@latest add https://animata.design/r/text/counter.json","docs":"https://animata.design/docs/text/counter","source":"https://github.com/codse/animata/blob/main/animata/text/counter.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/4074754e043f/lib-animata-counter.webp","video":"https://s3.varg.ai/how-to/previews/58bc7a7564c2/lib-animata-counter.mp4","credit":"Captured from the library’s own demo page (Animata)","note":"Live demo cropped from the Animata docs page"},"runs":"local","clock":"adapt","prompt":"Use Counter from Animata (https://animata.design/docs/text/counter, MIT) for a stat beat: one big number in the centre with a caption. It drives a motion spring (damping 60, stiffness 80) toward targetValue once the element is in view, after an optional delay, so it starts on wall time. For a render, compute the number from the frame: in Remotion value = targetValue * spring({ frame: frame - delayFrames, fps, config: { damping: 60, stiffness: 80 } }) (reversed for direction \"down\"); in HyperFrames tween an object on the paused timeline and write the rounded value in onUpdate. Set targetValue, direction and delay, format with Intl.NumberFormat, and use tabular figures."},{"slug":"animata.text-flip","name":"text-flip","title":"Text Flip","summary":"\"Coding is\" stays put while the blue word after it flips up through a list on a loop","registry":"animata","framework":"react","layer":"primitive","category":"text-effects","tags":["text","rotating-words","flip","headline","css-keyframes","cycle"],"aspect":"any","install":"npx shadcn@latest add https://animata.design/r/text/text-flip.json","docs":"https://animata.design/docs/text/text-flip","source":"https://github.com/codse/animata/blob/main/animata/text/text-flip.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/fef095aed117/lib-animata-text-flip.webp","video":"https://s3.varg.ai/how-to/previews/3c7580f39b41/lib-animata-text-flip.mp4","credit":"Captured from the library’s own demo page (Animata)","note":"Live demo cropped from the Animata docs page"},"runs":"local","clock":"adapt","prompt":"Use Text Flip from Animata (https://animata.design/docs/text/text-flip, MIT) for a headline with one changing word, centred or as a lower third. The words sit in a clipped column that a CSS keyframe (animate-flip-words) slides upward step by step, forever; the column height is measured once on mount. HyperFrames' CSS adapter can seek it once the iteration count is finite; in Remotion pause the animation and set animation-delay to -(frame / fps)s, or compute translateY per word slot yourself. Edit the words array (repeat the first word at the end for a clean loop), the lead-in text, colours and size."},{"slug":"animata.animated-beam","name":"animated-beam","title":"Animated Beam","summary":"Indigo backdrop with faint diagonal lines and thin light beams streaking down them at different speeds","registry":"animata","framework":"react","layer":"component","category":"backgrounds","tags":["background","beams","streaks","lines","dark","hero","css-keyframes"],"aspect":"any","install":"npx shadcn@latest add https://animata.design/r/background/animated-beam.json","docs":"https://animata.design/docs/background/animated-beam","source":"https://github.com/codse/animata/blob/main/animata/background/animated-beam.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/f8d93722491c/lib-animata-animated-beam.webp","video":"https://s3.varg.ai/how-to/previews/d0c5088ccbb9/lib-animata-animated-beam.mp4","credit":"Captured from the library’s own demo page (Animata)","note":"Live demo cropped from the Animata docs page"},"runs":"local","clock":"adapt","prompt":"Use Animated Beam from Animata (https://animata.design/docs/background/animated-beam, MIT) as a full-frame hero background with a title or quote on top. Each beam is a clipped strip running a CSS keyframe with its own --duration and --delay; those come from a seeded pseudo-random per index, so the layout is already repeatable and only the clock needs fixing. HyperFrames' CSS adapter can seek the keyframes once the iteration count is finite; in Remotion pause them and set animation-delay to (delay - frame / fps) seconds. Change the background gradient, beam colour and count, and keep text in the centre where the beams are sparse."},{"slug":"animata.shooting-stars","name":"shooting-stars","title":"Shooting Stars","summary":"Deep blue night sky with twinkling stars and bright streaks shooting across at different angles","registry":"animata","framework":"react","layer":"component","category":"particles","also":["backgrounds"],"tags":["background","night-sky","stars","shooting-stars","space","dreamy"],"aspect":"any","install":"npx shadcn@latest add https://animata.design/r/background/shooting-stars.json","docs":"https://animata.design/docs/background/shooting-stars","source":"https://github.com/codse/animata/blob/main/animata/background/shooting-stars.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/120f5e714bfd/lib-animata-shooting-stars.webp","video":"https://s3.varg.ai/how-to/previews/67a4a39c466e/lib-animata-shooting-stars.mp4","credit":"Captured from the library’s own demo page (Animata)","note":"Live demo cropped from the Animata docs page"},"runs":"local","clock":"adapt","prompt":"Use Shooting Stars from Animata (https://animata.design/docs/background/shooting-stars, MIT) as a full-frame night-sky backdrop for a wish, a launch or a dreamy title. Stars twinkle and streaks fly on CSS keyframes, but their positions, angles, lengths and delays come from Math.random, and each streak is re-rolled in JS when its animation ends. For a render, generate the stars and a fixed list of streaks from a seeded random covering the clip, then compute each streak's travel and fade from (frame / fps - delay) / duration; in HyperFrames put them on the paused timeline as finite tweens. Change the sky gradient, star density, streak count and the accent colours."},{"slug":"animata.boids-ecosystem","name":"boids-ecosystem","title":"Boids Ecosystem","summary":"Hundreds of tiny coloured triangles flocking across a dark canvas like a school of fish","registry":"animata","framework":"react","layer":"component","category":"particles","also":["generative"],"tags":["background","boids","flocking","simulation","canvas","generative","particles"],"aspect":"any","install":"npx shadcn@latest add https://animata.design/r/background/boids-ecosystem.json","docs":"https://animata.design/docs/background/boids-ecosystem","source":"https://github.com/codse/animata/blob/main/animata/background/boids-ecosystem.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/defc018c4fac/lib-animata-boids-ecosystem.webp","video":"https://s3.varg.ai/how-to/previews/6d7d12232b20/lib-animata-boids-ecosystem.mp4","credit":"Captured from the library’s own demo page (Animata)","note":"Live demo cropped from the Animata docs page"},"runs":"local","clock":"adapt","prompt":"Use Boids Ecosystem from Animata (https://animata.design/docs/background/boids-ecosystem, MIT) as a living generative background behind a title or data story. It is a canvas flocking simulation (separation, alignment, cohesion) stepped in requestAnimationFrame from random start positions, and it reacts to the cursor, so frames can't be sought directly. For a render, seed the starting flock, remove the cursor input, and step the simulation a fixed number of ticks per video frame from frame 0 (cache the states so a seek replays from the nearest cached tick); drive it from frame / fps in Remotion or the timeline time in HyperFrames. Set count, palette (brand colours), background, agentShape and attractors to steer the flock around text."},{"slug":"animata.orbiting-items-3-d","name":"orbiting-items-3-d","title":"Orbiting Items 3D","summary":"Glassy icon bubbles circle a glowing purple orb on a tilted ellipse, growing as they swing to the front","registry":"animata","framework":"react","layer":"component","category":"diagrams","also":["three-d"],"tags":["element","orbit","3d","icons","integrations","glassmorphism","hero"],"aspect":"any","install":"npx shadcn@latest add https://animata.design/r/list/orbiting-items-3-d.json","docs":"https://animata.design/docs/list/orbiting-items-3-d","source":"https://github.com/codse/animata/blob/main/animata/list/orbiting-items-3-d.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/3ba83afc5fe2/lib-animata-orbiting-items-3-d.webp","video":"https://s3.varg.ai/how-to/previews/e19d693edb08/lib-animata-orbiting-items-3-d.mp4","credit":"Captured from the library’s own demo page (Animata)","note":"Live demo cropped from the Animata docs page"},"runs":"local","clock":"adapt","prompt":"Use Orbiting Items 3D from Animata (https://animata.design/docs/list/orbiting-items-3-d, MIT) around a product icon or logo in the centre of the frame, with partner or feature icons on the orbit. Each item advances one degree per setInterval tick and eases its position with CSS transitions, so the speed depends on timers. For a render, compute the angle from time, angle = startAngle + 360 * t / period, then apply the component's own maths (ellipse radiusX/radiusY, tiltAngle rotation, bigger scale and higher z-index on the front half) without transitions; t is frame / fps in Remotion or the timeline time in HyperFrames. Set radiusX, radiusY, tiltAngle, duration and the centre element."},{"slug":"animata.circular-text","name":"circular-text","title":"Circular Text","summary":"Small white capitals set around a ring that turns slowly, like a spinning badge or stamp","registry":"animata","framework":"react","layer":"primitive","category":"kinetic-type","also":["icons"],"tags":["text","circular-text","badge","ring","rotate","stamp","logo"],"aspect":"any","install":"npx shadcn@latest add https://animata.design/r/text/circular-text.json","docs":"https://animata.design/docs/text/circular-text","source":"https://github.com/codse/animata/blob/main/animata/text/circular-text.tsx","license":"MIT","preview":{"poster":"https://s3.varg.ai/how-to/previews/29339b3ea80d/lib-animata-circular-text.webp","video":"https://s3.varg.ai/how-to/previews/c90463cb27fa/lib-animata-circular-text.mp4","credit":"Captured from the library’s own demo page (Animata)","note":"Live demo cropped from the Animata docs page, spin duration set to 8 s in the page's props editor"},"runs":"local","clock":"adapt","prompt":"Use Circular Text from Animata (https://animata.design/docs/text/circular-text, MIT) as a rotating badge: a short line such as \"NEW DROP • LIMITED •\" circling a logo, a price or a play button, placed in a corner or next to the product. Each character is placed around the circle with rotate(angle) translateY(-radius), and motion spins the whole ring 360° every spinDuration seconds on an endless repeat, which runs on wall time. For a render, set the ring's rotation yourself: rotate = 360 * ((frame / fps) / spinDuration % 1) in Remotion, or a linear rotation tween with a finite repeat on HyperFrames' paused timeline. Set text (end it with a separator so the loop closes), spinDuration (8–12 s reads well), radius, font size and colour."},{"slug":"heropatterns.topography","name":"topography","title":"Topography","summary":"Wavy contour lines like a topographic map, tiled seamlessly over a solid color","registry":"hero-patterns","framework":"html","layer":"component","category":"backgrounds","also":["textures"],"tags":["pattern","map","contour","lines","outdoor","svg","cc-by-4.0"],"aspect":"any","install":"curl -LO https://heropatterns.com/svg/topography.zip","docs":"https://heropatterns.com","source":"https://heropatterns.com/svg/topography.zip","license":"CC BY 4.0","preview":{"poster":"https://s3.varg.ai/how-to/previews/76de6eb10e5c/lib-hero-patterns-topography.webp","credit":"Rendered by varg from the library’s own code (Hero Patterns by Steve Schoger · rendered by varg)","note":"\"Topography\" tile from heropatterns.com, recolored #7DD3FC at 0.5 opacity on #0B1220, tile scale 1×, 960×540. Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0."},"runs":"local","clock":"static","prompt":"Use the \"Topography\" pattern from Hero Patterns by Steve Schoger (https://heropatterns.com, CC BY 4.0: attribution required, so add \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" to the video description or end credits) as the background of a travel, hiking or outdoor title card. On heropatterns.com click Topography, set the foreground to #7DD3FC at 50% opacity on a #0B1220 background and copy the generated CSS (the unstyled SVG tile is at https://heropatterns.com/svg/topography.zip); or `npm i hero-patterns` (a community MIT wrapper) and use `topography('#7DD3FC', 0.5)` as the background-image. Put it on a full-frame layer behind the content, repeating, and scale the tile with background-size. The tile is 600 px, so it never looks repetitive. The pattern is static. To give it motion, drift it seek-safe: set background-position from the frame (Remotion: `${frame * 0.4}px ${frame * 0.2}px`; HyperFrames: tween backgroundPosition on the paused GSAP timeline), never with a CSS animation. Where text sits on top, drop the opacity to 10–25%."},{"slug":"heropatterns.jigsaw","name":"jigsaw","title":"Jigsaw","summary":"Interlocking jigsaw-puzzle outlines covering the frame in a seamless grid","registry":"hero-patterns","framework":"html","layer":"component","category":"backgrounds","also":["textures"],"tags":["pattern","puzzle","outline","playful","grid","svg","cc-by-4.0"],"aspect":"any","install":"curl -LO https://heropatterns.com/svg/jigsaw.zip","docs":"https://heropatterns.com","source":"https://heropatterns.com/svg/jigsaw.zip","license":"CC BY 4.0","preview":{"poster":"https://s3.varg.ai/how-to/previews/f114ac692fcb/lib-hero-patterns-jigsaw.webp","credit":"Rendered by varg from the library’s own code (Hero Patterns by Steve Schoger · rendered by varg)","note":"\"Jigsaw\" tile from heropatterns.com, recolored #B45309 at 0.45 opacity on #FEF3C7, tile scale 1×, 960×540. Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0."},"runs":"local","clock":"static","prompt":"Use the \"Jigsaw\" pattern from Hero Patterns by Steve Schoger (https://heropatterns.com, CC BY 4.0: attribution required, so add \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" to the video description or end credits) as the background of a \"how it fits together\" explainer or a game promo. On heropatterns.com click Jigsaw, set the foreground to #B45309 at 45% opacity on a #FEF3C7 background and copy the generated CSS (the unstyled SVG tile is at https://heropatterns.com/svg/jigsaw.zip); or `npm i hero-patterns` (a community MIT wrapper) and use `jigsaw('#B45309', 0.45)` as the background-image. Put it on a full-frame layer behind the content, repeating, and scale the tile with background-size. Scale the 192 px tile to 1.5× in 1080×1920 so the knobs read on a phone. The pattern is static. To give it motion, drift it seek-safe: set background-position from the frame (Remotion: `${frame * 0.4}px ${frame * 0.2}px`; HyperFrames: tween backgroundPosition on the paused GSAP timeline), never with a CSS animation. Where text sits on top, drop the opacity to 10–25%."},{"slug":"heropatterns.overcast","name":"overcast","title":"Overcast","summary":"Beveled square panels, each holding a slashed circle, tiled like embossed metal plates","registry":"hero-patterns","framework":"html","layer":"component","category":"backgrounds","also":["textures"],"tags":["pattern","bevel","squares","industrial","grid","svg","cc-by-4.0"],"aspect":"any","install":"curl -LO https://heropatterns.com/svg/overcast.zip","docs":"https://heropatterns.com","source":"https://heropatterns.com/svg/overcast.zip","license":"CC BY 4.0","preview":{"poster":"https://s3.varg.ai/how-to/previews/741cc7914605/lib-hero-patterns-overcast.webp","credit":"Rendered by varg from the library’s own code (Hero Patterns by Steve Schoger · rendered by varg)","note":"\"Overcast\" tile from heropatterns.com, recolored #FFFFFF at 0.18 opacity on #1E3A8A, tile scale 1.5×, 960×540. Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0."},"runs":"local","clock":"static","prompt":"Use the \"Overcast\" pattern from Hero Patterns by Steve Schoger (https://heropatterns.com, CC BY 4.0: attribution required, so add \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" to the video description or end credits) as the background of a tech or hardware product intro. On heropatterns.com click Overcast, set the foreground to #FFFFFF at 18% opacity on a #1E3A8A background and copy the generated CSS (the unstyled SVG tile is at https://heropatterns.com/svg/overcast.zip); or `npm i hero-patterns` (a community MIT wrapper) and use `overcast('#FFFFFF', 0.18)` as the background-image. Put it on a full-frame layer behind the content, repeating, and scale the tile with background-size. Light foreground at low opacity on a saturated background gives the embossed look. The pattern is static. To give it motion, drift it seek-safe: set background-position from the frame (Remotion: `${frame * 0.4}px ${frame * 0.2}px`; HyperFrames: tween backgroundPosition on the paused GSAP timeline), never with a CSS animation. Where text sits on top, drop the opacity to 10–25%."},{"slug":"heropatterns.formal-invitation","name":"formal-invitation","title":"Formal Invitation","summary":"Bold parallel wave bands, like the lining of a formal invitation envelope","registry":"hero-patterns","framework":"html","layer":"component","category":"backgrounds","also":["textures"],"tags":["pattern","waves","stripes","elegant","luxury","svg","cc-by-4.0"],"aspect":"any","install":"curl -LO https://heropatterns.com/svg/formal-invitation.zip","docs":"https://heropatterns.com","source":"https://heropatterns.com/svg/formal-invitation.zip","license":"CC BY 4.0","preview":{"poster":"https://s3.varg.ai/how-to/previews/fc49a3c32b12/lib-hero-patterns-formal-invitation.webp","credit":"Rendered by varg from the library’s own code (Hero Patterns by Steve Schoger · rendered by varg)","note":"\"Formal Invitation\" tile from heropatterns.com, recolored #D4AF37 at 0.5 opacity on #111827, tile scale 2×, 960×540. Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0."},"runs":"local","clock":"static","prompt":"Use the \"Formal Invitation\" pattern from Hero Patterns by Steve Schoger (https://heropatterns.com, CC BY 4.0: attribution required, so add \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" to the video description or end credits) as the background of an event invite, a wedding save-the-date or a luxury product card. On heropatterns.com click Formal Invitation, set the foreground to #D4AF37 at 50% opacity on a #111827 background and copy the generated CSS (the unstyled SVG tile is at https://heropatterns.com/svg/formal-invitation.zip); or `npm i hero-patterns` (a community MIT wrapper) and use `formalInvitation('#D4AF37', 0.5)` as the background-image. Put it on a full-frame layer behind the content, repeating, and scale the tile with background-size. Gold on near-black reads as premium; the 100×18 tile needs 2× scale or more on video. The pattern is static. To give it motion, drift it seek-safe: set background-position from the frame (Remotion: `${frame * 0.4}px ${frame * 0.2}px`; HyperFrames: tween backgroundPosition on the paused GSAP timeline), never with a CSS animation. Where text sits on top, drop the opacity to 10–25%."},{"slug":"heropatterns.bubbles","name":"bubbles","title":"Bubbles","summary":"Scattered dots and rings of different sizes, like rising soda bubbles","registry":"hero-patterns","framework":"html","layer":"component","category":"backgrounds","also":["textures"],"tags":["pattern","bubbles","dots","light","fresh","svg","cc-by-4.0"],"aspect":"any","install":"curl -LO https://heropatterns.com/svg/bubbles.zip","docs":"https://heropatterns.com","source":"https://heropatterns.com/svg/bubbles.zip","license":"CC BY 4.0","preview":{"poster":"https://s3.varg.ai/how-to/previews/2c21eaa16fe9/lib-hero-patterns-bubbles.webp","credit":"Rendered by varg from the library’s own code (Hero Patterns by Steve Schoger · rendered by varg)","note":"\"Bubbles\" tile from heropatterns.com, recolored #0891B2 at 0.35 opacity on #ECFEFF, tile scale 1.5×, 960×540. Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0."},"runs":"local","clock":"static","prompt":"Use the \"Bubbles\" pattern from Hero Patterns by Steve Schoger (https://heropatterns.com, CC BY 4.0: attribution required, so add \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" to the video description or end credits) as the background of a drinks, skincare or kids product spot. On heropatterns.com click Bubbles, set the foreground to #0891B2 at 35% opacity on a #ECFEFF background and copy the generated CSS (the unstyled SVG tile is at https://heropatterns.com/svg/bubbles.zip); or `npm i hero-patterns` (a community MIT wrapper) and use `bubbles('#0891B2', 0.35)` as the background-image. Put it on a full-frame layer behind the content, repeating, and scale the tile with background-size. An upward drift sells the bubbles (move background-position on y only). The pattern is static. To give it motion, drift it seek-safe: set background-position from the frame (Remotion: `${frame * 0.4}px ${frame * 0.2}px`; HyperFrames: tween backgroundPosition on the paused GSAP timeline), never with a CSS animation. Where text sits on top, drop the opacity to 10–25%."},{"slug":"heropatterns.wiggle","name":"wiggle","title":"Wiggle","summary":"Rows of short squiggly lines running diagonally across the frame","registry":"hero-patterns","framework":"html","layer":"component","category":"backgrounds","also":["textures"],"tags":["pattern","squiggle","lines","playful","pop","svg","cc-by-4.0"],"aspect":"any","install":"curl -LO https://heropatterns.com/svg/wiggle.zip","docs":"https://heropatterns.com","source":"https://heropatterns.com/svg/wiggle.zip","license":"CC BY 4.0","preview":{"poster":"https://s3.varg.ai/how-to/previews/4df317ddb3df/lib-hero-patterns-wiggle.webp","credit":"Rendered by varg from the library’s own code (Hero Patterns by Steve Schoger · rendered by varg)","note":"\"Wiggle\" tile from heropatterns.com, recolored #DB2777 at 0.5 opacity on #FDF2F8, tile scale 2×, 960×540. Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0."},"runs":"local","clock":"static","prompt":"Use the \"Wiggle\" pattern from Hero Patterns by Steve Schoger (https://heropatterns.com, CC BY 4.0: attribution required, so add \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" to the video description or end credits) as the background of a playful social post or a lower third. On heropatterns.com click Wiggle, set the foreground to #DB2777 at 50% opacity on a #FDF2F8 background and copy the generated CSS (the unstyled SVG tile is at https://heropatterns.com/svg/wiggle.zip); or `npm i hero-patterns` (a community MIT wrapper) and use `wiggle('#DB2777', 0.5)` as the background-image. Put it on a full-frame layer behind the content, repeating, and scale the tile with background-size. The tile is only 52×26, so scale it 2–3× for video. The pattern is static. To give it motion, drift it seek-safe: set background-position from the frame (Remotion: `${frame * 0.4}px ${frame * 0.2}px`; HyperFrames: tween backgroundPosition on the paused GSAP timeline), never with a CSS animation. Where text sits on top, drop the opacity to 10–25%."},{"slug":"heropatterns.circuit-board","name":"circuit-board","title":"Circuit Board","summary":"Dense traces and pads of a printed circuit board, tiled edge to edge","registry":"hero-patterns","framework":"html","layer":"component","category":"backgrounds","also":["textures"],"tags":["pattern","circuit","tech","electronics","lines","svg","cc-by-4.0"],"aspect":"any","install":"curl -LO https://heropatterns.com/svg/circuit-board.zip","docs":"https://heropatterns.com","source":"https://heropatterns.com/svg/circuit-board.zip","license":"CC BY 4.0","preview":{"poster":"https://s3.varg.ai/how-to/previews/f3aebb985cf6/lib-hero-patterns-circuit-board.webp","credit":"Rendered by varg from the library’s own code (Hero Patterns by Steve Schoger · rendered by varg)","note":"\"Circuit Board\" tile from heropatterns.com, recolored #4ADE80 at 0.35 opacity on #052E16, tile scale 1×, 960×540. Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0."},"runs":"local","clock":"static","prompt":"Use the \"Circuit Board\" pattern from Hero Patterns by Steve Schoger (https://heropatterns.com, CC BY 4.0: attribution required, so add \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" to the video description or end credits) as the background of a tech explainer, an AI feature launch or a hacker title card. On heropatterns.com click Circuit Board, set the foreground to #4ADE80 at 35% opacity on a #052E16 background and copy the generated CSS (the unstyled SVG tile is at https://heropatterns.com/svg/circuit-board.zip); or `npm i hero-patterns` (a community MIT wrapper) and use `circuitBoard('#4ADE80', 0.35)` as the background-image. Put it on a full-frame layer behind the content, repeating, and scale the tile with background-size. Green on deep green reads as a PCB; cyan on navy as sci-fi. The pattern is static. To give it motion, drift it seek-safe: set background-position from the frame (Remotion: `${frame * 0.4}px ${frame * 0.2}px`; HyperFrames: tween backgroundPosition on the paused GSAP timeline), never with a CSS animation. Where text sits on top, drop the opacity to 10–25%."},{"slug":"heropatterns.hexagons","name":"hexagons","title":"Hexagons","summary":"A honeycomb of thin hexagon outlines","registry":"hero-patterns","framework":"html","layer":"component","category":"backgrounds","also":["textures"],"tags":["pattern","hexagon","honeycomb","geometric","tech","svg","cc-by-4.0"],"aspect":"any","install":"curl -LO https://heropatterns.com/svg/hexagons.zip","docs":"https://heropatterns.com","source":"https://heropatterns.com/svg/hexagons.zip","license":"CC BY 4.0","preview":{"poster":"https://s3.varg.ai/how-to/previews/3e2ef90f25a6/lib-hero-patterns-hexagons.webp","credit":"Rendered by varg from the library’s own code (Hero Patterns by Steve Schoger · rendered by varg)","note":"\"Hexagons\" tile from heropatterns.com, recolored #A5B4FC at 0.4 opacity on #1E1B4B, tile scale 2×, 960×540. Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0."},"runs":"local","clock":"static","prompt":"Use the \"Hexagons\" pattern from Hero Patterns by Steve Schoger (https://heropatterns.com, CC BY 4.0: attribution required, so add \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" to the video description or end credits) as the background of a science, crypto or data-driven explainer. On heropatterns.com click Hexagons, set the foreground to #A5B4FC at 40% opacity on a #1E1B4B background and copy the generated CSS (the unstyled SVG tile is at https://heropatterns.com/svg/hexagons.zip); or `npm i hero-patterns` (a community MIT wrapper) and use `hexagons('#A5B4FC', 0.4)` as the background-image. Put it on a full-frame layer behind the content, repeating, and scale the tile with background-size. The 28×49 tile is small; 2× keeps the cells readable at 1080 wide. The pattern is static. To give it motion, drift it seek-safe: set background-position from the frame (Remotion: `${frame * 0.4}px ${frame * 0.2}px`; HyperFrames: tween backgroundPosition on the paused GSAP timeline), never with a CSS animation. Where text sits on top, drop the opacity to 10–25%."},{"slug":"heropatterns.graph-paper","name":"graph-paper","title":"Graph Paper","summary":"A fine graph-paper grid with a darker line every tenth square","registry":"hero-patterns","framework":"html","layer":"component","category":"backgrounds","also":["textures"],"tags":["pattern","grid","graph-paper","blueprint","education","svg","cc-by-4.0"],"aspect":"any","install":"curl -LO https://heropatterns.com/svg/graph-paper.zip","docs":"https://heropatterns.com","source":"https://heropatterns.com/svg/graph-paper.zip","license":"CC BY 4.0","preview":{"poster":"https://s3.varg.ai/how-to/previews/791c08f21a6c/lib-hero-patterns-graph-paper.webp","credit":"Rendered by varg from the library’s own code (Hero Patterns by Steve Schoger · rendered by varg)","note":"\"Graph Paper\" tile from heropatterns.com, recolored #2563EB at 0.45 opacity on #F8FAFC, tile scale 1.5×, 960×540. Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0."},"runs":"local","clock":"static","prompt":"Use the \"Graph Paper\" pattern from Hero Patterns by Steve Schoger (https://heropatterns.com, CC BY 4.0: attribution required, so add \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" to the video description or end credits) as the background of a tutorial, a math or engineering explainer, or a chart scene. On heropatterns.com click Graph Paper, set the foreground to #2563EB at 45% opacity on a #F8FAFC background and copy the generated CSS (the unstyled SVG tile is at https://heropatterns.com/svg/graph-paper.zip); or `npm i hero-patterns` (a community MIT wrapper) and use `graphPaper('#2563EB', 0.45)` as the background-image. Put it on a full-frame layer behind the content, repeating, and scale the tile with background-size. White lines on blue turn it into a blueprint. The pattern is static. To give it motion, drift it seek-safe: set background-position from the frame (Remotion: `${frame * 0.4}px ${frame * 0.2}px`; HyperFrames: tween backgroundPosition on the paused GSAP timeline), never with a CSS animation. Where text sits on top, drop the opacity to 10–25%."},{"slug":"heropatterns.floating-cogs","name":"floating-cogs","title":"Floating Cogs","summary":"Gears and cogs of different sizes scattered across the frame","registry":"hero-patterns","framework":"html","layer":"component","category":"backgrounds","also":["textures"],"tags":["pattern","gears","cogs","mechanical","workflow","svg","cc-by-4.0"],"aspect":"any","install":"curl -LO https://heropatterns.com/svg/floating-cogs.zip","docs":"https://heropatterns.com","source":"https://heropatterns.com/svg/floating-cogs.zip","license":"CC BY 4.0","preview":{"poster":"https://s3.varg.ai/how-to/previews/6b864c499f49/lib-hero-patterns-floating-cogs.webp","credit":"Rendered by varg from the library’s own code (Hero Patterns by Steve Schoger · rendered by varg)","note":"\"Floating Cogs\" tile from heropatterns.com, recolored #FB923C at 0.35 opacity on #292524, tile scale 1×, 960×540. Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0."},"runs":"local","clock":"static","prompt":"Use the \"Floating Cogs\" pattern from Hero Patterns by Steve Schoger (https://heropatterns.com, CC BY 4.0: attribution required, so add \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" to the video description or end credits) as the background of a \"how it works\" or automation explainer. On heropatterns.com click Floating Cogs, set the foreground to #FB923C at 35% opacity on a #292524 background and copy the generated CSS (the unstyled SVG tile is at https://heropatterns.com/svg/floating-cogs.zip); or `npm i hero-patterns` (a community MIT wrapper) and use `floatingCogs('#FB923C', 0.35)` as the background-image. Put it on a full-frame layer behind the content, repeating, and scale the tile with background-size. Pair it with a slow diagonal drift so the gears seem to float past. The pattern is static. To give it motion, drift it seek-safe: set background-position from the frame (Remotion: `${frame * 0.4}px ${frame * 0.2}px`; HyperFrames: tween backgroundPosition on the paused GSAP timeline), never with a CSS animation. Where text sits on top, drop the opacity to 10–25%."},{"slug":"heropatterns.charlie-brown","name":"charlie-brown","title":"Charlie Brown","summary":"Tight zigzag chevron stripes, like the stripe on a famous cartoon shirt","registry":"hero-patterns","framework":"html","layer":"component","category":"backgrounds","also":["textures"],"tags":["pattern","zigzag","chevron","stripes","retro","svg","cc-by-4.0"],"aspect":"any","install":"curl -LO https://heropatterns.com/svg/charlie-brown.zip","docs":"https://heropatterns.com","source":"https://heropatterns.com/svg/charlie-brown.zip","license":"CC BY 4.0","preview":{"poster":"https://s3.varg.ai/how-to/previews/941de9b0b836/lib-hero-patterns-charlie-brown.webp","credit":"Rendered by varg from the library’s own code (Hero Patterns by Steve Schoger · rendered by varg)","note":"\"Charlie Brown\" tile from heropatterns.com, recolored #111827 at 0.6 opacity on #FDE047, tile scale 3×, 960×540. Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0."},"runs":"local","clock":"static","prompt":"Use the \"Charlie Brown\" pattern from Hero Patterns by Steve Schoger (https://heropatterns.com, CC BY 4.0: attribution required, so add \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" to the video description or end credits) as the background of a retro or comic-style title card. On heropatterns.com click Charlie Brown, set the foreground to #111827 at 60% opacity on a #FDE047 background and copy the generated CSS (the unstyled SVG tile is at https://heropatterns.com/svg/charlie-brown.zip); or `npm i hero-patterns` (a community MIT wrapper) and use `charlieBrown('#111827', 0.6)` as the background-image. Put it on a full-frame layer behind the content, repeating, and scale the tile with background-size. The 20×12 tile needs 3× or more on video, or the zigzag shimmers after compression. The pattern is static. To give it motion, drift it seek-safe: set background-position from the frame (Remotion: `${frame * 0.4}px ${frame * 0.2}px`; HyperFrames: tween backgroundPosition on the paused GSAP timeline), never with a CSS animation. Where text sits on top, drop the opacity to 10–25%."},{"slug":"heropatterns.i-like-food","name":"i-like-food","title":"I Like Food","summary":"Line icons of burgers, fries, ice cream, tacos and drinks repeated in a grid","registry":"hero-patterns","framework":"html","layer":"component","category":"backgrounds","also":["textures"],"tags":["pattern","food","icons","doodle","restaurant","svg","cc-by-4.0"],"aspect":"any","install":"curl -LO https://heropatterns.com/svg/i-like-food.zip","docs":"https://heropatterns.com","source":"https://heropatterns.com/svg/i-like-food.zip","license":"CC BY 4.0","preview":{"poster":"https://s3.varg.ai/how-to/previews/d87b98e27dcc/lib-hero-patterns-i-like-food.webp","credit":"Rendered by varg from the library’s own code (Hero Patterns by Steve Schoger · rendered by varg)","note":"\"I Like Food\" tile from heropatterns.com, recolored #EA580C at 0.4 opacity on #FFF7ED, tile scale 1×, 960×540. Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0."},"runs":"local","clock":"static","prompt":"Use the \"I Like Food\" pattern from Hero Patterns by Steve Schoger (https://heropatterns.com, CC BY 4.0: attribution required, so add \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" to the video description or end credits) as the background of a restaurant, delivery or recipe video. On heropatterns.com click I Like Food, set the foreground to #EA580C at 40% opacity on a #FFF7ED background and copy the generated CSS (the unstyled SVG tile is at https://heropatterns.com/svg/i-like-food.zip); or `npm i hero-patterns` (a community MIT wrapper) and use `iLikeFood('#EA580C', 0.4)` as the background-image. Put it on a full-frame layer behind the content, repeating, and scale the tile with background-size. Keep it behind a solid panel where text sits; the icons are busy. The pattern is static. To give it motion, drift it seek-safe: set background-position from the frame (Remotion: `${frame * 0.4}px ${frame * 0.2}px`; HyperFrames: tween backgroundPosition on the paused GSAP timeline), never with a CSS animation. Where text sits on top, drop the opacity to 10–25%."},{"slug":"heropatterns.brick-wall","name":"brick-wall","title":"Brick Wall","summary":"Running-bond brick courses with thin mortar lines","registry":"hero-patterns","framework":"html","layer":"component","category":"backgrounds","also":["textures"],"tags":["pattern","brick","wall","urban","texture","svg","cc-by-4.0"],"aspect":"any","install":"curl -LO https://heropatterns.com/svg/brick-wall.zip","docs":"https://heropatterns.com","source":"https://heropatterns.com/svg/brick-wall.zip","license":"CC BY 4.0","preview":{"poster":"https://s3.varg.ai/how-to/previews/b4a5fcde500a/lib-hero-patterns-brick-wall.webp","credit":"Rendered by varg from the library’s own code (Hero Patterns by Steve Schoger · rendered by varg)","note":"\"Brick Wall\" tile from heropatterns.com, recolored #FED7AA at 0.22 opacity on #7C2D12, tile scale 2×, 960×540. Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0."},"runs":"local","clock":"static","prompt":"Use the \"Brick Wall\" pattern from Hero Patterns by Steve Schoger (https://heropatterns.com, CC BY 4.0: attribution required, so add \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" to the video description or end credits) as the background of a street, music or urban-style scene. On heropatterns.com click Brick Wall, set the foreground to #FED7AA at 22% opacity on a #7C2D12 background and copy the generated CSS (the unstyled SVG tile is at https://heropatterns.com/svg/brick-wall.zip); or `npm i hero-patterns` (a community MIT wrapper) and use `brickWall('#FED7AA', 0.22)` as the background-image. Put it on a full-frame layer behind the content, repeating, and scale the tile with background-size. A low-opacity light mortar on brick red looks closest to a real wall. The pattern is static. To give it motion, drift it seek-safe: set background-position from the frame (Remotion: `${frame * 0.4}px ${frame * 0.2}px`; HyperFrames: tween backgroundPosition on the paused GSAP timeline), never with a CSS animation. Where text sits on top, drop the opacity to 10–25%."},{"slug":"heropatterns.endless-clouds","name":"endless-clouds","title":"Endless Clouds","summary":"Stacked overlapping arcs, like stylized clouds or Japanese wave scales","registry":"hero-patterns","framework":"html","layer":"component","category":"backgrounds","also":["textures"],"tags":["pattern","clouds","waves","scales","calm","svg","cc-by-4.0"],"aspect":"any","install":"curl -LO https://heropatterns.com/svg/endless-clouds.zip","docs":"https://heropatterns.com","source":"https://heropatterns.com/svg/endless-clouds.zip","license":"CC BY 4.0","preview":{"poster":"https://s3.varg.ai/how-to/previews/a3d3032e6435/lib-hero-patterns-endless-clouds.webp","credit":"Rendered by varg from the library’s own code (Hero Patterns by Steve Schoger · rendered by varg)","note":"\"Endless Clouds\" tile from heropatterns.com, recolored #0369A1 at 0.35 opacity on #E0F2FE, tile scale 1.5×, 960×540. Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0."},"runs":"local","clock":"static","prompt":"Use the \"Endless Clouds\" pattern from Hero Patterns by Steve Schoger (https://heropatterns.com, CC BY 4.0: attribution required, so add \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" to the video description or end credits) as the background of a calm, Japanese-inspired or sky-themed scene. On heropatterns.com click Endless Clouds, set the foreground to #0369A1 at 35% opacity on a #E0F2FE background and copy the generated CSS (the unstyled SVG tile is at https://heropatterns.com/svg/endless-clouds.zip); or `npm i hero-patterns` (a community MIT wrapper) and use `endlessClouds('#0369A1', 0.35)` as the background-image. Put it on a full-frame layer behind the content, repeating, and scale the tile with background-size. A slow horizontal drift makes the clouds roll. The pattern is static. To give it motion, drift it seek-safe: set background-position from the frame (Remotion: `${frame * 0.4}px ${frame * 0.2}px`; HyperFrames: tween backgroundPosition on the paused GSAP timeline), never with a CSS animation. Where text sits on top, drop the opacity to 10–25%."},{"slug":"heropatterns.moroccan","name":"moroccan","title":"Moroccan","summary":"Ornate Moroccan lantern outlines locked together in a lattice","registry":"hero-patterns","framework":"html","layer":"component","category":"backgrounds","also":["textures"],"tags":["pattern","moroccan","lattice","ornament","luxury","svg","cc-by-4.0"],"aspect":"any","install":"curl -LO https://heropatterns.com/svg/moroccan.zip","docs":"https://heropatterns.com","source":"https://heropatterns.com/svg/moroccan.zip","license":"CC BY 4.0","preview":{"poster":"https://s3.varg.ai/how-to/previews/31c735889edb/lib-hero-patterns-moroccan.webp","credit":"Rendered by varg from the library’s own code (Hero Patterns by Steve Schoger · rendered by varg)","note":"\"Moroccan\" tile from heropatterns.com, recolored #FDE68A at 0.35 opacity on #134E4A, tile scale 1.5×, 960×540. Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0."},"runs":"local","clock":"static","prompt":"Use the \"Moroccan\" pattern from Hero Patterns by Steve Schoger (https://heropatterns.com, CC BY 4.0: attribution required, so add \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" to the video description or end credits) as the background of a travel, interior design or hospitality video. On heropatterns.com click Moroccan, set the foreground to #FDE68A at 35% opacity on a #134E4A background and copy the generated CSS (the unstyled SVG tile is at https://heropatterns.com/svg/moroccan.zip); or `npm i hero-patterns` (a community MIT wrapper) and use `moroccan('#FDE68A', 0.35)` as the background-image. Put it on a full-frame layer behind the content, repeating, and scale the tile with background-size. Gold on teal or ivory on terracotta suits the motif. The pattern is static. To give it motion, drift it seek-safe: set background-position from the frame (Remotion: `${frame * 0.4}px ${frame * 0.2}px`; HyperFrames: tween backgroundPosition on the paused GSAP timeline), never with a CSS animation. Where text sits on top, drop the opacity to 10–25%."}],"genres":[{"id":"product-launch","title":"Product launch film","group":"marketing","summary":"The launch video for a product or a startup: hook, problem, features on real screens, proof, call to action.","output":"16:9 · 30–90 s","aspects":["16:9","1:1"],"input":"Product name, three features, screenshots or a live URL","recipe":[{"beat":"Hook","categories":["intros","kinetic-type"]},{"beat":"Problem","categories":["headlines","text-effects"]},{"beat":"Features","categories":["showcases","devices","mock-ui","cursors"]},{"beat":"Proof","categories":["stats","social-proof"]},{"beat":"Call to action","categories":["outros","logos"]}],"across":["transitions","backgrounds","themes"],"skills":["guizang-product-video","onetake","business-motion-film","inference-sh-ai-marketing-videos"],"templates":["remocn.launch-anything","hf.product-promo"],"queries":["product launch video","launch video for my startup","saas promo","видео запуска продукта","промо стартапа"],"useCase":"launch-video"},{"id":"feature-announcement","title":"Feature announcement","group":"marketing","summary":"One new feature, shown working: the name, the click that matters, the benefit, where to try it.","output":"16:9 or 1:1 · 15–45 s","aspects":["16:9","1:1"],"input":"A changelog line and a screen recording","recipe":[{"beat":"Announce","categories":["title-cards","kinetic-type"]},{"beat":"Demo","categories":["mock-ui","cursors","camera"]},{"beat":"Benefit","categories":["headlines","stats"]},{"beat":"Try it","categories":["outros"]}],"across":["transitions","themes"],"skills":["guizang-product-video","remotion-saas","want-floating-ui-cards-promo"],"templates":["remocn.release-teaser"],"queries":["feature announcement video","new feature video","анонс фичи","видео про новую функцию"],"example":false,"useCase":"launch-video"},{"id":"app-promo","title":"App promo & App Store preview","group":"marketing","summary":"An app sold on its own screens: devices, flows, ratings and the download badge.","output":"9:16 · 15–30 s","aspects":["9:16","16:9"],"input":"App screens or a screen recording","recipe":[{"beat":"Hook","categories":["intros","headlines"]},{"beat":"Screens","categories":["devices","mock-ui","cursors"]},{"beat":"Features","categories":["lists","icons"]},{"beat":"Rating","categories":["social-proof"]},{"beat":"Download","categories":["outros"]}],"across":["transitions","backgrounds"],"skills":["iphone-duo-fold","hyperframes-duo","inference-sh-app-store-screenshots","aso-appstore-screenshots","want-app-pov-device-demo"],"templates":["varg.iphone-duo-fold"],"queries":["app store preview video","app promo video","mobile app ad","промо приложения","видео для app store"],"useCase":"app-demo-video"},{"id":"ugc-overlay-ad","title":"UGC ad with overlays","group":"marketing","summary":"Creator footage made to perform: a hook line, word captions, callouts on the product, an offer and a CTA.","output":"9:16 · 15–45 s","aspects":["9:16"],"input":"Creator footage and its transcript","recipe":[{"beat":"Hook","categories":["headlines","captions"]},{"beat":"Story","categories":["captions","annotations","icons"]},{"beat":"Product","categories":["showcases","comparisons"]},{"beat":"Offer","categories":["offers","timers"]},{"beat":"Call to action","categories":["outros"]}],"across":["captions","filters"],"skills":["varg-studio-ugc-ads","fal-ugc","varg-studio-ad-hooks","want-talking-head-sticker-edit"],"queries":["ugc ad","creator ad with captions","tiktok ad","югс реклама","реклама с блогером"],"useCase":"ugc-ad"},{"id":"ad-variants","title":"Ad variants for testing","group":"marketing","summary":"One ad rendered as dozens: every hook, size and offer from a spreadsheet, same structure.","output":"9:16 · 1:1 · 4:5 · 6–30 s","aspects":["9:16","1:1","4:5"],"input":"One ad plus a CSV of hooks, offers and sizes","recipe":[{"beat":"Hook variant","categories":["headlines","kinetic-type","intros"]},{"beat":"Body","categories":["showcases","captions"]},{"beat":"Offer","categories":["offers"]},{"beat":"Call to action","categories":["outros"]}],"across":["themes","utilities","layouts"],"skills":["fal-marketing","krea-marketing","varg-studio-ad-hooks"],"queries":["ad variations","creative testing variants","resize ad to all formats","варианты креативов","a/b тест креативов"],"example":false,"useCase":"ad-variants"},{"id":"offer-promo","title":"Sale & offer promo","group":"marketing","summary":"A price that drops, a code to copy and a clock that runs out.","output":"9:16 · 1:1 · 6–15 s","aspects":["9:16","1:1"],"input":"Price, discount, code and deadline","recipe":[{"beat":"Hook","categories":["kinetic-type"]},{"beat":"Price drop","categories":["offers","stats"]},{"beat":"Deadline","categories":["timers"]},{"beat":"Call to action","categories":["outros"]}],"across":["particles","backgrounds"],"templates":["remocn.fomo-limit-orders"],"queries":["sale promo video","discount video","black friday video","видео со скидкой","промо распродажи"]},{"id":"testimonial-ad","title":"Testimonial & review ad","group":"marketing","summary":"A real review read over the product: the quote, the stars, the numbers behind it.","output":"9:16 · 15–30 s","aspects":["9:16","1:1"],"input":"A review, a rating and a product shot","recipe":[{"beat":"Quote","categories":["headlines","social-proof"]},{"beat":"Proof","categories":["stats","social-cards"]},{"beat":"Product","categories":["showcases"]},{"beat":"Call to action","categories":["outros"]}],"across":["captions","textures"],"skills":["varg-studio-social-proof"],"queries":["testimonial video","review ad","customer quote video","видео с отзывом","отзывы клиентов видео"]},{"id":"comparison-ad","title":"Us vs them & before / after","group":"marketing","summary":"Your product next to the usual way: a split frame, the numbers that differ, the switch.","output":"9:16 · 1:1 · 10–30 s","aspects":["9:16","1:1"],"input":"Two options and the claims that separate them","recipe":[{"beat":"Setup","categories":["headlines"]},{"beat":"Split","categories":["comparisons","layouts"]},{"beat":"Numbers","categories":["charts","stats"]},{"beat":"Call to action","categories":["outros"]}],"across":["transitions"],"skills":["varg-studio-us-vs-them","varg-studio-before-after"],"queries":["us vs them ad","before and after video","comparison video","сравнение с конкурентом","до и после"]},{"id":"notes-ad","title":"Notes-app ad","group":"marketing","summary":"A message typed live in Apple Notes — the native look that reads as a friend, not an ad.","output":"9:16 · 10–30 s","aspects":["9:16"],"input":"The text, line by line","recipe":[{"beat":"Typing","categories":["mock-ui","text-effects"]},{"beat":"Punchline","categories":["headlines"]},{"beat":"Call to action","categories":["outros"]}],"skills":["gooseworks-apple-notes-ads","want-notes-app-ad"],"templates":["varg.apple-notes-video"],"queries":["apple notes ad","notes app video","реклама в заметках","видео в стиле заметок iphone"],"useCase":"notes-app-ad"},{"id":"captioned-clip","title":"Captioned talking clip","group":"social","summary":"Someone talking to camera, made watchable on mute: word captions, name tag, emphasis and punch-ins.","output":"9:16 · 15–90 s","aspects":["9:16","1:1"],"input":"Footage and a word-timed transcript","recipe":[{"beat":"Hook","categories":["headlines","captions"]},{"beat":"Talk","categories":["captions","lower-thirds","annotations"]},{"beat":"Emphasis","categories":["icons","entrances","camera"]},{"beat":"Follow","categories":["social-cards","outros"]}],"across":["captions","filters"],"skills":["agent-caption","iart-caption-animation","remotion-captions","cinematic-caption-audrey","hyperframes-camera-3d-captions","clipify"],"queries":["add captions to my video","tiktok captions","subtitles for reels","субтитры для рилс","видео с субтитрами"],"useCase":"captions"},{"id":"faceless-explainer","title":"Faceless narrated video","group":"social","summary":"A voiceover carried by type, images and captions — no presenter, all code and stock.","output":"9:16 or 16:9 · 30–180 s","aspects":["9:16","16:9"],"input":"A script and a voiceover","recipe":[{"beat":"Hook","categories":["headlines","kinetic-type"]},{"beat":"Narration","categories":["captions","galleries","camera"]},{"beat":"Points","categories":["lists","annotations"]},{"beat":"Outro","categories":["outros"]}],"across":["captions","textures","beat-sync"],"skills":["krea-faceless-video","explainroo","hyperframes-vox-explainer"],"queries":["faceless youtube video","narrated explainer","фейслес видео","видео без лица с озвучкой"],"useCase":"faceless-video"},{"id":"listicle","title":"Top-N listicle","group":"social","summary":"A countdown of items, each with an image, a number and one line, ending on the winner.","output":"9:16 · 20–60 s","aspects":["9:16"],"input":"A list of items with images","recipe":[{"beat":"Title","categories":["title-cards"]},{"beat":"Items","categories":["lists","galleries","stats"]},{"beat":"Winner","categories":["entrances","particles"]},{"beat":"Follow","categories":["outros"]}],"across":["captions","transitions"],"queries":["top 10 video","listicle video","ranking video","топ 10 видео","рейтинг видео"]},{"id":"story-narration","title":"Post-story narration","group":"social","summary":"A Reddit or forum post read aloud over looping gameplay, the post card first, captions throughout.","output":"9:16 · 60–180 s","aspects":["9:16"],"input":"A post and background footage","recipe":[{"beat":"Post","categories":["social-cards"]},{"beat":"Story","categories":["captions","layouts"]},{"beat":"Twist","categories":["headlines"]},{"beat":"Follow","categories":["outros"]}],"across":["captions"],"queries":["reddit story video","story with gameplay background","реддит история видео","озвучка истории с геймплеем"]},{"id":"chat-story","title":"Text-message story","group":"social","summary":"A story told as a message thread: bubbles arrive, typing dots tease, the last text lands.","output":"9:16 · 15–60 s","aspects":["9:16"],"input":"A chat script (who says what, when)","recipe":[{"beat":"Thread","categories":["chats","devices"]},{"beat":"Typing","categories":["text-effects","cursors"]},{"beat":"Reveal","categories":["headlines"]},{"beat":"Call to action","categories":["outros"]}],"skills":["varg-imessage-video"],"queries":["imessage video","fake text conversation video","переписка видео","видео переписки"],"useCase":"chat-story"},{"id":"post-to-video","title":"Post to video","group":"social","summary":"A tweet, a thread or a comment turned into a clip: the card, the highlight, the reaction.","output":"9:16 · 1:1 · 8–20 s","aspects":["9:16","1:1"],"input":"A post URL","recipe":[{"beat":"Post","categories":["social-cards"]},{"beat":"Highlight","categories":["annotations","captions"]},{"beat":"Reactions","categories":["social-proof","stats"]},{"beat":"Follow","categories":["outros"]}],"skills":["hyperframes-x-posting-license"],"queries":["tweet to video","turn a post into a video","твит в видео","пост в видео"]},{"id":"quiz","title":"Quiz, poll & would-you-rather","group":"social","summary":"A question, options, a ticking clock and the reveal — interactive in a feed that is not.","output":"9:16 · 15–45 s","aspects":["9:16"],"input":"Questions and answers as JSON","recipe":[{"beat":"Question","categories":["headlines","kinetic-type"]},{"beat":"Options","categories":["lists","comparisons"]},{"beat":"Countdown","categories":["timers"]},{"beat":"Answer","categories":["entrances","particles"]},{"beat":"Score","categories":["stats"]}],"across":["beat-sync"],"queries":["quiz video","would you rather video","trivia shorts","видео викторина","квиз для тикток"]},{"id":"meme","title":"Meme format","group":"social","summary":"A known meme with your product as the punchline: setup, beat, payoff.","output":"9:16 · 1:1 · 5–15 s","aspects":["9:16","1:1"],"input":"A setup and a punchline","recipe":[{"beat":"Setup","categories":["headlines","galleries"]},{"beat":"Punchline","categories":["kinetic-type","entrances"]},{"beat":"Brand","categories":["logos"]}],"skills":["varg-studio-memes","want-squish-inflate-gags"],"queries":["meme video","brand meme","мем видео","мемы для бренда"]},{"id":"channel-intro","title":"Channel intro & end screen","group":"social","summary":"The few seconds every video shares: the opener, the name tag, the subscribe nudge and the end screen.","output":"16:9 · 5–20 s","aspects":["16:9"],"input":"Channel name, logo and handle","recipe":[{"beat":"Intro","categories":["intros","logos"]},{"beat":"Name tag","categories":["lower-thirds"]},{"beat":"Subscribe","categories":["social-cards"]},{"beat":"End screen","categories":["outros"]}],"across":["transitions","particles"],"queries":["youtube intro","channel outro end screen","интро для ютуба","заставка канала"]},{"id":"changelog","title":"Changelog & release notes","group":"product","summary":"A release as a video: version, what changed, the one change worth seeing, how to upgrade.","output":"16:9 · 30–60 s","aspects":["16:9","1:1"],"input":"Release notes or CHANGELOG.md","recipe":[{"beat":"Version","categories":["title-cards","kinetic-type"]},{"beat":"Changes","categories":["lists","code","mock-ui"]},{"beat":"Highlight","categories":["showcases","cursors"]},{"beat":"Upgrade","categories":["code","outros"]}],"across":["transitions","themes"],"skills":["guizang-product-video","remotion-saas"],"templates":["remocn.release-teaser","remocn.workflow-console"],"queries":["changelog video","release notes video","видео ченджлог","видео о релизе"],"useCase":"changelog-video"},{"id":"pr-video","title":"Pull request to video","group":"product","summary":"A merged PR explained: the title, the diff that matters, before and after, the people who shipped it.","output":"16:9 · 20–45 s","aspects":["16:9"],"input":"A GitHub PR (title, description, diff)","recipe":[{"beat":"Title","categories":["title-cards"]},{"beat":"Diff","categories":["code","annotations"]},{"beat":"Before / after","categories":["comparisons","mock-ui"]},{"beat":"Shipped","categories":["social-proof","stats"]}],"across":["transitions"],"skills":["hyperframes"],"queries":["github pr video","pull request video","видео из пулл реквеста"],"example":false,"useCase":"changelog-video"},{"id":"code-walkthrough","title":"Code walkthrough","group":"product","summary":"Code read on screen: files open, lines light up, the camera follows the logic, the result runs.","output":"16:9 · 30–120 s","aspects":["16:9"],"input":"A repo or a set of files","recipe":[{"beat":"Intro","categories":["title-cards"]},{"beat":"Code","categories":["code","annotations","camera"]},{"beat":"Run","categories":["code","mock-ui"]},{"beat":"Recap","categories":["lists"]}],"across":["captions"],"skills":["claude-code-video-toolkit"],"queries":["code walkthrough video","explain code video","видео разбор кода"]},{"id":"terminal-demo","title":"CLI & terminal demo","group":"product","summary":"A command line tool in action: the command types, the output streams, the result lands.","output":"16:9 · 15–40 s","aspects":["16:9","1:1"],"input":"Commands and their real output","recipe":[{"beat":"Command","categories":["code","cursors"]},{"beat":"Output","categories":["code","text-effects"]},{"beat":"Result","categories":["showcases","stats"]},{"beat":"Install","categories":["code","outros"]}],"across":["themes"],"templates":["remocn.workflow-console"],"queries":["terminal demo video","cli demo","видео демо терминала"]},{"id":"website-to-video","title":"Website to video","group":"product","summary":"A live site turned into a promo: the hero in a browser frame, scroll-throughs, features, the CTA.","output":"16:9 or 9:16 · 15–60 s","aspects":["16:9","9:16"],"input":"A URL","recipe":[{"beat":"Hero","categories":["devices","camera"]},{"beat":"Sections","categories":["mock-ui","cursors","camera"]},{"beat":"Features","categories":["showcases"]},{"beat":"Call to action","categories":["outros"]}],"across":["transitions","themes"],"skills":["hyperframes","motion-ai-kit"],"queries":["website to video","turn my landing page into a video","сайт в видео","видео из лендинга"],"example":"hyperframes","useCase":"explainer-video"},{"id":"app-walkthrough","title":"App walkthrough & onboarding","group":"product","summary":"How to do one thing in the app, step by step, with taps, zooms and callouts.","output":"9:16 or 16:9 · 20–90 s","aspects":["9:16","16:9"],"input":"A screen recording or screens","recipe":[{"beat":"Open","categories":["devices"]},{"beat":"Flow","categories":["mock-ui","cursors","steps"]},{"beat":"Zoom","categories":["camera","annotations"]},{"beat":"Done","categories":["outros"]}],"across":["captions"],"skills":["iphone-duo-fold","hyperframes-duo"],"templates":["varg.iphone-duo-fold"],"queries":["app walkthrough video","onboarding video","how to use the app video","видео инструкция приложения"],"useCase":"app-demo-video"},{"id":"ai-demo","title":"AI chat & agent demo","group":"product","summary":"An AI product shown the way people meet it: a prompt typed, the answer streaming, the result.","output":"9:16 or 16:9 · 15–45 s","aspects":["9:16","16:9"],"input":"A prompt and a real answer","recipe":[{"beat":"Prompt","categories":["chats","text-effects"]},{"beat":"Thinking","categories":["timers","code"]},{"beat":"Answer","categories":["chats","showcases"]},{"beat":"Call to action","categories":["outros"]}],"queries":["ai chat demo video","chatgpt style answer video","agent demo","демо ии чата"]},{"id":"docs-explainer","title":"API & docs explainer","group":"product","summary":"A concept from the docs drawn as a system: parts, flow, the code that calls it.","output":"16:9 · 30–90 s","aspects":["16:9"],"input":"A docs page","recipe":[{"beat":"Concept","categories":["title-cards","diagrams"]},{"beat":"Example","categories":["code"]},{"beat":"Flow","categories":["diagrams","steps"]},{"beat":"Next","categories":["outros"]}],"across":["themes"],"templates":["hf.decision-tree"],"queries":["api explainer video","docs to video","видео объяснение апи"]},{"id":"data-story","title":"Data story","group":"data","summary":"One question answered with a chart that builds, annotations that point, a number that sticks.","output":"16:9 or 9:16 · 30–90 s","aspects":["16:9","9:16"],"input":"A CSV or JSON","recipe":[{"beat":"Question","categories":["headlines"]},{"beat":"Chart","categories":["charts","annotations"]},{"beat":"Insight","categories":["stats","kinetic-type"]},{"beat":"Source","categories":["text-effects"]}],"across":["transitions","themes"],"skills":["want-data-story-explainer"],"templates":["hf.nyt-graph"],"queries":["data story video","animated chart video","видео с графиками","инфографика видео"],"useCase":"data-video"},{"id":"chart-race","title":"Bar chart race","group":"data","summary":"Rankings over time: bars overtake each other while a year ticks.","output":"16:9 · 20–60 s","aspects":["16:9","9:16"],"input":"A time series CSV","recipe":[{"beat":"Title","categories":["title-cards"]},{"beat":"Race","categories":["charts","timers"]},{"beat":"Winner","categories":["stats","particles"]}],"across":["beat-sync"],"queries":["bar chart race","racing bar chart video","гонка графиков"],"useCase":"data-video"},{"id":"map-story","title":"Map & route animation","group":"data","summary":"Places on a map: a camera flies in, a route draws, numbers land on the regions.","output":"16:9 or 9:16 · 10–60 s","aspects":["16:9","9:16"],"input":"GeoJSON or a list of places","recipe":[{"beat":"Locate","categories":["maps","camera"]},{"beat":"Route","categories":["maps","annotations"]},{"beat":"Numbers","categories":["stats","charts"]},{"beat":"Outro","categories":["outros"]}],"across":["transitions"],"skills":["remotion-maps","want-earth-zoom-out"],"queries":["map animation","route animation video","анимация карты","анимация маршрута"]},{"id":"news-explainer","title":"News explainer","group":"data","summary":"A story in 60 seconds: the headline, the context on a map, the numbers, what it means.","output":"9:16 or 16:9 · 30–90 s","aspects":["9:16","16:9"],"input":"An article","recipe":[{"beat":"Headline","categories":["headlines","hud"]},{"beat":"Context","categories":["galleries","maps","annotations"]},{"beat":"Numbers","categories":["stats","charts"]},{"beat":"Takeaway","categories":["lists"]}],"across":["captions","lower-thirds"],"queries":["news explainer video","article to video","новостное видео","статья в видео"]},{"id":"wrapped","title":"Year in review / Wrapped","group":"data","summary":"A person’s own numbers as a story: top stats, top lists, a persona, a card to share.","output":"9:16 · 30–60 s","aspects":["9:16"],"input":"A user’s stats as JSON","recipe":[{"beat":"Intro","categories":["intros","kinetic-type"]},{"beat":"Top stats","categories":["stats","charts"]},{"beat":"Top lists","categories":["lists","galleries"]},{"beat":"Persona","categories":["headlines","backgrounds"]},{"beat":"Share","categories":["social-cards"]}],"across":["beat-sync","shaders","transitions"],"queries":["spotify wrapped style video","year in review video","итоги года видео","персональные итоги"]},{"id":"sports-recap","title":"Scores & match recap","group":"data","summary":"The result first, then the moments and the table: built from a match feed.","output":"9:16 or 16:9 · 15–60 s","aspects":["9:16","16:9"],"input":"A match data feed","recipe":[{"beat":"Scoreboard","categories":["hud","stats"]},{"beat":"Highlights","categories":["galleries","annotations"]},{"beat":"Standings","categories":["charts","lists"]},{"beat":"Next game","categories":["timers"]}],"across":["transitions"],"queries":["sports recap video","match score video","итоги матча видео"]},{"id":"daily-update","title":"Daily market or weather update","group":"data","summary":"The same video every morning with new numbers: rendered from an API, no editing.","output":"9:16 or 16:9 · 15–45 s","aspects":["9:16","16:9"],"input":"An API feed (prices, weather, metrics)","recipe":[{"beat":"Date","categories":["title-cards"]},{"beat":"Numbers","categories":["stats","charts"]},{"beat":"Movers","categories":["lists","hud"]},{"beat":"Outlook","categories":["headlines"]}],"across":["lower-thirds","themes","utilities"],"queries":["daily stock update video","weather video automation","ежедневная сводка видео"]},{"id":"math-animation","title":"Math animation","group":"education","summary":"3Blue1Brown-style: shapes construct the idea, equations transform step by step.","output":"16:9 · 30–300 s","aspects":["16:9"],"input":"The equations and the steps","recipe":[{"beat":"Question","categories":["headlines"]},{"beat":"Construction","categories":["diagrams","annotations","generative"]},{"beat":"Steps","categories":["steps","text-effects"]},{"beat":"Result","categories":["kinetic-type"]}],"across":["captions"],"skills":["manim-skill"],"queries":["math animation","3blue1brown style video","анимация математики"]},{"id":"diagram-explainer","title":"Diagram explainer","group":"education","summary":"How a system works: parts appear, arrows flow, the camera zooms where it matters.","output":"16:9 · 30–120 s","aspects":["16:9","9:16"],"input":"A description of the system","recipe":[{"beat":"Parts","categories":["diagrams","icons"]},{"beat":"Flow","categories":["diagrams","steps","cursors"]},{"beat":"Zoom","categories":["camera","annotations"]},{"beat":"Summary","categories":["lists"]}],"across":["captions","themes"],"templates":["hf.decision-tree"],"queries":["how it works video","diagram animation","схема анимация","видео как это работает"],"useCase":"explainer-video"},{"id":"whiteboard","title":"Whiteboard & hand-drawn","group":"education","summary":"Ideas drawn as they are said: ink lines, scribbled arrows, handwritten titles.","output":"16:9 or 9:16 · 30–120 s","aspects":["16:9","9:16"],"input":"A script","recipe":[{"beat":"Title","categories":["annotations","text-effects"]},{"beat":"Sketch","categories":["annotations","generative"]},{"beat":"Points","categories":["lists"]},{"beat":"Recap","categories":["headlines"]}],"across":["textures","captions"],"skills":["story-to-handdrawn-video","hyperframes-day-in-my-life","hyperframes-p5-paint-animation"],"queries":["whiteboard animation","hand drawn explainer","рисованное видео","дудл видео"],"useCase":"explainer-video"},{"id":"tutorial","title":"Step-by-step tutorial","group":"education","summary":"A how-to with numbered steps, the screen, the click, the tip, the finished result.","output":"16:9 or 9:16 · 30–180 s","aspects":["16:9","9:16"],"input":"Steps and a screen recording","recipe":[{"beat":"Goal","categories":["title-cards"]},{"beat":"Steps","categories":["steps","mock-ui","cursors","annotations"]},{"beat":"Tips","categories":["lists","icons"]},{"beat":"Result","categories":["comparisons"]}],"across":["captions","lower-thirds"],"queries":["tutorial video","how to video","видео урок","пошаговая инструкция видео"]},{"id":"flashcards","title":"Flashcards & language drills","group":"education","summary":"A word, its picture, its meaning, a pause to answer — a deck rendered from a word list.","output":"9:16 · 30–120 s","aspects":["9:16","16:9"],"input":"A word list (CSV)","recipe":[{"beat":"Word","categories":["kinetic-type","galleries"]},{"beat":"Meaning","categories":["text-effects","icons"]},{"beat":"Your turn","categories":["timers"]},{"beat":"Quiz","categories":["lists"]}],"across":["captions"],"skills":["want-kids-counting-song"],"queries":["flashcards video","language learning video","карточки слов видео","видео для изучения языка"]},{"id":"history-timeline","title":"History timeline","group":"education","summary":"Events along a line: dates tick, places light up, archive images drift.","output":"16:9 · 30–180 s","aspects":["16:9","9:16"],"input":"Dated events with images","recipe":[{"beat":"Era","categories":["title-cards"]},{"beat":"Events","categories":["steps","galleries","maps"]},{"beat":"Detail","categories":["headlines","camera"]},{"beat":"Summary","categories":["lists"]}],"across":["textures","filters"],"queries":["history timeline video","timeline animation","видео таймлайн истории"]},{"id":"science-explainer","title":"Science what-if explainer","group":"education","summary":"A question at an impossible scale: 3D models, particles and numbers that keep growing.","output":"16:9 or 9:16 · 30–120 s","aspects":["16:9","9:16"],"input":"A question and the numbers behind it","recipe":[{"beat":"Question","categories":["headlines"]},{"beat":"Model","categories":["three-d","diagrams","particles"]},{"beat":"Scale","categories":["stats","camera"]},{"beat":"Answer","categories":["kinetic-type"]}],"across":["captions"],"skills":["want-what-if-science-explainer"],"queries":["what if science video","science explainer","научпоп видео","что если видео"],"useCase":"explainer-video"},{"id":"lyric-video","title":"Lyric video","group":"music","summary":"The song’s words on screen, timed to the vocal: type that moves on the beat over a look.","output":"16:9 or 9:16 · full song","aspects":["16:9","9:16"],"input":"The song and word-timed lyrics","recipe":[{"beat":"Title","categories":["title-cards","kinetic-type"]},{"beat":"Verses","categories":["captions","kinetic-type","backgrounds"]},{"beat":"Chorus","categories":["beat-sync","shaders","particles"]},{"beat":"Credits","categories":["outros"]}],"across":["audio-viz","beat-sync"],"skills":["want-apple-music-lyric-video","motion-graphics-music-video"],"queries":["lyric video","song lyrics video","лирик видео","видео с текстом песни"],"useCase":"lyric-video"},{"id":"karaoke","title":"Karaoke video","group":"music","summary":"Lines that fill word by word as they are sung, with a count-in and a backing picture.","output":"16:9 · full song","aspects":["16:9"],"input":"The song and word timings","recipe":[{"beat":"Count-in","categories":["timers"]},{"beat":"Lines","categories":["captions","text-effects"]},{"beat":"Backing","categories":["backgrounds","galleries"]}],"across":["beat-sync"],"templates":["varg.anime-jp-subtitles"],"queries":["karaoke video","караоке видео"],"useCase":"lyric-video"},{"id":"visualizer","title":"Audio visualizer","group":"music","summary":"The track made visible: spectrum, waveform or a shader that breathes with the bass.","output":"16:9 · 1:1 · any length","aspects":["16:9","1:1","9:16"],"input":"An audio file","recipe":[{"beat":"Cover","categories":["galleries","logos"]},{"beat":"Visual","categories":["audio-viz","shaders","particles"]},{"beat":"Title","categories":["lower-thirds","text-effects"]}],"across":["beat-sync"],"queries":["music visualizer","audio spectrum video","визуализатор музыки"]},{"id":"audiogram","title":"Podcast clip & audiogram","group":"music","summary":"A podcast moment for the feed: the waveform, the captions, who is speaking, where to listen.","output":"1:1 or 9:16 · 30–90 s","aspects":["1:1","9:16"],"input":"An audio clip and its transcript","recipe":[{"beat":"Show","categories":["logos","lower-thirds"]},{"beat":"Clip","categories":["audio-viz","captions"]},{"beat":"Speakers","categories":["lower-thirds","layouts"]},{"beat":"Listen","categories":["outros"]}],"across":["captions"],"skills":["varg-podcast-video","inference-sh-ai-podcast","want-transcript-cut-podcast"],"queries":["audiogram","podcast clip video","клип из подкаста","аудиограмма"],"useCase":"podcast-to-shorts"},{"id":"beat-slideshow","title":"Beat-synced slideshow","group":"music","summary":"Photos cut on the beat of a track, with a title and an end card.","output":"9:16 or 16:9 · 15–60 s","aspects":["9:16","16:9"],"input":"Photos and a track","recipe":[{"beat":"Open","categories":["intros"]},{"beat":"Photos","categories":["galleries","beat-sync","transitions"]},{"beat":"Title","categories":["kinetic-type"]},{"beat":"End","categories":["outros"]}],"across":["filters"],"skills":["varg-music-video"],"templates":["varg.anime-triple-split","varg.stamp-carousel"],"queries":["photo slideshow to music","beat sync slideshow","слайдшоу под музыку"],"useCase":"photo-slideshow"},{"id":"music-video","title":"Music video","group":"music","summary":"Scenes cut frame-exact to a song: a beat grid, a story, lyrics and graphics on top.","output":"16:9 or 9:16 · full song","aspects":["16:9","9:16"],"input":"A song and a one-line idea","recipe":[{"beat":"Song map","categories":["utilities","beat-sync"]},{"beat":"Scenes","categories":["transitions","camera"]},{"beat":"Lyrics","categories":["captions","kinetic-type"]},{"beat":"Graphics","categories":["textures","filters"]}],"across":["beat-sync"],"skills":["varg-music-video","motion-graphics-music-video"],"templates":["varg.music-video"],"queries":["music video","ai music video","клип на песню","музыкальный клип"],"useCase":"music-video"},{"id":"release-promo","title":"Single & album promo","group":"music","summary":"Cover art that moves, a 15-second snippet, the release date and the links.","output":"9:16 · 1:1 · 10–20 s","aspects":["9:16","1:1"],"input":"Cover art and a snippet","recipe":[{"beat":"Cover","categories":["galleries","three-d"]},{"beat":"Snippet","categories":["audio-viz","captions"]},{"beat":"Date","categories":["timers","headlines"]},{"beat":"Links","categories":["social-cards","outros"]}],"across":["shaders","textures"],"queries":["album promo video","single release teaser","промо сингла","тизер альбома"]},{"id":"live-code-music","title":"Live-coded music video","group":"music","summary":"Music made in code, shown as code: tokens light on the notes they play.","output":"1:1 · 16:9 · any length","aspects":["1:1","16:9"],"input":"A live-coding session","recipe":[{"beat":"Code","categories":["code","audio-viz"]},{"beat":"Beat","categories":["beat-sync","generative"]},{"beat":"Title","categories":["kinetic-type"]}],"skills":["hyperframes-prod-by-claude"],"queries":["strudel video","live coding music video","лайвкодинг видео"]},{"id":"logo-sting","title":"Logo sting","group":"brand","summary":"Two to six seconds that end on the logo: build-up, reveal, hold.","output":"16:9 · 1:1 · 2–6 s","aspects":["16:9","1:1","9:16"],"input":"An SVG logo","recipe":[{"beat":"Build-up","categories":["particles","shaders"]},{"beat":"Reveal","categories":["logos","three-d"]},{"beat":"Hold","categories":["backgrounds","textures"]}],"across":["themes"],"skills":["pixel2motion","krea-motion","craft-paper-shaders","want-chrome-logo-shader-fx"],"templates":["varg.liquid-thorn-logo"],"queries":["logo animation","logo reveal","logo sting","анимация логотипа"],"useCase":"logo-animation"},{"id":"brand-intro","title":"Brand intro & bumper","group":"brand","summary":"The opener every video of a brand shares: mood, mark, tagline.","output":"16:9 · 5–10 s","aspects":["16:9","9:16"],"input":"Logo, palette and a tagline","recipe":[{"beat":"Open","categories":["intros","shaders"]},{"beat":"Mark","categories":["logos"]},{"beat":"Tagline","categories":["kinetic-type"]},{"beat":"Close","categories":["outros"]}],"across":["themes"],"queries":["brand intro","brand bumper","заставка бренда"],"useCase":"logo-animation"},{"id":"manifesto","title":"Kinetic manifesto","group":"brand","summary":"What a brand believes, said in type that moves on the beat, cut with images.","output":"16:9 or 9:16 · 20–60 s","aspects":["16:9","9:16"],"input":"The manifesto text","recipe":[{"beat":"Statements","categories":["kinetic-type","headlines"]},{"beat":"Images","categories":["galleries","filters"]},{"beat":"Turn","categories":["transitions","beat-sync"]},{"beat":"Sign-off","categories":["logos"]}],"across":["themes","textures"],"skills":["bang-motion","iart-kinetic-typography","want-word-per-beat-shader-promo"],"templates":["hf.kinetic-type","hf.vignelli"],"queries":["manifesto video","kinetic typography video","кинетическая типографика","манифест бренда видео"]},{"id":"title-sequence","title":"Title sequence","group":"brand","summary":"Opening credits over a mood: names arrive, the title lands.","output":"16:9 · 30–90 s","aspects":["16:9"],"input":"The credits list","recipe":[{"beat":"Mood","categories":["backgrounds","textures","camera"]},{"beat":"Credits","categories":["title-cards","text-effects"]},{"beat":"Title","categories":["kinetic-type","logos"]}],"across":["filters"],"skills":["calesthio-title-kinetic-typography","hyperframes-canopy-part-title","hyperframes-glass-shard-title"],"queries":["title sequence","opening credits","вступительные титры"]},{"id":"brand-guidelines","title":"Brand guidelines film","group":"brand","summary":"A brand system presented: mark, palette, type, imagery, in one film.","output":"16:9 · 15–60 s","aspects":["16:9"],"input":"A brand kit","recipe":[{"beat":"Mark","categories":["logos"]},{"beat":"Palette","categories":["themes","backgrounds"]},{"beat":"Type","categories":["text-effects","kinetic-type"]},{"beat":"Imagery","categories":["galleries"]},{"beat":"Close","categories":["logos"]}],"skills":["higgsfield-brandkit","anthropic-brand-guidelines"],"templates":["remocn.brand-guidelines"],"queries":["brand guidelines video","brand identity film","видео брендбука"]},{"id":"stream-overlay","title":"Stream overlay package","group":"broadcast","summary":"Starting soon, live, be right back, ending: loops and overlays for a stream.","output":"16:9 · loops","aspects":["16:9"],"input":"Channel name, schedule and socials","recipe":[{"beat":"Starting soon","categories":["timers","backgrounds"]},{"beat":"Live","categories":["hud","lower-thirds","social-cards"]},{"beat":"Be right back","categories":["kinetic-type","shaders"]},{"beat":"Ending","categories":["outros"]}],"across":["themes"],"queries":["stream overlay","starting soon screen","оверлей для стрима"]},{"id":"news-package","title":"News broadcast package","group":"broadcast","summary":"The open, the anchor name, the ticker and the breaking banner a newsroom reuses.","output":"16:9 · loops and stingers","aspects":["16:9"],"input":"Headlines feed and show name","recipe":[{"beat":"Open","categories":["intros","shaders"]},{"beat":"Anchor","categories":["lower-thirds","hud"]},{"beat":"Ticker","categories":["hud"]},{"beat":"Breaking","categories":["headlines","transitions"]}],"across":["themes"],"queries":["news package","breaking news graphics","новостная графика"]},{"id":"countdown","title":"Countdown & launch timer","group":"broadcast","summary":"A clock to zero with something worth waiting for on the other side.","output":"16:9 · 9:16 · 10–60 s","aspects":["16:9","9:16"],"input":"A target date and time","recipe":[{"beat":"Count","categories":["timers","kinetic-type"]},{"beat":"Build","categories":["particles","shaders"]},{"beat":"Zero","categories":["entrances","logos"]}],"queries":["countdown video","launch countdown","обратный отсчет видео"]},{"id":"event-promo","title":"Conference & event promo","group":"broadcast","summary":"Speakers, agenda, venue and tickets — rendered from the event’s own data.","output":"16:9 or 9:16 · 20–60 s","aspects":["16:9","9:16"],"input":"Speakers, agenda, date and venue","recipe":[{"beat":"Hook","categories":["intros"]},{"beat":"Speakers","categories":["galleries","lower-thirds"]},{"beat":"Agenda","categories":["steps","lists"]},{"beat":"Venue","categories":["maps"]},{"beat":"Tickets","categories":["offers","timers"]}],"across":["themes"],"queries":["event promo video","conference speakers video","промо мероприятия"]},{"id":"memories","title":"Photo memories","group":"personal","summary":"A folder of photos into a film: slow pushes, places on a map, a title and a last line.","output":"16:9 or 9:16 · 30–120 s","aspects":["16:9","9:16"],"input":"A folder of photos","recipe":[{"beat":"Title","categories":["title-cards"]},{"beat":"Photos","categories":["galleries","camera","transitions"]},{"beat":"Places","categories":["maps"]},{"beat":"End","categories":["headlines"]}],"across":["beat-sync","textures"],"templates":["varg.stamp-carousel"],"queries":["photo memories video","slideshow of my photos","видео из фотографий","слайдшоу воспоминаний"],"useCase":"photo-slideshow"},{"id":"celebration","title":"Birthday, wedding & invitation","group":"personal","summary":"An invite or a greeting: names, photos, date and place, a little confetti.","output":"9:16 · 15–45 s","aspects":["9:16","1:1"],"input":"Names, date, place and photos","recipe":[{"beat":"Invite","categories":["kinetic-type"]},{"beat":"Photos","categories":["galleries"]},{"beat":"Details","categories":["timers","maps"]},{"beat":"RSVP","categories":["outros"]}],"across":["particles","backgrounds"],"queries":["birthday video","wedding invitation video","видео приглашение","поздравление видео"]},{"id":"travel-route","title":"Travel route video","group":"personal","summary":"A trip retold on a map: the route draws, each stop shows its photos, the totals land.","output":"9:16 or 16:9 · 20–90 s","aspects":["9:16","16:9"],"input":"Trip stops with photos","recipe":[{"beat":"Route","categories":["maps","camera"]},{"beat":"Stops","categories":["galleries","lower-thirds"]},{"beat":"Totals","categories":["stats"]},{"beat":"End","categories":["headlines"]}],"across":["transitions"],"skills":["remotion-maps"],"queries":["travel map video","trip route animation","видео маршрута путешествия"]},{"id":"achievement","title":"Certificate & achievement recap","group":"personal","summary":"A badge earned, the numbers behind it, a name in lights and a card to share.","output":"9:16 · 1:1 · 10–20 s","aspects":["9:16","1:1"],"input":"A name and the stats","recipe":[{"beat":"Badge","categories":["icons","entrances"]},{"beat":"Stats","categories":["stats"]},{"beat":"Name","categories":["kinetic-type"]},{"beat":"Share","categories":["social-cards"]}],"across":["particles"],"queries":["achievement video","certificate animation","видео достижения"]},{"id":"personalized-outreach","title":"Personalized sales video","group":"scale","summary":"One video per prospect: their name, their site in a browser, the pitch that fits.","output":"16:9 · 30–60 s","aspects":["16:9"],"input":"A CRM row (name, company, site)","recipe":[{"beat":"Name","categories":["kinetic-type","chats"]},{"beat":"Their site","categories":["devices","mock-ui","cursors"]},{"beat":"Pitch","categories":["showcases","stats"]},{"beat":"Call to action","categories":["outros"]}],"across":["utilities"],"queries":["personalized video outreach","video for each lead","персонализированное видео","видео для каждого клиента"],"useCase":"personalized-videos"},{"id":"catalog-videos","title":"Product feed to videos","group":"scale","summary":"A video for every product in the feed: images, specs, price, CTA — re-rendered when the feed changes.","output":"9:16 · 1:1 · 6–20 s","aspects":["9:16","1:1","4:5"],"input":"A product feed (CSV, Shopify)","recipe":[{"beat":"Product","categories":["showcases","galleries"]},{"beat":"Specs","categories":["lists","icons"]},{"beat":"Price","categories":["offers"]},{"beat":"Call to action","categories":["outros"]}],"across":["utilities","themes"],"skills":["ecom-image2","higgsfield-marketplace-cards","varg-studio-product"],"queries":["product feed video","ecommerce catalog video","видео для каждого товара","видео из фида"],"useCase":"product-video"},{"id":"real-estate","title":"Real estate listing","group":"scale","summary":"A listing as a tour: exterior, rooms, the specs, the map, the contact.","output":"9:16 or 16:9 · 30–60 s","aspects":["9:16","16:9"],"input":"Listing data and photos","recipe":[{"beat":"Exterior","categories":["galleries","camera"]},{"beat":"Rooms","categories":["galleries","lower-thirds"]},{"beat":"Specs","categories":["stats","lists"]},{"beat":"Location","categories":["maps"]},{"beat":"Contact","categories":["outros"]}],"across":["themes"],"queries":["real estate video","property listing video","видео объекта недвижимости"],"useCase":"real-estate-video"},{"id":"job-post","title":"Job post video","group":"scale","summary":"A role, the perks, the team and how to apply — one per open position.","output":"9:16 · 1:1 · 15–30 s","aspects":["9:16","1:1"],"input":"A job posting","recipe":[{"beat":"Role","categories":["title-cards"]},{"beat":"Perks","categories":["lists","icons"]},{"beat":"Team","categories":["galleries","social-proof"]},{"beat":"Apply","categories":["outros"]}],"across":["themes"],"queries":["job post video","hiring video","видео вакансии"]},{"id":"recipe","title":"Recipe video","group":"scale","summary":"The dish, the ingredients, timed steps, served — from a recipe card.","output":"9:16 · 30–60 s","aspects":["9:16"],"input":"A recipe (ingredients, steps)","recipe":[{"beat":"Dish","categories":["galleries"]},{"beat":"Ingredients","categories":["lists","icons"]},{"beat":"Steps","categories":["steps","timers"]},{"beat":"Serve","categories":["headlines"]}],"across":["captions"],"queries":["recipe video","cooking steps video","видео рецепта"]},{"id":"localized","title":"Localized versions","group":"scale","summary":"One video in every language: translated captions and type, right-to-left where needed, the same timing.","output":"Any · same length","aspects":["any"],"input":"One video and its translations","recipe":[{"beat":"Same scenes","categories":["captions","text-effects"]},{"beat":"Locale","categories":["themes","layouts"]}],"across":["utilities"],"skills":["elevenlabs-dubbing","wjs-translating-subtitles","gemini-srt-translator","persian-motion-director"],"queries":["translate my video","localize video","перевести видео","локализация видео"],"useCase":"dubbing"},{"id":"shader-loop","title":"Shader loop","group":"art","summary":"A seamless GPU field — gradients, liquid, light — for backgrounds, screens and stages.","output":"Any · 5–30 s loop","aspects":["16:9","9:16","1:1"],"input":"A palette and a seed","recipe":[{"beat":"Field","categories":["shaders","backgrounds"]},{"beat":"Motion","categories":["generative"]},{"beat":"Loop","categories":["utilities"]}],"skills":["craft-paper-shaders","dgreenheck-webgpu-threejs-tsl"],"queries":["shader background loop","gradient loop video","шейдерный фон","зацикленный фон"]},{"id":"generative-loop","title":"Generative art loop","group":"art","summary":"Rules and a seed, rendered frame-exact: flow fields, growth, tilings.","output":"Any · 5–60 s loop","aspects":["1:1","16:9","9:16"],"input":"A seed and rules","recipe":[{"beat":"System","categories":["generative","particles"]},{"beat":"Texture","categories":["textures"]}],"skills":["anthropic-algorithmic-art","genart-skill","want-generative-code-art-loop"],"queries":["generative art video","p5 loop","генеративное искусство видео"]},{"id":"ascii-retro","title":"ASCII & retro looks","group":"art","summary":"Footage or type re-rendered as ASCII, CRT, VHS, halftone or pixels.","output":"Any","aspects":["16:9","9:16","1:1"],"input":"Footage or text","recipe":[{"beat":"Source","categories":["galleries"]},{"beat":"Treatment","categories":["generative","textures","filters"]},{"beat":"Title","categories":["kinetic-type"]}],"skills":["want-ascii-humanist-collage","lemo-opuscar"],"queries":["ascii video","vhs effect video","ретро эффект видео","аски видео"]},{"id":"product-spin","title":"3D product spin","group":"art","summary":"A 3D model turning in light, callouts on the parts, the logo at rest.","output":"1:1 · 16:9 · 5–15 s","aspects":["1:1","16:9","9:16"],"input":"A GLB/GLTF model","recipe":[{"beat":"Spin","categories":["three-d","camera","backgrounds"]},{"beat":"Callouts","categories":["annotations","stats"]},{"beat":"Logo","categories":["logos"]}],"skills":["threejs-skills","want-exploded-view-reveal","want-collectible-figure-packshot"],"queries":["3d product spin","3d model turntable video","3д вращение товара"],"useCase":"product-video"},{"id":"ambient-loop","title":"Ambient & lofi loop","group":"art","summary":"A scene that never ends: weather, particles, grain and a track title.","output":"16:9 · 1–60 min loop","aspects":["16:9"],"input":"A scene and a track","recipe":[{"beat":"Scene","categories":["backgrounds","particles","textures"]},{"beat":"Music","categories":["audio-viz"]},{"beat":"Title","categories":["lower-thirds"]}],"queries":["lofi loop video","ambient video loop","лофи видео"]},{"id":"collage","title":"Paper collage & zine","group":"art","summary":"Cut-outs, halftone, torn edges and handwritten notes, moving like a zine.","output":"9:16 or 16:9 · 10–60 s","aspects":["9:16","16:9"],"input":"Images and a line of script","recipe":[{"beat":"Cut-outs","categories":["galleries","textures"]},{"beat":"Notes","categories":["annotations"]},{"beat":"Type","categories":["kinetic-type"]}],"skills":["gbro-collage-broll","hyperframes-vox-explainer"],"templates":["hf.warm-grain"],"queries":["collage video","zine style video","коллаж видео"]},{"id":"slides-to-video","title":"Slides to video","group":"presentations","summary":"A deck that plays: each slide builds, charts animate, transitions carry the argument.","output":"16:9 · 1–10 min","aspects":["16:9"],"input":"A deck (PDF, Markdown, Keynote export)","recipe":[{"beat":"Title","categories":["title-cards"]},{"beat":"Slides","categories":["layouts","text-effects","charts"]},{"beat":"Points","categories":["lists","annotations"]},{"beat":"Close","categories":["outros"]}],"across":["transitions","themes","captions"],"skills":["hyperframes-slideshow"],"templates":["hf.swiss-grid"],"queries":["slides to video","presentation video","презентация в видео"]},{"id":"pitch-video","title":"Pitch deck video","group":"presentations","summary":"A fundraising story in two minutes: problem, product, traction, team, ask.","output":"16:9 · 60–180 s","aspects":["16:9"],"input":"The deck and the numbers","recipe":[{"beat":"Problem","categories":["headlines"]},{"beat":"Product","categories":["showcases","devices"]},{"beat":"Traction","categories":["charts","stats"]},{"beat":"Team","categories":["galleries","lower-thirds"]},{"beat":"Ask","categories":["headlines","outros"]}],"across":["themes","transitions"],"queries":["pitch deck video","investor video","видео питч","видео для инвесторов"]},{"id":"keynote-reveal","title":"Keynote reveal","group":"presentations","summary":"The stage moment: a slow build, the product in 3D, the price, the date.","output":"16:9 · 20–60 s","aspects":["16:9"],"input":"The announcement","recipe":[{"beat":"Build","categories":["backgrounds","camera"]},{"beat":"Reveal","categories":["three-d","logos","kinetic-type"]},{"beat":"Price","categories":["offers"]},{"beat":"Date","categories":["timers"]}],"across":["shaders"],"skills":["varg-character-keynote"],"queries":["keynote reveal","apple keynote style video","презентация как у эпл"]},{"id":"game-trailer","title":"Game trailer","group":"games","summary":"Gameplay cut on the music, features in big type, the logo and the date.","output":"16:9 · 30–90 s","aspects":["16:9"],"input":"Gameplay clips, logo and date","recipe":[{"beat":"Cold open","categories":["intros","filters"]},{"beat":"Gameplay","categories":["galleries","transitions","beat-sync"]},{"beat":"Features","categories":["kinetic-type","hud"]},{"beat":"Logo","categories":["logos"]},{"beat":"Date","categories":["timers"]}],"across":["textures"],"skills":["want-gameplay-concept-trailer","fal-gamedev"],"queries":["game trailer","gameplay trailer","трейлер игры"]},{"id":"game-overlay","title":"Gameplay highlight & HUD","group":"games","summary":"Clips from a match with kill feeds, scores and callouts layered on top.","output":"16:9 or 9:16 · 15–60 s","aspects":["16:9","9:16"],"input":"Gameplay footage and match events","recipe":[{"beat":"Moment","categories":["hud","annotations"]},{"beat":"Replay","categories":["camera","filters"]},{"beat":"Score","categories":["stats","hud"]}],"across":["captions"],"queries":["gameplay highlights video","game hud overlay","хайлайты игры"]}],"registries":[{"id":"hyperframes","name":"HyperFrames registry","framework":"hyperframes","url":"https://hyperframes.heygen.com/catalog","repo":"heygen-com/hyperframes","license":"Apache-2.0","install":"npx hyperframes add <name>","note":"HeyGen's open HTML-to-video framework. Blocks are sub-compositions with their own canvas and timeline; components are snippets pasted into a host composition. Renders locally with headless Chrome and ffmpeg.","syncedAt":"2026-10-27T06:44:41.602Z"},{"id":"remocn","name":"remocn","framework":"remotion","url":"https://remocn.dev/docs/components","repo":"Remocn/remocn","license":"MIT","install":"npx shadcn@latest add @remocn/<name>","note":"A shadcn registry for Remotion: the shadcn CLI copies each component into your Remotion project, dependencies included, and the code is yours.","syncedAt":"2026-10-27T16:51:14.050Z"},{"id":"varg","name":"varg code2video templates","framework":"html","url":"https://github.com/vargHQ/code2video-templates","repo":"vargHQ/code2video-templates","license":"MIT","install":"git clone https://github.com/vargHQ/code2video-templates","note":"varg's own whole-video templates. Code-only ones render locally for free; the varg_jsx ones generate AI footage through the varg API and cost credits."},{"id":"gl-transitions","name":"GL Transitions","framework":"glsl","url":"https://gl-transitions.com","repo":"gl-transitions/gl-transitions","license":"MIT","install":"npm install gl-transitions","note":"A community collection of scene transitions written as small GLSL functions: each takes the outgoing and incoming images and a `progress` value from 0 to 1 and returns a pixel. Zoom blurs, 3D cubes, page curls, glitches, melts and pixelations all follow the same spec, so any of them drops between any two clips. Because time is only an input, frame N always renders the same, which is exactly what a video renderer needs. The npm package ships every transition with its parameters, also translated to GLSL ES 3.00, WGSL, Metal and SkSL.","licenseNote":"The collection is MIT and each transition states its own license in its header. All are MIT except InvertedPageCurl (BSD 3-Clause, Hewlett-Packard) and StereoViewer (BSD 2-Clause, Ted Schundler); both are permissive and fine in a commercial video, but keep their copyright header if you redistribute the shader code. No on-screen credit is required.","render":"Seek-safe by design: drive `progress` from the frame (progress = (frame − cutStart) / duration, eased) and render. Remotion: `@gl-transitions/remotion` makes any transition a `<TransitionSeries>` presentation (`glTransition({ name, params })`, Remotion 4.0.500+; render with `--gl=angle`, or `--gl=swangle` without a GPU). HyperFrames or any headless-Chrome renderer: a small WebGL harness that draws the shader over the cut, with the two clips as textures and progress taken from the composition time. ffmpeg’s `xfade` cannot run GLSL; that needs an ffmpeg build with the third-party `gltransition` filter, or editly (which still uses the 1.x lowercase names).","publisher":{"name":"GL Transitions","handle":"gl-transitions","url":"https://github.com/gl-transitions"},"stars":2188,"hue":45,"cover":"glt.dreamy-zoom"},{"id":"react-bits","name":"React Bits","framework":"react","url":"https://reactbits.dev","repo":"DavidHDev/react-bits","license":"MIT + Commons Clause","install":"npx shadcn@latest add @react-bits/<name>-JS-CSS","note":"React Bits is a large open-source collection of animated React components by David Haz: shader backgrounds, kinetic text, cursor and reveal effects. The backgrounds are the strongest pieces for video: full-frame light, liquid metal, particles and noise fields that stay readable after compression at 1080×1920. Each component is one file you copy into the project (JS or TS, plain CSS or Tailwind) through the shadcn or jsrepo registry, then mount behind titles or footage in a Remotion or HyperFrames composition.","licenseNote":"You may use the components in any app, site, product or video, commercial ones included, as long as the copyright notice stays in the copied code. The Commons Clause forbids selling, sublicensing or redistributing the components themselves, alone, in a bundle or as a port, and the license also forbids selling exports on their own (for example a pack of rendered background loops or templates). Rendering a React Bits background into your own video is fine. Selling the rendered loops as stock, or publishing a port as a registry block of your own, is not.","render":"Each template is one self-contained React component. Most backgrounds draw with raw WebGL2 in a single file, Hyperspeed and Color Bends use Three.js, and the text effects use GSAP, Motion or plain timers. In Remotion, mount the component inside an AbsoluteFill. In HyperFrames, bundle React and the component into the composition page and mount it in a clip element. None of them follow the render clock: the shaders add the requestAnimationFrame delta to an internal time, and text effects run GSAP or Motion tweens, setInterval or IntersectionObserver triggers. To make a template seek-safe, replace that clock with frame / fps. Patch the loop to read time from a prop (Aurora already takes `time` and `paused`) and draw once per frame. Set intro={false} or drive the intro from the same clock, switch off the mouse and click props, and seed any Math.random. Create GSAP tweens paused and call seek(t) on every frame. Rewrite Motion animations as styles computed from the frame.","publisher":{"name":"David Haz","handle":"DavidHDev","url":"https://github.com/DavidHDev"},"stars":50348,"hue":252,"cover":"reactbits.iridescence"},{"id":"magic-ui","name":"Magic UI","framework":"react","url":"https://magicui.design","repo":"magicuidesign/magicui","license":"MIT","install":"npx shadcn@latest add @magicui/<name>","note":"Magic UI is an open-source set of 70+ animated React components built on Tailwind CSS and motion, installed through the shadcn registry. A large share of it works on video: kinetic text effects, a WebGL globe and connection beams for integration stories, particle, grid and meteor backdrops, and iPhone and Safari frames for screen recordings. Each component is one file you add with the shadcn CLI, then drive from the frame clock in Remotion or rebuild on the HyperFrames timeline.","licenseNote":"MIT (copyright Magic UI): you can use and modify the components in commercial videos; keep the license notice if you redistribute the code itself. It covers the open-source repo only; Magic UI Pro blocks and templates are a separate paid product. Media inside the docs demos (stock clips, avatars, third-party logos) is not covered, so put your own in.","render":"Components are React + Tailwind with motion, canvas or WebGL inside, and almost all of them run on wall-clock time: motion autoplay and springs, requestAnimationFrame loops, setInterval timers, CSS keyframes and Math.random. In Remotion, render the component in a composition and feed it time from useCurrentFrame() / fps: spring() or interpolate() in place of motion's animate, a time uniform for shaders and canvases, paused CSS animations with a negative animation-delay, and a seeded random. In HyperFrames, port the markup and CSS into the composition HTML (or a pre-built bundle) and rebuild the motion on the paused GSAP timeline; plain CSS keyframes can be left to its CSS adapter once they have a finite iteration count. Device frames are static SVG; put a framework-owned video in the screen area.","publisher":{"name":"Magic UI","handle":"magicuidesign","url":"https://magicui.design"},"stars":22888,"hue":265,"cover":"magicui.retro-grid"},{"id":"vanta","name":"Vanta.js","framework":"html","url":"https://www.vantajs.com","repo":"tengbao/vanta","license":"MIT","install":"npm i vanta","note":"Vanta is a small set of animated 3D backgrounds by Teng Bao. Each effect is one script that mounts a three.js (or p5.js) canvas inside any element and takes a handful of color and density options. They move slowly, fill the frame edge to edge and sit well under titles and lower thirds, which is what a video background needs. In a render the agent loads three r134 plus one vanta.<name>.min.js and drives the effect's clock from the frame instead of the browser.","licenseNote":"MIT: fine for commercial and client videos; keep the copyright notice if you redistribute the code. Effects run on three.js (MIT); Trunk and Topology run on p5.js (LGPL-2.1), which you load from its own CDN build unmodified.","render":"Mount VANTA.<NAME>({ el }) on a full-frame div with three r134 (or p5 1.x for Trunk and Topology) loaded first, and turn mouseControls, touchControls and gyroControls off. Vanta animates on requestAnimationFrame with a performance.now delta, so it is not frame-exact as shipped. The pure shaders (Fog, Clouds, Clouds2, Cells) only read uniforms.iTime: cancel effect.req, set iTime to seconds × speed and call effect.renderer.render(effect.scene, effect.camera) for any frame. Waves is a function of effect.t (60 ticks per second). The rest keep state (flocking, camera easing, feedback buffers, p5 strokes): seed Math.random, give them a virtual clock that advances 1000/fps ms per video frame, and render in order from frame 0.","publisher":{"name":"Teng Bao","handle":"tengbao","url":"https://github.com/tengbao"},"stars":7284,"hue":215,"cover":"vanta.waves"},{"id":"shadergradient","name":"ShaderGradient","framework":"react","url":"https://shadergradient.co","repo":"ruucm/shadergradient","license":"MIT","install":"npm i @shadergradient/react @react-three/fiber three three-stdlib camera-controls","note":"ShaderGradient lights a noise-displaced plane, sphere or water surface in three colors and films it through a movable camera, with optional film grain on top. The ten built-in presets run from paper-white pastels to near-black nebula tones, and any look can be tuned on shadergradient.co/customize and copied out as props or a URL. On video it reads as a premium, slowly breathing backdrop that keeps titles legible and holds up under compression. It renders through @shadergradient/react on react-three-fiber.","licenseNote":"MIT, as stated in the README (© ruucm, stone-skipper) and in the @shadergradient/react package.json; the repo has no separate LICENSE file. Fine for commercial and client videos; keep the notice if you redistribute the code.","render":"Render <ShaderGradient> inside <ShaderGradientCanvas lazyLoad={false}> (@shadergradient/react with @react-three/fiber and three) as a full-frame layer, spreading presets.<name>.props from the package. As shipped, uTime runs off an internal THREE.Clock on every R3F frame, so for HyperFrames or Remotion pass animate=\"off\" and uTime={seconds} (the shader multiplies it by uSpeed), set enableTransition={false} so the camera does not ease in, and let R3F draw once (frameloop=\"demand\" plus invalidate(), or one tick) before each frame is captured. Then any frame renders the same in any order.","publisher":{"name":"ruucm","handle":"ruucm","url":"https://github.com/ruucm"},"stars":2987,"hue":18,"cover":"shadergradient.sunset"},{"id":"aceternity","name":"Aceternity UI","framework":"react","url":"https://ui.aceternity.com/components","license":"Aceternity License (free components)","install":"npx shadcn@latest add @aceternity/<name>","note":"A catalog of 100+ free React components by Manu Arora, built with Tailwind CSS and Motion, known for dark hero backdrops: aurora streaks, falling beams, lamp glows, particle fields, spinning globes and animated headlines. Most pieces fill a black frame edge to edge with soft light, which holds up well in vertical and horizontal video. A component lands in a project through the shadcn CLI and renders in Remotion or HyperFrames once its animation clock follows the frame.","licenseNote":"Not open source. The free components fall under the Aceternity License (https://ui.aceternity.com/licence): you may build unlimited end products for yourself or clients, and the license lists videos among them; the pricing FAQ says the free tier is fine for personal and commercial projects. You may not redistribute the component source (as files, a stock item, or a template or component pack), and you may not sell it or derivatives on any marketplace. Rendering one into a commercial video is fine. Shipping its code inside a resold template is not.","render":"Components are React + Tailwind. They animate in one of four ways: Motion (framer-motion) tweens and springs, CSS keyframes, canvas loops on requestAnimationFrame (often with Math.random or simplex noise), or WebGL (three.js, tsParticles, raw shaders). None of them is seek-safe out of the box. In Remotion, render the component inside a Composition and drive it from useCurrentFrame() / fps: pass frame-derived values instead of animate/whileInView, pause CSS animations and set a negative animation-delay of t, and step canvas or shader loops with t (seed any randomness) instead of requestAnimationFrame. In HyperFrames, rebuild the piece on the composition's paused timeline (GSAP, or the CSS-keyframes, WAAPI or Three.js adapters) using the component source as the reference, so seeking to any frame gives the same picture. Turn off mouse interaction props for video.","publisher":{"name":"Aceternity","handle":"aceternity","url":"https://ui.aceternity.com"},"hue":225,"cover":"aceternity.background-gradient-animation"},{"id":"tsparticles","name":"tsParticles","framework":"html","url":"https://particles.js.org","repo":"tsparticles/tsparticles","license":"MIT","install":"pnpm add @tsparticles/engine @tsparticles/slim @tsparticles/preset-<name>","note":"tsParticles is a TypeScript particle engine by Matteo Bruni with an official set of ready-made presets: confetti bursts and parades, fireworks, snow, twinkling stars, link networks, hyperspace streaks, Matrix rain and more. Each preset is a complete options object you load by name and then override, so brand colors, density and speed are one merge away. Confetti, fireworks and snow render on a transparent canvas and sit over footage on a celebration beat; the rest bring their own dark background. In a render it is a 2D canvas stepped from a virtual clock.","licenseNote":"MIT for the engine (tsparticles/tsparticles) and for the official presets (tsparticles/presets): fine for commercial and client videos; keep the copyright notice if you redistribute the code.","render":"Load @tsparticles/engine plus one preset package (or the preset's single-file CDN bundle), register it with load<Name>Preset(tsParticles), then tsParticles.load({ id, options: { preset: '<name>', fullScreen: { enable: false } } }) into a full-frame div. The engine ticks on requestAnimationFrame and derives each step from the frame timestamp, so for HyperFrames or Remotion: seed Math.random before loading, replace requestAnimationFrame with a queue you flush once per video frame with the timestamp frame × 1000 / fps (fpsLimit at or above the video fps), and render in order from the effect's first frame; particles are a running simulation, so replay from the start after a backwards seek. Keep the background transparent for overlays and composite them over the footage.","publisher":{"name":"tsParticles (Matteo Bruni)","handle":"tsparticles","url":"https://github.com/tsparticles"},"stars":9031,"hue":265,"cover":"tsparticles.sea-anemone"},{"id":"codrops","name":"Codrops","framework":"html","url":"https://tympanus.net/codrops","repo":"https://github.com/codrops","license":"MIT (per demo repo)","install":"git clone https://github.com/codrops/<name>","note":"Codrops has published hand-built front-end experiments since 2009: image slideshows with shader and clip-path transitions, kinetic typography, intro sequences, 3D grids and WebGL blobs, each with a tutorial and its own GitHub repo. Most of them are art-directed full-screen pieces, which makes them strong raw material for title sequences, product reels and editorial cuts. They are plain HTML, CSS and JavaScript, usually driven by a GSAP timeline, so the motion can be paused and seeked frame by frame once the click or scroll trigger is replaced by the video's clock.","licenseNote":"Every Codrops demo is its own repo under github.com/codrops with its own license; only repos whose LICENSE file is MIT are listed here. MIT lets you use and change the code in commercial videos as long as the copyright notice travels with the code. The photos, illustrations and Typekit fonts in the demos are not covered by that license, so swap in your own media and fonts. GSAP, which most demos use, is free to use under its own no-charge license. Many older Codrops repos have no license file and are left out.","render":"Clone the demo, copy its markup, CSS and script into the composition, and replace the user trigger (click, hover, wheel or scroll) with time. GSAP-driven demos become seek-safe once the timeline is created paused: in HyperFrames register it on window.__timelines under the composition id and HyperFrames seeks it per frame; in Remotion call tl.seek(frame / fps) from useCurrentFrame() inside a useLayoutEffect. ScrollTrigger demos map scroll progress to timeline progress instead of reading the scroll position. Three.js demos render from a time value: set the uTime uniform from the hf-seek event in HyperFrames or from frame / fps in Remotion, and drop the requestAnimationFrame loop. Preload images and fonts before the first frame.","publisher":{"name":"Codrops","handle":"codrops","url":"https://github.com/codrops"},"hue":14,"cover":"codrops.webgl-blobs"},{"id":"fancy","name":"Fancy Components","framework":"react","url":"https://www.fancycomponents.dev","repo":"danielpetho/fancy","license":"MIT","install":"npx shadcn add @fancy/<name>","note":"Fancy Components is Daniel Petho's MIT collection of React + Tailwind pieces built mostly on Motion, with a few Matter.js physics blocks. The text effects (cut reveals, rotating words, scramble-ins, typewriters) and looping blocks (marquees on a path, orbiting elements, floating and bouncing items) give a typographic editorial look that works well in social video. Components install through the shadcn CLI once the @fancy registry (https://fancycomponents.dev/r/{name}.json) is listed under registries in components.json. You can also copy the single TSX file from the docs page.","licenseNote":"MIT: free to use, modify and ship in commercial videos and products. Keep the copyright and license notice with the copied source code. The video itself needs no credit.","render":"Each template is one TSX component. In Remotion, mount it inside an AbsoluteFill. In HyperFrames, bundle React and the component into the composition page and mount it in a clip element. The motion comes from Motion (springs, useAnimationFrame, animate()), CSS keyframes, SVG <animate>, setInterval or a Matter.js runner, so none of it follows the render clock out of the box. To make a template seek-safe, derive its state from frame / fps: replace springs and timers with values computed from the current time (Remotion's interpolate/spring), feed useAnimationFrame-driven offsets from the frame, pause CSS animations and set their currentTime (HyperFrames' CSS adapter can do this), call pauseAnimations() and setCurrentTime(t) on SVG, and step Matter.js engines by a fixed 1000/fps per frame from a fixed seed. Turn off hover, drag and in-view triggers.","publisher":{"name":"Daniel Petho","handle":"danielpetho","url":"https://github.com/danielpetho"},"stars":3272,"hue":12,"cover":"fancy.animated-gradient-with-svg"},{"id":"animate-ui","name":"Animate UI","framework":"react","url":"https://animate-ui.com","repo":"imskyleen/animate-ui","license":"MIT + Commons Clause","install":"npx shadcn@latest add @animate-ui/<name>","note":"Animate UI is a React library of animated components built on Motion: full-frame backgrounds (gradient bubbles, fireworks, a glyph field, contour lines, a ring tunnel) and text primitives (typing, morphing, shimmering, rolling, odometer numbers). The pieces are restrained and well-timed, so they read cleanly behind a title or as a kinetic headline. Backgrounds copy into your project through the shadcn registry; text effects ship in the @animate-ui/react package. Each one runs on Motion, CSS or a canvas/WebGL loop, so its clock has to be tied to the frame before it renders.","licenseNote":"You can use the components in commercial work, including rendered videos, as long as you keep the copyright notice with the code. The Commons Clause forbids selling or redistributing the components themselves in their original form, alone or in a bundle: ship the video, not the component pack.","render":"React components. In Remotion, mount the component in a composition, then replace its wall-clock driver with the frame: Motion loops (bubble, gradient, stars, text effects) become values computed from useCurrentFrame() / fps with interpolate() or spring(); canvas simulations (fireworks, hole, gravity stars) step once per video frame from a seeded random source instead of requestAnimationFrame; the WebGL fields (glyph, topography) already draw from a time value, so call their draw function with frame / fps. In HyperFrames, port the effect into the composition's HTML: shader fields render on the hf-seek event, Motion timings become a paused GSAP timeline registered on window.__timelines. Turn off the in-view and hidden-tab pauses, and reduced motion, before rendering.","publisher":{"name":"Elliot Sutton","handle":"imskyleen","url":"https://github.com/imskyleen"},"stars":4699,"hue":268,"cover":"animateui.hole-background"},{"id":"motion-primitives","name":"Motion Primitives","framework":"react","url":"https://motion-primitives.com","repo":"ibelick/motion-primitives","license":"MIT","install":"npx motion-primitives@latest add <name>","note":"An open-source set of small, restrained React animation pieces by Julien Thibeaut (ibelick), built on Motion and Tailwind CSS: text that shimmers, scrambles, rolls, loops or morphs, numbers that spring and slide, glows and light trails around cards, endless logo rows. They are quiet, typographic effects that suit captions, lower thirds, stat callouts and UI walkthroughs. Each one installs through the project's CLI and renders in Remotion or HyperFrames once its Motion values follow the frame.","licenseNote":"MIT: free to use, change and ship in commercial videos and products. Keep the copyright and license notice with any copy of the source code; the rendered video needs no credit.","render":"Every component animates with Motion (motion/react): springs (useSpring), AnimatePresence enter/exit, repeat: Infinity loops, layout animations, and a few setInterval timers (TextLoop, TextScramble). None of that follows a render clock. In Remotion, compute the animated values from useCurrentFrame() / fps (interpolate or spring) and pass them in as style or props: the TextLoop index, the AnimatedNumber value, the TextEffect trigger, the shimmer position. Pause Motion's imperative animate() controls and set .time = frame / fps. In HyperFrames, rebuild the effect on the composition's paused timeline (GSAP, or the CSS-keyframes or WAAPI adapters) using the component source as the reference, so seeking to any frame gives the same pose. Seed anything random, such as the TextScramble characters.","publisher":{"name":"Julien Thibeaut (ibelick)","handle":"ibelick","url":"https://github.com/ibelick"},"stars":6834,"hue":265,"cover":"motionprimitives.glow-effect"},{"id":"animata","name":"Animata","framework":"react","url":"https://animata.design","repo":"codse/animata","license":"MIT","install":"npx shadcn@latest add https://animata.design/r/<category>/<name>.json","note":"Animata is an open-source collection of hand-made React + Tailwind animations from Codse, installed through the shadcn registry. Its text section is unusually deep (blur-ins, focus pulls, kinetic word builds, glitch, scramble and typing), and it has dark, cinematic backgrounds such as light beams, shooting stars and a flocking simulation. Each piece is a single file with a live Storybook demo; copy it into a Remotion or HyperFrames composition and drive its timing from the frame.","licenseNote":"MIT (copyright Animata): free to use and modify in commercial videos; keep the license notice if you redistribute the source. Demo photos and brand logos that appear in some previews are not covered by the license, so swap in your own.","render":"Animations run on wall-clock time: CSS keyframes, setInterval and setTimeout, motion springs, requestAnimationFrame canvases, and a shared TextAnimator engine that chains Web Animations with timers. In Remotion, render the component and drive it from useCurrentFrame() / fps: pause CSS animations and set a negative animation-delay, swap motion springs for spring() or interpolate(), seed every Math.random. In HyperFrames, keep CSS keyframes as they are and let its CSS adapter seek them (give them a finite iteration count), create TextAnimator-style Web Animations up front so the WAAPI adapter can seek them, and lay timer-driven sequences out on the paused GSAP timeline instead.","publisher":{"name":"Codse","handle":"codse","url":"https://animata.design"},"stars":2985,"hue":200,"cover":"animata.shooting-stars"},{"id":"hero-patterns","name":"Hero Patterns","framework":"html","url":"https://heropatterns.com","license":"CC BY 4.0","install":"curl -LO https://heropatterns.com/svg/<name>.zip","note":"Steve Schoger’s set of 87 repeatable SVG tiles: contour maps, circuit boards, puzzles, food doodles, brick, chevrons and more. Each tile has a single fill, so you set a foreground color and opacity over any background color and it stays crisp at any size. On video they make clean, on-brand backdrops for title cards, lower thirds and explainer scenes, and a slow drift driven by the frame turns them into a moving background.","licenseNote":"Free for commercial videos, but CC BY 4.0 requires attribution: credit \"Hero Patterns by Steve Schoger (heropatterns.com), CC BY 4.0\" in the description or end credits, and say if you modified the tile beyond recoloring. There is no official source repository: the site generates the CSS and offers each tile as an unstyled SVG download. The `hero-patterns` npm package (lowmess) is a community MIT wrapper; its code license does not replace the CC BY on the artwork.","render":"Each pattern is a small SVG tile with one fill color and opacity, used as a repeating CSS background-image over a solid background color, so it renders the same on every frame. To animate it, move background-position (or a CSS transform on an oversized layer) as a pure function of the frame, never a CSS animation, in HyperFrames or Remotion. Scale tiles up (background-size) for 1080×1920 so fine motifs don’t shimmer after compression.","publisher":{"name":"Steve Schoger","handle":"steveschoger","url":"https://twitter.com/steveschoger"},"hue":270,"cover":"heropatterns.topography"}],"componentsDoc":"# Video components — the category system\n\nshadcn/ui and 21st.dev changed how the web is built: nobody writes a pricing section or a date picker from scratch, they copy a component that already works and own its code. Video made with code — HyperFrames, Remotion, three.js, p5, ffmpeg — has the same building blocks (a lower third, a caption style, a chart that builds, a whip-pan) but no shared shelf to find them on. varg Video Components is that shelf: real components from open registries, sorted so an agent or a person can find the right one in two clicks, plus a catalog of every kind of video those components add up to.\n\n## What we took from each\n\n| | shadcn/ui | 21st.dev | varg Video Components |\n|---|---|---|---|\n| Unit | registry item, copied into your project | community component on top of the shadcn registry | registry item from HyperFrames, remocn or varg, copied into your video project |\n| Install | `npx shadcn add <name>` | `npx shadcn add https://21st.dev/r/<author>/<name>` | the registry's own command: `npx hyperframes add <name>`, `npx shadcn@latest add @remocn/<name>`, or the template's render command |\n| Axis 1 | `type`: ui, component, block, page, theme, hook, lib | — | **layer**: primitive, component, block, template, theme, lib |\n| Axis 2 | a few block `categories` (sidebar, login, dashboard) | ~75 flat, noun-named categories in two groups with live counts | **category**: 45 noun-named categories in 7 groups, live counts, empty ones shown as Wanted |\n| Composition | a block lists `registryDependencies` | — | a **video type** is a recipe: beats in order, each naming the categories that build it |\n\n## The three axes\n\n**Layer — what you install.** Ordered from the smallest unit to the whole video, each mapped to the shadcn registry type it plays the role of.\n\n| Layer | shadcn | What it is | Example |\n|---|---|---|---|\n| Primitive | `registry:ui` | One move or treatment applied to your own content | a blur-in on your headline, a whip-pan between your scenes, a push-in |\n| Component | `registry:component` | Brings its own pixels and slots | a lower third, a caption style, a bar chart, a chat thread, a shader |\n| Block | `registry:block` | A whole scene with its own canvas, duration and timeline | an AI chat reveal, a data chart scene, a logo outro |\n| Template | `registry:page` | A finished video structure: scenes, timings, copy slots | a launch film, a Notes-app ad, a brand guidelines film |\n| Theme | `registry:theme` | A look the whole video inherits: palette, type pair, motion curves, grade | — wanted |\n| Hooks & lib | `registry:hook`, `registry:lib` | Logic without pixels | caption timing core, scene motion helpers, beat grids |\n\nThe primitive / component line is the one people ask about: **a primitive moves your content, a component brings its own.** A text reveal is a primitive (you give it the words); a caption style is a component (it draws the caption box, the highlight, the emoji).\n\n**Category — what it is on screen.** Seven groups. The first two mirror 21st.dev's split between Marketing Blocks and UI Components; the next three cover what video has and a web page does not.\n\n| Group | Mirrors | Categories |\n|---|---|---|\n| Scenes | 21st.dev Marketing Blocks | Intros & hooks · Title cards · Product showcases · Devices & mockups · Social proof · Stats & KPIs · Comparisons · Pricing & offers · Steps & timelines · Lists & rankings · Galleries & carousels · Maps & globes · CTAs & end cards · Logo stings |\n| On-screen | 21st.dev UI Components | Captions & subtitles · Lower thirds · Callouts & annotations · Social posts & cards · Chats & messages · App & UI mockups · Code & terminal · Cursors & clicks · Charts & data viz · Diagrams & flows · Progress & timers · Icons & stickers · Tickers & HUD |\n| Type | 21st.dev Texts | Kinetic type · Text reveals · Headlines & quotes |\n| Motion | — time is the medium | Transitions · Entrances & emphasis · Camera moves · 3D & objects · Particles & physics |\n| Looks | 21st.dev Backgrounds, Shaders, Gradients, ASCII Art | Backgrounds & gradients · Shaders · Textures & overlays · Filters & grades · Generative & ASCII |\n| Sound & sync | — | Audio visualizers · Beat sync |\n| Foundations | shadcn themes, hooks and lib | Layouts & grids · Themes & brand kits · Hooks & utilities |\n\nThe source of truth is `src/data/video-taxonomy.ts`; the System page renders it with live counts.\n\n**Video type — what you are making.** 78 kinds of video that code can make, in 13 groups: marketing & ads, social & creators, developer & product, data & news, education, music & audio, brand & identity, broadcast & events, personal, personalized at scale, art & loops, presentations, games. Each is written as a recipe in `data/components/genres.json`:\n\n```json\n{\n  \"id\": \"changelog\",\n  \"title\": \"Changelog & release notes\",\n  \"input\": \"Release notes or CHANGELOG.md\",\n  \"recipe\": [\n    { \"beat\": \"Version\", \"categories\": [\"title-cards\", \"kinetic-type\"] },\n    { \"beat\": \"Changes\", \"categories\": [\"lists\", \"code\", \"mock-ui\"] },\n    { \"beat\": \"Highlight\", \"categories\": [\"showcases\", \"cursors\"] },\n    { \"beat\": \"Upgrade\", \"categories\": [\"code\", \"outros\"] }\n  ],\n  \"across\": [\"transitions\", \"themes\"]\n}\n```\n\n`input` is what makes it a code-made video: the thing the code binds to (a CSV, a PR, a song with word timings, a URL, a CRM row). Coverage is computed — the share of the recipe's categories that have at least one component — so every video type shows which components are still missing, and the Wanted list ranks missing categories by how many video types they block.\n\n## Rules for categories\n\n1. **Nouns for what is on screen.** \"Lower thirds\", not \"Information display\"; \"Transitions\", not \"Editing\". If a person can't point at it in a frame, it is not a category.\n2. **One primary category per component.** Up to three more go in `also`. Counts and chips use the primary only, so a chip always shows what a click returns; the category page lists `also` matches in their own section.\n3. **Closed and ordered.** The set never changes shape when a component lands or leaves. An empty category stays on screen as Wanted — the gap is the signal.\n4. **A new category needs a video type that needs it.** Add it to the taxonomy and to at least one recipe in the same PR. `bun run validate` fails on a category no recipe uses.\n5. **Layer comes from the registry, category from the content.** The registry says what an item is structurally (a HyperFrames block, a remocn lib); the classifier says what it shows.\n\n## How components get filed\n\n`bun run sync:components` pulls each registry and files every item:\n\n- **HyperFrames** — `registry/registry.json`, then each `registry-item.json` (title, description, tags, canvas, duration, variables, preview video and poster). Block → block, example → template, component → primitive when tagged as a motion, transition or effect primitive, else component.\n- **remocn** — the four shadcn registries (`remocn`, `remocn-ui`, `remocn-icons`, `remocn-templates`), the docs pages listed in remocn.dev's sitemap (each component's docs section is remocn's own rubric and narrows which categories may win), and the generated preview manifest (canvas, duration, default props → slots). It is read line by line, never evaluated.\n- **varg** — `data/components/varg.json`, curated by hand from vargHQ/code2video-templates.\n- **Design libraries** — React Bits, Magic UI, GL Transitions, Vanta.js, ShaderGradient, Aceternity UI, tsParticles, Codrops, Fancy Components, Animate UI, Motion Primitives, Animata and Hero Patterns. Curated by hand, one `data/components/<library>.json` each; see *Library templates* below.\n\nThe classifier (`scripts/component-rules.ts`) runs ordered rules in three tiers — words in the name or title, then registry tags, then the description — and the first hit is the primary category. A misfiled component is fixed by a word in a rule or a line in `data/components/overrides.json` (`\"<prefix>.<name>\": \"<category>\"`), never by editing the synced JSON. `bun run validate` fails on an override that names an unknown category or has not been applied by a sync yet.\n\n### The daily sync\n\nThe daily routine that refreshes Discover also runs `bun run sync:components`, so a component published to HyperFrames or remocn shows up here the next morning, filed. The sync is built to run unattended:\n\n- A registry that cannot be reached keeps its previous file (`failed:`); a HyperFrames item that fails to fetch keeps its last synced copy; remocn's docs sections fall back from the sitemap to the GitHub tree to the last sync.\n- If more than max(10, 10%) of a registry's items vanish at once, the file is held (`held:`) until a person re-runs with `--allow-removals`.\n- A file is rewritten, and its `syncedAt` bumped, only when its content changed.\n- Every change is listed: `+` added, `?` added but filed by the fallback because no rule matched, `−` removed, `→` moved to another category.\n\nThe routine reviews each `?` and `+` line; when the category is clearly wrong it adds a line to `overrides.json` and syncs again. It never edits rules, code or `varg.json`, and commits the component files separately from the trend snapshot.\n\n## Library templates\n\nMost of the best motion on the web was never published as a video registry: shader backgrounds in React Bits, GLSL transitions in gl-transitions, particle presets in tsParticles, kinetic type in Codrops demos. Those libraries are listed as registries too, but varg curates them by hand. Only pieces that look good at 1080×1920 make it in, under licenses that allow use in a commercial video. Each item carries three things a synced registry item doesn't:\n\n| Field | What it is |\n|---|---|\n| `clock` | How time works in it. `seek-safe`: time is an input, so frame N always renders the same (GL Transitions, React Bits Aurora). `adapt`: it runs on `requestAnimationFrame`, timers, springs or CSS, so the agent drives it from `frame / fps` before rendering. `static`: no motion of its own (patterns). |\n| `prompt` | An instruction written in varg's own words. It names the library, the template, the URL and the license, says where the piece sits in the frame and which props to set, and explains how to make it seek-safe in HyperFrames or Remotion. \"Copy prompt\" hands it over, followed by the install command. |\n| `preview` | A real capture, kept in `public/previews/lib-<library>-<name>.{mp4,webp}` and versioned by size (`?v=<bytes>`). `credit` says how it was made, either rendered by varg from the library's own code or cropped from the library's own demo page. `note` carries attribution for any footage in it, such as the CC BY Blender stills behind the transition previews. The `.webp` posters are committed; the `.mp4` clips are gitignored like every other preview video and ship with the deploy from the checkout that has them (a fresh clone shows posters only until you re-run `bun run capture` or copy the clips in). |\n\nThe registry record (`registries.json`) adds `publisher`, `stars`, `hue`, `licenseNote` (what the license means for a commercial video, e.g. \"MIT + Commons Clause: render it, don't resell the code\"; \"CC BY 4.0: credit Hero Patterns\") and `render` (how a piece from this library becomes frames). Each library gets its own page at `#registry.<id>`, and the Components index shows all of them on the *Templates from design libraries* shelf.\n\n**Adding a library.** It must look good on video, carry a license that allows commercial video, not already be in the catalog, and have at least 10 pieces worth listing. Write the registry record, then one item per piece. File the category by what is on screen (a WebGL field → Shaders, confetti → Particles & physics, a marquee → Galleries & carousels). Text effects and transitions are primitives, because they move your content; everything else is a component. Capture previews with `bun run capture <manifest>`. It records the live demo or a local harness page in headless Chrome, crops to the piece, cuts a 5 s clip and a poster, and writes `preview` into the item. Look at every poster before you commit.\n\n## A registry item for video (proposed)\n\nWhat a video registry item needs beyond shadcn's `registry-item.json`, so any registry can be listed without a classifier. HyperFrames items already carry most of it (`dimensions`, `duration`, `variables`, `preview`); remocn carries it in its preview manifest.\n\n```json\n{\n  \"name\": \"lt-soft-pill\",\n  \"type\": \"video:component\",\n  \"title\": \"Soft Pill Lower Third\",\n  \"description\": \"Name and role in a rounded pill that slides up from the bottom edge.\",\n  \"categories\": [\"lower-thirds\"],\n  \"framework\": \"hyperframes\",\n  \"canvas\": { \"width\": 1920, \"height\": 1080 },\n  \"duration\": 4.8,\n  \"fps\": 30,\n  \"slots\": [\n    { \"id\": \"name\", \"type\": \"string\" },\n    { \"id\": \"role\", \"type\": \"string\" },\n    { \"id\": \"accent\", \"type\": \"color\" }\n  ],\n  \"registryDependencies\": [],\n  \"dependencies\": [],\n  \"preview\": { \"poster\": \"https://…/poster.jpg\", \"video\": \"https://…/preview.mp4\" },\n  \"runs\": \"local\",\n  \"files\": [{ \"path\": \"lt-soft-pill.html\", \"type\": \"video:component\" }]\n}\n```\n\n- `type` is the layer: `video:primitive`, `video:component`, `video:block`, `video:template`, `video:theme`, `video:lib`.\n- `categories[0]` is the primary category; the rest become `also`.\n- `canvas` and `duration` are required for blocks and templates (they own a timeline) and omitted for primitives and components (they size to the host).\n- `slots` are what an agent fills from the brief — the video equivalent of props.\n- `runs: \"credits\"` marks items that generate AI footage and must ask before spending.\n\n## Moving into the app\n\n| Prototype | App |\n|---|---|\n| `#components`, `#components.<category>.<layer>` | `/dashboard/components?category=&layer=` |\n| `#c.<registry>.<name>` | `/dashboard/components/<registry>/<name>` |\n| `#videos.<group>`, `#video.<id>` | `/dashboard/components/videos?group=`, `/dashboard/components/videos/<id>` |\n| `data/components/*.json` | a `components` table with the fields above, synced nightly by a worker |\n| `genres.json` | a `video_types` table; recipes stay JSON |\n| \"Copy the recipe for your agent\" | the same prompt from an API route (for example `/v2/components/recipes/<id>`), so the MCP server can hand it to an agent directly |\n"}