← all articles

How to build a topical authority content plan

Most sites that fail to rank aren’t publishing too little content, they’re publishing the wrong shape of content. I see this constantly across the sites I run: a blog with 80 posts, each chasing a different keyword, none of them connected, none of them deep enough to actually be the best answer for anything. Google has said plainly that it rewards content that demonstrates it was made for people, with real expertise on a subject, not scattered posts optimized for search engines one at a time (Google’s creating helpful, reliable, people-first content guidance is explicit about this).

This tutorial is for operators running a content site, whether that’s a single niche blog or, like theseodesk.com, one property in a network of authority sites. It’s not for someone writing a single article and hoping it ranks. The outcome by the end is a documented content map, organized into pillar and cluster structure, that you can hand to a writer, a freelancer, or yourself six months from now and know exactly what to publish and why.

I built this exact process for the sites I run, including this one, and it’s the same process I’d use whether I’m planning 20 articles or 2,000.

what you need

  • a keyword research tool: Ahrefs Lite plan (roughly $129/mo) or Semrush Pro (roughly $139.95/mo). If budget is tight, Google Keyword Planner is free with an active Google Ads account, though the volume data is bucketed and less precise.
  • Google Search Console, free, verified on your domain via DNS or HTML tag
  • a crawler: Screaming Frog SEO Spider, free up to 500 URLs, £199/year for the unlimited license
  • a spreadsheet (Google Sheets is fine) or Airtable for the content map itself
  • a CMS or publishing pipeline you control. This site runs on markdown files pushed through Cloudflare Pages, which is what the code examples below assume, but the process works with WordPress, Ghost, or anything else
  • basic comfort with the command line if you want to pull Search Console data programmatically instead of clicking through the UI (optional, but it scales better)
  • 4-8 weeks of runway before you’ll see meaningful ranking movement. This is not a plan that pays off in week one.

step by step

1. define your topic boundary

Write one sentence describing what your site is the definitive resource for. Not “SEO,” that’s too broad to build authority around. Something like “SEO tooling reviews and workflow guides for solo operators and small agencies.” This sentence becomes the filter every future article idea has to pass through.

Expected output: a single sentence you can paste into a brief and test new topic ideas against.

If it breaks: if you can’t compress your site into one sentence, it’s already too broad. Narrow it before you touch keyword research, otherwise you’ll build clusters that don’t reinforce each other.

2. seed the topic with head terms

List 5-10 head terms that describe your niche and run them through Ahrefs Keywords Explorer (or Keyword Planner) using the “having same terms” and “also rank for” reports.

Expected output: a raw export of 300 to 1,000+ keyword variants with volume and difficulty scores.

If it breaks: if the export comes back under 100 keywords, your head terms were too narrow. Broaden the seed terms and re-run.

3. cluster by intent, not just topic

Group the keyword list by what the searcher actually wants: informational (“how to X”), comparison (“X vs Y”), transactional (“best X for Y”), navigational (“X review”). Ahrefs’ “Parent Topic” field does a rough first pass, but I always sanity-check by looking at the actual SERP for a handful of terms in each cluster and confirming the same type of page is ranking.

Expected output: clusters of 5-30 keywords, each cluster assigned one intent and one planned URL.

If it breaks: if you check two “different” clusters and the same pages are ranking for both, merge them. Google has already decided they’re one topic, your content map should match that.

4. audit what you already have

Crawl your existing site with Screaming Frog, export the URL list, and cross-reference it against your keyword clusters in the spreadsheet.

Expected output: a gap list with three buckets: covered, thin/needs update, missing entirely.

If it breaks: if Screaming Frog returns almost nothing, check your robots.txt for accidental disallow rules and confirm the crawler is set to render JavaScript if your site relies on it client-side. Don’t assume you have no content until you’ve ruled out a crawl configuration issue.

5. build the pillar and cluster map

Pick one pillar page per major sub-topic, this is the broad, comprehensive page that a beginner and an expert could both land on and get value from. Under each pillar, list 5-15 supporting cluster articles that each answer one narrower question and link back to the pillar.

Expected output: a spreadsheet with columns: pillar, cluster URL, target keyword, intent, status, publish date, internal links in/out.

If it breaks: if a pillar only has 1-2 supporting articles once you’re done listing, it’s not actually pillar-sized. Fold it into a bigger, adjacent pillar rather than forcing it to stand alone.

6. prioritize by opportunity, not personal interest

Score every planned article on three things: search volume, keyword difficulty, and business relevance (does it link toward something you monetize, whether that’s an affiliate link, a lead form, or a product page). Sort by score and take the top 10-20 as your first publishing batch.

Expected output: a prioritized publishing queue, not a to-do list in the order you thought of the ideas.

