Ghost Trick or Treat · skill pública Open Skill

Ghost Trick or Treat

Ask: What happens at the door? A: Knock knock. A tiny ghost pops out, says boop, and we trade candy. Get: What do I need to upload? A: One clear photo of an adult. A visible face works best. Get: What do I get? A: A 9:16 portrait clip: the adult in my photo trick-or-treats, meets a tiny ghost, and can redo it.

@MayaCalloway

Meme

0 0 0

https://d7qlwi7tl2u27.cloudfront.net/skill-covers/prod/550336/2026-10-15/kxxv3g72.webp

# Ghost Trick or Treat

Knock knock, a green glow under the door, and a tiny ghost pops out with a 'boop'. Surprise turns into delight as the candy changes hands.

## When to use

- The user wants a cute Halloween video of the person in their photo trick-or-treating and meeting a little ghost at the door
- 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 |
| 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='Ghost Trick or Treat 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='Ghost Trick or Treat', entity_type='final_videos')`. Pass only the keyframe, never the original upload.
5. Reply in one or two sentences, e.g. "All set. Your ghost trick or treat is on the canvas. Next I can do a 10-second cut." 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: holding a candy basket and knocking on a door; eerie green light glows through the crack, a cute little ghost pops its head out, the person is surprised then delighted and hands over the candy basket. 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: holding a candy basket and knocking on a door; eerie green light glows through the crack, a cute little ghost pops its head out, the person is surprised then delighted and hands over the candy basket>, 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 regenerate.

## Examples

**Default**: the user says "this one" with a photo. Use the tuned defaults, 9:16. Reply: "All set. Your ghost trick or treat is on the canvas."
**Variation**: "next variation". Keep the same inputs and change one option (a 10-second cut).
**Missing input**: no photo was sent. Ask: "Drop in one photo of yourself (face clearly visible) to get started."

## References

- `references/video-motion.md`