17-second example rendered by this skill from examples/farside-dunes · 1280×720
Example settingswhat each example above was built from
examples/farside-dunesbrief.json
- Brand
- Farside
- Format
- tall
- Headline
- Go further out
- Colors
- ground #0b0d12 · paper #f3efe6 · ink #0b0d12 · accent #ff6a2b · frame #0b0d12 · duoDark #0d1433 · duoLight #ffc89e
examples/starlite-hallbrief.json
- Brand
- Starlite
- Format
- square
- Headline
- Open all night
- Colors
- ground #f4ead7 · paper #fff8ec · ink #2b1610 · accent #c42b20 · frame #f4ead7 · duoDark #3a1810 · duoLight #ffd99c · leak #ff8a3d
What you get
- A 1080×1920, 1080×1080 or 1920×1080 MP4 of your photos cut on the beat, with its own original music
- An original soundtrack with sound effects on every cut, slam and the brand, synthesised on your machine, with nothing to license
- Seven mask transitions, including your logo mark on the drop, each opening from the focal point you set
- Speed-ramped camera moves and up to three-word title slams on frozen duotone frames
- One grade for the whole film (natural, duotone in your colours or warm film) with grain, light leaks and a designed frame
- An end card with your mark, a filmstrip of every photo, a button and an address on the final hit
- Open-source licenses for every part it builds on
Good fit
- A travel, venue or lifestyle brand with a folder of good photos and no time to edit video.
- A team that wants the same photos as a 9:16 reel, a 1:1 post and a 16:9 cut without re-editing.
- A launch or season recap where three-word title slams carry the message between photos.
Not for
- Video clips: it cuts still photos only
- Fewer than 6 or more than 14 photos
- Long captions or subtitles over the photos
- Vocals or a licensed hit song, since the music is synthesised
About this skill
Your own photos cut to an original beat-synced soundtrack as an agency-style social edit, not a slideshow. Every photo enters on a beat through a different mask led by a band of your accent colour: slats, blinds, an iris, a diagonal, split panels, tiles, or your own logo mark on the drop. Each one rides a speed-ramped camera move about a focal point you give, so a subject on the right of a landscape photo stays framed in 9:16. Title slams freeze a photo into a duotone and stamp up to three words, one per beat. One grade covers the film, with grain, light leaks, a matte and a progress rail drawn in code, and the brand lands on the music's final hit.
Example request
Cut these 8 photos of our trips into a vertical beat-synced short with two three-word title slams and a duotone grade in our colours, ending on our logo with a Plan a trip button.
How it works
Your agent
- 1
Make the project
- 2
Choose and order the photos
Ask for 6 to 14 photos.
- 3
Write the words
Short, punchy, one idea per slam.
- 4
Pick the look
Two starting looks: Night expedition (9:16, duotone, condensed): ground
#0b0d12, paper#f3efe6, ink#0b0d12, accent#ff6a2b, duo#0d1433to#ffc89e. - 5
Write the brief
Start from
<skill>/examples/farside-dunes/brief.json(9:16, dark, duotone, 6 photos, 2 slams) or<skill>/examples/starlite-hall/brief.json(1:1, light, warm film, 6 photos, 1 slam). - 6
Apply the brief
It checks the whole brief and lists every problem at once with the fix (a missing photo, a photo too small, a focus out of range, a word too long, a slam on the last photo, colours the text can't be read on, a music setting out of range).
- 7
Check and look
checkmust say"ok": true(onefilm_silentwarning is expected: the music is muxed in after the render). - 8
Render
It runs the layout gate, renders with the pinned HyperFrames, checks the track and its stems with
scripts/music/check.mjs(loudness, every visual event has its sound, sync of each sound to its cut from 67 ms early to 17 ms late, density, ring-out, licences), muxes it as AAC with a true-peak limit of -1 dBTP, and checks the MP4. - 9
Hand it off
Give the person the MP4 and two stills: a slam and the end card.
- 1
You get


What you need
- Node.js 22 or newer and FFmpeg (with
ffprobe) on the PATH. - HyperFrames runs through
npx, pinned to the version this template was tested with:npx --yes hyperframes@0.8.192. The first render downloads a headless Chrome; ifrendersays Chrome is missing, runnpx --yes hyperframes@0.8.192 browser ensureonce. The layout gate uses a local Chrome too (setCHROME_PATHif it can't find one). - Network access to
fonts.googleapis.com(Anton, DM Serif Display, Inter Tight) andcdn.jsdelivr.net(GSAP). See Troubleshooting if either is blocked. - The photos: JPEG or PNG, 6 to 14 of them, ideally at least 1080 px on the short side (the script warns below that and refuses below half of it).
Last checked Nov 2, 2026: the package’s own build and render commands ran and passed.
If something goes wrong
Render hangs or shows a static frame.
GSAP didn't load. If
cdn.jsdelivr.netis blocked,npm pack gsap@3.14.2, copypackage/dist/gsap.min.jstoassets/vendor/, and point the<script src>inindex.htmlatassets/vendor/gsap.min.js.apply-briefleaves it alone.Titles in the wrong font.
fonts.googleapis.comwas unreachable; HyperFrames caches the font after one good fetch.A subject is cut off.
Move that photo's
focustoward it. In 9:16, a subject at the very edge of a wide photo can't be centred; the crop stops at the photo's edge.
What’s in the download
- SKILL.md18.1 KB
- examples/
- examples/farside-dunes/1.40 KB9:16, dark, duotone, condensed type, an arch-and-horizon mark, 6 photos, 2 slams,
warm-houseat 120 bpm (drop on photo 5, 17.45 s). · 1 file - examples/starlite-hall/1.20 KB1:1, light, warm film, serif italic, a starburst mark, 6 photos, 1 slam,
upbeat-popat 112 bpm (drop on photo 4, 14.33 s). · 1 file - scripts/
- scripts/gate/the layout gate (T1 to T6) and its Chrome DevTools client.
- scripts/gate/cdp.mjs5.63 KB
- scripts/gate/gate.mjs19.6 KB
- scripts/music/beatgen 2.1, the music and sound-effects generator, with its checker; see its README.
- scripts/music/examples/
- scripts/music/examples/events.example.json555 B
- scripts/music/samples/
- scripts/music/samples/manifest.json371 B
- scripts/music/beatgen.mjs11.8 KB
- scripts/music/check.mjs50.0 KB
- scripts/music/dsp.mjs20.0 KB
- scripts/music/engine.mjs51.7 KB
- scripts/music/mux.mjs2.36 KB
- scripts/music/presets.mjs36.8 KB
- scripts/music/README.md23.7 KB
- scripts/music/samples.mjs4.90 KB
- scripts/music/sfx.mjs17.1 KB
- scripts/music/theory.mjs3.34 KB
- scripts/music/voices.mjs16.9 KB
- scripts/apply-brief.mjs23.3 KBchecks the brief, copies the photos, lays the film out on the beat grid, generates the track, writes the storyboard and clips.
- scripts/beat-grid.mjs13.0 KBthe music block, beatgen's plan (drop, final hit) and the track.
- scripts/render.mjs7.75 KBgate, render, track check, mux, MP4 check.
- template/the HyperFrames project.
index.html(clips, written by apply-brief),montage.css(grades, bands, frame),montage.js(masks, camera, slams, end card, timeline),storyboard.js(written by apply-brief). - template/hyperframes.json318 B
- template/index.html2.23 KB
- template/montage.css6.31 KB
- template/montage.js31.9 KB
- template/package.json304 B
- template/storyboard.js117 B
- NOTICE.md1.38 KB
- PROMPT.md2.80 KB
- TESTED.json2.76 KB
30 files · 378 KB · installs to ~/.claude/skills/photo-beat-montage for Claude Code and ~/.agents/skills/photo-beat-montage for other agents
Credits and licenses: NOTICE.md plus any LICENSE files inside the ZIP.
Similar Skills
View allDetails
- Output
- MP4 · 12–25 s · 1080×1920, 1080×1080 or 1920×1080
- Needs
- Node.js 22+, FFmpeg on the PATH and Chrome (HyperFrames downloads its own headless Chrome on first render); network access to fonts.googleapis.com and cdn.jsdelivr.net; 6 to 14 of your own photos.
- Series
- Social Shorts · 6 skills
- Updated
- Nov 2, 2026
- Checked
- Nov 2, 2026: its own commands ran and passed. That is a working check, not a security audit.
Written for
See all 31 agents that read skill folders.
Install guides
For your agent
Generates with
Installed it? Tell others how it went. Reviews come from people who installed this skill.
Write a reviewFAQ
How do I stop a face or product being cropped out?
Give each photo a focal point as fractions of the frame, like [0.7, 0.4] for 70% across and 40% down. The crop keeps that point as near the middle as the photo allows, the camera moves about it, and the iris, slats, tiles and logo masks open from it.
What size should my photos be?
JPEG or PNG, ideally at least 1080 px on the short side. The checker warns below that and refuses photos under half of it, because a 9:16 crop of a small landscape photo is an upscale and looks soft.
Can my logo be a transition?
Yes. Give your mark as one SVG path in the brief and the cut on the music's drop opens through it, growing from the focal point until it fills the frame. The mark also sits as a small badge in the corner and becomes the end card.
Which agents is Photo Beat Montage written for?
Any agent that reads SKILL.md folders, including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI and OpenCode.
Do I own what I make with it?
Yes. Everything your agent makes with this skill is yours, including for client and commercial work.
What if it doesn’t work for me?
Email support@lookbk.dev within 7 days of buying and we’ll fix it or refund you.
Credits and licensesBuilt on heygen-com/hyperframes
What Lookbk adds on top of heygen-com/hyperframes (Apache-2.0): Lookbk wrote this package and its music generator; it renders with HyperFrames (Apache-2.0) and GSAP (Standard License), sets type in Anton, DM Serif Display and Inter Tight (SIL Open Font License 1.1), and the example photos are frames of footage Lookbk generated for itself.
Credits and licenses for the open-source software and fonts it uses are in NOTICE.md inside the download.