Octri

SEO

Docs are how people find your API. Every page carries the metadata search engines and link previews read, and you control it per project.

Settings

Open Docs settings in API Studio and choose SEO. Changes apply as soon as you save, without a publish. Each setting names its key under seo in octri.json, and the key octri docs seo set takes.

Search and social metadataon or offdefault: on

The master switch. Off removes link previews, canonical links, the sitemap and llms.txt, and asks search engines not to index any page. What each switch does has the detail.

enabled · CLI enabled

Title strategychoicedefault: dynamic
ValueStudio labelMeaning
dynamicDynamic per endpointEach page gets its own title, written with the Title template
staticSame title on every pageEvery page uses the Site title

titleMode · CLI titleMode

Site titletextdefault: the project name

The site's name in titles and previews, up to 120 characters.

title · CLI metaTitle

Title templatetextdefault: %s | the site title

How a page's title is written in dynamic mode. %s is the page's own title, so %s | Acme API gives List customers | Acme API.

titleTemplate · CLI titleTemplate

Descriptiontextdefault: none

What search results and link previews show for the home page, and for any page without a description of its own. Up to 300 characters.

description · CLI metaDescription

Open Graph image URLimagedefault: none

The picture link previews show on social sites and in chat apps. Upload one, or paste a URL. A 1200 by 630 image suits every network.

ogImage · CLI ogImageUrl

Keywordstextdefault: none

Keywords, separated by commas. Most search engines ignore them, but some site search tools still read them.

keywords · CLI keywords

Allow search engines to index this siteon or offdefault: on

Off asks search engines not to index or crawl the docs. Link previews keep working, so you can share links to a site you're not ready to have found.

indexable · CLI indexable

X / Twitter handletextdefault: none

Your handle for link previews on X, without the @. An @ you type is removed.

twitter · CLI twitterHandle

The favicon is under Appearance.

Titles

Two modes:

%s is replaced with the page title:

text
%s | Acme API   ->   List users | Acme API

Better for search: each page gets a distinct, descriptive title.

Indexable

Turn it off on staging, and remember to turn it back on

indexable: false emits noindex, nofollow on every page. It's what you want on a staging site, and catastrophic if it survives to production: your docs quietly vanish from search and nothing looks broken.

Canonical URLs

Each page emits a canonical URL built from your docs base URL, so the same content served on both your Octri subdomain and your custom domain isn't treated as duplicate content. The canonical follows the domain the reader is on.

Open Graph

The OG image is what appears when someone drops a link in Slack. Without one, the preview is a bare title and URL.

One good OG image beats a per-page one

A single branded image applied site-wide covers every share. Per-page images are a nice-to-have that mostly go unshipped.

What you get without configuring anything

Sensible defaults: the project name as the site name, the page title as the title, and a description derived from the page. Configure the settings to improve on that, not to make it work.

What each switch does

There are two separate switches. Search and social metadata turns off everything. Allow search engines to index this site only controls crawling, so an internal site can stay out of search and keep its link previews.

Both onNot indexableMetadata off
robots.txtAllows, and lists the sitemapDisallows everythingDisallows everything
sitemap.xmlEvery pageEmptyEmpty
llms.txtServedServedNot served
Page robots tagindex,follownoindex,nofollownoindex,nofollow
Social cardsYesYesNo
Canonical linksYesYesNo
KeywordsYesYesNo
Title and descriptionYesYesYes

Structured data

Pages include TechArticle and BreadcrumbList structured data, so search engines understand what they are and where they sit.

New pages reach search engines

When you publish, Octri tells search engines that support IndexNow which pages changed, so updates can be picked up sooner.

Examples

A title for every page, and a site that's not indexed yet:

octri.json
"seo": {
  "titleMode": "dynamic",
  "title": "Acme API",
  "titleTemplate": "%s | Acme API",
  "description": "Take payments with the Acme API: guides, reference and SDKs.",
  "indexable": false
}
bash
octri docs seo set metaTitle="Acme API" titleTemplate="%s | Acme API" indexable=false

For one page's title and description, see search title and description.

Troubleshooting