Back to Blog
Open SourceContent StrategyMCPClaudeBuild In Public

I Tested 2,000 Reels Against Their Own Baselines. Most Hook Advice Is Folklore.

I built an open-source tool that reverse-engineers what actually works on a niche's Instagram Reels. The strongest finding wasn't a hook to copy. It was one to stop using.

·September 2, 2026·9 min read

Every piece of short-form content advice you've ever read has the same problem. Nobody checked.

"Hook them in the first three seconds." "Lead with a bold claim." "Always end with a comment-for-the-link CTA." These get repeated in every course, every thread, every coaching call, and not one of them arrives with a number attached.

They're folklore. Confident, useful-sounding, completely untested folklore.

So I built a tool to test them. It's called framezero, it's open source and free, and it has now chewed through several thousand reels across a single niche.

Some of the folklore held up. Most of it didn't. And the single strongest finding in the whole dataset was not a hook to start using. It was one to stop.

The Problem With Every "What Works" Analysis

Here's why nobody has actually answered this question properly.

You open an account with 400k followers, sort their reels by views, and look at the top ten. They all did over a million. You write down what they have in common. That's your "analysis."

Except it's garbage, and here's the specific reason: that account had 90k followers eighteen months ago and 400k today. Their recent reels win because the account grew, not because the reels are better. Sorting a catalogue by raw plays mostly measures when something was posted.

Follower growth is a rising tide. It lifts the mediocre reels too. Any analysis that doesn't correct for it is measuring the calendar and calling it craft.

So framezero doesn't sort by plays. Every reel gets an outlier score: its play count divided by the median play count of its own neighbours within ninety days.

A score of 1.00 means "exactly typical for this creator, at that moment in their growth." 2.00 means it doubled its neighbourhood. 0.4 means it flopped relative to what that account was capable of that month.

That one number is the entire foundation. It's the difference between "this reel got a lot of views" and "this reel outperformed," and those are not remotely the same sentence.

What Came Out: The Strongest Finding Was a Negative

Here's what I expected to find. A short list of magic opening shapes. Say it this way, get more views.

That's not what happened.

I classified the opening line of every transcribed reel into archetypes — contrarian, capability, news, problem, demo, and so on — then ran Fisher's exact test on the winners against the controls. Winners being reels that beat their own contemporaneous baseline. Controls being reels from the same creator, same niche, same period, that fell below it.

Most of the "positive" shapes were unremarkable. Contrarian openings leaned toward winners. Capability openings appeared in both cohorts at nearly the same rate, which means for that creator, they're a habit, not an advantage.

Then I looked at the shapes that showed up almost exclusively in the flops.

Openings that gesture at a secret without naming it — the "you won't believe what I found" family. Zero out of fifteen winners. Four out of fifteen controls. That was the largest single split in the entire hook table, in either direction.

Add in openings that lead with the creator's own opinion, openings that lead with irritation, and openings that start on a percentage-about-people stat, and you get eight of fifteen flops and zero winners.

Nearly half the underperformers were explained by four opening shapes that every content coach on the internet actively recommends.

A writer handed a list of hooks to try will try all of them. A writer handed a list of hooks to avoid stops making the mistake. The second list is worth more, and it's the half that every content guide leaves out — because "here are four things to stop doing" doesn't sell a course.

The CTA Everyone Copies Does Exactly Nothing

The other piece of folklore I wanted to kill: the comment-for-the-link CTA. "Comment FRAME and I'll DM you the workflow."

It's everywhere. The obvious lazy conclusion is that it's everywhere because it works.

The slightly-less-lazy conclusion — the one I almost shipped — is "it appears in winners and controls alike, so it's just a habit." That argument is worthless, though, because a habit can't be tested against itself. If a creator does it on 388 of 396 reels, you have no comparison group.

So I split three entire catalogues on it. Every reel, not just the tails.

Two of those creators turned out to make a real choice. One ran 115 reels with the trigger against 1,305 without. Another ran 108 against 119. Both large enough to actually test.