If it breaks: if everything scores about the same, add a fourth column for estimated months-to-traction weighted against your current domain’s authority. New or low-authority domains should front-load long-tail, low-difficulty terms before attacking head terms, competing for a term Ahrefs rates as “hard” with a brand-new domain is usually a waste of the first few months.

Publish the pillar page even if you plan to expand it later. As each cluster article goes live, link it to the pillar and to 2-3 sibling cluster articles, and go back and add a link down to it from the pillar. This has to happen at publish time, not “eventually.”

Expected output: a growing internal link graph where every new page is connected to at least the pillar and one sibling on day one.

If it breaks: if you skip this step and end up with a stack of orphan pages, run a Screaming Frog crawl, filter for pages with 0-1 inbound internal links, and manually add links back from relevant siblings before you publish anything new.

8. track and iterate through Search Console

Once articles are indexed, check the Performance report weekly for impressions and average position. When a cluster article sits at position 8-20 for its target term, that’s usually a sign to expand and refresh it, add more specificity, add real data, tighten the internal links, rather than publishing a second article on the same topic.

Here’s a simple script I use to pull the last quarter of query data for a property instead of clicking through the UI report by report, using the Search Console API:

from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials

service = build(
    "searchconsole", "v1",
    credentials=Credentials.from_authorized_user_file("token.json")
)
request = {
    "startDate": "2026-04-15",
    "endDate": "2026-07-14",
    "dimensions": ["query", "page"],
    "rowLimit": 5000,
}
response = service.searchanalytics().query(
    siteUrl="https://theseodesk.com/", body=request
).execute()

for row in response.get("rows", []):
    print(row["keys"], row["clicks"], row["impressions"], row["position"])

Expected output: a refresh queue that runs alongside your new-content queue, not instead of it.

If it breaks: if impressions stay at zero for 3-4 weeks after publishing, don’t assume the content is failing, check the URL Inspection tool first. It’s often an indexing problem, not a ranking problem.

common pitfalls

  • chasing volume over intent match. Publishing to hit a keyword-volume number instead of confirming your page format actually matches what’s ranking. A comparison page won’t outrank a listicle just because it targets the same keyword with more words.
  • publishing clusters with no interlinking plan. This is the single most common mistake I see. Writers publish 40 articles, then go back “at some point” to interlink them. That point rarely comes, and you end up with orphan pages Google barely crawls.
  • thin cluster content written to hit a word count. An article that pads to 1,500 words without answering the query more completely than a 600-word competitor won’t outrank it. Google’s Search Quality Rater Guidelines explicitly instruct raters to judge pages on whether they satisfy the query, not on length.
  • no refresh cadence. Treating publishing as one-and-done. Rankings move, competitors update their pages, and a cluster article that ranked well at launch drifts down without a maintenance pass.
  • scaling volume before validating the pillar. Publishing 50 cluster articles under a pillar that hasn’t shown any ranking signal yet. Validate the pillar and a handful of clusters first, then scale the winning pattern.

scaling this

Going from ~10 to ~50 articles: a spreadsheet is still enough. One person (probably you) can do the keyword research, the interlinking, and the weekly Search Console check without extra tooling.

Going to ~100-300 articles: a spreadsheet starts to break down. Move the content map into something with structured fields, Airtable, Notion, or a CMS with typed frontmatter like the bucket and type fields this site uses. At this volume you’ll likely bring in freelance writers, which means you need a documented style guide and templated briefs so quality doesn’t drift between writers. Batch keyword research quarterly instead of ad hoc, re-running the seed process from step 2 against updated SERPs.

Going to 1,000+ articles across a multi-site network: this is closer to what I’m running across the theseodesk network. Manual review of every article stops being possible. You need programmatic content maps (scripts that turn a keyword export into a structured brief), a publish queue that schedules drips instead of dumping everything at once, and automated internal-link auditing rather than manual Screaming Frog checks after the fact. AI-assisted drafting tools become genuinely useful at this scale for first-draft generation, though the quality gate has to move to spot-checks and lint rules rather than eyeballing every piece; aitoolgazette.com tracks which of those tools are actually worth paying for versus which ones just produce more thin content faster. Whatever tooling you use, the pillar-and-cluster structure from step 5 doesn’t change, only the amount of automation wrapped around it.

where to go next

Written by Xavier Fok

disclosure: this article may contain affiliate links. if you buy through them we may earn a commission at no extra cost to you. verdicts are independent of payouts. last reviewed by Xavier Fok on 2026-07-14.

for SEOs
Tracking rankings or scraping SERPs at scale?

Rank checkers and SERP crawlers get blocked and geo-skewed fast on datacenter IPs. Singapore Mobile Proxy runs real 4G/5G mobile IPs that search engines still trust, so your position data stays clean.

see plans →
read on
More from The SEO Desk

Technical SEO, link building, content and SERP strategy, and tool reviews for people who ship growth.

browse all articles →