Kamaankamaan

CMS headless per Astro: la configurazione REST per SaaS

Astro si sposa con qualsiasi API REST. Ecco come Kamaan eroga JSON pulito per il vostro blog, senza SDK né schema-as-code, e con il multilingua incluso.

Junaid Khalid
Junaid Khalid
30 maggio 2026 · 11 min read

Avete scelto Astro perché il blog deve essere veloce, statico e libero dal peso dei framework che non vi servono. Poi avete aperto il mercato dei CMS e ogni strumento voleva schema-as-code, una fatturazione per sito o un SDK proprietario che vi vincola a una sola piattaforma. Ecco il divario. Astro si accoppia in modo pulito con qualsiasi API REST: JSON standard, fetch() e getStaticPaths() sono tutto ciò che serve davvero. La domanda non è quale CMS abbia il plugin Astro più elegante. La domanda è quale CMS offra ad Astro un endpoint JSON pulito e resti fuori dai piedi mentre il prodotto cresce.

In sintesi

  • getStaticPaths() di Astro più un endpoint REST standard sono l'intera integrazione. Nessun lock-in SDK, nessuna configurazione di schema per un blog.
  • Kamaan pubblica il contenuto degli articoli su una API REST JSON standard. Lo recuperate in Astro come recuperereste qualsiasi fonte HTTP.
  • La configurazione da un progetto Astro nuovo fino a un blog multilingua in produzione richiede dai 40 ai 60 minuti per il primo cablaggio, con il lato CMS attorno ai 14 minuti per il primo post pubblicato.
  • L'Auto-Multilingual Delivery trasforma un post inglese in 99+ versioni linguistiche con hreflang corretti, servite su /es/blog, /de/blog, /fr/blog, /it/blog. Il lato Astro le renderizza con la stessa rotta dinamica.
  • Kamaan è il centro di comando per ogni blog SaaS che gestite, operato da Claude, ChatGPT, Cursor o qualsiasi client MCP. Astro resta un sottile livello di presentazione.

Perché Astro e un CMS headless stanno bene insieme

Astro consegna i contenuti come HTML statico ovunque possa, e ripiega su rotte rese sul server o recuperate in tempo reale solo quando il contenuto deve davvero aggiornarsi al momento della richiesta. Un blog è il carico di lavoro statico canonico: scrivete qualcosa, lo renderizzate una volta, lo servite per anni. La Content Layer API è stata costruita esattamente per questo caso. Definite un loader che tira i post da qualsiasi fonte, e Astro costruisce una rotta per post al momento della compilazione.

Un blog CMS headless che emette JSON standard su HTTP si adatta a questo modello senza alcun attrito. Scrivete un loader, lo puntate al CMS e Astro gestisce routing, rendering e SEO da lì in poi. Nessun SDK. Nessun schema-as-code. Nessun linguaggio di query proprietario. Se il CMS va giù domani, la vostra build funziona ancora perché il contenuto è già stato estratto al momento della compilazione.

L'errore che la maggior parte delle configurazioni Astro commette è partire da un SDK opinionato. Sanity vuole che scriviate schemi in JavaScript. Storyblok consegna un modello ad albero di blocchi che sembra pesante per un post da 600 parole. Contentful chiede 300 $ al mese per sbloccare il tier di contenuto che corrisponde al volume tipico di un fondatore multi-prodotto. Questi strumenti sono stati progettati per sistemi di contenuto con decine di editor e flussi di approvazione, non per un fondatore SaaS che vuole un blog online entro venerdì.

Il pattern fetch standard in Astro

Il pattern è lo stesso che usiate la Content Layer API di Astro o un semplice fetch() dentro getStaticPaths(). Chiedete al CMS l'elenco degli articoli, costruite una rotta per slug, e passate il corpo dell'articolo come props.

Miniatura del blog Kamaan: CMS headless per Astro, sottotitolo Configurazione di blog statico con un CMS REST API, da zero al live

Ecco come appare il file di rotta. src/pages/blog/[slug].astro:

---
export async function getStaticPaths() {
  const res = await fetch("https://api.kamaan.io/v1/sites/your-site-id/articles?language=en");
  const data = await res.json();

  return data.articles.map((article) => ({
    params: { slug: article.slug },
    props: { article },
  }));
}

const { article } = Astro.props;
---
<html lang="en">
  <head>
    <title>{article.meta_title}</title>
    <meta name="description" content={article.meta_description} />
    <link rel="canonical" href={`https://yoursite.com/blog/${article.slug}`} />
  </head>
  <body>
    <article>
      <h1>{article.title}</h1>
      <div set:html={article.content_html} />
    </article>
  </body>
</html>

