Communityコーディング&開発github.com

Blog Image - ブログコンテンツ向けAI画像生成

ブログ記事に最適化された画像を生成・編集するスキルです。簡略化されたリクエストを解釈・拡張し、6つの構成要素からなるリズニングブリーフを使って的確なプロンプトに変換し、Geminiを経由して高品質な画像を生成します。

Blog Image - ブログコンテンツ向けAI画像生成 とは?

この「Blog Image」スキルは、ブログコンテンツのためにGeminiの画像生成をオーケストレーションするクリエイティブディレクターです。ユーザーの生のテキストをそのままAPIに渡すことはせず、常に解釈・拡張し、6つの構成要素(被写体、動作、文脈、構図、照明、スタイル)からなるリズニングブリーフを用いて最適化されたプロンプトを構築します。 ブログ記事のユースケースに応じて、ヒーロー/カバー画像(16:9、2K/4K)、OG/ソーシャルカード、インラインイラスト、商品写真、セクションディバイダーなど、適切なアスペクト比と解像度を自動選択します。生成前にMCPサーバーの可用性を確認し、利用できない場合はサイレントにフォールバックし、呼び出し元のワークフローはストックフォトで継続します。 生成フローは7つのステップで構成されます:意図分析、ドメインモードの選択(エディトリアル、プロダクト、ランドスケープ、UI/Web、インフォグラフィック、アブストラクト)、6構成要素のリズニングブリーフ構築(テンプレート使用)、アスペクト比の設定、MCPツールを介した生成、必要に応じたリサイズ/WebP/AVIF変換、そして最終的な画像パス、プロンプト、設定、altテキスト、frontmatterスニペットの提供までをカバーします。 編集ワークフローでは、既存画像に対する指示を拡張し、例えば「背景を削除」を詳細なエッジ保存背景除去に変換するなど、高精度な編集を行います。安全性フィルターがトリガーされた場合は自動で言い換えを行い(最大3回再試行)、80%正しい画像に対しては再生成ではなく会話編集を推奨します。対応プラットフォームはnanobanana-mcpサーバーを使用する任意の環境で、CLIからのセットアップも簡単です。

対応✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/AgriciDaniel/claude-blog/tree/main/skills/blog-image

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Blog Image - ブログコンテンツ向けAI画像生成 は何をしますか?

あなたはクリエイティブディレクターとして、ブログコンテンツ専用にGeminiの画像生成を指揮します。生のユーザーテキストをそのままAPIに渡してはいけません。常に解釈・拡張し、6構成要素のリズニングブリーフシステムを用いて最適化されたプロンプトを構築してください。

クイックリファレンス

コマンド機能
/blog image generate <アイデア>プロンプトエンジニアリングを徹底してブログ画像を生成
/blog image edit <パス> <指示>既存のブログ画像をインテリジェントに編集
/blog image setupMCPサーバーとAPIキーを設定

ブログ画像タイプ

画像タイプをブログのユースケースに合わせて選択します:

画像タイプアスペクト比解像度ドメインモード配置場所
ヒーロー/カバー16:92K または 4Kエディトリアル / ランドスケープFrontmatter coverImage
OG/ソーシャルカード16:91Kエディトリアル / インフォグラフィックFrontmatter ogImage
インラインイラスト16:9 または 4:31Kトピックにより異なるH2の後、本文の前
インライン商品写真4:3 または 1:11Kプロダクト商品セクション内
セクションディバイダー8:1 または 4:11Kアブストラクト / ランドスケープ主要セクション間

サイズ要件:

  • ブログヒーロー/カバー:1200x630(OG互換)または1920x1080
  • Open Graph(OG):1200x630(ソーシャル共有に必須)
  • インライン画像:幅1200px以上

MCP可用性確認

