Use 48–72h+ after publishing to CLOSE the loop: first MEASURE (fetch stats + comments, score each deployed bet's virality relative to the channel's own portfolio — deterministic), then LEARN (reflect on which pre-stated assumptions held vs were refuted, extract win/lose patterns, set the next direction + idea seeds — agent-driven). One lego-block of the ideate→deploy→measure→learn growth loop; feeds back into marketing-ideate.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add dasein108/slope-studio --skill marketing-measure-learn --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Marketing Measure Learn?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/dasein108-marketing-measure-learn)More formats (shields.io, HTML) on the badges page.
---
name: marketing-measure-learn
description: >
Use 48–72h+ after publishing to CLOSE the loop: first MEASURE (fetch stats + comments, score
each deployed bet's virality relative to the channel's own portfolio — deterministic), then
LEARN (reflect on which pre-stated assumptions held vs were refuted, extract win/lose patterns,
set the next direction + idea seeds — agent-driven). One lego-block of the
ideate→deploy→measure→learn growth loop; feeds back into marketing-ideate.
---
# marketing-measure-learn — score, then steer
Measure and learn always run as a pair: first get the numbers (a deterministic API + math
step), then reflect on them (agent judgement). Do them in order.
## Step 1 — MEASURE (deterministic)
```bash
studio marketing measure --channel <name> --comments-n 60
```
Fetches views/likes/comments (+ retention & subs gained if the analytics scope is granted),
computes a **virality composite** (log-damped view-velocity + retention + engagement +
sub-conversion), ranks every video into a **percentile within this channel's own portfolio**,
and tags each `win` (≥P75) / `loss` (≤P25) / `neutral` / `cold-start`. Writes back to the
journal and drops `08_stats.json` + `08_comments.json` into each run dir.
Watch for:
- **Wait for watch time** — measuring same-day gives noise. 48–72h+ minimum.
- **Cold-start (<10 deployed):** percentiles are meaningless; every outcome is `cold-start`.
- **Retention/subs** need one extra OAuth scope; fetched best-effort, the loop runs fine
without. See [`../marketing-guru/references/analytics.md`](../marketing-guru/references/analytics.md).
- **Scoring weights** (0.5 velocity / 0.2 retention / 0.2 engagement / 0.1 subs) are slated to
be re-tuned to a retention-first order per research finding F-SI9 — see
[`../marketing-guru/references/scoring.md`](../marketing-guru/references/scoring.md) and
[`docs/20-research/self-improving-loop.md`](../../../docs/20-research/self-improving-loop.md).
## Step 1.5 — SNAPSHOT + SLICE (deterministic analysis)
Before changing strategy, collect age-bucket snapshots and ask the CLI for the hidden-relation
pack. This is what lets the agent compare effects/cost/theme/music/sfx/animation at consistent
ages instead of mixing a 1-day video with a 30-day video.
```bash
studio marketing due-snapshots --channel <name>
studio marketing snapshots --channel <name> --buckets 1,3,7,14,30
studio marketing insights --channel <name> --json
```
Use focused slices/comparisons when a pattern looks interesting:
```bash
studio marketing slice --channel <name> --bucket 7d \
--group-by theme,effects,animators,music_provider,sfx_provider --metric virality
studio marketing compare --channel <name> effects=glitch --bucket 14d --metric virality
studio marketing compare --channel <name> animators=parallax --bucket 7d --metric retention
studio marketing compare --channel <name> music_provider=synth --bucket 3d --metric virality_per_dollar
```
Interpret these as **associations, not causation**. Always check `n`, best/worst examples, and
confounders such as topic quality, publish timing, spend, and whether the video is still too young.
## Step 2 — LEARN (agent-driven reflection)
This is where the loop self-improves. YOU reflect (assumption testing is judgement, not a
formula); the CLI just persists what you conclude.
1. **Read the measured portfolio** (best→worst) + relevant episodes:
```bash
studio marketing journal --channel <name>
studio marketing recall "<theme or direction under review>" --channel <name>
studio marketing insights --channel <name> --json
```
2. **Reflect** — for each measured bet compare its **pre-stated `assumption`** against the
measured `virality`/`percentile`/`outcome`, age-bucket snapshots, slice results, and top
audience comments. Was it **held or refuted**? Then across the portfolio extract:
- `winning_patterns` — traits of the ≥P75 bets,
- `losing_patterns` — traits of the ≤P25 bets,
- production correlations — effects/animation/music/sfx/cost formats that look promising or weak,
- `current_direction` — a one-paragraph thesis for what to make next,
- `next_seeds` — 3–5 concrete idea seeds.
Be honest when an assumption was **refuted** — that's the signal that improves the next bet.
3. **Persist** (no LLM, just I/O):
```bash
studio marketing strategy --channel <name> \
--direction "<thesis paragraph>" \
--winning "trait a;trait b" --losing "trait c" \
--seeds "seed 1;seed 2;seed 3" \
--note j0007=cosmic-scale shock hooks beat soft intros
```
`--winning/--losing/--seeds` are `;`-separated; `--note ENTRY_ID=text` files a per-bet
learning. Repeat `--note` for several bets.
The strategy + seeds you write here are exactly what **marketing-ideate** reads next — the
cycle closes.
## Scripted fallback (non-agent)
For a quick non-agent reflection: `studio marketing learn --provider <llm>` runs the built-in
LLM reflection and writes the strategy. (`measure` is already a deterministic script — no
fallback needed.)
Memory model (journal / strategy / recall, who writes what): [`docs/50-marketing/memory.md`](../../../docs/50-marketing/memory.md).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!