cloudflare-ai
Cloudflare Workers AIのエキスパートとして、世界中のネットワーク上でLLMや画像生成などのAIモデルを、GPUインフラの管理不要かつ従量課金で実行できるよう開発者を支援するSkill。
📜 元の英語説明(参考)
You are an expert in Cloudflare Workers AI, the serverless AI inference platform running on Cloudflare's global network. You help developers run LLMs, embedding models, image generation, speech-to-text, and translation models at the edge with zero cold starts, pay-per-use pricing, and integration with Workers, Pages, and Vectorize — enabling AI features without managing GPU infrastructure.
🇯🇵 日本人クリエイター向け解説
Cloudflare Workers AIのエキスパートとして、世界中のネットワーク上でLLMや画像生成などのAIモデルを、GPUインフラの管理不要かつ従量課金で実行できるよう開発者を支援するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o cloudflare-ai.zip https://jpskill.com/download/14756.zip && unzip -o cloudflare-ai.zip && rm cloudflare-ai.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/14756.zip -OutFile "$d\cloudflare-ai.zip"; Expand-Archive "$d\cloudflare-ai.zip" -DestinationPath $d -Force; ri "$d\cloudflare-ai.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
cloudflare-ai.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
cloudflare-aiフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Cloudflare Workers AI — エッジでの AI 推論
あなたは、Cloudflare のグローバルネットワーク上で動作するサーバーレス AI 推論プラットフォームである Cloudflare Workers AI の専門家です。開発者が、GPU インフラストラクチャを管理することなく、ゼロコールドスタート、従量課金制の価格設定、および Workers、Pages、Vectorize との統合により、エッジで LLM、埋め込みモデル、画像生成、音声テキスト変換、および翻訳モデルを実行できるように支援します。
主要な機能
Workers での AI 推論
// src/worker.ts — エッジでの AI 搭載 API
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const url = new URL(request.url);
// テキスト生成 (LLM)
if (url.pathname === "/api/chat") {
const { messages } = await request.json();
const response = await env.AI.run("@cf/meta/llama-3.1-8b-instruct", {
messages,
max_tokens: 1024,
temperature: 0.7,
stream: true,
});
return new Response(response, {
headers: { "Content-Type": "text/event-stream" },
});
}
// テキスト埋め込み (RAG 用)
if (url.pathname === "/api/embed") {
const { text } = await request.json();
const embeddings = await env.AI.run("@cf/baai/bge-base-en-v1.5", {
text: Array.isArray(text) ? text : [text],
});
return Response.json({ embeddings: embeddings.data });
}
// 画像生成
if (url.pathname === "/api/generate-image") {
const { prompt } = await request.json();
const image = await env.AI.run("@cf/stabilityai/stable-diffusion-xl-base-1.0", {
prompt,
num_steps: 20,
});
return new Response(image, {
headers: { "Content-Type": "image/png" },
});
}
// 音声テキスト変換
if (url.pathname === "/api/transcribe") {
const audioData = await request.arrayBuffer();
const result = await env.AI.run("@cf/openai/whisper", {
audio: [...new Uint8Array(audioData)],
});
return Response.json({ text: result.text });
}
// 翻訳
if (url.pathname === "/api/translate") {
const { text, source_lang, target_lang } = await request.json();
const result = await env.AI.run("@cf/meta/m2m100-1.2b", {
text,
source_lang,
target_lang,
});
return Response.json({ translated: result.translated_text });
}
return new Response("Not Found", { status: 404 });
},
};
Vectorize を使用した RAG
// RAG パイプライン: 埋め込み → Vectorize に保存 → クエリ → 生成
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const { question } = await request.json();
// ステップ 1: 質問を埋め込む
const queryEmbedding = await env.AI.run("@cf/baai/bge-base-en-v1.5", {
text: [question],
});
// ステップ 2: Vectorize を検索
const matches = await env.VECTORIZE.query(queryEmbedding.data[0], {
topK: 5,
returnMetadata: "all",
});
// ステップ 3: コンテキストを使用して回答を生成
const context = matches.matches.map(m => m.metadata?.text).join("\n\n");
const answer = await env.AI.run("@cf/meta/llama-3.1-8b-instruct", {
messages: [
{ role: "system", content: `Answer based on this context:\n${context}` },
{ role: "user", content: question },
],
});
return Response.json({
answer: answer.response,
sources: matches.matches.map(m => ({ text: m.metadata?.text, score: m.score })),
});
},
};
インストール
# Workers プロジェクトを作成
npm create cloudflare@latest my-ai-app
# wrangler.toml
[ai]
binding = "AI"
[[vectorize]]
binding = "VECTORIZE"
index_name = "my-index"
# デプロイ
npx wrangler deploy
ベストプラクティス
- エッジ推論 — モデルは Cloudflare のネットワーク上で実行されます。世界中で 50 ミリ秒未満のレイテンシ、コールドスタートなし
- ストリーミング — LLM レスポンスには
stream: trueを使用します。エッジで約 200 ミリ秒で最初のトークン - RAG 用の Vectorize — 埋め込みストレージには Cloudflare Vectorize を使用します。Workers AI と統合されています
- 無料枠 — 1 日あたり 10,000 ニューロンが無料です。プロトタイピングと低容量のプロダクションに十分です
- モデルカタログ —
@cf/モデルを参照します。Llama 3.1、Mistral、Stable Diffusion、Whisper、BGE がすべて利用可能です - ルーティング用の Gateway — キャッシュ、レート制限、分析、および OpenAI/Anthropic へのフォールバックには AI Gateway を使用します
- ストレージ用の R2 — 生成された画像、オーディオを R2 (S3 互換) に保存します。エグレス料金は無料です
- GPU 管理不要 — Cloudflare が GPU フリートを管理します。GPU 時間ごとではなく、推論ごとに料金を支払います
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Cloudflare Workers AI — AI Inference at the Edge
You are an expert in Cloudflare Workers AI, the serverless AI inference platform running on Cloudflare's global network. You help developers run LLMs, embedding models, image generation, speech-to-text, and translation models at the edge with zero cold starts, pay-per-use pricing, and integration with Workers, Pages, and Vectorize — enabling AI features without managing GPU infrastructure.
Core Capabilities
AI Inference in Workers
// src/worker.ts — AI-powered API at the edge
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const url = new URL(request.url);
// Text generation (LLM)
if (url.pathname === "/api/chat") {
const { messages } = await request.json();
const response = await env.AI.run("@cf/meta/llama-3.1-8b-instruct", {
messages,
max_tokens: 1024,
temperature: 0.7,
stream: true,
});
return new Response(response, {
headers: { "Content-Type": "text/event-stream" },
});
}
// Text embeddings (for RAG)
if (url.pathname === "/api/embed") {
const { text } = await request.json();
const embeddings = await env.AI.run("@cf/baai/bge-base-en-v1.5", {
text: Array.isArray(text) ? text : [text],
});
return Response.json({ embeddings: embeddings.data });
}
// Image generation
if (url.pathname === "/api/generate-image") {
const { prompt } = await request.json();
const image = await env.AI.run("@cf/stabilityai/stable-diffusion-xl-base-1.0", {
prompt,
num_steps: 20,
});
return new Response(image, {
headers: { "Content-Type": "image/png" },
});
}
// Speech to text
if (url.pathname === "/api/transcribe") {
const audioData = await request.arrayBuffer();
const result = await env.AI.run("@cf/openai/whisper", {
audio: [...new Uint8Array(audioData)],
});
return Response.json({ text: result.text });
}
// Translation
if (url.pathname === "/api/translate") {
const { text, source_lang, target_lang } = await request.json();
const result = await env.AI.run("@cf/meta/m2m100-1.2b", {
text,
source_lang,
target_lang,
});
return Response.json({ translated: result.translated_text });
}
return new Response("Not Found", { status: 404 });
},
};
RAG with Vectorize
// RAG pipeline: Embed → Store in Vectorize → Query → Generate
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const { question } = await request.json();
// Step 1: Embed the question
const queryEmbedding = await env.AI.run("@cf/baai/bge-base-en-v1.5", {
text: [question],
});
// Step 2: Search Vectorize
const matches = await env.VECTORIZE.query(queryEmbedding.data[0], {
topK: 5,
returnMetadata: "all",
});
// Step 3: Generate answer with context
const context = matches.matches.map(m => m.metadata?.text).join("\n\n");
const answer = await env.AI.run("@cf/meta/llama-3.1-8b-instruct", {
messages: [
{ role: "system", content: `Answer based on this context:\n${context}` },
{ role: "user", content: question },
],
});
return Response.json({
answer: answer.response,
sources: matches.matches.map(m => ({ text: m.metadata?.text, score: m.score })),
});
},
};
Installation
# Create Workers project
npm create cloudflare@latest my-ai-app
# wrangler.toml
[ai]
binding = "AI"
[[vectorize]]
binding = "VECTORIZE"
index_name = "my-index"
# Deploy
npx wrangler deploy
Best Practices
- Edge inference — Models run on Cloudflare's network; <50ms latency worldwide, zero cold starts
- Streaming — Use
stream: truefor LLM responses; first token in ~200ms at the edge - Vectorize for RAG — Use Cloudflare Vectorize for embedding storage; integrated with Workers AI
- Free tier — 10K neurons/day free; enough for prototyping and low-volume production
- Model catalog — Browse
@cf/models; Llama 3.1, Mistral, Stable Diffusion, Whisper, BGE all available - Gateway for routing — Use AI Gateway for caching, rate limiting, analytics, and fallback to OpenAI/Anthropic
- R2 for storage — Store generated images, audio in R2 (S3-compatible); zero egress fees
- No GPU management — Cloudflare manages GPU fleet; you pay per inference, not per GPU-hour