GPTMap

Avoiding Thin Content: Depth Minimums and Self-Check Commands for Long-Form AI Articles

Why is your article stuck at 'Discovered - currently not indexed'? Almost always thin content. This guide gives five depth minimums for long-form AI articles, a structure template, and three copy-paste self-check commands.

TL;DR
Thin content is the most common root cause of Google's 'Discovered - currently not indexed' status: crawled but never indexed, zero traffic. Five depth minimums: 2000+ main-content characters, 5+ H2 sections, 3+ tagged code blocks for tutorials, 1+ comparison table, 5+ FAQs -- plus tested self-check commands. Character count is not the goal; information density is. Tables are what AI cites most.
Thin content refers to pages that lack standalone value for users -- too short, template-written, and missing structured information (no tables, no code, no data). Google typically excludes them from the index (shown as 'Discovered - currently not indexed' in Search Console), and AI summarizers also rank them lower for citation.

How to

  1. Build the site

    Run pnpm build to produce the final HTML -- the self-check target is the build output, not the Markdown source, so navigation and footer text are excluded.

  2. Count main-content characters

    Use the python command in section 3 to count plain text inside <main>; confirm 2000+. If short, add real content first instead of stretching sentences.

  3. Count H2s and structured elements

    Grep the H2 count (5+); tutorials also check language-tagged code blocks (3+), comparisons check table rows (1+).

  4. Do not commit below the floor

    If any metric is short, go back and add data, cases, and comparisons, rebuild, and rerun this flow before moving to the publishing checklist.

Thin content refers to pages that lack standalone value for users -- too short, template-written, and missing structured information. It is the most common root cause of the "Discovered - currently not indexed" status in Google Search Console: Googlebot finds and crawls the page, but the page is excluded from the index for insufficient value, showing zero impressions and zero traffic. This guide shares the depth minimums and structure standards the GPTMap editorial team applies to long-form AI articles, plus three copy-paste self-check commands -- run them before you publish anything.

1. What Thin Content Is and How Google Treats It

Google's official position is that it does not rank pages lacking standalone value for users. The Search Essentials documentation and the "Creating Helpful, Reliable, People-First Content" guide point to judgment criteria including: whether the content offers original information and insight, whether it has a clear focus, whether it was created by someone who clearly knows the topic, and whether the page exists mainly to attract search traffic rather than to help readers.

In practice, thin content comes in three typical shapes:

  • Too short: under a thousand words, restating the question without answering it.
  • Template-written: every section filled with sentences like "define your goals first" -- the word count is there, the information is not.
  • Empty aggregations: tag pages and directory pages that are nothing but link lists, with no summaries or comparisons.

Google's treatment is demotion rather than penalty: these pages typically stall at "Discovered - currently not indexed" or "Crawled - currently not indexed." The danger of this state is that it fails silently -- the article looks published and normal, it just never gets any traffic.

2. The Five Depth Minimums

The GPTMap editorial team enforces the following minimums in its publishing checklist. They are not official Google numbers (Google never publishes thresholds) -- they are experience values distilled from real failure cases:

DimensionMinimumNotes
Main-content text characters2000+Measure with the commands in section 3, not full-HTML text (navigation and footers inflate it)
H2 sections5+An article needs at least five genuinely developed sections
Code blocks (tutorials / technical posts)3+, language-taggedEvery fence opens with the language name (python, typescript)
Tables (comparison / selection posts)1+A comparison post without a table is basically not written
FAQs5+Rendered both in the body FAQ section and the FAQPage structured data

Two usage notes: first, these minimums mark "below this, failure is likely," not "above this, indexing is guaranteed" -- content quality always sits on top of the threshold. Second, different article types emphasize different dimensions: tutorials watch code blocks, comparisons watch tables, but word count and H2 sections are the shared floor for every type.

3. How to Self-Check: Three Copy-Paste Commands

The build output is the ground truth -- check the built HTML, not the Markdown source.

Count main-content text characters (run pnpm build first; replace <slug> with the article slug):

python3 -c "import re; h=open('apps/web/.next/server/app/en/posts/<slug>.html',encoding='utf-8').read(); t=re.sub(r'<script[\s\S]*?</script>','',h); t=re.sub(r'<style[\s\S]*?</style>','',t); m=re.search(r'<main[^>]*>(.*?)</main>',t,re.S); print(len(re.sub(r'\s+',' ',re.sub(r'<[^>]+>',' ',m.group(1))).strip()))"

This command strips scripts and styles, takes only the text inside <main>, collapses whitespace, and counts. Do not use full-page HTML: navigation, footer, and sidebar characters create a false pass.

Count H2 sections (against the Markdown source):

grep -c '^## ' apps/web/content/posts/<slug>.en.md

Count language-tagged code blocks and table rows (tutorials watch the first, comparisons watch the second):

grep -c '^```[a-z]' apps/web/content/posts/<slug>.en.md
grep -c '^\|' apps/web/content/posts/<slug>.en.md

All four numbers must pass before you commit. If any falls short, go back and add content -- real data, cases, and comparisons, not longer sentences.

4. Structure Template: Definition, Sections, Tables, FAQs

4.1 First-Paragraph Definition (The Strongest GEO Hook)

