Doorway Surprise 10s Video — Open Skill

Doorway Surprise 10s Video

Doorway Surprise 10s Video is a public Open Skill on Digen. Open it to see what this workflow creates.

@JackRhino

Trailer

1 0 1

https://d7qlwi7tl2u27.cloudfront.net/skill-covers/prod/4284865/2026-10-20/funan2u4.jpg

# Doorway Surprise 10s Video

Turn one clear portrait photo into a ~10-second vertical video with audio: a warm doorway scene where a man enters frame from behind the woman, wraps his left arm around her waist, she jumps and exclaims, and he pulls her inside while the door closes behind them.

This Skill has no structured project state. Everything that must survive across turns goes into your visible reply (identity notes, script beats, which version the user liked) or into the canvas assets already generated.

## When to use

- The user uploads a photo and asks for a short video made from it (image-to-video).
- The user asks for a "doorway surprise", "surprise hug at the door", "he comes up behind her and hugs her" clip.
- The user asks to re-render, extend, re-time, or restyle an earlier result of this Skill.

Do not use it for still-image requests only — if the user just wants a picture, say so and skip the video pipeline.

## Inputs and outputs

- Input: one reference image, ideally a vertical (portrait) medium shot of a woman, sharp and well lit, full head visible. Extra images may be supplied; use the clearest portrait as the anchor and only use others for wardrobe or room context.
- Output: one vertical short video with audio, saved to the canvas as a final video asset.

## Steps

1. **Inspect the input image.** Call `recognize_image` on the uploaded image with a prompt asking for: face and hair identity descriptors, skin tone, current wardrobe and colours, framing and camera height, lens feel, light direction and colour temperature, doorway/room details, and anything that would block a medium-shot read. If no single person is clearly visible, or the image is a full-body wide shot with an unreadable face, ask the user for a clearer vertical medium shot before generating. Keep the descriptors in your own notes for the prompt; do not paste raw tool output to the user.

2. **Load the visual language.** Call `read_skill_file(name="doorway-surprise-video", path="references/style-and-prompt.md")` and keep its Style / Subject / Layout / Must keep / Must avoid rules and the English prompt template at hand. They override any generic wording you would otherwise invent.

3. **Write this request's video script.** Call `read_skill_file(name="doorway-surprise-video", path="references/video-script.md")` and follow its structure to write a complete English script for *this* user and *this* image: logline, duration, beats with timecodes, shot and camera notes, the woman's action, the man's action, light and mood, audio cues, transitions, must-keep and must-avoid. Fill it with the identity descriptors from step 1 and with whatever the user asked for (mood, wardrobe, room, pacing). Do not reuse a boilerplate script as the deliverable; every beat must reference this photo and this request.

4. **Load the clip constraints.** Call `read_skill_file(name="doorway-surprise-video", path="references/video-content-constraints.md")` and check the script against the framing, motion, duration, audio and prohibition rules there. Trim or rewrite any beat that violates them before you build the prompt.

5. **Load the step details.** Call `read_skill_file(name="doorway-surprise-video", path="references/step-details.md")` for the input checklist, the prompt assembly order, the duration handling and the retry rules, and apply them.

6. **Generate the video.** Compress the finished script into a single English prompt (generate_video needs the scene, action timing, camera and audio in one block, not the markdown script itself), merge in the style template from `references/style-and-prompt.md`, then call:

   `generate_video(prompt=<compressed script + style block>, input_urls=[<the uploaded reference image>], model='i2v', orientation='portrait', resolution='1080P', duration=10, name='Doorway Surprise', entity_type='final_videos')`

   - `model='i2v'`: this is image-to-video driven by the single uploaded frame (not a reference-conditioned `ref2v` job).
   - `