SEO
Docsbook builds the machine-readable half of your documentation for you. Every page
it hosts is server-rendered HTML carrying a resolved <title>, a cleaned meta
description, one canonical URL, an hreflang set that contains only languages you
have really translated into, OpenGraph and X cards with a generated image, a JSON-LD
graph, and an entry in a sitemap that robots.txt points at. You write Markdown; the
head is a consequence.
This section covers search results — what Google and Bing crawl, index and rank. Two neighbours cover the other machine surfaces and do not overlap with it: AEO is the answer box above the results, and GEO is being cited by an AI assistant instead of ranked.
What it costs you#
Three things, and one of them is not optional.
- Turn the SEO switch on. In the admin panel, Settings ▸ SEO & GEO, the
SEOtoggle. It is off on a new project, and while it is off every page is servednoindex, nofollow— the markup is all generated, and all of it says "do not index me". This is the single most common reason a Docsbook site is not in Google. It is free on every plan. - Write one clear
# H1and an opening paragraph that answers the page's question. They become the title and the description unless you override them. - Nothing else. Canonical URLs, the sitemap,
robots.txt, cards, JSON-LD and the language cluster are managed, and there is no configuration surface for them.
To override the generated line for one page, put it in frontmatter:
---
title: "Configure a webhook"
description: "Register a Docsbook webhook, choose its events, and verify the first delivery."
---To keep one page out of the index while leaving it published and readable:
---
noindex: true
---robots: noindex, noindex: yes and noindex: 1 are accepted too. Use it on pages
that spend crawl budget without ever earning a click — a 90,000-character changelog,
internal working notes, an unfinished placeholder. The site-wide switch is the wrong
instrument for that: turning it off hides everything.
The signals, and where each one is decided#
| Signal | What Docsbook does | Where |
|---|---|---|
<title> |
Frontmatter title → body H1 → file name; workspace name appended exactly once |
How it works |
<meta description> |
Frontmatter description → opening paragraphs, stripped of markup, at 160 characters |
How it works |
| Canonical URL | Custom domain → product path → apex short path → owner subdomain; never a URL that redirects | How it works |
hreflang |
Only locales this page is genuinely translated into, plus x-default |
How it works |
| OpenGraph / X card | summary_large_image with a generated 1200×630 image per page |
How it works |
| Robots directives | Preview → site switch → page noindex, in that precedence |
How it works |
sitemap.xml |
Every page plus real translations, lastmod from the source commit |
How it works |
| JSON-LD | Organization + TechArticle + BreadcrumbList on every page |
How it works |
| Discovery and re-crawl | Sitemap, robots.txt, IndexNow push, cache timers |
Indexing |
| Google positions | Search Console read into the admin panel, free on every plan | Indexing |
Why this is the right way (evidence)#
| What Docsbook does | Why it works on the crawler | Source |
|---|---|---|
| Serves complete server-rendered HTML | Google renders JavaScript in a queue where a page "may stay… for a few seconds, but it can take longer", and "not all bots can run JavaScript" | JavaScript SEO basics |
| Gives every page its own title and description | Google's title-link sources begin with "Content in <title> elements"; and "Identical or similar descriptions on every page of a site aren't helpful" |
Title links, Snippets |
| Points canonical at the URL that answers 200 | rel="canonical" is "a strong signal that the specified URL should become canonical" — a signal Google can only follow if the target resolves |
Consolidate duplicate URLs |
Lists only real translations in hreflang |
"If page X links to page Y, page Y must link back to page X. If this is not the case… those annotations may be ignored" | Localized versions |
Uses real commit dates for lastmod |
Google uses <lastmod> "if it's consistently and verifiably… accurate" |
Build a sitemap |
Emits FAQPage / HowTo only when the page has that content |
"don't add structured data about information that is not visible to the user, even if the information is accurate" | Intro to structured data |
| Renders the sidebar as HTML links on every page | Crawl budget is spent on what is reachable; "If many of these URLs are duplicates… this wastes a lot of Google crawling time on your site" | Crawl budget |
| Serves a 308 when a page moves | A temporary redirect would leave the dead URL as the canonical one | Consolidate duplicate URLs |
What Docsbook will not claim#
- None of this makes a page rank. Every mechanism above makes a page crawlable, unambiguous and correctly presented. Google's page-experience FAQ answers "Is there a single 'page experience signal'…?" with "There is no single signal", and answers how much page experience matters to ranking with "Google Search always seeks to show the most relevant content, even if the page experience is sub-par" (Page experience). Markup is the floor, not the lever.
- Structured data is documented as an eligibility signal, not a ranking one. Google's own introduction talks about rich results and says nothing about rank.
priorityandchangefreqin the sitemap do nothing for Google. "Google ignores<priority>and<changefreq>values." Docsbook emits them for the engines that do read them.- Crawl budget is probably not your problem. Google's crawl-budget guide is
addressed to "Large sites (1 million+ unique pages) with content that changes
moderately often (once a week)" and "Medium or larger sites (10,000+ unique
pages) with very rapidly changing content (daily)" — and says in the same breath
that these "are a rough estimate to help you classify your site. These are not
exact thresholds."
noindexon a huge changelog is still worth doing; treating a 60-page docs site as a crawl budget emergency is not. - No multiplier. Traffic depends on your topic, your competition and your domain. Any platform quoting you a percentage is quoting you someone else's site.
Limits#
- The site-wide switch defaults to off, and it is workspace-wide. There is no
"index this section, not that one" control above the per-page
noindexflag. - On a custom domain, the SEO switch and per-page
noindexare not honoured — pages are servedindex, followunconditionally — and there is nohreflangcluster, noBreadcrumbList, no sitemap, no moved-page redirect and none of the GEO page-level signals. The canonical URL, title, description, cards andTechArticlenode are all correct there. See How it works. - Search Console positions cover Docsbook-hosted hosts only. A site on your own domain is outside the property Docsbook reads. See Indexing.
- A rename outside Docsbook leaves no redirect. Moves made through Docsbook
write one automatically; a
git mvdoes not.
Checklist#
- The
SEOtoggle is on in Settings ▸ SEO & GEO. - Every page has one clear
# H1, or a frontmattertitle. - The opening paragraph answers the page's question in one or two sentences.
- Every page is reachable from the sidebar; no orphans.
- Pages that should never rank carry
noindex: true. - For multilingual docs, translations are enabled so each language earns its own indexable URL.
Related#
- How Docsbook builds the head of a page — the resolution orders.
- Indexing — discovery, re-crawl and Search Console.
- AEO — answer engines and rich results
- GEO — citation by AI assistants
- llms.txt
- AI translations
- Search options — the on-site search readers use once they arrive.