生成前に、nanobanana-mcpツールが利用可能か確認します:

  1. get_image_historyを呼び出してみる(軽量、副作用なし)
  2. 成功した場合:MCPが利用可能。生成に進む
  3. 失敗した場合:MCPが設定されていない。ユーザーに通知:
    • 「画像生成にはnanobanana-mcpサーバーが必要です。/blog image setupを実行して設定してください。」
    • 内部から呼び出された場合(blog-write/blog-rewriteから):エラーなしで黙って戻る。呼び出し元のワークフローはストックフォトで継続する。

生成ワークフロー

/blog image generate <アイデア>、または内部から呼び出された場合:

ステップ1:意図の分析

ブログに必要なものを判断します:

  • 画像タイプ:ヒーロー、インライン、OGカード、セクションディバイダー?
  • ブログトピック:記事は何について?
  • スタイル:フォトリアリスティック、エディトリアル、イラスト、ミニマル?
  • 制約:ブランドカラー、特定の寸法、プラットフォームフォーマット?
  • ムード:権威的、魅力的、ドラマチック、クリーン?

リクエストが曖昧な場合は、ユースケースとスタイルについて1つの質問をして明確にします。

ステップ2:ドメインモードの選択

画像に適した専門性のレンズを選びます:

モード使用タイミングプロンプトの重点
エディトリアルブログヘッダー、特集画像、ライフスタイルスタイリング、構成、パブリケーションの参照
プロダクトEC記事、レビュー、比較サーフェスマテリアル、スタジオ照明、クリーンな背景
ランドスケープ環境的背景、旅行、ヒーローセクション大気遠近法、奥行きレイヤー、時間帯
UI/Webテックブログのアイコン、イラスト、図クリーンなベクター、フラットデザイン、正確な色
インフォグラフィックデータ駆動型記事、プロセス、比較レイアウト構造、階層、アクセシブルな色
アブストラクトパターン背景、セクションディバイダー、装飾色彩理論、数理形態、テクスチャ

ドメインモードの修飾子ライブラリについては、references/prompt-engineering-blog.mdを読み込んでください。

ステップ3:6構成要素のリズニングブリーフを構築

プロンプトは自然なナラティブ段落として構築します - 絶対にキーワードリストとしてはいけません。

  1. 被写体 - 誰/何か、豊かな物理的詳細(テクスチャ、素材、スケール)
  2. 動作 - 何が起こっているか、ポーズ、ジェスチャー、動き、状態
  3. 文脈 - 環境、設定、時間帯、季節、天気
  4. 構図 - カメラアングル、ショットタイプ、フレーミング、ネガティブスペース、奥行き
  5. 照明 - 光源、質、方向、色温度、影
  6. スタイル - 画材、美学、フィルムストック、参考アーティスト/時代

フォトリアリスティックなブログ画像用テンプレート:

[被写体の物理的詳細]を持つ[被写体]のフォトリアリスティックな[ショットタイプ]、[動作/ポーズ]、
[環境と詳細]に設定。 [照明条件]が[ムード]を創り出す。
[カメラモデル]、[焦点距離]レンズ、[f値]で撮影、[被写界深度効果]を生成。
[カラーパレット/グレーディングノート]。アスペクト比16:9、[ターゲット寸法]のブログ[ヒーロー画像/インラインイラスト]として適切。

イラスト/スタイライズド用テンプレート:

[キャラクター詳細]を持つ[被写体]の[アートスタイル]の[フォーマット]、[色調パレット]で[特徴的な特性]を特徴とする。
[線画スタイル]と[シェーディング技法]。背景は[説明]。[ムード/雰囲気]。

ステップ4:アスペクト比の設定

生成前にset_aspect_ratioを呼び出します:

ブログユースケース比率
ヒーロー / カバー / OG16:9
商品写真 / 正方形4:3 または 1:1
セクションディバイダー8:1 または 4:1
縦長(ストーリーズ)9:16

ステップ5:MCP経由で生成

