The LinkedIn Algorithm Audit: What Actually Moves Reach

Every time LinkedIn tweaks its feed ranking, the same cycle happens. Someone posts a screenshot of a reach drop, a dozen “gurus” publish theories with zero data behind them, and everyone changes their posting habits based on a guess. I did that for about a week after my reach started sliding. Then I stopped guessing and built a pipeline to actually check.

Here’s the exact system, so you can run it on your own account instead of trusting someone else’s screenshot.

The Pipeline: n8n + Claude

The goal was simple: pull every post from the last 60-90 days, grab the metrics LinkedIn actually shows me (impressions, reactions, comments, reposts, and rough dwell/scroll signals from the analytics export), and have Claude score each post against the others instead of me eyeballing a spreadsheet.

Step 1: Pull the raw data

LinkedIn doesn’t give you a clean API for personal profile analytics, so the workaround is the manual export (Analytics > Post analytics on each post, or the aggregated export from your Creator dashboard) dropped into a Google Sheet. An n8n workflow watches that sheet via the Google Sheets trigger node and pulls new rows on a schedule.

Step 2: Normalize the metrics

Raw impressions are useless without context. A Function node in n8n normalizes each post’s numbers against the account’s rolling 30-post average, so you’re comparing relative performance, not absolute numbers that get skewed by follower growth. This step matters more than people think – without it you’ll think your “algorithm changed” when really your audience just grew 20%.

Step 3: Feed it to Claude for pattern scoring

Once the data is normalized, an HTTP Request node sends batches of posts (text + normalized metrics) to Claude with a structured prompt: score each post’s opening line for scroll-stop strength, flag comment length and depth, flag any engagement-bait phrasing (“comment YES”), and rank posts by a composite score weighting saves/shares highest, comments second, reactions last. Claude returns structured JSON, which n8n writes back into the sheet. If you haven’t built error handling into a workflow like this yet, do it before you trust the output – a silently failed node will quietly corrupt your data and you won’t notice until the conclusions are wrong. I wrote the exact fix for this in The Silent Failure: Fix n8n’s Green Checkmark Lie, and the follow-up build is here: n8n Failed Silently? Build This Error Handler Today.

What The Data Actually Showed

Across 30 posts, four patterns held consistently enough to act on:

  • Sub-130-word posts got buried unless the first line stopped the scroll cold. Short posts with a weak hook underperformed long posts with a strong one, every time.
  • A comment over three words counted roughly 4x a like in terms of downstream reach. LinkedIn is visibly weighting conversation over approval.
  • Saves and shares outweighed reactions and comments combined on the top-performing posts. That’s the strongest signal in the dataset.
  • “Comment YES” bait tanked reach on every single post that used it, no exceptions in this batch.

The pattern underneath all of it: LinkedIn stopped rewarding volume of engagement and started rewarding depth of engagement. A post that gets 12 real comments and 4 saves is outperforming a post with 200 one-word reactions. That’s a meaningful shift if you’ve been optimizing for reaction counts.

How To Run This On Your Own Account

You don’t need the full n8n build to get value from this. Start manually:

  • Pull your last 20-30 posts into a spreadsheet with impressions, comments, reactions, reposts, and word count of the opening line.
  • Tag each post: did it use engagement bait? Did the first line make a claim or ask a generic question?
  • Sort by saves/shares first, comments second, reactions last – not by impressions. Impressions without action is a hollow number, which is the same math I broke down in The 200-Person Math: Why Reach Isn’t Revenue.
  • Once you see the pattern manually, automate the pull with n8n and let Claude do the scoring at scale so you’re not doing this by hand every month.

If you’re deciding between formats while you rebuild your posting habits, the format question isn’t a guess either – I ran the same kind of breakdown on carousels vs. text posts, and the results surprised me. Worth reading before you pick your next format: Carousel vs Text Post: The Full 51-Post Breakdown.

The Actual Takeaway

LinkedIn’s public guidance on feed ranking has always been vague by design – they’ve said openly that relevance and “meaningful engagement” drive distribution, without publishing the weights (LinkedIn’s own feed content guidelines confirm the emphasis on genuine interaction over passive consumption). That vagueness is exactly why guessing doesn’t work and measuring does. You don’t need LinkedIn to publish the algorithm. You need your own data, run through a pipeline you control, telling you what’s actually happening on your account – not someone else’s.

Build the pipeline once with tools like n8n and Claude, and you stop reacting to every algorithm rumor and start posting based on what your own numbers say.

Discover more from Alington Media

Subscribe now to keep reading and get access to the full archive.

Continue reading