Skip to content

SEO competitor research

For every keyword in the plan, pull who ranks, how long their articles run, the search intent, secondary keywords and Reddit quotes, then hold the row for approval.

SEO competitor research for every keyword before it's briefed

Every keyword in your content plan goes through the same research before anyone writes a brief for it. The workflow finds who ranks, measures how long their articles run, names the search intent, pulls secondary keywords and collects what real people say about the topic on Reddit. It writes all of it back to the plan row and parks the row for approval.

This is research for one article at a time, not a quarterly competitor report. It was built for Eleken, where it feeds the brief workflow downstream.

Why the research usually stops at a list of URLs

Most competitor research SEO tools answer one question: which domains rank. That is the least useful part for a writer, who needs to know how deep the ranking articles go, what the searcher is trying to get done, and what every ranking page leaves out.

That last part is a competitor gap analysis, and doing it by hand means ten open tabs, a skim of each article, a guessed word count and an hour in Reddit threads. It is slow enough that it rarely happens, so briefs get written from the keyword alone.

Deciding which rivals matter to the business is competitive intelligence, and it happens earlier. This workflow starts once that is settled, at the level of a single keyword.

What the workflow does with each keyword

A run starts when a row in the content plan is set to Research. From there it works through six steps in order:

  1. Assign the keyword to a cluster from the plan's cluster list, as a three-to-five word name.
  2. Pull the top 20 positions from Ahrefs and keep only the organic results.
  3. Search for ranking blog posts specifically, leaving out Reddit and YouTube, then scrape each one and count its words.
  4. Write the search intent as a short title and description.
  5. Pull matching terms from Ahrefs as secondary keyword candidates.
  6. Write five Reddit searches, one each for a problem, a comparison, a recommendation, a how-to and a personal experience, and keep up to three threads from each.

It then reads the comments on those threads through the Arctic Shift API, keeps at most one quote per comment, and moves the row to Approving.

The Reddit step earns its place in the brief. Ranking articles tell a writer what has already been said; the quotes tell them what readers still object to, in their own words. Keeping one quote per comment stops a single loud thread from speaking for everyone.

A word count that ignores the outliers

Averaging the length of ranking articles sounds simple, and it goes wrong on the first odd result. One short glossary page or one sprawling ultimate guide pulls the average somewhere nobody should write to.

So the workflow drops any page under 1,500 or over 9,000 words before it averages, and falls back to 2,500 when nothing is left. The writer gets a length that reflects articles like the one being commissioned, not the extremes.

What lands in the plan row

Each researched keyword gets these columns filled in:

Column

What it holds

Cluster

The topic group the keyword belongs to

Word count

The trimmed average of ranking blog posts

Competitors

The organic top 20, plus a blog-only list

Search intent

What the searcher is trying to get done

Secondary keywords

Matching terms from Ahrefs

Reddit

Quotes and the threads they came from

The row then waits at Approving until a person has read the research and moved it on. That hand-off, and the statuses around it, are described on the SEO workflow management page.

When a competitor fact has to be exactly right

Some pages name rivals directly, like an alternatives page. There a wrong claim about someone's pricing or features is a liability rather than a typo, so the research changes shape.

For Awesomic, a Claude Code build captured each competitor's own website through Jina and wrote a profile in which every claim is tied to a sentence copied from that site, with its address. A script compared each copied sentence with the captured pages, and a claim with nothing behind it was rejected before any page could use it.

Three audits followed: provenance, with a fresh fetch of each source; repetition across pages; and claims that had landed on the wrong competitor. The roster started at 34 competitors, 5 were left out, and 29 pages were built from the rest.

Teams this research suits

It pays back when you publish often enough that briefs are the bottleneck, and when your writers are good enough to use evidence rather than skim past it. It is the right shape for any team whose briefs currently say little beyond the keyword and a word count someone guessed.

It does not track competitors over time. If you want an alert when a rival's rankings move or a new page appears, that is monitoring, a different job, and closer to automated SEO monitoring.

What a researched keyword costs

Each run is a handful of Ahrefs calls, a few Jina searches and page reads, and a series of calls to a small, inexpensive model through OpenRouter. The Arctic Shift API is free to use.

Research for every row runs inside execution capacity, the $2,000-a-month agents route that sits alongside a fractional Head of Content retainer. Getting it running is one to two weeks of work, and the intent prompt and Reddit searches take longest to tune for a new market.

Try it on five keywords

Pick five keywords from your plan that you would brief next. We'll run the research on them during a call, and you decide whether the rows hold evidence your writers would actually use.

Want this built for your team?

Book a call and walk through what we'd adapt for your stack.