Skip to content
← All posts

6 min read

A checklist for making search engines and AI read our site correctly

We found places where structured data and on⁠-⁠screen text disagreed, a wrong language tag, and inaccurate sitemap dates, and fixed them. Here they are as a checklist any site can reuse.

  • SEO
  • AEO
  • GEO
  • Structured data
  • Operations
The frequently asked questions section on the LIGHT OF LIFE home page
The home page FAQ. These questions and answers match the structured data word for word.

The question behind this post

What should you check so search engines and AI answer engines read your site correctly?

We thought the site already said everything it needed to. But when we read the HTML the way a crawler does, without JavaScript, some of what machines read did not match what people saw.

We used fire⁠-⁠your⁠-⁠seo⁠-⁠agency (github.com/leopard627/fire⁠-⁠your⁠-⁠seo⁠-⁠agency), an open checklist that looks at search engines, AI answer engines, generative AI, and Naver separately. Here is what we found and how we fixed it, in order.

1. Structured data must match the screen

The home page carried nine FAQ entries as FAQPage structured data, but none of them were visible on screen. Structured data that is not on the page can violate search engine guidelines.

So we put the same questions and answers on the home page as a visible section. The screen and the structured data read from one source, so one cannot change without the other. All nine now match word for word.

The FAQ section at the bottom of the home page
The home page FAQ, in the same words as the structured data.

2. Get the language tag right

Every English page under /en was served as <html lang="ko">. The hreflang links were correct, but the pages themselves claimed to be Korean. We gave each language its own root layout, so English pages now ship lang="en".

3. Sitemap dates should be real

Every page in the sitemap showed the build time as its last modified date. When every deploy marks every page as just changed, search engines stop trusting the value. We now record the date each page actually changed, and posts use their published and updated dates.

4. One question and one answer per page

Answer engines pick out sentences that answer a question rather than summarizing a page. So each page now opens with the question it answers and a one⁠-⁠sentence direct answer that names its subject. The same pair ships as that page's FAQPage.

The question and answer block at the top of a subpage
The question and direct answer at the top of the Philosophy page.

5. Announce new posts quickly

  • The journal has RSS feeds, one for Korean and one for English.
  • After each deploy, every URL in the sitemap is sent to IndexNow. Keeping the list by hand guarantees new pages get missed.
  • robots.txt allows AI search crawlers, along with Naver (Yeti) and Daum (Daumoa).
  • Each page has its own share image, so a shared link shows which page it is.

6. Keep fixes from breaking again

Finally, we wrote a check that runs before every deploy. It confirms each page has one h1, a title and description, a canonical URL, language pairs, the right language tag, valid structured data, visible FAQ text, and entries in the sitemap and RSS. If anything fails, the deploy stops. Right now all 24 pages pass with no failures.

Guarding against regressions lasts longer than fixing something once.

What is left

Registering with search engines and measuring results happen outside the site, so we handle them separately. In two weeks we will measure whether visibility and citations actually changed, and add the results to this post.