JSPM

  • Created
  • Published
  • Downloads 3657
  • Score
    100M100P100Q122866F
  • License MIT

Create plain Markdown from OpenAPI documents (for LLMs)

Package Exports

  • @scalar/openapi-to-markdown

Readme

Scalar OpenAPI to Markdown

Version Downloads License Discord

A Node.js package to generate LLM-friendly Markdown from OpenAPI documents.

Installation

npm install @scalar/openapi-to-markdown

Usage

import { createMarkdownFromOpenApi } from '@scalar/openapi-to-markdown'

const content = {
  openapi: '3.1.1',
  info: {
    title: 'My API',
    version: '1.0',
  },
  paths: {
    // …
  },
}

// Generate Markdown from an OpenAPI document
const markdown = await createMarkdownFromOpenApi(content)

With Hono

You use the package with any Node.js framework. Here is an example for Hono:

import { Hono } from 'hono'
import { createMarkdownFromOpenApi } from '@scalar/openapi-to-markdown'

// Generate Markdown from an OpenAPI document
const markdown = await createMarkdownFromOpenApi(content)

const app = new Hono()

/**
 * Register a route to serve the Markdown for LLMs
 *
 * Q: Why /llms.txt?
 * A: It's a proposal to standardise on using an /llms.txt file.
 *
 * @see https://llmstxt.org/
 */
app.get('/llms.txt', (c) => c.text(markdown))

serve(app)

Generate HTML

This is not really the purpose of the package, but maybe good to know: This package actually renders HTML at first, and transforms the HTML to Markdown then.

So if you'd like to have a really light-weight HTML API Reference, here you are:

import { Hono } from 'hono'
import { createHtmlFromOpenApi } from '@scalar/openapi-to-markdown'

// Generate HTML from an OpenAPI document
const html = await createHtmlFromOpenApi(content)

const app = new Hono()

app.get('/', (c) =>
  c.html(
    `<!doctype html>
<html lang="en" data-theme="light">
<head>
  <meta charset="UTF-8" />
  <title>Scalar Galaxy</title>
  <!-- Basic styling for semantic HTML tags (optional) -->
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css">
</head>
<body>
  <main class="container">
    ${html}
  </main>
</body>
</html>`,
  ),
)

serve(app)

Community

We are API nerds. You too? Let's chat on Discord: https://discord.gg/scalar

License

The source code in this repository is licensed under MIT.