How to Do a Full SEO Audit for My Website | The ContentOps Backlog Audit


Category: Auditing
Status: Capstone Method
Stages: 3 + Stage 0

Visual Meta Description:
The complete ContentOps method for running a full SEO audit — from architecture survey through per-node fixing, second-pass reindexing, and global schema — leaving you with a fully course-corrected site rather than another report in a folder.

Full Site Audit
Living Topical Map
Per-Node Loop
HTML Strip
Global Schema
[ AUDITING CLUSTER — CAPSTONE GUIDE ]

How to Run a Full SEO Audit for Your Website (The ContentOps Method)

A full SEO audit has two failure modes. The first is running a crawler, generating a report, actioning the checklist, and watching the site return to the same state six months later because nothing in the process changed the underlying architecture. The second is never running one at all because the scope feels too large to know where to begin.

The ContentOps method avoids both. It doesn’t produce a report. It produces a corrected site where every node is structurally clean, every internal link is registered, every page has its schema declared, and the map is smart enough to prevent the same problems from accumulating again.

This is the full sequence, from the first architecture survey to the final reindexing pass.

Before You Begin: What a Full Audit Actually Produces

A URL-level crawl tells you what exists. The ContentOps audit tells you what exists, what’s structurally broken inside each page, what’s missing from your architecture entirely, and what your existing content has promised to build but never did.

The end state is not a to-do list. It is a fully course-corrected site — clean HTML structure, registered internal links, individual schema per node, updated global schema in the header, and every URL reindexed with the compounded authority of the corrected map behind it.

That result comes from working in stages. Each stage has a specific job. Don’t collapse them into each other or you’ll be fixing posts before you understand the full picture, which means fixing the wrong ones first.

Before running a single diagnostic, it helps to understand what separates a static audit report from a living one — the difference in outcomes is significant, and it’s the foundation this entire method is built on. Audit Once, Remember Forever: The Difference Between a Static Report and a Living Topical Map

[ STAGE 0 ]

Stage 0: The Architecture Survey

Before touching any tool, survey the full layer structure of your site. The goal is a complete inventory of every URL that belongs in the map.

Start at the Top With Your Most Authoritative Pages

Your header menu pages are your most powerful pages by default because they receive the most internal link equity from every other page on the site. Home, About, Contact, and FAQ pages get linked constantly — which means if they have no semantic purpose, no entity declaration, no schema, they are wasting the authority flowing into them. Confirm that each header menu page is doing structural work, not just existing.

Then Work Down Through the Layers Mapping Parent Pages and Categories

What are your service or product pages? Are your landing pages authoritative — do they have clean schema, entity-rich copy, and internal links routing into them from the blog? Do you have a help center? A use cases cluster? Case studies? Comparison pages? How extensive is your blog and which posts are the highest-traffic or highest-authority nodes?

It’s important to put all of your commercial intent pages into the “Landing Pages and Offers” cluster in your map as this cluster populates the “Core” and “Transitional” Offers in the dropdown of each node modal.

Gather All URLs in Advance of the Map Build

Every URL you identify goes into a working list. The volume of that list determines your ingestion tool. NotebookLM’s free tier handles 50 sources and its Pro tier handles up to 300. If your combined posts and pages relevant to the map fall within those limits, NotebookLM is the cleaner option. If your site exceeds those limits, Firecrawl.dev crawls up to 1000 URLs in a single pass and extracts clean text. Use whichever matches your volume.

If you’re evaluating which tools you actually need at each stage of this process, this post answers that question honestly and names the minimum viable stack without the agency-level overhead. Do I Need Screaming Frog as a Solo Blogger? The Tool Stack Question Nobody Answers Honestly

The architecture survey is not glamorous work. It is the foundation everything else stands on. A map built from an incomplete URL inventory will have gaps that surface later as Island Nodes you didn’t know you had.

[ STAGE 1 ]

Stage 1: Build the Map and Document Every Node

With your URL inventory complete, run the ingestion process. Firecrawl or NotebookLM extracts the text of your existing pages. AI Studio synthesises the data layers — the node descriptions, the keywords, the relationships, the anchor text options. You build the map from what you have, not from what you wish you had. Follow the protocol set out in the Help Center map build guide for new ContentOps users.

Once the map is live inside ContentOps, the documentation pass begins. This is not the fixing stage. This is the intelligence-gathering stage, and keeping those two phases separate is the discipline that makes the audit manageable rather than overwhelming.

Finish Calibrating the Map With the Final 20%

