# 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 ![alt](https://…)

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 `![Setup](https://cdn.example.com/setup.png)`. 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.