AX note · How-to

Structured data after FAQ rich results ended: what we kept for GEO

There is no special markup for GEO (generative engine optimization). We leave the FAQPage JSON-LD we already generate as it is and spend the time on the visible Q&A and on dated, measured body text.

By SugarMount Website and search 10 min read Last updated

Of the 173 HTML files on this site, 106 carry FAQPage JSON-LD, with 374 questions between them. We counted them at HEAD 849c6d8 on October 27, 2026, and none of that markup can produce a Google rich result. Google stopped showing FAQ rich results on May 7, 2026, and Naver stopped on July 9. Yet the commit that extended FAQ JSON-LD to our hand-written pages (12ed443) landed on October 18 under the title "Site-wide SEO/GEO pass". Research run the same afternoon caught the five-month gap, and we decided to keep the markup and stop maintaining it.

Sources: the site repository's git history (bdbbe97, 12ed443, 3f504be, b82faac), a recount of the HTML at HEAD 849c6d8 on October 27, the October 18 working documents (research reports 01 to 06, the information architecture spec, adversarial review 1), our search operations log, and the Google Search Central and Naver Search Advisor announcements, which we reopened on October 27, 2026.

Contents (9)
  1. 106 FAQPage pages, 374 questions, zero rich results
  2. The commit that extended FAQ JSON-LD came five months after Google ended the feature
  3. We kept the markup, dropped its validation, and stopped working on it
  4. Three of adversarial review 1's seven defects: RSS body, date signals, app markup
  5. The no-RSS-sitemap rule broke again in the Search Console UI
  6. With 12 impressions and no clicks, we could not measure any effect
  7. Count by type, open the shutdown notices, and keep feeds off the sitemap list
  8. Next
  9. FAQ

106 FAQPage pages, 374 questions, zero rich results

Pages per @type, counted from every application/ld+json block in the deployed HTML:

TypePagesSearch display as of October 2026
BreadcrumbList166Google: desktop breadcrumbs. Naver: second line of the site info
FAQPage106Ended on both Google and Naver
Article84No rich result; dates and author
MobileApplication22Naver: eligible for its software summary
CollectionPage · ItemList22 · 16Describes list pages

Of the 106 FAQPage pages, 60 are AX notes, 42 are app and help pages, and 4 are the home pages and AX hubs. The build script writes FAQPage from the same source as the visible Q&A: the <details><summary> pairs on hand-written pages and notes, the faq field of apps.json on generated app pages, and home_faq on the home page. So every new note with its two to four FAQ entries adds one more page. Recounting past commits the same way gives 10 pages at 4:09 p.m. on October 18, 13 right after 12ed443, 50 after that night's restructure (b82faac), and 58 on the evening of October 19. The jump from 13 to 50 happened in b82faac, the commit that implemented the spec. 40 of those 50 were app and help pages: 8 generated from the faq field, 32 from <details> on hand-written app and help pages. Of the 56 pages added after the first 50, 54 are AX notes.

Bar chart: pages with FAQPage JSON-LD went from 10 before commit 12ed443 on Oct 18 to 13 right after it, 50 after b82faac, 58 on Oct 19 and 106 on Oct 27.
After we decided not to expand it, FAQPage went from 13 pages to 106; 54 of the 56 pages added after the first 50 are AX notes.

The commit that extended FAQ JSON-LD came five months after Google ended the feature

FAQPage first reached the app pages and the home page in the October 5 redesign (bdbbe97). At 4:24 p.m. on October 18 another agent session pushed 12ed443, "Site-wide SEO/GEO pass: FAQ JSON-LD, …". The first line of its body read "FAQPage from <details> on hand pages". The commit treated FAQ markup as something that helps search and AI answers, and extended it to hand-written pages that have <details>.

The Google Search Central updates list has a May 8 entry, "This feature will no longer appear in Google Search starting May 7, 2026.", and a June 15 entry that removed the FAQ rich result documentation. Since September 2023 the feature had only appeared for well-known government and health sites. Naver Search Advisor announced on July 8 that FAQ display in web results would end on July 9.