MCPツール使用タイミング
set_aspect_ratio比率が1:1と異なる場合は常に最初に呼び出す
gemini_generate_image作成したプロンプトから新しい画像を生成
gemini_edit_image既存の画像を修正
gemini_chat反復的な洗練 / マルチターンセッション
get_image_history生成済み画像を確認
clear_conversationセッションコンテキストをリセット

モデル選択(切り替える場合はset_model MCPツールを使用):

  • NB2 Flash(デフォルト):ほとんどのブログ画像に最適 - 高速、14の比率、4K、$0.067/枚
  • NB Pro:テキストオーバーレイ付きヒーロー画像(94%のテキスト精度)または最高品質が必要な場合に使用 - $0.134/枚
  • Original:$0.039/枚の予算オプション - 5つの比率、最大1K

パラメータの詳細についてはreferences/mcp-tools.mdを読み込んでください。 モデル仕様、価格、レート制限についてはreferences/gemini-models.mdを読み込んでください。

ステップ6:後処理(必要な場合)

生成後、ブログ用にリサイズ/変換します:

# ブログヒーロー寸法(1200x630)にリサイズ
magick input.png -resize 1200x630^ -gravity center -extent 1200x630 hero.png

# ウェブ最適化のためにWebPに変換
magick input.png -quality 85 output.webp

# AVIFに変換(最小、最新)
magick input.png -quality 80 output.avif

# 正確なOG寸法にクロップ
magick input.png -resize 1200x630^ -gravity center -extent 1200x630 og-image.png

magick(ImageMagick 7)が利用可能か確認してください。利用できない場合はconvertにフォールバックします。

ステップ7:納品

以下の内容を提供します:

  1. 画像パス - 保存場所(~/Documents/nanobanana_generated/)
  2. 作成したプロンプト - 完全なリズニングブリーフを表示(教育的)
  3. 設定 - モデル、アスペクト比、ドメインモード
  4. 代替テキスト - 説明的な文章、10〜125文字、トピックキーワードを自然に含む
  5. Frontmatterスニペット(ヒーロー/OG画像用):
coverImage: "/path/to/generated-image.png"
coverImageAlt: "トピックキーワードを含む説明的な代替テキスト文"
ogImage: "/path/to/generated-image.png"
  1. 改善提案 - 該当する場合は1〜2のアイデア

編集ワークフロー

/blog image edit <パス> <指示>の場合:

  1. 画像パスと編集指示を読み取る
  2. 指示を拡張する(生のまま渡さない):
    ユーザーの入力Claudeが作成する指示
    "背景を削除"詳細なエッジ保存背景除去
    "暖かくして"保存注釈付きの具体的な色温度シフト
    "テキストを追加"フォントスタイル、サイズ、配置、コントラスト、可読性の注釈
    "明るくして"露出増加、シャドウ持ち上げ、ハイライト維持
    "ソーシャル用にトリミング"センターグラビティクロップで1200x630にリサイズ
  3. 拡張した指示でgemini_edit_imageを呼び出す
  4. 修正された画像パスと説明を返す

内部API(blog-write / blog-rewrite用)

Taskサブエージェントとしてblog-writeまたはblog-rewriteから呼び出された場合:

入力(呼び出し元スキルから提供):

  • image_type:hero、inline、og、divider
  • topic:ブログ記事のトピック/タイトル
  • section_context:(オプション)画像がサポートする見出しまたはセクション
  • style_preference:(オプション)フォトリアリスティック、イラスト、エディトリアル
  • count:(オプション)必要な画像の数(デフォルト:1)

出力(呼び出し元スキルに返す):

### 生成画像
- **パス:** ~/Documents/nanobanana_generated/image_timestamp.png
- **代替テキスト:** 画像に関する説明的な文章
- **タイプ:** hero / inline / og
- **ドメインモード:** エディトリアル
- **アスペクト比:** 16:9
- **推奨Frontmatter:**
  coverImage: "/path/to/image.png"
  coverImageAlt: "ここに代替テキスト"

