How to Run a Blog Content Audit That Finds What to Fix, Keep, and Cut

What a Content Audit Produces (and What It Does Not)
A content audit produces three lists: posts to keep as they are, posts to fix with specific improvements, and posts to cut or consolidate. That is the entire output. If your audit ends with a spreadsheet of URLs and traffic numbers but no decision per post, you have an inventory, not an audit.
The distinction matters because most audit guides stop at the inventory stage. They tell you to crawl your site, export your URLs, pull traffic data, and sort by pageviews. You end up with a spreadsheet that shows which posts get traffic and which do not. That is useful data, but it does not tell you what to do with each post. A post with zero traffic might be a cannibalisation victim that deserves a rewrite, or it might be genuinely thin content that should be removed. The traffic number alone cannot tell you which.
A proper audit scores each post across multiple signals, applies decision thresholds, and produces an action list. This post covers the scoring framework, the thresholds, and how to turn the results into a prioritised plan you can execute over weeks rather than staring at a spreadsheet for months. Understanding how topical authority works and why auditing your existing coverage is the first step to building it gives you the strategic context for why this process matters.
The Five Signals That Score Every Post
- Traffic trend (not raw traffic). A post getting 200 visits per month but declining 15% month-over-month is a worse signal than a post getting 50 visits but growing. Use the last 6 months of data from Google Search Console or GA4. Declining posts need intervention. Flat or growing posts can wait.
- Ranking position for the target keyword. Posts ranking positions 1 to 3 are keepers. Positions 4 to 10 are fix candidates (they are close enough to improve with on-page changes). Positions 11 to 20 may respond to a content refresh. Below 20, the post either needs a full rewrite or the keyword target should change.
- Content quality score. Assess heading structure, content depth (word count relative to competing pages), internal links, image alt text, and meta fields. A post with a thin 400-word body, no internal links, and a missing meta description scores low regardless of traffic.

| Signal | Weight | Keep Threshold | Fix Threshold | Cut Threshold |
|---|---|---|---|---|
| Traffic trend (6-month) | 25% | Flat or growing | Declining 5-20% | Declining 20%+ or zero |
| Ranking position | 25% | Positions 1-3 | Positions 4-20 | Below 20 or not indexed |
| Content quality score | 20% | Above 70/100 | 40-70/100 | Below 40/100 |
| Cannibalisation risk | 15% | No overlap detected | Partial keyword overlap | Full cannibalisation with stronger post |
| Content freshness | 15% | Updated within 12 months | 12-24 months old | Over 24 months, no updates |
Weight these signals based on your blog size. For blogs under 50 posts, traffic trend and ranking position carry the most weight because you have less content to lose. For blogs over 100 posts, cannibalisation risk becomes more pressing because the probability of overlapping posts increases with volume. Artikle.ai runs this scoring automatically through a site crawl that scores every page for content quality, flags cannibalisation, and maps your current topical coverage.
The content quality component maps to the same signals used in on-page SEO scoring. Real-time SEO scoring on a 100-point scale that measures heading structure, keyword placement, internal links, and content depth per article gives you the quality score without building a manual rubric.
How to Pull the Data You Need from Search Console and Your CMS
You need three data sources: Google Search Console for ranking and click data, GA4 for on-site behaviour, and your CMS for content metadata. The entire data pull takes 30 to 60 minutes for a blog with 50 to 100 posts.
In Google Search Console, go to Performance, set the date range to the last 6 months, and export by Pages. This gives you clicks, impressions, average position, and CTR per URL. Sort by impressions descending. Posts with high impressions but low clicks have a CTR problem, often a weak title tag or meta description. Posts with declining impressions over the period are losing search visibility.
In GA4, pull the Pages and screens report for the same 6-month period. Export sessions, engaged sessions, average engagement time, and conversions by page path. Cross-reference with the Search Console export. A post with strong organic traffic but a 10-second average engagement time has a content quality problem: people arrive, scan, and leave without reading.
From your CMS, export the content inventory: title, URL, publish date, last modified date, word count, category, and author. Most CMS platforms (WordPress, Ghost, Sanity, Webflow) support CSV export or have plugins for it. The publish date and last modified date feed the freshness signal. Word count gives a rough proxy for content depth, though a 3,000-word post filled with filler is worse than a focused 1,200-word post.
Combine all three exports into a single spreadsheet with one row per URL. This is your audit workbook. Every post gets scored against the five signals from this single source.
Setting Keep, Fix, and Cut Thresholds That Match Your Blog Size
- Blogs with under 30 posts should set conservative cut thresholds. Removing content from a small blog reduces your topical coverage quickly. Set the cut threshold at posts scoring below 25/100 across all five signals. Fix everything between 25 and 60. Keep everything above 60.
- Blogs with 30 to 100 posts can use standard thresholds. Cut below 30/100. Fix between 30 and 65. Keep above 65. At this size, you likely have 5 to 15 posts that should be consolidated (two posts targeting the same keyword merged into one stronger piece).
- Blogs with 100+ posts should be more aggressive. Cut below 35/100. Fix between 35 and 70. Keep above 70. Large blogs accumulate thin content faster, and Google treats a site with 40% low-quality pages differently than a site where 90% of pages meet a quality bar.
The "cut" action does not always mean delete. For posts with backlinks, redirect the URL (301) to the closest relevant post or the parent cluster page. For posts that cannibalise a stronger page, merge the unique content into the stronger post and redirect. Only delete posts with zero backlinks, zero traffic, and no salvageable content.
Adjust thresholds after the first pass. If your standard thresholds mark 60% of your blog for cutting, the thresholds are too aggressive for your current quality level. Lower them, fix the worst posts first, and raise the bar gradually over 3 to 6 months.
Detecting Keyword Cannibalisation Across Posts
Keyword cannibalisation happens when two or more posts on your site target the same primary keyword or closely overlapping keyword clusters. Google picks one to rank and suppresses the other. Neither performs as well as a single consolidated piece would.

