syted

syted blog

SEO Content Strategy Template: Three Files That Decide

Most people searching for an SEO content strategy template want a file they can fill in tonight and act on tomorrow. What the search results hand them is a form, a PowerPoint deck, or a subscription prompt. This article gives you the template itself, as three plain files, plus the rule that decides each column. Nothing here is gated and nothing needs a tool account.

A template is useful for exactly one reason: it fixes the decisions you have to make before writing, so you stop making them again per article. It is not useful as a container for prose. Keep that distinction and the rest of this is mechanical.

What the pages ranking for this query actually hand you

We ran the search results for seo content strategy template on Ahrefs the day this was published, United States, top ten positions. Seven of the ten organic results have seo content strategy template as their own top keyword, so the results are genuinely about this query and not about something adjacent. The problem is what they contain.

Position Page Prose Template you can fill
1 notion.com template collection listing links to ten brief products
2 AI Overview n/a n/a
3 jotform.com SEO content request form ~2,000 words a 9-field intake form
4 template.net SEO action plan ~150 words paid, behind a subscription
5 slidegeeks.com SEO content development listing PowerPoint slides
6 happeo.com SEO roadmap guide ~850 words a screenshot of someone else's
7 olivermunro.com SaaS SEO framework ~4,000 words no table, no columns

The result ranked third is a form that collects content requests from clients, with fields for age, gender, household income and deadline. That is an agency intake document. It is a reasonable page, and it is not a content strategy.

Position four is a product listing of about 150 words that says "Subscribe to download". Position six shows an image of a roadmap template built by a third party and never reproduces its fields in text. The only page with real depth, position seven at roughly 4,000 words, is a staged framework in bullet lists with no columns to fill at all.

Two things are missing from all ten. None of them connects the template to Google Search Console, so no column ever gets filled with a measurement. And none of them carries a column for who the ranking pages are written for, which is the single check that stops you writing a page for the wrong reader.

The backlink floor here is close to nonexistent: five of the organic results have zero referring links to the ranking URL, and the strongest performer among them earns 62 visits a month. That is a weak page one, which is the only honest reason to write for a query at all.

The template is three files, not one document

A single document fails because the three things you are tracking change on different clocks. Keywords change when the market moves. Page decisions change when you write. Measurements change weekly. Put them in one file and every edit touches rows you did not mean to touch.

content-strategy/
  inventory.csv        # one row per candidate query, the decision lives here
  pages/<slug>.md      # one record per page you committed to write
  reviews/<date>.csv   # exported from Search Console, never typed by hand

Put the directory in the same repository as your site. Three reasons, in order of how much they matter. The decisions become reviewable in a diff, so you can see when you changed your mind about a query. Nothing is lost when a trial expires. And the writer and the site share one source of truth about which slug owns which query.

If you prefer a spreadsheet, the columns below work unchanged. The only property you lose is history, and history is what tells you six months later why you skipped something.

File 1: the keyword inventory, column by column

This is the file that does the work. One row per candidate query, filled before anything is written, with thirteen columns. Here it is with the two rows this article came from:

keyword,volume,kd,parent_topic,parent_volume,tp,audience_verdict,audience_evidence,decision,slug,measured_on,review_due,notes
seo content strategy template,320,0,content strategy template,2252,400,pass-caveat,"7/10 top_keyword matches query; #1 and #10 written for enterprise marketing teams",write,seo-content-strategy-template,2026-10-31,2027-01-29,"page one has no backlink floor"
seo content calendar,138,0,what is a content calendar,3200,350,unknown,"not checked yet",hold,,2026-10-31,,"cadence angle risks contradicting our own position"

Each column exists because leaving it out costs you an article. The rules:

  • keyword: the exact string, lowercase, as you typed it into the tool. Not a topic, not a theme. A row that says "content marketing" is not a row.
  • volume and kd: measured, with a country, never estimated. Our floor is 50 searches a month and a difficulty of 20 or less. Comparison queries are exempt from the volume floor and never from the difficulty ceiling, because a comparison earns clicks from people already deciding.
  • parent_topic: the query the tool thinks this one belongs to. Read it first, always. More on this in the next section.
  • parent_volume: the parent's own volume, which tells you whether you are looking at a family head you cannot win or a child you can.
  • tp: traffic potential, meaning what the current top page earns across all its queries. Treat it as a ceiling someone else is standing on, not a forecast.
  • audience_verdict: pass, pass-caveat, fail, or unknown. An empty cell is not allowed, and unknown blocks the row from being written.
  • audience_evidence: one sentence of what you actually saw. Six months later this is the only column you will trust.
  • decision: write, hold, skip-duplicate, skip-audience, wait-authority, or update-existing. Six values, no free text.
  • slug: filled when the decision is write, before writing, because a slug collision is permanent in a way a bad title is not.
  • measured_on and review_due: both dates. The first says how stale your numbers are. The second is a promise to look again.
  • notes: the reserve you want your future self to read. Keep it to one line.

