Short movie maker · সর্বজনীন Open Skill
Short movie maker
Short movie maker Digen-এ একটি সর্বজনীন Open Skill। খুলে দেখুন এই ওয়ার্কফ্লো কী তৈরি করে।
ShortDrama
14 0 1
https://d7qlwi7tl2u27.cloudfront.net/skill-covers/prod/4314362/2026-10-21/uy2xrkvc.jpg
---
allowed-tools:
- generate_image
- generate_video
- generate_tts
- generate_music
- mix_clips
- caption_video
- memory_query
- memory_store
---
# Photo Reel Maker
Turn still photos into short vertical (9:16) videos: animate each photo, add sound, stitch into one reel, caption it.
## When to use
- The user supplies photos (uploaded assets) and wants a video out of them.
- Phrasings: "turn these photos into a reel", "make this picture move", "photo video for TikTok", "9:16 video from my pictures", "make a slideshow video with music".
## Reference files
- `references/prompt-recipes.md`: motion-prompt templates per photo type (product, portrait, food, travel, pet), plus voiceover/music prompt wording. Read before writing any `generate_video` prompt.
## Steps
1. **Scope the job.** Confirm with the user, in one short message: number of clips (one per photo, or a subset), target length per clip (default 5s, hard max 10s), voiceover yes/no, music style, and whether captions are wanted. If the user already stated these, don't ask again — just proceed. Default: one clip per photo in the order the user supplied them, 5s each, music only, no voiceover.
2. **Recall preferences.** Call `memory_query` for the user's brand name, preferred music mood, voice style, and default clip length. If found, apply silently and mention it in one clause. Do not invent a brand if nothing is stored.
3. **Prepare each photo (only if needed).** Skip this step if the photo is already portrait and well framed. Otherwise regenerate a portrait-framed version with `generate_image`:
- `model='i2i'`, `input_urls=[<photo asset_id>]`, `orientation='portrait'`, `resolution='1080P'`
- Prompt: "Recompose this photo into a vertical 9:16 composition, keep the subject and colors identical, extend the background naturally to fill the frame, no text, no border."
- `name='Prep — <n> <short subject>'`, `entity_type='prep_images'`
- Use the returned asset as the input for step 4. Note: `i2i` may alter details, so check the result before animating it; if it distorts the subject, fall back to the original photo.
4. **Animate each photo.** One `generate_video` call per photo:
- `model='i2v'` (image-to-video), `input_urls=[<photo asset_id from step 3 or the original>]`, `orientation='portrait'`, `duration=5` (max 10), `resolution='720P'`
- Prompt: one of the motion recipes in `references/prompt-recipes.md`, adapted to the actual subject. Always describe camera movement + subject movement + "smooth, natural, no morphing, no text appearing".
- `name='Clip <n> — <short subject>'`, `entity_type='clip_videos'`
- Keep the user's photo order. Never reorder without asking.
- If one clip fails, note it and continue with the rest — never silently drop a photo.
5. **Add sound (optional).**
- Voiceover: `generate_tts` with `model='tts.design'`, `voice_instruction='<voice description>'`, text = the script. `name='Voiceover'`, `entity_type='voiceovers'`. Use `model='tts.clone'` with `reference_audio_url` instead if the user supplied a voice sample.
- Music: `generate_music` with `model='music'`, prompt describing mood/tempo/instrumentation. `name='Soundtrack'`, `entity_type='music'`. Keep it instrumental unless the user asks for vocals.
- Only generate the tracks the user asked for.
6. **Stitch the reel.** One `mix_clips` call:
- `clips=[{ 'videos': [{'url': clip1}, {'url': clip2}, ...], 'audio': {'url': track, 'volume': 0.6}, 'subtitles': {...} }]`
- `videos` array order = play order. Music at `volume` ~0.6 so it sits under a voiceover.
- Burned-in subtitles: either `subtitles.items` (inline cues with `text`/`start`/`end` relative to the reel start) or `subtitles.url` pointing at an `.srt`/`.vtt`/`.ass` file. Set `style.font_name='Noto Sans CJK SC'` for Chinese/Japanese/Korean text.
- `name='<Reel title>'`, `entity_type='final_videos'`, `orientation='portrait'`, `output_format='mp4'`, `fps=30`, `crf=23`.
- If there