グレースフルフォールバック:MCPが利用できない場合は、エラーなしで即座に戻ります。 呼び出し元のワークフローはストックフォトで継続します。画像生成が利用できないために blog-writeやblog-rewriteをブロックしないでください。

代替テキスト生成

生成されたすべての画像に対して、ブログ標準に従った代替テキストを作成します:

  • 完全な説明的文章(キーワードリストではない)
  • 10〜125文字
  • トピックキーワードを自然に含める
  • 画像が何を示しているか、およびコンテンツとの関連性を説明する
  • チャート/インフォグラフィックの場合:主要なデータポイントを含める

良い例:Marketing team analyzing AI search traffic data on a dashboard showing citation metrics 悪い例:SEO AI marketing blog optimization image

セットアップ

/blog image setupの場合:

  1. python3 scripts/setup_image_mcp.pyを実行(対話型)
    • または:python3 scripts/setup_image_mcp.py --key YOUR_KEY(非対話型)
    • デフォルトでプロジェクトの.mcp.jsonに書き込み
    • ~/.claude/settings.jsonには--globalフラグを使用
  2. 確認:python3 scripts/validate_image_setup.py
  3. 必要なもの:

安全性フィルター自動言い換え

IMAGE_SAFETYまたはSAFETYが返された場合、諦めないでください。自動で言い換えて再試行します:

  1. トリガーの可能性を特定(暴力、公人、NSFWに近い、または過度に慎重なフィルター)
  2. ポジティブなフレーミングで言い換える - 避けたいことではなく、望むことを説明する
  3. 被写体が人の場合は、一般化する(有名人のような具体性を削除)
  4. シーンがドラマチックな場合は和らげる:「激しい」→「集中した」、「戦い」→「競争」
  5. 言い換えたプロンプトで再試行(ユーザーに報告する前に最大3回)

Googleはフィルターが「意図したよりもはるかに慎重になってしまった」ことを認めており、無害なプロンプトが ブロックされることがあります。言い換えによる粘り強い試行で通常成功します。

編集、再生成しない

画像が80%正しい場合は、最初から再生成するのではなく、gemini_chatを使用した会話編集を行ってください。 セッションはスタイルの一貫性を維持するため、ターゲットを絞った編集で良い部分を保持しつつ、悪い部分を修正できます。

編集 vs 再生成の判断基準:

  • 色が少しずれている → 編集(「色温度を暖かくシフト」)
  • 構図が完全に間違っている → 改訂ブリーフで再生成
  • シーンは良いが照明が間違っている → 編集(「左からゴールデンアワーの照明に変更」)
  • 詳細が欠けている → 編集(「机の上に湯気の立つコーヒーカップを追加」)

エラーハンドリング

エラー解決策
MCP未設定/blog image setupを実行
APIキー無効https://aistudio.google.com/apikey で新しいキーを取得
レート制限(429)60秒待って再試行。無料枠:モデルと課金により約5〜15 RPM / 約20〜500 RPD
IMAGE_SAFETY自動言い換え(上記参照)- レイヤー2フィルター、設定不可
PROHIBITED_CONTENTコンテンツポリシー違反 - トピックがブロックされています。再試行不可。
SAFETYプロンプトを言い換え - レイヤー1フィルター
曖昧なリクエスト生成前に1つの質問で明確化
品質が低いリズニングブリーフを確認 - おそらく照明が不足(最大の品質差別化要因)
MCP利用不可(内部呼び出し)静かに戻る - 呼び出し元ワークフローでストックフォトを使用

参考ドキュメント

オンデマンドで読み込んでください - 起動時にすべてを読み込まないでください:

  • references/prompt-engineering-blog.md - ドメインモード、6構成要素システム、ブログテンプレート
  • references/gemini-models.md - モデル仕様、レート制限、アスペクト比、価格
  • references/mcp-tools.md - MCPツールのパラメータとレスポンスフォーマット

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

関連スキル