# PilotScribe — Content API integration > PilotScribe auto-generates SEO blog articles. Pull a site's published articles via this read-only HTTP API and render them on your own domain for best SEO. ## Auth Per-site key `pk_.` (read-only, published content only). Send `Authorization: Bearer ` or `?key=`. CORS is open. Get the key from the app, the `sites.apiKey` API, or the PilotScribe MCP `get_content_api_key` tool. ## Endpoints - GET https://blog.pilotscribe.com/v1/articles → { site, total, articles[] } articles[]: slug, title, metaDescription, excerpt, lang, publishedAt, updatedAt, imageUrl, imageAlt - GET https://blog.pilotscribe.com/v1/articles/{slug} → one article fields: slug, title, metaDescription, lang, html (sanitized, render-ready), markdown (raw), imageUrl, imageAlt, publishedAt, updatedAt, kind, sourceUrl, related[], author ## Rendering - `html` is sanitized server-side — render it directly. - Render server-side (SSR/SSG) for SEO; client-only rendering indexes poorly. - Put the blog under your own domain (e.g. /blog) — do NOT reverse-proxy our origin. ## Recipes - Next.js (App Router): Server Components fetch the Content API at request time with ISR. Renders on your own domain at /blog for best SEO. - Astro (static, build-time fetch): Fetch the Content API at build time and emit fully static /blog pages. This is exactly how pilotscribe.com/blog itself is built. - Nuxt 3: useFetch on the server with runtimeConfig holding the key. SSR on your own domain. - SvelteKit: Load functions fetch the Content API server-side. $env keeps the key private. - Plain HTML + JavaScript: Fetch from the browser. Use ONLY for a key you accept being public (the content key is read-only and low-risk), e.g. a static landing page. - Any language / raw HTTP: The raw contract — two GET endpoints, Bearer auth, JSON responses. Full docs: https://pilotscribe.com/docs/connect/api MCP server (OAuth): https://app.pilotscribe.com/mcp — full agent control of a PilotScribe account (add + configure a site, keywords, generate, publish), including this Content API integration.