The discipline that makes this file work is that decision is never blank and never prose. A row in hold with a one-line reason is finished work. A row with a paragraph of thinking in it is an unmade decision pretending to be progress.

Two numbers from the row above are worth sitting with. The volume is 320 and the difficulty is zero, which is why this query is writable at all. Our own content strategy for SEO article targets a neighbour in the same vocabulary, and the reason both can exist is sitting in the parent_topic column.

The parent topic column stops duplicates before they exist

The parent topic is the query your tool believes sits above the one you typed. When two candidates share a parent, they usually share one page of results, and writing both means writing two pages that compete with each other. That is the duplication you build yourself, and it is the expensive kind.

Measured today, in the United States, the family around our published article looks like this:

Keyword Volume KD Traffic potential
seo content strategy 2,585 22 9,300
seo and content strategy 959 22 9,800
content strategy for seo 772 11 8,000
content strategy and seo 481 9 11,000
seo content strategy template 320 0 400

The first four are word-order variants of one query with one page of results. We wrote one of them and the others are permanently closed to us, which is the correct outcome. The fifth has a different parent (content strategy template, 2,252 searches, difficulty 7) and a different page of results, which is why it earns its own article.

The same column catches a second failure, and this one is spectacular. Three candidates measured in the same session:

  • seo content plan: 85 searches a month, traffic potential 252,000
  • seo plan for community content: 134 searches a month, traffic potential 427,000
  • content strategy in seo: 151 searches a month, traffic potential 13,000

None of those numbers describes the query next to it. They describe whatever enormous page currently ranks, which earns its traffic from a parent nobody in your position is going to beat. A traffic potential more than a hundred times the volume is a tell, not an opportunity. Read it as "this result belongs to someone else's page" and move on.

The inverse tell is just as useful. seo strategy template measures 902 searches a month at difficulty 7, with a traffic potential of 10. High volume, almost no earnings for whoever wins it. That query is answered before the click, and a row like that belongs in hold with the number written down, not in write because the volume looked good.

If you want the longer version of how to pick between candidates, our content strategy for SEO piece covers the selection rules, and how long SEO takes covers what to expect once a decision is made. No one can guarantee a ranking from any of this, and a template that implies otherwise is lying to you in a column.

The audience column: the check nobody puts in a template

Here is the column that does not exist in any of the ten pages ranking for this query. Before a row can move to write, you look at who the current page one is written for, and you write down what you saw.

The data you need is in two fields most tools expose per result. The first is the top keyword of each ranking page, meaning the query that page is really known for. The second is its predicted page type. Read both before the titles.

On our row, seven of the ten results carry seo content strategy template as their own top keyword, which says the results are about this query. Position one does not: it is a Notion collection known for marketing project plan template, aimed at marketing communications managers. Position ten is an enterprise analytics vendor writing about ecommerce content strategy. That mix is why the verdict is pass-caveat and not pass.

A fail looks different and is easy to recognise once you have seen it. The page one is service pages, agency roundups, and "best company for X" listings. Those results tell you the people typing this query are hiring someone, not doing the work. We have failed queries on exactly that evidence, and the counts are written down each time. Good volume plus the wrong reader produces traffic and no customers, which is the failure mode worth avoiding most.

Two practical rules for filling this column honestly:

  1. Judge by what the search engine sends to a page, never by the shape of its URL. A path containing /services/ can rank for a how-to query and a path containing /blog/ can be a sales page.
  2. One caveat line is enough. If the evidence takes a paragraph, you are arguing yourself into a row you already know is wrong.

This check is the same one we run for customers before writing anything, and it is described in more detail in SEO content writing. It is also the reason our inventory has rows that will never be written, which is the point of having the column.

File 2: the page record, one file per committed page

When a row moves to write, it gets a file. The record exists so that the page has one job, one promise, one review date, and one way to be judged dead. Here is the record for the article you are reading:

---
keyword: seo content strategy template
parent_topic: content strategy template
slug: seo-content-strategy-template
job: answer-then-offer
promise: "Hand over the three files and the rule behind every column."
serp_checked: 2026-10-31
pages_counted: 7
gap: "no ranking page connects the template to Search Console or to audience"
links_out: [content-seo-strategy, seo-content-audit, seo-workflow]
review_due: 2027-01-29
kill_criteria: "fewer than 10 impressions after 90 days indexed"
---

