GSC 'Discovered - currently not indexed' 22 Cases: The Day AI Rewritten Articles Were Rejected by Google
One-Line Summary
My sitemap has all 42 posts, I pinged IndexNow, and registered sitemap.xml on GSC, but for 3 months I've had 3 impressions / 0 clicks. I inspected each post with the URL Inspection API and found that 22 posts were "Discovered – currently not indexed." Google knew about the URLs from the sitemap but judged the pages as "not worth indexing."
Symptoms
- Google Search Console — 3 impressions / 0 clicks (cumulative over 3 months)
- sitemap.xml — All 42 published posts were listed normally
- Naver Yetibot — Only scraped sitemap.xml, didn't fetch individual posts
- IndexNow ping — Bing/Yandex responded with 200 OK
- Still, almost 0 indexed in search results
Diagnostic Tool: GSC URL Inspection API
If sitemap ping and IndexNow didn't result in indexing, the next thing to check is the indexStatusResult for each post. Instead of clicking on each post in the GSC UI, I automated it with the URL Inspection API.
service.urlInspection().index().inspect(body={
"inspectionUrl": "https://aicoreutility.com/blog/foo",
"siteUrl": "sc-domain:aicoreutility.com",
"languageCode": "ko",
}).execute()
The key field in the response is indexStatusResult:
verdict: PASS | NEUTRAL | FAIL | PARTIALcoverageState: Human-readable status text ("Submitted and indexed", "Discovered – currently not indexed", ...)indexingState: INDEXING_ALLOWED | BLOCKED_BY_META_TAG | ...pageFetchState: SUCCESSFUL | SOFT_404 | BLOCKED_ROBOTS_TXT | ...robotsTxtState,googleCanonical,userCanonical,lastCrawlTime
The quota is 2000 requests per property per day — plenty for tens or hundreds of posts.
Inspection Results — 2 Indexed Out of 42
| verdict | Count | Meaning |
|---|---|---|
| PASS | 2 (5%) | Indexing complete. Eligible for search results. |
| NEUTRAL — Discovered, not indexed | 22 (52%) | Google knows the URL but rejected indexing. |
| NEUTRAL — URL is unknown to Google | 4 (10%) | Not even crawled yet. |
| (Not Inspected) | 14 (33%) | Will be inspected in the next batch. |
Common Pattern in the 22 Posts
When I listed the slugs for the 22 NEUTRAL posts, a clear pattern emerged.
solo-dev-backend-retrospective-2022-2026
4-years-ai-exploration-solo-dev-retrospective
solo-dev-nginx-ssl-survival-log
solo-dev-aws-deployment-retrospective-2026
riel-chatbot-4-years-traffic-survival-strategy
riel-frontend-dev-retrospective-4-years
4-year-solo-developer-retrospective-with-chatgpt
solo-dev-llm-local-4-year-retrospective
... (22 posts, almost all the same theme)
They were almost all variations of "Solo Developer N-Year Retrospective." This was the result of batch rewriting titles and content to be SEO-friendly using LLMs when I imported 137 posts from Tistory about a month ago. While they looked okay to the human eye, Google saw:
- Repetitive content on the same topic (solo dev retrospective) with slightly different keyword combinations.
- Similar paragraph structures / introductory and concluding tones.
- Lack of unique information (error messages, code snippets, screenshots).
Google classified these as "low-value duplicates" and did not index them. In fact, the "Scaled content abuse" section of the Google Spam Policies document describes this exact case.
Treatment — Batch Archive
Since they weren't indexed anyway, there was no loss. I decided to mark the 22 NEUTRAL posts, plus one more with the same pattern that hadn't been inspected yet, totaling 23 posts, as status='archived' all at once.
UPDATE blog_posts
SET status='archived', updated_at=NOW()
WHERE status='published'
AND slug = ANY($1::TEXT[]);
-- UPDATE 23
My sitemap generation code already uses the WHERE status='published' filter, so without any extra work, the sitemap.xml went from 42 posts to 19. Individual post pages (/blog/[slug]) also now automatically return 404 (as get_by_slug uses the same filter).
Changes on Google's side will happen automatically:
- The next sitemap crawl (usually within a few days) will confirm the removal of the 23 posts.
- The status of those URLs will gradually change from "Discovered" to "Dropped."
- They will be naturally removed from the GSC "Pages" report within a few weeks.
The Remaining 19 — The Real "Records"
The commonalities among the posts that were *not* archived are:
- Specific error messages included in the title (e.g.,
useState already declared,Cannot read properties of undefined (clientModules)). - Inclusion of unique data like code snippets, commands, and measured times.
- Retrospectives that documented the problem, investigation, and solution.
From Google's perspective, posts like these are highly valued as "unique information not easily findable elsewhere." The quantitative result showed that even with fewer posts, having information that can help at least one other developer is crucial.
Lessons Learned
- "Registering a sitemap + pinging IndexNow = Indexing" is not true. Google first judges the value of the page itself, and if it doesn't meet the standard, it won't be indexed even if it's in the sitemap.
- Batch rewriting with LLMs is SEO suicide. Especially creating "N slightly different posts" on the same topic is exactly what Google catches. One high-quality post is stronger than N average posts.
- GSC URL Inspection is a free and brutal signal. If "Discovered – not indexed" is over 30%, it's a signal to re-evaluate your content strategy. If it's over 50%, you need to clean house immediately.
- Always check your indexed ratio before applying for AdSense. If you have few indexed posts, AdSense will likely be rejected. Having many published posts but few indexed is actually a negative signal.
Next Steps
Going forward, I will only publish posts that meet the following criteria:
- Include at least one real-world error message, log, or screenshot.
- Attach the solution code or commands (in a copy-paste and executable format).
- Follow a three-part structure: "Why it didn't work -> How I found out -> How I fixed it."
- 1-2 posts per week (quality over quantity).
I plan to run the URL Inspection again in two weeks to track the indexed ratio. Once the indexed post ratio exceeds 50%, I will apply for AdSense.