Product Ad Shorts · Open Skill 公開スキル
Product Ad Shorts
Product Ad Shorts は Digen 上の公開 Open Skill です。開くと、このワークフローが何を作るか分かります。
ShortDrama
0 1 4
https://d7qlwi7tl2u27.cloudfront.net/skill-covers/prod/3766200/2026-10-19/u5h99f42.jpg
--- allowed-tools: - generate_image - generate_video - generate_tts - generate_music - mix_clips - caption_video - recognize_image --- # Product Ad Shorts Create a short-form vertical product advertisement (YouTube Shorts / TikTok / Reels). The pipeline is: **ad script → product showcase shots → voiceover + music → final cut with captions**. ## When to use - The user wants a short vertical ad for a product, from a product photo, a product description, or an idea. - The user wants to redo or refine one stage: a new hook, restyle a shot, re-animate, or change the voiceover/music. ## Steps 1. **Understand the product.** If the user uploaded a product photo, call `recognize_image(image_url=<asset_id>, prompt="Describe this product in detail: what it is, its key features, colors, and how it looks, so it can be showcased in an ad.")`. If they gave a description or idea, use that directly. If unclear, ask one short clarifying question (product, target audience, selling point). 2. **Write the ad script.** Draft a short 15–30s ad structure: a hook (first 2–3s), 2–4 product showcase beats, and a call-to-action. Note the key selling point and the voiceover line for each beat. Keep it concise. 3. **Plan with todos.** Call `write_todos` with the stages (script → shots → audio → final cut) and update it as you go. 4. **Generate product showcase shots.** For each beat, call `generate_image` with `model='i2i'` and `input_urls=[<product photo asset_id>]` (or `model='t2i'` if text-only) and a prompt showing the product in an appealing, well-lit setting (e.g. "the product on a clean studio background with dramatic lighting, close-up"). Use `orientation='portrait'` (9:16) by default. Pass `name="Shot <n>: <beat>"` and `entity_type='storyboard_images'`. 5. **Animate each shot.** For each showcase image, call `generate_video` with `model='i2v'`, `input_urls=[<showcase image asset_id>]`, and a prompt describing natural motion (e.g. "the product slowly rotates on a turntable, camera pushes in"). Use `orientation='portrait'`. Pass `name="Shot <n> animation"` and `entity_type='storyboard_videos'`. 6. **Generate the voiceover.** Call `generate_tts` with `model='tts.design'`, the ad's voiceover lines, and a `voice_instruction` in English describing an energetic ad voice (e.g. "upbeat, energetic, enthusiastic commercial narrator"). Pass `name="Ad voiceover"` and `entity_type='voiceovers'`. 7. **Generate the music.** Call `generate_music` with a prompt describing an upbeat, catchy background track that fits the product (e.g. "upbeat, energetic commercial jingle, modern pop"). Pass `name="Ad music"`, `entity_type='music'`. 8. **Stitch the final cut.** Call `mix_clips` with one clip whose `videos` are the animated shots in order and whose `audios` are the voiceover and music tracks (set `volume` as needed, e.g. music at 0.4 so it sits under the voice). Pass `name="<product> ad"` and `entity_type='final_videos'`. 9. **Add captions (optional).** If the user wants TikTok-style word-by-word highlighted captions, call `caption_video` on the final cut with `template='mega-stroke'` (or `cloud-glow` / `sunset-panel` for a softer look). Pass `name="<product> ad captioned"` and `entity_type='final_videos'`. Note this step can take a while (ASR + burn). 10. **Reply.** Summarize the ad in natural language (don't paste URLs). Offer next refinements via `set_guidance` (e.g. new hook, restyle a shot, change the voiceover/music, add captions). ## Notes - Default format is **portrait (9:16)** for Shorts/TikTok/Reels; switch to `landscape` only if the user asks for 16:9. Keep the same `orientation` across image and video stages. - The ad is multi-shot by default; if the user only wants a single clip, generate one shot and skip the stitching. - Video generation does not support NSFW/adult content on any channel — politely decline such requests. - Report failures honestly; never fabricate URLs. If a generation fails, retry once with a slightly adjusted promp