The job field takes one of four values and nothing else: answer-then-offer, compare, convert, support. A page with two jobs reads as two half pages, and the reader leaves at the seam.

kill_criteria is the field everyone skips and the one that keeps the inventory honest. Written in advance, it is a measurement. Written afterwards, it is an excuse. Ours is deliberately low: fewer than ten impressions after ninety days indexed means the page was never in the running, which is a different problem from being in the running and losing.

Now the part a template must refuse to do. The record does not contain the outline. Our own position on this is blunt, and it is in content strategy for SEO under the heading about writing the brief from the results rather than from a template: the structure of a page comes from what the current page one actually covers, measured per query, not from a reusable skeleton.

So the template fixes the columns and the decision rules. The outline comes from the search results, each time, and it is different every time. A template that ships an outline is the reason so much published content reads the same, and the pages ranking for this very query are the evidence.

File 3: the review log, filled by Search Console

The third file is the one nobody hands you, because it cannot be typed by hand. You pull it from the Search Console API, on a schedule, into reviews/<date>.csv.

The endpoint is searchanalytics.query. The request body that matters:

{
  "startDate": "2026-08-01",
  "endDate": "2026-10-31",
  "dimensions": ["page", "query"],
  "type": "web",
  "rowLimit": 25000,
  "dataState": "all"
}
curl -s -X POST \
  "https://www.googleapis.com/webmasters/v3/sites/sc-domain%3Aexample.com/searchAnalytics/query" \
  -H "Authorization: Bearer $GSC_TOKEN" \
  -H "Content-Type: application/json" \
  -d @query.json

Four details from the official reference that change what you get back:

  • rowLimit has a valid range of 1 to 25,000 and a default of 1,000. Leave it out and your export is silently truncated at a thousand rows, which on a site of any size means the long tail you were looking for is simply absent.
  • startRow is zero-based and defaults to 0. Pagination is yours to write.
  • dataState controls freshness. The documentation states that if the field is omitted, only finalized data is returned. The Performance report help page also warns that the newest data "can be preliminary, meaning it's still being collected and might change in the next few hours".
  • type defaults to web and accepts discover, googleNews, news, image, video and web. The older searchType field is deprecated in favour of type.

Available dimensions for grouping include date and hour alongside the filter dimensions country, device, page and query. Set the date range as far back as the interface and API will let you for the property, and do not trust any specific retention figure you read in an SEO article, including the one everyone repeats. The official report help page does not state a retention limit at all.

What you do with the export is two columns in the inventory: measured impressions and measured clicks per slug, dated. Then you read impressions before clicks. A page with impressions and no clicks is being shown and not chosen, which is a title and description problem. A page with neither is not in the running, which is a different problem with a different fix.

We will use our own numbers rather than invent better ones. Over the twenty-eight days before publication, across the syted blog: seo-for-personal-trainers 92 impressions and 0 clicks, seo-for-auto-repair-shops 81 and 0, seo-for-interior-designers 76 and 0, how-to-get-photography-clients 60 and 0, webflow-vs-wordpress-seo 47 and 0. Five pages being shown, none being chosen.

Those five rows are an entry-point problem, and the review file is what makes them visible instead of vague. Our SEO content audit piece covers what to do with each verdict, and why a site is not showing up on Google covers the case where there are no impressions to read.

What the template cannot decide, with Google's own wording

A template invites two superstitions. Both are answered in Google's published documentation, so we will quote it rather than argue.

