jp-skill-image は何をしますか?
自然言語のリクエストを Cloudflare Workers AI(@cf/black-forest-labs/flux-1-schnell)で生成した画像に変換します。完全なフローは次のとおりです。ユーザーが希望を説明 → Claudeがプロンプトをエンジニアリング → スクリプトがCloudflare APIを呼び出す → 画像がローカルにJPGとして保存されます。
いつ使用するか
ユーザーが説明に基づいた画像生成を希望する場合 — 「カフェのロゴを作って」「AI動画のサムネイルを作って」「サイバーパンクな猫の写真」など。Claudeは、漠然としたリクエストを生成前に適切なプロンプトに変換する責任があります。
対象外: 既存画像の編集、ベクターアート/SVG、動画。
ステップ0 — 常に最初に .env を確認する
スクリプトを実行する前に、資格情報が解決できることを確認してください。スクリプトは次の順序で検索します。実際の環境変数 → カレントディレクトリまたは親ディレクトリの .env → ~/.claude/skills/jp-skill-image/.env(グローバルフォールバック)。
python3 -c "import sys; sys.path.insert(0, '$HOME/.claude/skills/jp-skill-image'); from generate import load_credentials; print('OK' if all(load_credentials()) else 'MISSING')"
変数が不足している場合(新規ユーザー / クローンしたばかりのプロジェクト)は、画像生成を試みずに、まずユーザーに以下の3つの短い手順で取得方法を伝えてください。
- CF_ACCOUNT_ID: Cloudflare Dashboard → 任意のドメイン/プロジェクト → Workers & Pages → Overview(右側に表示)、または直接
https://dash.cloudflare.com/profile/account-id... そこに表示されない場合は、ダッシュボードのURLまたは左サイドバーの Manage Account セクション(「My Profile」ではない)にあるIDを使用します。 - CF_API_TOKEN:
https://dash.cloudflare.com/profile/api-tokens→ Create Token → Custom Token → 権限Account.Workers AI Scripts: Edit→ Account Resources: 該当アカウント → Create。 .envファイルを作成する — プロジェクトのルート、または任意のフォルダから機能させるために~/.claude/skills/jp-skill-image/.envに以下を記述:CF_ACCOUNT_ID=xxxxx CF_API_TOKEN=xxxxx
プロジェクトがインターネットアクセスに企業プロキシを使用している場合(.npmrc に HTTPS_PROXY が存在するか、外部APIへのリクエストがタイムアウトで失敗する場合)、以下も追加してください:
HTTPS_PROXY=<proxy-corporativo>
変数が存在することを確認したら、通常通り続行します。
実行方法
任意のディレクトリから(画像はカレントディレクトリからの相対パスで保存されます):
python3 ~/.claude/skills/jp-skill-image/generate.py "<最適化されたプロンプト>" -o <ファイル名>.jpg --steps <N>
"<最適化されたプロンプト>"— あなたが作成するプロンプト(下記参照)。ユーザーの生の言葉をそのまま使わないでください。-o/--output— 保存先(デフォルトout.jpg)。短く説明的な名前を使用してください。例:coffee-logo.jpg--steps— 拡散ステップ数(デフォルト4)。flux-schnellは少ないステップ数に調整されていますが、最高品質を得るにはユーザーが速度を要求しない限り8を使用してください。4未満は使用しないでください。
スクリプトは成功時に Saved <ファイル> ... を出力し、失敗時には読みやすいエラーを出力します(base64画像を含むJSONレスポンスのケースも内部で処理済み)。
Claudeの本当の仕事:最高品質のプロンプトを書く
このスキルの価値は、Claudeがスクリプトを呼び出す前に、ユーザーの意図を鮮明で具体的かつ技術的に正確なプロンプトに拡張することにあります。ユーザーのリクエストをそのまま渡さず、必ず事前に加工してください。
Flux用の高品質プロンプトは、以下の順序で指定する必要があります:
- 主な被写体 — シーンに何があるか、具体的かつ曖昧さなく。
- スタイル/メディア — フォトリアリスティック、3Dレンダリング、フラットベクター、水彩、アイソメトリック、ピクセルアートなど。
- 構図とフレーミング — クローズアップ、ワイドショット、中央配置、三分割法、カメラアングル。
- 照明と雰囲気 — ゴールデンアワー、ネオン、ソフトなスタジオ照明、劇的な影、逆光。
- 色と詳細レベル — 特定のパレット、背景、テクスチャ、詳細レベル(“highly detailed”、“clean minimal”)。
- 技術的な品質(リアルな写真/レンダリングの場合) — “cinematic”、“8k”、“sharp focus”、“professional photography” などの用語は、Fluxがプレミアムな結果に近づくのに役立ちます。
変換例:
- ユーザー:"カフェのロゴ"
- 渡すプロンプト:"minimalist logo of a steaming coffee cup, flat vector illustration, warm brown and cream palette, centered on a clean off-white background, simple bold shapes, modern branding, professional design"
厳格なルール:
- プロンプトは常に英語で(Fluxは英語に最もよく反応します)。
- 1〜2文で、情報密度が高く、無駄のないものに。
- 画像内に読み取り可能なテキスト/単語を要求しないでください — Fluxはそれらをうまくレンダリングできません。
- ユーザーが十分な詳細を提供しない場合は、最善のクリエイティブ判断で不足部分を補ってください(被写体が本当に曖昧な場合を除き、質問しないでください)。
- デフォルトで
--steps 8を使用して品質を最大化し、ユーザーが明示的に速度を要求した場合のみ4に下げてください。
生成後
- ファイルが保存されたことを確認します(スクリプトがパスを出力します)。
- ユーザーにファイル名と使用した正確なプロンプトを伝え、調整して再実行できるようにします。
- バリエーションが必要な場合は、修正したプロンプトと新しい
-oで再実行します。
技術要件
CF_ACCOUNT_IDとCF_API_TOKENがステップ0の3つのソースのいずれかで解決されていること。- Python 3.8以上。外部依存関係なし — スクリプトは標準ライブラリ(
urllib)のみを使用するため、pip installや仮想環境は不要です。 - スクリプトはCloudflare APIからのbase64レスポンスをデコードし、バイナリJPGとして保存します — レスポンス自体は画像ではありません。