Render Flatlay
Documentsrender-flatlayRender Flatlay is an Agent Skill for documents published in the majiayu000/claude-skill-registry repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.
Render the FREE steps of the flatlay-product-reveal video format — composite each flat product cover onto the dressed tabletop plate to make the Veo start frames (build_start_frames), speed-and-hard-cut concat the i2v beats plus the HTML end card and mux the music (build_master), and screenshot the brand end-card HTML to a static-dwell clip (render_endcard). Deterministic, FREE (Playwright + PIL + FFmpeg), no paid calls, product covers and end-card text stay pixel-crisp. The paid steps (flat covers, Veo beats, music) are separate capabilities; the recipe orchestrates them. Use for the flatlay-product-reveal format.
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
Inspect the Agent Skill at https://github.com/majiayu000/claude-skill-registry/blob/HEAD/skills/other/render-flatlay/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/render-flatlay, but wait for my approval before writing files or running scripts.
Copying this prompt does not install or run the skill. Review third-party files before use.
render-flatlay
Renders the FREE composite/assembly steps of the flatlay-product-reveal video format: a top-down tabletop listicle where, beat by beat, a product lies flat on a dressed linen plate, two hands cup and lift it, then hard-cut to the next product, closing on an HTML brand end card over a music bed.
Three FREE scripts, no paid model calls:
- build_start_frames.py — PIL: composite each true-top-down flat product cover, centered at a natural size, onto the dressed tabletop plate → one Veo start frame per beat.
- build_master.py — FFmpeg: speed each Veo beat by
beat_speed(~1.5x, 4s → ~2.67s), HARD-CUT concat all beats (no dissolves — the listicle snap), optionally append the insert/greeting card, append the end-card clip, then mux the music bed. All clips are normalized to one fps/codec so concat-copy is safe. - render_endcard.py — Playwright screenshots the brand's own
end_card.html(wordmark + trust icons + CTA) → an ffmpeg static-dwell mp4. Deterministic; the end-card text is the brand's real HTML, never AI-rendered.
Run
build_start_frames.py --config config.json --run-dir # composite flat covers → start frames render_endcard.py --config config.json --run-dir # brand HTML → end-card clip build_master.py --config config.json --run-dir # speed + hard-cut concat + mux → master-final.mp4
Output: 1080x1920, ~14-16s h264 (+ aac music). All FREE, $0.
Contract
- Deterministic + FREE (PIL + Playwright + FFmpeg); no paid calls, no AI-rendered text.
- Hard cuts between beats (no dissolves); camera stays locked top-down (a property of the paid beats, preserved here).
- Product covers stay pixel-identical through composite + concat; the end card is the brand's own HTML.
- The paid steps — flat-cover transform, Veo 3.1 i2v beats, ElevenLabs music — are separate capabilities (create-image-fal, create-video-fal, create-music-elevenlabs); the recipe orchestrates them and gates the spend.