← MotionCONTENT HISTORY

Update to Motion

Snapshot Sep 30, 2026 · 23:08 UTC · version 1.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "weekly-performance",
  "description": "Generate a week-over-week creative performance slide deck comparing the last 7 days to the previous 7 days. Detects the week type (breakout, fatigue, shift, steady, launch), then builds a narrative arc around the biggest creative insight. Outputs a self-contained HTML slide deck. Activate when users ask for \"weekly report\", \"weekly performance\", \"week over week\", \"WoW analysis\", \"weekly creative report\", \"performance deck\", \"weekly slide deck\", or \"what changed this week\".\n",
  "included_files": [],
  "skill_md_contents": "---\nname: weekly-performance\ndescription: >\n  Generate a week-over-week creative performance slide deck comparing the last 7 days\n  to the previous 7 days. Detects the week type (breakout, fatigue, shift, steady, launch),\n  then builds a narrative arc around the biggest creative insight. Outputs a self-contained\n  HTML slide deck. Activate when users ask for \"weekly report\", \"weekly performance\",\n  \"week over week\", \"WoW analysis\", \"weekly creative report\", \"performance deck\",\n  \"weekly slide deck\", or \"what changed this week\".\nargument-hint: \"[--output html|notion|slack|pdf|auto]\"\nallowed-tools:\n  - Read\n  - Agent\n  - \"mcp__ruimotion__get_auth_context\"\n  - \"mcp__ruimotion__get_workspace_brand\"\n  - \"mcp__ruimotion__get_creative_insights\"\n  - \"mcp__ruimotion__get_demographic_breakdown\"\n  - \"mcp__ruimotion__get_glossary_values\"\n  - \"mcp__ruimotion__get_creative_summary\"\n  - AskUserQuestion\nmodel: opus\n---\n\n# Weekly Performance Slide Deck\n\nGenerate a week-over-week creative performance analysis as a presentation-ready slide deck. The deck tells a story — it's not a data dump.\n\n---\n\n## Phase 0: Orient\n\n1. **Acknowledge**: \"Building your week-over-week creative performance deck.\"\n2. **Ask format**: \"HTML slide deck, Notion, or Slack? Anything specific you want highlighted?\"\n3. **Connected workflow**: After the deck, you can dive into specific ads (`/analyze-ad`), find iterations on fatiguing creatives (`/find-iterations`), or generate concepts to fill gaps (`/create-concepts`).\n\nIf the user already specified the format, skip the question and build.\n\n---\n\n## Phase 1: Setup\n\n### 1a. Parse Arguments\n\n- **`--output`**: Where to deliver the report. Default: `auto` (ask the user).\n  - `html` — Self-contained HTML with CSS scroll-snap\n  - `notion` — Structured document with headings, tables, callout blocks\n  - `slack` — Concise highlights post (max 300 words)\n  - `pdf` — Print-optimized HTML with page breaks\n  - `auto` — Ask the user before building\n\n### 1b. Load Context\n\n1. Read `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md` for org-specific config. If the file does not exist, use these defaults and suggest the user run `/customize`:\n   - `primary_kpi`: use goalMetric from first `get_creative_insights` response\n   - `demographic_focus`: both\n   - `primary_metrics` / `secondary_metrics` / `exclude_metrics`: auto-detect\n   - Brand guidelines: pull from `get_workspace_brand`\n2. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/SKILL.md` for methodology.\n3. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/references/performance-metrics.md` for metric definitions.\n4. If settings contain `primary_metrics`, ensure those metrics lead the WoW analysis. If `exclude_metrics`, omit from all comparisons.\n\n### 1c. Resolve Date Windows\n\nCalculate two non-overlapping 7-day windows ending **yesterday** (never include today — partial data distorts metrics):\n- **This week**: start = 8 days ago, end = yesterday\n- **Last week**: start = 15 days ago, end = 9 days ago\n\nUse YYYY-MM-DD format.\n\n---\n\n## Phase 2: Data Collection\n\n### 2a. Prerequisites (Strict Sequence)\n\nCall `get_auth_context()` → resolve workspaceId.\n\nThe first `get_creative_insights` response includes `goalMetric` (the workspace's preferred efficiency metric) and `spendThreshold` (minimum spend for statistical significance). Extract both. The goalMetric is the primary KPI for the entire deck.\n\nDefaults if unavailable: settings `primary_kpi` for metric, $100 for threshold.\n\n### 2b. Parallel Data Pulls\n\nOnce you have workspaceId and goalMetric, dispatch all in parallel:\n\n1. **Brand context**: `get_workspace_brand(workspaceId)` — brand voice, creative constraints\n2. **This week's creatives**: `get_creative_insights(workspaceId, insightType=\"SPEND\", datePreset=\"CUSTOM\", startDate=\"{this_week_start}\", endDate=\"{this_week_end}\", limit=20, withAggregatedInsights=true)`\n3. **Last week's creatives**: `get_creative_insights(workspaceId, insightType=\"SPEND\", datePreset=\"CUSTOM\", startDate=\"{last_week_start}\", endDate=\"{last_week_end}\", limit=20, withAggregatedInsights=true)`\n4. **Demographics**: `get_demographic_breakdown(workspaceId, datePreset=\"LAST_14_DAYS\")` — 14-day aggregate (tool doesn't support custom ranges). Note this limitation.\n5. **Glossary taxonomy**: `get_glossary_values(workspaceId, includeCreativeIds=true)`\n\n### 2c. After Insights Return\n\nCall `get_creative_summary` for the top 10 creatives by spend (this week) to get verbatim hooks and headlines. Use `spokenHook` for video, `headline` for static. Prefer `spokenHook` > `textOverlayHook` > `headline`.\n\n### 2d. Derive Trends\n\nCompare `aggregatedInsights` from both weeks for account-level WoW deltas: spend, goalMetric, CTR, CPA, thumbstop, impressions.\n\n### 2e. Identify Launches\n\nFrom this week's creatives, filter any with `launchDate` within the current week window. These are newly launched tests.\n\n### 2f. Validate Before Proceeding\n\n- If either pull returns fewer than 5 creatives above the spend threshold, flag the thin dataset and adjust scope.\n- If the preferred metric has no usable values, fall back to spend-ranked order and state that explicitly.\n\n---\n\n## Phase 3: Detect the Week Type\n\nBefore building slides, classify the week. This determines the narrative arc. Evaluate in order, pick the first that fits:\n\n**Breakout** — A creative that wasn't in last week's top 20 appeared in this week's top 10 AND outperforms account averages on goalMetric. Story: what's new and why it's working.\n\n**Fatigue** — 3+ of last week's top 10 dropped out or declined >20% on goalMetric, AND nothing new replaced them at comparable efficiency. Story: what's dying and what needs to replace it.\n\n**Shift** — The composition of the top 20 changed meaningfully: a different format, messaging angle, or demographic segment now dominates. Story: the direction change.\n\n**Launch** — 5+ new creatives (launched within current week) appear with meaningful spend. Story: early reads on fresh creative.\n\n**Steady** — None of the above. Story: the hidden signal everyone else would miss — the quiet riser, the subtle pattern, or the fatigue that hasn't hit yet.\n\n---\n\n## Phase 4: Build the Analysis\n\n### 4a. Creative-Level Diff\n\nFor every creative in either week's top 20:\n- Present in last week's top 20? This week's? Both? New? Dropped?\n- Delta on: spend, goalMetric, CTR, thumbstop (if video)\n- Verbatim hook/headline from `get_creative_summary`\n- Glossary tags — how does its profile compare to the rest of the top 20?\n\n### 4b. Pattern Extraction\n\nAcross both weeks' top performers:\n- Tag combinations over-represented this week vs last\n- What disappeared from the top 20?\n- Multi-attribute clusters in winners (e.g., UGC + problem-first hook + testimonial)?\n- What's absent from top performers that exists in the portfolio? (untested directions)\n\n### 4c. Behavioral Interpretation\n\nEvery finding must answer \"so what?\" — translate metrics into viewer behavior:\n\n| Signal | What It Means |\n|---|---|\n| High thumbstop + high hold rate | Opening promises and delivers. Viewers feel rewarded. |\n| High thumbstop + low hold rate | Hook grabs but middle doesn't pay off. Viewers feel baited. |\n| High CTR + low conversion | Ad sells the click but landing page doesn't close. |\n| Spend increasing | Algorithm found evidence it works. Winning auctions. |\n| Spend decreasing | Creative exhausting its audience or losing auctions. |\n| High goalMetric + low spend | Algorithm found a pocket that works but can't scale it. |\n| High spend + declining goalMetric | Budget leak. More urgent than any low-spend underperformer. |\n\nLead with the human reaction, support with the number.\n\n### 4d. Demographic Layer\n\nFrom 14-day aggregate: which segments drive spend and efficiency? Flag segments with >15% spend share or >20% goalMetric deviation. Note the 14-day limitation.\n\n### 4e. Apply Brand Context\n\nFrame everything through brand context:\n- Write slide headlines in brand voice\n- Filter recommendations against creative constraints\n- If a winning pattern conflicts with brand guidelines, flag the tension\n\n---\n\n## Phase 5: Build the Slide Deck\n\nOutput as self-contained HTML. Each slide is a full-viewport section with CSS scroll-snap.\n\n### Design Principles\n\n- **The creative IS the slide.** Ads shown large (40-50% of slide area). Use `creativeUrl` as image/video source.\n- **One insight per slide.** If you need more than 20 words of body text, the slide is doing too much.\n- **Metrics are badges, not headlines.** Small contextual labels showing WoW delta.\n- **Quote actual hooks/headlines.** Large type near the creative card.\n- **Color-code direction.** Green for improvement, red for decline, neutral for flat.\n- **Speaker notes.** Collapsible footer bar, 2-3 sentences with the behavioral \"why.\"\n\n### Slide Arc\n\n**Slide 1: This Week**\nAccount-level WoW snapshot. Grounds the entire deck.\n- Brand name, date range, week type as subtitle\n- WoW deltas: total spend, impressions, goalMetric, CPA, CTR, thumbstop\n- Color-coded arrows\n- One framing sentence\n- Week type framing line:\n  - Breakout: \"A new creative broke into the top 5\"\n  - Fatigue: \"Multiple top performers are declining\"\n  - Shift: \"The creative mix changed meaningfully\"\n  - Launch: \"[N] new creatives entered the dataset\"\n  - Steady: \"Stable surface, but there's a signal underneath\"\n\n**Slides 2-3: Winners & Losers** (1-2 slides)\nThe creatives driving the week's story. Per creative (2-4 per slide):\n- Actual hook/headline in large type\n- One metric badge: the WoW delta\n- One line: what the creative does to the viewer\n\nFeature selection by week type:\n- Breakout: new risers vs what they displaced\n- Fatigue: declining creatives, what originally made them work\n- Shift: old vs new top performers\n- Launch: highest-spend new creatives by signal strength\n- Steady: hidden gem vs \"safe\" top performers\n\n**Slide (conditional): Launches**\nInclude if 1+ creatives launched this week. Skip otherwise.\n- Each launched creative: thumbnail, hook text, early metrics\n- Label all metrics as \"early reads\"\n- Group: promising, neutral, concerning\n\n**Slide: Patterns**\nOne slide connecting evidence into a creative thesis.\n- Not: \"Hook Tactic: Problem-First increased 34%\"\n- Instead: \"The audience is responding to ads that lead with a flaw\"\n- Name multi-attribute recipes if emerging\n- Include demographic signal if relevant\n\n**Slide: What's Next**\nAlways the final slide. 2-3 specific creative directions for next week.\nEach must:\n- Name format, hook approach, messaging angle\n- Trace back to a finding from earlier slides\n- Be specific enough to brief\n- Not: \"Test more UGC\"\n- Instead: \"Shoot 2-3 confessional UGC pieces where the creator admits a problem with the product before explaining why they kept it\"\n\n### Conditional Adjustments\n\n- Both Winners & Losers show same pattern → collapse to 1 slide\n- Patterns has no clear thesis → replace with \"What to Watch\"\n- Demographics show no meaningful deviation → don't force demographic angle\n- Launches has 5+ creatives → expand to 2 slides\n- **Maximum 6 slides.** If you need more, you're saying too much.\n\n---\n\n## Phase 6: Output\n\n### Delivery\n\nIf `--output` is `auto`, ask: \"Where would you like this report? I can build it as a slide deck, Notion page, Slack post, or shareable link.\"\n\n### Response\n\nBrief intro (1-2 sentences: the week type and biggest insight), then present the artifact.\n\n### Follow-Up\n\nTied to week type:\n- Breakout: \"Want me to build concepts that extend this pattern?\"\n- Fatigue: \"Want me to generate fresh directions to fill the gap?\"\n- Shift: \"Want me to dig into what's driving the shift?\"\n- Launch: \"Want me to tear down the strongest new launch?\"\n- Steady: \"Want me to explore that hidden signal further?\"\n\n---\n\n## Constraints\n\n- Never fabricate creative IDs, metric values, or hook text\n- Never include creatives below spend threshold unless they're hidden gems\n- Never make budget allocation, audience targeting, or campaign structure recommendations — this is a creative strategy deck, not a media plan\n- Never blend 7-day creative data with 14-day demographic data without flagging\n- Never use tables as primary slide content\n- If data is thin, say so plainly\n- Use goalMetric consistently — never default to ROAS unless that IS the goalMetric\n\n## Degraded Mode\n\nIf any tool call fails:\n- Note the gap explicitly\n- Never fabricate performance data\n- If get_creative_insights fails entirely, stop and report\n- If demographics or glossary fail, proceed with creative-level analysis only\n- Partial analysis with clear caveats > fabricated complete one\n"
}

SHA-256: c0390b145f90697bf9368f1e3e0071f09ce3c527a28dcbc6ce2fc3425c36f32a