Interactive Hug Video · Open Skill 公开技能
Interactive Hug Video
Interactive Hug Video 是 Digen 上的公开 Open Skill。打开后即可了解该工作流能制作什么。
Trailer
1 0 2
https://d7qlwi7tl2u27.cloudfront.net/skill-covers/prod/4284865/2026-10-21/cgzsxfw3.jpg
# Interactive Hug Video Turn the people in a user-supplied reference photo into one short, cinematic clip in which they perform a single intimate embrace action (hug / close embrace / kiss). The whole frame serves that one action; there is no multi-scene story. ## When to use - The user uploads a photo (or two photos) of people and asks for a hugging / kissing / cuddling video. - The user asks to animate a couple photo, "make them hug", or "bring this picture to life" with physical closeness. - The user wants an existing hug clip regenerated with a different mood, framing, or length. - Not for: single still-image requests only, generic video editing of existing clips, or non-romantic subjects with no hug intent. ## Inputs and outputs - **Input:** the reference image(s) the user uploaded (1–2 people). Never invent faces — if no image is attached, ask for one and stop. - **Output:** one short clip (roughly 5–10 s) generated with the `ref2v` channel, saved with `entity_type='final_videos'`. Optionally one keyframe still (`entity_type='hug_keyframes'`) when the composition has to be built first. - **Aspect:** follow the source reference frame (landscape reference → `orientation='landscape'`, vertical → `'portrait'`). If the source aspect is unclear, use `portrait`. - If the user only wants a still image, skip the script and the video step. ## Steps 1. **Intake.** Identify what the user gave you: how many reference images, who is in each, and the one action they asked for (hug / kiss / both). If the action is ambiguous, default to a warm hug that settles into a brief kiss only when the user mentioned a kiss. 2. **Plan.** Call `read_skill_file` with `path="references/workflow-stages.md"` and follow its stage order, exit criteria and branch rules. Call `write_todos` with the stages you will actually run. 3. **Read the reference.** Call `recognize_image` on each reference with a prompt asking for: number of people, apparent age, hair color/length/style, face shape, wardrobe and materials, body type, who is on which side, the setting and its colors, the light direction, the framing and aspect ratio, and any feature that must not change (earrings, necklace, tattoo, glasses, seat, background). 4. **Optional keyframe (only if needed).** If the two people come from separate photos, or the reference has no usable two-person composition, build one still first: `generate_image(prompt=<keyframe template from references/style-and-prompt.md filled with the analyzed identities and setting>, input_urls=[reference image(s)], model='i2i.hd.lite', name='hug-keyframe', entity_type='hug_keyframes')`. Skip this step when a single reference already shows both people in a usable frame. 5. **Build the visual prompt.** Call `read_skill_file` with `path="references/style-and-prompt.md"` and fill its Style / Subject-content / Layout / Must-keep / Must-avoid sections plus the prompt template for this specific user, the analyzed identities and the target aspect. Do not copy the template verbatim without filling the placeholders. 6. **Write the script for this request.** Call `read_skill_file` with `path="references/video-script.md"` and write a complete English script for *this* request (logline, runtime, beat table with shot size, camera move, subject action, light/atmosphere, transition, must-keep, must-avoid). A generic template reuse is not acceptable output. 7. **Compress to a video prompt.** Call `read_skill_file` with `path="references/video-content-constraints.md"` and follow its compression rules and hard limits while turning the script into the final video prompt. 8. **Generate the video.** Call: `generate_video(prompt=<prompt built from steps 5–7>, input_urls=[keyframe still if step 4 ran, then the original reference image(s)], model='ref2v', orientation=<from step 3>, name='interactive-hug', entity_type='final_videos')`. Pass `duration` only if the user asked for a specific length (keep it short). Never pass a physical model name — only