{"id":"019318a5-4b09-4362-8419-903f0b888a08","entityType":"agent","slug":"clawhub-degausai-wonda","name":"Wonda","canonicalUrl":"https://www.xpersona.co/agent/clawhub-degausai-wonda","canonicalPath":"/agent/clawhub-degausai-wonda","generatedAt":"2026-10-10T01:28:40.994Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T01:55:29.132Z","emptyReason":null},"description":"Using the Wonda CLI to generate images, videos, music, and audio from the terminal — plus LinkedIn, Reddit, and X/Twitter research and automation Skill: Wonda Owner: degausai Summary: Using the Wonda CLI to generate images, videos, music, and audio from the terminal — plus LinkedIn, Reddit, and X/Twitter research and automation Tags: latest:1.2.0 Version history: v1.2.0 | 2026-04-22T15:37:24.669Z | user Added - Local ffmpeg command routing — 8 new content skills for on-device video finishing (trims, captions, social reformat, scene splits, silence cuts, frame","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 14.1K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17d2h8s9xrayn39xdfaabcj1184qg3c:wonda","sourceUrl":"https://clawhub.ai/degausai/wonda","homepage":"https://clawhub.ai/degausai/skills/wonda","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/degausai/wonda","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/degausai/skills/wonda","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":40,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Using the Wonda CLI to generate images, videos, music, and audio from the terminal — plus LinkedIn, Reddit, and X/Twitter research and automation Skill: Wonda O"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T01:55:29.132Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T01:55:29.132Z","emptyReason":null},"stars":null,"forks":null,"downloads":14074,"packageName":null,"latestVersion":"1.2.0","tractionLabel":"14.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T01:55:29.132Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T01:55:29.132Z","lastCrawledAt":"2026-10-09T01:55:29.132Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T01:55:29.132Z","lastVerifiedAt":null,"highlights":[{"version":"1.2.0","createdAt":"2026-04-22T15:37:24.669Z","changelog":"### Added - Local ffmpeg command routing — 8 new content skills for on-device video finishing (trims, captions, social reformat, scene splits, silence cuts, frame extraction, analysis artifacts) that keep bytes local instead of round-tripping through the API. - `remotion-local-render` — render editorPipeline blueprints locally via @remotion/renderer. - `tiktok-slideshow-carousel` — 3-slide hook/bridge/reveal carousel skill. - Social-signup primitive pattern — screenshot → decide → tap/type/swipe loop using `wonda device` + throwaway `wonda email` mailboxes for Instagram/TikTok flows. - `wonda device stream` — signed `playerUrl` (1h JWT) for handing control to a human on CAPTCHA screens or consent-gated steps. - Step 2.5 decision flow: when to finish locally vs remote. - ClawHub runtime metadata (requires.env, primaryEnv, npm + brew install specs) so security analysis matches what the skill actually references. ### Changed - Install order: npm first, then Homebrew. - Auth simplified: `wonda auth login` or `WONDERCAT_API_KEY` env var. ### Removed - `curl | bash` installer reference. - `WONDERCAT_BASE_URL`, `wonda config set api-key`, and cookie/session references.","fileCount":3,"zipByteSize":19554},{"version":"1.0.0","createdAt":"2026-04-12T09:44:05.842Z","changelog":"Initial release of Wonda CLI — terminal toolkit for AI-powered content creation and social automation. - Generate images, videos, music, and audio from the terminal. - Edit, compose, and publish media to social platforms (LinkedIn, Reddit, X/Twitter). - Research and automate tasks across supported social networks. - Tiered access model: Anonymous, Free, and Paid users with varying feature sets. - Rich command guidelines, including content skills, analytics, and competitive research workflows.","fileCount":2,"zipByteSize":12541}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17d2h8s9xrayn39xdfaabcj1184qg3c:wonda","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-degausai-wonda/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-degausai-wonda/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-degausai-wonda/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-degausai-wonda/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-degausai-wonda/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-degausai-wonda/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T01:28:40.993Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-degausai-wonda/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-degausai-wonda/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-degausai-wonda/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-degausai-wonda/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T01:55:29.132Z","emptyReason":null},"readme":"Skill: Wonda\n\nOwner: degausai\n\nSummary: Using the Wonda CLI to generate images, videos, music, and audio from the terminal — plus LinkedIn, Reddit, and X/Twitter research and automation\n\nTags: latest:1.2.0\n\nVersion history:\n\nv1.2.0 | 2026-04-22T15:37:24.669Z | user\n\n### Added\n- Local ffmpeg command routing — 8 new content skills for on-device video finishing (trims, captions, social reformat, scene splits, silence cuts, frame extraction, analysis artifacts) that keep bytes local instead of round-tripping through the API.\n- `remotion-local-render` — render editorPipeline blueprints locally via @remotion/renderer.\n- `tiktok-slideshow-carousel` — 3-slide hook/bridge/reveal carousel skill.\n- Social-signup primitive pattern — screenshot → decide → tap/type/swipe loop using `wonda device` + throwaway `wonda email` mailboxes for Instagram/TikTok flows.\n- `wonda device stream` — signed `playerUrl` (1h JWT) for handing control to a human on CAPTCHA screens or consent-gated steps.\n- Step 2.5 decision flow: when to finish locally vs remote.\n- ClawHub runtime metadata (requires.env, primaryEnv, npm + brew install specs) so security analysis matches what the skill actually references.\n\n### Changed\n- Install order: npm first, then Homebrew.\n- Auth simplified: `wonda auth login` or `WONDERCAT_API_KEY` env var.\n\n### Removed\n- `curl | bash` installer reference.\n- `WONDERCAT_BASE_URL`, `wonda config set api-key`, and cookie/session references.\n\nv1.0.0 | 2026-04-12T09:44:05.842Z | user\n\nInitial release of Wonda CLI — terminal toolkit for AI-powered content creation and social automation.\n\n- Generate images, videos, music, and audio from the terminal.\n- Edit, compose, and publish media to social platforms (LinkedIn, Reddit, X/Twitter).\n- Research and automate tasks across supported social networks.\n- Tiered access model: Anonymous, Free, and Paid users with varying feature sets.\n- Rich command guidelines, including content skills, analytics, and competitive research workflows.\n\nArchive index:\n\nArchive v1.2.0: 3 files, 19554 bytes\n\nFiles: skill-card.md (2595b), SKILL.md (51817b), _meta.json (124b)\n\nFile v1.2.0:SKILL.md\n\n---\nname: wonda-cli\ndescription: Using the Wonda CLI to generate images, videos, music, and audio from the terminal — plus LinkedIn, Reddit, and X/Twitter research and automation\nversion: 1.2.0\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - WONDERCAT_API_KEY\n      anyBins:\n        - wonda\n    primaryEnv: WONDERCAT_API_KEY\n    install:\n      - kind: node\n        package: \"@degausai/wonda\"\n        bins: [wonda]\n      - kind: brew\n        formula: degausai/tap/wonda\n        bins: [wonda]\n    homepage: https://wonda.sh\n    emoji: \"🎬\"\n---\n\n# Wonda CLI\n\nWonda CLI is a content creation toolkit for terminal-based agents. Use it to generate images, videos, music, and audio; edit and compose media; publish to social platforms; and research/automate across LinkedIn, Reddit, and X/Twitter.\n\n## Install\n\nIf `wonda` is not found on PATH, install it first:\n\n```bash\n# npm\nnpm i -g @degausai/wonda\n\n# Homebrew\nbrew tap degausai/tap && brew install wonda\n```\n\n## Setup\n\n- **Auth**: `wonda auth login` (opens browser, recommended) or set `WONDERCAT_API_KEY` env var\n- **Verify**: `wonda auth check`\n\n### Access tiers\n\nNot all commands are available to every account type:\n\n| Tier                                        | Access                                                                                                                           |\n| ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |\n| **Anonymous** (temporary account, no login) | Media upload/download, editing (`video/edit`, `image/edit`, `audio/edit`), transcription, social publishing, scraping, analytics |\n| **Free** (logged in, Basic/Free plan)       | Everything above + **generation** (`image/generate`, `video/generate`, etc.), styles, recipes, brand                             |\n| **Paid** (Plus, Pro, or Absolute plan)      | Everything above + **video analysis** (requires credits), **skill commands** (`wonda skill install/list/get`)                    |\n\nIf a command returns a `403` error, check your plan at https://app.wondercat.ai/settings/billing.\n\n### Social signups (Instagram, TikTok, etc.)\n\nDrive them with the `wonda device` primitives + a throwaway mailbox from `wonda email`. The screenshot → decide → tap/type/swipe loop is how these flows work — there's no shortcut command, and that's fine: social apps change their UI constantly and any canned flow would drift faster than you could maintain it.\n\nStandard loop:\n\n1. `wonda email account create --random` → save `{email, password}`.\n2. `wonda device create` → pick a `ready` device (poll `wonda device get <id> --fields status`).\n3. `wonda device launch <device-id> com.instagram.android` (or `com.zhiliaoapp.musically` for TikTok). Fall back to `wonda device open-url` if you'd rather start in the web flow.\n4. Loop: `wonda device screenshot <device-id> > s.json` → decode the base64 PNG → read → pick an action → `tap | type | swipe | key` → screenshot again. Use `--text \"SomeButtonLabel\"` on `tap` before guessing coordinates; fall back to `--x --y` read off the screenshot for elements without matching text (number pickers, date spinners, etc.).\n5. When the app sends a verification email, `wonda email inbox wait <email> --timeout 120` — returns `{codes: [\"483921\"], links: [...]}` with the 6-digit code already extracted. `wonda device type <device-id> --text \"<code>\"` to feed it back.\n6. For number/date spinners: tap on the highlighted cell, Android pops up a numeric or alphabetic keyboard, `wonda device type --text \"<value>\"` replaces the selected text. `wonda device key --code 4` dismisses the keyboard when done.\n\n**Consent-like taps** — anything that accepts Terms/Privacy/Cookies, grants permissions, or publishes something — stop and ask the user for explicit confirmation in chat before tapping. That isn't about signups specifically; it applies to any automation step.\n\n**Rate-limit signals** — if the app shows you a visual puzzle (\"we want to make sure you're a real person\"), stop and hand off to the user with `wonda device stream <id>` (see next section). Don't click through puzzles yourself.\n\n### Handing off to a human\n\nIf automation hits a screen that requires a human to take over (consent flow you shouldn't auto-accept, ambiguous UI, step where the user prefers to act themselves), use `wonda device stream <device-id>` — returns a `playerUrl` signed with a short-lived JWT (1h). Give that URL to the user, they act in their own browser, and automation can resume afterward.\n\n```bash\nwonda device stream <device-id>\n# → { \"streamUrl\": \"wss://…\", \"playerUrl\": \"https://…\", \"deviceType\": \"social\" }\n```\n\n### Global output flags\n\nAll commands support these output control flags:\n\n- `--json` — Force JSON output (auto-enabled when stdout is piped)\n- `--quiet` — Only output the primary identifier (job ID, media ID, etc.) — ideal for scripting\n- `-o <path>` — Download output to file (implies `--wait`)\n- `--fields status,outputs` — Select specific JSON fields\n- `--jq '.outputs[0].media.url'` — Filter JSON output with a jq expression\n\n## How to think about content creation\n\nYou are a marketing director with access to a full production toolkit. Before touching any tool, think:\n\n1. **What product category?** (beauty, food, tech, fashion, fitness, etc.)\n2. **What format performs for this category?** (UGC memes for everyday products, cinematic for luxury, before/after for transformations, testimonial for services)\n3. **What's the hook?** (relatable scenario, surprising twist, aspirational lifestyle, social proof)\n4. **What specific scene?** (not \"product on table\" but \"person discovering the product in a funny situation\")\n\n## Decision flow\n\nWhen asked to create content, follow this order:\n\n### Step 1: Gather context\n\n```bash\nwonda brand                                                    # Brand identity, colors, products, audience\nwonda analytics instagram                                      # What content performs well\nwonda scrape social --handle @competitor --platform instagram --wait  # Competitive research (if relevant)\n\n# Cross-platform research (if relevant)\nwonda x search \"topic OR keyword\"                              # Find conversations on X/Twitter\nwonda x user-tweets @competitor                                # Competitor's recent tweets\nwonda reddit search \"topic\" --sort top --time week             # Reddit discussions\nwonda reddit feed marketing --sort hot                         # Subreddit trends\nwonda linkedin search \"topic\" --type COMPANIES                 # LinkedIn company/people research\nwonda linkedin profile competitor-vanity-name                  # LinkedIn profile intel\n```\n\n### Step 2: Check content skills\n\nContent skills are step-by-step guides for common content types. Each skill tells you exactly which models, prompts, and editing operations to use — and in what order. ALWAYS check skills before building from scratch.\n\n```bash\nwonda skill list                                # Browse all content skills\nwonda skill get <slug>                          # Full step-by-step guide for a skill\n```\n\n**Full skill index:**\n\n| Slug                         | Description                                                                  | Input                         |\n| ---------------------------- | ---------------------------------------------------------------------------- | ----------------------------- |\n| product-video                | Product/scene video — prompt library for all categories                      | optional product image        |\n| ugc-talking                  | Talking-head UGC — single clip, two-angle PIP, or 20s+ with B-roll           | optional reference            |\n| ugc-reaction-batch           | Batch TikTok-native UGC reactions with viral strategy                        | optional product image        |\n| tiktok-ugc-pipeline          | Scrape viral reel → generate 5 UGC → post as drafts                          | reel or TikTok URL            |\n| ugc-dance-motion             | Dance/motion transfer                                                        | image + video                 |\n| marketing-brain              | Marketing strategy brain — hooks, visuals, ads                               | user brief                    |\n| reddit-subreddit-intel       | Scrape top posts, analyze virality, generate ideas                           | subreddit + product           |\n| twitter-influencer-search    | Find X influencers and amplifiers                                            | competitor/niche keywords     |\n| tiktok-slideshow-carousel    | 3-slide TikTok carousel — hook, bridge, product reveal                       | app screenshot + audience     |\n| ffmpeg-local-video-finishing | Local ffmpeg finishing for deterministic trims, muxes, reverses, and exports | local video path or mediaId   |\n| ffmpeg-burn-captions         | Burn captions locally with ffmpeg after getting transcript/timing            | local video path or mediaId   |\n| ffmpeg-social-formatting     | Reformat local video for 9:16, 1:1, 16:9, and social-safe exports            | local video path or mediaId   |\n| ffmpeg-scene-splitting       | Detect scene boundaries locally, split into clips, or omit one scene         | local video path or mediaId   |\n| ffmpeg-silence-cut           | Detect and collapse dead air locally while preserving short natural pauses   | local video path or mediaId   |\n| ffmpeg-frame-extraction      | Extract single frames, poster frames, or evenly spaced stills locally        | local video path or mediaId   |\n| ffmpeg-analysis-artifacts    | Build local analysis artifacts: grid, first/last frame, and extracted audio  | local video path or mediaId   |\n| ffmpeg-reference             | Compact ffmpeg routing, font, codec, and command reference for agents        | local media path              |\n| remotion-local-render        | Render editorPipeline blueprint steps locally via @remotion/renderer         | manifest JSON + editor job id |\n\n**If a skill matches** → `wonda skill get <slug>`, read it, adapt to context, execute each step.\n\n**If no skill matches** → build from scratch (Step 3).\n\n### Step 2.5: Decide whether finishing should be local\n\nNot every media task should go back through Wonda editing. Use this routing rule:\n\n- Use `wonda` for AI generation, AI transcription/alignment, scraping, publishing, hosted transitions, and workflows that need media IDs or remote jobs.\n- Use local `ffmpeg` for deterministic transforms on files you already have or can download: trim, crop/scale/pad, concat, replace audio, extract audio/frame, reverse, normalize for delivery, burn captions, split scenes, cut silence, and build analysis artifacts.\n\nWhen a task starts from a Wonda media ID but the actual edit is deterministic, move it to local files first:\n\n```bash\nwonda media download <mediaId> -o ./input.mp4\n```\n\nBefore any local ffmpeg work:\n\n```bash\nwhich ffmpeg\nwhich ffprobe\nffmpeg -version\nffprobe -v error -show_format -show_streams -of json ./input.mp4\n```\n\nFont rule for local caption/text work:\n\n- Prefer an explicit font file path over a family name.\n- Never assume a font exists. Check first with `fc-match`, `fc-list`, `/System/Library/Fonts`, `/Library/Fonts`, `~/Library/Fonts`, or `/usr/share/fonts`.\n- If the task is mainly local finishing/captions/formatting/splitting/artifact extraction, check the ffmpeg-specific skills before inventing commands.\n- `wonda edit video` renders locally by default for single-video ops (`trim`, `crop`, `speed`, `volume`, `textOverlay`, `animatedCaptions` with supplied captions, `editAudio`). The server returns a manifest; the CLI runs `@remotion/renderer` against a CloudFront-hosted bundle, uploads the output, and finalizes the editor_job. No flag needed. Pass `--render-server` only to force Lambda. Multi-video ops (`overlay`, `splitScreen`, `merge`, `splitScenes`, `motionDesign`) auto-reject with a 400 — the CLI will tell you to use `--render-server`. See the `remotion-local-render` content skill for the full recipe (including the STT-free TikTok-style caption flow via `wonda alignment extract-timestamps` → `--caption-segments`).\n\nDefault local export target unless the user asked otherwise:\n\n```bash\n-c:v libx264 -preset medium -crf 18 -pix_fmt yuv420p -movflags +faststart -c:a aac -b:a 192k\n```\n\nAlways pass `-y` as the first flag so the command auto-overwrites the output. `ffmpeg` prompts interactively when the output path exists and agent shells hang on that prompt until timeout.\n\n### Step 3: Build from scratch (chain endpoints)\n\nWhen no skill matches, chain individual CLI commands. Each step produces an output that feeds into the next.\n\n**Single asset:**\n\n```bash\nwonda generate image --model nano-banana-2 --prompt \"...\" --aspect-ratio 9:16 --wait -o out.png\n# --negative-prompt \"...\" — override what to exclude (models like cookie have good defaults)\n# --seed <number>         — pin the seed for reproducible results\nwonda generate video --model seedance-2 --prompt \"...\" --duration 5 --params '{\"quality\":\"high\"}' --wait -o out.mp4\nwonda generate text --model <model> --prompt \"...\" --wait\nwonda generate music --model suno-music --prompt \"upbeat lo-fi\" --wait -o music.mp3\n```\n\n**Audio (speech, transcription, dialogue):**\n\n```bash\n# Text-to-speech\nwonda audio speech --model elevenlabs-tts --prompt \"Your script here\" \\\n  --params '{\"voiceId\":\"21m00Tcm4TlvDq8ikWAM\"}' --wait -o speech.mp3\n# elevenlabs-tts always requires a voiceId param\n# Common voice: Rachel (female) \"21m00Tcm4TlvDq8ikWAM\"\n\n# Transcribe audio/video to text\nwonda audio transcribe --model elevenlabs-stt --attach $MEDIA --wait\n\n# Multi-speaker dialogue\nwonda audio dialogue --model elevenlabs-dialogue --prompt \"Speaker A: Hi! Speaker B: Hello!\" \\\n  --wait -o dialogue.mp3\n```\n\n**Add animated captions to a video:**\n\nThe `animatedCaptions` operation handles everything in one step — it extracts audio, transcribes for word-level timing, and renders animated word-by-word captions onto the video.\n\n```bash\n# Generate a video with speech audio\nVID_JOB=$(wonda generate video --model seedance-2 --prompt \"...\" --duration 5 --aspect-ratio 9:16 --params '{\"quality\":\"high\"}' --wait --quiet)\nVID_MEDIA=$(wonda jobs get inference $VID_JOB --jq '.outputs[0].media.mediaId')\n\n# Add animated captions (single step)\nwonda edit video --operation animatedCaptions --media $VID_MEDIA \\\n  --params '{\"fontFamily\":\"TikTok Sans SemiCondensed\",\"position\":\"bottom-center\",\"sizePercent\":80,\"strokeWidth\":2.5,\"fontSizeScale\":0.8,\"highlightColor\":\"rgb(252, 61, 61)\"}' \\\n  --wait -o final.mp4\n```\n\nThe video's original audio is preserved. Do NOT replace the audio with TTS — Sora already generated the speech.\n\n**Transitions (effects pipelines on a single video):**\n\n```bash\nwonda transitions presets                            # List built-in presets (JSON)\nwonda transitions operations                         # Grouped by category (analysis/effect/...)\nwonda transitions operations --json                  # Full per-param metadata\nwonda transitions llms                               # Full reference (presets + ops + dependencies)\nwonda transitions run --media $VID --preset flash_glow --wait -o out.mp4\n# Or build a custom pipeline of steps:\nwonda transitions run --media $VID \\\n  --steps '[{\"glow\":{\"spread\":8}},{\"scene_flash\":{}}]' --wait -o out.mp4\n# Or send an agent-generated timeline of clips (inline JSON):\nwonda transitions run --media $VID \\\n  --clips '[{\"layer_type\":\"video\",\"start_frame\":0,\"end_frame\":60}]' --wait -o out.mp4\n# …or from a file (handy for long agent timelines):\nwonda transitions run --media $VID --clips ./timeline.json --wait -o out.mp4\nwonda transitions job <jobId>                        # Poll a transition job\n```\n\nUse exactly one of `--preset`, `--steps`, or `--clips`. Requires a full (logged-in) account. **Always read `wonda transitions llms` first when composing a custom pipeline or a clips timeline** — it documents the detect→segment→effect dependencies, which ops need masks, and the full clip-spec shape (layer types, tracks, effects, transforms).\n\n**Preset variables (`variables` block).** Each preset declares the template variables it accepts under `variables` in `wonda transitions presets`. Each entry has `name`, `description`, and `required`. Required variables MUST be supplied or the job is rejected with a 400 — no more silent skipping. Pass them with `--var name=value` (repeatable) or, for the common `prompt` case, the `--prompt` shortcut:\n\n```bash\n# flash_glow_prompted requires { prompt }\nwonda transitions run --media $VID --preset flash_glow_prompted \\\n  --prompt \"woman in white dress\" --wait -o out.mp4\n\n# text_behind_person requires { prompt, text }\nwonda transitions run --media $VID --preset text_behind_person \\\n  --var prompt=\"the person\" --var text=\"HELLO WORLD\" --wait -o out.mp4\n```\n\nThe `prompt` variable is a **detection text query** (Grounding DINO target describing which subject to mask), not a content-generation prompt. For presets that don't declare a `prompt` variable but still list `sam2`/`clip` in `models`, detection auto-picks the most recurring subject via CLIP — no variable needed.\n\nBuilding a custom `--steps` pipeline that uses `detect` + `segment`? Add a `detect` step with `method: grounding_dino` and put the subject description in that step's `prompt` param (or use `method: clip` for auto-detect).\n\n**Multi-scene presets (`requiresMultiScene: true`).** Some presets use `scene_split` and expect a video with multiple cuts/scenes. Check `requiresMultiScene` in `wonda transitions presets` — if true, feeding a single continuous shot will produce only one scene and the effect may look underwhelming. Combine clips first or use a video with natural cuts.\n\n**Per-step overrides (`--overrides`).** Tweak individual params of a preset's steps without rewriting the whole pipeline. Shape is **nested**: `{stepName: {paramName: value}}`. Step and param names come from `wonda transitions operations --json`.\n\n```bash\nwonda transitions run --media $VID --preset flash_glow \\\n  --overrides '{\"glow\":{\"spread\":12},\"zoom\":{\"end\":2.5}}' --wait -o out.mp4\n```\n\n**Output URL paths differ by job type:**\n\n- Inference jobs (generate, audio): `.outputs[0].media.url` and `.outputs[0].media.mediaId`\n- Editor jobs (edit): `.outputs[0].url` and `.outputs[0].mediaId`\n\n## Model waterfall\n\n### Image\n\nDefault: `nano-banana-2`. Only use others when:\n\n- User explicitly asks for a different model\n- Need vector output → `runware-vectorize`\n- Need background removal → `birefnet-bg-removal`\n- Cheapest possible → `z-image`\n- NanoBanana fails (rare) → `seedream-4-5`\n- Need readable text in image → `nano-banana-pro`\n- Photorealistic/creative imagery → `grok-imagine` or `grok-imagine-pro`\n- Spicy content → `cookie` (SDXL-based, tag-based or natural language prompts) — **ONLY select when the user explicitly asks for spicy content. Never auto-select.**\n\n**Cookie model (`cookie`):** SDXL with DMD acceleration and hires fix. **Restricted: only use when the user explicitly requests spicy content.** Accepts both danbooru-style tags (`1cat, portrait, soft lighting`) and natural language. Supports `--negative-prompt` (has sensible defaults; override only when needed) and `--seed` for reproducibility.\n\n```bash\nwonda generate image --model cookie --prompt \"1cat, portrait, soft lighting\" --wait -o out.png\nwonda generate image --model cookie --prompt \"a woman in a garden, golden hour\" \\\n  --negative-prompt \"ugly, blurry, watermark\" --seed 42 --wait -o out.png\n```\n\n### Video\n\nDefault: `seedance-2` (duration 5/10/15s, default 5s, quality: high). Escalation:\n\n- Quality complaint or different style → `sora2` or `sora2pro`\n- Max single-clip duration is **15s** for Seedance 2, **20s** for Sora → for longer content, stitch multiple clips via merge\n- Veo (`veo3_1`, `veo3_1-fast`) is available but NOT in the default waterfall. Only pick Veo when the user explicitly asks for Veo by name.\n\n**Image-to-video routing (MANDATORY when attaching a reference image):**\n\n- Person/face visible in the **reference image** → MUST use `kling_3_pro` (preserves identity better for faces)\n- No person in reference image → use `seedance-2`\n- **Text-to-video (no reference image):** Seedance 2 generates people fine. This rule ONLY applies when you `--attach` an image.\n\n**Kling model family:**\n\n- `kling_3_pro` — Text-to-video and image-to-video, supports start/end images, custom elements (@Element1, @Element2), 3-15s duration, 16:9/9:16/1:1\n- `kling_2_6_pro` — General purpose, 5-10s, 16:9/9:16/1:1, text-to-video and image-to-video\n- `kling_2_6_motion_control` — Motion transfer: requires both a reference image AND a reference video, recreates the video's motion with the image's appearance\n- `kling2_5-pro` — Budget Kling option, 5-10s, supports first/last frame images\n\n**Other video models:**\n\n- `grok-imagine-video` — xAI video generation, 5-15s, supports 7 aspect ratios including 4:3 and 3:2\n- `topaz-video-upscale` — Upscale video resolution (1-4x factor, supports fps conversion)\n- `sync-lipsync-v2-pro` — Legacy lipsync for user-supplied video + audio pairs. Inferior to native-audio generation and almost never the right choice for new content. See the \"Lip sync\" section for rules.\n\nSeedance family (DEFAULT video model, watermarks automatically removed):\n\n- `seedance-2` — Base Seedance 2.0 (T2V/I2V, 5-15s, high=standard/basic=fast)\n- `seedance-2-omni` — Multi-reference generation (images, audio refs)\n- `seedance-2-video-edit` — Edit existing video via text prompt\n\n**Video durations:** Accepted `--duration` values vary by model. Check with `wonda capabilities` or `wonda models info <slug>`.\n\n### Audio\n\n- Music: `suno-music` (set `--params '{\"instrumental\":true}'` for no vocals)\n- Text-to-speech: `elevenlabs-tts` — only for explicit narrator/voice-over asks over silent footage. Do NOT use to \"make a UGC character talk\" — Sora / Sora 2 Pro / Veo 3.1 / Kling 3 / Seedance 2 generate native synced speech in any language, which looks and sounds far better. Always set voiceId in params. Default female voice: `--params '{\"voiceId\":\"21m00Tcm4TlvDq8ikWAM\"}'` (Rachel).\n- Transcription: `elevenlabs-stt`\n- Multi-speaker dialogue: `elevenlabs-dialogue`\n\n**Native synced speech (preferred over TTS + lipsync):** Sora, Sora 2 Pro, Veo 3.1, Kling 3, and Seedance 2 all generate dialogue in any language directly inside the video, with mouth movements baked in. Put the line (and language) in the video model's `--prompt`. Never chain `elevenlabs-tts` → `sync-lipsync-v2-pro` to fake speech over a silent generation.\n\n## Prompt writing rules\n\nFollow this waterfall top-to-bottom. Use the FIRST matching rule and stop.\n\n1. **PASSTHROUGH** — If the user says \"use my exact prompt\" / \"verbatim\" / \"no enhancements\" → copy their words exactly. Zero modifications.\n\n2. **IMAGE-TO-VIDEO** — When a source image feeds into a video model, describe MOTION ONLY. The model can see the image. Do NOT describe the image content.\n   - Good: `\"gentle breathing motion, camera slowly pushes in, atmospheric lighting shifts\"`\n   - Bad: `\"Two cats on a lavender background breathing softly\"` (describes the image)\n\n3. **EMPTY PROMPT (from scratch)** — Use the user's exact request as the prompt. Do NOT add style descriptors, lighting, composition, or mood.\n   - User says \"create an image of a cat with sunglasses\" → prompt: `\"create an image of a cat with sunglasses\"`\n   - Do NOT enhance to `\"A playful orange tabby wearing oversized reflective sunglasses, studio lighting, shallow depth of field\"`\n\n4. **NON-EMPTY PROMPT (adapting a template)** — Keep the structure and style, only swap content to match the user's request. Keep prompts literal and constraint-heavy.\n\n## Aspect ratio rules\n\nThree cases, no exceptions:\n\n1. User specifies a ratio → use it: `--aspect-ratio 16:9`\n2. User doesn't mention ratio → explicitly set `--aspect-ratio 9:16` for social content (UGC, TikTok, Reels, Stories). Portrait is the default for any social/marketing video.\n3. Editing existing media → use `--aspect-ratio auto` to preserve source dimensions\n\n**UGC and social content is ALWAYS portrait (9:16).** If someone asks for a TikTok, Reel, Story, or UGC video, always use `--aspect-ratio 9:16`. Landscape is only for YouTube, presentations, or when explicitly requested.\n\n**Square (1:1)** is supported by all Kling models and some image models — use for Instagram feed posts when requested.\n\n## Common chaining patterns\n\nThese patterns show how to compose multi-step pipelines by chaining CLI commands. Each step's output feeds into the next.\n\n> **No need to download and re-upload between steps.** Every generation and edit\n> produces a media ID in its output. Pass that ID directly to the next command\n> via `--media` or `--audio-media`. Use `--jq '.outputs[0].media.mediaId'`\n> for inference jobs and `--jq '.outputs[0].mediaId'` for editor jobs.\n> Only use `-o <file>` on the FINAL step to download the finished output.\n\n### Animate an image to video\n\n```bash\nMEDIA=$(wonda media upload ./product.jpg --quiet)\n# No person in image → Seedance 2\nwonda generate video --model seedance-2 --prompt \"camera slowly pushes in, product rotates\" \\\n  --attach $MEDIA --duration 5 --params '{\"quality\":\"high\"}' --wait -o animated.mp4\n# Person in image → Kling (ONLY when attaching a reference image with a person)\nwonda generate video --model kling_3_pro --prompt \"the person turns and smiles\" \\\n  --attach $MEDIA --duration 5 --wait -o person.mp4\n```\n\n### Replace audio on a video (TTS voiceover or music)\n\n```bash\n# Generate TTS\nTTS_JOB=$(wonda audio speech --model elevenlabs-tts --prompt \"The script\" \\\n  --params '{\"voiceId\":\"21m00Tcm4TlvDq8ikWAM\"}' --wait --quiet)\nTTS_MEDIA=$(wonda jobs get inference $TTS_JOB --jq '.outputs[0].media.mediaId')\n# Mix onto video (mute original, full voiceover)\nwonda edit video --operation editAudio --media $VID_MEDIA --audio-media $TTS_MEDIA \\\n  --params '{\"videoVolume\":0,\"audioVolume\":100}' --wait -o with-voice.mp4\n```\n\nOnly use this when you need to REPLACE the video's audio. Sora, Sora 2 Pro, Veo 3.1, Kling 3, and Seedance 2 all generate native synced speech in any language — don't replace it with TTS unless the user explicitly asks for a different voiceover. Never reach for this step to \"add speech\" to a UGC/talking-head clip; put the dialogue in the video model's prompt instead.\n\n### Add static text overlay\n\nStatic overlays (meme text, \"chat did i cook\", etc.) use smaller font sizes than captions. They're ambient, not meant to dominate the frame.\n\n```bash\nwonda edit video --operation textOverlay --media $VID_MEDIA \\\n  --prompt-text \"chat, did i cook\" \\\n  --params '{\"fontFamily\":\"TikTok Sans SemiCondensed\",\"position\":\"top-center\",\"sizePercent\":66,\"fontSizeScale\":0.5,\"strokeWidth\":4.5,\"paddingTop\":10}' \\\n  --wait -o with-text.mp4\n```\n\n**Font sizing guide:**\n\n- Static overlays: `sizePercent: 66`, `fontSizeScale: 0.5`, `strokeWidth: 4.5`\n- Animated captions: `sizePercent: 80`, `fontSizeScale: 0.8`, `strokeWidth: 2.5`, `highlightColor: rgb(252, 61, 61)`\n- Font: `TikTok Sans SemiCondensed` for both\n\n### Add animated captions (word-by-word with timing)\n\nThe `animatedCaptions` operation extracts audio, transcribes, and renders animated word-by-word captions — all in one step.\n\n```bash\nwonda edit video --operation animatedCaptions --media $VIDEO_MEDIA \\\n  --params '{\"fontFamily\":\"TikTok Sans SemiCondensed\",\"position\":\"bottom-center\",\"sizePercent\":80,\"strokeWidth\":2.5,\"fontSizeScale\":0.8,\"highlightColor\":\"rgb(252, 61, 61)\"}' \\\n  --wait -o with-captions.mp4\n```\n\nFor quick static captions (no timing, just text on screen), use `textOverlay` with `--prompt-text`:\n\n```bash\nwonda edit video --operation textOverlay --media $VIDEO_MEDIA \\\n  --prompt-text \"Summer Sale - 50% Off\" \\\n  --params '{\"fontFamily\":\"TikTok Sans SemiCondensed\",\"position\":\"bottom-center\",\"sizePercent\":80}' \\\n  --wait -o captioned.mp4\n```\n\n### Add background music\n\n```bash\nMUSIC_JOB=$(wonda generate music --model suno-music \\\n  --prompt \"upbeat lo-fi hip hop, warm vinyl crackle\" --wait --quiet)\nMUSIC_MEDIA=$(wonda jobs get inference $MUSIC_JOB --jq '.outputs[0].media.mediaId')\nwonda edit video --operation editAudio --media $VID_MEDIA --audio-media $MUSIC_MEDIA \\\n  --params '{\"videoVolume\":100,\"audioVolume\":30}' --wait -o with-music.mp4\n```\n\n### Editor output chaining\n\nWhen chaining multiple editor operations (e.g., editAudio → animatedCaptions → textOverlay), extract the media ID from each editor job output and pass it to the next step. Note the jq path differs from inference jobs:\n\n```bash\n# Inference jobs: .outputs[0].media.mediaId\n# Editor jobs:    .outputs[0].mediaId\n\nEDIT_JOB=$(wonda edit video --operation editAudio --media $VID --audio-media $AUDIO \\\n  --params '{\"videoVolume\":0,\"audioVolume\":100}' --wait --quiet)\nSTEP1_MEDIA=$(wonda jobs get editor $EDIT_JOB --jq '.outputs[0].mediaId')\n\nCAP_JOB=$(wonda edit video --operation animatedCaptions --media $STEP1_MEDIA \\\n  --params '{\"fontFamily\":\"TikTok Sans SemiCondensed\",\"position\":\"bottom-center\",\"sizePercent\":80,\"strokeWidth\":2.5,\"fontSizeScale\":0.8,\"highlightColor\":\"rgb(252, 61, 61)\"}' --wait --quiet)\nSTEP2_MEDIA=$(wonda jobs get editor $CAP_JOB --jq '.outputs[0].mediaId')\n\nwonda edit video --operation textOverlay --media $STEP2_MEDIA \\\n  --prompt-text \"Hook text\" --params '{\"position\":\"top-center\",\"fontFamily\":\"TikTok Sans SemiCondensed\",\"sizePercent\":66,\"fontSizeScale\":0.5,\"strokeWidth\":4.5}' --wait -o final.mp4\n```\n\n### Merge multiple clips\n\n```bash\nwonda edit video --operation merge --media $CLIP1,$CLIP2,$CLIP3 --wait -o merged.mp4\n```\n\nMedia order = playback order. Up to 5 clips.\n\n### Split scenes / keep a specific scene\n\nTwo modes — pick by intent:\n\n```bash\n# Keep a specific scene (split mode) — splits into scenes, auto-selects one\nwonda edit video --operation splitScenes --media $VID_MEDIA \\\n  --params '{\"mode\":\"split\",\"threshold\":0.5,\"minClipDuration\":2,\"outputSelection\":\"last\"}' \\\n  --wait -o last-scene.mp4\n# outputSelection: \"first\", \"last\", or 1-indexed number (e.g. 2 for second scene)\n\n# Remove a scene (omit mode) — removes one scene, merges the rest\nwonda edit video --operation splitScenes --media $VID_MEDIA \\\n  --params '{\"mode\":\"omit\",\"threshold\":0.5,\"minClipDuration\":2,\"outputSelection\":\"first\"}' \\\n  --wait -o without-first.mp4\n# outputSelection: which scene to REMOVE\n```\n\nUse omit mode for \"remove frozen first frame\" (common with Sora videos). Use split mode for \"keep just scene X\".\n\n### Image editing (img2img)\n\n```bash\nMEDIA=$(wonda media upload ./photo.jpg --quiet)\nwonda generate image --model nano-banana-2 --prompt \"change the background to blue\" \\\n  --attach $MEDIA --aspect-ratio auto --wait -o edited.png\n```\n\nWhen editing an existing image, always use `--aspect-ratio auto` to preserve dimensions. The prompt should describe ONLY the edit, not the full image.\n\n### Background removal\n\n```bash\n# Image → use birefnet-bg-removal\nwonda generate image --model birefnet-bg-removal --attach $IMAGE_MEDIA --wait -o no-bg.png\n# Video → use bria-video-background-removal\nwonda generate video --model bria-video-background-removal --attach $VIDEO_MEDIA --wait -o no-bg.mp4\n```\n\nCRITICAL: Image and video background removal are different models. Never swap them.\n\n### Lip sync (last-resort fallback — prefer native-audio video models)\n\nSora, Sora 2 Pro, Veo 3.1, Kling 3, and Seedance 2 all generate speech in any language with correctly synced mouth movements as part of the video itself. That path produces dramatically better results than `sync-lipsync-v2-pro`: better lip physics, better lighting, better costs, and no second inference round-trip. For any talking UGC, ad, or spokesperson video, put the dialogue directly in the video model's prompt — do not chain TTS + lipsync.\n\nOnly reach for `sync-lipsync-v2-pro` when the user EXPLICITLY supplies both a pre-existing video and a pre-existing audio clip and asks you to align the mouth to that audio. If a user asks for lipsync as the default method of making a character speak, push back: the native-audio video models are the better tool and work in any language.\n\n```bash\nwonda generate video --model sync-lipsync-v2-pro --attach $VIDEO_MEDIA,$AUDIO_MEDIA --wait -o synced.mp4\n```\n\n### Video upscale\n\n```bash\nwonda generate video --model topaz-video-upscale --attach $VIDEO_MEDIA \\\n  --params '{\"upscaleFactor\":2}' --wait -o upscaled.mp4\n```\n\n## Editor operations reference\n\n| Operation          | Inputs                      | Key Params                                                                    |\n| ------------------ | --------------------------- | ----------------------------------------------------------------------------- |\n| `animatedCaptions` | video_0                     | fontFamily, position, sizePercent, fontSizeScale, strokeWidth, highlightColor |\n| `textOverlay`      | video_0 + prompt            | fontFamily, position, sizePercent, fontSizeScale, strokeWidth                 |\n| `editAudio`        | video_0 + audio_0           | videoVolume (0-100), audioVolume (0-100)                                      |\n| `merge`            | video_0..video_4            | Handle order = playback order                                                 |\n| `overlay`          | video_0 (bg) + video_1 (fg) | position, resizePercent                                                       |\n| `splitScreen`      | video_0 + video_1           | targetAspectRatio (16:9 or 9:16)                                              |\n| `trim`             | video_0                     | trimStartMs, trimEndMs (milliseconds)                                         |\n| `splitScenes`      | video_0                     | mode (split/omit), threshold, outputSelection                                 |\n| `speed`            | video_0                     | speed (multiplier: 2 = 2x faster)                                             |\n| `extractAudio`     | video_0                     | Extracts audio track                                                          |\n| `reverseVideo`     | video_0                     | Plays backwards                                                               |\n| `skipSilence`      | video_0                     | maxSilenceDuration (default 0.03)                                             |\n| `imageCrop`        | video_0                     | aspectRatio                                                                   |\n| `textOverlay`      | video_0 (image)             | Same as video textOverlay — works on images, outputs image (png/jpg)          |\n\nValid textOverlay fonts: Inter, Montserrat, Bebas Neue, Oswald, TikTok Sans, TikTok Sans Condensed, TikTok Sans SemiCondensed, TikTok Sans SemiExpanded, TikTok Sans Expanded, TikTok Sans ExtraExpanded, Nohemi, Poppins, Raleway, Anton, Comic Cat, Gavency\nValid positions: top-left, top-center, top-right, center-left, center, center-right, bottom-left, bottom-center, bottom-right\n\n## Marketing & distribution\n\n```bash\n# Connected social accounts\nwonda accounts instagram\nwonda accounts tiktok\n\n# Analytics\nwonda analytics instagram\nwonda analytics tiktok\nwonda analytics meta-ads\n\n# Scrape competitors\nwonda scrape social --handle @nike --platform instagram --wait\nwonda scrape social-status <taskId>                   # Get results of a social scrape\nwonda scrape ads --query \"sneakers\" --country US --wait\nwonda scrape ads --query \"sneakers\" --country US --search-type keyword \\\n  --active-status active --sort-by impressions_desc --period last30d \\\n  --media-type video --max-results 50 --wait\nwonda scrape ads-status <taskId>                      # Get results of an ads search\n\n# Download a single reel or TikTok video\nSCRAPE=$(wonda scrape video --url \"https://www.instagram.com/reel/ABC123/\" --wait --quiet)\n# → returns scrape result with mediaId in the media array\n\n# Publish\nwonda publish instagram --media <id> --account <accountId> --caption \"New drop\"\nwonda publish instagram --media <id> --account <accountId> --caption \"...\" --alt-text \"...\" --product IMAGE --share-to-feed\nwonda publish instagram-carousel --media <id1>,<id2>,<id3> --account <accountId> --caption \"...\"\nwonda publish tiktok --media <id> --account <accountId> --caption \"New drop\"\nwonda publish tiktok --media <id> --account <accountId> --caption \"...\" --privacy-level PUBLIC_TO_EVERYONE --aigc\nwonda publish tiktok-carousel --media <id1>,<id2> --account <accountId> --caption \"...\" --cover-index 0\n\n# History\nwonda publish history instagram --limit 10\nwonda publish history tiktok --limit 10\n\n# Browse media library\nwonda media list --kind image --limit 20\nwonda media info <mediaId>\n```\n\n### X/Twitter\n\nSupports reads, writes, and social graph.\n\n```bash\n# Auth setup (run `wonda x auth --help` for details)\nwonda x auth set\nwonda x auth check\n\n# Read\nwonda x search \"sneakers\" -n 20                     # Search tweets\nwonda x user @nike                                   # User profile\nwonda x user-tweets @nike -n 20                      # User's recent tweets\nwonda x read <tweet-id-or-url>                       # Single tweet\nwonda x replies <tweet-id-or-url>                    # Replies to a tweet\nwonda x thread <tweet-id-or-url>                     # Full thread (author's self-replies)\nwonda x home                                         # Home timeline (--following for Following tab)\nwonda x bookmarks                                    # Your bookmarks\nwonda x likes                                        # Your liked tweets\nwonda x following @handle                            # Who a user follows\nwonda x followers @handle                            # A user's followers\nwonda x lists @handle                                # User's lists (--member-of for memberships)\nwonda x list-timeline <list-id-or-url>               # Tweets from a list\nwonda x news --tab trending                          # Trending topics (tabs: for_you, trending, news, sports, entertainment)\n\n# Write (uses internal API — use on secondary accounts)\nwonda x tweet \"Hello world\"                          # Post a tweet\nwonda x tweet \"Hello world\" --browser                # Full stealth via real browser (Patchright)\nwonda x tweet \"Hello world\" --attach ~/clip.mp4      # Attach image/gif/video (up to 4)\nwonda x reply <tweet-id-or-url> \"Great point\"        # Reply\nwonda x like <tweet-id-or-url>                       # Like\nwonda x unlike <tweet-id-or-url>                     # Unlike\nwonda x retweet <tweet-id-or-url>                    # Retweet\nwonda x unretweet <tweet-id-or-url>                  # Unretweet\nwonda x follow @handle                               # Follow\nwonda x unfollow @handle                             # Unfollow\n\n# Maintenance\nwonda x refresh-ids                                  # Refresh cached GraphQL query IDs from X's JS bundles\n```\n\nAll paginated commands support: `-n <count>`, `--cursor`, `--all`, `--max-pages`, `--delay <ms>`.\n\n**Tweet modes:** The `tweet` command has two modes:\n\n- **Default (API):** X's internal GraphQL (`CreateTweet` for ≤280 chars, `CreateNoteTweet` for long-form Premium). Fast (<1s), supports `--attach` for media. Occasionally fails with error 226 when X rotates query IDs or feature flags — when that happens, recapture via `twitter-tone-research/_artifacts/scripts/capture-ct-bw.mjs` and bump the three knobs in `xclient/`.\n- **`--browser` (Patchright):** Launches a real undetected Chrome browser, opens x.com compose, types with human-style jitter, clicks Post. Supports `--attach` (image/gif/video, up to 4) — files are driven through the hidden compose input via Playwright's `setInputFiles`, no native picker dialog opens; the script waits for X's upload pipeline to finalize (up to 5 min for video) before submitting. Zero fingerprinting risk. Slower (~10s text, ~30-90s with video) but fully drift-proof — no queryIds, feature flags, or request shape to maintain. Requires: `npm i patchright && npx patchright install chromium`.\n\n### LinkedIn\n\nSupports search, profiles, companies, messaging, and engagement.\n\n```bash\n# Auth setup (run `wonda linkedin auth --help` for details)\nwonda linkedin auth set\nwonda linkedin auth check\n\n# Read\nwonda linkedin me                                    # Your identity\nwonda linkedin search \"data engineer\" --type PEOPLE  # Search (types: PEOPLE, COMPANIES, ALL)\nwonda linkedin profile johndoe                       # View profile (vanity name or URL)\nwonda linkedin company google                        # View company page\nwonda linkedin conversations                         # List message threads\nwonda linkedin messages <conversation-urn>           # Read messages in a thread\nwonda linkedin notifications -n 20                   # Recent notifications\nwonda linkedin connections                           # Your connections\nwonda linkedin reactions <activity-id>               # Reactions with reactor profiles + type\n\n# Write\nwonda linkedin connect <vanity-name> --message \"Hey!\" # Send connection request with note\nwonda linkedin connect <vanity-name> -m \"Hey!\" --browser  # Full stealth via real browser (Patchright)\nwonda linkedin like <activity-urn>                   # Like a post\nwonda linkedin unlike <activity-urn>                 # Remove a like\nwonda linkedin send-message <conversation-urn> \"Hi!\" # Send a message\nwonda linkedin post \"Excited to announce...\"         # Create a post\nwonda linkedin delete-post <activity-id>             # Delete a post\n```\n\nPaginated commands support: `-n <count>`, `--start`, `--all`, `--max-pages`, `--delay <ms>`.\n\n**Connection request modes:** The `connect` command has two modes:\n\n- **Default (API):** Voyager REST API with fingerprint mitigations (profile visit → drawer warm-up → connect). Fast (~3s), supports notes via `customMessage`.\n- **`--browser` (Patchright):** Launches a real undetected Chrome browser, navigates to the profile, and clicks through the UI. Zero fingerprinting risk. Slower (~10s) but fully safe. Use this as a fallback if you want full protection. Requires: `npm i patchright && npx patchright install chromium`.\n\n### Reddit\n\nAuth is optional — many reads work unauthenticated. Supports search, feeds, users, posts, trending, and chat/DMs.\n\n```bash\n# Auth setup (run `wonda reddit auth --help` for details)\nwonda reddit auth set\nwonda reddit auth check\n\n# Read (works without auth)\nwonda reddit search \"AI video\" --sort top --time week   # Search posts (sort: relevance, hot, top, new, comments)\nwonda reddit subreddit marketing                        # Subreddit info\nwonda reddit feed marketing --sort hot                  # Subreddit posts (sort: hot, new, top, rising)\nwonda reddit user spez                                  # User profile\nwonda reddit user-posts spez --sort top                 # User's posts\nwonda reddit user-comments spez                         # User's comments\nwonda reddit post <id-or-url> -n 50                     # Post with comments\nwonda reddit trending --sort hot                        # Popular/trending posts\n\n# Read (requires auth)\nwonda reddit home --sort best                           # Your home feed\n\n# Write (requires auth)\nwonda reddit submit marketing --title \"Great tool\" --text \"Check this out...\"  # Self post\nwonda reddit submit marketing --title \"Great tool\" --url \"https://...\"         # Link post\nwonda reddit comment <parent-fullname> --text \"Nice post!\"                     # Reply\nwonda reddit vote <fullname> --up                       # Upvote (--down, --unvote)\nwonda reddit subscribe marketing                        # Subscribe (--unsub to unsubscribe)\nwonda reddit save <fullname>                            # Save a post or comment\nwonda reddit unsave <fullname>                          # Unsave\nwonda reddit delete <fullname>                          # Delete your post or comment\n```\n\nPaginated commands support: `-n <count>`, `--after <cursor>`, `--all`, `--max-pages`, `--delay <ms>`.\n\n### Reddit chat / DMs\n\nDirect messaging via the Matrix protocol. Requires a separate chat token.\n\n```bash\n# Auth setup (run `wonda reddit chat auth-set --help` for details)\nwonda reddit chat auth-set\n\n# Read\nwonda reddit chat inbox                                  # List DM conversations with latest messages\nwonda reddit chat messages <room-id> -n 50               # Fetch messages from a room\nwonda reddit chat all-rooms                              # List ALL joined rooms (not limited to sync window)\n\n# Write\nwonda reddit chat send <room-id> --text \"Hey!\"           # Send a DM (mimics browser typing behavior)\n\n# Management\nwonda reddit chat accept-all                             # Accept all pending chat requests\nwonda reddit chat refresh                                # Force-refresh the Matrix chat token\n```\n\n**Important**: The chat token expires every ~24h. The CLI auto-refreshes on use, but if it expires fully, re-run `auth-set`. Rate limit DM sends to 15-20/day with varied text to avoid detection. The `send` command includes a typing delay (1-5s) to mimic human behavior.\n\n## Workflow & discovery\n\n### Video analysis\n\nAnalyze a video to extract a composite frame grid (visual) and audio transcript (text). Useful for understanding video content before creating variations. Requires a **full account** (not anonymous) and costs credits based on video duration (ElevenLabs STT pricing).\n\nIf the video was just uploaded and is still normalizing, the CLI auto-retries until the media is ready.\n\n```bash\n# Analyze a video — returns composite grid image + transcript\nANALYSIS_JOB=$(wonda analyze video --media $VIDEO_MEDIA --wait --quiet)\n\n# The job output contains:\n# - compositeGrid: image showing 24 evenly-spaced frames\n# - transcript: full text of any speech\n# - wordTimestamps: word-level timing [{word, start, end}]\n# - videoMetadata: {width, height, durationMs, fps, aspectRatio}\n\n# Download the composite grid for visual inspection\nwonda analyze video --media $VIDEO_MEDIA --wait -o /tmp/grid.jpg\n\n# Get just the transcript\nwonda analyze video --media $VIDEO_MEDIA --wait --jq '.outputs[] | select(.outputKey==\"transcript\") | .outputValue'\n```\n\n**Error handling**: 402 = insufficient credits, 409 = media still processing (CLI auto-retries).\n\n### Chat (AI assistant)\n\nInteractive chat sessions for content creation — the AI handles generation, editing, and iteration.\n\n```bash\nwonda chat create --title \"Product launch\"            # New session\nwonda chat list                                       # List sessions (--limit, --offset)\nwonda chat messages <chatId>                          # Get messages\nwonda chat send <chatId> --message \"Create a UGC reaction video\"\nwonda chat send <chatId> --message \"Edit it\" --media <id>\nwonda chat send <chatId> --message \"...\" --aspect-ratio 9:16 --quality-tier max\nwonda chat send <chatId> --message \"...\" --style <styleId>\nwonda chat send <chatId> --message \"...\" --passthrough-prompt  # Use exact prompt, no AI enhancement\n```\n\n### Jobs & runs\n\n```bash\nwonda jobs get inference <id>                         # Inference job status\nwonda jobs get editor <id>                            # Editor job status\nwonda jobs get publish <id>                           # Publish job status\nwonda jobs wait inference <id> --timeout 20m          # Wait for completion\nwonda run get <runId>                                 # Run status\nwonda run wait <runId> --timeout 30m                  # Wait for run completion\n```\n\n### Discovery\n\n```bash\nwonda models list                                     # All available models\nwonda models info <slug>                              # Model details and params\nwonda operations list                                 # All editor operations\nwonda operations info <operation>                     # Operation details\nwonda capabilities                                    # Full platform capabilities\nwonda pricing list                                    # Pricing for all models\nwonda pricing estimate --model seedance-2 --prompt \"...\" # Cost estimate\nwonda style list                                      # Available visual styles\nwonda topup                                            # Top up credits (opens Stripe checkout)\n```\n\n### Editing audio & images\n\n```bash\n# Edit audio\nwonda edit audio --operation <op> --media <id> --wait -o out.mp3\n\n# Edit image (crop, text overlay)\nwonda edit image --operation imageCrop --media <id> \\\n  --params '{\"aspectRatio\":\"9:16\"}' --wait -o cropped.png\n\n# Add text to an image (outputs image, same format as input)\nwonda edit image --operation textOverlay --media <id> \\\n  --prompt-text \"Your text here\" \\\n  --params '{\"fontFamily\":\"TikTok Sans\",\"position\":\"bottom-center\",\"fontSizeScale\":1.5,\"textColor\":\"#FFFFFF\",\"strokeWidth\":2}' \\\n  --wait -o output.png\n```\n\n### Alignment (timestamp extraction)\n\n```bash\nwonda alignment extract-timestamps --model <model> --attach <mediaId> --wait\n```\n\n## Quality tiers\n\n| Tier     | Image Model       | Resolution | Video Model              | When                                                                                           |\n| -------- | ----------------- | ---------- | ------------------------ | ---------------------------------------------------------------------------------------------- |\n| Standard | `nano-banana-2`   | 1K         | `seedance-2` (high, 5s)  | Default. High quality, good for iteration.                                                     |\n| High     | `nano-banana-pro` | 1K         | `seedance-2` (high, 15s) | Longer duration. Also offer `sora2pro` for different style.                                    |\n| Max      | `nano-banana-pro` | 4K         | `seedance-2` (high, 15s) | Best possible. Also offer `sora2pro` (1080p). Use `--params '{\"resolution\":\"4K\"}'` for images. |\n\n## Troubleshooting\n\n| Symptom                          | Likely Cause                                  | Fix                                                    |\n| -------------------------------- | -------------------------------------------\n\nFile v1.2.0:_meta.json\n\n{\n  \"ownerId\": \"kn7bsad3k2yghw518mb2h3hp6d837qkt\",\n  \"slug\": \"wonda\",\n  \"version\": \"1.2.0\",\n  \"publishedAt\": 1776872244669\n}\n\nFile v1.2.0:skill-card.md\n\n## Description:\n\nWonda CLI helps terminal-based agents generate and edit images, videos, music, and audio, plus research and automate activity across LinkedIn, Reddit, and X/Twitter.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[degausai](https://clawhub.ai/user/degausai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agent operators use this skill to route Wonda CLI commands for media generation, editing, social research, social publishing, and local finishing workflows. It is intended for agents that need concise command guidance for producing media assets or interacting with connected social accounts.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can guide agents through broad external social actions, including publishing, messaging, following, deleting, and account workflows.\n\nMitigation: Require explicit human confirmation before posting, messaging, following, deleting, accepting terms, granting permissions, or making other externally visible account changes.\n\nRisk: The security summary flags stealthy social-account automation and the guidance calls out disposable signup, internal API, and detection-avoidance workflows.\n\nMitigation: Avoid stealth, disposable signup, internal API, and detection-avoidance workflows; prefer official account APIs and hand off rate-limit or verification challenges to a human.\n\nRisk: Use requires Wonda credentials and may operate on connected social accounts.\n\nMitigation: Run in an isolated environment, protect WONDERCAT_API_KEY as a secret, pin dependencies where practical, and grant only the account access needed for the task.\n\n## Reference(s):\n\n- [Wonda homepage](https://wonda.sh)\n- [ClawHub skill page](https://clawhub.ai/degausai/skills/wonda)\n- [Publisher profile](https://clawhub.ai/user/degausai)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with CLI command examples and JSON-oriented command outputs]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Commands may create media files, social posts, messages, account actions, and local analysis artifacts when executed.]\n\n## Skill Version(s):\n\n1.2.0 (source: frontmatter and server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.0: 2 files, 12541 bytes\n\nFiles: SKILL.md (36320b), _meta.json (124b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: wonda-cli\ndescription: Using the Wonda CLI to generate images, videos, music, and audio from the terminal — plus LinkedIn, Reddit, and X/Twitter research and automation\n---\n\n# Wonda CLI\n\nWonda CLI is a content creation toolkit for terminal-based agents. Use it to generate images, videos, music, and audio; edit and compose media; publish to social platforms; and research/automate across LinkedIn, Reddit, and X/Twitter.\n\n## Install\n\nIf `wonda` is not found on PATH, install it first:\n\n```bash\ncurl -fsSL https://wonda.sh/install.sh | bash\n```\n\nOr via Homebrew: `brew tap degausai/tap && brew install wonda`\nOr via npm: `npm i -g @degausai/wonda`\n\n## Setup\n\n- **Auth**: `wonda auth login` (opens browser) or `export WONDERCAT_API_KEY=sk_...` or `wonda config set api-key sk_...`\n- **Base URL** (local dev): `export WONDERCAT_BASE_URL=http://localhost:14692`\n- **Verify**: `wonda auth check`\n- **Config**: `wonda config set <key> <value>` / `wonda config get <key>` (keys: `api-key`, `base-url`)\n\n### Access tiers\n\nNot all commands are available to every account type:\n\n| Tier                                        | Access                                                                                                                           |\n| ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |\n| **Anonymous** (temporary account, no login) | Media upload/download, editing (`video/edit`, `image/edit`, `audio/edit`), transcription, social publishing, scraping, analytics |\n| **Free** (logged in, Basic/Free plan)       | Everything above + **generation** (`image/generate`, `video/generate`, etc.), styles, recipes, brand                             |\n| **Paid** (Plus, Pro, or Absolute plan)      | Everything above + **video analysis** (requires credits), **skill commands** (`wonda skill install/list/get`)                    |\n\nIf a command returns a `403` error, check your plan at https://app.wondercat.ai/settings/billing.\n\n### Global output flags\n\nAll commands support these output control flags:\n\n- `--json` — Force JSON output (auto-enabled when stdout is piped)\n- `--quiet` — Only output the primary identifier (job ID, media ID, etc.) — ideal for scripting\n- `-o <path>` — Download output to file (implies `--wait`)\n- `--fields status,outputs` — Select specific JSON fields\n- `--jq '.outputs[0].media.url'` — Filter JSON output with a jq expression\n\n## How to think about content creation\n\nYou are a marketing director with access to a full production toolkit. Before touching any tool, think:\n\n1. **What product category?** (beauty, food, tech, fashion, fitness, etc.)\n2. **What format performs for this category?** (UGC memes for everyday products, cinematic for luxury, before/after for transformations, testimonial for services)\n3. **What's the hook?** (relatable scenario, surprising twist, aspirational lifestyle, social proof)\n4. **What specific scene?** (not \"product on table\" but \"person discovering the product in a funny situation\")\n\n## Decision flow\n\nWhen asked to create content, follow this order:\n\n### Step 1: Gather context\n\n```bash\nwonda brand                                                    # Brand identity, colors, products, audience\nwonda analytics instagram                                      # What content performs well\nwonda scrape social --handle @competitor --platform instagram --wait  # Competitive research (if relevant)\n\n# Cross-platform research (if relevant)\nwonda x search \"topic OR keyword\"                              # Find conversations on X/Twitter\nwonda x user-tweets @competitor                                # Competitor's recent tweets\nwonda reddit search \"topic\" --sort top --time week             # Reddit discussions\nwonda reddit feed marketing --sort hot                         # Subreddit trends\nwonda linkedin search \"topic\" --type COMPANIES                 # LinkedIn company/people research\nwonda linkedin profile competitor-vanity-name                  # LinkedIn profile intel\n```\n\n### Step 2: Check content skills\n\nContent skills are step-by-step guides for common content types. Each skill tells you exactly which models, prompts, and editing operations to use — and in what order. ALWAYS check skills before building from scratch.\n\n```bash\nwonda skill list                                # Browse all content skills\nwonda skill get <slug>                          # Full step-by-step guide for a skill\n```\n\n**Full skill index:**\n\n| Slug                      | Description                                                        | Input                     |\n| ------------------------- | ------------------------------------------------------------------ | ------------------------- |\n| product-video             | Product/scene video — prompt library for all categories            | optional product image    |\n| ugc-talking               | Talking-head UGC — single clip, two-angle PIP, or 20s+ with B-roll | optional reference        |\n| ugc-reaction-batch        | Batch TikTok-native UGC reactions with viral strategy              | optional product image    |\n| tiktok-ugc-pipeline       | Scrape viral reel → generate 5 UGC → post as drafts                | reel or TikTok URL        |\n| ugc-dance-motion          | Dance/motion transfer                                              | image + video             |\n| marketing-brain           | Marketing strategy brain — hooks, visuals, ads                     | user brief                |\n| reddit-subreddit-intel    | Scrape top posts, analyze virality, generate ideas                 | subreddit + product       |\n| twitter-influencer-search | Find X influencers and amplifiers                                  | competitor/niche keywords |\n\n**If a skill matches** → `wonda skill get <slug>`, read it, adapt to context, execute each step.\n\n**If no skill matches** → build from scratch (Step 3).\n\n### Step 3: Build from scratch (chain endpoints)\n\nWhen no skill matches, chain individual CLI commands. Each step produces an output that feeds into the next.\n\n**Single asset:**\n\n```bash\nwonda generate image --model nano-banana-2 --prompt \"...\" --aspect-ratio 9:16 --wait -o out.png\n# --negative-prompt \"...\" — override what to exclude (models like cookie have good defaults)\n# --seed <number>         — pin the seed for reproducible results\nwonda generate video --model seedance-2 --prompt \"...\" --duration 5 --params '{\"quality\":\"high\"}' --wait -o out.mp4\nwonda generate text --model <model> --prompt \"...\" --wait\nwonda generate music --model suno-music --prompt \"upbeat lo-fi\" --wait -o music.mp3\n```\n\n**Audio (speech, transcription, dialogue):**\n\n```bash\n# Text-to-speech\nwonda audio speech --model elevenlabs-tts --prompt \"Your script here\" \\\n  --params '{\"voiceId\":\"21m00Tcm4TlvDq8ikWAM\"}' --wait -o speech.mp3\n# elevenlabs-tts always requires a voiceId param\n# Common voice: Rachel (female) \"21m00Tcm4TlvDq8ikWAM\"\n\n# Transcribe audio/video to text\nwonda audio transcribe --model elevenlabs-stt --attach $MEDIA --wait\n\n# Multi-speaker dialogue\nwonda audio dialogue --model elevenlabs-dialogue --prompt \"Speaker A: Hi! Speaker B: Hello!\" \\\n  --wait -o dialogue.mp3\n```\n\n**Add animated captions to a video:**\n\nThe `animatedCaptions` operation handles everything in one step — it extracts audio, transcribes for word-level timing, and renders animated word-by-word captions onto the video.\n\n```bash\n# Generate a video with speech audio\nVID_JOB=$(wonda generate video --model seedance-2 --prompt \"...\" --duration 5 --aspect-ratio 9:16 --params '{\"quality\":\"high\"}' --wait --quiet)\nVID_URL=$(wonda jobs get inference $VID_JOB --jq '.outputs[0].media.url')\nwonda media download \"$VID_URL\" -o /tmp/vid.mp4\nVID_MEDIA=$(wonda media upload /tmp/vid.mp4 --quiet)\n\n# Add animated captions (single step)\nwonda edit video --operation animatedCaptions --media $VID_MEDIA \\\n  --params '{\"fontFamily\":\"TikTok Sans SemiCondensed\",\"position\":\"bottom-center\",\"sizePercent\":80,\"strokeWidth\":2.5,\"fontSizeScale\":0.8,\"highlightColor\":\"rgb(252, 61, 61)\"}' \\\n  --wait -o final.mp4\n```\n\nThe video's original audio is preserved. Do NOT replace the audio with TTS — Sora already generated the speech.\n\n**Output URL paths differ by job type:**\n\n- Inference jobs (generate, audio): `.outputs[0].media.url` and `.outputs[0].media.mediaId`\n- Editor jobs (edit): `.outputs[0].url` and `.outputs[0].mediaId`\n\n## Model waterfall\n\n### Image\n\nDefault: `nano-banana-2`. Only use others when:\n\n- User explicitly asks for a different model\n- Need vector output → `runware-vectorize`\n- Need background removal → `birefnet-bg-removal`\n- Cheapest possible → `z-image`\n- NanoBanana fails (rare) → `seedream-4-5`\n- Need readable text in image → `gpt-image-1-5`\n- Photorealistic/creative imagery → `grok-imagine` or `grok-imagine-pro`\n- Spicy/NSFW content → `cookie` (SDXL-based, tag-based or natural language prompts)\n\n**Cookie model (`cookie`):** SDXL with DMD acceleration and hires fix. Accepts both danbooru-style tags (`1girl, portrait, soft lighting`) and natural language. Supports `--negative-prompt` (has sensible defaults; override only when needed) and `--seed` for reproducibility.\n\n```bash\nwonda generate image --model cookie --prompt \"1girl, portrait, soft lighting\" --wait -o out.png\nwonda generate image --model cookie --prompt \"a woman in a garden, golden hour\" \\\n  --negative-prompt \"ugly, blurry, watermark\" --seed 42 --wait -o out.png\n```\n\n### Video\n\nDefault: `seedance-2` (duration 5/10/15s, default 5s, quality: high). Escalation:\n\n- Quality complaint or different style → `sora2` or `sora2pro`\n- Max single-clip duration is **15s** for Seedance 2, **20s** for Sora → for longer content, stitch multiple clips via merge\n- Fast generation needed → `veo3_1-fast` (Veo 3.1, supports 720p/1080p)\n\n**Image-to-video routing (MANDATORY when attaching a reference image):**\n\n- Person/face visible in the **reference image** → MUST use `kling_3_pro_i2v` (preserves identity better for faces)\n- No person in reference image → use `seedance-2`\n- **Text-to-video (no reference image):** Seedance 2 generates people fine. This rule ONLY applies when you `--attach` an image.\n\n**Kling model family:**\n\n- `kling_3_pro_i2v` — Best for image-to-video, supports start/end images, custom elements (@Element1, @Element2), 3-15s duration, 16:9/9:16/1:1\n- `kling_2_6_pro` — General purpose, 5-10s, 16:9/9:16/1:1, text-to-video and image-to-video\n- `kling_2_6_motion_control` — Motion transfer: requires both a reference image AND a reference video, recreates the video's motion with the image's appearance\n- `kling2_5-pro` — Budget Kling option, 5-10s, supports first/last frame images\n\n**Other video models:**\n\n- `grok-imagine-video` — xAI video generation, 5-15s, supports 7 aspect ratios including 4:3 and 3:2\n- `topaz-video-upscale` — Upscale video resolution (1-4x factor, supports fps conversion)\n- `sync-lipsync-v2-pro` — Sync lip movements to audio (requires video + audio input)\n\nSeedance family (DEFAULT video model, watermarks automatically removed):\n\n- `seedance-2` — Base Seedance 2.0 (T2V/I2V, 5-15s, basic/high quality)\n- `seedance-2-omni` — Multi-reference generation (images, video, audio refs)\n- `seedance-2-video-edit` — Edit existing video via text prompt\n\n**Video durations:** Accepted `--duration` values vary by model. Check with `wonda capabilities` or `wonda models info <slug>`.\n\n### Audio\n\n- Music: `suno-music` (set `--params '{\"instrumental\":true}'` for no vocals)\n- Text-to-speech: `elevenlabs-tts` — always set voiceId in params. Default female voice: `--params '{\"voiceId\":\"21m00Tcm4TlvDq8ikWAM\"}'` (Rachel).\n- Transcription: `elevenlabs-stt`\n- Multi-speaker dialogue: `elevenlabs-dialogue`\n\n## Prompt writing rules\n\nFollow this waterfall top-to-bottom. Use the FIRST matching rule and stop.\n\n1. **PASSTHROUGH** — If the user says \"use my exact prompt\" / \"verbatim\" / \"no enhancements\" → copy their words exactly. Zero modifications.\n\n2. **IMAGE-TO-VIDEO** — When a source image feeds into a video model, describe MOTION ONLY. The model can see the image. Do NOT describe the image content.\n   - Good: `\"gentle breathing motion, camera slowly pushes in, atmospheric lighting shifts\"`\n   - Bad: `\"Two cats on a lavender background breathing softly\"` (describes the image)\n\n3. **EMPTY PROMPT (from scratch)** — Use the user's exact request as the prompt. Do NOT add style descriptors, lighting, composition, or mood.\n   - User says \"create an image of a cat with sunglasses\" → prompt: `\"create an image of a cat with sunglasses\"`\n   - Do NOT enhance to `\"A playful orange tabby wearing oversized reflective sunglasses, studio lighting, shallow depth of field\"`\n\n4. **NON-EMPTY PROMPT (adapting a template)** — Keep the structure and style, only swap content to match the user's request. Keep prompts literal and constraint-heavy.\n\n## Aspect ratio rules\n\nThree cases, no exceptions:\n\n1. User specifies a ratio → use it: `--aspect-ratio 16:9`\n2. User doesn't mention ratio → explicitly set `--aspect-ratio 9:16` for social content (UGC, TikTok, Reels, Stories). Portrait is the default for any social/marketing video.\n3. Editing existing media → use `--aspect-ratio auto` to preserve source dimensions\n\n**UGC and social content is ALWAYS portrait (9:16).** If someone asks for a TikTok, Reel, Story, or UGC video, always use `--aspect-ratio 9:16`. Landscape is only for YouTube, presentations, or when explicitly requested.\n\n**Square (1:1)** is supported by all Kling models and some image models — use for Instagram feed posts when requested.\n\n## Common chaining patterns\n\nThese patterns show how to compose multi-step pipelines by chaining CLI commands. Each step's output feeds into the next.\n\n### Animate an image to video\n\n```bash\nMEDIA=$(wonda media upload ./product.jpg --quiet)\n# No person in image → Seedance 2\nwonda generate video --model seedance-2 --prompt \"camera slowly pushes in, product rotates\" \\\n  --attach $MEDIA --duration 5 --params '{\"quality\":\"high\"}' --wait -o animated.mp4\n# Person in image → Kling (ONLY when attaching a reference image with a person)\nwonda generate video --model kling_3_pro_i2v --prompt \"the person turns and smiles\" \\\n  --attach $MEDIA --duration 5 --wait -o person.mp4\n```\n\n### Replace audio on a video (TTS voiceover or music)\n\n```bash\n# Generate TTS\nTTS_JOB=$(wonda audio speech --model elevenlabs-tts --prompt \"The script\" \\\n  --params '{\"voiceId\":\"21m00Tcm4TlvDq8ikWAM\"}' --wait --quiet)\nTTS_URL=$(wonda jobs get inference $TTS_JOB --jq '.outputs[0].media.url')\nwonda media download \"$TTS_URL\" -o /tmp/tts.mp3\nTTS_MEDIA=$(wonda media upload /tmp/tts.mp3 --quiet)\n# Mix onto video (mute original, full voiceover)\nwonda edit video --operation editAudio --media $VID_MEDIA --audio-media $TTS_MEDIA \\\n  --params '{\"videoVolume\":0,\"audioVolume\":100}' --wait -o with-voice.mp4\n```\n\nOnly use this when you need to REPLACE the video's audio. Sora generates native speech audio — don't replace it unless the user specifically wants a different voiceover.\n\n### Add static text overlay\n\nStatic overlays (meme text, \"chat did i cook\", etc.) use smaller font sizes than captions. They're ambient, not meant to dominate the frame.\n\n```bash\nwonda edit video --operation textOverlay --media $VID_MEDIA \\\n  --prompt-text \"chat, did i cook\" \\\n  --params '{\"fontFamily\":\"TikTok Sans SemiCondensed\",\"position\":\"top-center\",\"sizePercent\":66,\"fontSizeScale\":0.5,\"strokeWidth\":4.5,\"paddingTop\":10}' \\\n  --wait -o with-text.mp4\n```\n\n**Font sizing guide:**\n\n- Static overlays: `sizePercent: 66`, `fontSizeScale: 0.5`, `strokeWidth: 4.5`\n- Animated captions: `sizePercent: 80`, `fontSizeScale: 0.8`, `strokeWidth: 2.5`, `highlightColor: rgb(252, 61, 61)`\n- Font: `TikTok Sans SemiCondensed` for both\n\n### Add animated captions (word-by-word with timing)\n\nThe `animatedCaptions` operation extracts audio, transcribes, and renders animated word-by-word captions — all in one step.\n\n```bash\nwonda edit video --operation animatedCaptions --media $VIDEO_MEDIA \\\n  --params '{\"fontFamily\":\"TikTok Sans SemiCondensed\",\"position\":\"bottom-center\",\"sizePercent\":80,\"strokeWidth\":2.5,\"fontSizeScale\":0.8,\"highlightColor\":\"rgb(252, 61, 61)\"}' \\\n  --wait -o with-captions.mp4\n```\n\nFor quick static captions (no timing, just text on screen), use `textOverlay` with `--prompt-text`:\n\n```bash\nwonda edit video --operation textOverlay --media $VIDEO_MEDIA \\\n  --prompt-text \"Summer Sale - 50% Off\" \\\n  --params '{\"fontFamily\":\"TikTok Sans SemiCondensed\",\"position\":\"bottom-center\",\"sizePercent\":80}' \\\n  --wait -o captioned.mp4\n```\n\n### Add background music\n\n```bash\nMUSIC_JOB=$(wonda generate music --model suno-music \\\n  --prompt \"upbeat lo-fi hip hop, warm vinyl crackle\" --wait --quiet)\nMUSIC_URL=$(wonda jobs get inference $MUSIC_JOB --jq '.outputs[0].media.url')\nwonda media download \"$MUSIC_URL\" -o /tmp/music.mp3\nMUSIC_MEDIA=$(wonda media upload /tmp/music.mp3 --quiet)\nwonda edit video --operation editAudio --media $VID_MEDIA --audio-media $MUSIC_MEDIA \\\n  --params '{\"videoVolume\":100,\"audioVolume\":30}' --wait -o with-music.mp4\n```\n\n### Merge multiple clips\n\n```bash\nwonda edit video --operation merge --media $CLIP1,$CLIP2,$CLIP3 --wait -o merged.mp4\n```\n\nMedia order = playback order. Up to 5 clips.\n\n### Split scenes / keep a specific scene\n\nTwo modes — pick by intent:\n\n```bash\n# Keep a specific scene (split mode) — splits into scenes, auto-selects one\nwonda edit video --operation splitScenes --media $VID_MEDIA \\\n  --params '{\"mode\":\"split\",\"threshold\":0.5,\"minClipDuration\":2,\"outputSelection\":\"last\"}' \\\n  --wait -o last-scene.mp4\n# outputSelection: \"first\", \"last\", or 1-indexed number (e.g. 2 for second scene)\n\n# Remove a scene (omit mode) — removes one scene, merges the rest\nwonda edit video --operation splitScenes --media $VID_MEDIA \\\n  --params '{\"mode\":\"omit\",\"threshold\":0.5,\"minClipDuration\":2,\"outputSelection\":\"first\"}' \\\n  --wait -o without-first.mp4\n# outputSelection: which scene to REMOVE\n```\n\nUse omit mode for \"remove frozen first frame\" (common with Sora videos). Use split mode for \"keep just scene X\".\n\n### Image editing (img2img)\n\n```bash\nMEDIA=$(wonda media upload ./photo.jpg --quiet)\nwonda generate image --model nano-banana-2 --prompt \"change the background to blue\" \\\n  --attach $MEDIA --aspect-ratio auto --wait -o edited.png\n```\n\nWhen editing an existing image, always use `--aspect-ratio auto` to preserve dimensions. The prompt should describe ONLY the edit, not the full image.\n\n### Background removal\n\n```bash\n# Image → use birefnet-bg-removal\nwonda generate image --model birefnet-bg-removal --attach $IMAGE_MEDIA --wait -o no-bg.png\n# Video → use bria-video-background-removal\nwonda generate video --model bria-video-background-removal --attach $VIDEO_MEDIA --wait -o no-bg.mp4\n```\n\nCRITICAL: Image and video background removal are different models. Never swap them.\n\n### Lip sync\n\n```bash\nwonda generate video --model sync-lipsync-v2-pro --attach $VIDEO_MEDIA,$AUDIO_MEDIA --wait -o synced.mp4\n```\n\n### Video upscale\n\n```bash\nwonda generate video --model topaz-video-upscale --attach $VIDEO_MEDIA \\\n  --params '{\"upscaleFactor\":2}' --wait -o upscaled.mp4\n```\n\n## Editor operations reference\n\n| Operation          | Inputs                      | Key Params                                                                    |\n| ------------------ | --------------------------- | ----------------------------------------------------------------------------- |\n| `animatedCaptions` | video_0                     | fontFamily, position, sizePercent, fontSizeScale, strokeWidth, highlightColor |\n| `textOverlay`      | video_0 + prompt            | fontFamily, position, sizePercent, fontSizeScale, strokeWidth                 |\n| `editAudio`        | video_0 + audio_0           | videoVolume (0-100), audioVolume (0-100)                                      |\n| `merge`            | video_0..video_4            | Handle order = playback order                                                 |\n| `overlay`          | video_0 (bg) + video_1 (fg) | position, resizePercent                                                       |\n| `splitScreen`      | video_0 + video_1           | targetAspectRatio (16:9 or 9:16)                                              |\n| `trim`             | video_0                     | trimStartMs, trimEndMs (milliseconds)                                         |\n| `splitScenes`      | video_0                     | mode (split/omit), threshold, outputSelection                                 |\n| `speed`            | video_0                     | speed (multiplier: 2 = 2x faster)                                             |\n| `extractAudio`     | video_0                     | Extracts audio track                                                          |\n| `reverseVideo`     | video_0                     | Plays backwards                                                               |\n| `skipSilence`      | video_0                     | maxSilenceDuration (default 0.3), padding (default 0.03)                      |\n| `imageCrop`        | video_0                     | aspectRatio                                                                   |\n\nValid textOverlay fonts: Inter, Montserrat, Bebas Neue, Oswald, TikTok Sans, Poppins, Raleway, Anton, Comic Cat, Gavency\nValid positions: top-left, top-center, top-right, center-left, center, center-right, bottom-left, bottom-center, bottom-right\n\n## Marketing & distribution\n\n```bash\n# Connected social accounts\nwonda accounts instagram\nwonda accounts tiktok\n\n# Analytics\nwonda analytics instagram\nwonda analytics tiktok\nwonda analytics meta-ads\n\n# Scrape competitors\nwonda scrape social --handle @nike --platform instagram --wait\nwonda scrape social-status <taskId>                   # Get results of a social scrape\nwonda scrape ads --query \"sneakers\" --country US --wait\nwonda scrape ads --query \"sneakers\" --country US --search-type keyword \\\n  --active-status active --sort-by impressions_desc --period last30d \\\n  --media-type video --max-results 50 --wait\nwonda scrape ads-status <taskId>                      # Get results of an ads search\n\n# Download a single reel or TikTok video\nSCRAPE=$(wonda scrape video --url \"https://www.instagram.com/reel/ABC123/\" --wait --quiet)\n# → returns scrape result with mediaId in the media array\n\n# Publish\nwonda publish instagram --media <id> --account <accountId> --caption \"New drop\"\nwonda publish instagram --media <id> --account <accountId> --caption \"...\" --alt-text \"...\" --product IMAGE --share-to-feed\nwonda publish instagram-carousel --media <id1>,<id2>,<id3> --account <accountId> --caption \"...\"\nwonda publish tiktok --media <id> --account <accountId> --caption \"New drop\"\nwonda publish tiktok --media <id> --account <accountId> --caption \"...\" --privacy-level PUBLIC_TO_EVERYONE --aigc\nwonda publish tiktok-carousel --media <id1>,<id2> --account <accountId> --caption \"...\" --cover-index 0\n\n# History\nwonda publish history instagram --limit 10\nwonda publish history tiktok --limit 10\n\n# Browse media library\nwonda media list --kind image --limit 20\nwonda media info <mediaId>\n```\n\n### X/Twitter\n\nCookie-based auth against X's internal GraphQL API. Supports reads, writes, and social graph.\n\n```bash\n# Auth setup (get cookies from DevTools → Application → Cookies → x.com)\nwonda x auth set --auth-token <auth_token> --ct0 <ct0>\nwonda x auth check\n\n# Read\nwonda x search \"sneakers\" -n 20                     # Search tweets\nwonda x user @nike                                   # User profile\nwonda x user-tweets @nike -n 20                      # User's recent tweets\nwonda x read <tweet-id-or-url>                       # Single tweet\nwonda x replies <tweet-id-or-url>                    # Replies to a tweet\nwonda x thread <tweet-id-or-url>                     # Full thread (author's self-replies)\nwonda x home                                         # Home timeline (--following for Following tab)\nwonda x bookmarks                                    # Your bookmarks\nwonda x likes                                        # Your liked tweets\nwonda x following @handle                            # Who a user follows\nwonda x followers @handle                            # A user's followers\nwonda x lists @handle                                # User's lists (--member-of for memberships)\nwonda x list-timeline <list-id-or-url>               # Tweets from a list\nwonda x news --tab trending                          # Trending topics (tabs: for_you, trending, news, sports, entertainment)\n\n# Write (uses internal API — use on secondary accounts)\nwonda x tweet \"Hello world\"                          # Post a tweet\nwonda x reply <tweet-id-or-url> \"Great point\"        # Reply\nwonda x like <tweet-id-or-url>                       # Like\nwonda x unlike <tweet-id-or-url>                     # Unlike\nwonda x retweet <tweet-id-or-url>                    # Retweet\nwonda x unretweet <tweet-id-or-url>                  # Unretweet\nwonda x follow @handle                               # Follow\nwonda x unfollow @handle                             # Unfollow\n\n# Maintenance\nwonda x refresh-ids                                  # Refresh cached GraphQL query IDs from X's JS bundles\n```\n\nAll paginated commands support: `-n <count>`, `--cursor`, `--all`, `--max-pages`, `--delay <ms>`.\n\n### LinkedIn\n\nCookie-based auth against LinkedIn's Voyager API. Supports search, profiles, companies, messaging, and engagement.\n\n```bash\n# Auth setup (get cookies from DevTools → Application → Cookies → linkedin.com)\nwonda linkedin auth set --li-at-value <li_at> --jsessionid-value <JSESSIONID>\nwonda linkedin auth check\n\n# Read\nwonda linkedin me                                    # Your identity\nwonda linkedin search \"data engineer\" --type PEOPLE  # Search (types: PEOPLE, COMPANIES, ALL)\nwonda linkedin profile johndoe                       # View profile (vanity name or URL)\nwonda linkedin company google                        # View company page\nwonda linkedin conversations                         # List message threads\nwonda linkedin messages <conversation-urn>           # Read messages in a thread\nwonda linkedin notifications -n 20                   # Recent notifications\nwonda linkedin connections                           # Your connections\n\n# Write\nwonda linkedin like <activity-urn>                   # Like a post\nwonda linkedin unlike <activity-urn>                 # Remove a like\nwonda linkedin send-message <conversation-urn> \"Hi!\" # Send a message\nwonda linkedin post \"Excited to announce...\"         # Create a post\nwonda linkedin delete-post <activity-id>             # Delete a post\n```\n\nPaginated commands support: `-n <count>`, `--start`, `--all`, `--max-pages`, `--delay <ms>`.\n\n### Reddit\n\nCookie-based auth (optional — many reads work unauthenticated). Supports search, feeds, users, posts, trending, and chat/DMs.\n\n```bash\n# Auth setup (get cookie from DevTools → Application → Cookies → reddit.com → reddit_session)\nwonda reddit auth set --session-value <jwt>\nwonda reddit auth check\n\n# Read (works without auth)\nwonda reddit search \"AI video\" --sort top --time week   # Search posts (sort: relevance, hot, top, new, comments)\nwonda reddit subreddit marketing                        # Subreddit info\nwonda reddit feed marketing --sort hot                  # Subreddit posts (sort: hot, new, top, rising)\nwonda reddit user spez                                  # User profile\nwonda reddit user-posts spez --sort top                 # User's posts\nwonda reddit user-comments spez                         # User's comments\nwonda reddit post <id-or-url> -n 50                     # Post with comments\nwonda reddit trending --sort hot                        # Popular/trending posts\n\n# Read (requires auth)\nwonda reddit home --sort best                           # Your home feed\n\n# Write (requires auth)\nwonda reddit submit marketing --title \"Great tool\" --text \"Check this out...\"  # Self post\nwonda reddit submit marketing --title \"Great tool\" --url \"https://...\"         # Link post\nwonda reddit comment <parent-fullname> --text \"Nice post!\"                     # Reply\nwonda reddit vote <fullname> --up                       # Upvote (--down, --unvote)\nwonda reddit subscribe marketing                        # Subscribe (--unsub to unsubscribe)\nwonda reddit save <fullname>                            # Save a post or comment\nwonda reddit unsave <fullname>                          # Unsave\nwonda reddit delete <fullname>                          # Delete your post or comment\n```\n\nPaginated commands support: `-n <count>`, `--after <cursor>`, `--all`, `--max-pages`, `--delay <ms>`.\n\n### Reddit chat / DMs\n\nDirect messaging via the Matrix protocol. Requires a separate chat token (different from the session cookie).\n\n```bash\n# Auth setup (get token from DevTools → Console → JSON.parse(localStorage.getItem('chat:access-token')).token)\nwonda reddit chat auth-set --token <matrix-token>\n\n# Read\nwonda reddit chat inbox                                  # List DM conversations with latest messages\nwonda reddit chat messages <room-id> -n 50               # Fetch messages from a room\nwonda reddit chat all-rooms                              # List ALL joined rooms (not limited to sync window)\n\n# Write\nwonda reddit chat send <room-id> --text \"Hey!\"           # Send a DM (mimics browser typing behavior)\n\n# Management\nwonda reddit chat accept-all                             # Accept all pending chat requests\nwonda reddit chat refresh                                # Force-refresh the Matrix chat token\n```\n\n**Important**: The chat token expires every ~24h. The CLI auto-refreshes on use, but if it expires fully, re-run `auth-set`. Rate limit DM sends to 15-20/day with varied text to avoid detection. The `send` command includes a typing delay (1-5s) to mimic human behavior.\n\n## Workflow & discovery\n\n### Video analysis\n\nAnalyze a video to extract a composite frame grid (visual) and audio transcript (text). Useful for understanding video content before creating variations. Requires a **full account** (not anonymous) and costs credits based on video duration (ElevenLabs STT pricing).\n\nIf the video was just uploaded and is still normalizing, the CLI auto-retries until the media is ready.\n\n```bash\n# Analyze a video — returns composite grid image + transcript\nANALYSIS_JOB=$(wonda analyze video --media $VIDEO_MEDIA --wait --quiet)\n\n# The job output contains:\n# - compositeGrid: image showing 24 evenly-spaced frames\n# - transcript: full text of any speech\n# - wordTimestamps: word-level timing [{word, start, end}]\n# - videoMetadata: {width, height, durationMs, fps, aspectRatio}\n\n# Download the composite grid for visual inspection\nwonda analyze video --media $VIDEO_MEDIA --wait -o /tmp/grid.jpg\n\n# Get just the transcript\nwonda analyze video --media $VIDEO_MEDIA --wait --jq '.outputs[] | select(.outputKey==\"transcript\") | .outputValue'\n```\n\n**Error handling**: 402 = insufficient credits (use `wonda topup`), 409 = media still processing (CLI auto-retries).\n\n### Chat (AI assistant)\n\nInteractive chat sessions for content creation — the AI handles generation, editing, and iteration.\n\n```bash\nwonda chat create --title \"Product launch\"            # New session\nwonda chat list                                       # List sessions (--limit, --offset)\nwonda chat messages <chatId>                          # Get messages\nwonda chat send <chatId> --message \"Create a UGC reaction video\"\nwonda chat send <chatId> --message \"Edit it\" --media <id>\nwonda chat send <chatId> --message \"...\" --aspect-ratio 9:16 --quality-tier max\nwonda chat send <chatId> --message \"...\" --style <styleId>\nwonda chat send <chatId> --message \"...\" --passthrough-prompt  # Use exact prompt, no AI enhancement\n```\n\n### Jobs & runs\n\n```bash\nwonda jobs get inference <id>                         # Inference job status\nwonda jobs get editor <id>                            # Editor job status\nwonda jobs get publish <id>                           # Publish job status\nwonda jobs wait inference <id> --timeout 20m          # Wait for completion\nwonda run get <runId>                                 # Run status\nwonda run wait <runId> --timeout 30m                  # Wait for run completion\n```\n\n### Discovery\n\n```bash\nwonda models list                                     # All available models\nwonda models info <slug>                              # Model details and params\nwonda operations list                                 # All editor operations\nwonda operations info <operation>                     # Operation details\nwonda capabilities                                    # Full platform capabilities\nwonda pricing list                                    # Pricing for all models\nwonda pricing estimate --model seedance-2 --prompt \"...\" # Cost estimate\nwonda style list                                      # Available visual styles\nwonda topup --amount 20                               # Top up credits ($5 minimum, opens Stripe)\n```\n\n### Editing audio & images\n\n```bash\n# Edit audio\nwonda edit audio --operation <op> --media <id> --wait -o out.mp3\n\n# Edit image (crop, etc.)\nwonda edit image --operation imageCrop --media <id> \\\n  --params '{\"aspectRatio\":\"9:16\"}' --wait -o cropped.png\n```\n\n### Alignment (timestamp extraction)\n\n```bash\nwonda alignment extract-timestamps --model <model> --attach <mediaId> --wait\n```\n\n## Quality tiers\n\n| Tier     | Image Model       | Resolution | Video Model              | When                                                                                           |\n| -------- | ----------------- | ---------- | ------------------------ | ---------------------------------------------------------------------------------------------- |\n| Standard | `nano-banana-2`   | 1K         | `seedance-2` (high, 5s)  | Default. High quality, good for iteration.                                                     |\n| High     | `nano-banana-pro` | 1K         | `seedance-2` (high, 15s) | Longer duration. Also offer `sora2pro` for different style.                                    |\n| Max      | `nano-banana-pro` | 4K         | `seedance-2` (high, 15s) | Best possible. Also offer `sora2pro` (1080p). Use `--params '{\"resolution\":\"4K\"}'` for images. |\n\n## Troubleshooting\n\n| Symptom                          | Likely Cause                                  | Fix                                                    |\n| -------------------------------- | --------------------------------------------- | ------------------------------------------------------ |\n| Sora rejected image              | Person in image                               | Switch to `kling_3_pro_i2v`                            |\n| Video adds objects not in source | Motion prompt describes elements not in image | Simplify to camera movement and atmosphere only        |\n| Text unreadable in video         | AI tried to render text in generation         | Remove text from video prompt, use textOverlay instead |\n| Hands look wrong                 | Complex hand actions in prompt                | Simplify to passive positions or frame to exclude      |\n| Style inconsistent across series | No shared anchor                              | Use same reference image via `--attach`                |\n| Changes to step A not in step B  | Stale render                                  | Re-run all downstream steps                            |\n\n## Timing expectations\n\n- Image: 30s - 2min\n- Video (Sora): 2 - 5min\n- Video (Sora Pro): 5 - 10min\n- Video (Veo 3.1): 1 - 3min\n- Video (Kling): 3 - 8min\n- Video (Grok): 2 - 5min\n- Music (Suno): 1 - 3min\n- TTS: 10 - 30s\n- Editor operations: 30s - 2min\n- Lip sync: 1 - 3min\n- Video upscale: 2 - 5min\n\n## Error recovery\n\n- **Unknown model**: `wonda models list`\n- **No API key**: `export WONDERCAT_API_KEY=sk_...` or `wonda config set api-key sk_...`\n- **Job failed**: `wonda jobs get inference <id>` for error details\n- **Bad params**: `wonda models info <slug>` for valid params\n- **Timeout**: `wonda jobs wait inference <id> --timeout 20m`\n- **Insufficient credits (402)**: `wonda topup --amount 10` to add credits via Stripe\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7bsad3k2yghw518mb2h3hp6d837qkt\",\n  \"slug\": \"wonda\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1775987045842\n}","readmeExcerpt":"Skill: Wonda Owner: degausai Summary: Using the Wonda CLI to generate images, videos, music, and audio from the terminal — plus LinkedIn, Reddit, and X/Twitter research and automation Tags: latest:1.2.0 Version history: v1.2.0 | 2026-04-22T15:37:24.669Z | user Added - Local ffmpeg command routing — 8 new content skills for on-device video finishing (trims, captions, social reformat, scene splits, silence cuts, frame ","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# npm\nnpm i -g @degausai/wonda\n\n# Homebrew\nbrew tap degausai/tap && brew install wonda"},{"language":"bash","snippet":"wonda device stream <device-id>\n# → { \"streamUrl\": \"wss://…\", \"playerUrl\": \"https://…\", \"deviceType\": \"social\" }"},{"language":"bash","snippet":"wonda brand                                                    # Brand identity, colors, products, audience\nwonda analytics instagram                                      # What content performs well\nwonda scrape social --handle @competitor --platform instagram --wait  # Competitive research (if relevant)\n\n# Cross-platform research (if relevant)\nwonda x search \"topic OR keyword\"                              # Find conversations on X/Twitter\nwonda x user-tweets @competitor                                # Competitor's recent tweets\nwonda reddit search \"topic\" --sort top --time week             # Reddit discussions\nwonda reddit feed marketing --sort hot                         # Subreddit trends\nwonda linkedin search \"topic\" --type COMPANIES                 # LinkedIn company/people research\nwonda linkedin profile competitor-vanity-name                  # LinkedIn profile intel"},{"language":"bash","snippet":"wonda skill list                                # Browse all content skills\nwonda skill get <slug>                          # Full step-by-step guide for a skill"},{"language":"bash","snippet":"wonda media download <mediaId> -o ./input.mp4"},{"language":"bash","snippet":"which ffmpeg\nwhich ffprobe\nffmpeg -version\nffprobe -v error -show_format -show_streams -of json ./input.mp4"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: wonda-cli\ndescription: Using the Wonda CLI to generate images, videos, music, and audio from the terminal — plus LinkedIn, Reddit, and X/Twitter research and automation\nversion: 1.2.0\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - WONDERCAT_API_KEY\n      anyBins:\n        - wonda\n    primaryEnv: WONDERCAT_API_KEY\n    install:\n      - kind: node\n        package: \"@degausai/wonda\"\n        bins: [wonda]\n      - kind: brew\n        formula: degausai/tap/wonda\n        bins: [wonda]\n    homepage: https://wonda.sh\n    emoji: \"🎬\"\n---\n\n# Wonda CLI\n\nWonda CLI is a content creation toolkit for terminal-based agents. Use it to generate images, videos, music, and audio; edit and compose media; publish to social platforms; and research/automate across LinkedIn, Reddit, and X/Twitter.\n\n## Install\n\nIf `wonda` is not found on PATH, install it first:\n\n```bash\n# npm\nnpm i -g @degausai/wonda\n\n# Homebrew\nbrew tap degausai/tap && brew install wonda\n```\n\n## Setup\n\n- **Auth**: `wonda auth login` (opens browser, recommended) or set `WONDERCAT_API_KEY` env var\n- **Verify**: `wonda auth check`\n\n### Access tiers\n\nNot all commands are available to every account type:\n\n| Tier                                        | Access                                                                                                                           |\n| ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |\n| **Anonymous** (temporary account, no login) | Media upload/download, editing (`video/edit`, `image/edit`, `audio/edit`), transcription, social publishing, scraping, analytics |\n| **Free** (logged in, Basic/Free plan)       | Everything above + **generation** (`image/generate`, `video/generate`, etc.), styles, recipes, brand                             |\n| **Paid** (Plus, Pro, or Absolute plan)      | Everything above + **video analysis** (requires credits), **skill commands** (`wonda skill install/list/get`)                    |\n\nIf a command returns a `403` error, check your plan at https://app.wondercat.ai/settings/billing.\n\n### Social signups (Instagram, TikTok, etc.)\n\nDrive them with the `wonda device` primitives + a throwaway mailbox from `wonda email`. The screenshot → decide → tap/type/swipe loop is how these flows work — there's no shortcut command, and that's fine: social apps change their UI constantly and any canned flow would drift faster than you could maintain it.\n\nStandard loop:\n\n1. `wonda email account create --random` → save `{email, password}`.\n2. `wonda device create` → pick a `ready` device (poll `wonda device get <id> --fields status`).\n3. `wonda device launch <device-id> com.instagram.android` (or `com.zhiliaoapp.musically` for TikTok). Fall back to `wonda device open-url` if you'd rather start in the web flow.\n4. Loop: `wonda device screenshot <device-id> > s.json` → decode the base64 PNG → read → pick an action → `t"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7bsad3k2yghw518mb2h3hp6d837qkt\",\n  \"slug\": \"wonda\",\n  \"version\": \"1.2.0\",\n  \"publishedAt\": 1776872244669\n}"},{"path":"skill-card.md","content":"## Description:\n\nWonda CLI helps terminal-based agents generate and edit images, videos, music, and audio, plus research and automate activity across LinkedIn, Reddit, and X/Twitter.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[degausai](https://clawhub.ai/user/degausai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agent operators use this skill to route Wonda CLI commands for media generation, editing, social research, social publishing, and local finishing workflows. It is intended for agents that need concise command guidance for producing media assets or interacting with connected social accounts.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can guide agents through broad external social actions, including publishing, messaging, following, deleting, and account workflows.\n\nMitigation: Require explicit human confirmation before posting, messaging, following, deleting, accepting terms, granting permissions, or making other externally visible account changes.\n\nRisk: The security summary flags stealthy social-account automation and the guidance calls out disposable signup, internal API, and detection-avoidance workflows.\n\nMitigation: Avoid stealth, disposable signup, internal API, and detection-avoidance workflows; prefer official account APIs and hand off rate-limit or verification challenges to a human.\n\nRisk: Use requires Wonda credentials and may operate on connected social accounts.\n\nMitigation: Run in an isolated environment, protect WONDERCAT_API_KEY as a secret, pin dependencies where practical, and grant only the account access needed for the task.\n\n## Reference(s):\n\n- [Wonda homepage](https://wonda.sh)\n- [ClawHub skill page](https://clawhub.ai/degausai/skills/wonda)\n- [Publisher profile](https://clawhub.ai/user/degausai)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with CLI command examples and JSON-oriented command outputs]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Commands may create media files, social posts, messages, account actions, and local analysis artifacts when executed.]\n\n## Skill Version(s):\n\n1.2.0 (source: frontmatter and server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Using the Wonda CLI to generate images, videos, music, and audio from the terminal — plus LinkedIn, Reddit, and X/Twitter research and automation Skill: Wonda Owner: degausai Summary: Using the Wonda CLI to generate images, videos, music, and audio from the terminal — plus LinkedIn, Reddit, and X/Twitter research and automation Tags: latest:1.2.0 Version history: v1.2.0 | 2026-04-22T15:37:24.669Z | user Added - Local ffmpeg command routing — 8 new content skills for on-device video finishing (trims, captions, social reformat, scene splits, silence cuts, frame","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1259,"uniquenessScore":54,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T01:55:29.132Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T01:55:29.132Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T01:28:40.994Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}