Check your sitemap and structured data
In this guide you check the two things search engines read besides your text: the list of your pages and the description of each page. You also keep a copy of the list, so you can compare it after you change addresses. Run it before launch and after any change to how addresses are built.
Before you start
- A running, published Hatamoto site at its real address, such as
https://example.com. - A terminal with
curlfor the copy-and-compare steps. A browser is enough for the rest. - Optional: an AI agent connected to your site, as in Connect an AI agent.
Two terms. A sitemap is a file that lists your pages for search engines. JSON-LD is a block of machine-readable data in each page that tells search engines what the page is about, in the shared schema.org vocabulary.
Steps
- Open
https://example.com/sitemap.xml. It is an index of smaller files, one per group of content, each with the date of its newest change. A site with pages and posts shows two:https://example.com/sitemap-blog.xml 2026-01-14 https://example.com/sitemap-misc.xml 2026-01-10mischolds your home page, your pages and anything without a group of its own. It is always last. - Open one of the files, such as
sitemap-blog.xml. It lists the blog listing page first, then every published post, newest change first. To count the entries from a terminal:curl -s https://example.com/sitemap-blog.xml | grep -c '<url>' - Look for a page you expect. A page is left out when it is not published, when Ask search engines not to list this page is switched on, when a redirect sends its address elsewhere, or when its whole content type is set to Leave this type out of the sitemap.
- Save a copy of every address in the sitemap, before you change addresses:
for f in $(curl -s https://example.com/sitemap.xml | grep -o 'https://[^<]*sitemap-[^<]*\.xml'); do curl -s "$f" | grep -o '<loc>[^<]*</loc>' done | sort > before.txtAfter the change, run the same loop into
after.txtand compare the two:diff before.txt after.txtEvery address that left the list should forward to its new place. Hatamoto adds those forwards itself when you rename a page or change a content type's address pattern; check one by opening the old address.
- Submit
https://example.com/sitemap.xmlonce in each search engine's webmaster tool, such as Google Search Console or Bing Webmaster Tools. Yourrobots.txtalready points to it, so this only speeds up the first visit. - Open a published post and view its source. Search for
application/ld+json. The first block describes the post: anArticlewith itsheadline,author,datePublishedandurl. Another block describes your organisation and website. - Ask for the data alone. Replace
/blog/hellowith the address of one of your posts:curl -s -H 'Accept: application/ld+json' https://example.com/blog/helloThe answer is the JSON-LD of that page instead of the HTML.
- Check that three addresses agree for the same page: the
urlin the JSON-LD, the canonical link in the page head (rel="canonical") and the entry in the sitemap. - Paste the page address into Google's Rich Results Test to see which search features it qualifies for.
- Optional: ask your connected AI agent to "run
jsonld_validatefor this post" and "runsitemap_preview". The first lists missing fields per type as errors and warnings. The second returns the sitemap exactly as a crawler gets it, with the number of entries.
Check it worked
The sitemap lists every page you expect, the comparison shows only the changes you meant, every moved address forwards, and the JSON-LD of a post shows its real headline, author, date and address.
If the addresses in the sitemap or the JSON-LD start with http://localhost or an internal address, the server is not told its public address. Ask whoever runs it to set PUBLIC_BASE_URL and restart Hatamoto.
If a page you unpublished still appears, the file may be cached for up to an hour. Check that the change was saved, then try again later.
If the JSON-LD of a page appears twice, your theme or a plugin writes its own as well. A developer can remove the duplicate; see JSON-LD. Every rule for what goes in the sitemap is in Sitemaps.