In this article
- 01 How to do a content audit: what it decides
- 02 Set the scope before you score anything
- 03 Score every page on the same dimensions
- 04 Turn scores into priorities
- 05 Where Search Console data fits
- 06 Keep, improve, merge, redirect or retire
- 07 Our SEO content audit, completed: all 30 posts
- 08 Four content audit examples from our own blog
- 09 What happened after the audit
- 10 From audit to tickets: a template to copy
- 11 Frequently asked questions
- 12 Continue with the next task
- 13 Sources
How to do a content audit: list every page you publish, decide which ones are in scope, score each page on the same dimensions, turn the scores into a priority, and give every page one action: keep, improve, merge, redirect or retire. The output is a ranked list of tickets, not a spreadsheet of opinions. For a site with 10 to 200 pages, one person can usually run it from a sitemap, a CMS export and Search Console.
This guide uses the audit we ran on our own blog on November 6, 2026 as the completed example. It covered 30 of 40 posts and produced 4 P0, 7 P1, 15 P2 and 4 P3 tickets. We make PolyDraft, an AI website builder, and the four most serious findings were mistakes in our own articles, including claims about PolyDraft that went further than the product. We publish them here with what we changed.
Key points
- A content audit decides what happens to many pages. A content refresh then executes the change on one page.
- Start from an inventory you can check twice, such as the sitemap against the CMS. Don't use last-modified dates to decide what is "fresh".
- Score every page on the same dimensions, then rank by business value × severity × confidence in the fix. A wrong main answer or a false product claim goes first, whatever the score.
- Low traffic alone isn't a reason to delete a page. Our audit ended with no merges, redirects or noindex tags.
- Search Console data improves an audit, but you can run one without it. Ours had no per-page data.
How to do a content audit: what it decides
A content audit decides, for every page in scope, whether it stays as it is, gets improved, joins another page, redirects or goes away, and in what order. It is a portfolio decision. You compare pages against each other, against what each one is for, and against the evidence you have.
That makes it different from three nearby jobs:
| Job | Question it answers | Output |
|---|---|---|
| Content audit | Which pages need work, what kind, and in what order? | A ranked ticket list across the site |
| Content refresh | How do I fix this one page and check the result? | One edited page, verified live |
| Technical SEO audit | Can search engines crawl, render and index the site? | A list of technical defects |
| Site architecture review | Which page owns which topic, and how do pages link? | An ownership map and link plan |
An SEO content audit includes some search checks, such as titles, keyword ownership and internal links. Its core is still the page itself: is the main answer right, complete and useful to the reader it was written for? Google's guide to creating helpful content gives a good set of questions for that judgment. Treat your scores as internal triage, not as a Google signal.
Set the scope before you score anything
Scope is the list of URLs you will actually score, plus a written reason for every URL you leave out. Getting it right takes an hour and prevents two common errors: auditing a page someone fixed yesterday, and missing pages that exist in the CMS but not in your head.
1. Build the inventory from two sources. Pull every URL from your XML sitemap, then compare it with your CMS export. On November 6, 2026, polydraft.ai's sitemap listed 44 URLs under /blog/: 40 posts and 4 category pages. Our CMS also listed 40 public posts, and the two paginated blog index pages matched both lists. Nothing was missing and no post was orphaned. Each post had at least two in-content links from other pages, which we read from a crawl of all 78 sitemap URLs.
2. Record what each page is for. Write one line per URL: the reader, the task and the next step you want them to take. A campaign page and a guide are judged differently; our comparison of a landing page vs a website explains why. A page whose purpose you can't write down is already a finding.
3. Exclude pages with a reason, not a date. In our sitemap, 23 posts had a lastmod of November 6, and the CMS showed 21 posts updated that day. Most of those had only gained a link or a changed anchor. Dates would have told us nothing, so we checked each post's visible update note, the other work branches from that day, and the CMS record. That left 10 exclusions:
| Reason | Posts | Count |
|---|---|---|
| Substantially refreshed the same day | framer-vs-webflow, lovable-alternatives, lovable-vs-base44, continuous-seo-automation-after-launch, how-this-website-was-built-with-polydraft, website-redesign-seo-checklist, ai-visibility-checker | 7 |
| A reviewed draft was already waiting to publish | seo-for-business, multilingual-website-localization-seo-checklist, hreflang-audit-checklist |
3 |
| Audited | Every other post | 30 |
Write the exclusions down. When someone asks later why a page was never audited, the answer is in the file.
Score every page on the same dimensions
Scoring makes pages comparable. Give each page a 1–5 score on a fixed set of dimensions, with one line of evidence for every score below 5. Then record a severity and a fix depth. Without the evidence line, a score is only an opinion.
We used eight dimensions, each on the same scale. A 5 needs nothing and a 4 needs a small fix. A 3 has a clear gap that needs a new section or evidence. A 2 has a major problem, such as a wrong key fact or an intent mismatch. A 1 means the main answer is wrong or the page shouldn't exist.
| Dimension | What we checked | Our average (30 posts) |
|---|---|---|
| E-E-A-T | Real author, method, first-hand evidence, disclosed interest | 3.2 |
| Helpful content | Written for a reader's task, not for a keyword list | 3.7 |
| Main content | Answers the query fully, in the order the reader needs | 3.3 |
| Effort | Original data, tests, examples or tools others don't have | 3.4 |
| Facts | Every number and claim checked against a primary source | 3.4 |
| Outbound links | Sources and next steps that help the reader | 3.4 |
| Inbound links | Contextual links from related pages, with accurate anchors | 3.4 |
| On-page | Title, description, headings and keyword ownership | 3.2 |
Then add three fields per page:
- Severity. S1 when the main answer or a key claim is wrong, S2 when important sections are stale or missing, S3 for polish.
- Fix depth. L1 is a targeted correction of about an hour. L2 is a section refresh of half a day to two days. L3 is a full rewrite.
- Fact log. Every claim you checked, marked wrong, needs qualifying, or verified, with the source.
Across 30 posts, our fact log had 117 rows: 20 claims were wrong and 97 needed a source, a date or narrower wording. We also logged 59 notes about possible overlap between two pages. An overlap note is a question, not proof of cannibalization; keyword ownership conflicts go to the site architecture review.
If you run a content audit for SaaS, weight the facts dimension most heavily. Product pages and posts drift out of date every time the product ships, and readers act on those claims.
Turn scores into priorities
A priority score tells you what to fix first when the list is longer than your time. We used one formula and one override, and recorded the inputs, not just the total.
Priority = business value (1–3) × severity (1–3) × confidence in the fix (1–3). A total of 18 or more is P1, 9 to 17 is P2, and below 9 is P3. Override: any page whose main answer is wrong, or that claims more about our product than it does, is P0, whatever it scores.
The override matters. Two of our four P0 pages scored 27, the maximum. The other two scored 18, which the formula alone would have made P1:
- how-to-evaluate-an-ai-website-builder scored 3 × 3 × 2. It became P0 because it repeated a site count we couldn't source.
- php2shell scored 2 × 3 × 3. It became P0 because readers use a security article to judge urgency, and its exploitation status was out of date. It also repeated the same overstated approval claim as wordpress-alternatives.
Business value is a judgment, so write down why. We gave a 3 to posts closest to a decision where a product like ours is an option, such as choosing a website builder or planning SEO for a new site. Posts further from that decision, such as a single PHP vulnerability or a guide to Claude skills, got a 2.
Keep the severity label and the severity input in step. In our records they drifted: five pages labelled S3 (polish) still got a severity input of 2. If you use the template below, derive the input from the label, with S1 = 3, S2 = 2 and S3 = 1.
Where Search Console data fits
Search Console turns a quality audit into a performance-aware one. If you have it, export the Performance report for Web search, filtered to each URL. Compare two equal date ranges, such as the last three months against the three before, and record clicks, impressions, CTR and average position. Then look at the queries for each page.
Use the data to adjust business value and confidence, not to replace reading the page:
- A page with impressions for queries it never answers needs a new section, not deletion.
- A page with impressions but few clicks needs its title and opening checked first.
- Two of your pages showing for the same queries is an overlap to investigate.
- A page with no impressions may be new, unindexed or unneeded. Check which before you act.
Our audit had no per-page Search Console data, so every row in our table reads "not provided" for it. The only figures we had were site-level: 49 clicks and about 5,700 impressions from Google in the three months to November 5, 2026, at an average position of 52.8. Those numbers come from our build log. With traffic that small, fact, product and technical problems were the useful signals, because they don't need traffic to show up. We report the audit as a quality review, not a performance diagnosis.
Keep, improve, merge, redirect or retire
Every page in scope ends with exactly one action. Most pages on a maintained site are "improve", and that's normal. Merges, redirects and removals change URLs, so they need more evidence and an explicit decision from whoever owns the site.
| Action | Choose it when | What to check first |
|---|---|---|
| Keep | The page is accurate, complete and still serves its reader | Nothing; set the next recheck date |
| Improve (L1–L3) | The page serves its task, but facts, sections or links fall short | Pick the lightest depth that fixes the problem |
| Merge | Two of your pages serve the same task and one is clearly stronger | The stronger URL, unique material in the weaker one, inbound links |
| Redirect | A page's task is fully covered by another URL | A permanent 301 redirect to the closest equivalent, never the homepage |
| Retire | The task is gone, the page has no meaningful links or traffic, and nothing replaces it | Return a 404 or 410 so search engines drop it; see Google's guide to HTTP status codes. The Search Console Removals tool only hides a URL temporarily |
| Noindex | Visitors need the page but searchers don't | That the page has a real reason to exist; see block indexing with noindex |
Noindex is a sixth, rarer outcome for pages that should stay live but out of search. When two pages must stay live but overlap, Google's guide to consolidating duplicate URLs explains canonical tags and redirects. A canonical is a hint for near-duplicates, not a way to merge two different articles.
Our audit recommended no merges, redirects or noindex tags. The 30 posts each served a distinct task, even where topics overlapped. Two pages came close.
website-cost-breakdown-budget. It owned no keyword and overlapped our website cost calculator, which already handled the budgeting task. Option A was to rewrite it around website maintenance cost, a set of queries no page of ours covered. Option B was to merge it into the calculator page with a 301. The owner chose A, and the post was rewritten the same day.
php2shell. It covers one PHP vulnerability, and a broader post on updating PHP in WordPress overlaps it. We updated it first, because its facts were the urgent problem. We'll check its Search Console data in the first quarter of 2027. If traffic is very low, we plan to merge it into the broader post with a 301.
Our SEO content audit, completed: all 30 posts
The table below is the completed example: every audited post, its eight scores, severity, depth, priority inputs and the main finding. Scores run in the column order from the scoring section: E-E-A-T · Helpful content · Main content · Effort · Facts · Outbound · Inbound · On-page. Each post links to its current, already-fixed version.
| Post | Scores | Sev. | Depth | Priority (V×S×C) | Main finding |
|---|---|---|---|---|---|
| auto-seo-software | 3·4·3·4·2·3·4·3 | S1 | L2 | P0 (3×3×3) | Called a planned PolyDraft workflow "in internal testing" and scored PolyDraft on it |
| wordpress-alternatives | 3·3·3·3·3·3·4·3 | S1 | L2 | P0 (3×3×3) | Said nothing publishes without a person's approval; PolyDraft sat in the competitor table |
| how-to-evaluate-an-ai-website-builder | 2·3·2·3·2·4·4·3 | S1 | L2 | P0 (3×3×2, raised) | Criteria matched our own pitch; an export claim was wrong; list-intent keywords assigned |
| php2shell | 4·3·4·4·2·4·3·4 | S1 | L2 | P0 (2×3×3, raised) | Exploitation status and a newer CVE were missing after October 22; same approval claim as wordpress-alternatives |
| can-chatgpt-build-a-website | 2·3·3·2·2·3·2·3 | S1 | L2 | P1 (2×3×3) | Treated a feature update as the launch; the text relied on a backdated date |
| generative-engine-optimization-what-makes-a-site-quotable | 3·3·2·3·4·4·4·2 | S2 | L2 | P1 (3×2×3) | Held definition keywords but never defined AEO |
| lovable-pricing | 3·3·3·3·3·2·3·3 | S2 | L2 | P1 (3×2×3) | Price answer sat in the seventh section; an expired offer wasn't updated |
| seo-content-refresh-workflow | 3·4·3·3·4·3·4·3 | S2 | L2 | P1 (3×2×3) | No "which page first" step and no first-hand example |
| seo-for-new-website-launch-plan | 4·4·4·4·4·4·5·3 | S3 | L1 | P1 (3×2×3) | Strong; two status lines about our own site were out of date |
| website-migration-checklist | 3·4·3·3·4·3·4·3 | S2 | L2 | P1 (3×2×3) | Core tools lived on another post; domain-move steps incomplete |
| wix-seo | 3·4·3·3·4·3·3·4 | S2 | L2 | P1 (3×2×3) | Missed Wix's 2026 SEO and AI features; linked a page with unsupported claims |
| claude-seo-skills | 5·5·4·5·3·4·2·4 | S2 | L1 | P2 (2×2×3) | Strong testing; install steps and plan facts were out of date |
| generative-engine-optimization-services | 3·4·4·4·3·4·2·3 | S2 | L1 | P2 (3×2×2) | A Search Console rollout status was out of date |
| how-agencies-deliver-client-websites-with-ai | 2·2·2·1·3·3·3·2 | S2 | L3 | P2 (2×2×3) | A short product pitch with no table or FAQ; rewrite |
| how-to-show-up-in-ai-overviews | 4·4·4·4·3·4·3·4 | S3 | L1 | P2 (2×2×3) | Accurate; one Search Console status to update |
| lovable-seo | 3·3·2·3·3·3·3·3 | S2 | L2 | P2 (2×2×3) | Missed Lovable's own SEO review tool and a rendering change |
| one-page-website-seo | 3·4·4·3·5·3·2·4 | S3 | L1 | P2 (2×2×3) | No factual errors; few inbound links; title missed a variant |
| robots-txt-examples-ai-crawlers | 3·3·3·3·3·4·4·3 | S2 | L2 | P2 (2×2×3) | Covered only two AI crawler vendors |
| update-php-wordpress | 3·4·4·4·4·3·4·4 | S2 | L1 | P2 (2×2×3) | Missed a newer PHP CVE; one host claim needed a fix |
| webflow-seo | 4·4·4·4·3·4·4·4 | S2 | L1 | P2 (2×2×3) | Four plan requirements differed from Webflow's plans page |
| website-architecture-seo | 4·4·4·4·3·3·4·3 | S2 | L1 | P2 (2×2×3) | Two rows of its own example were out of date |
| website-cost-breakdown-budget | 2·3·2·3·4·3·4·2 | S2 | L3 | P2 (2×2×3) | No owned keyword; overlapped the cost calculator; near-merge |
| what-are-seo-keywords | 4·4·3·4·3·4·4·3 | S3 | L2 | P2 (2×2×3) | Missing the "how to find keywords" step |
| how-to-use-ai-agents-in-seo | 4·5·4·5·4·4·3·4 | S3 | L1 | P2 (3×1×3) | One date conflicted with our build log |
| webflow-vs-wordpress | 4·4·4·4·4·4·4·4 | S3 | L1 | P2 (3×1×3) | No errors found; billing caveats to add |
| website-redesign-cost | 3·4·4·4·4·3·4·4 | S3 | L1 | P2 (3×1×3) | Arithmetic correct; wording and auto-link fixes |
| ai-visibility-a-practical-guide-for-business-websites | 3·3·3·3·3·3·4·2 | S3 | L2 | P3 (2×2×2) | No target query; overlapped three other posts |
| llms-txt-example-and-validation | 3·4·4·3·4·3·3·3 | S3 | L1 | P3 (2×1×3) | Accurate; a tool page held its main query |
| squarespace-alternatives | 4·5·4·4·4·4·3·4 | S3 | L1 | P3 (2×1×3) | No errors found; some price wording to tighten |
| seo-contract | 3·4·4·3·4·3·3·3 | S3 | L1 | P3 (2×1×2) | Solid; no template or keyword data |
Totals: P0 4, P1 7, P2 15, P3 4. By depth: 2 rewrites (L3), 14 major edits (L2) and 14 minor fixes (L1).
Read the table as the auditors saw it. Strong pages still got tickets, because a single stale fact in a strong post is cheap to fix. Low scores didn't always mean high priority: how-agencies-deliver-client-websites-with-ai had the weakest scores but sits in P2, because its problems were thin content, not false claims.
Four content audit examples from our own blog
The table shows our four P0 findings, the pages we fixed first. Below it are four types of problem you are likely to find on your own site: the first three come from those P0 pages, and the fourth, backdated dates, was a site-wide problem we fixed right after them. The "before" text is quoted from the CMS backup we took just before each fix. The "after" text is what the page says now.
| Post | Problem type | Before (CMS backup, November 6, 2026) | After (live) |
|---|---|---|---|
| auto-seo-software | Product claim beyond what's shipped | "A weekly cycle that reads Search Console and Bing Webmaster Tools data, finds opportunities, and proposes article and link changes is in internal testing." | "…is the direction we're building toward, not a feature you can use today." PolyDraft is no longer scored on it |
| wordpress-alternatives | Product claim beyond what's shipped | "…and nothing publishes without a person approving it." | "…its agent doesn't publish without your approval", plus a note that the content API publishes by default unless a post is set to draft |
| php2shell | Outdated security facts (plus the same approval claim) | "CISA said on October 21 that it had not yet observed exploitation…" | Adds the October 24 honeypot report, CISA's October 26 listing of both CVEs as known exploited, and a section on CVE-2026-115560 |
| how-to-evaluate-an-ai-website-builder | Wrong fact and wrong intent | "Very few AI builders offer it at all." (about code export) | "Many AI app builders sync code to GitHub; hosted website builders usually don't export a working site." |
1. A product claim that went beyond what's shipped. Our auto SEO software guide described a recurring Search Console and Bing workflow as "in internal testing" and then scored PolyDraft against its own scorecard on that basis. Our product records list that workflow as a candidate, not something in testing. We rewrote the sentence as direction and removed the self-score. The wordpress-alternatives post said "nothing publishes without a person approving it". In practice, approval is our process, not a gate the system enforces, and the content API publishes posts as public unless they are set to draft. The post now says the agent asks for approval and that the API publishes by default. php2shell carried the same sentence and got the same correction.

