“Publish 100 articles in 100 days” and “ship one perfect 5,000-word post a month” are both wrong for most indie sites. The right call changes with domain age, niche competition, and what your Search Console data actually says this month. This is the data-driven framework I run on the first of every month to decide whether to write more pages or fix the ones I have.
TL;DR
- Volume buys coverage; quality buys ranking. More pages match more long-tail queries; better pages climb for queries you already match. Pick based on data, not your mood.
- If your average position is rank 50+, stop expanding and rewrite your top pages by impressions. If position is decent (rank 10-30) and you have few indexed pages, expand into proven clusters.
- The 2026 reality: Google merged the Helpful Content System into its core ranking in March 2024, and the March 2026 core update explicitly went after scaled content abuse. Unedited AI batches are no longer a coin-flip risk; they are the documented cause of 50-80% traffic drops.
- Enforce a quality floor in a prebuild script, not with editorial willpower, so volume never quietly degrades into filler.
Why the order matters
Volume buys coverage: more pages mean more chances to match the long tail. Quality buys ranking: stronger pages move up the SERP for queries you already appear in. Most indie sites get the sequence backwards. They push volume when they should fix existing pages, or polish a single post forever when they should be expanding a working cluster. The data to pick correctly is already sitting in Search Console. You just have to slice it the right way.
The stakes changed after the March 2026 core update, which named scaled content abuse as a primary target. Google’s own definition is content “generated for the primary purpose of manipulating Search rankings and not helping users… no matter how it’s created” — AI-generated pages included. Sites that shipped hundreds or thousands of lightly-edited AI pages reported traffic drops of 50-80%. So “volume” in 2026 only works when each page clears a real quality bar.
How to read your own data
Pull a 90-day Search Console report and check these five signals before deciding anything:
| Signal | Threshold (as of June 2026) | What it tells you |
|---|---|---|
| Indexing rate (indexed / submitted) | Under 50% | Quality, not volume, is your problem |
| Average position | Rank 50+ | Pages are weak, not few — invest in rewrites |
| Top-10 CTR | Under ~5% at rank 1-3 | Titles and snippets need work, not more content |
| Zero-impression pages after 90 days | Any | Dead weight; more like them will not help |
| ”Crawled - currently not indexed” share | Rising | Google fetched the page and judged it not worth indexing |
Two Search Console statuses get confused constantly. “Discovered - currently not indexed” means Google knows the URL but has not crawled it yet — usually a crawl-budget or internal-linking issue. “Crawled - currently not indexed” is the one to worry about: Google fetched the page and decided it was not worth indexing, which usually points to thin or duplicate content. A rising crawled-not-indexed share is the clearest single sign that you should stop writing and start fixing.
On CTR, calibrate to the AI Overviews era, not to 2023 charts. As of June 2026, average rank-1 CTR sits near 27.6% (down from roughly 39.8% before AI Overviews), rank 2 near 15%, and rank 10 under 2%. On informational queries where an AI Overview shows, organic CTR has fallen about 58-61% from mid-2024 levels per Seer Interactive’s analysis. So if you sit at rank 3 with a 2% CTR, the fix is a better title and snippet, not three more articles.
Quick verdict
If average position is bad (rank 50+), invest in quality. If average position is decent (rank 10-30) but you have few indexed pages, invest in volume. Run the decision once a month against the data, then commit to it for the month.
The monthly workflow
1. Pull a 90-day report by page and find the dead weight
Use the Search Console API, or just export Performance > Pages as CSV and grep it:
# Export Performance > Pages as CSV, then:
awk -F, 'NR>1 && $2==0 {print $1}' gsc-pages-90d.csv | wc -l
# count of pages with zero clicks
awk -F, 'NR>1 && $3==0 {print $1}' gsc-pages-90d.csv | wc -l
# count of pages with zero impressions <- these are your "dead weight"
2. Rewrite before you write new
For pages with impressions but rank greater than 20, one rewrite is usually worth three new articles. Write your quality floor as a YAML config you can grep against, so “quality” stops being a vibe:
# .content-quality.yml
min_words: 800
required_sections:
- lead
- how_to_tell
- step_by_step
- faq
min_internal_links: 3
min_outbound_refs: 1
must_have_code_block_if:
- category: indie-dev
- category: troubleshooting
3. Expand only where you already rank 5-15
This is the one place volume reinforces topical authority instead of diluting it. Identify clusters by primary keyword stem, then write 3-5 more cluster articles around the page that already ranks:
awk -F, 'NR>1 && $4 >= 5 && $4 <= 15 {print $1, $4}' gsc-pages-90d.csv \
| sort -k2 -n | head -20
# top candidates to thicken with cluster articles
4. Enforce both floors in the build
Bake a weekly publish floor and the quality floor into a prebuild script that fails the build, so neither depends on willpower:
// scripts/content-floors.mjs
import yaml from 'yaml';
import { readFileSync } from 'node:fs';
const cfg = yaml.parse(readFileSync('.content-quality.yml', 'utf8'));
for (const article of newArticlesSinceLastBuild()) {
const wc = article.body.split(/\s+/).length;
if (wc < cfg.min_words) fail(article, `under ${cfg.min_words} words`);
const headings = (article.body.match(/^## /gm) || []).length;
if (headings < 4) fail(article, 'fewer than 4 H2 sections');
const internalLinks = (article.body.match(/\]\(\/[a-z]+\/articles\//g) || []).length;
if (internalLinks < cfg.min_internal_links) fail(article, 'thin internal linking');
}
5. Merge or retire dead weight every month
Pages live 60+ days with zero clicks should be merged into a stronger neighbor or noindexed — never blind-deleted, because you lose any link equity that existed. The merge target gets a 301:
# _redirects (Astro/Netlify-style)
/articles/dead-thin-page /articles/stronger-cluster-pillar 301
6. Decide volume vs quality from the data
A single rule of thumb, run monthly:
indexing_rate < 0.5 -> PAUSE volume; rewrite + dedupe
avg_position > 50 -> PAUSE volume; rewrite top 10 by impressions
zero_impression_pct > 30 -> PAUSE volume; audit and noindex stragglers
otherwise -> GO volume in proven clusters
7. Log the decision
A 5-line entry per month keeps you honest and gives you something to review at week 8 instead of panicking:
- month: 2026-05
indexing_rate: 0.62
avg_position: 18
decision: volume
cluster_focus: ['firebase-hosting', 'astro-static-sites']
target_count: 18
How to verify it worked
- Re-check Search Console 4 weeks after a quality pass. Average position for the rewritten URLs should improve by at least 5 positions; if it does not, the rewrite did not add anything Google values.
- After a volume push in a cluster, sitewide impressions for that cluster’s keyword theme should rise even if individual pages do not all rank yet.
- Indexing rate should trend up, not down. If it drops, you pushed volume when you should have invested in quality.
Common pitfalls
- Defining “quality” as word count. A 3,000-word article that answers nothing is worse than a 600-word article that answers exactly one question well.
- Treating “volume” as lightly-edited AI output. This is the exact pattern the March 2026 core update penalized, and you cannot un-publish your way back out fast.
- Trying to be Wirecutter on a 3-month-old domain. You do not have the authority budget for deep comparisons yet. Start with how-tos and troubleshooting.
- Refusing to ship until it is perfect. Indie sites die from not shipping far more often than from shipping something merely good.
- Picking rewrite targets by impressions, not clicks. Big impressions on a bad-intent query is noise. Sort by clicks.
- Deleting thin articles instead of merging. Deletion throws away whatever link equity the page earned; a 301 keeps it.
FAQ
- How many articles per week is right?: Whatever you can sustain for 12 months at your quality floor. For most solo writers that is 2-5 per week; with AI assistance and real editing it can reach 5-10 — but only if each page clears the floor.
- Is AI-assisted writing low quality by default?: No, but unedited AI output is, and Google now treats batches of it as scaled content abuse. The difference is whether a human added a real point of view, real examples, and removed generic filler. A prebuild similarity check helps flag AI-flavored drafts before they ship.
- Should I delete old thin articles?: Merge first; delete only when there is nothing to merge into. Deletion loses link equity, while a 301 carries it to the merge target.
- How long until volume starts paying off?: On a new domain, expect 6-9 months minimum before topical authority compounds. Do not judge the strategy at week 8 — that is what the monthly log is for.
- Does AI Overviews change the volume case?: Yes. With rank-1 CTR near 27.6% and AI Overviews cutting clicks ~58-61% on informational queries (as of June 2026), thin informational pages earn fewer clicks than they used to. Lean toward depth and specifics that are worth citing rather than thin coverage.
- What is a reasonable quality floor in 2026?: 800+ words, 4+ H2 sections, a real code or config block for technical topics, 3+ internal links, 1 outbound reference, and one specific scenario in the lead.
Related
- Setting a publishing cadence you can actually keep
- When (and how) to refresh old articles for traffic
- Scaling content with AI without tanking quality
- Running a site-wide content audit
- Avoid content duplication when scaling fast
Tags: #Indie dev #Content ops #SEO #Website planning #Long tail