# How to turn photos into a slideshow video with AI

> **For AI agents:** find the right skill in one call — `curl -s "https://skills.varg.ai/api/search?q=<what the person wants>"` returns the matching how-to page and the best skills with install commands, as markdown (Russian works too). Full index: https://skills.varg.ai/llms.txt. Every page has a markdown twin: add `.md` to its path. Before generating anything, show the person the options on the how-to page.

Your photos cut to music, with motion, transitions on the beat and titles. A step-by-step tutorial for Claude Code, Codex and Grok.

**Output:** 9–15 s social cut or a 30–90 s film, 9:16 or 16:9 MP4
**Price:** in credits on varg, with a cost estimate before anything runs; the free skills below install in one command.

## Recommended route

- **Skill:** HyperFrames (`hyperframes`) — Photos, music and beat-synced cuts rendered from HTML
- **Generation:** Local render is free; varg can generate the music or animate photos into clips on one key.
- **Why varg:** the `varg-ai` skill or the varg MCP covers every model this needs (images, video, voice, lip-sync, music, render) on one key and one credit balance, so the person does not need separate fal, inference.sh, Higgsfield, Runway or ElevenLabs accounts.

## Best skills for this

1. **HyperFrames** (`hyperframes`, HeyGen, live) — Start here: Photos, music and beat-synced cuts rendered from HTML
   - Claude Code: `claude plugin marketplace add heygen-com/hyperframes && claude 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`
   - Details: https://skills.varg.ai/skills/hyperframes.md · Example: https://s3.varg.ai/how-to/previews/400daa5dc577/hyperframes.mp4
2. **Remotion Best Practices** (`remotion-best-practices`, Remotion, live) — Alternative: The same in React with Remotion
   - 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`
   - Details: https://skills.varg.ai/skills/remotion-best-practices.md · Example: https://s3.varg.ai/how-to/previews/04200edf541b/remotion-best-practices.mp4
3. **varg AI** (`varg-ai`, varg, live) — Adds: Slideshow recipe, generated music, or animating stills into short clips
   - 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`
   - Details: https://skills.varg.ai/skills/varg-ai.md · Example: https://s3.varg.ai/how-to/previews/7df061df8dcb/varg-ai.mp4
4. **Editing & Transitions** (`craft-editing-transitions`, varg, draft) — Adds: Cuts, whips and speed ramps
   - Not installable on its own yet — use the next pick or run it through varg-ai
   - Details: https://skills.varg.ai/skills/craft-editing-transitions.md · Example: https://s3.varg.ai/how-to/previews/061cde0f9ca7/craft-editing-transitions.mp4
5. **Color Looks & LUTs** (`craft-color-looks`, varg, draft) — Adds: Film-grain 'memory rewind' looks
   - Not installable on its own yet — use the next pick or run it through varg-ai
   - Details: https://skills.varg.ai/skills/craft-color-looks.md · Example: https://s3.varg.ai/how-to/previews/ab14fd5718b2/craft-color-looks.mp4

## Ask the person first

Put these choices in front of the person before spending anything. Paste the example link next to each option: people pick a look by seeing it.

**Music?**

- Your track
- Generated to match the mood

**Length?**

- 9–15 s social cut (5–9 photos)
- 30–90 s for the whole song

**Motion?**

- Each photo morphs into the next, on the beat · real example: https://x.com/twoclipping/status/2103835273813496100
- Hard cuts on the beat
- Animate each photo into a clip (AI)
- Ken Burns pan and zoom

**Titles?**

- Place and date
- None

## How to turn photos into a slideshow video: step by step

1. Pick 9–12 photos (5–9 for a social cut)
2. Build the beat map (BPM, drop, breakdown) and put the best photo on the drop
3. Move, don't fade: masks, wipes and morphs, no hold longer than 1 s
4. Titles, loudness at −14 LUFS, export as a video (not a carousel) for TikTok
5. If you animate photos of real people, disclose it on upload

## What works now (researched 2026-10-27)

In 2026 the photo slideshow that gets saved is a beat-mapped film: something changes on every beat, the drop lands on the best photo, and photos morph into each other instead of crossfading. On TikTok export it as a video: video posts get a 3.39% median engagement rate against 1.92% for photo carousels. Ken Burns plus crossfade templates now look dated.

