أرخص طريقة لتشغيل وكيل محتوى على Cloudflare
يمكنك تشغيل خط أنابيب كامل لإنشاء المحتوى وترجمته على Cloudflare Workers + Claude API بحوالي $0.50 للمقالة مع Sonnet 3.5، أو $0.12 مع Haiku. تعالج الخطة المجانية من Cloudflare 100 ألف طلب يومياً — لا تدفع إلا عندما يتطلب الحجم ذلك. القيد الوحيد هو زمن الانتظار عند البدء البارد لمكالمات LLM الطويلة، وهو ما تحله Queues.
كل أربعاء. أكثر من 28,400 مشترك. بدون حشو.
✓ Check your inbox — click the confirmation link to complete sign-up.
✓ You're subscribed!
✓ You're already on the list.
جدول المحتويات
محدّث مايو 2026.
TL;DR: يمكنك تشغيل خط أنابيب كامل لإنشاء المحتوى وترجمته على Cloudflare Workers + Claude API بحوالي $0.50 للمقالة مع Sonnet 3.5، أو $0.12 مع Haiku. تعالج الخطة المجانية من Cloudflare 100 ألف طلب يومياً — لا تدفع إلا عندما يتطلب الحجم ذلك. القيد الوحيد هو زمن الانتظار عند البدء البارد لمكالمات LLM الطويلة، وهو ما تحله Queues.
[منظور المشغّل] أنا أشغّل هذا الخط بالضبط على alejandrorioja.com: Worker واحد بـ TypeScript يكتب مقالة، ويوزّع 12 مهمة ترجمة، ويخزّن كل شيء في KV — كل ذلك يُشغَّل بطلب HTTP واحد. إليك التكلفة الدقيقة وكيفية البناء.
لماذا Cloudflare بدلاً من AWS أو Vercel
تفرض AWS Lambda رسوماً بالجيجابايت في الثانية. تفرض Vercel رسوماً لكل تنفيذ ولها حدود صارمة للمعدل في الخطة المجانية. كلاهما يضيف عدم قابلية التنبؤ بالبدء البارد على نطاق واسع.
تعمل Cloudflare Workers على V8 isolates، وليس الحاويات. تكون عمليات البدء الباردة أقل من ميلي ثانية. الخطة المجانية مفيدة فعلاً: 100,000 طلب يومياً، 10 ميلي ثانية من وقت المعالج لكل طلب (وقت الساعة الفعلي أطول). الخطة المدفوعة $5 شهرياً لـ10 ملايين طلب.
بالنسبة لخط أنابيب محتوى الذكاء الاصطناعي، تكاليف الحوسبة في Workers تكاد تكون صفراً. التكلفة الحقيقية هي Claude API. هذا هو المتغير الوحيد الذي تحتاج إلى تحسينه.
البنية المعمارية (مخطط نصي)
مُشغِّل HTTP (cron أو webhook)
│
▼
Worker: المنسّق
│
├─ كتابة بيانات المهمة → KV (الحالة: "pending")
│
└─ وضع مهمة إنشاء EN في قائمة الانتظار
│
▼
قائمة الانتظار: content-jobs
│
┌──────┴──────┐
▼ ▼
Worker: الكاتب Worker: المترجم (×12 لغة)
│ │
▼ ▼
Claude API Claude API
│ │
└──────┬─────────────┘
▼
KV: posts/{slug}/{locale}
│
▼
Webhook → GitHub → نشريُعدّ Worker المنسّق نقطة الدخول. يكتب سجل حالة أولي في KV، ثم يدفع مهمة إلى Cloudflare Queue. يُشغّل Fan-out القائمة Worker الكاتب (EN)، وبمجرد أن يصبح نص EN جاهزاً، يُشغّل 12 Worker مترجم بالتوازي. كل شيء ينتهي في KV بمفتاح {slug}/{locale}. يُشغّل webhook نهائي نشر GitHub Actions.
جدول تكاليف Cloudflare
| المورد | الخطة المجانية | المدفوعة ($5/شهر) | استخدامي الفعلي |
|---|---|---|---|
| طلبات Workers | 100K/يوم | 10M/شهر | ~500/يوم |
| وقت CPU في Workers | 10ms/طلب | 30s/طلب | ~8ms/طلب |
| قراءات KV | 100K/يوم | 10M/شهر | ~2K/يوم |
| كتابات KV | 1K/يوم | 1M/شهر | ~300/يوم |
| رسائل Queues | — | 1M/شهر (مشمول) | ~300/شهر |
| تخزين KV | 1 جيجابايت | 1 جيجابايت (مشمول) | ~200 ميجابايت |
للموقع الذي ينشر 10 مقالات/شهر، تكون فاتورة Cloudflare $0 في الخطة المجانية. Workers مجانية. قراءات/كتابات KV بهذا الحجم مجانية. الميزة المدفوعة الوحيدة التي أستخدمها هي Queues — التي تتطلب خطة Workers Paid بـ$5/شهر، لكن هذه الخطة تشمل مليون رسالة في قائمة الانتظار.
فاتورة Cloudflare الخاصة بي: $5 شهرياً ثابتة، بغض النظر عن حجم المقالات حتى ~3,000 مقالة/شهر.
جدول تكاليف Claude API
هنا تذهب الأموال الحقيقية. فيما يلي التفصيل لكل مقالة.
إنشاء EN (مقالة واحدة، ~1,500 كلمة):
| النموذج | رموز الإدخال | رموز الإخراج | التكلفة |
|---|---|---|---|
| Claude Haiku 3.5 | ~2,000 | ~2,500 | $0.005 |
| Claude Sonnet 3.5 | ~2,000 | ~2,500 | $0.042 |
12 ترجمة (كل منها ~1,500 كلمة):
| النموذج | رموز الإدخال (×12) | رموز الإخراج (×12) | التكلفة |
|---|---|---|---|
| Claude Haiku 3.5 | ~24,000 | ~30,000 | $0.054 |
| Claude Sonnet 3.5 | ~24,000 | ~30,000 | $0.500 |
الإجمالي لكل مقالة (EN + 12 ترجمة):
| النموذج | التكلفة الإجمالية |
|---|---|
| Claude Haiku 3.5 | ~$0.059 |
| Claude Sonnet 3.5 | ~$0.542 |
أستخدم Sonnet لإنشاء EN (الجودة مهمة للمقالة الأصلية) و Haiku للترجمات (نص المصدر مكتوب بالفعل؛ النموذج يحتاج فقط إلى ترجمته بأمانة). يكلّف هذا النهج المختلط حوالي $0.10 لكل مقالة في الواقع.
TypeScript Worker: المنسّق
// 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 }>();
// كتابة الحالة الأولية
await env.POSTS_KV.put(
`status:${slug}`,
JSON.stringify({ status: "pending", createdAt: Date.now() })
);
// وضع مهمة إنشاء EN في قائمة الانتظار
await env.CONTENT_QUEUE.send({
type: "generate",
slug,
topic,
locale: "en",
});
return Response.json({ queued: true, slug });
},
};TypeScript Worker: الكاتب + المترجم
// 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);
// توزيع الترجمات
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 للترجمات لخفض التكلفة
"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;
}مقارنة البدائل
| المنصة | التكلفة الأساسية | التكلفة لكل طلب | البدء البارد | تجربة TypeScript |
|---|---|---|---|---|
| Cloudflare Workers | $0–$5/شهر | شبه صفر | أقل من ms | ممتازة |
| AWS Lambda | $0 (محدود) | $0.20/مليون طلب | 100ms–1s | جيدة |
| Vercel Functions | $0 (محدود) | بناءً على الاستخدام | 200ms–2s | جيدة |
| VPS مستضاف ذاتياً | $5–$20/شهر | $0 | لا يوجد (يعمل دائماً) | أي لغة |
| Fly.io Machines | $0 (محدود) | لكل جيجابايت-ثانية | ~500ms | جيدة |
الاستضافة الذاتية هي الحالة الوحيدة التي تخسر فيها Cloudflare. VPS Hetzner بـ$6/شهر يُشغّل Node على مدار الساعة دون بدء بارد ودون تكلفة لكل طلب. لكنك تدير عمليات النشر ووقت التشغيل والتوسع بنفسك. Workers تتعامل مع كل ذلك مجاناً بحجمي.
مقارنة AWS Lambda تبدو تنافسية على الورق، لكن الحد الأقصى لوقت تنفيذ Lambda البالغ 15 دقيقة هو قيد حقيقي لسلاسل LLM الطويلة. لدى Workers حد CPU 30 ثانية في الخطة المدفوعة — وهو ما يبدو أسوأ لكنه مناسب لأنك تستخدم Queues للعمل غير المتزامن، وليس حجب Lambda واحدة.
KV لإدارة الحالة
KV هو مخزن قيمة المفتاح الموزع عالمياً من Cloudflare. القراءات سريعة في كل مكان (مخزّنة مؤقتاً على الحافة). تنتشر الكتابات عالمياً في أقل من 60 ثانية.
لخط أنابيب المحتوى، أستخدم ثلاثة أنماط مفاتيح:
// حالة المهمة
await kv.put(`status:${slug}`, JSON.stringify({ status, updatedAt: Date.now() }));
// محتوى المقالة
await kv.put(`post:${slug}:${locale}`, markdownContent);
// فهرس للقائمة
const index = await kv.get<string[]>("index:posts", "json") ?? [];
await kv.put("index:posts", JSON.stringify([...index, slug]));تكاليف KV بحجمي: $0. توفر الخطة المجانية 1K كتابة/يوم و100K قراءة/يوم. أكتب ~300 إدخال KV شهرياً (25 مقالة × 13 لغة = 325). بعيد جداً عن الحد.
إذا كنت تنشر 100+ مقالة/شهر بـ12 لغة، ستصل إلى ~39,000 كتابة/شهر — لا تزال أقل من الـ1M/شهر المضمّنة في الخطة المدفوعة بـ$5.
الخلاصة النهائية للمشغّل
يكلّف خط أنابيب المحتوى الكامل — الإنشاء والترجمة والتخزين والنشر — $5.10/شهر في البنية التحتية ($5 Cloudflare Workers Paid + $0.10 Claude API لكل مقالة بمعدل 10 مقالات/شهر). هذا كل شيء. لا خوادم للإدارة، لا تنسيق حاويات، لا فواتير مفاجئة من بدايات باردة لـ Lambda تصل إلى عتبة التزامن المُخصَّص.
استراتيجية النموذج المختلط (Sonnet لـ EN، Haiku للترجمات) تخفّض تكاليف Claude بنسبة 80% دون انخفاض ملحوظ في جودة الترجمة. احسب الأرقام لحجمك وستجد أن Cloudflare + Claude Haiku هو حقاً أرخص طريقة لتشغيل هذا النوع من خط الأنابيب على نطاق المؤسسين.
كل أربعاء. أكثر من 28,400 مشترك. بدون حشو.
✓ Check your inbox — click the confirmation link to complete sign-up.
✓ You're subscribed!
✓ You're already on the list.
احصل على دليل الذكاء الاصطناعي في صندوق بريدك
كل أربعاء. أكثر من 28,400 مشترك. بدون حشو.
Check your inbox.
We sent you a confirmation email — click the link inside to complete your subscription. Check spam if you don't see it within a minute.
You're subscribed.
Welcome — the next edition lands in your inbox soon.
You're already on the list — look for it every Wednesday.