linkedin-analytics
Use when someone wants to understand their own LinkedIn numbers — which posts worked, why reach dropped, whether a pattern is real, or how to test a hypothesis. Triggers on "why did my reach drop", "what's working on my LinkedIn", "analyze my posts", "do carousels do better for me", "should I test this", "LinkedIn analytics". Reads your own exported post data, reports medians and outlier bands, tests candidate patterns against a permutation null, and sizes a real experiment — refusing to conclude anything below 10 posts.
- License 许可
- MIT
- 最近更新
- 2026-11-08
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- name
- linkedin-analytics
- license
- MIT
- metadata
- { "author": "Alireza Rezvani", "updated": 1787616000000, "version": "1.0.0", "category": "marketing" }
- description
- Use when someone wants to understand their own LinkedIn numbers — which posts worked, why reach dropped, whether a pattern is real, or how to test a hypothesis. Triggers on "why did my reach drop", "what's working on my LinkedIn", "analyze my posts", "do carousels do better for me", "should I test this", "LinkedIn analytics". Reads your own exported post data, reports medians and outlier bands, tests candidate patterns against a permutation null, and sizes a real experiment — refusing to conclude anything below 10 posts.
03 SKILL.md 正文
LinkedIn Analytics — describe honestly, then refuse to over-conclude
The characteristic sentence of LinkedIn analytics is "carousels do 3x better for me", built on four posts. With engagement as heavy-tailed as it is, four posts will show a 3x difference between almost any two groups you care to define. These three scripts stop that sentence becoming a strategy.
Your own data only. Nothing is fetched; scraping post or profile data is prohibited by User Agreement §8.2 and none of this analysis needs it.
Workflow
1. Get the export. LinkedIn Analytics → Post impressions → Export, or Settings → Data privacy → Get a copy of your data. CSV and JSON both work.
2. Describe it. Exit 0 analysed / 2 below the 10-post floor, descriptive only / 3 unusable. Reports median and MAD rather than mean and standard deviation — one breakout post makes a mean describe a distribution none of your posts belong to — plus Tukey percentile bands and a 1.5×IQR breakout threshold, so "this did well" has a number behind it.
python3 scripts/post_performance_analyzer.py --input posts.csv --csv --output human
3. Test the pattern they think they see.
python3 scripts/pattern_miner.py --input posts.json --output human
Exit 0 something survived / 2 nothing survived / 3 under 10 posts. Four gates: 5 posts in and 5 out; a 15% relative difference in medians; beating 90% of 2,000 seeded label shuffles; and a multiple-comparisons accounting of how many candidates would pass on noise alone.
"Nothing survived" is the most common honest answer and it is a real finding. Report it as one. Do not soften it into a hedge that reads like a conclusion.
4. Turn a survivor into a test.
python3 scripts/experiment_planner.py --hypothesis "..." --variable "..." \
--cv 0.45 --effect 0.30 --posts-per-week 2 --max-weeks 12 --output human
CV comes from step 2: 1.4826 * MAD / median. Exit 0 feasible / 2 too long, with the minimum
detectable effect in their window / 3 refused. It will frequently say the test needs more
posts than a quarter allows — that is the honest answer, and more useful than a confident
conclusion from retrospective data.
Rules
- Under 10 posts, describe; do not conclude. Say so plainly.
- A pattern in past posts is a hypothesis. Retrospective data is confounded — you made carousels when you had structured material, on topics you knew best, in weeks you had time. No statistics on the same data removes that.
- Never benchmark against someone else's numbers. Different denominator, different audience, usually a vendor's sample.
- Follower count is not a success metric. Track inbound conversations, specific references, invitations — the Tier 1 metrics you count by hand.
- Report the confidence level. LinkedIn-official ?, third-party study ?, folklore ?.
- One good post is not evidence. It is the most common cause of a strategy change and the least informative event available.
Scripts
| Script | Role |
|---|---|
scripts/post_performance_analyzer.py |
Median/MAD, percentile bands, IQR outlier fence, per-post BREAKOUT→DUD classification; refuses conclusions below 10 posts. |
scripts/pattern_miner.py |
Four-gate permutation test with multiple-comparisons accounting; reports why every rejected candidate failed. |
scripts/experiment_planner.py |
Sizes a two-arm posting experiment, names the confounds to hold constant, and writes the falsification condition before the first post. |
References and assets
-
references/linkedin_metrics_canon.md— what each number is, what it is not, and which three tiers to track (7 sources) -
references/evidence_thresholds.md— the four gates, forking paths, and the uncomfortable arithmetic of LinkedIn A/B tests (7 sources) -
assets/example_post_export.csv— a 12-post export in the expected shape -
assets/measurement_log_template.md— the Tier 1 outcome log you keep by hand
Distinct from
marketing-skill/social-media-analyzer— cross-platform brand campaign reporting. This is one person's own LinkedIn export, with refusals attached.linkedin-strategy— decides what to do next. This says what happened.product-team/experiment-designer— product A/B tests with real traffic; here n is posts, and usually too small.
Version: 1.0.0
04 同仓库更多 Skills
youtube-full
Use when the user needs YouTube transcripts, video search, channel browsing, playlist extraction, or content monitoring. Trigger phrases: 'get the transcript for', 'search YouTube for', 'what are the latest videos on', 'list this playlist', 'monitor this channel', or any request involving a YouTube URL, video ID, or @handle. Do NOT use for downloading video or audio files, YouTube engagement data (likes, comments), or private/age-restricted videos.
x-twitter-growth
X/Twitter growth engine for building audience, crafting viral content, and analyzing engagement. Use when the user wants to grow on X/Twitter, write tweets or threads, analyze their X profile, research competitors on X, plan a posting strategy, or optimize engagement. Complements social-content (generic multi-platform) with X-specific depth: algorithm mechanics, thread engineering, reply strategy, profile optimization, and competitive intelligence via web search.
write-a-skill
Create new agent skills with proper structure, progressive disclosure, and bundled resources. Use when user wants to create, write, build, or author a new skill.
wrap-up
Close out a launched Claude Managed Agent — recap every primitive the founder now owns, regenerate the single-file overview page, and suggest the next 1-2 upgrades. Use when the user says "wrap up", "close this out", "what do I own now", "give me the summary", "recap the agent", or when the orchestrator routes phase=wrap-up. primitives_inventory.py tables everything owned (agent, environment, session, memory, outcome, deployment); overview_page.py regenerates a self-contained ./my-agent/agent-overview.html; upgrade_suggester.py ranks the next moves from recorded deferrals plus standing hardening steps. Companion to run-without-you; the last stop before phase=done.
workflow-builder
Design and write deterministic multi-agent workflow scripts (.js files in .claude/workflows/) for Claude Code's Workflow tool. Use when a user wants to build, create, author, scaffold, or run a custom Claude Code workflow, orchestrate sub-agents (fan-out, pipeline, loop, judge-panel), or automate a repeatable multi-step task across fresh-context agents.
weekly-review
Use when someone wants to run a weekly review, close open loops, audit stalled projects and commitments, get their system back to trusted, restart a lapsed review habit, or says "/cs:weekly-review". Walks David Allen's three-phase loop — GET CLEAR, GET CURRENT, GET CREATIVE — with deterministic scripts that inventory open loops, gate the checklist with named gaps, and score commitment health 0-100.