The first is length. Google's page on creating helpful content lists, among the signs of search-engine-first writing, the question "Are you writing to a particular word count because you've heard or read that Google has a preferred word count?" and answers it in the same breath: "(No, we don't.)" So the template gets no target length column. Coverage of the question is the standard, and it is judged per query.

The second is volume of output. The same page lists as warning signs "Are you producing lots of content on many different topics in hopes that some of it might perform well in search results?" and "Are you using extensive automation to produce content on many topics?" Those sentences are why the inventory has a decision column with a skip value in it. A strategy whose only rule is "publish more" is the thing being described.

On cadence specifically, we checked and found no Google documentation stating that publishing frequency is or is not a ranking factor. So we will not claim either. What we will say is that the quoted warnings are about producing many pages hoping some land, and a template that schedules output without a decision rule per row is doing exactly that. The calendar is a tracking artefact. It is not the lever. Our piece on whether blogging helps SEO is the longer version of that argument.

The third superstition is newer. Teams are now adding columns for AI assistant visibility, and inventing requirements to fill them. Google's own page on AI features is explicit: "There are no additional requirements to appear in AI Overviews or AI Mode, nor other special optimizations necessary." It adds that "You don't need to create new machine readable files, AI text files, or markup to appear in these features" and that "There's also no special schema.org structured data that you need to add". Eligibility is being "indexed and eligible to be shown in Google Search with a snippet", with "no additional technical requirements".

Two consequences for the template. Your AI visibility column is not a list of files to create, it is an observation you record. And the traffic is not missing from your review file: Google states that AI features traffic is counted in overall search traffic and reported in the Performance report within the "Web" search type. Google also says plainly that "Indexing and serving isn't guaranteed" even when a page meets every requirement, which is the honest ceiling on any plan. If you want the measurement side of that, LLM SEO and answer engine optimization go into how citations are counted.

Running this when you are the only person

The template above assumes one person does keyword selection, writing, and review. That is the case it was built for, and it changes three things.

Fill the inventory in batches and write from it daily. Measuring thirty candidates in one sitting costs you one session of tool work and leaves you a month of decisions already made. Measuring one candidate per article means every writing day starts with research, and research is the step that gets skipped when the day is short.

Re-measure before you write, not only when you harvest. Numbers move faster than people expect, and traffic potential moves faster than difficulty. A query we measured eight days earlier came back with its traffic potential cut by four fifths, because a large AI Overview had appeared above the results. The volume had not moved at all. That is why measured_on is a column and not a note.

Put the review on a date, not on a feeling. One session per quarter, reading the export, moving rows to update-existing or applying their kill criteria. Pages that need nothing are the most common verdict and the easiest to get wrong by fiddling with them.

What stays manual is the judgement in two columns: audience_verdict and job. Everything else in this template can be scripted, and we have written about which parts survive SEO automation and which break. A five-stage version of the whole loop, from query to published page, is in our SEO workflow piece, and the SaaS-specific version of the selection rules is in SEO for SaaS.

One last honest note, since this is a template article and templates are where promises get made. Results from search work vary, and nobody can guarantee a position or a date for one. What this template buys you is not a ranking. It is a record of why you wrote each page, what you expected, and the date you agreed to look again. That record is what makes the next decision better than the last one, which is the only compounding part of the job.

FAQ

How do I write a content strategy?

Decide three things and write them down: which queries you will answer, which page owns each one, and when you will check whether it worked. The inventory file holds the first two and the review file holds the third. Everything else people put in a content strategy document, including personas, tone of voice and pillar diagrams, is downstream of those decisions and does not change which page gets written on Tuesday.

What are the 7 steps in creating a content strategy?

The step counts vary by whoever wrote the list. The sequence that survives contact with a real site is shorter: harvest candidate queries, measure volume and difficulty with a country set, read the parent topic to collapse duplicates, run the audience check on the current results, decide and record a verdict per row, write the committed rows with the outline taken from the results, then review on the date you set. Seven steps happens to be the count there, which is a coincidence rather than a framework.

What are the 5 C's of content creation?

It is a mnemonic, usually some combination of clear, concise, compelling, credible and consistent, and it varies by source. It is not a bad checklist for a draft, and it decides nothing about which page to write. Keep mnemonics for editing and keep columns for decisions.

Is a content calendar the same as a content strategy template?

No, and conflating them is the most common way a strategy turns into a publishing schedule. The calendar answers "when does this go out", which is a tracking question. The template answers "why this query, which page owns it, and what makes it a failure", which is the decision. A calendar built on top of a filled inventory is useful. A calendar built instead of one is a list of due dates.

How many rows should the inventory start with?

Enough that you are choosing rather than taking the only option left, which in practice is twenty to thirty measured candidates before you write anything. Below ten you will write whatever is in the file regardless of its verdict, because the alternative is an empty queue. The cost of measuring thirty candidates is one session. The cost of writing from an empty queue is an article aimed at the wrong reader.

How often should I re-measure the numbers in the inventory?

Before writing each row, and in full at your quarterly review. Difficulty drifts slowly, traffic potential can collapse in a week when a results page changes shape, and volume tends to be the most stable of the three. A measurement older than a month should be treated as a hint about which rows to check first, not as the basis for a decision.

Get cited by ChatGPT. Rank on Google.

You found this article through search. That is the whole product.

  • One researched article a day
  • Published on your own domain
  • Keywords checked against live results
Start writing

Get cited by ChatGPT. Rank on Google.

You found this article through search. That is the whole product.

  • One researched article a day
  • Published on your own domain
  • Keywords checked against live results
Start writing