When you built your map, the AI synthesized the data layers needed to strongly infer what each page or post is about. There are data layers you will still need to fine-tune in each node to fully power up the map:

  • Toggle Media Strategy to Yes and input any YouTube or Podcast URLs associated with that post or page. Your AI can reference or apply these as external links to drive traffic to your media.
  • Make your Dual-Funnel Strategy selections. Each node allows you to select two offers. Your AI will be aware of what you’re driving conversions toward. If you have a lead magnet or a product-led growth tool, that could be a transitional offer while your core offer might be a consultation or a service.

What the HTML Documentation Pass Looks Like Per Node

For each node in the map, the sequence is the same:

  1. Pull the HTML. For a published page, press Ctrl+U in your browser to get the raw source code. For a draft or an unwrapped legacy post, run it through the HTML Wrapper first to get clean structured HTML. Copy it.
  2. Run the Harvester in that node using the HTML you just pulled. This registers the internal linking structure — which nodes this page links to and which nodes are linking into it — directly into the map.
  3. While you have the HTML open, paste it into the Audit Suite. Run the diagnostic and then run Missions 1 through 4. Broken Bones surfaces the structural failures. Wire Up identifies which nodes this page should link to. Power Up identifies which published nodes should link into this page. Map Expansion surfaces the Shadow Concepts this page declared but never built.

Each mission generates a .txt report. Label them clearly — node title, mission number, date. Create a folder per node with the exception of the Map Expansion briefs, which should live together in a separate folder. By the end of Stage 1 you have a complete diagnostic picture of every node: its internal link structure registered in the map and its four AI mission reports filed and ready to act on.

You have not fixed a single post yet. You understand the full scope before you touch anything.

Understanding why the HTML layer reveals what a URL crawl can’t is worth reading before you run your first Audit Suite mission — it explains the distinction the documentation pass is built around. URL-Level vs HTML-Level: The Audit Distinction Nobody’s Talking About

And if Map Expansion surfaces concepts you weren’t expecting, this post explains why those unresolved entity references are actively bleeding authority from your domain right now. Shadow Concepts: Why Your Topical Authority Is Bleeding

Running the Global Audit

Once the map is fully built and all nodes are harvested for internal links, run the Global Audit. This is the macro diagnostic — it surfaces Island Nodes prioritised by authority impact and generates three to five highest-leverage actions across the whole map. It tells you which posts to fix first. Without it you’re going post by post in arbitrary order and potentially leaving your highest-authority nodes broken while you polish lower-priority pages. With it you have a triage sequence grounded in the actual link equity distribution of your site.

Run the Global Audit at the end of each day’s work session. It reflects the current state of the map as you fix and register each node.

End of Each Day: Generate Global Schema

At the end of each work session, regenerate the Global Schema. This synthesises the full map’s current state into a single DefinedTermSet block that registers your content architecture as a machine-readable knowledge graph. Add it to your site header. As each day’s fixes accumulate, the Global Schema reflects the corrected map rather than the broken one.

[ STAGE 2 ]

Stage 2: Fix the Posts — The Per-Node Loop

The repair work begins. You move through the site node by node, in the priority order the Global Audit established. For each node the sequence is the same.

Step 1: The HTML Strip (If Needed)

If a post was built in a drag-and-drop page builder — Elementor, Divi, or any visual builder that wraps content in nested div container soup — the first step is the HTML Strip. The Strip serves two functions: it converts the post into modular assembly blocks for faster publishing and maintenance while cutting the div soup that makes your code base harder for crawlers to ingest.

Not every post needs the HTML Strip. Posts already built or published in clean HTML — as ContentOps posts are from day one — move straight to Step 2. For widget-heavy legacy posts, the full six-phase sequence is documented in detail in HTML to Semantic HTML: A Prompt-Driven Workflow for Refactoring WordPress Posts. Here is the sequence at a glance:

Phase 1 — The Strip Prompt

Press Ctrl+U on the published page to retrieve the raw source HTML. Feed it to your AI using the Strip Prompt — a role-based prompt that instructs the AI to rebuild the post in clean semantic HTML without changing a single word. Output: a clean HTML canvas stripped of all page builder containers, inline styles, and empty spans.

Phase 2 — The Switchboard Prompt

Drop four inputs simultaneously into your AI: the clean HTML from Phase 1, the JSON topical map export from ContentOps, the Broken Bones brief (.txt), and the Wire Up brief (.txt). The AI aligns the heading spine, applies structural fixes, and injects internal links with natural bridge sentences. It also runs a second-pass analysis returning authority-building and commercial link recommendations.

Phase 3 — Execute the Second-Pass Links

Review the second-pass recommendations and confirm which to execute. Prompt the AI to apply them with transitional sentences that fit the links naturally into the existing prose. Output: the final fully-corrected, fully-linked HTML document ready for the Splitter.

Phase 4 — Image Refactor via SlideShift

Copy each image from the original post into an empty PowerPoint slide. Resize to fill the full canvas using Design Helper. Export as PDF. Run the SlideShift seven-step sequence to produce optimised WebP assets with didactic alt text and ready-to-paste HTML figure snippets.

