[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-anthropic-quickdesign":3,"mdc-rdbad5-key":37,"related-repo-anthropic-quickdesign":2707,"related-org-anthropic-quickdesign":2798},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"quickdesign","generate AI media assets","Use the `quickdesign` CLI to generate AI media — UGC promo videos, image edits, product creatives, video upscales — through Seedance, Kling, Sora2, Nano Banana, and GPT Image. Invoke this skill whenever the user asks for a talking-avatar video, multi-segment ad \u002F promo \u002F explainer, image edit (object swap, angle change, state change), product photoshoot, or video upscale via QuickDesign.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"anthropic","Anthropic","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fanthropic.png","anthropics",[13,17,20,23],{"name":14,"slug":15,"type":16},"Marketing","marketing","tag",{"name":18,"slug":19,"type":16},"Creative","creative",{"name":21,"slug":22,"type":16},"Video","video",{"name":24,"slug":25,"type":16},"Image Generation","image-generation",294,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-community","2026-07-01T08:09:32.316182",null,69,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"Community plugin marketplace for Claude Cowork and Claude Code. Read-only mirror — submit plugins at clau.de\u002Fplugin-directory-submission.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-community\u002Ftree\u002FHEAD\u002Fquickdesign\u002Fskills\u002Fquickdesign","---\nname: quickdesign\ndescription: Use the `quickdesign` CLI to generate AI media — UGC promo videos, image edits, product creatives, video upscales — through Seedance, Kling, Sora2, Nano Banana, and GPT Image. Invoke this skill whenever the user asks for a talking-avatar video, multi-segment ad \u002F promo \u002F explainer, image edit (object swap, angle change, state change), product photoshoot, or video upscale via QuickDesign.\n---\n\n# QuickDesign CLI skill\n\nThis skill teaches Claude how to plan and execute AI media generation through the `quickdesign` CLI. The CLI wraps QuickDesign's hosted models (Seedance 2.0 R2V\u002FI2V, Kling, Sora 2, Nano Banana, GPT Image, video upscale) so a Claude session can produce videos and images directly from Bash without managing API keys, polling, or storage upload.\n\n## When to invoke\n\n- **Talking-avatar \u002F UGC video** — \"make a 30-second ad where this person says X\", \"convert this script to a video\", \"create a creator-selfie clip\"\n- **Multi-segment promo \u002F explainer** — anything where total speech is >15s (single Seedance segment cap) or where the user wants angle cuts \u002F framing progression\n- **Image edit \u002F generation** — angle change, state change, product on white background, lifestyle composite, brand-kit-styled creatives, multi-product reference composition\n- **Video upscale** — bring 720p \u002F 1080p output to 1080p \u002F 4K\n- **Bulk \u002F batch creative production** — \"do this for each of these 5 product photos\"\n\nDo NOT use for: pure text generation, code edits, search — those have their own tools.\n\n## Cardinal rules (read first, every time)\n\nThese apply to every generation. Breaking any of them produces visible defects.\n\n0. **Default video model = `seedance-2.0-r2v` for ANY UGC \u002F talking-avatar \u002F promo \u002F explainer \u002F multi-scene work, regardless of duration or segment count.** Don't downgrade to `seedance-2.0-i2v` because the script is \"short enough\" — R2V handles 4-15s single-shot just as well as multi-segment, and going through R2V from the start preserves every primitive this skill depends on (`@Image1` references, multi-`--reference-image`, `--reference-audio` voice continuity). Switch off R2V only on **explicit user opt-in** (\"use Sora 2\") or if R2V is unavailable in the registry.\n\n   ⚠️ **The name \"i2v\" (image-to-video) is misleading.** R2V also accepts a single-image-to-video flow — just pass one `--reference-image`. Don't pick i2v because the task is \"image-to-video as English\". An agent reasoning chain like *\"user wants to animate static images → image-to-video → therefore seedance-2.0-i2v\"* is the silent regression this rule exists to prevent. Even when you're animating a single banana edit with no speech and no multi-ref needs, R2V is still the default — i2v adds nothing and forfeits the primitives if the next iteration of the task DOES need them.\n\n   See `models\u002Fseedance-2.0-r2v.md`.\n\n1. **Use `@Image1` \u002F `@Audio1` \u002F `@Video1` reference labels in prompts, and pass EVERY relevant photo as a separate reference.** Both `nano-banana-2` (image edit) and Seedance 2.0 R2V (video) accept multiple `--reference-image` flags. If the user uploaded a product from two angles, pass both — describing the second one in prose is a regression. Don't re-describe the person, wardrobe, or product in words; that competes with the reference image and causes drift.\n\n   ❌ **Wrong** — verbose verbatim re-description of `@Image1`:\n   ```\n   Authentic UGC photo of the woman from the reference (long wavy brown\n   hair, natural glowy makeup, glossy peach-coral lips, gold hoop earrings,\n   pearl choker, soft smile), wearing the beige suede sneakers from the\n   second reference, in a cozy minimal bedroom...\n   ```\n   Banana already SEES her hair \u002F makeup \u002F lips \u002F jewelry in `@Image1` and the sneaker color \u002F silhouette \u002F sole in `@Image2`. Re-describing them tells the model \"ignore the references, paint from this prose\" — competes with the visual anchor and causes drift.\n\n   ✅ **Right** — labels do the work, prose only describes what's NEW:\n   ```\n   Edit @Image1: change pose to iPhone mirror selfie. Add a white ribbed\n   tank top + oversized baggy jeans. Sneakers matching @Image2 visible at\n   the bottom of the frame. Keep face, hair, makeup, jewelry, and\n   lighting unchanged from @Image1.\n   ```\n\n   See `references\u002Fmulti-reference-pattern.md` and the per-model card under `models\u002F`.\n\n2. **Multi-segment voice continuity = `--reference-audio` from Seg 1's extracted audio.** Generate Seg 1 first → `ffmpeg -vn -acodec libmp3lame` extracts audio → pass that mp3 as `--reference-audio` to Segs 2..N. Without this, every segment picks a different voice. See `references\u002Fvoice-continuity.md`.\n\n3. **Suppress the layered music bed and burned subtitles — minimal directive only.** Add two short lines to the prompt: `No music score.` and `No subtitles or on-screen text.` That's it. Do NOT enumerate ambient sounds you want to keep (\"street noise, café chatter, espresso machine\") — Seedance produces natural ambient on its own; over-prescribing makes audio feel scripted. See `references\u002Fno-music-no-subtitles.md`.\n\n4. **For burned-in captions, use `quickdesign video subtitle` AFTER generation.** Never let the video model burn its own captions via the prompt — they hallucinate. The dedicated subtitle endpoint runs real ASR (ElevenLabs) and renders accurate karaoke-style captions. See `references\u002Fauto-subtitle.md`.\n\n5. **Confirmation gates — pause before spending credits, even in auto mode.** Auto mode reduces friction for **low-cost reversible work** (file edits, research, planning). Paid AI generation is neither low-cost nor reversible — auto mode does NOT bypass these gates. Always:\n   - **Plan summary BEFORE any video generation** (Type \u002F Model \u002F Duration \u002F Cost \u002F Script). Surface it, then either wait for explicit \"go\" (normal mode) OR proceed immediately while keeping the plan visible above the bash call so the user can kill the task before the spend completes (auto mode). The plan must arrive BEFORE the bash invocation, never after.\n   - **Banana edit reference BEFORE feeding it into Seedance R2V** → show the edit, wait for visual approval. Banana ~12cr, Seedance ~250-500cr; a wrong reference auto-chained burns 50× the cost. This gate does NOT compress in auto mode.\n   - See `references\u002Fconfirmation-rules.md` for full auto-mode interplay.\n\n6. **For *choice* gates use the `AskUserQuestion` tool, not free-form prose.** Model picker, transition style, resolution, banana edit approve \u002F regenerate \u002F cancel — call `AskUserQuestion` with a structured option list and put your recommendation FIRST with `(Recommended)`. See `references\u002Fconfirmation-rules.md`.\n\n7. **When avatar is supplied AND setting doesn't change, EDIT the avatar — don't regenerate.** Compose-style banana prompts (\"Compose a vertical 9:16 UGC selfie frame...\", \"Generate a creator-selfie scene...\") cause the model to render a fresh AI-look image inspired by the avatar — losing the source's lighting, grain, and lo-fi authenticity. The result feels synthetic instead of like a real creator's edited selfie. Use edit-style verbs (`Edit @Image1: add ...`, `Take @Image1 as-is and only change ...`, `Keep every pixel of @Image1 except [region]`), don't re-list scene tokens that the reference already shows, and strip quality-upgrade words (\"photo-realistic\", \"studio quality\", \"8K\") from the prompt — they trigger regen. See `references\u002Favatar-edit-not-regenerate.md`.\n\n8. **For UGC video, surface the speech-or-silent choice — don't pick silently.** \"UGC video\" is ambiguous: it could be a spoken creator clip (script-driven, voice + lip-sync) OR a motion-only beat (OOTD reveal, b-roll, animated stills with text overlays in post). Both are legitimate creative formats. The agent must NOT pick one silently:\n\n   - **Strong signal toward SPOKEN** (just go): user wrote \"talking-avatar\", \"creator says\", \"voiceover\", \"explainer\", \"ad with script\", or supplied a script themselves. Build script → put in plan summary → generate with `generate_audio: true` and the quoted speech inline.\n   - **Strong signal toward SILENT** (just go): user wrote \"OOTD reveal\", \"motion only\", \"no audio\", \"B-roll\", \"Pinterest aesthetic\", or wants a static-image animation reel.\n   - **Ambiguous \"UGC video\" \u002F \"promo video\" \u002F \"ad video\"** — call `AskUserQuestion` with two options: spoken (with a draft 4-8 word hook) or silent + post-overlay text. Recommend whichever fits the user's brief better. Do NOT silently default.\n\n   When SPOKEN is selected: never start generation without quoted speech in the prompt. If the user didn't supply one, draft 4-12s of dialogue that fits the brief, surface it in the plan summary, then proceed. Generating with a generic action prompt and no quoted speech produces silent video or model-babbled phonemes — wasted credits.\n\n   See `references\u002Fscript-and-duration.md` for word-count → duration math.\n\n9. **Multi-segment plans STOP after Seg 1 for visual approval — don't fan-out Segs 2..N until the user confirms Seg 1 came out right.** Voice continuity locks Seg 1's audio into every subsequent segment via `--reference-audio`. If Seg 1 has the wrong voice, wrong avatar identity, mispronounced word, or off-brand framing, every parallel Seg 2..N inherits that defect. A 4-segment plan at ~250cr\u002Fsegment = ~1000cr; auto-fanning out a broken Seg 1 burns ~750cr that didn't need to be spent.\n\n   The flow is:\n   1. Plan summary → user approves (Rule 5).\n   2. Render Seg 1 only.\n   3. **Surface Seg 1's video URL in the chat** + call `AskUserQuestion` with options:\n      - **Looks good — render Segs 2..N** *(Recommended if Seg 1 is clean)*\n      - **Re-render Seg 1** (adjust prompt \u002F reference \u002F duration)\n      - **Cancel the multi-segment plan**\n   4. Only on \"Looks good\" → fan out Segs 2..N in parallel with the extracted audio.\n\n   This gate does NOT compress in auto mode. The Seg 1 → Seg N spend multiplier is the same regardless of how patient the user is. See `pipelines\u002Fugc-video.md` for the canonical multi-segment flow.\n\n10. **Camera stays put. Don't change angle \u002F framing unless the user explicitly asks for it.** Documentary-style UGC (street interview, kitchen demo, founder POV, customer testimonial, vlog-style) reads as **one continuous camera point**, not a multi-angle cut sequence. Default to: same framing (e.g., mid-shot eye-level), same distance, avatar in roughly the same position across every segment. The \"transition\" between segments is the avatar's gesture \u002F line \u002F micro-expression — not an angle cut.\n\n    ❌ **Wrong defaults** (silent regression — produces a \"shot-by-Director-of-Photography\" feel that destroys UGC authenticity):\n    - Seg 1 mid-shot → Seg 2 over-shoulder → Seg 3 close-up\n    - \"Push in slowly on the speaker\"\n    - \"Cut to product close-up on the punchline\"\n    - Each `nano-banana-2` segment ref using a different angle of the same person\n\n    ✅ **Right default** (UGC authenticity preserved):\n    - Same source frame or near-identical angle\u002Flighting across every segment. Only the avatar's hand position, gaze, or expression changes between segments.\n\n    Only switch to multi-angle when the user explicitly asks: \"alternate angles each segment\", \"cinematic cut to close-up at the hook\", \"include an over-shoulder shot of the product\", \"studio-style multi-cam UGC\". When unsure, ask via `AskUserQuestion`: *Fixed camera (recommended for documentary UGC) \u002F Multi-angle (cinematic cuts).*\n\n    See `references\u002Ffirst-frame-not-camera-motion.md` for the related rule about static framing vs. described camera motion.\n\n11. **Audit ALL the references the user supplied — product alone is not enough for UGC.** When the brief is \"make a UGC video for this product\" and the user supplied ONLY a product photo, STOP before generating. Seedance R2V needs anchored references for: the **product**, the **avatar \u002F creator** (face, build, vibe), and the **scene \u002F location** (kitchen, bathroom, gym, sidewalk). Prose can describe the product in detail, but if you describe the avatar in prose only, Seedance will hallucinate a generic-looking person — usually a synthetic-feeling Caucasian woman in her 20s — and the scene will read as stock B-roll, not the brand's world. The result fails the \"doesn't look made\" bar.\n\n    Before generation, audit the supplied media:\n    - **Product image** — almost always present. Pass as `--reference-image` with prompt label `@Image1`.\n    - **Avatar \u002F creator image** — if user provided one, pass it as a separate `--reference-image` and label `@Image2`. If user didn't provide one, **call `AskUserQuestion`** before generating: *Upload a creator headshot \u002F Pick from QuickDesign avatar library (5,000+ portraits) \u002F Proceed with prose-described creator (synthetic-look risk).* Recommend \"Pick from library\" if the user is brief-only.\n    - **Scene \u002F location image** — if the user is filming a \"kitchen scene\", \"bathroom mirror selfie\", \"office desk POV\", etc., ask whether they have a reference photo of the actual room. Pass as `@Image3` if supplied.\n\n    The Seedance R2V call should look like:\n    ```bash\n    quickdesign video generate --provider seedance \\\n      --reference-image product.jpg \\\n      --reference-image avatar.jpg \\\n      --reference-image scene.jpg \\\n      --aspect-ratio 9:16 --duration 12 --resolution 1080p \\\n      -p '@Image2 in @Image3, holds @Image1 toward camera. She says: \"...\" No music score. No subtitles or on-screen text.' \\\n      -o seg1.mp4 --wait\n    ```\n    `@Image1`\u002F`@Image2`\u002F`@Image3` labels do the heavy lifting; prose only describes the action and quoted speech. See `references\u002Fmulti-reference-pattern.md`.\n\n## Decision tree — which doc to open first\n\n**By job type:**\n\n| Request | Start here |\n|---|---|\n| UGC \u002F talking-avatar \u002F promo \u002F explainer \u002F multi-segment ad | `pipelines\u002Fugc-video.md` → `models\u002Fseedance-2.0-r2v.md` |\n| Image edit (angle, state, multi-product composition) | `models\u002Fnano-banana-2.md` → `references\u002Fmulti-reference-pattern.md` |\n| Cinematic single-shot, audio-quality-driven (4\u002F8\u002F12s) | `models\u002Fsora2-i2v.md` (only on explicit user opt-in) |\n| Budget loop \u002F non-spoken b-roll | `models\u002Fkling-3-pro.md` |\n| Final video too low-res | `models\u002Ftopaz-video-upscale.md` (run after concat) |\n| Add captions to existing video | `references\u002Fauto-subtitle.md` |\n| Brand not in Spy Brands library \u002F 0 search results | `references\u002Fspybrands-add-on-miss.md` |\n| User is on claude.ai (web) and asks about QuickDesign | `references\u002Fconnecting-claude-ai-via-mcp.md` |\n| Publish designs to Meta as ads \u002F analyze own Meta ad performance | `references\u002Fdeploy-meta.md` |\n\n**By job phase:**\n\n| Phase | Read |\n|---|---|\n| Plan: script \u002F duration math, narrative beats | `references\u002Fscript-and-duration.md`, `references\u002Fnarrative-arc.md` |\n| Pre-flight: which model is alive in the registry | `quickdesign video models`, `quickdesign cost --category video` |\n| Per-segment reference choice | `references\u002Fmulti-reference-pattern.md`, `references\u002Fnarrative-arc.md` |\n| Generation: prompt skeleton + gotchas for the model you picked | `models\u002F\u003Cslug>.md` |\n| Quality gates: banana anatomy check, plan-summary approval | `references\u002Fconfirmation-rules.md` |\n| Post-processing: subtitle, upscale | `references\u002Fauto-subtitle.md`, `models\u002Ftopaz-video-upscale.md` |\n\n## Discover at runtime\n\nThe model registry is DB-driven and changes over time (new providers, retired versions, repriced tiers). **Don't hardcode model assumptions** — query the registry first when picking between alternatives.\n\n```bash\nquickdesign video models                            # active video models\nquickdesign image models                            # active image-edit models\nquickdesign cost                                    # all models, grouped by category\nquickdesign cost --category video\nquickdesign cost \u003Cslug> -d \u003Cduration> -r \u003Cresolution>   # exact compute for one model + params\n```\n\nWhen a new model lands that's better-fit than the current default, drop a new file in `models\u002F\u003Cslug>.md` (copy the format from any existing card) and update the cardinal rule #0 \u002F decision tree if the model becomes the new universal default.\n\n## Quick start — common commands\n\n```bash\n# Auth (one-time, browser flow)\nquickdesign auth login\n\n# Image edit — angle change \u002F state change \u002F multi-ref product composition\nquickdesign image generate \\\n  --model nano-banana-2 \\\n  --reference-image ~\u002Fpath\u002Fto\u002Favatar.jpg \\\n  --reference-image ~\u002Fpath\u002Fto\u002Fproduct.jpg \\\n  --aspect-ratio 9:16 --resolution 2K \\\n  -p \"@Image1 holds a product matching @Image2 exactly. ...\" \\\n  -o ~\u002Foutput.png --wait\n\n# Single Seedance R2V (≤15s spoken script — still R2V, not i2v)\nquickdesign video generate \\\n  --provider seedance \\\n  --reference-image ~\u002Fpath\u002Fto\u002Fsource.png \\\n  --aspect-ratio 9:16 --duration 12 --resolution 1080p \\\n  -o ~\u002Foutput.mp4 --wait \\\n  -p '@Image1 in the same setting. \u003Caction>. He\u002FShe says: \"...\" No music score. No subtitles or on-screen text. Vertical 9:16 format.'\n\n# Multi-segment Seedance R2V with voice continuity\n# 1) Generate Seg 1 (sequential, native audio)\nquickdesign video generate --provider seedance --reference-image seg1.png \\\n  --duration 12 --aspect-ratio 9:16 --resolution 1080p \\\n  -p '...' -o seg1.mp4 --wait\n# 2) Extract Seg 1 audio\nffmpeg -y -i seg1.mp4 -vn -acodec libmp3lame -q:a 2 seg1-audio.mp3\n# 3) Segs 2..N in parallel, each with --reference-audio\nquickdesign video generate --provider seedance \\\n  --reference-image seg2.png --reference-audio seg1-audio.mp3 \\\n  --duration 12 --aspect-ratio 9:16 --resolution 1080p \\\n  -p '...' -o seg2.mp4 --wait &\n# 4) Concat (mux-only, no quality loss)\nprintf \"file 'seg1.mp4'\\nfile 'seg2.mp4'\\n\" > \u002Ftmp\u002Fconcat.txt\nffmpeg -y -f concat -safe 0 -i \u002Ftmp\u002Fconcat.txt -c copy final.mp4\n\n# Auto-subtitle (karaoke style, post-generation)\nquickdesign video subtitle .\u002Ffinal.mp4 \\\n  --style tiktok --language en \\\n  -o .\u002Ffinal-subbed.mp4 --wait\n```\n\n## File index\n\n```\nSKILL.md                           ← you are here: cardinal rules + decision tree + nav\nreferences\u002F                        ← model-agnostic concepts (read for principles)\n   confirmation-rules.md           ← gates, AskUserQuestion convention, anatomy self-check\n   multi-reference-pattern.md      ← @Image1\u002F@Image2\u002F@Image3 multi-ref usage\n   avatar-edit-not-regenerate.md   ← edit-style verbs, don't compose-regen the avatar\n   spybrands-add-on-miss.md        ← when `spy brands --search` returns 0: confirm + resolve FB page + `spy add`\n   connecting-claude-ai-via-mcp.md ← claude.ai (web) users: how to connect via MCP, what's available vs. CLI-only\n   deploy-meta.md                  ← `meta` commands: publish designs as PAUSED Meta ads + insights\u002Freport\u002Fradar analytics\n   voice-continuity.md             ← --reference-audio across multi-segment\n   no-music-no-subtitles.md        ← minimal music + subtitle suppression\n   auto-subtitle.md                ← post-generation captions (real ASR, not model-burned)\n   narrative-arc.md                ← per-segment reference decision tree\n   script-and-duration.md          ← word count → segment math, gender-neutral defaults\n   first-frame-not-camera-motion.md ← why \"static hold\" \u002F \"slowly zooms\" cause defects\n   brand-and-moderation.md         ← brand-kit conventions, content moderation\npipelines\u002F                         ← multi-step workflows (model-agnostic where possible)\n   ugc-video.md                    ← canonical multi-segment talking-avatar method\nmodels\u002F                            ← per-model reference cards (gotchas + prompt skeletons)\n   seedance-2.0-r2v.md             ← DEFAULT for UGC \u002F promo \u002F talking-avatar\n   seedance-2.0-i2v.md             ← niche; explicit user opt-in only\n   nano-banana-2.md                ← default for image edit + multi-ref product composition\n   sora2-i2v.md                    ← cinematic single-shot, opt-in\n   kling-3-pro.md                  ← budget alternative for non-spoken b-roll\n   topaz-video-upscale.md          ← post-pipeline upscale\n```\n\nWhen the user asks for something specific, jump directly to the relevant file in `models\u002F` or `pipelines\u002F`. The cardinal rules above are the only thing that should always be in active context.\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,51,65,72,128,133,139,144,1249,1255,1263,1459,1467,1613,1619,1631,1800,1812,1818,2666,2672,2681,2701],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"quickdesign-cli-skill",[48],{"type":49,"value":50},"text","QuickDesign CLI skill",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55,57,63],{"type":49,"value":56},"This skill teaches Claude how to plan and execute AI media generation through the ",{"type":43,"tag":58,"props":59,"children":61},"code",{"className":60},[],[62],{"type":49,"value":4},{"type":49,"value":64}," CLI. The CLI wraps QuickDesign's hosted models (Seedance 2.0 R2V\u002FI2V, Kling, Sora 2, Nano Banana, GPT Image, video upscale) so a Claude session can produce videos and images directly from Bash without managing API keys, polling, or storage upload.",{"type":43,"tag":66,"props":67,"children":69},"h2",{"id":68},"when-to-invoke",[70],{"type":49,"value":71},"When to invoke",{"type":43,"tag":73,"props":74,"children":75},"ul",{},[76,88,98,108,118],{"type":43,"tag":77,"props":78,"children":79},"li",{},[80,86],{"type":43,"tag":81,"props":82,"children":83},"strong",{},[84],{"type":49,"value":85},"Talking-avatar \u002F UGC video",{"type":49,"value":87}," — \"make a 30-second ad where this person says X\", \"convert this script to a video\", \"create a creator-selfie clip\"",{"type":43,"tag":77,"props":89,"children":90},{},[91,96],{"type":43,"tag":81,"props":92,"children":93},{},[94],{"type":49,"value":95},"Multi-segment promo \u002F explainer",{"type":49,"value":97}," — anything where total speech is >15s (single Seedance segment cap) or where the user wants angle cuts \u002F framing progression",{"type":43,"tag":77,"props":99,"children":100},{},[101,106],{"type":43,"tag":81,"props":102,"children":103},{},[104],{"type":49,"value":105},"Image edit \u002F generation",{"type":49,"value":107}," — angle change, state change, product on white background, lifestyle composite, brand-kit-styled creatives, multi-product reference composition",{"type":43,"tag":77,"props":109,"children":110},{},[111,116],{"type":43,"tag":81,"props":112,"children":113},{},[114],{"type":49,"value":115},"Video upscale",{"type":49,"value":117}," — bring 720p \u002F 1080p output to 1080p \u002F 4K",{"type":43,"tag":77,"props":119,"children":120},{},[121,126],{"type":43,"tag":81,"props":122,"children":123},{},[124],{"type":49,"value":125},"Bulk \u002F batch creative production",{"type":49,"value":127}," — \"do this for each of these 5 product photos\"",{"type":43,"tag":52,"props":129,"children":130},{},[131],{"type":49,"value":132},"Do NOT use for: pure text generation, code edits, search — those have their own tools.",{"type":43,"tag":66,"props":134,"children":136},{"id":135},"cardinal-rules-read-first-every-time",[137],{"type":49,"value":138},"Cardinal rules (read first, every time)",{"type":43,"tag":52,"props":140,"children":141},{},[142],{"type":49,"value":143},"These apply to every generation. Breaking any of them produces visible defects.",{"type":43,"tag":145,"props":146,"children":148},"ol",{"start":147},0,[149,247,385,424,457,482,534,580,619,694,800,906],{"type":43,"tag":77,"props":150,"children":151},{},[152,165,167,173,175,181,183,189,191,197,199,204,206,210,212,217,219,224,226,232,234,237,239,245],{"type":43,"tag":81,"props":153,"children":154},{},[155,157,163],{"type":49,"value":156},"Default video model = ",{"type":43,"tag":58,"props":158,"children":160},{"className":159},[],[161],{"type":49,"value":162},"seedance-2.0-r2v",{"type":49,"value":164}," for ANY UGC \u002F talking-avatar \u002F promo \u002F explainer \u002F multi-scene work, regardless of duration or segment count.",{"type":49,"value":166}," Don't downgrade to ",{"type":43,"tag":58,"props":168,"children":170},{"className":169},[],[171],{"type":49,"value":172},"seedance-2.0-i2v",{"type":49,"value":174}," because the script is \"short enough\" — R2V handles 4-15s single-shot just as well as multi-segment, and going through R2V from the start preserves every primitive this skill depends on (",{"type":43,"tag":58,"props":176,"children":178},{"className":177},[],[179],{"type":49,"value":180},"@Image1",{"type":49,"value":182}," references, multi-",{"type":43,"tag":58,"props":184,"children":186},{"className":185},[],[187],{"type":49,"value":188},"--reference-image",{"type":49,"value":190},", ",{"type":43,"tag":58,"props":192,"children":194},{"className":193},[],[195],{"type":49,"value":196},"--reference-audio",{"type":49,"value":198}," voice continuity). Switch off R2V only on ",{"type":43,"tag":81,"props":200,"children":201},{},[202],{"type":49,"value":203},"explicit user opt-in",{"type":49,"value":205}," (\"use Sora 2\") or if R2V is unavailable in the registry.",{"type":43,"tag":207,"props":208,"children":209},"br",{},[],{"type":49,"value":211},"⚠️ ",{"type":43,"tag":81,"props":213,"children":214},{},[215],{"type":49,"value":216},"The name \"i2v\" (image-to-video) is misleading.",{"type":49,"value":218}," R2V also accepts a single-image-to-video flow — just pass one ",{"type":43,"tag":58,"props":220,"children":222},{"className":221},[],[223],{"type":49,"value":188},{"type":49,"value":225},". Don't pick i2v because the task is \"image-to-video as English\". An agent reasoning chain like ",{"type":43,"tag":227,"props":228,"children":229},"em",{},[230],{"type":49,"value":231},"\"user wants to animate static images → image-to-video → therefore seedance-2.0-i2v\"",{"type":49,"value":233}," is the silent regression this rule exists to prevent. Even when you're animating a single banana edit with no speech and no multi-ref needs, R2V is still the default — i2v adds nothing and forfeits the primitives if the next iteration of the task DOES need them.",{"type":43,"tag":207,"props":235,"children":236},{},[],{"type":49,"value":238},"See ",{"type":43,"tag":58,"props":240,"children":242},{"className":241},[],[243],{"type":49,"value":244},"models\u002Fseedance-2.0-r2v.md",{"type":49,"value":246},".",{"type":43,"tag":77,"props":248,"children":249},{},[250,277,279,285,287,292,294,297,299,304,306,311,313,325,328,330,335,337,343,345,348,350,355,357,366,369,370,376,378,384],{"type":43,"tag":81,"props":251,"children":252},{},[253,255,260,262,268,269,275],{"type":49,"value":254},"Use ",{"type":43,"tag":58,"props":256,"children":258},{"className":257},[],[259],{"type":49,"value":180},{"type":49,"value":261}," \u002F ",{"type":43,"tag":58,"props":263,"children":265},{"className":264},[],[266],{"type":49,"value":267},"@Audio1",{"type":49,"value":261},{"type":43,"tag":58,"props":270,"children":272},{"className":271},[],[273],{"type":49,"value":274},"@Video1",{"type":49,"value":276}," reference labels in prompts, and pass EVERY relevant photo as a separate reference.",{"type":49,"value":278}," Both ",{"type":43,"tag":58,"props":280,"children":282},{"className":281},[],[283],{"type":49,"value":284},"nano-banana-2",{"type":49,"value":286}," (image edit) and Seedance 2.0 R2V (video) accept multiple ",{"type":43,"tag":58,"props":288,"children":290},{"className":289},[],[291],{"type":49,"value":188},{"type":49,"value":293}," flags. If the user uploaded a product from two angles, pass both — describing the second one in prose is a regression. Don't re-describe the person, wardrobe, or product in words; that competes with the reference image and causes drift.",{"type":43,"tag":207,"props":295,"children":296},{},[],{"type":49,"value":298},"❌ ",{"type":43,"tag":81,"props":300,"children":301},{},[302],{"type":49,"value":303},"Wrong",{"type":49,"value":305}," — verbose verbatim re-description of ",{"type":43,"tag":58,"props":307,"children":309},{"className":308},[],[310],{"type":49,"value":180},{"type":49,"value":312},":",{"type":43,"tag":314,"props":315,"children":319},"pre",{"className":316,"code":318,"language":49},[317],"language-text","Authentic UGC photo of the woman from the reference (long wavy brown\nhair, natural glowy makeup, glossy peach-coral lips, gold hoop earrings,\npearl choker, soft smile), wearing the beige suede sneakers from the\nsecond reference, in a cozy minimal bedroom...\n",[320],{"type":43,"tag":58,"props":321,"children":323},{"__ignoreMap":322},"",[324],{"type":49,"value":318},{"type":43,"tag":207,"props":326,"children":327},{},[],{"type":49,"value":329},"Banana already SEES her hair \u002F makeup \u002F lips \u002F jewelry in ",{"type":43,"tag":58,"props":331,"children":333},{"className":332},[],[334],{"type":49,"value":180},{"type":49,"value":336}," and the sneaker color \u002F silhouette \u002F sole in ",{"type":43,"tag":58,"props":338,"children":340},{"className":339},[],[341],{"type":49,"value":342},"@Image2",{"type":49,"value":344},". Re-describing them tells the model \"ignore the references, paint from this prose\" — competes with the visual anchor and causes drift.",{"type":43,"tag":207,"props":346,"children":347},{},[],{"type":49,"value":349},"✅ ",{"type":43,"tag":81,"props":351,"children":352},{},[353],{"type":49,"value":354},"Right",{"type":49,"value":356}," — labels do the work, prose only describes what's NEW:",{"type":43,"tag":314,"props":358,"children":361},{"className":359,"code":360,"language":49},[317],"Edit @Image1: change pose to iPhone mirror selfie. Add a white ribbed\ntank top + oversized baggy jeans. Sneakers matching @Image2 visible at\nthe bottom of the frame. Keep face, hair, makeup, jewelry, and\nlighting unchanged from @Image1.\n",[362],{"type":43,"tag":58,"props":363,"children":364},{"__ignoreMap":322},[365],{"type":49,"value":360},{"type":43,"tag":207,"props":367,"children":368},{},[],{"type":49,"value":238},{"type":43,"tag":58,"props":371,"children":373},{"className":372},[],[374],{"type":49,"value":375},"references\u002Fmulti-reference-pattern.md",{"type":49,"value":377}," and the per-model card under ",{"type":43,"tag":58,"props":379,"children":381},{"className":380},[],[382],{"type":49,"value":383},"models\u002F",{"type":49,"value":246},{"type":43,"tag":77,"props":386,"children":387},{},[388,400,402,408,410,415,417,423],{"type":43,"tag":81,"props":389,"children":390},{},[391,393,398],{"type":49,"value":392},"Multi-segment voice continuity = ",{"type":43,"tag":58,"props":394,"children":396},{"className":395},[],[397],{"type":49,"value":196},{"type":49,"value":399}," from Seg 1's extracted audio.",{"type":49,"value":401}," Generate Seg 1 first → ",{"type":43,"tag":58,"props":403,"children":405},{"className":404},[],[406],{"type":49,"value":407},"ffmpeg -vn -acodec libmp3lame",{"type":49,"value":409}," extracts audio → pass that mp3 as ",{"type":43,"tag":58,"props":411,"children":413},{"className":412},[],[414],{"type":49,"value":196},{"type":49,"value":416}," to Segs 2..N. Without this, every segment picks a different voice. See ",{"type":43,"tag":58,"props":418,"children":420},{"className":419},[],[421],{"type":49,"value":422},"references\u002Fvoice-continuity.md",{"type":49,"value":246},{"type":43,"tag":77,"props":425,"children":426},{},[427,432,434,440,442,448,450,456],{"type":43,"tag":81,"props":428,"children":429},{},[430],{"type":49,"value":431},"Suppress the layered music bed and burned subtitles — minimal directive only.",{"type":49,"value":433}," Add two short lines to the prompt: ",{"type":43,"tag":58,"props":435,"children":437},{"className":436},[],[438],{"type":49,"value":439},"No music score.",{"type":49,"value":441}," and ",{"type":43,"tag":58,"props":443,"children":445},{"className":444},[],[446],{"type":49,"value":447},"No subtitles or on-screen text.",{"type":49,"value":449}," That's it. Do NOT enumerate ambient sounds you want to keep (\"street noise, café chatter, espresso machine\") — Seedance produces natural ambient on its own; over-prescribing makes audio feel scripted. See ",{"type":43,"tag":58,"props":451,"children":453},{"className":452},[],[454],{"type":49,"value":455},"references\u002Fno-music-no-subtitles.md",{"type":49,"value":246},{"type":43,"tag":77,"props":458,"children":459},{},[460,473,475,481],{"type":43,"tag":81,"props":461,"children":462},{},[463,465,471],{"type":49,"value":464},"For burned-in captions, use ",{"type":43,"tag":58,"props":466,"children":468},{"className":467},[],[469],{"type":49,"value":470},"quickdesign video subtitle",{"type":49,"value":472}," AFTER generation.",{"type":49,"value":474}," Never let the video model burn its own captions via the prompt — they hallucinate. The dedicated subtitle endpoint runs real ASR (ElevenLabs) and renders accurate karaoke-style captions. See ",{"type":43,"tag":58,"props":476,"children":478},{"className":477},[],[479],{"type":49,"value":480},"references\u002Fauto-subtitle.md",{"type":49,"value":246},{"type":43,"tag":77,"props":483,"children":484},{},[485,490,492,497,499],{"type":43,"tag":81,"props":486,"children":487},{},[488],{"type":49,"value":489},"Confirmation gates — pause before spending credits, even in auto mode.",{"type":49,"value":491}," Auto mode reduces friction for ",{"type":43,"tag":81,"props":493,"children":494},{},[495],{"type":49,"value":496},"low-cost reversible work",{"type":49,"value":498}," (file edits, research, planning). Paid AI generation is neither low-cost nor reversible — auto mode does NOT bypass these gates. Always:",{"type":43,"tag":73,"props":500,"children":501},{},[502,512,522],{"type":43,"tag":77,"props":503,"children":504},{},[505,510],{"type":43,"tag":81,"props":506,"children":507},{},[508],{"type":49,"value":509},"Plan summary BEFORE any video generation",{"type":49,"value":511}," (Type \u002F Model \u002F Duration \u002F Cost \u002F Script). Surface it, then either wait for explicit \"go\" (normal mode) OR proceed immediately while keeping the plan visible above the bash call so the user can kill the task before the spend completes (auto mode). The plan must arrive BEFORE the bash invocation, never after.",{"type":43,"tag":77,"props":513,"children":514},{},[515,520],{"type":43,"tag":81,"props":516,"children":517},{},[518],{"type":49,"value":519},"Banana edit reference BEFORE feeding it into Seedance R2V",{"type":49,"value":521}," → show the edit, wait for visual approval. Banana ~12cr, Seedance ~250-500cr; a wrong reference auto-chained burns 50× the cost. This gate does NOT compress in auto mode.",{"type":43,"tag":77,"props":523,"children":524},{},[525,526,532],{"type":49,"value":238},{"type":43,"tag":58,"props":527,"children":529},{"className":528},[],[530],{"type":49,"value":531},"references\u002Fconfirmation-rules.md",{"type":49,"value":533}," for full auto-mode interplay.",{"type":43,"tag":77,"props":535,"children":536},{},[537,557,559,564,566,572,574,579],{"type":43,"tag":81,"props":538,"children":539},{},[540,542,547,549,555],{"type":49,"value":541},"For ",{"type":43,"tag":227,"props":543,"children":544},{},[545],{"type":49,"value":546},"choice",{"type":49,"value":548}," gates use the ",{"type":43,"tag":58,"props":550,"children":552},{"className":551},[],[553],{"type":49,"value":554},"AskUserQuestion",{"type":49,"value":556}," tool, not free-form prose.",{"type":49,"value":558}," Model picker, transition style, resolution, banana edit approve \u002F regenerate \u002F cancel — call ",{"type":43,"tag":58,"props":560,"children":562},{"className":561},[],[563],{"type":49,"value":554},{"type":49,"value":565}," with a structured option list and put your recommendation FIRST with ",{"type":43,"tag":58,"props":567,"children":569},{"className":568},[],[570],{"type":49,"value":571},"(Recommended)",{"type":49,"value":573},". See ",{"type":43,"tag":58,"props":575,"children":577},{"className":576},[],[578],{"type":49,"value":531},{"type":49,"value":246},{"type":43,"tag":77,"props":581,"children":582},{},[583,588,590,596,597,603,604,610,612,618],{"type":43,"tag":81,"props":584,"children":585},{},[586],{"type":49,"value":587},"When avatar is supplied AND setting doesn't change, EDIT the avatar — don't regenerate.",{"type":49,"value":589}," Compose-style banana prompts (\"Compose a vertical 9:16 UGC selfie frame...\", \"Generate a creator-selfie scene...\") cause the model to render a fresh AI-look image inspired by the avatar — losing the source's lighting, grain, and lo-fi authenticity. The result feels synthetic instead of like a real creator's edited selfie. Use edit-style verbs (",{"type":43,"tag":58,"props":591,"children":593},{"className":592},[],[594],{"type":49,"value":595},"Edit @Image1: add ...",{"type":49,"value":190},{"type":43,"tag":58,"props":598,"children":600},{"className":599},[],[601],{"type":49,"value":602},"Take @Image1 as-is and only change ...",{"type":49,"value":190},{"type":43,"tag":58,"props":605,"children":607},{"className":606},[],[608],{"type":49,"value":609},"Keep every pixel of @Image1 except [region]",{"type":49,"value":611},"), don't re-list scene tokens that the reference already shows, and strip quality-upgrade words (\"photo-realistic\", \"studio quality\", \"8K\") from the prompt — they trigger regen. See ",{"type":43,"tag":58,"props":613,"children":615},{"className":614},[],[616],{"type":49,"value":617},"references\u002Favatar-edit-not-regenerate.md",{"type":49,"value":246},{"type":43,"tag":77,"props":620,"children":621},{},[622,627,629,677,680,682,685,686,692],{"type":43,"tag":81,"props":623,"children":624},{},[625],{"type":49,"value":626},"For UGC video, surface the speech-or-silent choice — don't pick silently.",{"type":49,"value":628}," \"UGC video\" is ambiguous: it could be a spoken creator clip (script-driven, voice + lip-sync) OR a motion-only beat (OOTD reveal, b-roll, animated stills with text overlays in post). Both are legitimate creative formats. The agent must NOT pick one silently:",{"type":43,"tag":73,"props":630,"children":631},{},[632,650,660],{"type":43,"tag":77,"props":633,"children":634},{},[635,640,642,648],{"type":43,"tag":81,"props":636,"children":637},{},[638],{"type":49,"value":639},"Strong signal toward SPOKEN",{"type":49,"value":641}," (just go): user wrote \"talking-avatar\", \"creator says\", \"voiceover\", \"explainer\", \"ad with script\", or supplied a script themselves. Build script → put in plan summary → generate with ",{"type":43,"tag":58,"props":643,"children":645},{"className":644},[],[646],{"type":49,"value":647},"generate_audio: true",{"type":49,"value":649}," and the quoted speech inline.",{"type":43,"tag":77,"props":651,"children":652},{},[653,658],{"type":43,"tag":81,"props":654,"children":655},{},[656],{"type":49,"value":657},"Strong signal toward SILENT",{"type":49,"value":659}," (just go): user wrote \"OOTD reveal\", \"motion only\", \"no audio\", \"B-roll\", \"Pinterest aesthetic\", or wants a static-image animation reel.",{"type":43,"tag":77,"props":661,"children":662},{},[663,668,670,675],{"type":43,"tag":81,"props":664,"children":665},{},[666],{"type":49,"value":667},"Ambiguous \"UGC video\" \u002F \"promo video\" \u002F \"ad video\"",{"type":49,"value":669}," — call ",{"type":43,"tag":58,"props":671,"children":673},{"className":672},[],[674],{"type":49,"value":554},{"type":49,"value":676}," with two options: spoken (with a draft 4-8 word hook) or silent + post-overlay text. Recommend whichever fits the user's brief better. Do NOT silently default.",{"type":43,"tag":207,"props":678,"children":679},{},[],{"type":49,"value":681},"When SPOKEN is selected: never start generation without quoted speech in the prompt. If the user didn't supply one, draft 4-12s of dialogue that fits the brief, surface it in the plan summary, then proceed. Generating with a generic action prompt and no quoted speech produces silent video or model-babbled phonemes — wasted credits.",{"type":43,"tag":207,"props":683,"children":684},{},[],{"type":49,"value":238},{"type":43,"tag":58,"props":687,"children":689},{"className":688},[],[690],{"type":49,"value":691},"references\u002Fscript-and-duration.md",{"type":49,"value":693}," for word-count → duration math.",{"type":43,"tag":77,"props":695,"children":696},{},[697,702,704,709,711,714,716,787,790,792,798],{"type":43,"tag":81,"props":698,"children":699},{},[700],{"type":49,"value":701},"Multi-segment plans STOP after Seg 1 for visual approval — don't fan-out Segs 2..N until the user confirms Seg 1 came out right.",{"type":49,"value":703}," Voice continuity locks Seg 1's audio into every subsequent segment via ",{"type":43,"tag":58,"props":705,"children":707},{"className":706},[],[708],{"type":49,"value":196},{"type":49,"value":710},". If Seg 1 has the wrong voice, wrong avatar identity, mispronounced word, or off-brand framing, every parallel Seg 2..N inherits that defect. A 4-segment plan at ~250cr\u002Fsegment = ~1000cr; auto-fanning out a broken Seg 1 burns ~750cr that didn't need to be spent.",{"type":43,"tag":207,"props":712,"children":713},{},[],{"type":49,"value":715},"The flow is:",{"type":43,"tag":145,"props":717,"children":718},{},[719,724,729,782],{"type":43,"tag":77,"props":720,"children":721},{},[722],{"type":49,"value":723},"Plan summary → user approves (Rule 5).",{"type":43,"tag":77,"props":725,"children":726},{},[727],{"type":49,"value":728},"Render Seg 1 only.",{"type":43,"tag":77,"props":730,"children":731},{},[732,737,739,744,746],{"type":43,"tag":81,"props":733,"children":734},{},[735],{"type":49,"value":736},"Surface Seg 1's video URL in the chat",{"type":49,"value":738}," + call ",{"type":43,"tag":58,"props":740,"children":742},{"className":741},[],[743],{"type":49,"value":554},{"type":49,"value":745}," with options:\n",{"type":43,"tag":73,"props":747,"children":748},{},[749,764,774],{"type":43,"tag":77,"props":750,"children":751},{},[752,757,759],{"type":43,"tag":81,"props":753,"children":754},{},[755],{"type":49,"value":756},"Looks good — render Segs 2..N",{"type":49,"value":758}," ",{"type":43,"tag":227,"props":760,"children":761},{},[762],{"type":49,"value":763},"(Recommended if Seg 1 is clean)",{"type":43,"tag":77,"props":765,"children":766},{},[767,772],{"type":43,"tag":81,"props":768,"children":769},{},[770],{"type":49,"value":771},"Re-render Seg 1",{"type":49,"value":773}," (adjust prompt \u002F reference \u002F duration)",{"type":43,"tag":77,"props":775,"children":776},{},[777],{"type":43,"tag":81,"props":778,"children":779},{},[780],{"type":49,"value":781},"Cancel the multi-segment plan",{"type":43,"tag":77,"props":783,"children":784},{},[785],{"type":49,"value":786},"Only on \"Looks good\" → fan out Segs 2..N in parallel with the extracted audio.",{"type":43,"tag":207,"props":788,"children":789},{},[],{"type":49,"value":791},"This gate does NOT compress in auto mode. The Seg 1 → Seg N spend multiplier is the same regardless of how patient the user is. See ",{"type":43,"tag":58,"props":793,"children":795},{"className":794},[],[796],{"type":49,"value":797},"pipelines\u002Fugc-video.md",{"type":49,"value":799}," for the canonical multi-segment flow.",{"type":43,"tag":77,"props":801,"children":802},{},[803,808,810,815,817,820,821,826,828,858,861,862,867,869,877,880,882,887,889,894,897,898,904],{"type":43,"tag":81,"props":804,"children":805},{},[806],{"type":49,"value":807},"Camera stays put. Don't change angle \u002F framing unless the user explicitly asks for it.",{"type":49,"value":809}," Documentary-style UGC (street interview, kitchen demo, founder POV, customer testimonial, vlog-style) reads as ",{"type":43,"tag":81,"props":811,"children":812},{},[813],{"type":49,"value":814},"one continuous camera point",{"type":49,"value":816},", not a multi-angle cut sequence. Default to: same framing (e.g., mid-shot eye-level), same distance, avatar in roughly the same position across every segment. The \"transition\" between segments is the avatar's gesture \u002F line \u002F micro-expression — not an angle cut.",{"type":43,"tag":207,"props":818,"children":819},{},[],{"type":49,"value":298},{"type":43,"tag":81,"props":822,"children":823},{},[824],{"type":49,"value":825},"Wrong defaults",{"type":49,"value":827}," (silent regression — produces a \"shot-by-Director-of-Photography\" feel that destroys UGC authenticity):",{"type":43,"tag":73,"props":829,"children":830},{},[831,836,841,846],{"type":43,"tag":77,"props":832,"children":833},{},[834],{"type":49,"value":835},"Seg 1 mid-shot → Seg 2 over-shoulder → Seg 3 close-up",{"type":43,"tag":77,"props":837,"children":838},{},[839],{"type":49,"value":840},"\"Push in slowly on the speaker\"",{"type":43,"tag":77,"props":842,"children":843},{},[844],{"type":49,"value":845},"\"Cut to product close-up on the punchline\"",{"type":43,"tag":77,"props":847,"children":848},{},[849,851,856],{"type":49,"value":850},"Each ",{"type":43,"tag":58,"props":852,"children":854},{"className":853},[],[855],{"type":49,"value":284},{"type":49,"value":857}," segment ref using a different angle of the same person",{"type":43,"tag":207,"props":859,"children":860},{},[],{"type":49,"value":349},{"type":43,"tag":81,"props":863,"children":864},{},[865],{"type":49,"value":866},"Right default",{"type":49,"value":868}," (UGC authenticity preserved):",{"type":43,"tag":73,"props":870,"children":871},{},[872],{"type":43,"tag":77,"props":873,"children":874},{},[875],{"type":49,"value":876},"Same source frame or near-identical angle\u002Flighting across every segment. Only the avatar's hand position, gaze, or expression changes between segments.",{"type":43,"tag":207,"props":878,"children":879},{},[],{"type":49,"value":881},"Only switch to multi-angle when the user explicitly asks: \"alternate angles each segment\", \"cinematic cut to close-up at the hook\", \"include an over-shoulder shot of the product\", \"studio-style multi-cam UGC\". When unsure, ask via ",{"type":43,"tag":58,"props":883,"children":885},{"className":884},[],[886],{"type":49,"value":554},{"type":49,"value":888},": ",{"type":43,"tag":227,"props":890,"children":891},{},[892],{"type":49,"value":893},"Fixed camera (recommended for documentary UGC) \u002F Multi-angle (cinematic cuts).",{"type":43,"tag":207,"props":895,"children":896},{},[],{"type":49,"value":238},{"type":43,"tag":58,"props":899,"children":901},{"className":900},[],[902],{"type":49,"value":903},"references\u002Ffirst-frame-not-camera-motion.md",{"type":49,"value":905}," for the related rule about static framing vs. described camera motion.",{"type":43,"tag":77,"props":907,"children":908},{},[909,914,916,921,923,928,930,935,937,940,942,1029,1032,1034,1220,1223,1228,1230,1235,1236,1241,1243,1248],{"type":43,"tag":81,"props":910,"children":911},{},[912],{"type":49,"value":913},"Audit ALL the references the user supplied — product alone is not enough for UGC.",{"type":49,"value":915}," When the brief is \"make a UGC video for this product\" and the user supplied ONLY a product photo, STOP before generating. Seedance R2V needs anchored references for: the ",{"type":43,"tag":81,"props":917,"children":918},{},[919],{"type":49,"value":920},"product",{"type":49,"value":922},", the ",{"type":43,"tag":81,"props":924,"children":925},{},[926],{"type":49,"value":927},"avatar \u002F creator",{"type":49,"value":929}," (face, build, vibe), and the ",{"type":43,"tag":81,"props":931,"children":932},{},[933],{"type":49,"value":934},"scene \u002F location",{"type":49,"value":936}," (kitchen, bathroom, gym, sidewalk). Prose can describe the product in detail, but if you describe the avatar in prose only, Seedance will hallucinate a generic-looking person — usually a synthetic-feeling Caucasian woman in her 20s — and the scene will read as stock B-roll, not the brand's world. The result fails the \"doesn't look made\" bar.",{"type":43,"tag":207,"props":938,"children":939},{},[],{"type":49,"value":941},"Before generation, audit the supplied media:",{"type":43,"tag":73,"props":943,"children":944},{},[945,968,1011],{"type":43,"tag":77,"props":946,"children":947},{},[948,953,955,960,962,967],{"type":43,"tag":81,"props":949,"children":950},{},[951],{"type":49,"value":952},"Product image",{"type":49,"value":954}," — almost always present. Pass as ",{"type":43,"tag":58,"props":956,"children":958},{"className":957},[],[959],{"type":49,"value":188},{"type":49,"value":961}," with prompt label ",{"type":43,"tag":58,"props":963,"children":965},{"className":964},[],[966],{"type":49,"value":180},{"type":49,"value":246},{"type":43,"tag":77,"props":969,"children":970},{},[971,976,978,983,985,990,992,1002,1004,1009],{"type":43,"tag":81,"props":972,"children":973},{},[974],{"type":49,"value":975},"Avatar \u002F creator image",{"type":49,"value":977}," — if user provided one, pass it as a separate ",{"type":43,"tag":58,"props":979,"children":981},{"className":980},[],[982],{"type":49,"value":188},{"type":49,"value":984}," and label ",{"type":43,"tag":58,"props":986,"children":988},{"className":987},[],[989],{"type":49,"value":342},{"type":49,"value":991},". If user didn't provide one, ",{"type":43,"tag":81,"props":993,"children":994},{},[995,997],{"type":49,"value":996},"call ",{"type":43,"tag":58,"props":998,"children":1000},{"className":999},[],[1001],{"type":49,"value":554},{"type":49,"value":1003}," before generating: ",{"type":43,"tag":227,"props":1005,"children":1006},{},[1007],{"type":49,"value":1008},"Upload a creator headshot \u002F Pick from QuickDesign avatar library (5,000+ portraits) \u002F Proceed with prose-described creator (synthetic-look risk).",{"type":49,"value":1010}," Recommend \"Pick from library\" if the user is brief-only.",{"type":43,"tag":77,"props":1012,"children":1013},{},[1014,1019,1021,1027],{"type":43,"tag":81,"props":1015,"children":1016},{},[1017],{"type":49,"value":1018},"Scene \u002F location image",{"type":49,"value":1020}," — if the user is filming a \"kitchen scene\", \"bathroom mirror selfie\", \"office desk POV\", etc., ask whether they have a reference photo of the actual room. Pass as ",{"type":43,"tag":58,"props":1022,"children":1024},{"className":1023},[],[1025],{"type":49,"value":1026},"@Image3",{"type":49,"value":1028}," if supplied.",{"type":43,"tag":207,"props":1030,"children":1031},{},[],{"type":49,"value":1033},"The Seedance R2V call should look like:",{"type":43,"tag":314,"props":1035,"children":1039},{"className":1036,"code":1037,"language":1038,"meta":322,"style":322},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","quickdesign video generate --provider seedance \\\n  --reference-image product.jpg \\\n  --reference-image avatar.jpg \\\n  --reference-image scene.jpg \\\n  --aspect-ratio 9:16 --duration 12 --resolution 1080p \\\n  -p '@Image2 in @Image3, holds @Image1 toward camera. She says: \"...\" No music score. No subtitles or on-screen text.' \\\n  -o seg1.mp4 --wait\n","bash",[1040],{"type":43,"tag":58,"props":1041,"children":1042},{"__ignoreMap":322},[1043,1081,1099,1116,1133,1172,1201],{"type":43,"tag":1044,"props":1045,"children":1048},"span",{"class":1046,"line":1047},"line",1,[1049,1054,1060,1065,1070,1075],{"type":43,"tag":1044,"props":1050,"children":1052},{"style":1051},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1053],{"type":49,"value":4},{"type":43,"tag":1044,"props":1055,"children":1057},{"style":1056},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1058],{"type":49,"value":1059}," video",{"type":43,"tag":1044,"props":1061,"children":1062},{"style":1056},[1063],{"type":49,"value":1064}," generate",{"type":43,"tag":1044,"props":1066,"children":1067},{"style":1056},[1068],{"type":49,"value":1069}," --provider",{"type":43,"tag":1044,"props":1071,"children":1072},{"style":1056},[1073],{"type":49,"value":1074}," seedance",{"type":43,"tag":1044,"props":1076,"children":1078},{"style":1077},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1079],{"type":49,"value":1080}," \\\n",{"type":43,"tag":1044,"props":1082,"children":1084},{"class":1046,"line":1083},2,[1085,1090,1095],{"type":43,"tag":1044,"props":1086,"children":1087},{"style":1056},[1088],{"type":49,"value":1089},"  --reference-image",{"type":43,"tag":1044,"props":1091,"children":1092},{"style":1056},[1093],{"type":49,"value":1094}," product.jpg",{"type":43,"tag":1044,"props":1096,"children":1097},{"style":1077},[1098],{"type":49,"value":1080},{"type":43,"tag":1044,"props":1100,"children":1102},{"class":1046,"line":1101},3,[1103,1107,1112],{"type":43,"tag":1044,"props":1104,"children":1105},{"style":1056},[1106],{"type":49,"value":1089},{"type":43,"tag":1044,"props":1108,"children":1109},{"style":1056},[1110],{"type":49,"value":1111}," avatar.jpg",{"type":43,"tag":1044,"props":1113,"children":1114},{"style":1077},[1115],{"type":49,"value":1080},{"type":43,"tag":1044,"props":1117,"children":1119},{"class":1046,"line":1118},4,[1120,1124,1129],{"type":43,"tag":1044,"props":1121,"children":1122},{"style":1056},[1123],{"type":49,"value":1089},{"type":43,"tag":1044,"props":1125,"children":1126},{"style":1056},[1127],{"type":49,"value":1128}," scene.jpg",{"type":43,"tag":1044,"props":1130,"children":1131},{"style":1077},[1132],{"type":49,"value":1080},{"type":43,"tag":1044,"props":1134,"children":1136},{"class":1046,"line":1135},5,[1137,1142,1147,1152,1158,1163,1168],{"type":43,"tag":1044,"props":1138,"children":1139},{"style":1056},[1140],{"type":49,"value":1141},"  --aspect-ratio",{"type":43,"tag":1044,"props":1143,"children":1144},{"style":1056},[1145],{"type":49,"value":1146}," 9:16",{"type":43,"tag":1044,"props":1148,"children":1149},{"style":1056},[1150],{"type":49,"value":1151}," --duration",{"type":43,"tag":1044,"props":1153,"children":1155},{"style":1154},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1156],{"type":49,"value":1157}," 12",{"type":43,"tag":1044,"props":1159,"children":1160},{"style":1056},[1161],{"type":49,"value":1162}," --resolution",{"type":43,"tag":1044,"props":1164,"children":1165},{"style":1056},[1166],{"type":49,"value":1167}," 1080p",{"type":43,"tag":1044,"props":1169,"children":1170},{"style":1077},[1171],{"type":49,"value":1080},{"type":43,"tag":1044,"props":1173,"children":1175},{"class":1046,"line":1174},6,[1176,1181,1187,1192,1197],{"type":43,"tag":1044,"props":1177,"children":1178},{"style":1056},[1179],{"type":49,"value":1180},"  -p",{"type":43,"tag":1044,"props":1182,"children":1184},{"style":1183},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1185],{"type":49,"value":1186}," '",{"type":43,"tag":1044,"props":1188,"children":1189},{"style":1056},[1190],{"type":49,"value":1191},"@Image2 in @Image3, holds @Image1 toward camera. She says: \"...\" No music score. No subtitles or on-screen text.",{"type":43,"tag":1044,"props":1193,"children":1194},{"style":1183},[1195],{"type":49,"value":1196},"'",{"type":43,"tag":1044,"props":1198,"children":1199},{"style":1077},[1200],{"type":49,"value":1080},{"type":43,"tag":1044,"props":1202,"children":1204},{"class":1046,"line":1203},7,[1205,1210,1215],{"type":43,"tag":1044,"props":1206,"children":1207},{"style":1056},[1208],{"type":49,"value":1209},"  -o",{"type":43,"tag":1044,"props":1211,"children":1212},{"style":1056},[1213],{"type":49,"value":1214}," seg1.mp4",{"type":43,"tag":1044,"props":1216,"children":1217},{"style":1056},[1218],{"type":49,"value":1219}," --wait\n",{"type":43,"tag":207,"props":1221,"children":1222},{},[],{"type":43,"tag":58,"props":1224,"children":1226},{"className":1225},[],[1227],{"type":49,"value":180},{"type":49,"value":1229},"\u002F",{"type":43,"tag":58,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":49,"value":342},{"type":49,"value":1229},{"type":43,"tag":58,"props":1237,"children":1239},{"className":1238},[],[1240],{"type":49,"value":1026},{"type":49,"value":1242}," labels do the heavy lifting; prose only describes the action and quoted speech. See ",{"type":43,"tag":58,"props":1244,"children":1246},{"className":1245},[],[1247],{"type":49,"value":375},{"type":49,"value":246},{"type":43,"tag":66,"props":1250,"children":1252},{"id":1251},"decision-tree-which-doc-to-open-first",[1253],{"type":49,"value":1254},"Decision tree — which doc to open first",{"type":43,"tag":52,"props":1256,"children":1257},{},[1258],{"type":43,"tag":81,"props":1259,"children":1260},{},[1261],{"type":49,"value":1262},"By job type:",{"type":43,"tag":1264,"props":1265,"children":1266},"table",{},[1267,1286],{"type":43,"tag":1268,"props":1269,"children":1270},"thead",{},[1271],{"type":43,"tag":1272,"props":1273,"children":1274},"tr",{},[1275,1281],{"type":43,"tag":1276,"props":1277,"children":1278},"th",{},[1279],{"type":49,"value":1280},"Request",{"type":43,"tag":1276,"props":1282,"children":1283},{},[1284],{"type":49,"value":1285},"Start here",{"type":43,"tag":1287,"props":1288,"children":1289},"tbody",{},[1290,1314,1337,1356,1373,1392,1408,1425,1442],{"type":43,"tag":1272,"props":1291,"children":1292},{},[1293,1299],{"type":43,"tag":1294,"props":1295,"children":1296},"td",{},[1297],{"type":49,"value":1298},"UGC \u002F talking-avatar \u002F promo \u002F explainer \u002F multi-segment ad",{"type":43,"tag":1294,"props":1300,"children":1301},{},[1302,1307,1309],{"type":43,"tag":58,"props":1303,"children":1305},{"className":1304},[],[1306],{"type":49,"value":797},{"type":49,"value":1308}," → ",{"type":43,"tag":58,"props":1310,"children":1312},{"className":1311},[],[1313],{"type":49,"value":244},{"type":43,"tag":1272,"props":1315,"children":1316},{},[1317,1322],{"type":43,"tag":1294,"props":1318,"children":1319},{},[1320],{"type":49,"value":1321},"Image edit (angle, state, multi-product composition)",{"type":43,"tag":1294,"props":1323,"children":1324},{},[1325,1331,1332],{"type":43,"tag":58,"props":1326,"children":1328},{"className":1327},[],[1329],{"type":49,"value":1330},"models\u002Fnano-banana-2.md",{"type":49,"value":1308},{"type":43,"tag":58,"props":1333,"children":1335},{"className":1334},[],[1336],{"type":49,"value":375},{"type":43,"tag":1272,"props":1338,"children":1339},{},[1340,1345],{"type":43,"tag":1294,"props":1341,"children":1342},{},[1343],{"type":49,"value":1344},"Cinematic single-shot, audio-quality-driven (4\u002F8\u002F12s)",{"type":43,"tag":1294,"props":1346,"children":1347},{},[1348,1354],{"type":43,"tag":58,"props":1349,"children":1351},{"className":1350},[],[1352],{"type":49,"value":1353},"models\u002Fsora2-i2v.md",{"type":49,"value":1355}," (only on explicit user opt-in)",{"type":43,"tag":1272,"props":1357,"children":1358},{},[1359,1364],{"type":43,"tag":1294,"props":1360,"children":1361},{},[1362],{"type":49,"value":1363},"Budget loop \u002F non-spoken b-roll",{"type":43,"tag":1294,"props":1365,"children":1366},{},[1367],{"type":43,"tag":58,"props":1368,"children":1370},{"className":1369},[],[1371],{"type":49,"value":1372},"models\u002Fkling-3-pro.md",{"type":43,"tag":1272,"props":1374,"children":1375},{},[1376,1381],{"type":43,"tag":1294,"props":1377,"children":1378},{},[1379],{"type":49,"value":1380},"Final video too low-res",{"type":43,"tag":1294,"props":1382,"children":1383},{},[1384,1390],{"type":43,"tag":58,"props":1385,"children":1387},{"className":1386},[],[1388],{"type":49,"value":1389},"models\u002Ftopaz-video-upscale.md",{"type":49,"value":1391}," (run after concat)",{"type":43,"tag":1272,"props":1393,"children":1394},{},[1395,1400],{"type":43,"tag":1294,"props":1396,"children":1397},{},[1398],{"type":49,"value":1399},"Add captions to existing video",{"type":43,"tag":1294,"props":1401,"children":1402},{},[1403],{"type":43,"tag":58,"props":1404,"children":1406},{"className":1405},[],[1407],{"type":49,"value":480},{"type":43,"tag":1272,"props":1409,"children":1410},{},[1411,1416],{"type":43,"tag":1294,"props":1412,"children":1413},{},[1414],{"type":49,"value":1415},"Brand not in Spy Brands library \u002F 0 search results",{"type":43,"tag":1294,"props":1417,"children":1418},{},[1419],{"type":43,"tag":58,"props":1420,"children":1422},{"className":1421},[],[1423],{"type":49,"value":1424},"references\u002Fspybrands-add-on-miss.md",{"type":43,"tag":1272,"props":1426,"children":1427},{},[1428,1433],{"type":43,"tag":1294,"props":1429,"children":1430},{},[1431],{"type":49,"value":1432},"User is on claude.ai (web) and asks about QuickDesign",{"type":43,"tag":1294,"props":1434,"children":1435},{},[1436],{"type":43,"tag":58,"props":1437,"children":1439},{"className":1438},[],[1440],{"type":49,"value":1441},"references\u002Fconnecting-claude-ai-via-mcp.md",{"type":43,"tag":1272,"props":1443,"children":1444},{},[1445,1450],{"type":43,"tag":1294,"props":1446,"children":1447},{},[1448],{"type":49,"value":1449},"Publish designs to Meta as ads \u002F analyze own Meta ad performance",{"type":43,"tag":1294,"props":1451,"children":1452},{},[1453],{"type":43,"tag":58,"props":1454,"children":1456},{"className":1455},[],[1457],{"type":49,"value":1458},"references\u002Fdeploy-meta.md",{"type":43,"tag":52,"props":1460,"children":1461},{},[1462],{"type":43,"tag":81,"props":1463,"children":1464},{},[1465],{"type":49,"value":1466},"By job phase:",{"type":43,"tag":1264,"props":1468,"children":1469},{},[1470,1486],{"type":43,"tag":1268,"props":1471,"children":1472},{},[1473],{"type":43,"tag":1272,"props":1474,"children":1475},{},[1476,1481],{"type":43,"tag":1276,"props":1477,"children":1478},{},[1479],{"type":49,"value":1480},"Phase",{"type":43,"tag":1276,"props":1482,"children":1483},{},[1484],{"type":49,"value":1485},"Read",{"type":43,"tag":1287,"props":1487,"children":1488},{},[1489,1512,1536,1558,1575,1591],{"type":43,"tag":1272,"props":1490,"children":1491},{},[1492,1497],{"type":43,"tag":1294,"props":1493,"children":1494},{},[1495],{"type":49,"value":1496},"Plan: script \u002F duration math, narrative beats",{"type":43,"tag":1294,"props":1498,"children":1499},{},[1500,1505,1506],{"type":43,"tag":58,"props":1501,"children":1503},{"className":1502},[],[1504],{"type":49,"value":691},{"type":49,"value":190},{"type":43,"tag":58,"props":1507,"children":1509},{"className":1508},[],[1510],{"type":49,"value":1511},"references\u002Fnarrative-arc.md",{"type":43,"tag":1272,"props":1513,"children":1514},{},[1515,1520],{"type":43,"tag":1294,"props":1516,"children":1517},{},[1518],{"type":49,"value":1519},"Pre-flight: which model is alive in the registry",{"type":43,"tag":1294,"props":1521,"children":1522},{},[1523,1529,1530],{"type":43,"tag":58,"props":1524,"children":1526},{"className":1525},[],[1527],{"type":49,"value":1528},"quickdesign video models",{"type":49,"value":190},{"type":43,"tag":58,"props":1531,"children":1533},{"className":1532},[],[1534],{"type":49,"value":1535},"quickdesign cost --category video",{"type":43,"tag":1272,"props":1537,"children":1538},{},[1539,1544],{"type":43,"tag":1294,"props":1540,"children":1541},{},[1542],{"type":49,"value":1543},"Per-segment reference choice",{"type":43,"tag":1294,"props":1545,"children":1546},{},[1547,1552,1553],{"type":43,"tag":58,"props":1548,"children":1550},{"className":1549},[],[1551],{"type":49,"value":375},{"type":49,"value":190},{"type":43,"tag":58,"props":1554,"children":1556},{"className":1555},[],[1557],{"type":49,"value":1511},{"type":43,"tag":1272,"props":1559,"children":1560},{},[1561,1566],{"type":43,"tag":1294,"props":1562,"children":1563},{},[1564],{"type":49,"value":1565},"Generation: prompt skeleton + gotchas for the model you picked",{"type":43,"tag":1294,"props":1567,"children":1568},{},[1569],{"type":43,"tag":58,"props":1570,"children":1572},{"className":1571},[],[1573],{"type":49,"value":1574},"models\u002F\u003Cslug>.md",{"type":43,"tag":1272,"props":1576,"children":1577},{},[1578,1583],{"type":43,"tag":1294,"props":1579,"children":1580},{},[1581],{"type":49,"value":1582},"Quality gates: banana anatomy check, plan-summary approval",{"type":43,"tag":1294,"props":1584,"children":1585},{},[1586],{"type":43,"tag":58,"props":1587,"children":1589},{"className":1588},[],[1590],{"type":49,"value":531},{"type":43,"tag":1272,"props":1592,"children":1593},{},[1594,1599],{"type":43,"tag":1294,"props":1595,"children":1596},{},[1597],{"type":49,"value":1598},"Post-processing: subtitle, upscale",{"type":43,"tag":1294,"props":1600,"children":1601},{},[1602,1607,1608],{"type":43,"tag":58,"props":1603,"children":1605},{"className":1604},[],[1606],{"type":49,"value":480},{"type":49,"value":190},{"type":43,"tag":58,"props":1609,"children":1611},{"className":1610},[],[1612],{"type":49,"value":1389},{"type":43,"tag":66,"props":1614,"children":1616},{"id":1615},"discover-at-runtime",[1617],{"type":49,"value":1618},"Discover at runtime",{"type":43,"tag":52,"props":1620,"children":1621},{},[1622,1624,1629],{"type":49,"value":1623},"The model registry is DB-driven and changes over time (new providers, retired versions, repriced tiers). ",{"type":43,"tag":81,"props":1625,"children":1626},{},[1627],{"type":49,"value":1628},"Don't hardcode model assumptions",{"type":49,"value":1630}," — query the registry first when picking between alternatives.",{"type":43,"tag":314,"props":1632,"children":1634},{"className":1036,"code":1633,"language":1038,"meta":322,"style":322},"quickdesign video models                            # active video models\nquickdesign image models                            # active image-edit models\nquickdesign cost                                    # all models, grouped by category\nquickdesign cost --category video\nquickdesign cost \u003Cslug> -d \u003Cduration> -r \u003Cresolution>   # exact compute for one model + params\n",[1635],{"type":43,"tag":58,"props":1636,"children":1637},{"__ignoreMap":322},[1638,1660,1681,1698,1719],{"type":43,"tag":1044,"props":1639,"children":1640},{"class":1046,"line":1047},[1641,1645,1649,1654],{"type":43,"tag":1044,"props":1642,"children":1643},{"style":1051},[1644],{"type":49,"value":4},{"type":43,"tag":1044,"props":1646,"children":1647},{"style":1056},[1648],{"type":49,"value":1059},{"type":43,"tag":1044,"props":1650,"children":1651},{"style":1056},[1652],{"type":49,"value":1653}," models",{"type":43,"tag":1044,"props":1655,"children":1657},{"style":1656},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1658],{"type":49,"value":1659},"                            # active video models\n",{"type":43,"tag":1044,"props":1661,"children":1662},{"class":1046,"line":1083},[1663,1667,1672,1676],{"type":43,"tag":1044,"props":1664,"children":1665},{"style":1051},[1666],{"type":49,"value":4},{"type":43,"tag":1044,"props":1668,"children":1669},{"style":1056},[1670],{"type":49,"value":1671}," image",{"type":43,"tag":1044,"props":1673,"children":1674},{"style":1056},[1675],{"type":49,"value":1653},{"type":43,"tag":1044,"props":1677,"children":1678},{"style":1656},[1679],{"type":49,"value":1680},"                            # active image-edit models\n",{"type":43,"tag":1044,"props":1682,"children":1683},{"class":1046,"line":1101},[1684,1688,1693],{"type":43,"tag":1044,"props":1685,"children":1686},{"style":1051},[1687],{"type":49,"value":4},{"type":43,"tag":1044,"props":1689,"children":1690},{"style":1056},[1691],{"type":49,"value":1692}," cost",{"type":43,"tag":1044,"props":1694,"children":1695},{"style":1656},[1696],{"type":49,"value":1697},"                                    # all models, grouped by category\n",{"type":43,"tag":1044,"props":1699,"children":1700},{"class":1046,"line":1118},[1701,1705,1709,1714],{"type":43,"tag":1044,"props":1702,"children":1703},{"style":1051},[1704],{"type":49,"value":4},{"type":43,"tag":1044,"props":1706,"children":1707},{"style":1056},[1708],{"type":49,"value":1692},{"type":43,"tag":1044,"props":1710,"children":1711},{"style":1056},[1712],{"type":49,"value":1713}," --category",{"type":43,"tag":1044,"props":1715,"children":1716},{"style":1056},[1717],{"type":49,"value":1718}," video\n",{"type":43,"tag":1044,"props":1720,"children":1721},{"class":1046,"line":1135},[1722,1726,1730,1735,1740,1745,1750,1755,1759,1764,1769,1773,1778,1782,1787,1791,1795],{"type":43,"tag":1044,"props":1723,"children":1724},{"style":1051},[1725],{"type":49,"value":4},{"type":43,"tag":1044,"props":1727,"children":1728},{"style":1056},[1729],{"type":49,"value":1692},{"type":43,"tag":1044,"props":1731,"children":1732},{"style":1183},[1733],{"type":49,"value":1734}," \u003C",{"type":43,"tag":1044,"props":1736,"children":1737},{"style":1056},[1738],{"type":49,"value":1739},"slu",{"type":43,"tag":1044,"props":1741,"children":1742},{"style":1077},[1743],{"type":49,"value":1744},"g",{"type":43,"tag":1044,"props":1746,"children":1747},{"style":1183},[1748],{"type":49,"value":1749},">",{"type":43,"tag":1044,"props":1751,"children":1752},{"style":1056},[1753],{"type":49,"value":1754}," -d",{"type":43,"tag":1044,"props":1756,"children":1757},{"style":1183},[1758],{"type":49,"value":1734},{"type":43,"tag":1044,"props":1760,"children":1761},{"style":1056},[1762],{"type":49,"value":1763},"duratio",{"type":43,"tag":1044,"props":1765,"children":1766},{"style":1077},[1767],{"type":49,"value":1768},"n",{"type":43,"tag":1044,"props":1770,"children":1771},{"style":1183},[1772],{"type":49,"value":1749},{"type":43,"tag":1044,"props":1774,"children":1775},{"style":1056},[1776],{"type":49,"value":1777}," -r",{"type":43,"tag":1044,"props":1779,"children":1780},{"style":1183},[1781],{"type":49,"value":1734},{"type":43,"tag":1044,"props":1783,"children":1784},{"style":1056},[1785],{"type":49,"value":1786},"resolutio",{"type":43,"tag":1044,"props":1788,"children":1789},{"style":1077},[1790],{"type":49,"value":1768},{"type":43,"tag":1044,"props":1792,"children":1793},{"style":1183},[1794],{"type":49,"value":1749},{"type":43,"tag":1044,"props":1796,"children":1797},{"style":1656},[1798],{"type":49,"value":1799},"   # exact compute for one model + params\n",{"type":43,"tag":52,"props":1801,"children":1802},{},[1803,1805,1810],{"type":49,"value":1804},"When a new model lands that's better-fit than the current default, drop a new file in ",{"type":43,"tag":58,"props":1806,"children":1808},{"className":1807},[],[1809],{"type":49,"value":1574},{"type":49,"value":1811}," (copy the format from any existing card) and update the cardinal rule #0 \u002F decision tree if the model becomes the new universal default.",{"type":43,"tag":66,"props":1813,"children":1815},{"id":1814},"quick-start-common-commands",[1816],{"type":49,"value":1817},"Quick start — common commands",{"type":43,"tag":314,"props":1819,"children":1821},{"className":1036,"code":1820,"language":1038,"meta":322,"style":322},"# Auth (one-time, browser flow)\nquickdesign auth login\n\n# Image edit — angle change \u002F state change \u002F multi-ref product composition\nquickdesign image generate \\\n  --model nano-banana-2 \\\n  --reference-image ~\u002Fpath\u002Fto\u002Favatar.jpg \\\n  --reference-image ~\u002Fpath\u002Fto\u002Fproduct.jpg \\\n  --aspect-ratio 9:16 --resolution 2K \\\n  -p \"@Image1 holds a product matching @Image2 exactly. ...\" \\\n  -o ~\u002Foutput.png --wait\n\n# Single Seedance R2V (≤15s spoken script — still R2V, not i2v)\nquickdesign video generate \\\n  --provider seedance \\\n  --reference-image ~\u002Fpath\u002Fto\u002Fsource.png \\\n  --aspect-ratio 9:16 --duration 12 --resolution 1080p \\\n  -o ~\u002Foutput.mp4 --wait \\\n  -p '@Image1 in the same setting. \u003Caction>. He\u002FShe says: \"...\" No music score. No subtitles or on-screen text. Vertical 9:16 format.'\n\n# Multi-segment Seedance R2V with voice continuity\n# 1) Generate Seg 1 (sequential, native audio)\nquickdesign video generate --provider seedance --reference-image seg1.png \\\n  --duration 12 --aspect-ratio 9:16 --resolution 1080p \\\n  -p '...' -o seg1.mp4 --wait\n# 2) Extract Seg 1 audio\nffmpeg -y -i seg1.mp4 -vn -acodec libmp3lame -q:a 2 seg1-audio.mp3\n# 3) Segs 2..N in parallel, each with --reference-audio\nquickdesign video generate --provider seedance \\\n  --reference-image seg2.png --reference-audio seg1-audio.mp3 \\\n  --duration 12 --aspect-ratio 9:16 --resolution 1080p \\\n  -p '...' -o seg2.mp4 --wait &\n# 4) Concat (mux-only, no quality loss)\nprintf \"file 'seg1.mp4'\\nfile 'seg2.mp4'\\n\" > \u002Ftmp\u002Fconcat.txt\nffmpeg -y -f concat -safe 0 -i \u002Ftmp\u002Fconcat.txt -c copy final.mp4\n\n# Auto-subtitle (karaoke style, post-generation)\nquickdesign video subtitle .\u002Ffinal.mp4 \\\n  --style tiktok --language en \\\n  -o .\u002Ffinal-subbed.mp4 --wait\n",[1822],{"type":43,"tag":58,"props":1823,"children":1824},{"__ignoreMap":322},[1825,1833,1850,1859,1867,1886,1903,1919,1936,1961,1988,2005,2013,2022,2042,2059,2076,2108,2130,2152,2160,2169,2178,2216,2250,2284,2293,2346,2355,2383,2410,2442,2480,2489,2522,2578,2586,2595,2621,2649],{"type":43,"tag":1044,"props":1826,"children":1827},{"class":1046,"line":1047},[1828],{"type":43,"tag":1044,"props":1829,"children":1830},{"style":1656},[1831],{"type":49,"value":1832},"# Auth (one-time, browser flow)\n",{"type":43,"tag":1044,"props":1834,"children":1835},{"class":1046,"line":1083},[1836,1840,1845],{"type":43,"tag":1044,"props":1837,"children":1838},{"style":1051},[1839],{"type":49,"value":4},{"type":43,"tag":1044,"props":1841,"children":1842},{"style":1056},[1843],{"type":49,"value":1844}," auth",{"type":43,"tag":1044,"props":1846,"children":1847},{"style":1056},[1848],{"type":49,"value":1849}," login\n",{"type":43,"tag":1044,"props":1851,"children":1852},{"class":1046,"line":1101},[1853],{"type":43,"tag":1044,"props":1854,"children":1856},{"emptyLinePlaceholder":1855},true,[1857],{"type":49,"value":1858},"\n",{"type":43,"tag":1044,"props":1860,"children":1861},{"class":1046,"line":1118},[1862],{"type":43,"tag":1044,"props":1863,"children":1864},{"style":1656},[1865],{"type":49,"value":1866},"# Image edit — angle change \u002F state change \u002F multi-ref product composition\n",{"type":43,"tag":1044,"props":1868,"children":1869},{"class":1046,"line":1135},[1870,1874,1878,1882],{"type":43,"tag":1044,"props":1871,"children":1872},{"style":1051},[1873],{"type":49,"value":4},{"type":43,"tag":1044,"props":1875,"children":1876},{"style":1056},[1877],{"type":49,"value":1671},{"type":43,"tag":1044,"props":1879,"children":1880},{"style":1056},[1881],{"type":49,"value":1064},{"type":43,"tag":1044,"props":1883,"children":1884},{"style":1077},[1885],{"type":49,"value":1080},{"type":43,"tag":1044,"props":1887,"children":1888},{"class":1046,"line":1174},[1889,1894,1899],{"type":43,"tag":1044,"props":1890,"children":1891},{"style":1056},[1892],{"type":49,"value":1893},"  --model",{"type":43,"tag":1044,"props":1895,"children":1896},{"style":1056},[1897],{"type":49,"value":1898}," nano-banana-2",{"type":43,"tag":1044,"props":1900,"children":1901},{"style":1077},[1902],{"type":49,"value":1080},{"type":43,"tag":1044,"props":1904,"children":1905},{"class":1046,"line":1203},[1906,1910,1915],{"type":43,"tag":1044,"props":1907,"children":1908},{"style":1056},[1909],{"type":49,"value":1089},{"type":43,"tag":1044,"props":1911,"children":1912},{"style":1056},[1913],{"type":49,"value":1914}," ~\u002Fpath\u002Fto\u002Favatar.jpg",{"type":43,"tag":1044,"props":1916,"children":1917},{"style":1077},[1918],{"type":49,"value":1080},{"type":43,"tag":1044,"props":1920,"children":1922},{"class":1046,"line":1921},8,[1923,1927,1932],{"type":43,"tag":1044,"props":1924,"children":1925},{"style":1056},[1926],{"type":49,"value":1089},{"type":43,"tag":1044,"props":1928,"children":1929},{"style":1056},[1930],{"type":49,"value":1931}," ~\u002Fpath\u002Fto\u002Fproduct.jpg",{"type":43,"tag":1044,"props":1933,"children":1934},{"style":1077},[1935],{"type":49,"value":1080},{"type":43,"tag":1044,"props":1937,"children":1939},{"class":1046,"line":1938},9,[1940,1944,1948,1952,1957],{"type":43,"tag":1044,"props":1941,"children":1942},{"style":1056},[1943],{"type":49,"value":1141},{"type":43,"tag":1044,"props":1945,"children":1946},{"style":1056},[1947],{"type":49,"value":1146},{"type":43,"tag":1044,"props":1949,"children":1950},{"style":1056},[1951],{"type":49,"value":1162},{"type":43,"tag":1044,"props":1953,"children":1954},{"style":1056},[1955],{"type":49,"value":1956}," 2K",{"type":43,"tag":1044,"props":1958,"children":1959},{"style":1077},[1960],{"type":49,"value":1080},{"type":43,"tag":1044,"props":1962,"children":1964},{"class":1046,"line":1963},10,[1965,1969,1974,1979,1984],{"type":43,"tag":1044,"props":1966,"children":1967},{"style":1056},[1968],{"type":49,"value":1180},{"type":43,"tag":1044,"props":1970,"children":1971},{"style":1183},[1972],{"type":49,"value":1973}," \"",{"type":43,"tag":1044,"props":1975,"children":1976},{"style":1056},[1977],{"type":49,"value":1978},"@Image1 holds a product matching @Image2 exactly. ...",{"type":43,"tag":1044,"props":1980,"children":1981},{"style":1183},[1982],{"type":49,"value":1983},"\"",{"type":43,"tag":1044,"props":1985,"children":1986},{"style":1077},[1987],{"type":49,"value":1080},{"type":43,"tag":1044,"props":1989,"children":1991},{"class":1046,"line":1990},11,[1992,1996,2001],{"type":43,"tag":1044,"props":1993,"children":1994},{"style":1056},[1995],{"type":49,"value":1209},{"type":43,"tag":1044,"props":1997,"children":1998},{"style":1056},[1999],{"type":49,"value":2000}," ~\u002Foutput.png",{"type":43,"tag":1044,"props":2002,"children":2003},{"style":1056},[2004],{"type":49,"value":1219},{"type":43,"tag":1044,"props":2006,"children":2008},{"class":1046,"line":2007},12,[2009],{"type":43,"tag":1044,"props":2010,"children":2011},{"emptyLinePlaceholder":1855},[2012],{"type":49,"value":1858},{"type":43,"tag":1044,"props":2014,"children":2016},{"class":1046,"line":2015},13,[2017],{"type":43,"tag":1044,"props":2018,"children":2019},{"style":1656},[2020],{"type":49,"value":2021},"# Single Seedance R2V (≤15s spoken script — still R2V, not i2v)\n",{"type":43,"tag":1044,"props":2023,"children":2025},{"class":1046,"line":2024},14,[2026,2030,2034,2038],{"type":43,"tag":1044,"props":2027,"children":2028},{"style":1051},[2029],{"type":49,"value":4},{"type":43,"tag":1044,"props":2031,"children":2032},{"style":1056},[2033],{"type":49,"value":1059},{"type":43,"tag":1044,"props":2035,"children":2036},{"style":1056},[2037],{"type":49,"value":1064},{"type":43,"tag":1044,"props":2039,"children":2040},{"style":1077},[2041],{"type":49,"value":1080},{"type":43,"tag":1044,"props":2043,"children":2045},{"class":1046,"line":2044},15,[2046,2051,2055],{"type":43,"tag":1044,"props":2047,"children":2048},{"style":1056},[2049],{"type":49,"value":2050},"  --provider",{"type":43,"tag":1044,"props":2052,"children":2053},{"style":1056},[2054],{"type":49,"value":1074},{"type":43,"tag":1044,"props":2056,"children":2057},{"style":1077},[2058],{"type":49,"value":1080},{"type":43,"tag":1044,"props":2060,"children":2062},{"class":1046,"line":2061},16,[2063,2067,2072],{"type":43,"tag":1044,"props":2064,"children":2065},{"style":1056},[2066],{"type":49,"value":1089},{"type":43,"tag":1044,"props":2068,"children":2069},{"style":1056},[2070],{"type":49,"value":2071}," ~\u002Fpath\u002Fto\u002Fsource.png",{"type":43,"tag":1044,"props":2073,"children":2074},{"style":1077},[2075],{"type":49,"value":1080},{"type":43,"tag":1044,"props":2077,"children":2079},{"class":1046,"line":2078},17,[2080,2084,2088,2092,2096,2100,2104],{"type":43,"tag":1044,"props":2081,"children":2082},{"style":1056},[2083],{"type":49,"value":1141},{"type":43,"tag":1044,"props":2085,"children":2086},{"style":1056},[2087],{"type":49,"value":1146},{"type":43,"tag":1044,"props":2089,"children":2090},{"style":1056},[2091],{"type":49,"value":1151},{"type":43,"tag":1044,"props":2093,"children":2094},{"style":1154},[2095],{"type":49,"value":1157},{"type":43,"tag":1044,"props":2097,"children":2098},{"style":1056},[2099],{"type":49,"value":1162},{"type":43,"tag":1044,"props":2101,"children":2102},{"style":1056},[2103],{"type":49,"value":1167},{"type":43,"tag":1044,"props":2105,"children":2106},{"style":1077},[2107],{"type":49,"value":1080},{"type":43,"tag":1044,"props":2109,"children":2111},{"class":1046,"line":2110},18,[2112,2116,2121,2126],{"type":43,"tag":1044,"props":2113,"children":2114},{"style":1056},[2115],{"type":49,"value":1209},{"type":43,"tag":1044,"props":2117,"children":2118},{"style":1056},[2119],{"type":49,"value":2120}," ~\u002Foutput.mp4",{"type":43,"tag":1044,"props":2122,"children":2123},{"style":1056},[2124],{"type":49,"value":2125}," --wait",{"type":43,"tag":1044,"props":2127,"children":2128},{"style":1077},[2129],{"type":49,"value":1080},{"type":43,"tag":1044,"props":2131,"children":2133},{"class":1046,"line":2132},19,[2134,2138,2142,2147],{"type":43,"tag":1044,"props":2135,"children":2136},{"style":1056},[2137],{"type":49,"value":1180},{"type":43,"tag":1044,"props":2139,"children":2140},{"style":1183},[2141],{"type":49,"value":1186},{"type":43,"tag":1044,"props":2143,"children":2144},{"style":1056},[2145],{"type":49,"value":2146},"@Image1 in the same setting. \u003Caction>. He\u002FShe says: \"...\" No music score. No subtitles or on-screen text. Vertical 9:16 format.",{"type":43,"tag":1044,"props":2148,"children":2149},{"style":1183},[2150],{"type":49,"value":2151},"'\n",{"type":43,"tag":1044,"props":2153,"children":2155},{"class":1046,"line":2154},20,[2156],{"type":43,"tag":1044,"props":2157,"children":2158},{"emptyLinePlaceholder":1855},[2159],{"type":49,"value":1858},{"type":43,"tag":1044,"props":2161,"children":2163},{"class":1046,"line":2162},21,[2164],{"type":43,"tag":1044,"props":2165,"children":2166},{"style":1656},[2167],{"type":49,"value":2168},"# Multi-segment Seedance R2V with voice continuity\n",{"type":43,"tag":1044,"props":2170,"children":2172},{"class":1046,"line":2171},22,[2173],{"type":43,"tag":1044,"props":2174,"children":2175},{"style":1656},[2176],{"type":49,"value":2177},"# 1) Generate Seg 1 (sequential, native audio)\n",{"type":43,"tag":1044,"props":2179,"children":2181},{"class":1046,"line":2180},23,[2182,2186,2190,2194,2198,2202,2207,2212],{"type":43,"tag":1044,"props":2183,"children":2184},{"style":1051},[2185],{"type":49,"value":4},{"type":43,"tag":1044,"props":2187,"children":2188},{"style":1056},[2189],{"type":49,"value":1059},{"type":43,"tag":1044,"props":2191,"children":2192},{"style":1056},[2193],{"type":49,"value":1064},{"type":43,"tag":1044,"props":2195,"children":2196},{"style":1056},[2197],{"type":49,"value":1069},{"type":43,"tag":1044,"props":2199,"children":2200},{"style":1056},[2201],{"type":49,"value":1074},{"type":43,"tag":1044,"props":2203,"children":2204},{"style":1056},[2205],{"type":49,"value":2206}," --reference-image",{"type":43,"tag":1044,"props":2208,"children":2209},{"style":1056},[2210],{"type":49,"value":2211}," seg1.png",{"type":43,"tag":1044,"props":2213,"children":2214},{"style":1077},[2215],{"type":49,"value":1080},{"type":43,"tag":1044,"props":2217,"children":2219},{"class":1046,"line":2218},24,[2220,2225,2229,2234,2238,2242,2246],{"type":43,"tag":1044,"props":2221,"children":2222},{"style":1056},[2223],{"type":49,"value":2224},"  --duration",{"type":43,"tag":1044,"props":2226,"children":2227},{"style":1154},[2228],{"type":49,"value":1157},{"type":43,"tag":1044,"props":2230,"children":2231},{"style":1056},[2232],{"type":49,"value":2233}," --aspect-ratio",{"type":43,"tag":1044,"props":2235,"children":2236},{"style":1056},[2237],{"type":49,"value":1146},{"type":43,"tag":1044,"props":2239,"children":2240},{"style":1056},[2241],{"type":49,"value":1162},{"type":43,"tag":1044,"props":2243,"children":2244},{"style":1056},[2245],{"type":49,"value":1167},{"type":43,"tag":1044,"props":2247,"children":2248},{"style":1077},[2249],{"type":49,"value":1080},{"type":43,"tag":1044,"props":2251,"children":2253},{"class":1046,"line":2252},25,[2254,2258,2262,2267,2271,2276,2280],{"type":43,"tag":1044,"props":2255,"children":2256},{"style":1056},[2257],{"type":49,"value":1180},{"type":43,"tag":1044,"props":2259,"children":2260},{"style":1183},[2261],{"type":49,"value":1186},{"type":43,"tag":1044,"props":2263,"children":2264},{"style":1056},[2265],{"type":49,"value":2266},"...",{"type":43,"tag":1044,"props":2268,"children":2269},{"style":1183},[2270],{"type":49,"value":1196},{"type":43,"tag":1044,"props":2272,"children":2273},{"style":1056},[2274],{"type":49,"value":2275}," -o",{"type":43,"tag":1044,"props":2277,"children":2278},{"style":1056},[2279],{"type":49,"value":1214},{"type":43,"tag":1044,"props":2281,"children":2282},{"style":1056},[2283],{"type":49,"value":1219},{"type":43,"tag":1044,"props":2285,"children":2287},{"class":1046,"line":2286},26,[2288],{"type":43,"tag":1044,"props":2289,"children":2290},{"style":1656},[2291],{"type":49,"value":2292},"# 2) Extract Seg 1 audio\n",{"type":43,"tag":1044,"props":2294,"children":2296},{"class":1046,"line":2295},27,[2297,2302,2307,2312,2316,2321,2326,2331,2336,2341],{"type":43,"tag":1044,"props":2298,"children":2299},{"style":1051},[2300],{"type":49,"value":2301},"ffmpeg",{"type":43,"tag":1044,"props":2303,"children":2304},{"style":1056},[2305],{"type":49,"value":2306}," -y",{"type":43,"tag":1044,"props":2308,"children":2309},{"style":1056},[2310],{"type":49,"value":2311}," -i",{"type":43,"tag":1044,"props":2313,"children":2314},{"style":1056},[2315],{"type":49,"value":1214},{"type":43,"tag":1044,"props":2317,"children":2318},{"style":1056},[2319],{"type":49,"value":2320}," -vn",{"type":43,"tag":1044,"props":2322,"children":2323},{"style":1056},[2324],{"type":49,"value":2325}," -acodec",{"type":43,"tag":1044,"props":2327,"children":2328},{"style":1056},[2329],{"type":49,"value":2330}," libmp3lame",{"type":43,"tag":1044,"props":2332,"children":2333},{"style":1056},[2334],{"type":49,"value":2335}," -q:a",{"type":43,"tag":1044,"props":2337,"children":2338},{"style":1154},[2339],{"type":49,"value":2340}," 2",{"type":43,"tag":1044,"props":2342,"children":2343},{"style":1056},[2344],{"type":49,"value":2345}," seg1-audio.mp3\n",{"type":43,"tag":1044,"props":2347,"children":2349},{"class":1046,"line":2348},28,[2350],{"type":43,"tag":1044,"props":2351,"children":2352},{"style":1656},[2353],{"type":49,"value":2354},"# 3) Segs 2..N in parallel, each with --reference-audio\n",{"type":43,"tag":1044,"props":2356,"children":2358},{"class":1046,"line":2357},29,[2359,2363,2367,2371,2375,2379],{"type":43,"tag":1044,"props":2360,"children":2361},{"style":1051},[2362],{"type":49,"value":4},{"type":43,"tag":1044,"props":2364,"children":2365},{"style":1056},[2366],{"type":49,"value":1059},{"type":43,"tag":1044,"props":2368,"children":2369},{"style":1056},[2370],{"type":49,"value":1064},{"type":43,"tag":1044,"props":2372,"children":2373},{"style":1056},[2374],{"type":49,"value":1069},{"type":43,"tag":1044,"props":2376,"children":2377},{"style":1056},[2378],{"type":49,"value":1074},{"type":43,"tag":1044,"props":2380,"children":2381},{"style":1077},[2382],{"type":49,"value":1080},{"type":43,"tag":1044,"props":2384,"children":2386},{"class":1046,"line":2385},30,[2387,2391,2396,2401,2406],{"type":43,"tag":1044,"props":2388,"children":2389},{"style":1056},[2390],{"type":49,"value":1089},{"type":43,"tag":1044,"props":2392,"children":2393},{"style":1056},[2394],{"type":49,"value":2395}," seg2.png",{"type":43,"tag":1044,"props":2397,"children":2398},{"style":1056},[2399],{"type":49,"value":2400}," --reference-audio",{"type":43,"tag":1044,"props":2402,"children":2403},{"style":1056},[2404],{"type":49,"value":2405}," seg1-audio.mp3",{"type":43,"tag":1044,"props":2407,"children":2408},{"style":1077},[2409],{"type":49,"value":1080},{"type":43,"tag":1044,"props":2411,"children":2413},{"class":1046,"line":2412},31,[2414,2418,2422,2426,2430,2434,2438],{"type":43,"tag":1044,"props":2415,"children":2416},{"style":1056},[2417],{"type":49,"value":2224},{"type":43,"tag":1044,"props":2419,"children":2420},{"style":1154},[2421],{"type":49,"value":1157},{"type":43,"tag":1044,"props":2423,"children":2424},{"style":1056},[2425],{"type":49,"value":2233},{"type":43,"tag":1044,"props":2427,"children":2428},{"style":1056},[2429],{"type":49,"value":1146},{"type":43,"tag":1044,"props":2431,"children":2432},{"style":1056},[2433],{"type":49,"value":1162},{"type":43,"tag":1044,"props":2435,"children":2436},{"style":1056},[2437],{"type":49,"value":1167},{"type":43,"tag":1044,"props":2439,"children":2440},{"style":1077},[2441],{"type":49,"value":1080},{"type":43,"tag":1044,"props":2443,"children":2445},{"class":1046,"line":2444},32,[2446,2450,2454,2458,2462,2466,2471,2475],{"type":43,"tag":1044,"props":2447,"children":2448},{"style":1056},[2449],{"type":49,"value":1180},{"type":43,"tag":1044,"props":2451,"children":2452},{"style":1183},[2453],{"type":49,"value":1186},{"type":43,"tag":1044,"props":2455,"children":2456},{"style":1056},[2457],{"type":49,"value":2266},{"type":43,"tag":1044,"props":2459,"children":2460},{"style":1183},[2461],{"type":49,"value":1196},{"type":43,"tag":1044,"props":2463,"children":2464},{"style":1056},[2465],{"type":49,"value":2275},{"type":43,"tag":1044,"props":2467,"children":2468},{"style":1056},[2469],{"type":49,"value":2470}," seg2.mp4",{"type":43,"tag":1044,"props":2472,"children":2473},{"style":1056},[2474],{"type":49,"value":2125},{"type":43,"tag":1044,"props":2476,"children":2477},{"style":1183},[2478],{"type":49,"value":2479}," &\n",{"type":43,"tag":1044,"props":2481,"children":2483},{"class":1046,"line":2482},33,[2484],{"type":43,"tag":1044,"props":2485,"children":2486},{"style":1656},[2487],{"type":49,"value":2488},"# 4) Concat (mux-only, no quality loss)\n",{"type":43,"tag":1044,"props":2490,"children":2492},{"class":1046,"line":2491},34,[2493,2499,2503,2508,2512,2517],{"type":43,"tag":1044,"props":2494,"children":2496},{"style":2495},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[2497],{"type":49,"value":2498},"printf",{"type":43,"tag":1044,"props":2500,"children":2501},{"style":1183},[2502],{"type":49,"value":1973},{"type":43,"tag":1044,"props":2504,"children":2505},{"style":1056},[2506],{"type":49,"value":2507},"file 'seg1.mp4'\\nfile 'seg2.mp4'\\n",{"type":43,"tag":1044,"props":2509,"children":2510},{"style":1183},[2511],{"type":49,"value":1983},{"type":43,"tag":1044,"props":2513,"children":2514},{"style":1183},[2515],{"type":49,"value":2516}," >",{"type":43,"tag":1044,"props":2518,"children":2519},{"style":1056},[2520],{"type":49,"value":2521}," \u002Ftmp\u002Fconcat.txt\n",{"type":43,"tag":1044,"props":2523,"children":2525},{"class":1046,"line":2524},35,[2526,2530,2534,2539,2544,2549,2554,2558,2563,2568,2573],{"type":43,"tag":1044,"props":2527,"children":2528},{"style":1051},[2529],{"type":49,"value":2301},{"type":43,"tag":1044,"props":2531,"children":2532},{"style":1056},[2533],{"type":49,"value":2306},{"type":43,"tag":1044,"props":2535,"children":2536},{"style":1056},[2537],{"type":49,"value":2538}," -f",{"type":43,"tag":1044,"props":2540,"children":2541},{"style":1056},[2542],{"type":49,"value":2543}," concat",{"type":43,"tag":1044,"props":2545,"children":2546},{"style":1056},[2547],{"type":49,"value":2548}," -safe",{"type":43,"tag":1044,"props":2550,"children":2551},{"style":1154},[2552],{"type":49,"value":2553}," 0",{"type":43,"tag":1044,"props":2555,"children":2556},{"style":1056},[2557],{"type":49,"value":2311},{"type":43,"tag":1044,"props":2559,"children":2560},{"style":1056},[2561],{"type":49,"value":2562}," \u002Ftmp\u002Fconcat.txt",{"type":43,"tag":1044,"props":2564,"children":2565},{"style":1056},[2566],{"type":49,"value":2567}," -c",{"type":43,"tag":1044,"props":2569,"children":2570},{"style":1056},[2571],{"type":49,"value":2572}," copy",{"type":43,"tag":1044,"props":2574,"children":2575},{"style":1056},[2576],{"type":49,"value":2577}," final.mp4\n",{"type":43,"tag":1044,"props":2579,"children":2581},{"class":1046,"line":2580},36,[2582],{"type":43,"tag":1044,"props":2583,"children":2584},{"emptyLinePlaceholder":1855},[2585],{"type":49,"value":1858},{"type":43,"tag":1044,"props":2587,"children":2589},{"class":1046,"line":2588},37,[2590],{"type":43,"tag":1044,"props":2591,"children":2592},{"style":1656},[2593],{"type":49,"value":2594},"# Auto-subtitle (karaoke style, post-generation)\n",{"type":43,"tag":1044,"props":2596,"children":2598},{"class":1046,"line":2597},38,[2599,2603,2607,2612,2617],{"type":43,"tag":1044,"props":2600,"children":2601},{"style":1051},[2602],{"type":49,"value":4},{"type":43,"tag":1044,"props":2604,"children":2605},{"style":1056},[2606],{"type":49,"value":1059},{"type":43,"tag":1044,"props":2608,"children":2609},{"style":1056},[2610],{"type":49,"value":2611}," subtitle",{"type":43,"tag":1044,"props":2613,"children":2614},{"style":1056},[2615],{"type":49,"value":2616}," .\u002Ffinal.mp4",{"type":43,"tag":1044,"props":2618,"children":2619},{"style":1077},[2620],{"type":49,"value":1080},{"type":43,"tag":1044,"props":2622,"children":2624},{"class":1046,"line":2623},39,[2625,2630,2635,2640,2645],{"type":43,"tag":1044,"props":2626,"children":2627},{"style":1056},[2628],{"type":49,"value":2629},"  --style",{"type":43,"tag":1044,"props":2631,"children":2632},{"style":1056},[2633],{"type":49,"value":2634}," tiktok",{"type":43,"tag":1044,"props":2636,"children":2637},{"style":1056},[2638],{"type":49,"value":2639}," --language",{"type":43,"tag":1044,"props":2641,"children":2642},{"style":1056},[2643],{"type":49,"value":2644}," en",{"type":43,"tag":1044,"props":2646,"children":2647},{"style":1077},[2648],{"type":49,"value":1080},{"type":43,"tag":1044,"props":2650,"children":2652},{"class":1046,"line":2651},40,[2653,2657,2662],{"type":43,"tag":1044,"props":2654,"children":2655},{"style":1056},[2656],{"type":49,"value":1209},{"type":43,"tag":1044,"props":2658,"children":2659},{"style":1056},[2660],{"type":49,"value":2661}," .\u002Ffinal-subbed.mp4",{"type":43,"tag":1044,"props":2663,"children":2664},{"style":1056},[2665],{"type":49,"value":1219},{"type":43,"tag":66,"props":2667,"children":2669},{"id":2668},"file-index",[2670],{"type":49,"value":2671},"File index",{"type":43,"tag":314,"props":2673,"children":2676},{"className":2674,"code":2675,"language":49},[317],"SKILL.md                           ← you are here: cardinal rules + decision tree + nav\nreferences\u002F                        ← model-agnostic concepts (read for principles)\n   confirmation-rules.md           ← gates, AskUserQuestion convention, anatomy self-check\n   multi-reference-pattern.md      ← @Image1\u002F@Image2\u002F@Image3 multi-ref usage\n   avatar-edit-not-regenerate.md   ← edit-style verbs, don't compose-regen the avatar\n   spybrands-add-on-miss.md        ← when `spy brands --search` returns 0: confirm + resolve FB page + `spy add`\n   connecting-claude-ai-via-mcp.md ← claude.ai (web) users: how to connect via MCP, what's available vs. CLI-only\n   deploy-meta.md                  ← `meta` commands: publish designs as PAUSED Meta ads + insights\u002Freport\u002Fradar analytics\n   voice-continuity.md             ← --reference-audio across multi-segment\n   no-music-no-subtitles.md        ← minimal music + subtitle suppression\n   auto-subtitle.md                ← post-generation captions (real ASR, not model-burned)\n   narrative-arc.md                ← per-segment reference decision tree\n   script-and-duration.md          ← word count → segment math, gender-neutral defaults\n   first-frame-not-camera-motion.md ← why \"static hold\" \u002F \"slowly zooms\" cause defects\n   brand-and-moderation.md         ← brand-kit conventions, content moderation\npipelines\u002F                         ← multi-step workflows (model-agnostic where possible)\n   ugc-video.md                    ← canonical multi-segment talking-avatar method\nmodels\u002F                            ← per-model reference cards (gotchas + prompt skeletons)\n   seedance-2.0-r2v.md             ← DEFAULT for UGC \u002F promo \u002F talking-avatar\n   seedance-2.0-i2v.md             ← niche; explicit user opt-in only\n   nano-banana-2.md                ← default for image edit + multi-ref product composition\n   sora2-i2v.md                    ← cinematic single-shot, opt-in\n   kling-3-pro.md                  ← budget alternative for non-spoken b-roll\n   topaz-video-upscale.md          ← post-pipeline upscale\n",[2677],{"type":43,"tag":58,"props":2678,"children":2679},{"__ignoreMap":322},[2680],{"type":49,"value":2675},{"type":43,"tag":52,"props":2682,"children":2683},{},[2684,2686,2691,2693,2699],{"type":49,"value":2685},"When the user asks for something specific, jump directly to the relevant file in ",{"type":43,"tag":58,"props":2687,"children":2689},{"className":2688},[],[2690],{"type":49,"value":383},{"type":49,"value":2692}," or ",{"type":43,"tag":58,"props":2694,"children":2696},{"className":2695},[],[2697],{"type":49,"value":2698},"pipelines\u002F",{"type":49,"value":2700},". The cardinal rules above are the only thing that should always be in active context.",{"type":43,"tag":2702,"props":2703,"children":2704},"style",{},[2705],{"type":49,"value":2706},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2708,"total":2385},[2709,2716,2735,2749,2761,2773,2785],{"slug":4,"name":4,"fn":5,"description":6,"org":2710,"tags":2711,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2712,2713,2714,2715],{"name":18,"slug":19,"type":16},{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},{"name":21,"slug":22,"type":16},{"slug":2717,"name":2717,"fn":2718,"description":2719,"org":2720,"tags":2721,"stars":26,"repoUrl":27,"updatedAt":2734},"testdino-audit","audit Playwright test code","Use only when the user explicitly asks for a TestDino audit of Playwright automated test code. Routes through the audit tools the TestDino MCP server exposes (get_audit_report + submit_audit_report, or the legacy test_audit). For generic code review or non-Playwright targets, do a normal review instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2722,2725,2728,2731],{"name":2723,"slug":2724,"type":16},"Audit","audit",{"name":2726,"slug":2727,"type":16},"Code Analysis","code-analysis",{"name":2729,"slug":2730,"type":16},"Playwright","playwright",{"name":2732,"slug":2733,"type":16},"Testing","testing","2026-07-02T07:37:17.341081",{"slug":2736,"name":2736,"fn":2737,"description":2738,"org":2739,"tags":2740,"stars":26,"repoUrl":27,"updatedAt":2748},"testdino-health","manage TestDino connection status","Use when the user wants to check TestDino connection status, validate their PAT, discover available organizations and projects, or find the right projectId. Always call this first when the project context is ambiguous before any other TestDino tool.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2741,2744,2747],{"name":2742,"slug":2743,"type":16},"Monitoring","monitoring",{"name":2745,"slug":2746,"type":16},"QA","qa",{"name":2732,"slug":2733,"type":16},"2026-07-02T07:37:18.566504",{"slug":2750,"name":2750,"fn":2751,"description":2752,"org":2753,"tags":2754,"stars":26,"repoUrl":27,"updatedAt":2760},"testdino-manual-runs","manage manual QA execution runs in TestDino","Use when the user wants to manage a manual execution run or update case-level results inside a run — listing runs, creating runs for a release, inspecting a run, assigning cases, or marking case results (passed\u002Ffailed\u002Fblocked\u002Fskipped\u002Fretest\u002Funtested). Accepts counter-style IDs like RUN-12 and TC-156.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2755,2758,2759],{"name":2756,"slug":2757,"type":16},"Operations","operations",{"name":2745,"slug":2746,"type":16},{"name":2732,"slug":2733,"type":16},"2026-07-02T07:37:23.446065",{"slug":2762,"name":2762,"fn":2763,"description":2764,"org":2765,"tags":2766,"stars":26,"repoUrl":27,"updatedAt":2772},"testdino-manual-tests","manage manual QA test cases in TestDino","Use when the user wants to create, update, or browse manual QA test cases and suites in TestDino — not execution runs. Covers list_manual_test_suites, list_manual_test_cases, get_manual_test_case, create_manual_test_case, update_manual_test_case, create_manual_test_suite.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2767,2770,2771],{"name":2768,"slug":2769,"type":16},"Documentation","documentation",{"name":2745,"slug":2746,"type":16},{"name":2732,"slug":2733,"type":16},"2026-07-02T07:37:22.247052",{"slug":2774,"name":2774,"fn":2775,"description":2776,"org":2777,"tags":2778,"stars":26,"repoUrl":27,"updatedAt":2784},"testdino-releases","manage TestDino releases and milestones","Use when the user wants to browse, inspect, create, or update releases\u002Fmilestones in a TestDino project. Covers list_releases, get_release, create_release, and update_release. Accepts counter-style IDs like MS-12.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2779,2782,2783],{"name":2780,"slug":2781,"type":16},"Project Management","project-management",{"name":2745,"slug":2746,"type":16},{"name":2732,"slug":2733,"type":16},"2026-07-02T07:37:19.793846",{"slug":2786,"name":2786,"fn":2787,"description":2788,"org":2789,"tags":2790,"stars":26,"repoUrl":27,"updatedAt":2797},"testdino-runs","inspect automated test runs","Use when the user wants to inspect automated test runs, list failed or flaky tests, debug a failing testcase with historical context, or filter runs by branch, commit, author, environment, browser, status, or tags. Includes list_testruns, get_run_details, list_testcase, get_testcase_details, and debug_testcase.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2791,2794,2795,2796],{"name":2792,"slug":2793,"type":16},"Debugging","debugging",{"name":2729,"slug":2730,"type":16},{"name":2745,"slug":2746,"type":16},{"name":2732,"slug":2733,"type":16},"2026-07-02T07:37:16.07175",{"items":2799,"total":2982},[2800,2819,2833,2845,2864,2875,2896,2916,2930,2945,2953,2966],{"slug":2801,"name":2801,"fn":2802,"description":2803,"org":2804,"tags":2805,"stars":2816,"repoUrl":2817,"updatedAt":2818},"algorithmic-art","create algorithmic art with p5.js","Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2806,2807,2810,2813],{"name":18,"slug":19,"type":16},{"name":2808,"slug":2809,"type":16},"Design","design",{"name":2811,"slug":2812,"type":16},"Generative Art","generative-art",{"name":2814,"slug":2815,"type":16},"JavaScript","javascript",161831,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills","2026-04-06T17:56:15.455818",{"slug":2820,"name":2820,"fn":2821,"description":2822,"org":2823,"tags":2824,"stars":2816,"repoUrl":2817,"updatedAt":2832},"brand-guidelines","apply Anthropic brand colors and typography","Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2825,2828,2829],{"name":2826,"slug":2827,"type":16},"Branding","branding",{"name":2808,"slug":2809,"type":16},{"name":2830,"slug":2831,"type":16},"Typography","typography","2026-04-06T17:56:05.042852",{"slug":2834,"name":2834,"fn":2835,"description":2836,"org":2837,"tags":2838,"stars":2816,"repoUrl":2817,"updatedAt":2844},"canvas-design","create posters and visual art as PNG or PDF","Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2839,2840,2841],{"name":18,"slug":19,"type":16},{"name":2808,"slug":2809,"type":16},{"name":2842,"slug":2843,"type":16},"PDF","pdf","2026-04-06T17:56:03.794732",{"slug":2846,"name":2846,"fn":2847,"description":2848,"org":2849,"tags":2850,"stars":2816,"repoUrl":2817,"updatedAt":2863},"claude-api","build apps with the Claude API","Reference for the Claude API \u002F Anthropic SDK — model ids, pricing, params, streaming, tool use, MCP, agents, caching, token counting, model migration.\nTRIGGER — read BEFORE opening the target file; don't skip because it \"looks like a one-liner\" — whenever: the prompt names Claude\u002FAnthropic in any form (Claude, Anthropic, Fable, Opus, Sonnet, Haiku, `anthropic`, `@anthropic-ai`, `claude-*`, `us.anthropic.*`, `[1m]`); the user asks about an LLM (pricing\u002Fmodel choice\u002Flimits\u002Fcaching) — never answer from memory; OR the task is LLM-shaped with provider unstated (agent\u002FMCP\u002Ftool-definition\u002Fmulti-agent\u002FRAG\u002FLLM-judge\u002Fcomputer-use; generate\u002Fsummarize\u002Fextract\u002Fclassify\u002Frewrite\u002Fconverse over NL; debugging refusals\u002Fcutoffs\u002Fstreaming\u002Ftool-calls\u002Ftokens).\nSKIP only when another provider is being worked on (overrides all triggers): OpenAI\u002FGPT\u002FGemini\u002FLlama\u002FMistral\u002FCohere\u002FOllama named in the query; OR `grep -rE 'openai|langchain_openai|google.generativeai|genai|mistralai|cohere|ollama'` over the project hits (run this grep FIRST if no provider named — don't Read the file).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2851,2854,2855,2858,2860],{"name":2852,"slug":2853,"type":16},"Agents","agents",{"name":9,"slug":8,"type":16},{"name":2856,"slug":2857,"type":16},"Anthropic SDK","anthropic-sdk",{"name":2859,"slug":2846,"type":16},"Claude API",{"name":2861,"slug":2862,"type":16},"LLM","llm","2026-07-28T05:36:08.213335",{"slug":2865,"name":2865,"fn":2866,"description":2867,"org":2868,"tags":2869,"stars":2816,"repoUrl":2817,"updatedAt":2874},"doc-coauthoring","co-author documentation and technical specs","Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2870,2871],{"name":2768,"slug":2769,"type":16},{"name":2872,"slug":2873,"type":16},"Technical Writing","technical-writing","2026-04-06T17:56:14.18897",{"slug":2876,"name":2876,"fn":2877,"description":2878,"org":2879,"tags":2880,"stars":2816,"repoUrl":2817,"updatedAt":2895},"docx","create and edit Word documents","Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files) or Word templates (.dotx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', '.dotx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx or .dotx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2881,2884,2886,2889,2892],{"name":2882,"slug":2883,"type":16},"Documents","documents",{"name":2885,"slug":2876,"type":16},"DOCX",{"name":2887,"slug":2888,"type":16},"Office","office",{"name":2890,"slug":2891,"type":16},"Templates","templates",{"name":2893,"slug":2894,"type":16},"Word","word","2026-07-18T05:16:23.136271",{"slug":2897,"name":2897,"fn":2898,"description":2899,"org":2900,"tags":2901,"stars":2816,"repoUrl":2817,"updatedAt":2915},"frontend-design","design production-grade frontend interfaces","Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2902,2903,2906,2909,2912],{"name":2808,"slug":2809,"type":16},{"name":2904,"slug":2905,"type":16},"Frontend","frontend",{"name":2907,"slug":2908,"type":16},"React","react",{"name":2910,"slug":2911,"type":16},"Tailwind CSS","tailwind-css",{"name":2913,"slug":2914,"type":16},"UI Components","ui-components","2026-04-06T17:56:16.723469",{"slug":2917,"name":2917,"fn":2918,"description":2919,"org":2920,"tags":2921,"stars":2816,"repoUrl":2817,"updatedAt":2929},"internal-comms","write internal company communications","A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2922,2925,2926],{"name":2923,"slug":2924,"type":16},"Communications","communications",{"name":2890,"slug":2891,"type":16},{"name":2927,"slug":2928,"type":16},"Writing","writing","2026-04-06T17:56:20.695522",{"slug":2931,"name":2931,"fn":2932,"description":2933,"org":2934,"tags":2935,"stars":2816,"repoUrl":2817,"updatedAt":2944},"mcp-builder","build MCP servers","Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node\u002FTypeScript (MCP SDK).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2936,2937,2940,2941],{"name":2852,"slug":2853,"type":16},{"name":2938,"slug":2939,"type":16},"API Development","api-development",{"name":2861,"slug":2862,"type":16},{"name":2942,"slug":2943,"type":16},"MCP","mcp","2026-04-06T17:56:10.357665",{"slug":2843,"name":2843,"fn":2946,"description":2947,"org":2948,"tags":2949,"stars":2816,"repoUrl":2817,"updatedAt":2952},"read edit and manipulate PDF files","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2950,2951],{"name":2882,"slug":2883,"type":16},{"name":2842,"slug":2843,"type":16},"2026-04-06T17:56:02.483316",{"slug":2954,"name":2954,"fn":2955,"description":2956,"org":2957,"tags":2958,"stars":2816,"repoUrl":2817,"updatedAt":2965},"pptx","create and edit PowerPoint presentations","Use this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates (.potx), layouts, speaker notes, or comments. Trigger whenever the user mentions \"deck,\" \"slides,\" \"presentation,\" or references a .pptx or .potx filename, regardless of what they plan to do with the content afterward. If a .pptx or .potx file needs to be opened, created, or touched, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2959,2962],{"name":2960,"slug":2961,"type":16},"PowerPoint","powerpoint",{"name":2963,"slug":2964,"type":16},"Presentations","presentations","2026-07-18T05:16:24.1471",{"slug":2967,"name":2967,"fn":2968,"description":2969,"org":2970,"tags":2971,"stars":2816,"repoUrl":2817,"updatedAt":2981},"skill-creator","create and optimize agent skills","Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2972,2973,2974,2977,2980],{"name":2852,"slug":2853,"type":16},{"name":2768,"slug":2769,"type":16},{"name":2975,"slug":2976,"type":16},"Evals","evals",{"name":2978,"slug":2979,"type":16},"Performance","performance",{"name":2872,"slug":2873,"type":16},"2026-04-19T06:45:40.804",490]