Strapi
Leia um content type do Strapi pela REST API com a fonte strapi(), convertendo corpos Blocks em Markdown tanto no Strapi 4 quanto no Strapi 5.
O adaptador integrado strapi() lê um content type pela REST API do Strapi (/api/<pluralApiId>) e converte o corpo Blocks de cada entrada em Markdown: parágrafos, títulos, listas, citações, blocos de código, imagens e links. Um campo de rich text em Markdown é mantido como foi escrito. A única exceção são os links que não apontam para um endereço web, de e-mail, de telefone ou relativo, que ficam só com o texto. As respostas do Strapi 5 são lidas como vêm, e o envelope attributes do Strapi 4 é achatado para que os mesmos caminhos de campo funcionem. Não precisa instalar nada.
import { defineConfig } from "blume";
import { filesystem, strapi } from "blume/sources";
export default defineConfig({
content: {
sources: [
filesystem({ root: "docs" }),
strapi({
prefix: "guides",
url: "https://cms.example.com",
contentType: "guides",
// locale: "en"
// Field paths default to title / description / slug / content / updatedAt
fields: { body: "body" },
// Extra query parameters: filters[...], sort
params: { "filters[section][$eq]": "sdk" },
}),
],
},
});
O token da API vem da variável de ambiente STRAPI_API_TOKEN e é enviado como bearer token. As entradas são buscadas com populate=* para que as imagens venham com suas URLs (defina populate para restringir isso), e um caminho de upload relativo (/uploads/x.png) é resolvido a partir de url. Só as entradas publicadas são importadas. Com --preview, os rascunhos são solicitados (status=draft no Strapi 5, publicationState=preview no Strapi 4) e cada documento que nunca foi publicado entra com draft: true. Já um documento publicado mostra o rascunho mais recente dele no preview.