Phase 5 — Modular Assembly in WordPress

Paste the final corrected HTML into the Splitter. Delete all existing text and header widgets. Add HTML Widgets and paste each Splitter block. Insert additional HTML Widgets as joint positions between text blocks. Paste SlideShift image snippets into the joint widgets. Publish with bones and joints in place.

Phase 6 — The Cartilage Pass

Press Ctrl+U on the freshly published page to retrieve the live assembled HTML. Feed it to your AI and prompt it to write short standalone HTML bridge paragraphs between each text block and its adjacent image joint. The AI reinforces semantic keyword signals, adds structural signposts, and places inline CTAs at visual break points. Inject each cartilage snippet into its own HTML Widget. Publish again.

Once published, run the individual schema in the node and paste it into your custom schema plugin. Then rerun the Harvester on the newly rebuilt page HTML to register all updated internal links. Submit the URL to GSC and BWT for reindexing.

If you’re questioning whether the structural fixes the Audit Suite surfaces actually matter for rankings, this post makes the case with a framing that’s hard to forget. The DMV Test: Why Passing Your SEO Checklist Doesn’t Mean You Can Ride the Motorcycle

Step 2: Rerun the Harvester

Once the corrected HTML is live on the page, rerun the Harvester in that node using the updated HTML. The internal linking graph registers the new connections. Any outbound links you added from the Wire Up brief are now recorded. Any inbound links from previously fixed nodes are confirmed.

Step 3: Generate Individual Schema

Generate the individual node schema from the node’s data layers — bigIdea as description, semanticKeywords as about entities, Article entity linking isPartOf the root topical map entity. This runs at temperature 0.2 for maximum determinism. Add the output to your schema plugin as custom schema for that page.

Step 4: Submit to GSC and BWT

Submit the corrected URL to Google Search Console via URL Inspection and request indexing. Submit to Bing Webmaster Tools as well. Do this after every individual node is fixed, not at the end of the full audit. Each fixed node gets reindexed with whatever authority exists in the map at that moment. As later nodes get fixed and linked, the earlier submissions gain additional compounded authority — which is why the second pass in Stage 3 matters.

[ STAGE 3 ]

Stage 3: The Second Pass Reindexing

When every node is fixed, harvested, individually schemed, and submitted, you are not done.

The first-pass reindexes happened before downstream nodes were corrected. A node submitted on day three of the audit couldn’t benefit from the authority of nodes fixed on day seven. The internal link equity that flows through a fully corrected site is higher than what existed at any individual submission point.

The second pass submits every URL again — the full inventory from Stage 0 — now that the complete site architecture is clean, linked, and schemed. This is the submission that captures the compounded authority of the corrected map rather than the partial authority of the in-progress one.

Submit the full URL list to GSC and BWT in a single batch. Then regenerate Global Schema one final time to reflect the completed audit state. Add the final version to your site header.

The audit is done. What you’re left with is a fully course-corrected site.

Stage 4: The Mission 4 Map Expansion Reports

Remember all those Mission 4 Map Expansion Briefs? Those reports revealed all of the Shadow Concepts (concepts your posts mentioned but haven’t published dedicated nodes of their own) in your posts and pages. Moving forward, you don’t necessarily need to pursue new keywords. In fact, the best thing you can do to strengthen your topical authority is publish these Shadow Concepts first. Each unpublished Shadow Concept is a missing block in your content Jenga tower. You need to plug those gaps to strengthen the tower.

Once you begin the new publishing sprint on these concepts, make sure to follow the protocol established during your backlog audit.

What This Looks Like on a Site Built From Scratch vs a Legacy Site

There is an honest distinction worth naming here.

ContentOps.so was built from scratch with clean HTML, a live topical map, and the Harvester running every time a post went live. Every node is already linked and cross-linked. The full audit on a site like that is a maintenance pass rather than a rescue operation — because the system that prevents structural debt was running from the first post.

A legacy site built in a page builder over several years, with no topical map, no schema, no internal link strategy, and a help center that doesn’t exist yet is a different project. The Stage 0 architecture survey surfaces gaps that have been accumulating for years. The Stage 1 documentation pass produces reports that reveal how much of the site’s authority has been leaking through dead text spans and Island Nodes. The HTML Strip gets deployed on dozens of posts. The audit takes weeks, not days.

Both paths lead to the same end state. The difference is how much debt the site has accumulated before the audit begins.

The honest implication: if you are building a new site or starting a new cluster, build the way ContentOps is built. Publish in clean HTML. Build the map before the first post. Run the Harvester after every publish. Generate schema per node at the time of publishing. Do that consistently and the full audit becomes a periodic maintenance check rather than a major remediation project.