Neither split landed on anything. p = 0.63 and p = 0.52. Across 2,043 reels, the comment-to-DM CTA neither buys reach nor costs it.

That's a far more useful thing to tell a writer than "we can't tell." It means the CTA is free. It isn't suppressing your reach the way half of Instagram Twitter insists, and it isn't buying you any either. Use it or don't, on the merits of whether you want the DMs.

And then the caveat, which matters as much as the result: plays are the only outcome in the index. The trigger's entire job is to produce DMs, and DMs are invisible to this tool. A null result on reach is not a reason to drop a CTA that's earning somebody real leads. Any analysis that doesn't say that out loud will be misread, so I wrote it into the tool's own output.

The Uncomfortable Part: It Refuses to Write Your Hook

Here's the design decision that will annoy some people.

framezero will not give you a hook to paste. It will never output a line you can drop into your next reel.

That was hard to hold. The single most requested thing from any tool like this is "just give me the script." And I could ship that trivially — I've got the transcripts, I've got the winners, generating a lookalike is the easy part.

But a hook you paste is a hook your audience has already seen. The moment you hand a writer somebody else's sentence, you've quietly changed the product from teaching a craft to laundering someone's work.

So the tool is built to separate the two things that actually behave differently:

Structure pools across creators. If a subject or an opening shape works for three different accounts in the same niche, that's a property of the niche, and it's genuinely transferable. The tool marks those REPLICATED and hands them over as standing guidance.

Voice never pools. Averaging two creators' voices produces a third person who does not exist and sounds like nobody. So voice gets measured per creator — sixteen dials with target bands derived from that person's own winners — and it stays quarantined in its own file.

What you get back is territory, not sentences. "Open-source tooling and what it replaces" is territory you fill with your own material. The specific reel somebody already made is not yours to take.

The measured findings are real, by the way. In one catalogue, reels about free tiers ran at 1.82× that account's own baseline across thirteen reels, with 77% of them beating their neighbourhood. Meanwhile that same account's own course-and-cohort promotional posts ran at 0.71×. They were paying a 29% reach tax every time they promoted themselves, and nothing in their dashboard would ever have told them that.

How You Actually Run It

Two things I care about here.

Zero dependencies. No pip install, no virtualenv, no API key, no account. Pure Python standard library. Every statistical test — Mann-Whitney U, Benjamini-Hochberg correction, Fisher's exact — is hand-rolled, because pulling in scipy to compute an error function felt like a betrayal of the whole point. Clone it and it runs.

It's built to be driven by an assistant, not by you. This is the part I'd defend hardest. Nobody is going to use this raw. Everyone's going to point Claude at it.

So it ships an MCP server with twelve tools. You register it once, then say "study this niche for me, start with whoever's worth studying" in plain English, and Claude drives discovery, scraping, topic testing, hook classification, replication, and voice extraction on its own. You never type a command.

And the end of the pipeline emits installable Claude skills — a real writing method with the numbers baked in, dropped into your skills directory, available in any project. The analysis doesn't sit in a report you read once. It becomes a thing you write with.

I've written before that the model is a commodity and MCP is the moat. This is me taking my own advice. The statistics are maybe 800 lines of Python. The reason it's useful is that an agent can operate it.

What I'd Tell You If You Only Read This Far

Stop taking content advice that doesn't come with a number.

Not because the advice is always wrong — some of it held up fine under testing. Because the person giving it has no idea whether it's right, and neither do you, and that uncertainty gets laundered into confidence somewhere between their experience and your feed.

Test it on the account you're actually trying to beat. Correct for their growth or you're just measuring the calendar. Pay more attention to what's killing your reels than to what might save them.

And when a tool offers to write the hook for you, be suspicious of what it's actually handing you. Someone else's sentence, most likely.

It's free, it's MIT, and it took a lot of nights: github.com/Ishan-sa/framezero

I didn't build it to sell. I built it because I got tired of guessing.