Endless Candy Bag — Open Skill

Endless Candy Bag

Endless Candy Bag is a public Open Skill on Digen. Open it to see what this workflow creates.

@NateSullivan

Meme

1 0 0

https://d7qlwi7tl2u27.cloudfront.net/skill-covers/prod/4284959/2026-10-16/kbjxrhqg.gif

# Endless Candy Bag

Shake it once, regret nothing. Your photo becomes a Halloween micro-story: one sad candy drops from the 'empty' bag, then a bottomless avalanche of wrapped sweets piles up around your feet until you give up and hug the bag.

## When to use

- The user wants a funny Halloween video from their photo where an empty candy bag suddenly pours out endless candy (bottomless trick-or-treat bag, candy avalanche clip)
- Another take with a different length or orientation

Not for: Still images only.

## Inputs and gates

| Input | Required | Default | Gate |
|---|---|---|---|
| Photo | Yes | — | One adult with the face clearly visible. Ask for another photo if the face is tiny, blurred, heavily covered or in profile |
| Candy mix | No | `classic wrapped sweets and lollipops` | classic wrapped sweets and lollipops (default), all chocolate, or user-described |
| Duration | No | `6` s | 6 or 10 |
| Orientation | No | `9:16` portrait | Other ratios on request |

- If the person may be under 18, stop and decline politely. Real-person photos must be of adults the user has the right to use.
- Video does not allow NSFW content: keep wardrobe fully covering and refuse sexual requests. Suggestive fashion looks stay as still images.

## Steps

1. Read `references/video-motion.md`.
2. **Identity read**: `recognize_image(image_url=<photo>, prompt='Describe this adult for identity preservation: face shape, eye shape and color, brows, nose, lips, skin tone, apparent age range, hair color and length, distinctive marks, glasses. One compact line.')`.
3. **Keyframe**: `generate_image(prompt=<KEYFRAME>, input_urls=[photo], model='i2i.hd', orientation='portrait', aspect_ratio='9:16', name='Endless Candy Bag keyframe', entity_type='work_in_progress')`. If the face drifts, regenerate once.
4. **Video**: `generate_video(prompt=<MOTION>, input_urls=[keyframe], model='i2v', orientation='portrait', aspect_ratio='9:16', duration=<d>, name='Endless Candy Bag', entity_type='final_videos')`. Pass only the keyframe, never the original upload.
5. Reply in one or two sentences, e.g. "Done! Here's your endless candy bag. I can also try all chocolate if you like." Results appear on the canvas; never paste URLs.

## Prompt templates

**KEYFRAME**

```text
The same adult from the reference: <identity line>. Same face structure, eyes, skin tone and recognizable likeness; no beautification or face reshaping. Opening frame of this scene: the same adult person on a cozy porch at Halloween dusk turns an orange trick-or-treat bag upside down; a single candy drops, they peer inside puzzled, then a nonstop cascade of colorful wrapped candies, lollipops and chocolate coins pours out and piles up to their knees, their face goes from bewildered to delighted and they hug the bag laughing, jack-o'-lanterns glowing, warm porch light, playful comedic timing, fully clothed. Posed for motion, clear subject, cinematic light. Nothing from the original photo's background remains.
```

**MOTION** (motion only; the frame already shows the look)

```text
Starting from this exact frame: <one clear motion arc for this concept: the same adult person on a cozy porch at Halloween dusk turns an orange trick-or-treat bag upside down; a single candy drops, they peer inside puzzled, then a nonstop cascade of colorful wrapped candies, lollipops and chocolate coins pours out and piles up to their knees, their face goes from bewildered to delighted and they hug the bag laughing, jack-o'-lanterns glowing, warm porch light, playful comedic timing, fully clothed>, beginning, peak and settle in one continuous shot. Camera: <one move: slow push-in, gentle orbit, or static>. The same face and outfit throughout. Cinematic, no text.
```

## Failure handling

- `success=false`: say what failed in one sentence; retry once only if transient; never invent links.
- Content-policy rejection on video: soften wording and retry once; otherwise offer the keyframe as a still.
- Identity drifts: offer to re