Quella è l'intera rotta. getStaticPaths() viene eseguito una volta in build, recupera l'elenco degli articoli ed emette una rotta per slug. Astro renderizza ciascuna in HTML statico al momento della compilazione. Nessun JavaScript lato client necessario per l'articolo in sé. Aggiungete la Content Layer API di Astro sopra se volete un accesso tipizzato, o restate con il semplice fetch() se volete zero astrazione.

Dove i CMS esistenti falliscono per Astro

Tre modalità di fallimento si presentano ripetutamente quando i fondatori abbinano un CMS ad Astro.

Lo schema-as-code è eccessivo per un blog. Sanity si aspetta che definiate uno schema in JavaScript prima di poter creare un singolo post. Per un catalogo commerciale strutturato è giusto. Per un blog con titolo, corpo, slug e meta description avete passato un'ora a configurare schemi per fare ciò che un file markdown fa già. La Content Layer API di Astro esiste in parte perché il framework ha notato questo sovraccarico e ha costruito un livello agnostico rispetto al CMS.

La fatturazione per spazio penalizza i fondatori multi-prodotto. Contentful e Storyblok fatturano per spazio, che corrisponde grosso modo a uno spazio per sito. Un fondatore che gestisce tre prodotti SaaS su Astro paga per tre spazi prima ancora di toccare una funzionalità a pagamento. La tariffa fissa di 19 $ al mese di Kamaan copre siti illimitati sotto un unico account, senza commissioni per sito. Una dashboard, una fattura, ogni blog.

Nessun multilingua nativo. Ghost non ne ha. Sanity richiede una configurazione i18n personalizzata. Contentful fattura un add-on per locale. Se servite cinque mercati linguistici, questo si somma a una quota significativa della fattura del CMS nel primo anno. L'Auto-Multilingual Delivery di Kamaan pubblica una versione di ogni articolo in ogni lingua del vostro piano nel momento in cui premete pubblica in inglese, ciascuna al proprio URL con hreflang corretto. Zero passaggi extra.

Configurare Kamaan con Astro in meno di un'ora

Passo uno: create un account Kamaan e aggiungete un sito. Il lato CMS richiede circa 14 minuti dalla creazione dell'account al vostro primo articolo pubblicato. Il primo mese è gratuito su ogni piano, quindi potete cablare l'intera pipeline prima di pagare alcunché.

Passo due: installate Astro e impalcate le rotte.

npm create astro@latest my-saas-blog
cd my-saas-blog
npm install

Passo tre: copiate il pattern getStaticPaths() sopra in src/pages/blog/[slug].astro. Impostate il vostro site ID Kamaan in una variabile d'ambiente. Aggiungete src/pages/blog/index.astro per elencare gli articoli.

Passo quattro: gestite le rotte multilingua. La rotta dinamica [lang]/blog/[slug].astro di Astro rispecchia il pattern URL di Kamaan. Recuperate l'elenco degli articoli con ?language=es, ?language=de e così via. Kamaan restituisce title tradotto, content_html, meta_title, slug e alt text per ogni lingua. Emettete i tag hreflang nell'head dell'articolo dalla mappa delle traduzioni di Kamaan.

{article.translations.map((t) => (
  <link rel="alternate" hreflang={t.language} href={`https://yoursite.com/${t.language}/blog/${t.slug}`} />
))}

Quella è l'integrazione completa. Build statica, rotte multilingua, hreflang emessi lato server, contenuto estratto da una API REST.

Confronto: opzioni CMS per Astro sulle dimensioni che contano

La tabella sotto confronta come i CMS headless compatibili con Astro più comuni gestiscono il tempo di configurazione, la fatturazione multi-sito, il supporto multilingua, la configurazione di schema, la pubblicazione tramite IA e il prezzo mensile di ingresso.

Confronto CMS headless per Astro: Kamaan vs Sanity vs Storyblok vs Contentful su integrazione Astro, tempo di configurazione, multi-sito, multilingua, configurazione di schema, pubblicazione IA e prezzo mensile di ingresso

Dimensione Kamaan Sanity Storyblok Contentful
Integrazione Astro REST standard + fetch() SDK ufficiale + linguaggio di query GROQ Integrazione Astro ufficiale REST o GraphQL
Configurazione primo blog ~14 min lato CMS, 40-60 min cablaggio Astro completo ~45 min inclusa la configurazione dello schema ~30 min con l'integrazione ~40 min per il primo modello di contenuto
Account multi-sito Siti illimitati, tariffa fissa di 19 $ al mese Fatturazione per progetto Fatturazione per spazio Fatturazione per spazio
Multilingua pronto all'uso 99+ lingue alla pubblicazione Configurare i18n per schema Piano per lingua Add-on per locale
Configurazione di schema per un blog Nessuna richiesta Schema-as-code Configurazione di libreria di blocchi Modelli di contenuto
Pubblicazione IA Kamaan MCP Server e ChatGPT Actions Nessuna nativa Nessuna nativa Nessuna nativa
Ingresso mensile 19 $ al mese, siti illimitati 15 $ per progetto sul tier a pagamento 106 $ per spazio 300 $ al mese al primo tier a pagamento

