De goedkoopste manier om een content-agent te draaien
Je kunt een volledige pipeline voor het genereren en vertalen van content draaien op Cloudflare Workers + Claude API voor ongeveer $0,50 per post met Sonnet 3.5, of $0,12 met Haiku. De gratis laag van Cloudflare verwerkt 100K verzoeken/dag — je betaalt alleen wanneer de schaal het vereist. De beperking is de cold-start-latentie voor langlopende LLM-aanroepen, die Queues oplost.
Elke woensdag. 28.400+ operators. Geen opvulling.
✓ Controleer je inbox — klik op de bevestigingslink om je aanmelding te voltooien.
✓ Je bent aangemeld!
✓ Je staat al op de lijst.
[Operatorperspectief] Ik draai precies deze pipeline voor alejandrorioja.com: een TypeScript Worker schrijft een post, verspreidt 12 vertaaltaken en slaat alles op in KV — alles geactiveerd door één HTTP-aanroep. Hier is precies wat het kost en hoe het is geconfigureerd.
Inhoudsopgave
Inhoudsopgave openen
Waarom Cloudflare in plaats van AWS of Vercel
AWS Lambda rekent per GB-seconde rekentijd. Vercel rekent per uitvoering en heeft agressieve tarieflimieten op het hobby-niveau. Beide voegen cold-start-onvoorspelbaarheid toe op schaal.
Cloudflare Workers draait op V8-isolates, niet op containers. Cold starts zijn onder een milliseconde. De gratis laag is echt nuttig: 100.000 verzoeken per dag, 10ms CPU-tijd per verzoek (de wandkloktijd is langer). Het betaalde plan is $5/maand voor 10 miljoen verzoeken.
Voor een AI-content-pipeline zijn de Workers-rekenkosten bijna nul. De echte kosten zijn de Claude API. Dat is de enige variabele die je moet optimaliseren.
De architectuur (tekstdiagram)
HTTP-trigger (cron of webhook)
│
▼
Worker: orchestrator
│
├─ Taakmetadata schrijven → KV (status: "pending")
│
└─ 1 EN-generatietaak in wachtrij plaatsen
│
▼
Wachtrij: content-jobs
│
┌──────┴──────┐
▼ ▼
Worker: schrijver Worker: vertaler (×12 locales)
│ │
▼ ▼
Claude API Claude API
│ │
└──────┬─────────────┘
▼
KV: posts/{slug}/{locale}
│
▼
Webhook → GitHub → deployDe orchestrator Worker is het toegangspunt. Hij schrijft een initieel statusrecord naar KV en pusht vervolgens een taak naar een Cloudflare Queue. De Queue fan-out start de schrijver Worker (EN) en, zodra de EN-body klaar is, 12 vertaler Workers parallel. Alles belandt in KV gekoppeld aan {slug}/{locale}. Een laatste webhook activeert een GitHub Actions-deploy.
Kostentabel Cloudflare
| Resource | Gratis laag | Betaald ($5/mnd) | Mijn werkelijk gebruik |
|---|---|---|---|
| Workers-verzoeken | 100K/dag | 10M/maand | ~500/dag |
| Workers CPU-tijd | 10ms/req | 30s/req | ~8ms/req |
| KV-leesbewerkingen | 100K/dag | 10M/maand | ~2K/dag |
| KV-schrijfbewerkingen | 1K/dag | 1M/maand | ~300/dag |
| Wachtrij-berichten | — | 1M/maand inbegrepen | ~300/maand |
| KV-opslag | 1 GB | 1 GB inbegrepen | ~200 MB |
Voor een site die 10 posts/maand publiceert, is de Cloudflare-rekening $0 op de gratis laag. Workers zijn gratis. KV-lees-/schrijfbewerkingen op dat volume zijn gratis. De enige betaalde functie die ik gebruik is Queues — wat het Workers Paid-plan van $5/maand vereist, maar dat plan bevat 1M wachtrij-berichten.
Mijn Cloudflare-rekening: $5/maand vast, ongeacht het postvolume tot ~3.000 posts/maand.
Kostentabel Claude API
Hier gaat het echte geld naartoe. Hier is de uitsplitsing per post.
EN-generatie (één post, ~1.500 woorden):
| Model | Invoertokens | Uitvoertokens | Kosten |
|---|---|---|---|
| Claude Haiku 3.5 | ~2.000 | ~2.500 | $0,005 |
| Claude Sonnet 3.5 | ~2.000 | ~2.500 | $0,042 |
12 vertalingen (elk ~1.500 woorden):
| Model | Invoertokens (×12) | Uitvoertokens (×12) | Kosten |
|---|---|---|---|
| Claude Haiku 3.5 | ~24.000 | ~30.000 | $0,054 |
| Claude Sonnet 3.5 | ~24.000 | ~30.000 | $0,500 |
Totaal per post (EN + 12 vertalingen):
| Model | Totale kosten |
|---|---|
| Claude Haiku 3.5 | ~$0,059 |
| Claude Sonnet 3.5 | ~$0,542 |
Ik gebruik Sonnet voor EN-generatie (kwaliteit telt voor de canonieke post) en Haiku voor vertalingen (de brontekst is al geschreven; het model hoeft hem alleen maar getrouw te vertalen). Die gemengde aanpak kost in de praktijk ongeveer $0,10 per post.
TypeScript Worker: de orchestrator
// src/workers/orchestrator.ts
import { Queue } from "@cloudflare/workers-types";
interface Env {
CONTENT_QUEUE: Queue;
POSTS_KV: KVNamespace;
}
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const { slug, topic } = await request.json<{ slug: string; topic: string }>();
// Initiële status schrijven
await env.POSTS_KV.put(
`status:${slug}`,
JSON.stringify({ status: "pending", createdAt: Date.now() })
);
// EN-generatietaak in wachtrij plaatsen
await env.CONTENT_QUEUE.send({
type: "generate",
slug,
topic,
locale: "en",
});
return Response.json({ queued: true, slug });
},
};TypeScript Worker: de schrijver + vertaler
// src/workers/content-processor.ts
interface Env {
CONTENT_QUEUE: Queue;
POSTS_KV: KVNamespace;
ANTHROPIC_API_KEY: string;
}
const LOCALES = ["ar","de","es","fr","hi","it","ja","ko","nl","pt","ru","zh"];
export default {
async queue(batch: MessageBatch<ContentJob>, env: Env): Promise<void> {
for (const msg of batch.messages) {
const job = msg.body;
if (job.type === "generate") {
const post = await generatePost(job.topic, env.ANTHROPIC_API_KEY);
await env.POSTS_KV.put(`post:${job.slug}:en`, post);
// Vertalingen verspreiden
for (const locale of LOCALES) {
await env.CONTENT_QUEUE.send({
type: "translate",
slug: job.slug,
locale,
sourceText: post,
});
}
}
if (job.type === "translate") {
const translated = await translatePost(
job.sourceText,
job.locale,
env.ANTHROPIC_API_KEY,
// Haiku gebruiken voor vertalingen om kosten te verlagen
"claude-haiku-3-5-20241022"
);
await env.POSTS_KV.put(`post:${job.slug}:${job.locale}`, translated);
}
msg.ack();
}
},
};
async function generatePost(topic: string, apiKey: string): Promise<string> {
const res = await fetch("https://api.anthropic.com/v1/messages", {
method: "POST",
headers: {
"x-api-key": apiKey,
"anthropic-version": "2023-06-01",
"content-type": "application/json",
},
body: JSON.stringify({
model: "claude-sonnet-3-5-20241022",
max_tokens: 4096,
messages: [{ role: "user", content: `Write a detailed blog post about: ${topic}` }],
}),
});
const data = await res.json<{ content: Array<{ text: string }> }>();
return data.content[0].text;
}
async function translatePost(
text: string,
locale: string,
apiKey: string,
model: string
): Promise<string> {
const res = await fetch("https://api.anthropic.com/v1/messages", {
method: "POST",
headers: {
"x-api-key": apiKey,
"anthropic-version": "2023-06-01",
"content-type": "application/json",
},
body: JSON.stringify({
model,
max_tokens: 4096,
messages: [
{
role: "user",
content: `Translate the following blog post to ${locale}. Preserve all markdown. Keep code blocks in English.\n\n${text}`,
},
],
}),
});
const data = await res.json<{ content: Array<{ text: string }> }>();
return data.content[0].text;
}Vergelijking met alternatieven
| Platform | Basiskosten | Kosten per verzoek | Cold starts | TypeScript DX |
|---|---|---|---|---|
| Cloudflare Workers | $0–$5/mnd | Bijna nul | Sub-ms | Uitstekend |
| AWS Lambda | $0 (beperkt) | $0,20/1M req | 100ms–1s | Goed |
| Vercel Functions | $0 (beperkt) | Gebruik-gebaseerd | 200ms–2s | Goed |
| Eigen VPS | $5–$20/mnd | $0 | Geen (altijd actief) | Willekeurig |
| Fly.io Machines | $0 (beperkt) | Per GB-sec | ~500ms | Goed |
Eigen hosting is het enige geval waarbij Cloudflare verliest. Een Hetzner VPS van $6/maand draait Node 24/7 zonder cold starts en zonder kosten per verzoek. Maar je beheert deploys, uptime en schaalbaarheid zelf. Workers regelt dat allemaal gratis bij mijn volume.
De AWS Lambda-vergelijking klinkt competitief op papier, maar de maximale uitvoeringstijd van 15 minuten van Lambda is een echte beperking voor lange LLM-ketens. Workers heeft een CPU-limiet van 30 seconden op het betaalde plan — wat slechter klinkt, maar prima is omdat je Queues gebruikt voor asynchroon werk, niet door één Lambda te blokkeren.
KV voor statusbeheer
KV is de wereldwijd gedistribueerde sleutel-waardeopslag van Cloudflare. Leesbewerkingen zijn overal snel (gecached aan de edge). Schrijfbewerkingen verspreiden zich wereldwijd in minder dan 60 seconden.
Voor een content-pipeline gebruik ik drie sleutelpatronen:
// Taakstatus
await kv.put(`status:${slug}`, JSON.stringify({ status, updatedAt: Date.now() }));
// Post-inhoud
await kv.put(`post:${slug}:${locale}`, markdownContent);
// Index voor opsomming
const index = await kv.get<string[]>("index:posts", "json") ?? [];
await kv.put("index:posts", JSON.stringify([...index, slug]));KV-kosten op mijn schaal: $0. De gratis laag geeft 1K schrijfbewerkingen/dag en 100K leesbewerkingen/dag. Ik schrijf ~300 KV-vermeldingen per maand (25 posts × 13 locales = 325). Ver van de limiet.
Als je 100+ posts/maand publiceert in 12 locales, zou je ~39.000 schrijfbewerkingen/maand bereiken — nog steeds onder de 1M/maand inbegrepen in het betaalde plan van $5.
De conclusie van de operator
Mijn volledige content-pipeline — genereren, vertalen, opslaan, deployen — kost $5,10/maand aan infrastructuur ($5 Cloudflare Workers Paid + $0,10 Claude API per post bij 10 posts/maand). Dat is alles. Geen servers te beheren, geen containerorkestratie, geen onverwachte rekeningen van Lambda-cold-starts die een drempel van voorziene gelijktijdigheid raken.
De gemengde modelstrategie (Sonnet voor EN, Haiku voor vertalingen) verlaagt de Claude-kosten met 80% zonder merkbare kwaliteitsdaling bij vertalingen. Doe de berekening voor jouw volume en je zult zien dat Cloudflare + Claude Haiku echt de goedkoopste manier is om dit soort pipeline op founder-schaal te draaien.
Elke woensdag. 28.400+ operators. Geen opvulling.
✓ Controleer je inbox — klik op de bevestigingslink om je aanmelding te voltooien.
✓ Je bent aangemeld!
✓ Je staat al op de lijst.
Gerelateerde berichten
Hoe je je Newsletter Automatiseert met een AI-Agent
Ik heb mijn volledige newsletter-pipeline geautomatiseerd — van idee tot verzending — met een Claude-agent en de Kit API.
AI AgentsDe 5 AI-tools die ik echt gebruik om mijn bedrijf te runnen
Geen overzicht van alle AI-tools. Dit zijn de 5 die ik elke dag gebruik om een consultingmerk en een pickleball-faciliteit te runnen
EntrepreneurshipBeste betaalde nieuwsbriefplatforms in 2026
Ik vergelijk ConvertKit, Substack, beehiiv en Ghost op kosten, betaalmuur en eigenaarschap van je publiek voor een consultant met een betaalde nieuwsbrief.
Ontvang het AI-playbook in je inbox
Elke woensdag. 28.400+ operators. Geen opvulling.
Controleer je inbox.
We hebben je een bevestigingsmail gestuurd — klik op de link om je aanmelding te voltooien. Controleer je spam als je hem niet binnen een minuut ziet.
Je bent aangemeld.
Welkom — de volgende editie valt binnenkort in je inbox.
Je staat al op de lijst — kijk er elke woensdag naar uit.