Twenty-nine minutes after the commit, at 4:53 p.m., we started parallel research on Google, Naver and generative search. The Google report put the FAQ shutdown in the second line of its conclusions; 12ed443 had not taken it into account. Google's guide to optimizing for generative AI features (updated July 10) says: "Structured data isn't required for generative AI search, and there's no special schema.org markup you need to add."

We kept the markup, dropped its validation, and stopped working on it

The information architecture spec written that day says of FAQPage: keep the current generation, don't expand it, and remove it from Rich Results validation. Adversarial review 1 suggested deleting the generator if it cost anything to maintain; the spec declined. The generator already existed and cost close to nothing, since one function turns the source of the visible Q&A into JSON-LD, and Naver's shutdown notice says leftover FAQ markup does not affect ranking and "may be used as a supplement for analyzing web documents" (our translation).

Because the markup comes from the same source as the visible Q&A, the two match. Google's AI features page lists "Making sure your structured data matches the visible text on the page" among its best practices.

Adding FAQs to chase rich results was never on the table once both engines had ended the display. Keeping Rich Results validation as a gate made no sense either after Google removed the documentation it would validate against. "Don't expand", though, turned into "don't touch" because of how the markup is generated. From b82faac on, 40 app and help pages carried FAQPage, and because every note gets an FAQ the count reached 106. No commit since has changed the FAQPage generator in the build.

The on-page Q&A stays. Each FAQ puts the answer in its first sentence, and that sentence reads as body text with or without JSON-LD. On October 25 we rewrote a slogan-like sentence in one note's FAQ answer (72a3ada), and the JSON-LD changed with it.

Three of adversarial review 1's seven defects: RSS body, date signals, app markup

On October 18, adversarial review 1 checked every SEO and generative-search claim in the spec against Google's documentation and Naver Search Advisor's own pages, and returned seven must-fix defects. The big picture held: the FAQ shutdown dates were right, and so was Google's statement that it ignores llms.txt.

The RSS body was in the wrong place. The spec put the full article in content:encoded and left <description> as a summary. Naver's feed submission guide shows only <description> in its example, asks for "all of the content, not part of it" in every item (our translation), and never mentions content:encoded. Today the 56 items in our Korean feed carry the article HTML in <description>, a median of about 10,000 characters of HTML per item.

The date signals conflicted. Google accepts RSS as a sitemap, and its October 2014 post on sitemaps and feeds says "XML sitemap uses <lastmod> RSS uses <pubDate>". With pubDate set to the publication date, as the spec wanted, a feed submitted to Google would report a different modification time for each URL than the sitemap does. The review marked this as an inference because it could not open the post; we opened it this time, and the review was right. The fix was to give Google only sitemap.xml, which carries the modified dates. How we derive modified dates from a content hash is in Every sitemap lastmod had the same date: deriving modified dates from a content hash. The RSS Sitemap: line that 3f504be added to robots.txt at 4:20 p.m. was gone after that night's restructure.

The spec also concluded that breadcrumbs and the site name were the only rich results left for us. Naver's October 15 notice ended HowTo display and said software schema items would show as a short summary under the result. We have not confirmed that our app pages appear that way. The build gate now requires name, applicationCategory, operatingSystem, an absolute URL, screenshots with width and height, and a description of 160 characters or less on every MobileApplication node. How that gate blocks a commit is in A static site that several AI agent sessions edit: one --check gate before every commit.

Step diagram: Oct 18 4:24 p.m., commit extends FAQ JSON-LD; 4:53 p.m., research finds Google ended FAQ rich results on May 7 and Naver on July 9; the same day adversarial review 1 lists seven defects; 8:07 p.m., the restructure ships full-text RSS and sitemap.xml only; Oct 25, two RSS sitemaps removed from Search Console.
The FAQ markup stayed as it was; the fixes went into the feed, the dates and the app markup.

The no-RSS-sitemap rule broke again in the Search Console UI