Il confronto non riguarda chi ha il template di avvio Astro più carino. Riguarda quale CMS si fa da parte quando volete spedire.

Scenari reali

Una fondatrice solo sta costruendo un SaaS di strumenti per sviluppatori su Astro. Vuole un blog online prima del suo lancio. Crea un account Kamaan, aggiunge il suo sito, scrive il suo primo articolo nella dashboard Kamaan e preme pubblica. In pochi minuti l'articolo è disponibile su api.kamaan.io in JSON. Copia il pattern getStaticPaths() nel suo progetto Astro, fa il deploy su Vercel, e l'articolo è live su yoursite.com/blog/first-post. Tempo totale da zero al blog live: meno di un'ora. L'articolo viene pubblicato automaticamente in spagnolo, tedesco, francese e italiano su /es/blog, /de/blog, /fr/blog, /it/blog con hreflang corretti. Non ha scritto una singola riga di codice di internazionalizzazione.

Un fondatore bootstrappato sta gestendo tre prodotti SaaS costruiti su Astro. Ha bisogno di un blog su ciascuno, ma rifiuta di pagare tre spazi Contentful. Crea un account Kamaan, aggiunge tutti e tre i siti, e usa la stessa rotta getStaticPaths() su tutti e tre i progetti Astro con un site ID diverso per progetto. Un account copre tutti e tre i blog a 19 $ al mese, tariffa fissa. Gestisce l'intera operazione di contenuto da una conversazione Claude tramite il MCP Server di Kamaan: scaletta, bozza, modifica, pubblica, cambia sito, ripeti.

Articoli correlati su Kamaan

FAQ

Posso usare la Content Layer API di Astro con Kamaan?

Sì. Scrivete un loader personalizzato che chiama https://api.kamaan.io/v1/sites/{site_id}/articles e restituisce l'array degli articoli. La Content Layer API gestisce caching e generazione dei tipi da lì in poi. La forma della risposta REST di Kamaan si mappa in modo pulito sulle entry di contenuto di Astro.

Devo scrivere uno schema prima di poter creare un articolo in Kamaan?

No. L'Article CMS in Kamaan è fornito con title, corpo rich-text, slug, campi meta, immagine in evidenza, pianificazione e supporto traduzioni, pronti all'uso. Non c'è nessun passaggio di configurazione di schema per un blog. Se vi serve contenuto strutturato per casi d'uso non-blog, è una categoria di prodotto diversa.

Come funziona il multilingua tra Kamaan e Astro?

L'Auto-Multilingual Delivery di Kamaan pubblica una versione di ogni articolo in ogni lingua del vostro piano nel momento in cui premete pubblica in inglese. Ogni traduzione ha il proprio URL su /{lang}/blog/{slug} con hreflang corretto. Sul lato Astro, recuperate l'elenco degli articoli di ciascuna lingua con il parametro di query ?language= e costruite una rotta per lingua. Lo stesso pattern getStaticPaths() funziona per ogni locale.

Cosa restituisce l'API REST di Kamaan per una build Astro?

Ogni articolo include title, slug, content_html, meta_title, meta_description, focus_keyword, l'array keywords, og_title, og_description, twitter_title, twitter_description, featured_image_url, featured_image_alt, language, published_at, updated_at e una mappa translations che elenca ogni versione linguistica disponibile dello stesso articolo con il suo slug localizzato e il suo URL.

La build si romperà se Kamaan è temporaneamente irraggiungibile?

Se compilate con output: "static" nella configurazione di Astro, il contenuto è stato estratto al momento della build e il sito distribuito continua a servire. Le build future hanno bisogno che Kamaan sia raggiungibile. Per contenuto live che si aggiorna al momento della richiesta, usate la modalità di output server di Astro e fetch() dentro il componente di pagina invece di getStaticPaths(). Kamaan supporta entrambi i pattern attraverso lo stesso endpoint REST.

Posso pubblicare su Kamaan da dentro Claude o ChatGPT senza lasciare la conversazione?

Sì. Il Kamaan MCP Server connette Claude, Cursor e qualsiasi client MCP. L'integrazione ChatGPT Actions fa la stessa cosa da ChatGPT. Gestite tutta la vostra operazione di contenuto senza una dashboard.

Esiste un plugin Kamaan per Astro Studio o qualsiasi piattaforma di deploy Astro?

L'integrazione è puro REST, quindi nessun plugin è necessario. Distribuite il vostro sito Astro su Vercel, Netlify, Cloudflare Pages, Astro Studio o qualunque altro posto che esegua Node in build. A Kamaan non interessa dove è ospitato il vostro sito Astro.

