--- name: analytics-review description: > Run a weekly retro on real numbers: pull the period's posts and their actual metrics from connected channels, say honestly what worked and what didn't, and turn it into three concrete content moves for next week. Covers LinkedIn, X (Twitter), Instagram, and Facebook today, with Mastodon, Threads, Bluesky, TikTok, and YouTube in platform review — each platform reports different metrics, and gaps are shown as gaps. Use when the user says "review my week", "what worked this week", "analytics retro", or asks "how did my posts do". Requires the Inklate CLI (npm i -g inklate) or the Inklate MCP connection. Reads social-context.md when present so recommendations tie back to the user's pillars and goals rather than generic growth advice. license: MIT metadata: version: 0.1.1 topics: - analytics - planning examplePrompt: "Review last week's posts and tell me what to double down on" pairsWith: - social-audit - social-calendar mcpTools: - posts_metrics - channels_metrics - channels_growth - posts_list cliCommands: - posts metrics - channels metrics - channels growth - posts list --- Review the period's real performance and leave the user with an honest read and three specific moves for next week. ## Transports - **CLI (preferred):** `inklate` (`npm i -g inklate`) — structured YAML on stdout (`--json` for JSON), progress on stderr, and typed exit codes: `3` no credentials, `4` a deliberate refusal with its machine-readable payload on stdout, `6` the resource changed underneath you, `7` rate limited but safe to re-run later. Pass `--no-input` when running unattended so a missing flag fails loudly instead of prompting, and `--yes` to carry an approval the user has already given in chat. - **MCP (fallback):** the Inklate MCP tools when the CLI is not installed. Steps below name the MCP operation with the CLI form in parentheses; the fields are the same on both. ## Connection check 1. Run `inklate auth check` (MCP: `organizations_list`) first. 2. On exit 3 (no credentials): interactively run `inklate auth login`; headless, the key comes from `INKLATE_API_KEY=inklate_…` in the environment or `inklate auth set --token inklate_…`. If neither transport is available at all, tell the user to install with `npm i -g inklate` (or connect at `https://inklate.com/skills/connect?ref=skills-analytics-review`) and STOP — a retro on invented numbers is worse than no retro. 3. If multiple organizations exist, ask which one to review (CLI: `--org `). ## Context Read `social-context.md` (project root, then `.agents/social-context.md`) if present. `## Pillars` lets you group performance by theme, and `## Goals` decides which metric matters most — reach for awareness, replies and profile visits for leads. Proceed without it if absent, but note that recommendations will be metric-generic rather than goal-anchored. ## Workflow 1. Establish the period: default to the last 7 full days; honor whatever range the user names. State the exact dates you are reviewing. 2. Call `posts_list` (CLI: `inklate posts list --status published`) for the period. If nothing was published, say so and offer to review the prior period instead — do not pad the retro with older posts unlabeled. 3. For each published post, call `posts_metrics` (CLI: `inklate posts metrics `). Collect what each platform actually returns: impressions, engagement, clicks, and platform-specific extras. 4. Call `channels_metrics` (CLI: `inklate channels metrics --from … --to …`) for each channel over the period for account-level context — aggregated per-day engagement across the channel's published posts — so post performance is read against its baseline. Follower movement is a separate call; see step 9. 5. **Honesty rule for gaps:** platforms report different metric sets, and some metrics arrive late or not at all. A missing metric is a dash, never a zero — a zero is a claim, a dash is an absence. Say once which metrics a platform doesn't provide. 6. Build the metrics table (see Receipt) and read it before interpreting: - Best and worst post by the goal metric, per channel. - Per-pillar patterns when social-context.md names pillars — which theme carried the week. - Format patterns: did threads, single posts, or media posts outperform on each platform? - Timing: anything notable about which days or slots performed, stated cautiously at weekly sample sizes. 7. **What worked / what didn't.** Two short lists, each item citing its number ("the contrarian take drew 4x your median impressions"). Attribute honestly: if the sample is 3 posts, say the pattern is weak. Never invent causality the data can't support. 8. **Three moves for next week.** Exactly three, each concrete enough to act on without discussion — a topic, a format, and a cadence or channel adjustment, each tied to a pillar (when known) and to the evidence from step 7. "Post more consistently" fails; "the two build-in-public posts beat everything else — make Tuesday a fixed build-in-public slot on LinkedIn" passes. 9. For follower movement, call `channels_growth` (CLI: `inklate channels growth --from … --to …`) per channel — it returns the followers trajectory and per-day page flows, which is the real answer to "am I growing", where `channels_metrics` answers "did my content land". Report the period delta per channel alongside the post table, and keep the two apart: a good engagement week with flat followers is a different story from the reverse. 10. Offer the bridge: hand the three moves to the `social-calendar` skill to plan next week, or to `calendar-schedule` if drafts already exist. ## Quality bar - Every number in the retro comes from `posts_metrics`, `channels_metrics`, or `channels_growth` this session — no remembered, estimated, or extrapolated figures. - Missing metrics render as "—" with a footnote, never as 0; late-arriving metrics (recent posts) are marked "too early". - Claims are proportional to sample size; with under five posts, findings are labeled directional. - Exactly three moves — not two, not five — each specific enough that a stranger could execute it. - When social-context.md exists, each move names the pillar it serves; when it doesn't, say the retro would sharpen with one and suggest the `social-context` skill. - This skill reads and recommends; it publishes and schedules nothing. - Comparisons across platforms are framed carefully: an impression on X and an impression on LinkedIn are not the same unit, so cross-platform tables never sum them into one total. ## Receipt End with the period's metrics table and the three moves: | Post | Channel | Published | Impressions | Engagement | Clicks | Notes | | --------------------------- | --------- | --------- | ----------- | ---------- | ------ | ---------------------------- | | "Why we killed our roadmap" | LinkedIn | Jul 13 | 8,420 | 312 | 47 | best of week | | Thread: roadmap lessons | X | Jul 13 | 21,050 | 460 | — | X doesn't report clicks here | | Carousel: 5 lessons | Instagram | Jul 15 | 1,180 | 96 | — | too early for full metrics | Below the table: channel-level context (follower delta and reach per channel for the period), the what-worked and what-didn't lists with their numbers, and then **the three moves for next week**, numbered, each with its pillar and its evidence. Close with the offer to turn the moves into next week's plan via `social-calendar`, or into booked posts via `calendar-schedule` if drafts exist.