In the code the rule held. robots.txt still has a single Sitemap: line for sitemap.xml, and the repository's agent instructions say "never submit RSS as a sitemap". Even so, rss.xml and en/rss.xml were submitted to Search Console as sitemaps on October 22. In the 2 p.m. round on October 25 an agent resubmitted sitemap.xml and both feeds through the API. About three hours later, in the round that restructured the sitemap, an agent noticed the conflict with the instructions and, with the owner's approval, deleted the two feeds from the list. The build gate only reads files in the repository, so it could not check Search Console settings.

With 12 impressions and no clicks, we could not measure any effect

This note rests on Google's and Naver's documentation, not on our own measurements. From September 29 to October 26 Search Console showed 12 impressions and no clicks, and a full inspection on October 27 found 44 pages indexed. Those numbers can't tell us whether our visible FAQs get cited in AI answers, or whether Naver actually uses the leftover markup. We also haven't checked whether Bing or ChatGPT search read FAQPage.

Government and health sites that kept FAQ rich results after September 2023 may have real display history from before May 7; check your own Search Console data before copying our decision.

The generator has one flaw of its own: the build turns HTML tags into spaces when it extracts text, so an extra space lands where a link ends. One Korean note's FAQ JSON-LD has a space before a particle that the page itself doesn't show; we first noticed it in the October 26 operations log.

Count by type, open the shutdown notices, and keep feeds off the sitemap list

  1. Count pages per JSON-LD type in the deployed HTML. Unpack nodes inside @graph and array types such as ["MobileApplication","VideoGame"].
  2. For each type, search the Google Search Central updates list and the Naver Search Advisor announcements for shutdown or restriction dates. Reopen the original even when a research document already quotes the date.
  3. Before deleting a retired type, look at how it is produced. If it is generated from visible text, leave it and only drop it from validation. If it is hand-written JSON-LD, deleting it is the better choice.
  4. In RSS, put the full article in each item's <description> and keep pubDate as the publication date. Give Google sitemap.xml only.
  5. If you have app pages, put the required fields and screenshot sizes of your SoftwareApplication markup under a build check.
  6. Open the Search Console sitemap list and make sure no feed is on it. A repository check will not catch this path.

Step 1 was this script.

import json, os, re, sys, collections
pages, questions = collections.Counter(), 0
for d, _, fs in os.walk(sys.argv[1]):
    for f in fs:
        if not f.endswith(".html"): continue
        s = open(os.path.join(d, f), encoding="utf-8").read()
        seen = set()
        for m in re.finditer(r'<script type="application/ld\+json">(.*?)</script>', s, re.S):
            data = json.loads(m.group(1))
            nodes = data if isinstance(data, list) else data.get("@graph", [data])
            for node in nodes:
                t = node.get("@type")
                seen.update(t if isinstance(t, list) else [t])
                if t == "FAQPage": questions += len(node.get("mainEntity", []))
        pages.update(seen)
print(pages.most_common(), "FAQ questions:", questions)

Don't spend more time on FAQ markup. That time is better spent adding one more date or measured number to the body.

Next

Fix the extra space after links when the build extracts FAQ text. Once impressions are high enough to compare pages, split search performance between notes with an FAQ and pages without one.

FAQ

Does Google still show FAQPage structured data in 2026?

Google stopped showing FAQ rich results on May 7, 2026 and removed the documentation on June 15. Naver ended FAQ display in its web results on July 9, 2026.

Should I remove my FAQPage JSON-LD?

If it is generated from the Q&A on the page, there is little to gain from removing it. Naver says leftover FAQ markup does not affect ranking and may support document analysis. If you maintain it by hand, it can drift from the page, and removing it is the safer choice.

Is there a schema I need to add for generative engine optimization?

Not for Google. Its guide to generative AI features says structured data isn't required for generative AI search and there is no special schema.org markup to add. Google also says Search ignores llms.txt.

This note is written from values SugarMount measured itself; an AI coding agent was used to draft it.

All notes on Website and search · All AX notes