How the SEO outline extractor infers heading levels
The page is fetched and flattened to plain text before the model sees it. The HTML tags are gone by then. That means the H2 and H3 labels in the output are inferences, not values read off the markup.
The inference uses layout cues that survive stripping. A heading sits alone on its own line, runs under about 12 words, has no terminal period, and is followed by body copy about that subject. Levels come from scope and nesting: the one overarching title is H1, top-level sections are H2, and a subsection that only makes sense underneath the H2 above it is H3.
Excluded by rule: breadcrumbs, bylines, dates, CTA buttons, cookie notices, and stray one-line sentences.
This works well on articles and badly on anything with heavy interface chrome. If a comparison table's column labels come back as H3s, that is why. The alternative would be a headless browser reading real tags, which is slower and gets blocked more often. This is the trade being made, stated openly rather than hidden.
What the depth selector changes
3 settings, and the word counts move with them:
- H2 only. Every subsection is folded into its parent H2. An H2 with 3 H3s beneath it reports the sum of all four sections.
- H2 + H3. The default. H3s are returned as their own rows, so the parent H2's count now excludes them. Same page, smaller H2 numbers.
- Full. H1 through H4, in document order.
If you switch from H2-only to H2+H3 and the H2 counts drop, nothing is broken. The children were subtracted out.
Reading the section word counts
Each row carries an integer estimate of the words in that heading's own section, plus a bar sized against the largest section on the page. 2 readings matter.
The largest section shows where the competitor believes the value is. A 2,400-word page where one H2 holds 900 words has one real argument and 5 paragraphs of setup around it. Match the depth of that section or do not bother competing on the term.
The smallest sections show what they are covering only to claim coverage. An H2 with 80 words under it is a checkbox. That is the cheapest place to outdo them: same heading, real treatment.
These are estimates. Body text, captions, and list items get counted differently by different tools, so read the shape of the distribution, not the individual figures.
Why SEO content gap extraction is worth running
Below the outline sits the highlighted section: 4 to 6 subtopics the page omits, ranked by how much the omission costs in traffic or credibility. Each gap gives you the missing angle in 3 to 8 words, a heading phrased the way a real page would phrase it, and one line on which reader question goes unanswered.
The gap list is bound by 2 rules that keep it useful. It cannot list something the page already covers under different wording, and it cannot pad with generic advice like "add a conclusion" or "include more examples". If a gap looks generic, the page probably had thin headings to judge from.
Run it against an article on email warmup and a typical gap looks like this:
subtopic: Warmup for a reactivated old domain
suggested heading: Warming up a domain that already burned
why: A domain with prior spam history needs a
different ramp than a fresh one, and the
page assumes every domain is new.
That is a section you can brief, not a suggestion to write more.
Turning the extractor's outline into a brief
Copy outline gives you the tree as markdown headings. Copy gaps gives you the missing subtopics as a bulleted list. Download .md gives you both in one file, gaps appended under their own heading.
The workflow that pays: run the top 3 ranking pages for your keyword, download all three files, and line up the H2 lists. Headings that appear in all three are table stakes and your draft needs them. Gaps flagged on all three are the opportunity, because none of the pages currently ranking cover that subtopic.
Each run calls a language model, so the page asks you to pass a human check before the first one.
Pages that come back thin or empty
JavaScript-only apps. If the article body is rendered client-side, the fetch gets a shell and the extractor finds almost nothing. Open the page, select the article, and paste the text instead.
Paywalls and consent walls. Same outcome. What comes back is the wall, so the "headings" are the subscription tiers.
Slow origins. The fetch aborts at 12 seconds and follows at most 5 redirects.
Very long pages. Extracted text is capped at 50,000 characters, roughly 8,000 words. Past that, later sections are missing from the outline and the gap list will name things the page actually covers below the cut.
Landing pages. Short marketing pages have few real headings and a lot of chrome. The tool is built for articles.