The first paragraph must contain a direct definition of the form "X is...," echoing the definition field in the frontmatter. AI summarizers (ChatGPT, Perplexity, and other AI search products) lift structured definition sentences from the beginning of articles when composing answers. A definition that can be lifted verbatim is worth more than three paragraphs of warm-up.

4.2 Comparison Posts: Tables Are What AI Cites Most

Comparison and selection articles must carry their core conclusions in markdown tables: model names, prices, context windows, and fit each get a column. Tables matter to AI engines because the structure is aligned -- whole rows and columns can be cited without re-composing language. Pair every table with a "how to choose" paragraph so the table comes with interpretation, not just isolated data.

4.3 Tutorials: Step-ization Plus howTo Structured Data

Tutorial articles should break operations into an explicit step sequence and add a howTo field in the frontmatter (name + description + steps, each step with name + text). The front end renders HowTo JSON-LD, which is the entry point for step listings in Google rich results. Tag every code block with its language, and show expected output for command-line examples.

4.4 FAQs: Answer the Long Tail Before It Is Asked

Write the questions users actually ask into the frontmatter faqs (5+), then present the same set in a body FAQ section. FAQs cover search long-tail queries and follow-up questions inside AI conversations -- many users will never type your exact title, but they will hit your FAQ precisely.

5. Three Common Anti-Patterns

Filler text for word count. Sentences like "define your goals first" or "always validate your results" apply to every topic and therefore carry zero information gain. The self-check is simple: for each section ask "what does the reader lose if I delete this?" If the answer is nothing, delete or rewrite it.

Empty aggregation pages. Tag and directory pages that are bare link lists are textbook thin pages. Either give every aggregated item its own summary plus filtering logic, or noindex the page. GPTMap's channel pages get indexed because each has its own summary, topics, and live article counts -- not a bare list.

High overlap with existing articles. When you write a third article on the same topic and its core conclusions largely duplicate existing ones, Google may index only one and treat the rest as duplicates. The fix is not noindex -- it is giving the new article a genuinely different angle: a different audience, a different depth, a different decision scenario -- and cross-linking between them.

6. How This Connects to GEO: A Double Penalty

Thin content costs twice in the AI search era. On the search side, it does not get indexed. On the AI side, it is quieter: even an indexed thin page yields no liftable structured fragments -- no tables to cite, no definitions to lift, no numbers to repeat -- so it never appears in AI answers. Conversely, one article that meets the depth and structure standards serves SEO and GEO from the same content. That is the starting point of LLM-facing content standards like /llms.txt: treat structure and citability as first-class citizens.

Frequently Asked Questions

1. How many words does an article need to avoid thin content?

There is no official numeric threshold. The practical floor is 2000+ characters of main-content text, 5+ H2 sections, and at least one structured element (table / code / data). Remember: character count is not the goal, information density is -- a 2000-character template-filler article still gets flagged as thin.

2. Why does Search Console show "Discovered - currently not indexed" for my article?

The most common root cause is thin content: too short, template-written, no standalone value. Run the self-check commands in this article to measure main-content characters and H2 count first; if those pass, check for high overlap with existing articles on your site (internal canonical conflicts) or indirect robots restrictions.

3. Do AI summarizers also penalize thin content?

Yes, and more directly. ChatGPT / Perplexity prefer structured, liftable fragments when citing: tables with numbers, direct definitions, point-by-point conclusions. A thin page, even if indexed, almost never gets cited by AI -- SEO and GEO point the same direction on thin content.

4. Do code blocks need a language tag?

Yes. Opening a fence with the language name (python, typescript) is both an accessibility requirement and a prerequisite for Google rich results and AI engines to parse the code correctly. Untagged fences do not highlight in many renderers and are not recognized as code.

5. Can updating an old article remove a thin-content flag?

Yes, but only with real increments: add genuine data, tables, and runnable examples instead of refreshing a few words and the date. Update the frontmatter updatedAt accordingly, then request re-indexing for the URL in Search Console.

6. Are tag pages and listing pages naturally thin?

They are high-risk page types. A listing page must provide extra value (a summary per item, comparable columns, filtering logic) to deserve indexing; otherwise noindex it, or fold its information into a real long-form article.

Next Steps

Key points

  • Google's typical treatment of thin content is 'Discovered - currently not indexed' -- the page is crawled but never indexed, showing zero impressions in Search Console
  • Five depth minimums: 2000+ characters / 5+ H2 sections / 3+ code blocks for tutorials / 1+ table for comparison posts / 5+ FAQs
  • Comparison posts must use markdown tables -- tables are the format AI summarizers cite most
  • A first-paragraph definition ('X is...') is the strongest GEO hook -- AI engines lift structured sentences from here first
  • Template filler text counts toward word count but has zero value for Google -- every H2 needs real information gain
  • Self-check with main-content text, not full-HTML text -- navigation and footer characters inflate a false pass

Frequently asked questions

There is no official numeric threshold. The practical floor is 2000+ characters of main-content text, 5+ H2 sections, and at least one structured element (table / code / data). Remember: character count is not the goal, information density is -- a 2000-character template-filler article still gets flagged as thin.

Official references

Related articles

Subscribe to GPTMap Weekly

One email every Monday: curated OpenAI updates, deep dives, and best practices. No ads, unsubscribe anytime.

GPTMap EditorialPublished 2026-08-29 8 min read
Test environment (EEAT)
Last tested: 2026-08-29
Model used: gpt-5.6