Keep an unresolved URL out of an automatically accepted list until the site owner checks it. ChatGPT cannot establish the current status of an address merely from its name.
Make membership decisions before writing XML
This original fictional inventory records observations supplied by the site owner. All paths use https://example.org:
| ID and path | Supplied observation | Draft decision |
|---|---|---|
P1 /guides/packing |
200; canonical is itself; intended public page | Include canonical URL |
P2 /old-packing |
301 to P1 | Exclude redirect URL |
P3 /guides/packing?view=print |
200; canonical points to P1 | Exclude duplicate; keep P1 once |
P4 /staff/draft |
200; noindex; not intended for search | Exclude |
P5 /guides/storage |
Status and canonical not supplied | Hold for inspection |
These decisions use the stated facts. They are not live checks of example.org. A generator should not convert “not supplied” into 200, invent a canonical tag, or remove a noindex directive to make the inventory easier to publish.
Google's sitemap guidance, checked October 24, 2026, recommends listing canonical URLs that you want in search results. It also treats sitemap submission as a hint. Inclusion does not guarantee crawling, indexing or ranking.
Generate only the approved canonical set
For the supplied inventory, the approved set contains one URL:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://example.org/guides/packing</loc></url>
</urlset>
There is no lastmod because the inventory supplies no reliable significant-change date. A build timestamp is not automatically the page's last meaningful update. Use a supported lastmod value only when the maintained content record justifies it.
This guide's fixture checks one expected loc and the absence of P2–P5. XML parsing is another layer; the sitemap validation guide separates parsing, schema and protocol checks. None of those checks decides whether the business wants P4 discoverable.
Copy an inventory-led drafting prompt
Prepare a crawler-sitemap proposal from this supplied inventory.
Site origin and intended sitemap location: [ENTER]
Inventory with stable IDs, absolute URLs, observed status,
redirect/canonical targets, indexing directives and public intent:
[PASTE APPROVED DATA]
Accurate significant-change dates, if available: [PASTE OR NONE]
For every row, give include/exclude/hold and the supplied reason.
Deduplicate approved canonical URLs without inventing equivalence.
Hold missing status, conflicting canonical or unclear public intent
for owner review. Do not crawl, submit, change robots directives,
remove noindex or claim that a URL is indexed.
Then generate XML for the approved set only. Omit unsupported dates.
Return the loc list separately so I can compare exact membership.
Providing the source inventory and a precise output follows OpenAI's prompting guidance. Review the decision list before using the XML; a syntactically tidy file can still include the wrong pages.
Keep the generator connected to maintained site data
For a site whose framework already generates a sitemap, correct its source rules instead of replacing the file with a chat-produced copy that will go stale. Compare the actual generated loc set with the approved inventory after the next build. Check redirects, canonical conflicts and indexing directives in the real site before any submission.
Keep P5 as a visible follow-up for its owner. Once its status and canonical are observed, decide its membership and regenerate the file. A separate HTML site map helps people navigate; it serves a different purpose from this crawler input.