Dit indhold burde udkomme uden en marketingansat.
Seks job står mellem en idé og en udgivet artikel. Fem af dem er procedure — emnerotation, research, skrivning ind i et typet skema, et forsidebillede, selve udgivelsen. Ét er dømmekraft. Her er kørslen, der klarer de fem, og køen, der giver dig det sjette.

Enhver lille virksomhed har en indholdskø, der læses som en liste over ting, den allerede ved. Ændringslogindlægget, der besvarer det spørgsmål, tre kunder stillede i sidste uge. Sammenligningssiden, et prospekt ledte efter og ikke fandt. Onboarding-guiden, der i dag findes som et Loom-link og fire Slack-beskeder. Viden er i huset. De to timer er ikke.
Kan du drive en firmablog uden en marketingansat?
Ja, hvis udgivelsessystemet er noget, software kan betjene fra ende til anden. En marketingansat er mest seks job: at vælge emne, at researche det, at skrive det, at lave et forsidebillede, at udgive det, og bagefter at finde ud af, om det gjorde noget. Fem af dem er procedure. Ét er dømmekraft. En agent kan holde de fem og arkivere det sjette til dig.
Grunden til, at det ikke virkede for tre år siden, er ikke, at modellerne ikke kunne skrive. Det er, at CMS'et i den anden ende var en webformular. En person skulle sidde i en browsersession og klikke ind i et rich text-felt for at få et afsnit fra et udkast ind i en database. Al automatisering stoppede ved det vindue og lagde en Slack-besked ud om, at nogen skulle indsætte noget.
Det, der ændrede sig, er, at indholdshåndtering fik en ordentlig værktøjsflade. Munins CMS er et sæt MCP-værktøjer — cms_create_entry, cms_update_entry, cms_publish_entry, cms_schedule_publish, cms_get_preview_link — der ligger på den samme Postgres som CRM'et, indbakken og videnbasen. Der er intet vindue i midten. Det samme gælder nu hos Contentful og Sanity, og jeg vender tilbage til, hvad hver af de tre faktisk er til.
Hvad skal der faktisk ske, før én artikel udkommer?
Seks trin, og kun ét af dem er skrivning. En planlagt kørsel vælger et emne mod en rotation, tjekker det eksisterende bibliotek, så den ikke gentager en vinkel, verificerer hver eneste ydre påstand med websøgning, skriver ind i samlingens typede blokskema, genererer et forsidebillede og arkiverer det hele som et udkast. Intet udgives. Du læser en kø.
Rotationen er den del, folk undervurderer. Overladt til sig selv driver enhver skribent — menneskelig eller ej — mod det, de selv finder mest interessant, hvilket for en stifterdrevet virksomhed betyder essays om arkitektur og ingen side, en køber nogensinde ville søge efter. En nedskrevet rotationsregel løser det bedre end gode hensigter gør, fordi den tjekkes mod de seneste fem poster ved hver eneste kørsel frem for at blive husket.
- 01Læs biblioteket først.
cms_list_entriespå samlingen, medfieldsindsnævret til titler, kategorier og datoer. Kørslen tæller, hvad de seneste fem poster var, før den må vælge en sjette. - 02Verificér alt eksternt. Konkurrentpriser, licenser, datoer, citater — hvert enkelt tjekket mod leverandørens egen side og mærket vejledende. Et uverificeret tal, der smigrer dig, er det, en teknisk læser fanger.
- 03Skriv ind i blokke, ikke ind i et tekstfelt. Brødteksten er et ordnet array af typede blokke, så selve skemaet udelukker en totusindords mur af prosa.
- 04Lav forsiden.
media_generate_image_cms_assetreturnerer etassetIdgemt som en CMS-ressource, somcms_update_entryhæfter påcover_image. - 05Arkivér det som et udkast.
cms_create_entrymedstatus: "draft". Leverings-API'et serverer kun udgivne poster, så et udkast er usynligt for det offentlige site ved konstruktion, ikke ved konvention. - 06Stop. Udgivelse er et separat værktøj og en separat beslutning. Køen er der, hvor din dømmekraft kommer ind.
{
"name": "cms_create_entry",
"arguments": {
"collection": "journal-blocks",
"slug": "open-source-intercom-alternatives",
"status": "draft",
"data": {
"title": "Intercom-alternativer med åben kildekode i 2026",
"dek": "…",
"category": "Essay",
"author": "Kjell Rune Monsø",
"body": [
{ "type": "lead", "props": { "text": "…" } },
{ "type": "prose", "props": { "markdown": "## Findes der et alternativ…" } },
{ "type": "takeaways", "props": { "items": ["…"] } }
]
}
}
}Hvorfor betyder indholdsmodellen mere end prompten?
Fordi en prompt er et råd, og et skema er en mur. Bed en model variere sin struktur, og den gør det, et stykke tid, og så producerer den elleve afsnit i træk. Giv den et body-felt, der kun accepterer et ordnet array af over et dusin navngivne bloktyper — lead, prose, pull_quote, callout, editorial_list, definitions, code_block, stats, takeaways, divider, footnotes og resten — og elleve afsnit i træk bliver en valideringsfejl frem for en dårlig dag.
Det samme trick bærer husstilen. Hver bloktypes beskrivelse i skemaet er håndhævelsesdokumentation: callout-typen siger under omkring halvfems ord, én idé, og at et afsnit, der indrømmer noget, ikke må ende på indrømmelsen. definitions-typen siger brug editorial_list i stedet, når nøglen er et enkelt ord frem for en frase. Den vejledning følger med feltet, så den når hver forfatter ved hver kørsel — hvilket er et meget bedre sted for en stilguide end en wikiside, ingen åbner. Jeg skrev om afvejningerne ved at modellere et CMS sådan i din indholdsmodel er en prompt.
Det er værd at være præcis om, hvad det her giver og ikke giver dig. Et skema kan håndhæve form, obligatoriske felter og fraværet af en mur af tekst. Det kan ikke gøre et argument godt. Gennemgangskøen laver stadig rigtigt arbejde.
Udkast er standard, og at udgive er et andet udsagnsord
cms_create_entry er udkast som standard, og det offentlige leverings-API returnerer kun udgivne poster. At få en artikel live kræver cms_publish_entry eller cms_schedule_publish — separate kald med separat hensigt.
Hver skrivning bærer ifVersion til optimistisk samtidighedskontrol, cms_list_versions og cms_restore_version dækker historikken, og cms_get_preview_link laver en signeret URL, så du kan læse udkastet renderet af den rigtige frontend, før noget af det sker.
Hvem laver forsidebilledet?
Den samme kørsel, gennem den samme grænseflade. media_generate_image_cms_asset — et værktøj på den separate MCP-server Munin Media Tools — tager en prompt, alternativ tekst og et filnavn, genererer billedet, gemmer det som en CMS-ressource og giver et assetId og en URL tilbage. Munin udleder op til fire webp-bredder — 320, 640, 1024 og 1536, begrænset af kildebredden — så frontenden får et responsivt sæt uden et byggetrin. cms_update_entry hæfter ressourcen på cover_image.
Det interessante er ikke genereringen, som alle har. Det er, at prompten gemmes på ressourcen, hvilket betyder, at næste kørsel kan læse, hvordan de fire foregående så ud, og bevidst gøre noget andet — andet miljø, anden skala, anden kameravinkel, hænder eller ingen hænder i billedet. Uden den hukommelse vil en billedmodel producere det samme fotografi af en genstand på et træbord ved et vindue, indtil hele oversigten ligner én eftermiddags fotografering. Husstilen er en nedskrevet regel; variationen håndhæves ved at gøre tidligere beslutninger læsbare.
Hvordan finder du ud af, om artiklen gjorde noget?
Fordi CMS'et og CRM'et er ét skema, spørger du i én forespørgsel frem for at afstemme to eksporter. Hvert CMS-leveringssvar sender en _tracking-blok nøglet på det stabile post-id, så at registrere en visning kræver ingen særskilt nøgle og ingen anden leverandør. Visninger lander som analysehændelser mod den samme kundepost, handlen sidder på.
Det er hele grunden til at holde indhold på kundeplatformen frem for ved siden af den. Det spørgsmål, et lille team faktisk har, er ikke, hvor mange sessioner bloggen fik — det er, hvilke to artikler de, der skrev under, læste først. analytics_get_contact_journey og analytics_list_top_subjects besvarer det mod én tabel, hvilket jeg gennemgik i hvilket blogindlæg lukkede handlen.
Sløjfen lukkes også den anden vej. En udgivet post kan spejles ind i videnbasen, så supportagenten kan citere den, med den samme udgiv-og-distribuér-kørsel, der også sender en meddelelse ud i en samtalekanal. Det er spejlbilledet af videnbasen, der fylder sig selv fra løste sager — svar bliver artikler, og artikler bliver svar.
Hvordan adskiller det her sig fra Contentful eller Sanity?
Alle tre kan nu styres af en agent, og det er en reelt ny udvikling, der fortjener at blive krediteret ordentligt frem for viftet væk. Contentful kører en hostet ekstern MCP-server på mcp.contentful.com/mcp, almindeligt tilgængelig, plus en lokal server med åben kildekode, med et dashboard, hvor rumadministratorer vælger, hvilke værktøjer en AI-klient må se. Sanity kører en ekstern server på mcp.sanity.io med OAuth, skemabevidst dokumentopdatering og GROQ-forespørgsler; den ældre lokale pakke @sanity/mcp-server er udfaset til fordel for den.
Så spørgsmålet er ikke længere, om software kan skrive ind i dit CMS. Det er, hvad posten ellers er hæftet på, og hvad måleren tæller.
- ContentfulVirksomhedsindholdsplatformen og den bredeste redaktionelle værktøjskasse i denne sammenligning — Studios visuelle lærred, Personalization, Launch, Tasks, et stort app-marked. Free koster 0 $ med 10 brugere, 100K API-kald om måneden, 50 GB CDN-båndbredde og ét Starter Space begrænset til 25 indholdstyper og 10.000 poster. Lite koster 300 $/måned med 20 brugere og 1M API-kald. Enterprise prissættes efter aftale, og det er niveauet, hvor AI Actions og EU-datalagring dukker op.
- SanityUdviklerens valg til struktureret indhold, med et Studio du selv kompilerer og GROQ, et kraftfuldt forespørgselssprog til struktureret indhold. Free dækker 20 pladser; Growth koster 15 $ per plads om måneden op til 50 pladser og tilføjer private datasæt, kommentarer, planlagte udkast og AI Assist; Enterprise prissættes efter aftale.
- Munin CMSÉt modul ud af seks på én enkelt Postgres, så en post, en kontakt, en samtale og et videndokument deler én database og én grænse for row-level security. Typede blokke med forfatterregler per type, signerede forhåndsvisningslinks, versionering med
ifVersion, genererede forsideressourcer og visningssporing per post, der lander på kundeposten. MIT, selvdrevet meddocker compose up, EU-hostet i Munin Cloud. Free koster 0 €/måned med 5.000 MCP-kald, 250 kontakter og 100 MB; Premium koster flade 99 €/måned per org med målt overforbrug, og lanceres snart.
Hvad Munins CMS ikke leverer
Der er ingen visuel træk-og-slip-sidebygger, ingen personaliserings- eller A/B-testmotor og intet app-marked fra tredjepart. Contentful har brugt år på netop det, og et indholdsteam på tolv, der samler landingssider uden at røre kode, bør købe Contentful.
Munin er til det andet indholdsproblem: ingen samler landingssider, fordi ingen samler noget som helst. Det, du har brug for, er et kompetent udkast mandag morgen med en forside på, arkiveret mod den kundepost, der senere fortæller dig, hvilken artikel køberen læste.
Hvem bør vælge det her?
Vælg Munins CMS, når blokeringen er, at intet bliver skrevet overhovedet, og når artiklen til sidst skal læses af nogen, der allerede er en række i dit CRM.
Udkastet ved ting. Supporttrådene, handelsfasen, videnbasen og det udgivne bibliotek er ét skema med én contacts-tabel bag alle seks moduler. En kørsel, der skriver en sammenligningsside, kan søge i videnbasen efter, hvad der faktisk er sandt om produktet, i stedet for at opfinde en funktion, der lyder plausibel.
Den kører, hvor du allerede arbejder. Claude, Claude Code, Cursor, ChatGPT, OpenAI Agents SDK, eller en kører du selv har skrevet — ét MCP-endpoint, de samme værktøjer, det samme revisionsspor. Der er ingen separat indholdsapp at logge ind i, hvilket mest betyder noget, fordi det, du var ved at springe over, var at logge ind.
Procedurerne er tekst, du kan redigere. Udgivelsesdrejebøgerne er medfølgende markdown-færdigheder, ikke en workflowbygger. Når rotationsreglen er forkert for din forretning, ændrer du en sætning, og næste kørsel opfører sig anderledes.
Og det passer til en virksomhed på én. Cloud Free koster 0 € om måneden, egen drift er docker compose up under en MIT-licens, der dækker udgivelsesværktøjerne og hvert andet modul i det samme repo, og modelomkostningen er, hvad din udbyder tager, frem for et gebyr per artikel til os. Det samme regnestykke, jeg kørte for en virksomhed med én stol og seks afdelinger. Hvorfor modellen og værktøjerne er to separate køb — og hvad det gør ved prisen mod HubSpot eller Ghost — er argumentet i en senere tekst.
Ofte stillede spørgsmål
Kan en AI-agent udgive blogindlæg automatisk?
Den kan skrive og arkivere dem automatisk. I Munin er cms_create_entry status: "draft" som standard, og det offentlige leverings-API returnerer kun udgivne poster, så en ugennemgået artikel er usynlig for dit site ved konstruktion. At gå live er et separat kald — cms_publish_entry eller cms_schedule_publish — og det er der, en person afgør.
Hvilket CMS er bedst for en AI-agent at skrive ind i? Ét med en typet indholdsmodel og en rigtig værktøjsflade frem for et rich text-felt bag et login. Contentful, Sanity og Munin kører alle MCP-servere i dag. Contentful og Sanity er indholdsplatforme; Munins CMS ligger på den samme Postgres som dets CRM, indbakke, videnbase, udgående kontakt og analyse, så en udgivet post og den kontakt, der læste den, ligger én kobling fra hinanden.
Har jeg brug for en udvikler til at sætte det op? Til at rendere sitet, ja — du har brug for en frontend, der læser leverings-API'et, og det API er anonymt uden CORS, så hentningen kører på serversiden. Til at betjene det bagefter, nej. At oprette samlinger, skrive poster, hæfte ressourcer og udgive er alt sammen MCP-værktøjskald, du foretager ved at bede om dem på almindeligt dansk.
Hvad koster det at drive en blog på den måde? Munin Cloud Free koster 0 € om måneden med 5.000 MCP-kald, 250 kontakter og 100 MB lagring; Premium koster flade 99 € om måneden per org med målt overforbrug, og lanceres snart. Egen drift under MIT koster, hvad din server koster. Oven i det betaler du din modelleverandør direkte for skrivningen og billedgenereringen. Til sammenligning koster Contentfuls Lite-plan 300 dollar om måneden og Sanitys Growth-plan 15 dollar per plads om måneden. Alle tal er vejledende og aflæst fra hver leverandørs egen prisside den 10. august 2026.
Vil AI-skrevne artikler rangere? Rangering er det forkerte mål at optimere efter alene nu. En voksende andel købere spørger en assistent frem for et søgefelt, så teksten skal kunne citeres: spørgsmålsformede overskrifter, der spejler, hvordan nogen ville formulere sig, et selvstændigt svar på fyrre til femoghalvfjerds ord under hver af dem, navngivne entiteter, rigtige tal, og en opsummeringsblok, der står alene. Strukturér til genfinding, så følger rangeringen for det meste efter.
Kan jeg beholde mit nuværende CMS og bare tilføje agenten? Ja, og for et indholdstungt site med et etableret redaktionsteam er det ofte det bedre svar — Contentful og Sanity eksponerer begge hostede MCP-servere, du kan pege en klient mod i dag. Munin er valget, når du hellere vil have, at artiklen, kunden og samtalen bor i den samme database.
Den korte version
- Seks job står mellem en idé og en udgivet artikel. Fem er procedure, en agent kan holde; det sjette er den dømmekraft, du beholder.
- Låsen, der åbnede sig, var, at CMS'et fik en værktøjsflade. Munins er MCP-værktøjer på den samme Postgres som CRM'et, indbakken og videnbasen — ingen browsersession i midten.
- Et typet blokskema gør det, en prompt ikke kan: over et dusin navngivne bloktyper med forfatterregler per type, så husstilen følger med feltet ved hver kørsel.
- Udkast er standard, og leverings-API'et serverer kun udgivne poster, så en ugennemgået artikel kan ikke nå dit site ved et uheld.
- Forsidebilleder genereres gennem den samme grænseflade, og prompten gemmes på ressourcen, så næste kørsel bevidst kan komponere noget andet.
- Contentful og Sanity kører begge hostede MCP-servere og leverer brede redaktionspakker — visuelle byggere, personalisering, app-markeder. Munin er MIT, starter på 0 € i Cloud Free, og holder artiklen på den samme post som den køber, der læste den.
Opret én samling, bed din assistent arkivere et udkast i den, og læs, hvad der dukker op i køen — start på Munin Cloud, eller læs dokumentationen for, hvordan du former skemaet først.
Ansættelsen var aldrig det, der manglede. Timen var.