{"id":67517,"plugin_id":"plugin_asdk_app_6ac64f4127ac8191a614f4860d640c20","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-28T13:09:02.419Z","digest":"19e210aec1a0e4fc83d94bc9fd96c7b5e2a409ec4685318eec00989efa5148fd","against":null,"payload":{"description":"Build a 10-hook creative brief for a brand by selecting diverse hook archetypes from a curated template bank, filling them in specifically for the brand, pairing each hook with matching Recharm b-roll clip picks (no talking heads — Actor B-Roll and No Actor only), and saving a shareable brief designed for voiceover-led ads. Use this skill whenever a user wants to generate hook ideas, explore ad angles, or build a hook-focused brief for a brand — even if they say \"give me hooks\", \"what hooks should we test\", \"generate 10 ad openers\", or \"I need hook options for [brand]\". Always use this when the goal is finding hooks + b-roll footage for a VO-driven ad.\n","included_files":[{"relative_path":"references/hook-templates.md","size_in_bytes":36979}],"name":"hook-explorer","skill_md_contents":"---\nname: \"hook-explorer\"\ndescription: >\n  Build a 10-hook creative brief for a brand by selecting diverse hook archetypes from a curated template bank, filling them in specifically for the brand, pairing each hook with matching Recharm b-roll clip picks (no talking heads — Actor B-Roll and No Actor only), and saving a shareable brief designed for voiceover-led ads. Use this skill whenever a user wants to generate hook ideas, explore ad angles, or build a hook-focused brief for a brand — even if they say \"give me hooks\", \"what hooks should we test\", \"generate 10 ad openers\", or \"I need hook options for [brand]\". Always use this when the goal is finding hooks + b-roll footage for a VO-driven ad.\n---\n\n# Hook Explorer\n\nYou generate 10 diverse, brand-specific hooks for a given brand, match each hook with b-roll clips from the brand's Recharm library, and save a shareable brief where each section is one hook with its opening visuals and voiceover line. All clip picks are b-roll only — no talking heads or speaking actors. This brief is designed for voiceover-led ads where the hook line is spoken over footage, not delivered on camera.\n\nThe Recharm MCP server (`recharm`) is available in this plugin.\n\n**Key rules (same as brief-creator):**\n\n- Call `list_labels` once at the start — reuse for the whole workflow.\n- Do NOT build HTML. Hand `save_brief` a structured v2 package; the server renders everything.\n- Call `save_brief` exactly once after all clip picks are final.\n- Only use label values returned by `list_labels` — never invent them.\n- Do not paginate `search_clips_visually` — use first page only.\n- Refer to clips in user-facing output as `clipName` = `<clipSymbol> - <sceneType>`.\n\n---\n\n## Step 1 — Gather brand context\n\nAsk the user for (or infer from what they've already provided):\n\n1. **Brand slug** — e.g. `magic_spoon`, `hike_footwear`. If unknown, call `list_brands` and have them pick.\n2. **Product / SKU** (optional) — a specific product or flavor to feature, if any.\n3. **Target audience** — who the hooks are for (e.g. \"women 25–45 interested in fitness\", \"busy parents\").\n4. **Tone** — one or two words: funny, sincere, bold, educational, aspirational, etc.\n5. **Any hook styles to include or avoid** — e.g. \"no skeptic hooks\", \"definitely include a listicle hook\".\n\nIf the user's message already contains enough context, proceed without asking — state your assumptions at the top of your output.\n\n---\n\n## Step 2 — Fetch available labels\n\nCall `list_labels(brandName)`. Keep the full result for the rest of the workflow.\n\nNote these categories for use in search filters later:\n\n- **Scene Type** — e.g. `Hook`, `Visual Hook`, `Product Shot`, `Bowl Shot`, `CTA`.\n- **Actor Type** — whether a person appears and whether they're speaking. Identify the exact label values for `No Actor` and `Actor B-Roll` from the returned labels — these are the only two Actor Type values used in this skill.\n- **Product** — specific SKUs or flavors. Use these when the user named a specific product.\n\n---\n\n## Step 3 — Select and write 10 hooks\n\nRead `references/hook-templates.md`. It contains 20 hook categories with 400+ templates across a wide range of psychological angles.\n\nSelect **10 hooks** spanning at least **7 different categories** — variety is the whole point. Fill each template in concretely for the brand: replace every placeholder (`[pain point]`, `[outcome]`, `[product]`, etc.) with specific language that fits this brand and audience. Don't leave generic placeholders — a hook like \"Stop scrolling if you suffer from energy crashes\" beats \"Stop scrolling if you suffer from [problem]\".\n\nFor each hook, produce:\n\n- **Hook name** — a short label, e.g. \"Skeptic Test\", \"Bold Claim\", \"FOMO Scroll-Stop\"\n- **Hook line** — the filled-in, verbatim hook text the creator or VO would say or show on screen\n- **Visual opening** — 1 sentence describing what should be on screen during this hook (this drives the Recharm search)\n- **Voiceover / on-screen text** — the hook line itself, formatted as it would appear (this becomes the `description` field in the brief)\n\nShow the 10 hooks to the user and confirm they're happy with the selection before searching for clips. If they want swaps, adjust and re-confirm.\n\n---\n\n## Step 4 — Search for clips, hook by hook\n\nFor each of the 10 hooks, generate **2–3 search queries** based on the visual opening from Step 3. Each query should describe what is literally on screen — concrete and visual, not abstract. Run all queries for all hooks in parallel (one big batch of calls).\n\n### Filter rules\n\n- **ActorType (hard constraint):** Every single query must include an Actor Type filter restricting results to **`No Actor` and `Actor B-Roll` only**. Apply both values together on every search — no exceptions. This brief is VO-only; talking heads and speaking actors are never appropriate here.\n- **Scene Type:** Use `Hook` or `Visual Hook` for most hooks. For product close-up hooks, use `Product Shot`. For lifestyle/POV hooks, omit Scene Type and let the text query do the work.\n- **Product:** Only apply a Product filter when the hook is specifically about a product or flavor the user named.\n- Default to **at most 1 additional label category** per query beyond the ActorType constraint.\n\nFor each hook, pick **2–4 clips** by lowest `cosineDistance`. Use at most one clip per `rawVideoPublicId` within a hook to ensure visual variety.\n\n---\n\n## Step 5 — Assemble and save the brief\n\nBuild the v2 `save_brief` package. The brief has 10 scenes — one per hook:\n\n- `title`: e.g. `\"Magic Spoon · 10 Hook Options · Women 25-45\"`\n- Each `scene`:\n  - `name`: the hook name (e.g. \"FOMO Scroll-Stop\")\n  - `description`: the hook line + voiceover, formatted as:\n    ```\n    Hook: \"[verbatim hook line]\"\n    VO: \"[voiceover or on-screen text]\"\n    Visual: [1-sentence visual opening description]\n    ```\n  - `clips`: the picked clips for this hook's opening visual\n\nCall `save_brief` exactly once:\n\n```\nsave_brief(brandName, {\n  version: \"v2\",\n  title: \"<brief title>\",\n  scenes: [\n    {\n      name: \"<hook name>\",\n      description: \"<hook line + VO + visual note>\",\n      clips: [\n        { clipSymbol: \"<symbol>\", searchString: \"<query phrase>\", filters: { <category>: [\"<label>\"] } }\n      ]\n    }\n    // ... 10 scenes total\n  ]\n})\n```\n\nSurface the returned `url` to the user as the shareable brief link.\n\n---\n\n## Step 6 — Wrap-up summary\n\nAfter saving, give the user a short summary:\n\n- Which hook categories are represented\n- Any hooks where clip matches were weak (custom shoot may be needed)\n- Standout clip picks worth noting\n- Suggested next step (e.g. \"pick 2–3 hooks to test as full briefs using brief-creator\")\n\n---\n\n## What not to do\n\n- Don't pick two hooks from the same category unless the user asks for it.\n- Don't leave template placeholders unfilled — every hook must be specific to the brand.\n- Don't invent label values — only use ones from `list_labels`.\n- Don't over-filter searches — 1 label category beyond the ActorType constraint per query.\n- Don't call `save_brief` more than once.\n- Don't build HTML or construct clip URLs yourself.\n- Don't skip Step 3 confirmation — the user should approve the hooks before you search.\n- Don't pick Actor Speaking or any talking-head clips — this brief is VO-only, b-roll only.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}