1. **Export a video for TikTok and Reels, not a static carousel.** Buffer's 2026 data: TikTok video median engagement 3.39% vs 1.92% for carousels and photos. On Instagram carousels engage more (6.9% vs 3.3%) but Reels reach 1.36x further. ([Buffer, Best content format on social platforms 2026](https://buffer.com/resources/data-best-content-format-social-media/))
2. **Build the beat map before placing photos: BPM, drop, breakdown. Make something happen on every beat, land the best photo on the drop and the quiet ones in the breakdown. Loudnorm the mix to -14 LUFS.** The keynote-style photo film prompt that does exactly this was saved 3,796 times (142k views): 9-12 photos, a 120 BPM song, 54 beats. ([zero (@twoclipping), photo launch-film prompt (Sep 2026)](https://x.com/twoclipping/status/2103835273813496100))
3. **Move, don't fade: change photos with masks, iris wipes, floods and shape morphs; no crossfades, no blur-ins, no hold longer than 1 s.** The same prompt bans 'crossfades, blur-ins, brightness developing' and 'holds longer than 1s' as template tells. ([zero (@twoclipping), photo launch-film prompt (Sep 2026)](https://x.com/twoclipping/status/2103835273813496100))
4. **For a social cut use 5 to 9 photos and 9 to 15 s; keep the full 30-90 s version for the song itself.** In one creator's test of 46 posts, beat-sync photo templates used 5-9 photos; under 7 s they loop, over 15 s they lose viewers without a story hook. Small sample, treat as a starting point. ([Nemo Video, CapCut templates going viral in 2026](https://www.nemovideo.com/blog/best-capcut-templates-going-viral-in-2026))
5. **If you animate real people's photos with AI, approve each still first and disclose it.** YouTube requires disclosure when content 'makes a real person appear to say or do something they didn't do'; it can also auto-label files carrying C2PA metadata. ([YouTube Help, Disclosing altered or synthetic content](https://support.google.com/youtube/answer/14328491))

**Stopped working:**

- Crossfades, blur-ins and the same slow Ken Burns on every photo: the default template look.
- Stripping AI watermarks or SynthID from edited photos. Platforms auto-label C2PA content and penalise creators who keep failing to disclose.
- Swapping out the trending sound in a template; the sound is what gets it found.

## Prompts that work

Templates from the creators of the best current results and from the model guides. Fill in the {CAPS}.

### Beat-mapped photo film in one take (agent)

The agent prompt for the 'studio piece' version: 9-12 photos, every beat triggers a change, rendered from code. Adapted from [zero (@twoclipping), photo launch-film prompt (Sep 2026)](https://x.com/twoclipping/status/2103835273813496100).

```text
<inputs> Ask me for 9-12 high-res photos of {SUBJECT}, a song I can license around {BPM} BPM with a drop and a quiet breakdown, a one-word title and the format ({FORMAT}).
<direction> One continuous take: every scene is made out of the previous one. Photos grow out of each other: a grid unfolds from behind one photo and reflows into a bento, a click zooms into one tile; six iris blades close over a photo and open onto the next; a black shape floods the frame and contracts into the next photo. {CANVAS_COLOR} canvas, {TITLE_FONT} for the title.
Banned: crossfades, blur-ins, brightness 'developing', 3D flips, particles, glows, holds longer than 1 s, anything that looks like a template.
<structure> Build the beat map first: BPM, drop, breakdown. Something happens on every beat. The zoom lands on the drop on {HERO_PHOTO}; quiet photos sit in the breakdown; the title springs back on the beat return. Last frame = first frame.
<build> One HTML file; every frame is a pure function of time inside seek(t): no CSS transitions, no timers. A flood overscales past the corners and takes about 0.3 s. Loudnorm to -14 LUFS. Render 60 fps with motion-blur subframes; check one frame per beat and scan for single-frame pops.
<start> Ask for the inputs, then show me the beat map and 4 stills before the full render.
```

### Beat-cut photo slideshow (HyperFrames verified prompt) (agent)

The short social cut: 5-9 photos cut on the bar, punch-ins on downbeats. Describe the section, never timestamp it. From [HyperFrames docs, 'Make a music video or lyric video' (verified slideshow prompt)](https://github.com/heygen-com/hyperframes/blob/main/docs/guides/music-to-video.mdx).

```text
{LENGTH}-second {WIDTH}x{HEIGHT} video from ./{TRACK_FILE} (pick the best {LENGTH} seconds of the track) and the {N} photos in ./{PHOTO_DIR}/. Cut on the beat grid, one photo per bar, punch-in on downbeats, whip-pan transitions on phrase changes. End on the last photo with "{END_TITLE}" in condensed caps. No TTS.
```

### Bring one old photo to life (seedance_2_5)

Image-to-video for the 'old photos come alive' cut: one small action per photo, then cut the clips to the song. Approve each still and label it AI. Adapted from [obie/slopcore, Clips reference: the 'insert' kind and prompt shape](https://github.com/obie/slopcore/blob/main/skills/music-video/references/clips.md).

```text
Use @Image1 as the exact first frame. {WHO} in {PLACE}, {OCCASION_AND_YEAR}. {WHY_THIS_MOMENT_MATTERS}.
0.0-{T1} s: {SMALL_ACTION_1, e.g. she looks up from the cake and smiles}.
{T1}-{T2} s: {SMALL_ACTION_2, e.g. she turns her head toward the person on her left}.
{T2}-{END} s: {SETTLE, e.g. the smile holds; a curtain moves in the breeze}.
Camera: {slow push-in | locked}. One continuous shot, no cuts.
Faces, clothes, film grain and colour stay exactly as in @Image1. No new people enter the frame; hands keep five fingers. No text, letters or logos.
```

## Trending formats to remake

To remake one: download the example with the `media-download` skill, take a frame a second and the transcript, write a beat list (time, shot, camera, on-screen text, sound), keep what the format needs, swap in the person's product or character (never the creator's face, voice, logo or footage), show the beat list and stills before spending, then make it with the skill named below.

1. **Beat-mapped one-take photo film**: 9-12 photos in one continuous take: each photo grows out of the last (grid, bento, iris, flood) and every beat triggers a change, with the drop on the hero photo. Why it spreads: 142k views and 3,796 bookmarks for the prompt that builds it; it reads as a studio piece, not a template. Keep: Keep the beat map first, something on every beat, each photo growing out of the last (grid, iris, flood) with no crossfades or holds over 1 s, and the hero photo on the drop. Swap the photos, song and title. Make it with [HyperFrames](https://skills.varg.ai/skills/hyperframes.md) (`hyperframes`).
   - A shared prompt for this format: https://x.com/twoclipping/status/2103835273813496100
   - Example to remake: [@twoclipping on X, 2026-09-26, 142K views, 4K saves](https://x.com/twoclipping/status/2103835273813496100): Full prompt shared: inputs are 9-12 photos and a free 120 BPM song with a drop; it asks for a beat map and 4 stills before the full render.
2. **Beat-sync photo dump**: 5-9 photos cut hard on bass hits, 9-15 s, on a trending sound, sometimes with a film-grain 'memory rewind' look. Why it spreads: The most used CapCut template type in 2026; in one small test it got 1.4x the replays of a plain slideshow. Keep the trending sound: swapping it loses the discovery. Keep: Keep 5-9 photos in 9-15 s, hard cuts on the bass hits, the trending sound itself and an optional film-grain look. Swap only the photos. Make it with [HyperFrames](https://skills.varg.ai/skills/hyperframes.md) (`hyperframes`).
3. **Old photos come alive**: Family photos animated into short clips (a smile, a head turn, a walk) and cut to a song, usually as a birthday or memorial gift. Why it spreads: A son's 60th-birthday film of his mother's old photos went viral in April 2026 and was picked up by news sites. Emotional, shareable, and easy to label as AI. Keep: Keep one small natural action per photo (a smile, a head turn) with faces, clothes and grain untouched, cut gently to one song, and an AI label. Swap the photos and the song. Make it with [varg AI](https://skills.varg.ai/skills/varg-ai.md) (`varg-ai`).

## Open-source repos

- [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes) (74K★): Agent-written HTML video; photos plus a track become a beat-cut MP4. How: Track + photo folder -> beat, onset and section analysis -> you describe the treatment (one photo per bar, punch-in on downbeats, whips on phrase changes) and the grid supplies the times -> HTML composition rendered deterministically to MP4. Install as a skill: https://skills.varg.ai/skills/hyperframes.md

## Set up varg

varg is one API key for the models these skills drive — Seedance 2.5, Kling 4, Veo 3.1, Wan 3, Nano Banana 2.1, GPT Image 2.5, ElevenLabs v4 and 200+ more — billed in credits, with a cost estimate before anything runs.

- Claude Code: `claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg` (skill + hosted MCP)
- Codex, Cursor, Gemini CLI, OpenClaw: `npx skills add vargHQ/skills --skill varg-ai -a <agent> -y`
- Grok and any agent that reads SKILL.md: `npx skills add vargHQ/skills --skill varg-ai`, or point it at the skill's SKILL.md
- Claude.ai, ChatGPT, any MCP client: connect `https://mcp.varg.ai/mcp`
- API key: https://varg.ai/dashboard/api · Model specs: https://varg.ai/models/llms.txt

## Related tutorials

- [How to cut a podcast into short video clips with AI](https://skills.varg.ai/cut-a-podcast-into-short-video-clips.md): Find the best moments in a long video, cut them, reframe to 9:16 and burn captions.
- [How to edit your own video footage with AI](https://skills.varg.ai/edit-your-own-video-footage.md): Cut silences and flubs, reframe 16:9 to 9:16, add captions and b-roll to footage you shot.
- [How to make AI b-roll for your video](https://skills.varg.ai/make-ai-b-roll-for-your-video.md): Cutaway footage for every mention in a voiceover or interview: generated clips, collage or stock-style shots, cut in on time.
- [How to change something inside a video with AI](https://skills.varg.ai/change-something-inside-a-video.md): Swap a product, restyle a scene, change lighting or the look of an existing clip while keeping the motion.