To understand how this overarching framework contrasts with legacy software suites that fail to support active execution, see our forensic guide analyzing What Screaming Frog, Ahrefs, and SEMrush Will Never Tell You About Your Site.

FAQ: Running a Full ContentOps SEO Audit

How long does a full ContentOps audit take?

It depends on the size of the site and the state of the content. A small site with clean HTML and an existing topical map can be audited and corrected in a concentrated week of work sessions. A legacy site with 200 widget-heavy posts, no existing map, and no internal link strategy is a multi-week project. The Stage 1 documentation pass typically takes one to two days regardless of site size since the Audit Suite diagnostics run in ten to thirty seconds per post. The fixing time scales with the number of posts and how much structural debt each one carries.

Do I need to audit every post or just the important ones?

Start with the nodes the Global Audit flags as highest-priority — typically your pillar posts, your highest-traffic pages, and your offer landing pages. These carry the most authority and fixing them first creates the strongest foundation for the posts that link into them. Once the high-priority nodes are corrected, work through the remaining posts systematically. Every unfixed node is an authority leak somewhere in the system.

What if I don’t have a topical map yet?

Stage 0 and Stage 1 build it. The architecture survey collects the URLs and the ingestion pass synthesises the data layers. The map is not a prerequisite you need before starting — it is the first deliverable the audit produces. You build it in Stage 1 and everything after that draws from it.

Can I run the audit while continuing to publish new content?

Yes, but add new posts to the map immediately and run their Harvester and Audit Suite diagnostics at the time of publishing so they integrate into the corrected architecture rather than sitting outside it as new Island Nodes while you’re fixing old ones.

What is the difference between the individual schema and the global schema?

Individual schema is generated per node from that node’s own data layers — it declares what the specific page is about, who published it, and how it relates to the root topical map entity. Global schema synthesises the entire map into a single DefinedTermSet block that registers the full content architecture as a knowledge graph. Individual schema lives on each page. Global schema lives in the site header and gives AI crawlers a roadmap to the complete content plan. Both are needed. Neither replaces the other.

Is there a point where you need professional help rather than the DIY audit?

If your backlog is large, your site’s legacy code is deeply widget-heavy, and your architecture survey reveals that fundamental layers are missing — no help center, no comparison content, no landing pages with entity-rich schema — the scope of the audit may exceed what’s practical to run solo on your own timeline. That’s the moment the done-for-you option makes sense.

If you want to see what the Audit Suite actually surfaces before committing to the full process, the free Surgical HTML Auditor is the fastest starting point. Paste any page’s HTML and get the Broken Bones diagnostic, the Force Multiplier improvement score, and the full structural report as a .txt file — free, no subscription required.

To immediately check how machines ingest your page’s current code skeleton, you can pivot straight to our SEO HTML Audit Tool | ContentOps Diagnostic Suite Landing Page.

Had I run a full audit on every site before the system existed, I would have done it once, filed the report, and watched the debt accumulate again. The audit is only as durable as the system maintaining it afterward. That’s the insight the ContentOps method is built around: the audit isn’t the destination. The map that prevents the next audit from being necessary is.

Hindsight Insight: The Audit You Run Once Is the One That Changes How You Build Forever

If I could do it all over again, I would have understood earlier that the full audit isn’t a remediation project — it’s a calibration exercise that reveals exactly how a site should have been built from the start. Every Island Node the Global Audit surfaces is a post that was published without a map. Every dead text span the Broken Bones mission finds is an entity that was declared in prose but never wired into the architecture. Every missing help center article is a follow-up question the site has been losing to a competitor for months. The audit doesn’t just fix the site. It shows you precisely what the system that prevents the next audit looks like.

I built ContentOps from scratch with that system running from the first post. Not because I had run a full audit and learned the hard way — but because the process of building the tools revealed what was missing from every site I had ever worked on before. The full audit is what happens when you build without the map. ContentOps is what you build with it.

If you want a site that compounds authority with every publish cycle rather than accumulating structural debt that requires a remediation audit every year, you need a system that runs the map, the diagnostics, and the schema at the time of publishing — not after the fact.

Start with the page in front of you. Paste its HTML into the free Surgical HTML Auditor, get the Broken Bones diagnostic and your Force Multiplier improvement score, and see exactly what the machine is reading underneath the prose you wrote. That’s where the audit begins — one post at a time.

[Button: Run Your Free HTML Audit — https://audit.contentops.so]

If your backlog is too large to tackle post by post on your own timeline, the SEO Content Audit and Backlog Rescue service is the done-for-you path to the same end state.

[Button: Talk to Us About Your Backlog — https://contentops.so/services/seo-content-audit-backlog/]

© 2026 ContentOps. All Rights Reserved. Turn on the Stadium Lights.