# Theneo Docs: Documentation for Humans & AI
> Theneo is the AI-native documentation platform where humans and agents build, publish, and maintain docs, developer portals, and API references together.
# What Is Theneo? AI-Native Docs Platform
Source: https://docs.theneo.io/get-started/welcome-to-theneo
Welcome to Theneo, the **AI-native platform** for beautiful, interactive API documentation and developer portals, built in minutes.
**New here?** Start with the [**Quickstart**](https://app.theneo.io/theneo/quickstart/theneo-quickstart-guide/quickstart) to go from zero to a published, AI-powered doc.
# Quickstart: Publish API Docs in Minutes
Source: https://docs.theneo.io/get-started/quickstart
This quickstart takes you from zero to a **published, AI-powered documentation site** in minutes. You’ll create a project, bring in your content, let AI write the descriptions, brand it, and publish it to your own domain.
### Add your content
First, decide what you’re bringing in:
An API spec
REST (OpenAPI/Swagger), SOAP, GraphQL, gRPC, or AsyncAPI, or a Postman / Insomnia collection.
Existing docs / markdowns
Markdown guides, tutorials, and help-center content from your repo or another platform.
Migration from another platform
Nothing yet
Start blank, then pick Other Docs and build from ready-made section templates.
### Create your project
From the dashboard, click **Create Project**, give it a name, and choose a workspace.
If you’re on a **Personal** workspace, switch to **Corporate** first. Personal can’t invite teammates, share private projects, or use domain whitelisting. Corporate is included free. [More on workspaces.](6a3997b215d073c090fa4532)
Then choose how to import it:
The fastest way to start. On the Create Project screen:
* **API spec**: upload your file, paste a link, or connect a Postman collection. Theneo parses and structures it automatically.
* **Guides**: building user guides, tutorials, or a help center? Choose Other Docs (Non API-doc tab).
and pick your starting sections. See Guides & Content.
Writing with Claude or Cursor? Point your assistant at Theneo's skill.md so AI-generated content follows Theneo's structure.
To update an existing project later, open the editor's Endpoints → Import Collection. The [Import Your API](https://app.theneo.io/theneo/quickstart/editor/api-management/api-import) guide explains each import option: Merge 2.0, Append, Overwrite, and Endpoints Only.
For docs-as-code and CI/CD. Import an API spec or your Markdown. Remember to follow Theneo’s Markdown structure, or use Theneo’s skill.md.
npm install -g @theneo/cli@latest
theneo login
theneo project create --name my-api --file ./openapi.yml --generate-description fill --publish
Bringing Markdown instead? theneo create --dir ./docs --name my-docs. Full reference: [Theneo CLI](https://app.theneo.io/theneo/quickstart/automation-and-dev-tools/theneo-cli).
Let AI write it
---------------
The [AI Co-pilot](6a3997b215d073c090fa4411/6a3997b215d073c090fa43ff) drafts your endpoint, parameter, and response descriptions automatically. On import, choose how much it does: **Full**, **Enhance**, or **Off**.
Writing with **Claude or Cursor**? Point your assistant at Theneo’s **`skill.md`** so AI-generated content follows Theneo’s structure. See [AI in Theneo.](6a3997b215d073c090fa4572)
Make it yours
-------------
Apply a [theme](6a3997b215d073c090fa43fb/6a3997b215d073c090fa43f9) in one click, then set your [branding](6a3997b215d073c090fa4502/6a3997b215d073c090fa44ec): logo, colors, and fonts. No code required.
Choose any of these project themes and layouts.
Publish and go live
-------------------
[Publish](6a3997b215d073c090fa4502/6a3997b215d073c090fa44ea) privately or publicly, then connect a [custom domain](6a3997b215d073c090fa4502/6a3997b215d073c090fa44ee) so your docs live at `docs.yourcompany.com`.
Next steps
----------
Invite your team
Invite your team
Add collaborators and set section-level access.
Turn on the API Explorer
Turn on the API Explorer
Let readers call your endpoints live, right from the docs.
Sync with Git
Sync with Git
Keep docs and code in sync with two-way GitHub Sync.
Optimize for AI (GEO)
Optimize for AI (GEO)
Get cited by ChatGPT, Claude, and Perplexity with llms.txt and MCP.
# Migrate from Mintlify, GitBook or ReadMe
Source: https://docs.theneo.io/get-started/migrate-to-theneo
**Migrating to Theneo is fast and fully supported**. Bring your specs, Markdown, or a whole project from any platform.
Migrate from any platform
Mintlify
One of the most common switches. Bring your docs over and add AI writing, an interactive API Explorer, and an AI assistant.
ReadMe
Another common move. Bring over your reference and guides in minutes.
GitBook
Move your spaces and content into a faster, AI-native workflow.
Redocly
Import your OpenAPI and Redoc-based documentation directly.
Swagger
Import OpenAPI/Swagger specs directly.
Postman
Sync collections via API key or GitHub.
Docusaurus
Move Markdown content with the CLI.
Every platform above has a step-by-step guide; open a card to start. Moving from somewhere else? See [Migrate from Other Platforms](https://docs.theneo.io/get-started/migrate-to-theneo/migrate-from-other-platforms), and use the [Migration Checklist](https://docs.theneo.io/get-started/migrate-to-theneo/migration-checklist) to plan the move.
Choose how to migrate
---------------------
Most migrations combine two of these: your guides come in as Markdown and your API reference comes in from its spec.
Markdown import with the CLI
Turn your exported pages into a Theneo project folder, check it with theneo audit, and import it with theneo import.
API spec import
Import OpenAPI, Swagger, Postman, GraphQL, AsyncAPI and other formats to build your API reference.
AI-assisted migration
Let an AI agent such as Claude Code restructure the export and rewrite components, then keep editing through the Theneo MCP server.
White-glove migration
Have the Theneo team plan and run the migration with you. See the details below.
Why teams switch to Theneo
--------------------------
Evaluating **Theneo vs Mintlify, GitBook, ReadMe, Redocly, or Docusaurus**? Teams move to Theneo for an **AI-native** workflow they can’t get elsewhere.
AI writes the docs
AI writes the docs
The Co-pilot drafts every description; the Theneo Agent updates docs straight from your pull requests.
An AI assistant for readers
An AI assistant for readers
Ask AI answers questions inside your docs, and embeds in your own app or site.
Found & cited by AI
Found & cited by AI
An MCP server, llms.txt, and per-section Markdown ship by default, so AI engines cite you accurately.
Enterprise-ready
Enterprise-ready
SSO (SAML/OIDC), SCIM, Teams, audit logs, white-label, and self-hosting.
All without giving up docs-as-code, custom branding, or your existing workflow.
Keep your old URLs working
--------------------------
Switching platforms usually means your page URLs change, which can break inbound links and hurt hard-won search rankings. When you move to Theneo, your old URLs can be **redirected to their new Theneo pages**, so existing links keep working and your search rankings carry over.
Planning a move? Reach out to [hello@theneo.io](mailto:hello@theneo.io).
White-glove migration support
-----------------------------
As part of our **Annual Growth Package**, the Theneo team provides:
* **End-to-end migration assistance** that takes the heavy lifting off your plate
* **Personalized suggestions** to improve your docs with Theneo’s smart tools
* **Optimization support** for readability, structure, and performance
Need help migrating?
For custom migration cases or platform-specific needs, reach us at hello@theneo.io. We'll evaluate your current setup and provide tailored migration assistance.
# Migrate from Mintlify
Source: https://docs.theneo.io/get-started/migrate-to-theneo/migrate-from-mintlify
Mintlify keeps your docs as MDX files in a Git repository, so you already have everything you need to migrate. This guide shows how to turn that repository into a Theneo project folder, which components carry over, and which ones you rewrite before importing.
At a glance
-----------
Markdown (headings, lists, links, tables, code fences)
Imports as is.
<Steps> / <Step title>
Imports as a Steps widget.
Callouts, Tabs, Accordions, Cards, CodeGroup
Rewrite to Theneo widget syntax first (see the conversion table). Without it, callouts become plain paragraphs and tabs, accordions and cards import empty.
OpenAPI spec
Imports as your API reference.
docs.json navigation
Recreate it as the sections array in theneo.json.
Images with relative paths, snippets, custom React components
Do not transfer. Use absolute image URLs and paste snippet content into the page.
Before you start
----------------
* Clone your Mintlify docs repository. Your pages are the `.mdx` files, navigation lives in `docs.json` (`mint.json` in older projects), and reusable content in `snippets/`.
* Find your OpenAPI file. It is referenced from `docs.json` or from the `openapi` frontmatter of endpoint pages.
* Install Node.js 18 or later for the Theneo CLI.
Build the Theneo project folder
-------------------------------
Make an empty folder (for example theneo-docs/). Each page becomes its own folder with an index.md (the content) and a section.json (use the default from Project Folder Structure). Nested folders become nested pages.
Copy each .mdx page into its own folder and rename it to index.md (for example quickstart.mdx becomes quickstart/index.md). Other .mdx file names are not read by the importer, so the rename matters. Remove import lines at the top of a page; they would show up as text.
Add a theneo.json at the root with your project name and a sections array that lists every page folder in sidebar order. Only sections listed here are imported, so add every page. The name you set here is the sidebar label.
Put your OpenAPI file at the root of the folder and add "apiSpec": "openapi.yaml" to theneo.json. The same import then builds your API reference next to your guides.
Frontmatter is optional. If a page has no name in theneo.json, its frontmatter title becomes the page name. A frontmatter description is added to the top of the page as its first paragraph, so delete it if you do not want it shown.
Convert Mintlify components
---------------------------
Rewrite these components in each `index.md`. Everything not listed here is plain Markdown and needs no change.
<Note>, <Info>, <Tip>
<Callout attributes='{"dataType":"info"}'>
Theneo callouts come in four types: info, success, warning and error.
<Check>
<Callout attributes='{"dataType":"success"}'>
<Warning>
<Callout attributes='{"dataType":"warning"}'>
<Danger>
<Callout attributes='{"dataType":"error"}'>
<Steps> / <Step title="…">
No change
Imports as a Steps widget.
<Tabs> / <Tab title="…">
<Tabs attributes='{"tabs":["A","B"]}'> with <TabPanel tabTitle="A">
Each tabTitle must match a name in the tabs list.
<AccordionGroup> / <Accordion title="…">
<Accordion> with one <AccordionItem title="…"> per item
A single Mintlify accordion becomes an Accordion with one item.
<Card title="…" href="…">
<Card attributes='{"externalLink":"…"}'> with <title> and <description> children
<CardGroup cols={2}>
<CardGroup> with Theneo Cards inside
Two to four cards per group.
<CodeGroup>
Separate code fences, or Tabs with one code fence per panel
A CodeGroup imports as a single paragraph.
<Frame>
Markdown image 
Images wrapped in <Frame> are dropped. Use absolute URLs.
<ParamField>, <ResponseField>, <Expandable>
Your OpenAPI reference, or a Markdown table
Not supported in guides.
<Snippet> and imported snippets
Paste the content into the page
Turn repeated blocks into Reusable Content after import.
Mermaid code fence
Re-add with the Mermaid widget in the editor
Imports as a code block.
For example, a Mintlify warning and tab group:
<Warning>Rotate keys every 90 days.</Warning>
<Tabs>
<Tab title="npm">npm install acme</Tab>
<Tab title="yarn">yarn add acme</Tab>
</Tabs>
becomes:
<Callout attributes='{"dataType":"warning"}'>
<p>Rotate keys every 90 days.</p>
</Callout>
<Tabs attributes='{"tabs":["npm","yarn"]}'>
<TabPanel tabTitle="npm"><p>npm install acme</p></TabPanel>
<TabPanel tabTitle="yarn"><p>yarn add acme</p></TabPanel>
</Tabs>
Fix images
----------
Image paths such as `/images/setup.png` point at files in your Mintlify repository, and the importer does not upload them. Before importing, replace each with a public absolute URL, for example from your current published site or your own CDN. After importing, you can also drop images straight into the editor. Links between pages also keep their old paths, so update them to the new Theneo page URLs after import.
Import into Theneo
------------------
npm install -g @theneo/cli
theneo login
theneo project create --name "Acme Docs" --empty
theneo audit --dir ./theneo-docs
CLI audit checks the structure, theneo.json, and widget syntax (including Callout types and attributes JSON). Fix every error before importing.
theneo import --project acme-docs --dir ./theneo-docs
Use the project slug from step 1. Importing into a project replaces its content, so import into a new project and review there.
Open the project in the editor, check pages that used components or images, then publish when you are ready.
Migrate with AI
---------------
The restructuring and component rewrites are repetitive, so an AI coding agent such as Claude Code can do most of it. Give it your Mintlify export, ask it to produce a Theneo project folder, and have it run `theneo audit` until the folder is clean. You review the result, then import.
Convert the Mintlify docs in ./source into a Theneo project folder at ./theneo-docs.
- One folder per page with index.md and the default section.json.
- A theneo.json with "name" and a "sections" array in the same order as the Mintlify navigation.
- Rewrite Mintlify components into Theneo widgets using the conversion table on
https://docs.theneo.io/get-started/migrate-to-theneo/migrate-from-mintlify
- Replace relative image paths with absolute URLs and list any you could not resolve.
- Run "theneo audit --dir ./theneo-docs" and fix every error.
After the import, you can keep editing with AI by connecting the [Theneo MCP server](https://docs.theneo.io/ai-in-theneo/theneo-mcp-server) to Claude or another MCP client, so it can read and update sections in your project directly.
What does not transfer
----------------------
* Custom React components and anything that needs Mintlify's MDX runtime.
* Analytics, search settings, feedback data and theme configuration from `docs.json`. Set branding, custom domain and analytics in Theneo after import.
Stuck on a component, a large project, or a custom setup? Email hello@theneo.io and the team will look at your project with you.
# Migrate from GitBook
Source: https://docs.theneo.io/get-started/migrate-to-theneo/migrate-from-gitbook
GitBook can sync each space to a Git repository as Markdown, which is the starting point for a migration to Theneo. This guide covers exporting from GitBook, turning the export into a Theneo project folder, and rewriting GitBook blocks into Theneo widgets.
At a glance
-----------
Markdown (headings, lists, links, tables, code fences)
Imports as is.
Hints, tabs, steppers, expandable blocks, cards
Rewrite to Theneo widget syntax first (see the conversion table). Without it, {% hint %} and {% tabs %} blocks import as literal text.
OpenAPI specs
Import as your API reference once you export the spec file.
SUMMARY.md table of contents
Recreate it as the sections array in theneo.json.
Images in .gitbook/assets, includes, embeds
Do not transfer automatically. Use absolute image URLs and paste included content into the page.
Export from GitBook
-------------------
Create an empty GitHub or GitLab repository (or an empty branch).
In the GitBook space, choose Set up Git Sync, connect GitHub or GitLab, and select the empty repository and branch.
For the first sync, pick the direction GitBook to GitHub (or GitLab). Picking the other direction replaces your GitBook content with the empty repository.
Repeat for every space or variant you want to move. Each export contains README.md (the space home page), SUMMARY.md (the navigation), .gitbook.yaml, .gitbook/assets/ (uploaded files) and .gitbook/includes/ (reusable content).
Double-check the sync direction before you start it. Syncing from an empty repository into GitBook overwrites the space.
Build the Theneo project folder
-------------------------------
Make an empty folder (for example theneo-docs/). Each page becomes its own folder with an index.md (the content) and a section.json (use the default from Project Folder Structure). Nested folders become nested pages.
Give every page its own folder with an index.md. A GitBook page file such as getting-started/install.md becomes getting-started/install/index.md. A README.md is the page of its folder in GitBook, so rename it to index.md; otherwise Theneo imports it as a separate page called "readme". Use SUMMARY.md as your guide to the page order and nesting.
Add a theneo.json at the root with your project name and a sections array that lists every page folder in sidebar order. Only sections listed here are imported, so add every page. The name you set here is the sidebar label.
Put your OpenAPI file at the root of the folder and add "apiSpec": "openapi.yaml" to theneo.json. The same import then builds your API reference next to your guides.
Convert GitBook blocks
----------------------
Rewrite these blocks in each `index.md`. Everything not listed here is plain Markdown and needs no change.
{% hint style="info" %}
<Callout attributes='{"dataType":"info"}'>
Close it with </Callout> where {% endhint %} was.
{% hint style="success" %}
<Callout attributes='{"dataType":"success"}'>
{% hint style="warning" %}
<Callout attributes='{"dataType":"warning"}'>
{% hint style="danger" %}
<Callout attributes='{"dataType":"error"}'>
{% tabs %} / {% tab title="…" %}
<Tabs attributes='{"tabs":["A","B"]}'> with <TabPanel tabTitle="A">
Each tabTitle must match a name in the tabs list.
{% stepper %} / {% step %}
<Steps> with <Step title="…">
Move the step heading into the title attribute.
<details><summary>…</summary>
<Accordion> with <AccordionItem title="…">
Imported as is, the content shows as plain text and is no longer collapsible.
Cards (<table data-view="cards">)
<CardGroup> with Theneo Cards
Two to four cards per group.
{% content-ref url="…" %}
A Card with externalLink, or a plain link
{% code title="…" %} around a code fence
Remove the wrapper and keep the fence
{% embed url="…" %}
A plain link, or re-add the embed in the editor
{% include ".gitbook/includes/…" %}
Paste the content into the page
Turn repeated blocks into Reusable Content after import.
{% openapi %} / {% swagger %} blocks
Your OpenAPI reference
Export the spec and set apiSpec in theneo.json.
For example, a GitBook hint:
{% hint style="warning" %}
Rotate keys every 90 days.
{% endhint %}
becomes:
<Callout attributes='{"dataType":"warning"}'>
<p>Rotate keys every 90 days.</p>
</Callout>
Fix images
----------
GitBook exports images as files in `.gitbook/assets/`, usually referenced with relative paths such as `
`. The importer does not upload these files, so relative paths end up as broken images. Replace each one with a public absolute URL, for example ``. After importing, you can also drop images straight into the editor. Links between pages also keep their old paths, so update them to the new Theneo page URLs after import.
Bring your API reference
------------------------
GitBook keeps OpenAPI specs at the organization level and shows them with `{% openapi %}` or `{% swagger %}` blocks, so they are not always part of the Markdown export. Download the spec file (or take it from your API repository), put it at the root of the Theneo project folder, and set `apiSpec` in `theneo.json`.
Import into Theneo
------------------
npm install -g @theneo/cli
theneo login
theneo project create --name "Acme Docs" --empty
theneo audit --dir ./theneo-docs
CLI audit checks the structure, theneo.json, and widget syntax (including Callout types and attributes JSON). Fix every error before importing.
theneo import --project acme-docs --dir ./theneo-docs
Use the project slug from step 1. Importing into a project replaces its content, so import into a new project and review there.
Open the project in the editor, check pages that used components or images, then publish when you are ready.
Migrate with AI
---------------
The restructuring and component rewrites are repetitive, so an AI coding agent such as Claude Code can do most of it. Give it your GitBook export, ask it to produce a Theneo project folder, and have it run `theneo audit` until the folder is clean. You review the result, then import.
Convert the GitBook docs in ./source into a Theneo project folder at ./theneo-docs.
- One folder per page with index.md and the default section.json.
- A theneo.json with "name" and a "sections" array in the same order as the GitBook navigation.
- Rewrite GitBook components into Theneo widgets using the conversion table on
https://docs.theneo.io/get-started/migrate-to-theneo/migrate-from-gitbook
- Replace relative image paths with absolute URLs and list any you could not resolve.
- Run "theneo audit --dir ./theneo-docs" and fix every error.
After the import, you can keep editing with AI by connecting the [Theneo MCP server](https://docs.theneo.io/ai-in-theneo/theneo-mcp-server) to Claude or another MCP client, so it can read and update sections in your project directly.
What does not transfer
----------------------
* Comments, change requests, revision history and permissions.
* Integrations, custom fonts and site customization. Set branding, custom domain and analytics in Theneo after import.
Stuck on a component, a large project, or a custom setup? Email hello@theneo.io and the team will look at your project with you.
# Migrate from ReadMe
Source: https://docs.theneo.io/get-started/migrate-to-theneo/migrate-from-readme
A ReadMe project has two halves: guides written in ReadMe's Markdown, and an API reference generated from your OpenAPI file. In Theneo both come in through one import. This guide covers exporting from ReadMe, building a Theneo project folder, and rewriting ReadMe components and magic blocks.
At a glance
-----------
Markdown (headings, lists, links, tables, code fences)
Imports as is. Consecutive code fences import as separate code blocks.
OpenAPI spec from reference/
Imports as your API reference.
<Image src="…"> with absolute URLs
Imports as an image.
Callouts, tabs, accordions, cards, magic blocks
Rewrite to Theneo widget syntax first (see the conversion table). Without it, every callout imports as an info callout, accordions and cards import empty, and [block:…] magic blocks import as literal text.
Variables (<<name>>)
Removed on import. Replace them with plain text first.
_order.yaml ordering
Recreate it as the sections array in theneo.json.
Export from ReadMe
------------------
Pick one of these. All of them give you Markdown files for your guides.
* **Dashboard export.** Export the version (branch) from your ReadMe dashboard as a ZIP. ReadMe emails you the file. It contains `docs/` (guides), `reference/` (API pages and OpenAPI files), `recipes/`, `custom_pages/` and `_order.yaml` files.
* **rdme CLI.** Export guides to a local folder with `rdme docs export ./guides --key --branch `.
* **GitHub sync.** If your project already syncs to GitHub, clone that repository.
Images in a ReadMe export usually point at files.readme.io. They import fine, but they stay hosted by ReadMe. Download them and re-host them (or upload them in the Theneo editor) before you close your ReadMe account.
Build the Theneo project folder
-------------------------------
Make an empty folder (for example theneo-docs/). Each page becomes its own folder with an index.md (the content) and a section.json (use the default from Project Folder Structure). Nested folders become nested pages.
Copy each guide into its own folder as index.md (for example docs/getting-started.md becomes getting-started/index.md). Use _order.yaml to see the order and nesting. Custom pages become ordinary pages; convert HTML custom pages to Markdown. Recipes have no direct equivalent, so turn each one into a page with a Steps widget and code blocks.
Add a theneo.json at the root with your project name and a sections array that lists every page folder in sidebar order. Only sections listed here are imported, so add every page. The name you set here is the sidebar label.
Put your OpenAPI file at the root of the folder and add "apiSpec": "openapi.yaml" to theneo.json. The same import then builds your API reference next to your guides.
The frontmatter title becomes the page name if theneo.json does not set one. ReadMe's excerpt is not imported, so move it into the page body if you want to keep it.
Links between guides in a ReadMe export (for example `doc:getting-started`) keep their ReadMe paths, so update them to the new Theneo page URLs after import.
Convert ReadMe components
-------------------------
Rewrite these in each `index.md`. Everything not listed here is plain Markdown and needs no change.
<Callout theme="info"> or theme="default"
<Callout attributes='{"dataType":"info"}'>
Theneo reads the type from attributes, not from theme.
<Callout theme="okay">
<Callout attributes='{"dataType":"success"}'>
<Callout theme="warn">
<Callout attributes='{"dataType":"warning"}'>
<Callout theme="error">
<Callout attributes='{"dataType":"error"}'>
Blockquote callouts (> 📘 Title, > 👍, > 🚧, > ❗️)
The matching Callout: info, success, warning, error
Imported as is, they become plain quotes.
[block:callout], [block:image], [block:code] and other magic blocks
The matching Callout, Markdown image or code fence
Older ReadMe projects store these as JSON. Imported as is, they show as text.
[block:parameters] tables
A Markdown table
<Tabs> / <Tab title="…">
<Tabs attributes='{"tabs":["A","B"]}'> with <TabPanel tabTitle="A">
Each tabTitle must match a name in the tabs list.
<Accordion title="…">
<Accordion> with <AccordionItem title="…">
<Cards columns={…}> / <Card title="…" href="…">
<CardGroup> with Theneo Cards (<title>, <description>, externalLink)
Two to four cards per group.
<Glossary>term</Glossary>
Keep as is, then add the term to your Theneo Glossary
The term text imports, but its ReadMe definition does not.
Reusable Content and custom blocks
Paste the content into the page
Turn repeated blocks into Reusable Content after import.
<Embed>, recipes, interactive API explorers
A link or a page with Steps
Theneo builds its own API Explorer from your spec.
For example, a ReadMe warning callout:
<Callout icon="🚧" theme="warn">
Rotate keys every 90 days.
</Callout>
becomes:
<Callout attributes='{"dataType":"warning"}'>
<p>Rotate keys every 90 days.</p>
</Callout>
Bring your API reference
------------------------
Take the OpenAPI file from `reference/` in the export (or from your API repository), put it at the root of the Theneo project folder, and set `apiSpec` in `theneo.json`. Text you wrote on ReadMe endpoint pages outside the spec is not part of the file, so move it into the spec's descriptions or add it in the Theneo editor after import.
Import into Theneo
------------------
npm install -g @theneo/cli
theneo login
theneo project create --name "Acme Docs" --empty
theneo audit --dir ./theneo-docs
CLI audit checks the structure, theneo.json, and widget syntax (including Callout types and attributes JSON). Fix every error before importing.
theneo import --project acme-docs --dir ./theneo-docs
Use the project slug from step 1. Importing into a project replaces its content, so import into a new project and review there.
Open the project in the editor, check pages that used components or images, then publish when you are ready.
Migrate with AI
---------------
The restructuring and component rewrites are repetitive, so an AI coding agent such as Claude Code can do most of it. Give it your ReadMe export, ask it to produce a Theneo project folder, and have it run `theneo audit` until the folder is clean. You review the result, then import.
Convert the ReadMe docs in ./source into a Theneo project folder at ./theneo-docs.
- One folder per page with index.md and the default section.json.
- A theneo.json with "name" and a "sections" array in the same order as the ReadMe navigation.
- Rewrite ReadMe components into Theneo widgets using the conversion table on
https://docs.theneo.io/get-started/migrate-to-theneo/migrate-from-readme
- Replace relative image paths with absolute URLs and list any you could not resolve.
- Run "theneo audit --dir ./theneo-docs" and fix every error.
After the import, you can keep editing with AI by connecting the [Theneo MCP server](https://docs.theneo.io/ai-in-theneo/theneo-mcp-server) to Claude or another MCP client, so it can read and update sections in your project directly.
What does not transfer
----------------------
* Variables, personalized content and API keys shown to logged-in readers.
* Metrics, suggested edits, discussions and changelog subscribers.
Stuck on a component, a large project, or a custom setup? Email hello@theneo.io and the team will look at your project with you.
# Migrate from Docusaurus
Source: https://docs.theneo.io/get-started/migrate-to-theneo/migrate-from-docusaurus
Docusaurus sites are Markdown and MDX files in a Git repository, so the content is already in your hands. This guide shows how to turn your `docs/` folder into a Theneo project folder, how to rewrite admonitions and MDX components, and what to do with versions and your API reference.
At a glance
-----------
Markdown (headings, lists, links, tables, code fences with titles)
Imports as is.
Admonitions (:::note, :::warning …)
Rewrite to Callouts first. Without it, they import as literal text.
<Tabs> / <TabItem>, <details>
Rewrite to Theneo Tabs and Accordions first. <Tabs> with <TabItem> imports empty.
MDX import lines and React components
Do not transfer. import lines show up as text, so remove them.
sidebars.js and _category_.json
Recreate them as the sections array in theneo.json.
Versioned docs
Import each version into its own Theneo project version.
Before you start
----------------
* Clone your Docusaurus repository. Pages live in `docs/` (and `versioned_docs/` if you use versions), the sidebar in `sidebars.js`, and images in `static/`.
* If you generate API pages with an OpenAPI plugin, find the spec file it reads from.
* Install Node.js 18 or later for the Theneo CLI.
Build the Theneo project folder
-------------------------------
Make an empty folder (for example theneo-docs/). Each page becomes its own folder with an index.md (the content) and a section.json (use the default from Project Folder Structure). Nested folders become nested pages.
Copy each page into its own folder as index.md (for example docs/guides/install.mdx becomes guides/install/index.md). Other .mdx file names are not read by the importer, so the rename matters. A folder's index.md (or index.mdx) is the page of that folder. Use sidebars.js and the _category_.json labels to set the order and names.
Add a theneo.json at the root with your project name and a sections array that lists every page folder in sidebar order. Only sections listed here are imported, so add every page. The name you set here is the sidebar label.
Put your OpenAPI file at the root of the folder and add "apiSpec": "openapi.yaml" to theneo.json. The same import then builds your API reference next to your guides.
The frontmatter title becomes the page name if theneo.json does not set one. A frontmatter description is added to the top of the page as its first paragraph, so delete it if you do not want it shown. sidebar_label, sidebar_position, id and slug are not read.
Convert Docusaurus components
-----------------------------
Rewrite these in each `index.md`. Everything not listed here is plain Markdown and needs no change.
:::note, :::tip, :::info
<Callout attributes='{"dataType":"info"}'>
Close it with </Callout> where the closing ::: was.
:::warning, :::caution
<Callout attributes='{"dataType":"warning"}'>
:::danger
<Callout attributes='{"dataType":"error"}'>
Admonition title (:::warning Heads up)
A bold first line inside the Callout
<Tabs> / <TabItem value="…" label="…">
<Tabs attributes='{"tabs":["A","B"]}'> with <TabPanel tabTitle="A">
Use the label as the tab name.
<details><summary>…</summary>
<Accordion> with <AccordionItem title="…">
Imported as is, the content shows as plain text and is no longer collapsible.
import … lines and custom React components
Remove them, or replace with Theneo widgets
Code fences with title="…" or line highlights
No change
Import as code blocks.
Mermaid code fence
Re-add with the Mermaid widget in the editor
Imports as a code block.
For example, an admonition and a tab group:
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
:::warning
Rotate keys every 90 days.
:::
<Tabs>
<TabItem value="npm" label="npm">npm install acme</TabItem>
<TabItem value="yarn" label="yarn">yarn add acme</TabItem>
</Tabs>
becomes:
<Callout attributes='{"dataType":"warning"}'>
<p>Rotate keys every 90 days.</p>
</Callout>
<Tabs attributes='{"tabs":["npm","yarn"]}'>
<TabPanel tabTitle="npm"><p>npm install acme</p></TabPanel>
<TabPanel tabTitle="yarn"><p>yarn add acme</p></TabPanel>
</Tabs>
Fix images and links
--------------------
Image paths such as `/img/setup.png` or `./img/setup.png` point at files in your repository, and the importer does not upload them. Replace each with a public absolute URL, for example from your current site. Links between pages such as `./install.md` also keep their Docusaurus paths, so update them to the new Theneo page URLs after import.
Bring your API reference and versions
-------------------------------------
* **API reference.** Put the OpenAPI file your plugin uses at the root of the Theneo project folder and set `apiSpec` in `theneo.json`.
* **Versions.** Build one Theneo project folder per version from `versioned_docs/`, create the versions in your Theneo project, and import each folder with `theneo import --project acme-docs --projectVersion --dir `.
Import into Theneo
------------------
npm install -g @theneo/cli
theneo login
theneo project create --name "Acme Docs" --empty
theneo audit --dir ./theneo-docs
CLI audit checks the structure, theneo.json, and widget syntax (including Callout types and attributes JSON). Fix every error before importing.
theneo import --project acme-docs --dir ./theneo-docs
Use the project slug from step 1. Importing into a project replaces its content, so import into a new project and review there.
Open the project in the editor, check pages that used components or images, then publish when you are ready.
Migrate with AI
---------------
The restructuring and component rewrites are repetitive, so an AI coding agent such as Claude Code can do most of it. Give it your Docusaurus export, ask it to produce a Theneo project folder, and have it run `theneo audit` until the folder is clean. You review the result, then import.
Convert the Docusaurus docs in ./source into a Theneo project folder at ./theneo-docs.
- One folder per page with index.md and the default section.json.
- A theneo.json with "name" and a "sections" array in the same order as the Docusaurus navigation.
- Rewrite Docusaurus components into Theneo widgets using the conversion table on
https://docs.theneo.io/get-started/migrate-to-theneo/migrate-from-docusaurus
- Replace relative image paths with absolute URLs and list any you could not resolve.
- Run "theneo audit --dir ./theneo-docs" and fix every error.
After the import, you can keep editing with AI by connecting the [Theneo MCP server](https://docs.theneo.io/ai-in-theneo/theneo-mcp-server) to Claude or another MCP client, so it can read and update sections in your project directly.
What does not transfer
----------------------
* Custom React components, swizzled theme components and plugins.
* Blog posts and translations in `i18n/`.
Stuck on a component, a large project, or a custom setup? Email hello@theneo.io and the team will look at your project with you.
# Migrate from Redocly & Swagger
Source: https://docs.theneo.io/get-started/migrate-to-theneo/migrate-from-redocly-and-swagger
Redocly and Swagger docs are generated from an OpenAPI file, so the API reference moves with that file: import it and Theneo builds the reference, the endpoint pages and the API Explorer. Guides you wrote in Redocly Markdown come over through the CLI folder import.
At a glance
-----------
OpenAPI 3.0 / 3.1 and Swagger 2.0 files
Import directly as your API reference.
Tags
Become groups in the sidebar. Endpoints without any tags are grouped by path.
Endpoint names
Taken from summary, then operationId, then the path.
webhooks, x-webhooks and callbacks
Import into a Webhooks group.
Specs split across files with external $refs
Bundle into one file before importing.
Redoc extensions x-tagGroups, x-codeSamples, x-logo
Not read. Arrange groups in the editor, rely on the request samples Theneo generates, and set your logo in Branding.
Redocly Markdown guides
Rewrite Markdoc tags to Theneo widgets, then import with the CLI.
Import your API reference
-------------------------
Redocly: bundle your API description into a single file.
redocly bundle openapi/openapi.yaml --output openapi.yaml
SwaggerHub: export the API definition as YAML or JSON. Swagger UI: download the spec file the page loads.
In the dashboard, create a project and import the file or its URL (see Import your API). Or use the CLI:
npm install -g @theneo/cli
theneo login
theneo project create --name "Acme API" --file ./openapi.yaml
# or from a URL
theneo project create --name "Acme API" --link https://example.com/openapi.json
Check the groups in the sidebar, rename or reorder them in the editor, and add descriptions where the spec has none.
When the spec changes, re-import it. merge_v2 only updates sections whose API contract changed, so pages you edited in Theneo keep their edits unless their endpoint changed.
theneo project import --project acme-api --file ./openapi.yaml --import-type merge_v2
Markdown in your spec's description fields imports with the spec, including tables and images with absolute URLs.
Bring Redocly guides
--------------------
Redocly guides are Markdown files with Markdoc tags. Build a Theneo project folder from them (one folder per page with `index.md` and `section.json`, plus `theneo.json`; see [Project Folder Structure](https://docs.theneo.io/automation-and-dev-tools/theneo-cli/project-folder-structure)). Put the bundled spec at the root of the folder and set `"apiSpec": "openapi.yaml"` in `theneo.json`, so one import brings the guides and the reference together.
{% admonition type="info" %} … {% /admonition %}
<Callout attributes='{"dataType":"info"}'> … </Callout>
Use the matching type: info, success, warning or error.
{% tabs %} / {% tab %}
<Tabs attributes='{"tabs":["A","B"]}'> with <TabPanel tabTitle="A">
Each tabTitle must match a name in the tabs list.
{% cards %} / {% card %}
<CardGroup> with Theneo Cards (<title>, <description>, externalLink)
Two to four cards per group.
{% partial %} and {% code-snippet %}
Paste the content or code into the page
Turn repeated blocks into Reusable Content after import.
Your sidebar file (sidebars.yaml)
The sections array in theneo.json
Only sections listed there are imported.
Then validate and import:
theneo audit --dir ./theneo-docs
theneo import --project acme-api --dir ./theneo-docs
Importing a folder replaces the project's content, so import into a new project and review there.
What does not transfer
----------------------
* Redocly and Swagger UI theme settings. Set colors, fonts and your logo in Branding.
* Custom React pages and plugins from a Redocly portal.
Stuck on a large spec or a custom portal? Email hello@theneo.io and the team will look at your project with you.
# Migrate from Other Platforms
Source: https://docs.theneo.io/get-started/migrate-to-theneo/migrate-from-other-platforms
Moving from a platform without its own guide? API definitions in most common formats import directly, and written docs come in as Markdown through the CLI folder import. This page covers Postman, other API formats, Fern, Document360, Confluence and plain Markdown.
At a glance
-----------
Postman collections
Import directly, from a file or with a Postman API key and collection IDs.
GraphQL, AsyncAPI, WSDL, HAR, cURL, Insomnia
Import directly as your API reference.
Fern
Import the OpenAPI file (or export one with fern export). Convert the MDX docs with the Mintlify conversion table.
Document360
Export a ZIP. Markdown articles import through the CLI; HTML articles are converted to Markdown first.
Confluence
Export pages, convert them to Markdown, then import through the CLI.
Plain Markdown or another static site generator
Import through the CLI as a Theneo project folder.
Postman
-------
Import a collection from the dashboard, or with the CLI from an exported collection file or straight from your Postman workspace:
npm install -g @theneo/cli
theneo login
# from an exported collection (v2.x JSON)
theneo project create --name "Acme API" --file ./acme.postman_collection.json
# from your Postman workspace (repeat --postman-collection for more collections)
theneo project create --name "Acme API" --postman-api-key <postman-api-key> --postman-collection <collection-id>
You can also set the key in the `THENEO_POSTMAN_API_KEY` environment variable instead of passing it on the command line.
Other API formats
-----------------
These import the same way as an OpenAPI file, from the dashboard or with `theneo project create --file`:
* **GraphQL** schema (SDL)
* **AsyncAPI** 2.x and 3.x
* **WSDL** for SOAP services
* **HAR** files recorded from a browser or proxy
* **cURL** commands
* **Insomnia** exports
For OpenAPI and Swagger files, see [Migrate from Redocly & Swagger](https://docs.theneo.io/get-started/migrate-to-theneo/migrate-from-redocly-and-swagger).
Fern
----
* **API reference.** If your Fern project already uses an OpenAPI file, import that file. If it uses a Fern Definition, export one first with `fern export openapi.yml`.
* **Docs.** Fern pages are MDX with components similar to Mintlify's (callouts, tabs, accordions, cards). Follow [Migrate from Mintlify](https://docs.theneo.io/get-started/migrate-to-theneo/migrate-from-mintlify) to build the project folder and convert them.
* **Navigation.** Recreate the structure from `docs.yml` as the `sections` array in `theneo.json`.
Document360
-----------
In Document360, go to Content tools > Import and export > Import and export project and choose Export project. Select the workspaces and categories to include, tick Include media files, and download the ZIP from Recent files when it is ready.
In a single-language export, articles written in the Markdown editor come out as Markdown and WYSIWYG articles as HTML. A multi-language export is JSON. Markdown articles go straight into the project folder; convert HTML or JSON articles to Markdown first (see Confluence below for one way).
One folder per page with index.md and section.json, plus theneo.json for the order. See Project Folder Structure.
Download each API reference's source spec from Document360 separately and import it, or put it at the root of the folder and set apiSpec in theneo.json.
Exported media files are referenced with relative paths, which the importer does not upload. Host the images at public URLs and update the references, or drop the images into the editor after import.
Confluence
----------
Confluence exports pages as HTML or Word, and the Theneo importer reads Markdown. Convert each page first, for example with [pandoc](https://pandoc.org) or an AI agent:
pandoc page.html -t gfm -o page.md
pandoc page.docx -t gfm -o page.md
Confluence macros do not convert on their own: rewrite info, note and warning panels as Callouts and expand macros as Accordions. Then build the project folder and import it.
Plain Markdown
--------------
Any Markdown docs, from Jekyll, Hugo, MkDocs or a README-based repo, import as a Theneo project folder. See [Project Folder Structure](https://docs.theneo.io/automation-and-dev-tools/theneo-cli/project-folder-structure), and use Theneo widget syntax for callouts, tabs and cards.
Import into Theneo
------------------
theneo project create --name "Acme Docs" --empty
theneo audit --dir ./theneo-docs
theneo import --project acme-docs --dir ./theneo-docs
`theneo audit` checks the folder structure, `theneo.json` and widget syntax. Importing a folder replaces the project's content, so import into a new project and review there.
Migrate with AI
---------------
Converting HTML, macros or platform components is repetitive, so an AI coding agent such as Claude Code can do most of it. Point it at your export, ask for a Theneo project folder, and have it run `theneo audit` until the folder is clean. After the import, connect the [Theneo MCP server](https://docs.theneo.io/ai-in-theneo/theneo-mcp-server) to keep editing with AI.
What does not transfer
----------------------
* Permissions, reader groups, comments and analytics from the old platform.
* Platform-specific widgets, macros and integrations. Rebuild them with Theneo widgets.
Moving from a platform that is not listed here? Email hello@theneo.io and the team will look at your project with you.
# Migration Checklist
Source: https://docs.theneo.io/get-started/migrate-to-theneo/migration-checklist
Use this list to plan a move to Theneo from any platform. Each item links to the step-by-step detail in the platform guides.
Before you start
----------------
1. **List what you have.** Count your pages, API references, versions and languages, and note any custom components or integrations.
2. **Pick your migration path.** Markdown import with the CLI, API spec import, AI-assisted, or white-glove help; see [Choose how to migrate](https://docs.theneo.io/get-started/migrate-to-theneo).
3. **Freeze edits on the old platform,** or agree on a cutoff date, so nothing changes after you export.
4. **Export everything:** pages, images and the navigation file, per version and language. Your platform guide shows how.
5. **Collect your API specs** (OpenAPI, Postman and so on) from the platform or your code repository.
6. **List your old page URLs** for redirects.
Prepare the content
-------------------
1. **Build the Theneo project folder:** one folder per page with `index.md` and `section.json`, plus a `theneo.json` that lists every page in order. See [Project Folder Structure](https://docs.theneo.io/automation-and-dev-tools/theneo-cli/project-folder-structure).
2. **Convert platform components** (callouts, tabs, accordions, cards) to Theneo widgets, using the conversion table in your platform guide.
3. **Fix images:** replace relative image paths with public absolute URLs.
4. **Add your API spec** at the root of the folder and set `apiSpec` in `theneo.json`, or plan to import it on its own.
5. **Run \`theneo audit --dir ./theneo-docs\`** and fix every error.
Import and review
-----------------
1. **Create an empty project** with `theneo project create --name "Acme Docs" --empty`.
2. **Import** with `theneo import --project acme-docs --dir ./theneo-docs`. Import into a new project, since a folder import replaces the project's content.
3. **Review in the editor:** sidebar order, pages that used components, images, code blocks and the API reference.
4. **Update links between pages** to their new Theneo URLs.
5. **Set up branding:** logo, colors, fonts and navigation.
Go live
-------
1. **Set up your custom domain** in Theneo.
2. **Arrange redirects** from your old URLs; see [Keep your old URLs working](https://docs.theneo.io/get-started/migrate-to-theneo).
3. **Publish** your docs and check the live site.
4. **Switch DNS** to Theneo and update links in your product, emails and support content.
5. **Retire the old platform** once traffic has moved.
Want the team to run some or all of this for you? Email hello@theneo.io.
# Build Guides, Tutorials & Help Centers
Source: https://docs.theneo.io/get-started/guides-and-content
Theneo isn’t only for API references; it’s home for **guides, tutorials, help centers, and product docs** too. Write them visually or as Markdown, your call.
What you can build
------------------
User guides & tutorials
User guides & tutorials
Step-by-step walkthroughs, onboarding flows, and how-tos.
Help centers
Help centers
Searchable, AI-assisted knowledge bases for your users.
Product & internal docs
Product & internal docs
Release notes, runbooks, and internal references.
Anything else
Anything else
Any content the editor and widgets can build. It's a blank canvas.
Create one
----------
From the dashboard, click Create Project.
Pick Other Docs instead of an API format.
Start from ready-made templates: Introduction, Prerequisites, Tutorials, Usage, Troubleshooting, and more. Rename or reorder anytime.
Write your way
--------------
A Notion- and Figma-like experience, no code:
* Rich text and drag-and-drop blocks
* Real-time editing with live preview
* Collaboration with your whole team
Type / anywhere to drop in a [content widget](https://app.theneo.io/theneo/quickstart/editor/web-editor-widgets): steps, callouts, tabs, code, and more.
Theneo speaks standard Markdown (headings, bold, lists, code, tables, and links), plus interactive Theneo widgets you write inline or insert with /.
Prefer files in your own repo? Manage your whole project as Markdown and sync it through the CLI and Git. That's the docs-as-code workflow, covered in [Docs-as-Code with Markdown](https://app.theneo.io/theneo/quickstart/automation-and-dev-tools/theneo-cli/markdown-projects).
Recommended layout
------------------
For guides and tutorials, use the **Single Page Template**: modular pages, unique URLs for deep linking, and a focused read. Turn it on in [Themes & Templates](https://app.theneo.io/theneo/quickstart/theneo-quickstart-guide/themes).
# Docs Themes and Templates, No Code
Source: https://docs.theneo.io/get-started/themes-and-templates
Make your docs unmistakably yours. Apply a polished theme in one click, with no code required. Click through the live samples below to see each one in action.
Workspace predefined themes
---------------------------
Workspace themes apply across every project in your workspace. When you select one, it becomes the default look for all of your documentation, so switching a workspace theme affects every project at once. You can set a workspace theme during onboarding, or change it anytime from the Branding page.
Apply a workspace theme during onboarding, or from the Branding page.
Open the Solid sample live →
Open the Roboto sample live →
Open the Bloom sample live →
Project Themes
--------------
Project themes apply to a single project rather than your whole workspace. Where workspace themes set your overall brand, project themes mainly change layout, such as where search sits, where the light and dark mode toggle appears, and a few other structural details.
For colors, custom CSS, and custom JavaScript, use the Branding page instead.
Apply a project theme from Project Settings → Appearance → Change template.
Layout
------
Theneo offers two ways to present a project's sections, and you can switch between them anytime.
**Single Page Template** gives each section its own page. Readers click through to the next section to continue, moving through topics one at a time. This works well for user guides.
**Continuous scrolling** flows all sections together on one page, so readers scroll from one section to the next without clicking. We recommend this for smaller API reference projects.
Switch layouts in Project Settings → Features → Single Page Template.
Everything on one long page, best for API reference and specs.
Fine-tune your brand
--------------------
A theme instantly sets fonts, colors, and header and sidebar styles. Go further in [Branding](https://app.theneo.io/theneo/quickstart/publishing-documentation/branding-and-styling): primary and secondary colors, logo and favicon, fonts, code-block styling, footer links, and custom CSS/JS.
# Full Agentic Documentation Workflow
Source: https://docs.theneo.io/ai-in-theneo/full-agentic-workflow
Your documentation should keep itself. Connect Theneo to your repository once, and an AI agent writes, reviews, and ships every update as your product changes, for developers and AI alike.
Two things make this agentic: the docs keep up with your product on their own, and they are built to be read by AI agents, not just people. You stay in control by approving every documentation PR before it ships.
What you get
------------
Always in sync
Two-way GitHub sync keeps your repo and docs aligned, in both directions.
Written by AI
API docs and feature guides, drafted straight from your pull requests.
Agent-ready
llms.txt, llms-full.txt, and Ask AI make your docs readable by AI tools.
The workflow, end to end
------------------------
1 · Connect the GitHub app
Link Theneo to your repository for two-way sync. Edits in Theneo deploy to the repo, and repo changes flow back in.
2 · The agent watches your PRs
It reviews every pull request and suggests doc updates, or tag @theneo and it writes them. APIs and feature guides both.
3 · Review the doc PR, then deploy
Changes arrive as their own documentation PR, with release notes written for you. Approve and ship.
4 · Audit against your standards
Set your rules and style guide once. Theneo flags inconsistent wording and anything that falls short.
5 · Open up AI access
Turn on llms.txt, llms-full.txt, and Ask AI so readers and external AI tools can query your docs.
6 · Watch traffic, act on it
See agent and human traffic, and let Theneo's AI tell you what to improve and what content is missing.
Set it up once and the loop runs itself: you ship product, Theneo drafts the docs, you approve, and everything stays current for people and AI.
# How Theneo Uses AI, End to End
Source: https://docs.theneo.io/ai-in-theneo/ai-overview
**AI runs through every step of Theneo**: writing your docs, answering readers, and making your API consumable by other AIs.
Create docs with AI
-------------------
Let AI do the writing, then keep it current automatically.
AI Co-pilot
AI Co-pilot
Auto-generates clear descriptions for every endpoint, parameter, and response as you build.
Theneo Agent
Theneo Agent
Watches your pull requests and drafts the matching doc updates. You review and approve.
AI Writer
AI Writer
Generate, simplify, and expand prose inline, anywhere in the editor.
AI Analytics
AI Analytics
Let our AI analyze your traffic, AI search queries, and much more.
Help your readers with AI
-------------------------
Turn static docs into an assistant that answers questions instantly.
Ask AI
Ask AI
A conversational AI assistant built into your published docs, and embeddable in your own app or site.
AI Chatbot
AI Chatbot
A dashboard chatbot trained on Theneo's own documentation and knowledge base.
Make your docs AI-ready
-----------------------
Be the source AI engines and coding assistants cite, not the one they guess at.
AI Markdown Export
AI Markdown Export
Turn any page into clean, LLM-ready Markdown in one click.
MCP Server
MCP Server
Let AI clients like Claude and Cursor call your API directly through a generated MCP server.
GEO (AI Optimization)
GEO (AI Optimization)
The full strategy for getting your docs discovered and cited by AI engines.
llms.txt
llms.txt
A machine-readable index of your whole site, generated automatically.
# AI Co-pilot: Your AI Technical Writer
Source: https://docs.theneo.io/ai-in-theneo/ai-co-pilot-technical-writer
The **AI Co-pilot** has grown into a full **AI Agent** that lives inside your editor. Give it a prompt, any prompt, and it writes new content, fills in gaps, restructures sections, audits your docs, and much more.
Think of it as a technical writer, editor, and reviewer on call, right where you work.
1\. Choose your starting point at project creation
--------------------------------------------------
When you create a project, you still decide how much the AI should do up front:
Full AI Assistance
The AI writes fresh content for every part of your docs, replacing existing descriptions for a consistent, engaging result.
Enhance Existing Content
The AI fills in the gaps, adding what is missing without touching what you have already written.
No AI Assistance
Keep full manual control. Your existing documentation stays exactly as it is.
Changed your mind? The AI Agent inside the editor works on any project later, whatever you picked here.
2\. Meet the AI Agent inside the editor
---------------------------------------
Open the **AI Agent** from the editor's top bar. It is a conversation: type any prompt and watch it work across your documentation, from a single description to an entire project.
### Two ways to work
Point the Agent at your API spec and let it complete descriptions for every header, body field, parameter, and response in one pass.
Ask questions, generate documentation, and update content through a natural back-and-forth. Tap a quick action or just type in Ask anything to get going.
What you can ask it
-------------------
The Agent handles the whole documentation lifecycle. A few of the things it does:
Generate and rewrite
Write a brand-new section from a prompt, or rewrite an existing one in your voice.
Create new sections
Say what you need, like a Getting Started guide, and the Agent builds the section for you.
Audit your docs
Ask it to review the whole project for gaps, inconsistencies, and quality issues.
Fix typos and grammar
Clean up spelling and grammatical errors across a section in one shot.
Suggest improvements
Get targeted suggestions to sharpen the section you are working on.
Review your changes
Have the Agent look over recent edits before you publish.
How to use it
-------------
Click AI Agent in the editor's top bar to open the side panel.
Choose Chat for a conversation or Autofill to complete an API spec.
Type anything in Ask anything, or tap a quick action like Review my changes, Suggest improvements for this section, or Fix all typos and grammatical errors.
The Agent shows what it changed, so you stay in control before anything is published.
Example
-------
Documenting an order-creation endpoint with a body parameter like `idempotency_key`? Ask the Agent to explain it, and it suggests: _"Provide a unique key to prevent duplicate orders on network failure"_, instantly clarifying its purpose for your consumers.
Working at a bigger scale? Prompt it with _"Audit this project and list every endpoint missing a description"_ and it returns a checklist you can act on.
Why it matters
--------------
Speed
Dramatically cuts the time to write and update documentation.
Consistency
Keeps language and style uniform across every section.
Accuracy
Generated content is precise, reducing errors and misunderstandings.
Focus
Frees you to concentrate on API design instead of documentation.
The AI Agent keeps your API documented thoroughly, accurately, and clearly, while you stay focused on building.
FAQ
---
Yes. Whatever assistance level you chose at creation, the Agent is available in the editor for every project.
Only when you ask it to. The Agent shows what it changed so you can review before anything is published.
Yes. Ask it to add a section and it builds the structure and content for you.
The AI Writer widget continues and expands prose inline as you type. The AI Agent is a project-wide assistant you direct with prompts.
Prefer to write inline? The [AI Writer widget](https://app.theneo.io/theneo/quickstart/editor/web-editor-widgets/ai-writer) continues, simplifies, and expands prose anywhere in the editor.
# AI Agent for Pull Request Doc Review
Source: https://docs.theneo.io/ai-in-theneo/ai-agent-in-your-repository
**Your docs should keep up with your product.** The Theneo Agent reviews every pull request, compares it against your entire documentation project, and works out what is now outdated and what is missing, across your API reference and your user guides. Then it drafts the updates for you to approve. _(Beta)_
Most doc tooling only reacts to API spec diffs. The Theneo Agent reads what a pull request actually changed, a new feature, a behavior change, or a new endpoint, then looks across your whole project to find every page that should change because of it.
Nothing is published without your approval. The agent only drafts changes; you choose what ships.
How it works
------------
Install the Theneo Agent on your GitHub repository and connect it to Slack so you can review without leaving your workflow.
When a PR is opened, the agent reads what actually changed, from new features and behavior changes to new or updated endpoints.
The agent comments on the pull request with a documentation analysis: which existing sections are now outdated and what new content is missing.
From that analysis, the agent drafts the actual updates as a draft version inside Theneo, across your API reference and your guides.
Open the draft in Theneo, review the proposed changes, and approve to publish. Decline and nothing changes.
Auto or on demand: with auto-drafting enabled, the agent opens the Theneo draft as soon as its analysis is ready. With it off, it posts the analysis first; you trigger drafting by commenting on the pull request when you are ready.
What it catches
---------------
* **Outdated content**: pages that no longer match how your product behaves.
* **Missing content**: new features, settings, and endpoints that are not documented yet.
* **Every type of doc**: API reference, guides, concepts, and permissions, not just specs.
Example: for a PR that adds a review-and-approval feature, the agent flags your Publishing Rights, Workspace Configuration, and Access Management pages, then drafts the new settings, roles, and steps into each.
Why it’s different
------------------
Docs that never drift
When your product changes, the matching doc updates are proposed right away, so pages never quietly go stale.
Beyond API specs
It reacts to real product changes, not just spec diffs, so your guides and concepts stay current too.
Always human-approved
The agent drafts; you decide. Every change is reviewed before it reaches your readers.
Lives where you work
Triggered from GitHub, reviewed in Slack. It fits the workflow you already have instead of adding another tool.
Prefer a deterministic pipeline? [GitHub Actions](https://app.theneo.io/theneo/quickstart/automation-and-dev-tools/github-actions) updates docs on every PR via a workflow file, and the [AI Co-pilot](https://app.theneo.io/theneo/quickstart/ai-co-pilot-and-chat/ai-co-pilot) writes descriptions inside the editor.
# Ask AI: AI Search for Your Docs
Source: https://docs.theneo.io/ai-in-theneo/ask-ai-ai-search
**Ask AI** is your docs’ built-in **AI assistant**. Readers ask in plain language and get accurate, context-aware answers.
Enable Ask AI
-------------
Go to the Settings area of your Theneo project and find the Features section.
Find AI Search and switch it on.
Republish your documentation to make Ask AI live.
Once enabled, readers ask questions directly in the docs interface. Theneo understands the context of your content and responds using the powerful capabilities of GPT-4 Turbo.
Continuous conversation
-----------------------
Ask AI supports fully persistent, multi-turn conversations. Instead of treating each query in isolation, the AI retains context across messages, so readers can ask follow-ups, refine a request, or explore a topic in depth without repeating themselves.
Two delivery modes are available depending on how readers open Ask AI:
Embedded Chat
Conversation threads run directly inside the existing search component. Open Ask AI as usual. The chat interface replaces the single-query input with a persistent thread that holds context for the session.
Side-Panel Assistant
A slide-out modal that opens alongside your published documentation, keeping the page content visible while readers converse with the AI, ideal for referencing docs and asking follow-ups in parallel.
Export & embed Ask AI anywhere
------------------------------
Ask AI isn’t locked inside your Theneo docs. **Export the same AI search experience, trained specifically on your documentation, and embed it directly into your own product, app, or website.** Your users get consistent, intelligent, context-aware answers wherever they are, always drawing from your latest published content.
Embed in your own app
Drop Ask AI into your product, dashboard, or marketing site so users never have to leave to find answers.
Always in sync
Because it's trained on your published Theneo docs, answers stay accurate automatically as your content changes, with no re-training or maintenance.
Want Ask AI running outside Theneo? Export and embedding are **available on request**. Reach out to [hello@theneo.io](mailto:hello@theneo.io) to turn it on and get your embed configuration.
FAQ
---
No. Theneo sends only the relevant snippets needed to answer a query, maintaining efficiency and privacy.
Try it now, click **search** in this very doc, then hit the **Ask AI** button.
# AI Chatbot Trained on Your Docs
Source: https://docs.theneo.io/ai-in-theneo/ai-chatbot
The **AI Chatbot** gives your users instant, accurate answers, trained on your documentation.
Why use the AI Chatbot?
-----------------------
### For Theneo users
* **Quick problem-solving**: ask a question and get a fast, accurate answer instead of navigating long guides.
* **Ease of use**: an intuitive interface that even first-time users can use in seconds.
* **Comprehensive knowledge**: trained on Theneo’s entire knowledge base, from simple FAQs to deep technical detail.
### For your own documentation
* **Train it on your content**: feed in your docs, FAQs, and support materials to create a tailored assistant.
* **24/7 support**: uninterrupted help for your users without growing your support team.
* **Higher productivity**: let the bot handle routine questions so your team focuses on complex ones.
What makes it stand out
-----------------------
1. **Smart, context-aware assistance**: understands context and nuance to return the most relevant answers.
2. **Customizable for your brand**: match the bot to your tone, style, and voice for a consistent experience.
3. **Seamless integration**: embed it into your developer portal, website, or product interface.
4. **Search export**: extend the bot beyond your docs to websites, apps, and customer portals for a unified experience.
Benefits of embedding the chatbot
---------------------------------
* **Wider reach**: bring the assistant to wherever your users already are.
* **Streamlined journeys**: answer questions in-context, without forcing users to switch tools.
* **Higher satisfaction**: instant support makes users feel valued, building loyalty and trust.
How to get started
Click here to learn how to integrate your own intelligent help bot and elevate your user support experience.
# AI Analytics: What Readers Ask Your Docs
Source: https://docs.theneo.io/ai-in-theneo/ai-analytics
See exactly how readers use **Ask AI**. Every question is a signal for what your docs should cover next.
What you can track
------------------
Questions asked
Every Ask AI query, in your readers' own words, so you see exactly what they're looking for.
Usage & trends
How often Ask AI is used and how that shifts over time, by date range and by page.
Answer gaps
Recurring or poorly answered questions that flag missing, unclear, or out-of-date documentation.
Reader feedback
Section-level sentiment (thumbs up/down and comments) to see what's landing and what isn't.
Where to find it
----------------
Open your **Project Dashboard → Analytics**. The AI section surfaces your Ask AI questions and usage alongside users, sessions, and views, all filterable by date range and page.
AI analytics live inside the full [Project Analytics](https://app.theneo.io/theneo/quickstart/global-settings/project-management/analytics) dashboard.
Turn questions into better docs
-------------------------------
Skim what readers actually ask. Patterns surface fast.
Cluster recurring or unanswered questions into themes your docs should cover.
Improve the relevant sections, then watch those questions drop and satisfaction rise.
Not using the assistant yet? Set up [Ask AI](https://app.theneo.io/theneo/quickstart/ai-co-pilot-and-chat/ai-search) first. Analytics start flowing as soon as readers begin asking.
# AI Markdown Export for LLMs
Source: https://docs.theneo.io/ai-in-theneo/ai-markdown-export
**AI / Markdown Export** turns any page into clean, LLM-ready Markdown in one click, ideal for ChatGPT, Claude, and coding assistants.
* Achieve **better response accuracy** with AI tools
* **Reduce token usage** and speed up processing
* Give AI assistants the **full context** of your documentation
This is especially powerful with AI tools like **ChatGPT**, **Claude**, **Gemini**, and **Perplexity**, plus AI code assistants such as **Cursor**, **Codex**, and **Copilot**.
**Tip:** _Curious to see it in action? Try the AI Export feature right here in this Theneo user guide._
**Looking for PDF export?** Theneo deliberately favors **live, always-current formats** (Markdown export, AI export, and per-section `.md`) over static PDFs. Your content stays copy-pastable, AI-ready, and never goes stale the moment it’s downloaded. It’s everything a PDF gives you, minus the drift.
Enable AI / Markdown Export
---------------------------
Sign in to your Theneo dashboard, open the project you want, and go to Project Settings → Features.
Find AI Helper & Export in the Features list and toggle it ON.
Choose which options should appear in the AI Export dropdown.
On your documentation pages, use the AI Export dropdown to generate a Markdown version of your content, ready to drop straight into any AI tool.
**Note:** AI / Markdown Export is available for **public projects**.
Want a machine-readable index of your whole site for LLMs? See [llms.txt](https://app.theneo.io/theneo/quickstart/ai-co-pilot-and-chat/llms-txt), or the full [GEO](https://app.theneo.io/theneo/quickstart/ai-co-pilot-and-chat/geo) toolkit.
**Using AI coding assistants?** Theneo also publishes a `skill.md` that teaches assistants like Claude and Cursor how to author Theneo documentation correctly, so AI-generated content follows Theneo’s structure and widgets out of the box.
# Generate an MCP Server from Your Docs
Source: https://docs.theneo.io/ai-in-theneo/generate-mcp-server
**AI agents are becoming primary consumers of APIs, and they reach them through the Model Context Protocol (MCP).** MCP is the open standard that lets clients like Claude and Cursor discover what your API can do and call it directly. Theneo turns the API spec you already maintain into a ready-to-run MCP server, so your endpoints become structured tools an agent can use, with no extra code to write or keep in sync.
Your OpenAPI spec is all Theneo needs. Every server is generated from the spec you already maintain, so your agent tools stay in sync with your API.
How it works
------------
Open the MCP settings, choose the operations to expose, and set the transport and authentication your server needs.
Theneo builds a ready-to-run server that presents each selected operation as a structured, well-described tool.
Any MCP-compatible client connects to the server and can discover, understand, and call your API in real time.
Accessing MCP settings
----------------------
Open the MCP configuration page directly at [**editor.theneo.io/mcp**](https://editor.theneo.io/mcp).
Configuration
-------------
### Base URL override
Specify a custom API base URL for your MCP server (for example `https://api.example.com`). Leave it empty to use the base URL already defined in your OpenAPI spec.
### Transport method
Choose how your MCP server communicates with clients:
STDIO
Standard input and output. Best for local development and CLI-based integrations.
HTTP
Standard HTTP transport. Recommended for server-to-server and web deployments.
Server-Sent Events (SSE)
Real-time, one-directional streaming from server to client. Ideal for live updates.
Choosing which operations to expose
-----------------------------------
The API operations section lists every endpoint from your spec, each with its HTTP method, path, and a short description.
* Use the checkboxes to include or exclude individual operations.
* Use **Deselect All** to clear everything, then reselect just what you need.
Only the operations you select are exposed through the generated server, so you can ship a focused, intentional set of tools rather than your entire surface area.
Authentication and security
---------------------------
Configure the authentication your MCP server requires so only authorized clients can connect. Security schemes are detected automatically from your OpenAPI spec. For each scheme, define the **environment variable name** the server uses to resolve the credential at runtime.
Credentials are resolved from environment variables in your own runtime, so secrets are not baked into the generated server.
Advanced settings
-----------------
Request timeout (ms)
The maximum time the server waits for a response before timing out. Defaults to 30,000 ms (30 seconds). Adjust it to match your API's expected response times.
Pagination hints
Adds pagination support for list operations, helping AI clients understand how to page through results.
Generating the server
---------------------
Once configured, click **Generate MCP server** in the bottom-right corner. Theneo processes your configuration and produces a ready-to-use server based on your spec and chosen options.
* Not sure which transport to use? STDIO is best for local testing; HTTP or SSE suit production.
* Set every required environment variable in your runtime before starting the server, to avoid authentication failures.
* Return to editor.theneo.io/mcp anytime to regenerate with new settings or a different selection of operations.
MCP server generation may need to be enabled for your workspace or project. Contact us at hello@theneo.io and we'll switch it on.
# MCP Server for Claude & Cursor
Source: https://docs.theneo.io/ai-in-theneo/theneo-mcp-server
**Theneo’s MCP Server** lets an AI client like Claude or Cursor work directly inside your documentation. Connect it once and the assistant can browse, search, read, and edit your docs through a set of structured tools, with no copy and paste.
This is the opposite of generating an MCP server from your API spec. That feature exposes your API to AI clients. Theneo’s MCP Server exposes your documentation, so AI can help you write and maintain it.
What you can do
---------------
Browse structure
Walk the full section tree of a project, with names, slugs, and IDs.
Search docs
Find sections by keyword across names, slugs, and content.
Read content
Pull a section’s full content, or just the fields you need.
Edit content
Make precise edits to a section, including its rich text body.
Add sections
Create new sections, nested wherever you want in the tree.
Remove sections
Delete sections you no longer need.
How to use it
-------------
In Theneo, go to Settings → Tools & Integrations (or click Connect with AI agent in the dashboard side menu) and generate an API key. Copy it right away; after that it's shown masked. Any workspace can connect, no request needed.
On the MCP tab of Tools & Integrations, install the Theneo connector for Claude, or copy the ready-made MCP server configuration for any other MCP-compatible client, such as Cursor. Use your API key to authorize.
Give the assistant your project ID so it knows which docs to work on.
Ask it to restructure a section, fix a page, or draft a new guide. The assistant uses the tools to read what exists and apply the changes.
Connect to Claude
-----------------
The quickest way is **Install connector** on the Claude sub-tab of **Settings → Tools & Integrations → MCP**, which opens Theneo in Claude's connector directory. To add it manually as a custom connector instead, follow these steps. The same flow works for other MCP-compatible clients.
MCP server URL: https://app.getelva.ai/mcp/theneo/theneo-mcp
In Claude, click the plus button in the message box. Open Connectors, choose Add connector, then select Add custom connector.
Give the connector a name such as Theneo, then paste the MCP server URL https://app.getelva.ai/mcp/theneo/theneo-mcp. Click Add to save it.
Open Manage connectors, find Theneo in the list, and click Connect.
Connecting redirects you to Elva, our latest API management tool. Enter your Theneo API key to finish the connection.
You can find your API key in Account Settings, Tools and Integrations.
Tip: when giving Claude instructions, use the full documentation URL and the exact section you would like to change. That way it edits the right place instead of guessing.
The tools
---------
Theneo’s MCP Server exposes these tools to the connected AI client.
Returns the project’s full section tree and metadata. This is the starting point for any work and is the one tool that runs without the MCP API feature enabled.
Finds sections by keyword, matching on name, slug, description, and endpoint path, and returns their IDs for follow-up actions.
Reads a single section. Return everything, or request only the fields you need, such as the rich text editor body.
Applies precise, surgical edits to a section, including its rich text content, so the assistant can change exactly what needs changing and leave the rest untouched.
Creates a new section in the project, optionally nested under a parent section or created inside an editor branch.
Permanently removes a section from the project. This action cannot be undone.
Renames a section and updates its entry in the sidebar. A custom slug is kept; an auto-generated slug is regenerated.
Returns the exact JSON structure and an example for a content widget, such as a callout, code block, table, steps, tabs, or card group, so the assistant builds widgets that render correctly.
Before the assistant edits a section, Theneo saves a snapshot of it. The assistant can read that snapshot and restore the section to it if an edit went wrong. Restoring can overwrite later edits, so it asks for confirmation when someone else has edited since.
To keep responses small, reading a section replaces large embedded images with a size placeholder. Text, formatting, and hosted image links are returned as usual.
# GEO: AI Search Optimization for Docs
Source: https://docs.theneo.io/ai-in-theneo/geo-ai-optimization
**GEO** is SEO for the AI era, making ChatGPT, Claude, and Perplexity discover and cite your docs accurately.
Why GEO matters
---------------
More and more developers reach your API through an AI assistant before they ever see your docs site. If those models can’t parse your content, they guess and hallucinate endpoints, parameters, and behavior. GEO flips that: you hand AI clean, structured, authoritative context, and become the source it quotes.
Get cited, not guessed
Feed models the real spec and prose so their answers about your API are accurate and attributed to you.
Fewer hallucinations
Structured, machine-readable docs dramatically reduce wrong or invented API details in AI answers.
What Theneo gives you out of the box
------------------------------------
Every published Theneo project automatically exposes a full GEO toolkit, no extra work required.
llms.txt
A concise, machine-readable index of your documentation that points LLMs to every section.
llms-full.txt
The long-form companion: your entire documentation in one LLM-ready file, so a model can ingest the whole site in a single pass.
Per-section Markdown
Append .md to any page URL to get that section as clean Markdown, both the API request and its descriptions.
MCP server
Go beyond reading: let AI clients call your API directly through a generated Model Context Protocol server.
One-click [AI / Markdown Export](https://app.theneo.io/theneo/quickstart/ai-co-pilot-and-chat/ai-export) lets readers (and their AI tools) grab any page as clean Markdown on demand.
Every page is already Markdown
------------------------------
Every published section is **automatically available as Markdown**, just append `.md` to its URL. No setup, no export step:
https://app.theneo.io/theneo/quickstart/theneo-quickstart-guide/introduction.md
Each `.md` contains both the **API request** and its **descriptions**, so an AI assistant gets everything it needs to reason about an endpoint, and you can point any tool, crawler, or agent straight at these URLs.
Put it to work
--------------
The full GEO toolkit (llms.txt, llms-full.txt, and per-section Markdown) is generated automatically for published projects.
Share your llms.txt with the LLMs and coding assistants your developers use, so they ingest accurate context about your API.
Generate an MCP server so assistants can actively call your API, not just read about it.
Every republish refreshes your GEO files, so AI engines always reason about your latest content.
**GEO and SEO work together.** Pair this with [SEO Management](https://app.theneo.io/theneo/quickstart/global-settings/project-management/seo-management) to win both human search engines and AI engines.
Related
-------
llms.txt
The machine-readable index behind GEO.
MCP Server
Let AI clients call your API directly.
# llms.txt for AI Discoverability
Source: https://docs.theneo.io/ai-in-theneo/llms-txt
`llms.txt` exposes a structured, machine-readable index of your documentation, helping large language models discover and understand your content efficiently. And the best part: Theneo generates it automatically.
What is llms.txt?
-----------------
`llms.txt` is a plain-text file that provides a structured summary of your documentation, including:
* The title and description of each section
* Direct links to the corresponding Markdown (`.md`) source files
* A hierarchical overview of your content structure
This lets AI tools, developer assistants, and LLM-powered integrations index your docs accurately, without crawling or parsing your full rendered HTML site.
How it works
------------
Theneo generates your `llms.txt` automatically from the **SEO management data** you’ve already configured for each page. No extra setup is needed for pages that already have SEO fields filled in.
The file is built from these existing fields:
* **Title**: the section title used in search-engine metadata
* **Description**: the SEO meta description for the page
* **Slug**: the URL path segment used to build the page link
Each entry maps one documentation page to its title, a short description, and a direct link to its Markdown source.
File format
-----------
The generated `llms.txt` follows this standard structure:
# <Site Title>
> <Site-level description>
## <Section Name>
- [<Page Title>](<link-to-.md-file>): <Page description>
- [<Page Title>](<link-to-.md-file>): <Page description>
## <Section Name>
- [<Page Title>](<link-to-.md-file>): <Page description>
Improve coverage with SEO data
------------------------------
Because `llms.txt` is generated from your SEO fields, its quality depends on how thoroughly they’re filled in:
* **Title**: keep titles concise and specific (e.g. “Authentication Overview” rather than “Overview”).
* **Description**: summarize the page in one or two sentences; this is what LLMs use to understand its purpose.
* **Slug**: use clean, readable slugs that reflect the hierarchy (e.g. `/guides/authentication`).
To review or update SEO data: from the project dashboard, go to **SEO Management**, edit the Title, Description, and Slug fields, and click **Save Changes**.
Verify your llms.txt
--------------------
Confirm the file is live and well-formed by visiting it directly or using `curl`:
curl https://app.theneo.io/theneo/quickstart/llms.txt
Check that all major sections are represented, each entry has a title, a valid `.md` link, and a description, and the file is reachable without authentication (it must be public to be useful to external LLM systems).
FAQ
---
All published pages with SEO metadata (title, description, and slug). Draft and unpublished pages are excluded automatically.
It regenerates every time you publish a change, no manual refresh needed.
The page still appears, but with a blank description. Fill in descriptions for all pages to maximize usefulness to LLM consumers.
Yes. Header sections (labels or groupings without content of their own) are automatically excluded from the generated llms.txt.
# How to Publish Your Documentation Site
Source: https://docs.theneo.io/your-docs-site/publish-your-docs
Publish from the **editor, dashboard, or CLI**: privately, publicly, or anything in between. However you ship it, your readers get a fast, searchable, AI-powered site.
Publish your way
----------------
By default, project access is private. Once published, external users can't reach it. You can still share it your way:
• Invite users as editors or viewers through Access Management.
• Set up password-based access for docs on a custom domain.
To make your docs available to everyone:
1. Publish the documentation. 2. Change access from private to public under Project Access Management.
If you’re looking to host a private, white-labeled portal that only specific customers can access, our Private Portal for External Customers is the right feature for you. More information is available here.
Your docs are indexed by search engines by default. To keep them reachable by link but out of search results, open Project SEO Management and enable the No-Indexing toggle.
Anyone with the direct link can still view the docs, perfect for beta versions or large-scale user testing without affecting your SEO through duplicate content.
To take documentation offline, open Project Access Management and select Draft from the access dropdown. Once unpublished, the documentation link is no longer accessible.
Enterprise & self-hosted deployment
-----------------------------------
Need full control over where your docs live? Theneo offers **self-hosted (on-premise) deployment** for Enterprise customers. Run Theneo inside your own infrastructure to meet strict security, compliance, or data-residency requirements, with the exact same authoring and publishing experience. See [Theneo for Enterprise](https://www.theneo.io/enterprise), or contact [hello@theneo.io](mailto:hello@theneo.io).
What your readers get
---------------------
Your published docs are built for readers: clean, fast, and intuitive.
Organized side menu
Every section one click away, with custom headers and icons for easy navigation.
Continuous scroll or paged
A seamless single-scroll read or clean modular pages. Your choice, set in Themes & Templates.
Search & Ask AI
Instant keyword search plus a natural-language AI assistant that answers from your docs.
Shareable anchor links
Every header has an anchor, so anyone can link to the exact spot in your docs.
HTTP method labels
GET, POST, PUT, and DELETE shown beside each endpoint in the side menu. Toggle it in Project Settings.
Custom menu
Add shortcuts and a highlighted main button to guide readers. Configured in Project Settings.
FAQ
---
Yes, set a section as a redirect link:
1. Open the project's **editor**.
2. Select the section you want to turn into a link.
3. Open the three-dot **More Actions** menu next to the section.
4. Click **Set Redirect Link** and paste the URL.
5. Optionally check **New tab** to open it in a new tab.
6. Save and republish, and the section now redirects to your link.
Yes, anytime. Open Project Settings, find Single Page Template, and toggle it. See Themes & Templates for the full comparison.
Yes. Open Project Settings and enable Iframe Generation to get an iframe embed for your published docs, which you can drop into your own website or app.
# Docs Branding & Custom CSS Styling
Source: https://docs.theneo.io/your-docs-site/branding-and-styling
Make your docs unmistakably yours: colors, fonts, logos, brand templates, and custom CSS or JS, no code required.
This page covers how your docs look: colors, fonts, logos, custom CSS and JS, and one-click brand templates. To change how they are laid out, such as single-page versus paged navigation or page templates, see Themes & Templates.
What's included in each plan
----------------------------
General Settings
Included
Included
Color Customization
Included
Included
History
Included
Included
Analytics
Locked, with an upgrade prompt
Included
Custom CSS & JS
Locked, with an upgrade prompt
Included
Locked tabs keep their existing settings, so nothing is lost if you upgrade later.
General settings
----------------
* **Logos**: upload separate logos for light and dark modes; ideal dimensions are provided for crisp display.
* **Primary color**: pick your brand color for light and dark mode. It sets the buttons, links, and active sidebar item in your published docs, and replaces those individual colors in Color customization.
* **Favicon**: customize the icon shown in browser tabs and bookmarks.
* **Logo hyperlink**: point your logo to any URL.
* **Attribution (white-label)**: toggle the “Powered by Theneo” attribution on or off to fully **white-label** your documentation.
* **Document font**: choose from a variety of fonts for consistency.
Color customization
-------------------
Color customization is available on all plans, including Free.
Adjust colors across every part of your published docs, in both light and dark modes:
* **Body text**: the main text color for readability against the background.
* **Section headings**: distinct colors for better navigation.
* **Background**: the primary backdrop color.
* **Accents**: borders and outlines.
* **Buttons**: background and text colors.
* **Links**: hyperlink text color.
* **Item colors**: individual items and the active selection.
* **Background**: a unified sidebar background color.
* **Code snippets**: header and body background colors.
* **Base URL**: the color scheme of Base URL card headers and bodies.
* **General info**: header and body background colors for info cards.
* **Feedback button**: make it stand out or blend in.
* **Text selection**: background and font colors for selected text.
* **Buttons**: colors that prompt interaction.
* **Response boxes**: property and value text colors for clear visibility.
Customize background, icon, text, and border colors for warning, primary, danger, and success panels, so each alert type is distinct and noticeable.
**HEX code tip:** in the color picker, double-click the RGB section to switch to HSL, where a HEX input appears, then paste your brand’s HEX codes directly for precise matching.
Custom CSS & JavaScript
-----------------------
Custom CSS & JS is available on paid plans. On the Free plan the tab stays visible but locked, with an upgrade prompt, and anything you configured earlier is kept.
Go to Branding in your dashboard and find the Custom CSS & JS section.
Write or paste CSS for custom fonts, padding and margins, background images or gradients, animations, and responsive tweaks. Make sure it's well-formed to avoid display issues.
Add JS for third-party scripts (analytics, live chat), custom interactions, dynamic content, or form handling. Test it to avoid conflicts with Theneo's existing scripts.
Click Save and review your changes to confirm they produce the desired effect.
**Connect any third-party tool.** Because you can inject your own JavaScript, custom JS effectively enables integrations with almost any external service: analytics and product engagement like **Google Analytics, Google Tag Manager, Amplitude, PostHog, Mixpanel, Segment, Hotjar, Heap, Plausible, FullStory**, and support or live-chat tools like **Intercom**. If a tool ships a JavaScript snippet, it works with Theneo.
Custom font
-----------
Add any font using the Custom CSS feature:
1. Visit [Google Fonts](https://fonts.google.com/) or another trusted source.
2. Select your font and copy its `@import` URL.
3. Alternatively, use a Base64-encoded font to embed it without external links.Use @import to link the font, then apply it with font-family (the * universal selector applies it everywhere):
@import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,400;0,700&family=Sofia&display=swap');
* {
font-family: "Sofia", serif;
font-weight: 400;
font-style: normal;
}
1. Open **Branding Configuration** in the dashboard.
2. Find the **Custom CSS** section.
3. Paste your CSS and save.
Branding Template Selector
--------------------------
Apply a complete visual identity in a single click. Instead of configuring colors, CSS, and JS individually, choose one of three predefined templates: **Solid**, **Bloom**, or **Roboto**, and all branding fields populate automatically across your entire workspace.
### Who can use it
Workspace Admin
Full access to Branding General Settings. Can select, apply, and override any template, and further customize fields afterward.
Workspace Editor
Can select and apply templates from General Settings. Changes apply workspace-wide, just like Admin-applied templates.
Viewers and project-level collaborators can’t access Branding General Settings and won’t see the Template Selector.
### Available templates
Each template ships with a complete set of branding values: primary and background colors, custom CSS, and custom JS. Selecting one overwrites any previously configured values in all three fields. Check out available templates [here](6a3997b215d073c090fa43fb/6a3997b215d073c090fa43f9).
Branding history & version revert
---------------------------------
The **History** tab gives Admins and Editors a chronological log of every branding change across the workspace, including who made it, when, and the ability to roll back to any of the three most recent versions instantly.
Go to **Settings → Branding → History**. The History tab sits beside General and is visible to all Admins and Editors.
Viewers and project-level collaborators can’t access the Branding settings page and won’t see the History tab.
Frequently asked questions
--------------------------
Yes, through custom JavaScript. Paste your Intercom snippet into the Custom CSS & JS section in Branding, then save and republish. The same approach works for any other tool that provides a JavaScript snippet.
# Private Customer Portal for Your Docs
Source: https://docs.theneo.io/your-docs-site/private-customer-portal
Give your customers a private, branded portal where they sign in to see only the documentation you have shared with them. It runs on your domain, carries your branding end to end, and gives no sign that Theneo is behind it.
This is an Enterprise feature. Contact the Theneo team to enable a private customer portal for your workspace.
What your customers experience
------------------------------
From the customer’s point of view, this is simply your company’s documentation portal.
Your domain
The portal and its login page live on your own domain, for example docs.yourcompany.com/login.
Your branding
The login page, emails, and portal all use your logo, colors, and styling.
No mention of Theneo
Nothing in the experience reveals that Theneo powers it. To your customers, it is your portal.
How the flow works
------------------
In External Customer Management, invite the customer by email and assign the projects they should see.
The customer receives a Welcome to the developer portal email, styled with your branding, inviting them to set up their account.
The customer creates a password for their account.
At your portal’s login page, on your domain, the customer signs in with their email and password.
They land in the portal and can open exactly the projects and sections you assigned, and nothing else.
Fully white-labeled
-------------------
Every step, the welcome email, the login page, and the portal itself, uses your branding and your domain. Your customers never see Theneo, and never need a Theneo account.
Managing access
---------------
Invitations, status, and project assignments are managed in External Customer Management, covered under User groups and external customers. Use section-level controls in Access Management to fine-tune exactly what each customer sees.
Available on Enterprise plans. To set up a private customer portal, reach out at [hello@theneo.io](mailto:hello@theneo.io).
# Host Docs on Your Custom Domain
Source: https://docs.theneo.io/your-docs-site/custom-domain
Host your docs on your **own domain**, a seamless extension of your brand. You can set this at two levels.
Workspace domain
One domain for your whole workspace. Every project is published under it automatically, with the project slug as the path. Set it once in the Developer Portal settings.
Project domain
A dedicated domain for a single project, for when one project needs its own branded URL.
Set the workspace domain once and it covers everything. Add a project domain only when you want a specific project served somewhere of its own.
Workspace domain
----------------
The workspace domain is configured in the **Developer Portal settings** and applies across your whole workspace. Once it is set, every project is automatically published under it, using the project slug as the path. New projects inherit it with no extra setup.
For example, with a workspace domain of `docs.theneo.io`, a project whose slug is `test` is automatically served at `docs.theneo.io/test`.
Go to app.theneo.io/developers-hub/settings.
Specify a domain that aligns with your brand, e.g. docs.yourdomain.com.
In your domain provider’s control panel, add a CNAME record pointing your domain to custom.theneo.io.
Save the settings and wait for DNS to propagate before going live. Every project in the workspace is then reachable under your domain.
Project domain
--------------
Give a single project its own dedicated domain when it needs a branded URL separate from the workspace path. A project domain takes precedence for that project; every other project stays under the workspace domain.
Log in, open the project’s settings, and select the Custom Domain section.
Specify the domain you want, e.g. docs.yourdomain.com.
In your domain provider’s control panel, add a CNAME record pointing your domain to Theneo’s hosting environment, typically custom.theneo.io. For example:
developers.example.com. 3600 IN CNAME custom.theneo.io
Return to Theneo and save your custom domain configuration. Once DNS propagates, the project is reachable at its own domain.
Good to know
------------
* **DNS propagation:** DNS changes can take up to 48 hours to propagate fully.
* **SSL certificates:** Theneo automatically generates SSL certificates for custom domains, so connections are secure.
# Localize Docs with AI Translation
Source: https://docs.theneo.io/your-docs-site/localization
Serve your docs in **multiple languages** with AI translation. Once localization is enabled for your workspace, you configure everything from **Project Settings**, and readers get a language dropdown in your published docs.
Why localize your docs
----------------------
Global reach
Serve developers worldwide in their native language, without spinning up separate sites to maintain.
Higher adoption
Documentation people can read comfortably gets read, and acted on, far more often.
Find it in Project Settings
---------------------------
Open your project, then go to **Settings** and select **Localization**. Flip the **Translate** toggle on to reveal the configuration panel.
Localization is enabled per workspace. If you don't see the Localization tab under Settings, contact the Theneo team to turn it on.
Set up translation
------------------
Under Settings, Localization, flip the Translate toggle on. The configuration panel appears.
Choose the language your content is written in. English is selected by default.
Open the Translation languages dropdown and select your targets. Spanish, French, German, Japanese, and other languages are available.
Pick Automatic to re-translate on every publish, or Manual to translate only when you trigger it.
Give the AI translator a glossary or tone guidance, such as product names or terms to keep untranslated.
Click Translate now to generate the translations. Your published docs then show a language dropdown, so every reader gets the version that fits them.
Settings reference
------------------
* **Translate:** Master toggle for localization. When off, all translation settings stay hidden.
* **Default language:** The source language your docs are authored in.
* **Translation languages:** The target languages readers can switch between.
* **Visualize languages with flags:** Adds a country flag next to each language in the reader's dropdown.
* **Rules:** Automatic re-translates on every publish. Manual translates only when you click Translate now.
* **Translation instructions:** Optional glossary or tone guidance for the AI translator, for example terms to keep untranslated.
* **Translate now:** Generates translations immediately for your selected languages.
Where the dropdown appears
--------------------------
Once you publish with translations, your docs show a language switcher so readers can move between versions. Its position depends on the template your project uses, so it can sit in a different place from one theme to the next.
Changing your template can move the switcher. If it isn't where you expect, check your template layout under Branding & Styling.
Localization (also called internationalization or i18n) pairs naturally with [SEO](https://app.theneo.io/theneo/quickstart/global-settings/project-management/seo-management). Translated content helps you rank in every market you serve.
# Documentation Analytics & Reader Insights
Source: https://docs.theneo.io/your-docs-site/analytics
Every reader leaves a trail. Documentation analytics turns that trail into a roadmap: what people read, where they get stuck, and what they ask for in their own words.
Where to find your analytics
----------------------------
Your main analytics dashboard lives at [`app.theneo.io/analytics`](https://app.theneo.io/analytics). It rolls every project in your workspace into one view, so you can see the whole picture at a glance and filter by workspace, project, and date range.
Need a single project? Open it and select the **Analytics** tab. You get the same metrics, scoped to that one project.
Analytics turn on automatically the moment you publish, with no setup required. You can switch them off anytime in **Project Settings → Features**.
What the dashboard shows
------------------------
Headline metrics
Total views, sessions, and active users across every project, each with the change versus the previous period.
Views trend
A time series of traffic so you can spot spikes, dips, and seasonality at a glance.
Traffic acquisition
Where readers come from, split across direct, organic search, referral, and more.
Audience & geography
Views per active user, average engagement time, and your top countries on a world map.
The **project leaderboard** ranks every project side by side on views, sessions, active users, and average time per session, so you can see which docs perform best across the workspace.
Traffic and engagement
----------------------
Theneo records a view every time a reader opens a page, and groups activity into sessions and unique users. Tracked over time, these numbers show your reach and how each update moves the needle.
Use the **date filter** to focus on any range, ideal for measuring the impact of a launch or a docs overhaul.
Section feedback
----------------
Readers rate any section helpful or not, leave comments, suggest improvements, and ask questions, right where they are reading.
That feedback is fuel for continuous improvement. Review the comments, spot patterns in what confuses people, and ship targeted, data-driven updates.
A single thumbs-down with a comment points you straight to the section that needs work, no guesswork required.
AI Search history
-----------------
Every question readers run through Ask AI is logged verbatim. It is the most honest list of what your docs are missing, written by the people who needed the answer.
* Identify common topics and questions
* Spot gaps where readers struggle to find information
* Improve content by adding what is missing or unclear
Want the deeper view? AI analytics breaks down Ask AI usage, trends, and answer gaps in detail, with per-question and per-page views. See the AI Analytics section under AI in Theneo.
Custom analytics
----------------
Connect **Google Analytics (GA)** or **Google Tag Manager (GTM)** to track interactions in your own tools.
Custom Analytics is available on [Business and Growth tiers](https://www.theneo.io/pricing).
Log in and click Branding in the main navigation.
In the Branding submenu, click Analytics.
Find the Google tag ID field, click the pencil icon, and enter your GA ID (usually starts with "G-").
Find the Google tag manager field, click the pencil icon, and enter your GTM ID (usually starts with "GTM-" or "UA-").
Save your changes.
Using another provider? Open Custom CSS & JS from the Branding submenu and add your own tracking scripts.
**Verify your setup:** after adding GA or GTM IDs, check your GA/GTM dashboard to confirm it is receiving data from Theneo.
Best practices
--------------
1. **Monitor regularly:** track visitor trends and feedback so nothing slips by.
2. **Identify weak spots:** use AI Search history and low-performing pages as your signals.
3. **Act on feedback:** respond to comments and rewrite the sections that confuse people.
4. **Compare over time:** use date filtering to measure whether your changes worked.
# Developer Portal: Your Branded API Hub
Source: https://docs.theneo.io/your-docs-site/developer-portal
The **Developer Portal** is the customizable home your readers land on, a branded hub that sits in front of your API references, guides, and changelogs and ties them into one experience.
Design it visually with no code, or drop down to HTML/CSS when you want pixel control. Gate it behind login when your portal is for customers or partners only.
Accessing your Developer Portal
-------------------------------
To open your Developer Portal, head to the left-hand menu and select **Dev Portal**. This is where everything for your portal lives: analytics, pages, settings, and end-user access.
What you see next depends on whether you have built a portal before.
First time here
You'll land on a gallery of ready-made templates. Pick one as your starting point, then customize it to match your brand.
Already have a portal
Go to Page Management to see all your pages. Just like projects, each page opens in its own editor so you can work on them one at a time.
How the portal editor works
---------------------------
The Developer Portal editor is a little different from the Theneo project editor. Instead of structured documentation blocks, it is a low-code, no-code builder for HTML pages, so you can shape the layout freely.
Bring your own code
Comfortable with HTML and CSS? Import your own code and keep full control over the markup.
Double-click to edit
Prefer to stay visual? Double-click any element on the page and change it right there, no code needed.
In this section
---------------
Dashboard & Pages
Create and organize the pages of your portal from one dashboard.
Portal Editor
Build and arrange your landing page with the visual drag-and-drop editor.
Templates
Start from a ready-made portal layout and make it yours.
Custom Design
Fine-tune the look with custom HTML, CSS, and brand styling.
Export / Import Code
Move your portal design in and out as code to version or reuse it.
End-User Authorization
Require readers to sign in before they can view your portal.
# Developer Portal Dashboard & Pages
Source: https://docs.theneo.io/your-docs-site/developer-portal/dashboard-and-pages
The Developer Portal dashboard is your control center for everything you publish. Create and organize portal pages, set shared branding, track engagement, and tune SEO, all from one place.
It is organized into four areas:
Page Management
Create, organize, and open individual portal pages.
Settings
Set the logo and custom domain shared across every page.
### Page management
Every portal page is created and managed here. Add pages, organize them, and open any one of them in the Portal Editor.
**To add a page:**
In the dashboard, open Developer Portal and select Page Management.
Select Add New Page to open the page creation modal.
Complete the required fields, then choose a starting layout from the templates catalog.
Create the page, then open it in the Portal Editor to adjust its layout and content.
### Settings
Settings apply across your whole developer portal rather than to a single page.
**Logo**: upload a logo in Developer Portal settings and it appears on every portal page.
**Custom domain**: configure the domain your portal is served from.
Custom domain settings are global. They apply to every portal page, so individual pages cannot use separate domains.
### Analytics
Track how your portal performs with per-page metrics like sessions and views, so you can see what developers use most and where they drop off.
### SEO management
Each portal page can carry its own SEO configuration, including title, description, and metadata, to improve how it ranks and appears in search results.
### Troubleshooting portal loading
If visitors see an error instead of your portal, the message tells you why:
* **"We couldn't load this developer portal"**: the visitor's browser couldn't reach the Theneo API, usually because a corporate network, proxy, or firewall blocks it. Ask them to try another network, or ask their IT team to allow the Theneo API host. See [Whitelisting a Domain](6a3997b215d073c090fa4546/6a3997b215d073c090fa4544/6a3997b215d073c090fa4542).
* **"The developers hub is not available yet"**: the portal was reached but has no published content yet. Publish at least one page from Page Management.
Next, browse the [templates](6a3997b215d073c090fa4502/6a3997b215d073c090fa4500/6a3997b215d073c090fa44f8) to pick a starting point, or open the [Portal Editor](6a3997b215d073c090fa4502/6a3997b215d073c090fa4500/6a3997b215d073c090fa44f6) to build a page from scratch.
# Portal Editor: Build Landing Pages
Source: https://docs.theneo.io/your-docs-site/developer-portal/portal-editor
The **Portal Editor** is a visual, drag-and-drop canvas for building your portal pages. Click any element to select it, drag new ones in, and adjust everything from the panels on the right. If you are comfortable with code, you can switch to HTML and CSS whenever you like, but you never have to.
The workspace at a glance
-------------------------
The page you are editing sits in the center. A toolbar runs along the top, and the tools for changing whatever you have selected live in the panels on the right.
Add elements
Your library of building blocks. Open it with the plus icon, then drag elements onto the page.
Style
Change how a selected element looks: its size, spacing, fonts, and colors.
Settings
Change what a selected element does, like where a link points or an image's alt text.
Layers
See every element on the page as a tree. Handy for selecting something tucked inside another element.
Along the top you will also find device views for previewing desktop, tablet, and mobile, a preview button, and undo and redo.
Add a new element
-----------------
Click the plus icon in the top-right toolbar to open your library of elements.
Browse the list and choose what you need, such as text, an image, a button, or a full section.
Drag your choice onto the canvas. A guide line shows where it will land, so you can drop it exactly where you want.
Click the element to select it, then use the Style and Settings panels to make it yours.
Edit text and images
--------------------
* **Text**: double-click any text to edit it right on the page.
* **Images**: double-click an image to open the media picker and swap it out.
Edit a link
-----------
Click the link element once so it is highlighted.
Click the Settings widget, the gear icon, on the right side of the editor.
In the link field, type the address you want it to open, for example https://yourwebsite.com.
Optionally set it to open in a new tab, then click anywhere outside the panel to apply.
Move, duplicate, or delete
--------------------------
When you select an element, a small toolbar appears just above it. From there you can select its parent using the up arrow, drag the element to a new spot, duplicate it, or delete it. Changed your mind? Undo and redo are always waiting at the top.
Export and import code
----------------------
Need an effect the visual editor cannot do on its own? Export your portal as code, adjust it locally, and bring it back in.
Export
Open the code view and choose Export to ZIP to download your page's HTML and CSS. Keep it as a backup, save versions, or share it with a teammate.
Import
Already have code? Import it to jump-start your page instead of building from a blank canvas.
Here is the full round trip:
Open the code view using the code icon in the toolbar, then click Export to ZIP to download your page.
Unzip the file, open the HTML and CSS in your own editor, and make your changes, such as a new hover color or gradient.
The importer reads a single block of HTML, so your styles need to travel inside it. Move your CSS inline, either inside one