The corrected section on the live page, captured November 8, 2026 at 12:28 UTC.
2. Outdated security facts. The php2shell post was accurate on October 22 and wrong four days later. It still said exploitation hadn't been observed after CISA had listed both flaws as known exploited, and it didn't mention a newer, unfixed CVE. A security reader decides how fast to act from that sentence, which is why it went to P0.
3. Keywords assigned to the wrong intent. Our keyword library assigned how-to-evaluate-an-ai-website-builder to list queries such as "best ai website builder". People searching that want a ranked list, and an evaluation method can't satisfy them. That fix is an ownership decision, not an edit, so it went to the keyword owner. The same post also stated that very few AI builders offer code export, which was wrong, and repeated a site count we couldn't source. We corrected the first and removed the second.
4. Backdated publication dates. Six posts in scope showed a publication date earlier than their first CMS record, and three excluded posts had the same problem. Nine posts in all had been bulk-inserted in two batches, on August 12 and October 8, with earlier dates staggered across previous days. A publication date should record when the page first went live, and Google's byline date guidance asks for a clear visible date that matches the structured data. We set each publication date to the first CMS record and added a visible note.

Update notes on the live evaluation guide, captured November 8, 2026 at 12:28 UTC.
What happened after the audit
An audit is finished when its tickets ship and are checked, not when the spreadsheet is full. Ours went out in priority order on the same day, each stage approved by Vincent Chen before anything changed on the live site.
| Stage (November 6, 2026, UTC) | What shipped | Search engine notice |
|---|---|---|
| P0, about 13:04 | Targeted fixes to 4 posts, each with a dated update note | IndexNow: 4 URLs accepted (HTTP 200) at 13:05 |
| Date corrections, about 13:53 | 9 publication dates corrected, plus one product claim on another post | IndexNow: 10 URLs accepted at 13:55 |
| P1, about 14:06–14:08 | 7 posts refreshed, 13 images, 22 inbound-link edits on 16 posts | IndexNow: 22 URLs accepted at 14:11 |
| P2, about 14:42–14:46 | 15 posts updated, 21 images, 25 inbound-link edits on 18 posts | IndexNow: 24 URLs accepted at 14:48 |
| P3, about 15:45 | 4 posts updated, 13 images, 7 inbound-link edits on 6 posts | IndexNow: 10 URLs accepted at 15:49 |
Each release followed the checks described in our SEO content refresh workflow: no write if the live post had changed, and a read-back of the clean URL afterwards.
These are release facts. An accepted IndexNow request means the notice was received, not that a page was indexed. As of November 8, 2026, we have no traffic or ranking results from these changes, and we won't claim any. We'll compare equal Search Console windows after 28 and 56 days.
From audit to tickets: a template to copy
A ticket turns one audit row into work someone else can do and review. Each one needs the page, the action, the evidence, the depth and how you'll verify it. Copy the CSV below into a spreadsheet. It has one fictional example row on example.com; delete it before you start.
url,page_purpose,primary_query,last_substantive_change,gsc_window,clicks,impressions,eeat,helpful,main_content,effort,facts,outbound,inbound,onpage,severity,fact_issues,intent_or_overlap_issue,action,depth,business_value,severity_input,confidence,priority,ticket_owner,verification
https://example.com/guide/,FICTIONAL EXAMPLE: explain a specific task,task instructions,2026-03-02,,,,4,4,3,3,2,4,3,4,S1,"An unsupported statistic needs a primary source",,improve,L1,2,3,3,P1,editor,"Check the source, compare the approved revision with the live page"
Blank cells mean unknown or not recorded, never zero. Here is what each group of columns is for:
| Columns | Fill in | Tip |
|---|---|---|
| url, page_purpose, primary_query | The page, its reader task, and the query it should own | If two rows share a primary query, add an overlap note |
| last_substantive_change | The date of the last real content change | Not the lastmod date; link-only edits don't count |
| gsc_window, clicks, impressions | Equal date ranges from the Performance report | Leave blank if you don't have the data |
| eeat … onpage | 1–5 per dimension | Write the evidence for anything below 5 in the issue columns |
| severity, fact_issues, intent_or_overlap_issue | S1–S3 and what is wrong | One claim per line, each with its source |
| action, depth | keep, improve, merge, redirect, retire or noindex; L1–L3 | Merge, redirect and retire need the site owner's sign-off |
| business_value … priority | The three inputs and the result | Set severity_input from the label (S1 = 3, S2 = 2, S3 = 1) and apply the P0 override before sorting |
| ticket_owner, verification | Who does it and how you'll check it live | "Read the clean URL after release" is a valid check |
Then sort by priority and work top-down. Each "improve" ticket follows the SEO content refresh workflow, which covers the baseline, the edit and the live check for one page. If the audit shows topics with no page at all, our guide to finding low-competition keywords covers what to write next.
Frequently asked questions
What is an SEO content audit?
An SEO content audit reviews every page you publish against the same criteria, such as accuracy, completeness, evidence, links and search fit. It ends with one action per page: keep, improve, merge, redirect or retire, ranked by priority. It differs from a technical SEO audit, which checks crawling and indexing rather than what each page says.
How long does a content audit take?
It depends on the number of pages and how deeply you check facts. Reading and scoring a page takes much longer than collecting its metrics. Our audit of 30 blog posts ran in one day on November 6, 2026. Six batches of posts went to separate AI agents, one main reviewer made the scores consistent, and a person approved every change.
Can I do a content audit without Search Console data?
Yes. Score pages on accuracy, completeness, evidence and links, which need no traffic data. Our 30-post audit had no per-page Search Console data. If you have it, compare equal date ranges per page and use clicks, impressions and queries to adjust each page's priority, not to replace reading it.
Should I delete pages with no traffic?
Not on traffic alone. A page with no clicks may be new, unindexed, or serving visitors who arrive from links. Check why it gets no traffic first. Remove a page only when its task is gone and nothing replaces it, and return a 404 or 410. If another page covers the same task, use a 301 redirect instead.
How often should I run a content audit?
Run a full audit when you have no recent one, after a major product or site change, or when many facts are likely to have aged. Between audits, recheck volatile claims on dates you set per claim, such as 30 to 60 days for prices and 90 days for platform guidance. Age alone isn't a reason to change a page.
Where can I find content audit examples?
This page is one complete example: all 30 rows of our November 6, 2026 audit, with scores, severity, depth, priority inputs and the main finding for each post, plus four findings shown before and after the fix. Each post in the table links to its live, corrected version.
Continue with the next task
- Fix the pages your audit flagged, one at a time: SEO content refresh workflow
- Resolve the overlaps it found by giving each topic one owner page: Website architecture for SEO
- Check that each page targets a query real people search: What are SEO keywords?
- Starting from a new site instead: SEO for a new website
If you'd rather have this work done for you, PolyDraft AI FDE is our AI SEO and GEO service: a PolyDraft engineer does your site's technical SEO, content and AI-visibility work with PolyDraft's agents, and nothing goes live without your approval. Contact us to talk it through.
About this article. Drafted by an AI agent following PolyDraft's blog workflow, checked by an automated QA script, fact-checked by a separate AI agent, and approved by Vincent Chen. The audit itself was run on November 6, 2026 by AI agents under our editorial policy. Six batches of posts went to separate agents, a main reviewer made the scores consistent, and Vincent Chen approved each release. It is our own editorial process, not a PolyDraft product feature. Every count, score and time in this article comes from that audit's records, its release logs and the CMS backups taken before each change. Screenshots are of the live pages, captured on November 8, 2026. Google's guidance was checked on November 8, 2026 through search excerpts of its documentation pages, because those pages couldn't be opened from our working environment. Search volumes behind the keyword choice are DataForSEO US averages retrieved the same day.
Sources
Checked November 8, 2026.
- Google Search Central: Creating helpful, reliable, people-first content
- Google Search Central: Redirects and Google Search
- Google Search Central: How to specify a canonical URL
- Google Search Central: HTTP status codes, network and DNS errors
- Google Search Central: Block search indexing with noindex
- Google Search Central: Byline dates in Google Search
- Search Console Help: Performance report (Search results)
- Search Console Help: Removals tool
- IndexNow: Documentation
- PolyDraft: Editorial policy, Build log
Written by
Founder of PolyDraft and CEO of BlackMonolith, Inc.