Quanto costa Kamaan rispetto ad altri CMS Astro-friendly?

Kamaan è a 19 $ al mese, tariffa fissa, siti illimitati sotto un unico account, primo mese gratuito. Sanity è a 15 $ per progetto sul tier a pagamento con configurazione i18n separata. Storyblok è a 106 $ per spazio al primo tier a pagamento. Contentful è a 300 $ al mese al primo tier a pagamento. Su tre siti con traduzione, la differenza è di circa 15x rispetto a Contentful e di diversi multipli rispetto a Storyblok.

Iniziate a costruire con Kamaan

Una dashboard, ogni blog Astro che gestite

Kamaan vi dà una dashboard per tutti i vostri blog di prodotto, auto-tradotti in 99+ lingue a ogni pubblicazione. Un account copre siti illimitati a 19 $ al mese, tariffa fissa. Il MCP Server vi permette di pubblicare da Claude o ChatGPT. Primo mese gratuito.

Iniziate gratis su kamaan.io

Frequently asked

FAQ · 8 ITEMS
Posso usare la Content Layer API di Astro con Kamaan?

Sì. Scrivete un loader personalizzato che chiama `https://api.kamaan.io/v1/sites/{site_id}/articles` e restituisce l'array degli articoli. La Content Layer API gestisce caching e generazione dei tipi da lì in poi. La forma della risposta REST di Kamaan si mappa in modo pulito sulle entry di contenuto di Astro.

Devo scrivere uno schema prima di poter creare un articolo in Kamaan?

No. L'Article CMS in Kamaan è fornito con title, corpo rich-text, slug, campi meta, immagine in evidenza, pianificazione e supporto traduzioni, pronti all'uso. Non c'è nessun passaggio di configurazione di schema per un blog. Se vi serve contenuto strutturato per casi d'uso non-blog, è una categoria di prodotto diversa.

Come funziona il multilingua tra Kamaan e Astro?

L'Auto-Multilingual Delivery di Kamaan pubblica una versione di ogni articolo in ogni lingua del vostro piano nel momento in cui premete pubblica in inglese. Ogni traduzione ha il proprio URL su `/{lang}/blog/{slug}` con hreflang corretto. Sul lato Astro, recuperate l'elenco degli articoli di ciascuna lingua con il parametro di query `?language=` e costruite una rotta per lingua. Lo stesso pattern `getStaticPaths()` funziona per ogni locale.

Cosa restituisce l'API REST di Kamaan per una build Astro?

Ogni articolo include title, slug, content_html, meta_title, meta_description, focus_keyword, l'array keywords, og_title, og_description, twitter_title, twitter_description, featured_image_url, featured_image_alt, language, published_at, updated_at e una mappa translations che elenca ogni versione linguistica disponibile dello stesso articolo con il suo slug localizzato e il suo URL.

La build si romperà se Kamaan è temporaneamente irraggiungibile?

Se compilate con `output: "static"` nella configurazione di Astro, il contenuto è stato estratto al momento della build e il sito distribuito continua a servire. Le build future hanno bisogno che Kamaan sia raggiungibile. Per contenuto live che si aggiorna al momento della richiesta, usate la modalità di output server di Astro e `fetch()` dentro il componente di pagina invece di `getStaticPaths()`. Kamaan supporta entrambi i pattern attraverso lo stesso endpoint REST.

Posso pubblicare su Kamaan da dentro Claude o ChatGPT senza lasciare la conversazione?

Sì. Il Kamaan MCP Server connette Claude, Cursor e qualsiasi client MCP. L'integrazione ChatGPT Actions fa la stessa cosa da ChatGPT. Gestite tutta la vostra operazione di contenuto senza una dashboard.

Esiste un plugin Kamaan per Astro Studio o qualsiasi piattaforma di deploy Astro?

L'integrazione è puro REST, quindi nessun plugin è necessario. Distribuite il vostro sito Astro su Vercel, Netlify, Cloudflare Pages, Astro Studio o qualunque altro posto che esegua Node in build. A Kamaan non interessa dove è ospitato il vostro sito Astro.

Quanto costa Kamaan rispetto ad altri CMS Astro-friendly?

Kamaan è a 19 $ al mese, tariffa fissa, siti illimitati sotto un unico account, primo mese gratuito. Sanity è a 15 $ per progetto sul tier a pagamento con configurazione i18n separata. Storyblok è a 106 $ per spazio al primo tier a pagamento. Contentful è a 300 $ al mese al primo tier a pagamento. Su tre siti con traduzione, la differenza è di circa 15x rispetto a Contentful e di diversi multipli rispetto a Storyblok.

Junaid Khalid
Written by
Junaid Khalid

Junaid Khalid is the founder of Kamaan, a headless blog CMS that auto-publishes in five languages and lets you manage every product blog from one dashboard.