Search and AI discovery¶
Cuhlumn writes the signals that search engines and AI assistants use to find, understand, and cite a blog.
Meta tags¶
Every page has these tags:
<title>and<meta name="description"><link rel="canonical">with the absolute address on the canonical domain, except on the 404 pagerobots:index, follow, max-image-preview:large, ornoindex, followon tag pages and the 404 page- Open Graph:
og:type,og:site_name,og:title,og:description,og:url,og:image,og:image:alt - Twitter:
twitter:cardwithsummary_large_image,twitter:title,twitter:description,twitter:image - A link to the Atom feed
Posts also have article:published_time, article:modified_time, one article:tag for each tag, and a link to the Markdown copy.
Structured data¶
| Page | JSON-LD |
|---|---|
| Home page | Blog, or WebSite when the site has a home page, with up to 30 recent posts in blogPost |
| Post | BlogPosting and BreadcrumbList |
| Page | WebPage and BreadcrumbList |
| Tag page | CollectionPage |
Posts include the headline, description, address, image, language, author, publisher, dates, word count, and tags.
The author is a Person when the site has an author.
Otherwise the author is the publisher, an Organization with the site title and logo.
The publisher gets a sameAs list with the profile addresses from the social links of the site.
Email links are not in the list.
A site without profile links has no sameAs list.
See Appearance.
Atom feed¶
/feed.xml contains the 50 latest posts with their full HTML.
Pages are not in the feed.
Root-relative addresses in the content become absolute addresses.
Sitemap¶
/sitemap.xml lists the home page and every published post and page, with the update time.
The home page entry is not repeated, and tag pages are not listed.
robots.txt¶
llms.txt¶
llms.txt is an index for AI assistants:
- The site title as a heading
- The description as a quote
- A line about the product, when the site has a
project_url - A
## Postssection and a## Pagessection with links to the Markdown copies and summaries
llms-full.txt contains llms.txt and then the Markdown copy of every entry.
Markdown copies¶
/{slug}.md returns an entry as Markdown:
# How we back up SQLite
> Our nightly routine for one database file.
Published October 27, 2026 on Harbor Notes: https://blog.example.com/sqlite-backups/
We back up **one SQLite file** every night.
IndexNow¶
When a post is saved with published status and the site has indexnow set to true, the server sends the post address and the home address to https://api.indexnow.org/indexnow.
Bing, Yandex, and the other IndexNow engines receive the notification.
Google reads the sitemap.
- Each site has its own key, served at
/{key}.txt. - A new site gets a random key of 32 hexadecimal characters.
- A site update without
indexnow_keykeeps the current key. indexnowis on by default. Set it tofalseto stop the notifications of one site.- The console shows the IndexNow switch next to the key in the Domains section.
- The key file stays available when
indexnowisfalse.
The notification runs in the background. The API answer does not wait for it, and a failure only goes to the server log.