Detection is straightforward. In your audit spreadsheet, add a column for primary target keyword. If you never assigned target keywords, use Google Search Console: the query driving the most impressions to a URL is a reasonable proxy for its primary keyword. Sort the spreadsheet by primary keyword. Any keyword appearing against two or more URLs is a cannibalisation candidate.
Confirm cannibalisation in Search Console by checking the query-level data. If the same query shows impressions for two different URLs and the ranking position fluctuates for both (one ranks position 5 one week, the other ranks position 8 the next, then they swap), Google is alternating between them. That is confirmed cannibalisation.
Resolution follows a simple rule: keep the stronger post, merge unique content from the weaker post into it, and 301 redirect the weaker URL to the stronger one. Strength means the post with better traffic trend, higher quality score, and more backlinks. After merging, update the internal links across your site to point to the surviving URL. This is one area where the consolidation effort pays off quickly: merged posts often jump 5 to 10 positions within weeks because Google receives a single clear signal instead of a split one.
Turning Audit Results into a Prioritised Action Plan
- Week 1 to 2: Fix the quick wins. Posts scoring 50 to 65 that need minor improvements (updated meta description, added internal links, refreshed statistics) can be fixed in 15 to 30 minutes each. These are the highest ROI fixes because the content is already close to the keep threshold.
- Week 3 to 4: Consolidate cannibalised posts. Each merge takes 1 to 2 hours (combine content, set up redirect, update internal links). Prioritise merges where both posts rank on page 2, since the combined post has the best chance of reaching page 1.
- Month 2 to 3: Rewrite fix-category posts. Posts scoring 30 to 50 need structural rewrites, not surface edits. Treat these as new content briefs with the advantage of an existing URL and any accumulated backlinks.
The action plan connects directly to your content calendar. Rewrites compete for the same production time as new posts. A practical split for most teams: 70% new content, 30% refresh and rewrite work. This ratio keeps your topical coverage growing while improving existing assets.
Artikle.ai connects audit findings to execution through competitive intelligence that identifies content gaps your competitors rank for and turns audit findings into a prioritised publishing calendar. Gap analysis and refresh priorities feed into the same calendar, so your team works from a single queue rather than juggling separate new-content and audit-fix lists. For SEO consultants running audits for clients, the platform lets you turn audit recommendations into published content without hiring writers.
Running Audits on a Schedule Instead of Once a Year
A content audit is not a one-time project. Blogs that audit quarterly catch problems before they compound. A post that starts declining in Q1 can be fixed before it drops off page 1. Wait until the annual audit and that same post may have fallen to page 3, requiring a full rewrite instead of a quick refresh.
Quarterly audits do not require a full five-signal review every time. The lightweight version takes 2 to 3 hours: pull the last 90 days of Search Console data, filter for posts with declining impressions or position drops greater than 3 positions, and score those posts against the full framework. This gives you a shortlist of 5 to 15 posts that need attention, not a full-blog review.
Annual audits go deeper. Once a year, run the full crawl, re-score every post, check for new cannibalisation (especially after a period of heavy publishing), and reassess your topical clusters. This is when you retire old clusters that no longer align with your business focus and identify new clusters to build.
Content refresh is easier when the tooling supports it. Content refresh that handles surgical updates and full rewrites through the CMS with post-publish verification means your team can execute fixes without switching between analysis tools and the CMS editor. The three pricing tiers include content refresh for surgical updates and full rewrites, so audit-driven fixes do not require separate tooling or budget.
If your blog has grown without a structured audit, start now. The first audit is the hardest because you are scoring the full backlog. Every audit after that is incremental. Start a free trial and run an automated content audit on your site in under five minutes.

