← RecharmCONTENT HISTORY

Update to Recharm

Snapshot Oct 28, 2026 · 13:09 UTC · version 0.1.20

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save Recharm and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Build a Recharm footage brief for a UNITY ad — built on shared identity: not 'people like you use this' but 'this is ours; we made it for us.' Use whenever a user provides a brief, concept, or ad idea framed around tribe, family, community, subculture, co-creation, 'made by us for us', hometown pride, or in-group belonging. Searches the user's Recharm clip library and produces a shareable shot-by-shot brief with clip picks. Trigger on \"unity\", \"tribe ad\", \"community ad\", \"our people\", \"if you know you know\", \"IYKYK\", \"made by runners for runners\", \"for my fellow\", \"join the family\", or any creative where buying feels like belonging. Distinct from liking (affection between individuals) and social proof (evidence from strangers) — unity is shared membership.\n",
  "included_files": [
    {
      "relative_path": "templates/brief.html",
      "size_in_bytes": 19664
    }
  ],
  "name": "unity-ad-brief",
  "skill_md_contents": "---\nname: \"unity-ad-brief\"\ndescription: >\n  Build a Recharm footage brief for a UNITY ad — built on shared identity: not 'people like you use this' but 'this is ours; we made it for us.' Use whenever a user provides a brief, concept, or ad idea framed around tribe, family, community, subculture, co-creation, 'made by us for us', hometown pride, or in-group belonging. Searches the user's Recharm clip library and produces a shareable shot-by-shot brief with clip picks. Trigger on \"unity\", \"tribe ad\", \"community ad\", \"our people\", \"if you know you know\", \"IYKYK\", \"made by runners for runners\", \"for my fellow\", \"join the family\", or any creative where buying feels like belonging. Distinct from liking (affection between individuals) and social proof (evidence from strangers) — unity is shared membership.\n---\n\n# Unity Ad Brief\n\nYou build a Recharm footage brief for a **unity** ad — one built on shared identity — not \"people like you use this\" but \"this is ours; we made it for us.\" Buying feels like belonging, not shopping.\n\nThe psychological engine: the deepest Cialdini lever: shared identity. People say yes to \"one of us.\" Family, hometown, subculture, profession, co-creation — when the brand credibly sits inside the viewer's \"we,\" the purchase becomes an act of membership. Distinct from liking (affection and similarity between individuals) and social proof (evidence from strangers): unity is *membership*, and the ad must speak insider fluently or it reads as pandering.\n\nThe Recharm MCP server (`recharm`) is available in this plugin. Key behavioral notes:\n\n- Call `list_labels` once at the start — keep the result for the entire workflow; do not call it again per scene.\n- Search hits from `search_clips_visually` already include `posterUrl` and `previewUrl` — use them directly. Only call `get_clip_poster_image` as a fallback if a hit is missing `posterUrl`.\n- The template builds \"View clip\" and \"Find similar\" links itself from `clipSymbol`, `brand`, and `searchString` — you don't construct any Recharm app URLs.\n- Do not paginate `search_clips_visually` — use the first page only.\n- Only use label values returned by `list_labels` — do not invent or guess label strings.\n- Do **NOT** call `save_brief`. Instead, render the brief using `templates/brief.html` and upload via `save_html_file`.\n\n**Always refer to a clip in user-facing output as its `clipName` — `<clipSymbol> - <sceneType>`** (e.g. \"AB - Product Reveal\"). If `sceneType` is null, fall back to just the `clipSymbol`.\n\nFollow the steps below in order.\n\n---\n\n## Step 1 — Confirm the brand, hook, and content constraints\n\n**Brand:** If the user already named a brand slug (e.g. `magic_spoon`, `hike_footwear`), use it. Otherwise call `list_brands` and ask the user to pick. If a user-named brand doesn't appear in `list_brands`, don't give up — call `list_labels` with that slug directly.\n\n**Hook selection:** Choose the best-fitting unity hook pattern for the brief. If the user provided a specific hook line, use it and map it to the closest pattern. Make your pick, write a one-sentence rationale, and note why you're rejecting the others — you'll need all of this for the final brief output.\n\n**Unity hook patterns:**\n- *In-Group Call* — \"This is for my fellow [runners/nurses/new parents].\"\n- *IYKYK* — \"If you know, you know.\"\n- *Made-By-Us* — \"Made by [runners], for [runners]. Nobody else would get it.\"\n- *We Don't* — \"Our people don't do [mainstream compromise].\"\n- *Family Table* — \"In this house, breakfast is sacred.\"\n- *Roots Nod* — \"For everyone who grew up on [shared memory] — we fixed it.\"\n- *Tribe Test* — \"You can spot one of us from across the gym.\"\n- *Co-Creation* — \"You asked. We built it. It's yours too.\"\n- *Insider Language* — \"[Niche slang] — if that made sense, this is for you.\"\n- *Belonging Promise* — \"You've found your people. Here's the handshake.\"\n\n**ActorType preference:** Unity ads need footage of people together — groups, families, teams sharing rituals; solo shots undercut the lever. Confirm with the user:\n- **No Actor** — purely product/environment footage\n- **Actor B-roll** — hands, partial body, people in motion (recommended)\n- **Both** (No Actor + Actor B-roll) — good default\n- **No filter** — include all footage\n\n**Brand-fit rationale:** While confirming, form a view on *why unity will work for this specific brand* — what \"we\" can the brand credibly claim (a subculture, lifestyle, family ritual, community it genuinely belongs to), and does it speak that group's language fluently? You'll write this into the brief's `why.brandFit` field in Step 6 so anyone opening the brief understands the strategy, not just the shot list.\n\n---\n\n## Step 2 — Fetch available labels\n\nCall `list_labels(brandName)` and keep the result for the rest of the workflow. Note:\n- **Scene Type**: `Hook`, `Visual Hook`, `CTA`, `Product Benefits`, `Product Shot`, `Lifestyle`, `Bowl Shot`, `Box Shot`, etc.\n- **Actor Type**: whether a person appears and whether they are speaking.\n- **Product**: maps to specific flavors or SKUs.\n\n---\n\n## Step 3 — Section the brief using the unity narrative arc\n\nBreak the brief into **10–14 scenes** using this arc:\n\n| Arc segment | Typical scenes | Purpose |\n|---|---|---|\n| **Hook** | 1–2 | Name the tribe — the viewer feels seen as a member, not targeted as a customer. |\n| **Tribe Portrait** | 2–3 | The in-group in its element — rituals, shared spaces, insider moments only members recognize. |\n| **Belonging Bridge** | 1–2 | The shared value or memory that makes membership real — the \"only we get this\" beat. |\n| **Product Reveal** | 1–2 | The product as tribe artifact — ours, built for how we actually live. |\n| **Benefit Payoff** | 2–3 | Benefits framed through the group's values and standards — what *we* care about, delivered. |\n| **We Moment** | 1 | The togetherness payoff — the member thriving among their people, product in hand. |\n| **CTA** | 1 | \"Join the family\" / \"Made for us — get yours.\" |\n\nFor each scene capture:\n- `name`: short heading (e.g. \"Hook — family gathered around the breakfast table\")\n- `description`: 1–2 sentences describing what appears on screen\n- `arcSegment`: one of the 7 arc segment names above (must match exactly — the HTML uses these for color-coding)\n\n**If the user supplied an explicit scene breakdown, use it. Otherwise show the proposed breakdown and wait for confirmation.**\n\n---\n\n## Step 4 — Build search queries\n\nFor each scene, generate **3–5 search queries** — short visual phrases (under ~8 words) describing what is literally on screen, not abstract concepts. Vary phrases to cover different subjects, framings, and environments. You need enough query diversity to surface **4 strong, visually distinct clips per scene** — a single query rarely gets you there.\n\n### Filter rules\n- Apply ActorType labels to every query (baseline, not counted toward the category limit).\n- Add at most **1 additional label category** per query (Scene Type or Product).\n- Use Scene Type matching the arc segment: Hook/Visual Hook for the hook; Lifestyle/Product Benefits for the middle segments; Product Shot for the reveal; CTA for the close.\n- Apply Product label only for scenes where the specific SKU is the hero.\n\n---\n\n## Step 5 — Search and collect clip media\n\n**Run all first-round queries in parallel** (all 3–5 queries per scene in one batch). Then fill gaps with follow-up queries only where needed.\n\nFor each scene:\n1. Call `search_clips_visually` with `brandName`, `query`, and any `filters`.\n2. Pool the results from all of the scene's queries and pick the **4 best clips** — rank primarily by lowest `cosineDistance`, but prefer visual variety (different framings, subjects, environments) over four near-identical picks.\n3. Deduplicate by `clipSymbol`. Use **at most one clip per `rawVideoPublicId`** — clips sharing a source video look near-identical; keep the best (lowest cosineDistance).\n4. If a scene has fewer than 4 strong matches after the first round, run 1–2 follow-up queries with different phrasings before settling for fewer. A scene may ship with 2–3 clips if the library is genuinely thin — never pad with weak matches (cosineDistance well into the \"weak\" range) just to hit 4.\n5. Take `posterUrl` and `previewUrl` directly from the search hit. If a hit is missing `previewUrl` and has a `rawVideoPublicId`, derive it: `https://res.cloudinary.com/recharm/video/upload/so_0,eo_4,q_auto,f_auto/{rawVideoPublicId}.mp4`.\n6. Track per clip: `clipSymbol`, `clipName`, `posterUrl`, `previewUrl`, `cosineDistance`, `searchString`, `filters`. `searchString` must be the **exact query string** used in the `search_clips_visually` call that surfaced the clip — the template uses it to build the \"Find similar\" link, which reopens the full visual-search result set (including the clips you considered but rejected). The template also builds each \"View clip\" link from `clipSymbol`, so `clipSymbol` must be exactly as returned.\n7. Scenes with no strong matches → `clips: []` (renders as \"custom shoot needed\" gap in the HTML).\n\n**Arc-specific search guidance:**\n- **Hook:** Group-identity signals — matching gear, team energy, family tables, community spaces.\n- **Tribe Portrait:** Ritual footage — group workouts, family breakfasts, shared routines, insider gestures.\n- **Belonging Bridge:** Intimate connection beats — knowing glances, hand-offs, shared meals, generational moments.\n- **Product Reveal / Benefit / CTA:** Product Shot, Benefits, CTA Scene Types; favor clips where the product appears inside group life, not isolated.\n\n---\n\n## Step 6 — Assemble the JSON data payload\n\nBuild this object — the HTML template renders everything from it:\n\n```json\n{\n  \"title\": \"<e.g. 'Made For Our Mornings · Magic Spoon · Frosted'>\",\n  \"brand\": \"<brandName slug>\",\n  \"generatedAt\": \"<YYYY-MM-DD>\",\n  \"filterChips\": [\n    { \"category\": \"Actor Type\", \"value\": \"Actor B-Roll\" },\n    { \"category\": \"Actor Type\", \"value\": \"No Actor\" },\n    { \"category\": \"Product\", \"value\": \"Frosted\" },\n    { \"category\": \"Scenes\", \"value\": \"12\" }\n  ],\n  \"why\": {\n    \"explainer\": \"<2–3 sentences: what a unity ad is and the mechanism that makes it convert — people say yes to \"one of us\" — shared identity turns buying into an act of belonging. Written for someone who has never heard the term.>\",\n    \"brandFit\": \"<2–3 sentences: why this mechanism fits THIS brand specifically — its category, how its buyers decide, and the context that makes the unity angle credible.>\"\n  },\n  \"hook\": {\n    \"pattern\": \"<Pattern name, e.g. 'Made-By-Us'>\",\n    \"line\": \"<The actual hook line, e.g. 'Made by breakfast people, for breakfast people. Nobody else would get it.'>\",\n    \"rationale\": \"<1–2 sentences: why this hook fits this brand and audience>\"\n  },\n  \"rejectedHooks\": [\n    {\n      \"pattern\": \"<Pattern name>\",\n      \"line\": \"<What the hook line would have been>\",\n      \"reason\": \"<1 sentence — specific reason this pattern is a weaker fit here>\"\n    }\n  ],\n  \"actorType\": \"<e.g. 'Both (Actor B-Roll + No Actor)'>\",\n  \"scenes\": [\n    {\n      \"name\": \"<Scene heading>\",\n      \"arcSegment\": \"<Exactly one of: Hook | Tribe Portrait | Belonging Bridge | Product Reveal | Benefit Payoff | We Moment | CTA>\",\n      \"description\": \"<1–2 sentences of on-screen description>\",\n      \"clips\": [\n        {\n          \"clipSymbol\": \"<symbol>\",\n          \"clipName\": \"<clipName from search result>\",\n          \"posterUrl\": \"<posterUrl from the search hit>\",\n          \"previewUrl\": \"<previewUrl from the search hit, or derived from rawVideoPublicId, or null>\",\n          \"cosineDistance\": 0.142,\n          \"searchString\": \"<exact query phrase used to find this clip>\",\n          \"filters\": { \"<category>\": [\"<label>\"] }\n        }\n      ]\n    }\n  ]\n}\n```\n\nNotes:\n- `filterChips` is what renders under the title — one chip per applied footage filter. Include every ActorType label applied, any Product/Scene Type filters used broadly, and a `Scenes` count chip. Keep values short (chip-sized) — this replaces the old prose subtitle.\n- `why.explainer` and `why.brandFit` render as a prominent \"Why this approach\" panel — write them for a reader who has never heard of the unity lever and needs to be convinced it fits their brand. Target **4 clip picks per scene** in `clips`.\n- Include **at least 5 rejected hooks** in `rejectedHooks` with specific, brand-aware reasons so the user understands the creative logic behind the chosen pattern.\n\n---\n\n## Step 7 — Render and save the brief\n\n1. **Read** `templates/brief.html` (in this skill's directory).\n2. **Replace** the exact string `__BRIEF_DATA_JSON__` with the JSON payload (serialized as a single string — no pretty-printing needed, just ensure it is valid JSON). After serializing, replace every `</` with `<\\/` in the JSON string — the payload lives inside an inline `<script>` tag, and an unescaped `</` in any text field would terminate the script and break the whole page.\n3. **Call the Recharm MCP `save_html_file` tool** with:\n   - `brandName`: the brand slug used throughout this workflow\n   - `html`: the fully rendered HTML string (max 20 MB)\n\n   This uploads the HTML to Recharm's public-share storage and returns a shareable `url`.\n4. **Surface the `url`** to the user.\n5. Give a short **summary**: custom-shoot gaps, scenes that shipped with fewer than 4 clips, arc segments with thin library coverage, any weak-match clips flagged.\n\n---\n\n## What not to do\n\n- Don't confuse unity with liking or social proof — liking is affection for a person, proof is evidence from strangers; unity is shared membership. If the creative can't credibly claim \"we,\" use liking-ad-brief instead.\n- Don't fake insider fluency — get the tribe's language, rituals, and details right or the ad reads as pandering and backfires.\n- Don't reveal the product before the Belonging Bridge — protect the tension arc.\n- Don't settle for 1 clip per scene — the brief is a menu, not a lock; editors need 4 options per scene to cut alternates.\n- Don't pad to 4 clips with weak matches — 2–3 strong picks beat 4 with a dud.\n- Don't drop `posterUrl`/`previewUrl` from search hits — the template needs them for thumbnails and hover previews.\n- Don't add download links — raw downloadable video URLs aren't available; \"View clip\" and \"Find similar\" open in the Recharm app.\n- Don't call `save_brief` — use the Recharm MCP `save_html_file` tool with `brandName` + `html`.\n- Don't use label values not returned by `list_labels`.\n- Don't over-filter — default to 1 label category per query beyond ActorType.\n- Don't invent `clipSymbol`s — only use ones returned by `search_clips_visually`.\n- Don't refer to a clip by `clipSymbol` alone — always use `clipName` in user-facing output.\n- Don't paraphrase `searchString` — it must be the exact query used, or the visual-search results link in the brief won't reproduce the search.\n- Don't call `save_html_file` more than once per brief — each call mints a new URL.\n- Don't give up if a brand doesn't appear in `list_brands` — try `list_labels` directly.\n"
}

SHA-256 of public snapshot: d5896eaefa2d6393fdd35606a5ab2cdb9ab4e2154d72cea82a97120b85bd78c3