Skip to main content
skill Claude Code

linkedin-analytics — Claude Code skill: what it does, how to install

Analyzes personal LinkedIn post exports using medians and permutation tests without leaping to false conclusions. Refuses to make claims on under 10 posts.

Install into Claude Code · Plugin marketplace All methods and platforms ↓
/plugin marketplace add alirezarezvani/claude-skills
/plugin install linkedin@claude-code-skills
Open on GitHub

What linkedin-analytics does

The skill works strictly on your own exported LinkedIn CSV or JSON files. Scraping is banned by LinkedIn terms and unnecessary here. Instead of distorted means, it computes median and MAD, alongside Tukey percentile bands and a 1.5×IQR breakout fence. If you supply fewer than 10 posts, it describes the data and refuses to draw strategic conclusions.

Three Python scripts handle the analysis. First, post_performance_analyzer.py classifies posts from breakout to dud. Next, pattern_miner.py evaluates candidate patterns against 2,000 label shuffles. Finally, experiment_planner.py calculates required sample sizes and study duration before you post. Finding that nothing survived the test is common, and the scripts report that outcome plainly.

Install this tool if you want statistical discipline behind your posting schedule instead of relying on folklore.

What it helps with

  • test candidate engagement patterns against 2,000 label permutations
  • calculate median and MAD metrics on exported LinkedIn post data
  • size a two-arm posting experiment before publishing the first post
  • detect genuine breakout posts using a 1.5×IQR threshold

Example prompts for the agent

  • analyze my posts from posts.csv and report outliers
  • why did my reach drop over the last month?
  • do carousels do better for me based on posts.json?

How to install linkedin-analytics

1Plugin marketplace

/plugin marketplace add alirezarezvani/claude-skills
/plugin install linkedin@claude-code-skills

This installs the whole linkedin plugin with all its skills

2Skills CLI (Vercel)

npx skills add alirezarezvani/claude-skills --skill linkedin-analytics -a claude-code

3Manually: put the files in place

~/.claude/skills/linkedin-analytics/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/linkedin-analytics/

From the same set349

The whole set →
engineering-skills Alireza Rezvani An engineering skill index for Claude Code that helps you select one specialist SKILL.md for the task at hand. It covers architecture, testing, DevOps, and data work. Claude Code 2,387installs finance-skills Alireza Rezvani Routes ambiguous finance prompts to the right bundled skill: financial-analyst, saas-metrics-coach, or month-end-close. Claude Code 2,312installs marketing-skills Alireza Rezvani A directory and router for marketing skills in Claude Code. It picks the right specialist skill for SEO, content, CRO, channels, and related tasks. Claude Code 2,264installs business-growth-skills Alireza Rezvani Routes growth and revenue prompts to the right specialized skill across customer success, sales engineering, RevOps, and proposals in Claude Code. Claude Code 2,189installs engineering-advanced-skills Alireza Rezvani An index of 37 engineering skills for architecture, automation, reliability, and platform work. Use it when a project needs task-specific engineering workflows. Claude Code 2,019installs product-skills Alireza Rezvani Product work orchestrator for Claude Code. Routes queries across 16 domain lanes and validates discovery trees with deterministic scripts. Claude Code 1,994installs pm-skills Alireza Rezvani Routes project-delivery requests across 8 PM sub-skills for Jira, Confluence, sprints, reporting, and team communication. Useful for controlled delivery work. Claude Code 1,975installs senior-backend Alireza Rezvani Scaffolds backend APIs, detects database bottlenecks, and runs load tests. Useful when designing Express routes, optimizing PostgreSQL, or preparing for production. Claude Code 1,674installs

Similar

testing-data-visualizations official OpenAI This skill establishes test strategies for charts, dashboards, and diagrams. It separates unit, component, visual regression, and E2E coverage without brittle pixel snapshots. CX Codex GP ChatGPT 18installs ncbi-entrez-skill official OpenAI This skill sends NCBI Entrez requests for PubMed, Gene, Protein, Nucleotide, PMC, and GEO data. Use it for focused search and record lookups. CX Codex GP ChatGPT 17installs ncbi-blast-skill official OpenAI Submits searches to NCBI BLAST via the Common URL API, polls job status by RID, and formats compact summaries for nucleotide or protein sequences. CX Codex GP ChatGPT 17installs ncbi-datasets-skill official OpenAI Queries NCBI Datasets v2 for genome, assembly, and taxonomy metadata. It produces compact summaries directly in Codex without large raw dumps. CX Codex GP ChatGPT 16installs node-link-and-diagram-layout official OpenAI This skill selects layouts for graphs, diagrams, and connected nodes. Use it when crossings, overlaps, edge routing, or unstable placement make a visual hard to read. CX Codex GP ChatGPT 16installs threejs-data-visualization official OpenAI Guides the agent to pick a renderer and build 3D or GPU-heavy visuals when SVG and Canvas2D stop scaling. CX Codex GP ChatGPT 15installs xlsx official anthropics Creates, reads, edits, and converts spreadsheet files. Use it when the requested deliverable is an Excel workbook or another tabular file. Claude Code Claude.ai 187,223installs google-agents-cli-observability official Google This skill guides you through tracing and monitoring AI agents, including ADK agents. Use it when you need to inspect agent execution or monitor a deployed agent. Claude Code CX Codex Cursor +1 509,900installs

Questions about linkedin-analytics

How to install linkedin-analytics in Claude Code?

Run npx skills add alirezarezvani/claude-skills --skill linkedin-analytics -a claude-code or use /plugin install linkedin@claude-code-skills in Claude Code.

What does linkedin-analytics do?

It evaluates your LinkedIn post export using medians, MAD, and permutation tests. It checks whether detected patterns are genuine and helps plan future posting experiments.

Why does it refuse to draw conclusions from fewer than 10 posts?

Engagement distributions have heavy tails where a single outlier easily triples group averages by chance. Below 10 posts, the scripts provide only descriptive numbers to prevent false assumptions.

Source text

SKILL.md · MIT
---
name: linkedin-analytics
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.
license: MIT
metadata:
  version: 1.0.0
  author: Alireza Rezvani
  category: marketing
  updated: 2026-08-25
---

# 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.

```bash
python3 scripts/post_performance_analyzer.py --input posts.csv --csv --output human
```

**3. Test the pattern they think they see.**

```bash
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.**

```bash
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`](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`](scripts/pattern_miner.py) | Four-gate permutation test with multiple-comparisons accounting; reports why every rejected candidate failed. |
| [`scripts/experiment_planner.py`](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`](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`](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`](assets/example_post_export.csv) — a 12-post export in the expected shape
- [`assets/measurement_log_template.md`](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

© Alireza Rezvani · MIT · alirezarezvani/claude-skills

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor