← RecharmCONTENT HISTORY
WHAT CHANGED
Update to Recharm
Snapshot Oct 28, 2026 · 13:09 UTC · version 0.1.20
Collection source: downloaded plugin package.
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 JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Build a Recharm footage brief for a SCARCITY ad — built on limited supply, limited time, or exclusivity: what's rare is wanted, and what's about to run out gets bought now. Use whenever a user provides a brief, concept, or ad idea framed around sell-outs, low stock, countdowns, limited drops, waitlists, seasonal windows, or last-chance urgency. Searches the user's Recharm clip library and produces a shareable shot-by-shot brief with clip picks. Trigger on \"scarcity\", \"limited edition\", \"selling out\", \"almost gone\", \"last chance\", \"48 hours\", \"restock\", \"limited drop\", \"waitlist\", \"while supplies last\", or any creative where the tension is dwindling availability. Distinct from herd psychology: herd sells 'everyone has it'; scarcity sells 'soon nobody can get it.'\n",
"included_files": [
{
"relative_path": "templates/brief.html",
"size_in_bytes": 19683
}
],
"name": "scarcity-ad-brief",
"skill_md_contents": "---\nname: \"scarcity-ad-brief\"\ndescription: >\n Build a Recharm footage brief for a SCARCITY ad — built on limited supply, limited time, or exclusivity: what's rare is wanted, and what's about to run out gets bought now. Use whenever a user provides a brief, concept, or ad idea framed around sell-outs, low stock, countdowns, limited drops, waitlists, seasonal windows, or last-chance urgency. Searches the user's Recharm clip library and produces a shareable shot-by-shot brief with clip picks. Trigger on \"scarcity\", \"limited edition\", \"selling out\", \"almost gone\", \"last chance\", \"48 hours\", \"restock\", \"limited drop\", \"waitlist\", \"while supplies last\", or any creative where the tension is dwindling availability. Distinct from herd psychology: herd sells 'everyone has it'; scarcity sells 'soon nobody can get it.'\n---\n\n# Scarcity Ad Brief\n\nYou build a Recharm footage brief for a **scarcity** ad — one built on limited supply, limited time, or exclusivity — what's rare is wanted, and what's about to run out gets bought now instead of later.\n\nThe psychological engine: people want more of what they can have less of, and potential loss looms roughly twice as large as equivalent gain. Limited drops, low stock, and closing windows convert \"maybe later\" into \"now.\" Distinct from herd psychology: herd sells \"everyone has it\"; scarcity sells \"soon nobody can get it.\" Critical constraint: only use scarcity claims the brand can substantiate — fake urgency destroys trust.\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 scarcity 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**Scarcity hook patterns:**\n- *Sell-Out Streak* — \"This has sold out four times. It's back — for now.\"\n- *Countdown Open* — \"You have 48 hours. Then it's gone.\"\n- *Low-Stock Alert* — \"There are fewer than [500] of these left.\"\n- *Limited Drop* — \"They only make this once a year.\"\n- *Waitlist Flex* — \"[30,000] people were on the waitlist. Doors just opened.\"\n- *Last-Chance Frame* — \"If you've been waiting for a sign, this is the last one.\"\n- *Exclusive Access* — \"Not on shelves. Not on Amazon. Only here.\"\n- *Season Closer* — \"When the [seasonal flavor] is gone, it's gone until next year.\"\n- *Price-Window* — \"The price goes up Friday. That's not a tactic — that's the calendar.\"\n- *Almost-Missed-It* — \"I nearly missed the restock. Don't make my mistake.\"\n\n**ActorType preference:** Scarcity ads need kinetic, urgent footage — quick hands, last-one moments, demand made visible. 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 scarcity will work for this specific brand* — does it have real scarcity to point to (genuine sell-outs, limited runs, seasonal SKUs, actual deadlines) that makes the urgency credible? 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 scarcity 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 | The scarcity alert — stock, clock, or exclusivity, stated plainly and credibly. |\n| **Demand Surge** | 2–3 | Why it runs out — people loving it, flying-off-shelves energy, demand made visible. |\n| **Ticking Clock** | 1–2 | Tighten the window — countdown feel, near-miss moments, urgency close-ups. The cost of waiting becomes real. |\n| **Product Reveal** | 1–2 | The rare thing itself — hero-lit, desirable, worth the urgency. |\n| **Benefit Payoff** | 2–3 | What owners get that latecomers won't — the benefits that justify acting now. |\n| **Secure The Win** | 1 | The relief and satisfaction of having gotten one in time — loss averted. |\n| **CTA** | 1 | \"Get yours before it's gone\" / \"Claim yours now.\" |\n\nFor each scene capture:\n- `name`: short heading (e.g. \"Hook — last box grabbed off the shelf\")\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:** Empty-shelf moments, last-item shots, package close-ups, checking-phone urgency beats.\n- **Demand Surge:** High-energy consumption footage — enthusiastic eating, grabbing, fast-paced lifestyle clips that read \"in demand.\"\n- **Ticking Clock:** Clocks, quick hands, near-miss gestures, tight close-ups with kinetic framing.\n- **Product Reveal / Benefit / CTA:** Product Shot, Benefits, CTA Scene Types; favor hero-lit, covetable product framing.\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. 'Back In Stock — For Now · 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 scarcity ad is and the mechanism that makes it convert — rarity raises desire and looming loss converts hesitation into action, since losses weigh about twice as much as gains. 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 scarcity angle credible.>\"\n },\n \"hook\": {\n \"pattern\": \"<Pattern name, e.g. 'Sell-Out Streak'>\",\n \"line\": \"<The actual hook line, e.g. 'This cereal has sold out four times. It's back — for now.'>\",\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 | Demand Surge | Ticking Clock | Product Reveal | Benefit Payoff | Secure The Win | 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 scarcity 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 fabricate scarcity — only claims the brand can substantiate: real stock limits, real deadlines, real sell-out history. Fake countdowns destroy trust and can be a legal liability.\n- Don't confuse this with herd psychology — herd sells \"everyone has it\" (FOMO of exclusion); scarcity sells \"soon nobody can get it\" (loss of availability). If the hook is about the crowd, use herd-psychology-brief.\n- Don't reveal the product before the Ticking Clock — 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: e8657489d4811972d5f3ff1e7bb8228cd3dbb1e74e1f20e626c9077f8230a44b