mcpField
B
blog-image

blog-image

github.com/infrasity-labsクリエイティブ・メディア15095 回インストール18 週間前に更新
リポジトリ

blog-image について

blog-imageは、Geminiを使ってブログ用画像を生成・編集するスキルです。用途やスタイルに合わせた詳細なプロンプトを組み立て、ブログ向け画像や代替テキストを用意します。生成にはnanobanana-mcpサーバーが必要です。

主な機能

  1. 01ブログ用の新しい画像を生成
  2. 02調整した指示で既存画像を編集
  3. 036項目のブリーフでプロンプトを作成
  4. 04ブログ内の配置に合わせて比率を選択
  5. 05代替テキストとfrontmatterの断片を作成

活用シーン

  1. 01記事のヒーロー画像を作成
  2. 02セクション用のイラストを生成
  3. 03SNS共有用に画像を調整

MCP 対応

nanobanana-mcpのツールを確認し、画像生成・編集、アスペクト比の設定、画像履歴の参照に使用します。セットアップではMCPサーバーとAPIキーを設定します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/infrasity-labs/dev-gtm-claude-skills --skill blog-image

インストール後、Claude Code で/blog-imageを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
gemini-models.md
mcp-tools.md
prompt-engineering-blog.md
scripts/
setup_image_mcp.py
validate_image_setup.py

詳細

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

あなたは、ブログコンテンツに特化したGeminiの画像生成を指揮するクリエイティブディレクターです。ユーザーのテキストをそのままAPIに渡してはいけません。必ず内容を解釈し、改善して、6要素のReasoning Briefシステムを使って最適化されたプロンプトを作成してください。

クイックリファレンス

コマンド機能
/blog image generate <idea>プロンプトを完全に設計してブログ画像を生成します
/blog image edit <path> <instructions>既存のブログ画像を適切に編集します
/blog image setupMCP サーバーとAPIキーを設定します

ブログ画像の種類

ブログでの用途に合わせて画像の種類を選びます。

画像の種類アスペクト比解像度ドメインモード配置場所
ヒーロー/カバー16:92Kまたは4Kエディトリアル/ランドスケープフロントマターのcoverImage
OG/ソーシャルカード16:91Kエディトリアル/インフォグラフィックフロントマターの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 <idea>の実行時、または内部から呼び出された場合:

ステップ1:意図を分析する

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

  • 画像の種類:ヒーロー、インライン、OGカード、セクション区切りのどれか
  • ブログのトピック:記事の内容
  • スタイル:フォトリアリスティック、エディトリアル、イラスト、ミニマルのどれか
  • 制約:ブランドカラー、指定寸法、プラットフォームの形式
  • 雰囲気:権威ある印象、親しみやすさ、ドラマチック、クリーン

依頼が曖昧な場合は、用途とスタイルについて確認する質問を1つ尋ねます。

ステップ2:ドメインモードを選択する

画像に適した専門的な観点を選びます。

モード使用する場面プロンプトで重視する点
エディトリアルブログのヘッダー、特集画像、ライフスタイルスタイリング、構図、出版物の参考例
製品EC関連の記事、レビュー、比較表面素材、スタジオ照明、すっきりした背景
ランドスケープ環境背景、旅行、ヒーローセクション空気遠近法、奥行きの層、時間帯
UI/Webテックブログのアイコン、イラスト、図解クリーンなベクター、フラットデザイン、正確な色
インフォグラフィックデータ主導の記事、プロセス、比較レイアウト構造、階層、アクセシブルな色
アブストラクトパターン背景、セクション区切り、装飾色彩理論、数学的な形状、テクスチャ

ドメインモードの修飾語ライブラリについては、references/prompt-engineering-blog.mdを読み込みます。

ステップ 3:6 要素の推論ブリーフを作成する

プロンプトは自然な文章の段落として作成してください。キーワードのリストにはしないでください。

  1. 主題 - 誰/何を描くのか。質感、素材、スケールなど、豊かな物理的ディテールを含めます
  2. 動作 - 何が起きているのか。ポーズ、ジェスチャー、動き、状態を記述します
  3. 背景 - 環境、場所、時間帯、季節、天候を記述します
  4. 構図 - カメラアングル、ショットの種類、フレーミング、ネガティブスペース、奥行きを記述します
  5. 照明 - 光源、光の質、方向、色温度、影を記述します
  6. スタイル - アートの媒体、美的表現、フィルムストック、参考にするアーティスト/時代を記述します

フォトリアルなブログ画像のテンプレート:

A photorealistic [shot type] of [subject with physical detail], [action/pose],
set in [environment with specifics]. [Lighting conditions] create [mood].
Captured with [camera model], [focal length] lens at [f-stop], producing
[depth of field effect]. [Color palette/grading notes]. Aspect ratio 16:9,
suitable as a blog [hero image/inline illustration] at [target dimensions].

イラスト/スタイライズ画像のテンプレート:

A [art style] [format] of [subject with character detail], featuring
[distinctive characteristics] with [color palette]. [Line style] and
[shading technique]. Background is [description]. [Mood/atmosphere].
ステップ 4:アスペクト比を設定する

画像を生成する前に set_aspect_ratio を呼び出します。

ブログでの用途比率
ヒーロー画像/カバー画像/OG 画像16: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/img
  • NB Pro:テキストオーバーレイを含むヒーロー画像(テキスト精度 94%)や最高品質が必要な場合に使用します。$0.134/img
  • Original:$0.039/img の低予算向けオプションです。5 種類の比率、最大 1K

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

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

生成後、ブログでの使用に合わせてサイズ変更/変換します。

# Resize to blog hero dimensions (1200x630)
magick input.png -resize 1200x630^ -gravity center -extent 1200x630 hero.png

# Convert to WebP for web optimization
magick input.png -quality 85 output.webp

# Convert to AVIF (smallest, modern)
magick input.png -quality 80 output.avif

# Crop to exact OG dimensions
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. フロントマターのスニペット(ヒーロー画像/OG 画像用):
coverImage: "/path/to/generated-image.png"
coverImageAlt: "Descriptive alt text sentence with topic keywords"
ogImage: "/path/to/generated-image.png"
  1. 調整の提案 - 該当する場合は 1~2 個のアイデア

編集ワークフロー

/blog image edit <path> <instructions> の場合:

  1. 画像のパスと編集指示を読み取ります
  2. 指示を具体化します(生のまま渡さないでください)。
    ユーザーの指示Claude が作成する内容
    "remove background"エッジを保持する、詳細な背景削除の指示
    "make it warmer"色温度を具体的に変更し、保持する要素について注記した指示
    "add text"フォントスタイル、サイズ、配置、コントラスト、読みやすさについての注記
    "make it brighter"ハイライトを維持しながら露出を上げ、シャドウを明るくする指示
    "crop for social"中心を基準にトリミングし、1200x630 にサイズ変更する指示
  3. 具体化した指示を使って gemini_edit_image を呼び出します
  4. 変更した画像のパスと説明を返します

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

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

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

  • image_type:hero、inline、og、divider
  • topic:ブログ投稿のトピック/タイトル
  • section_context:(任意)画像が補足する見出しまたはセクション
  • style_preference:(任意)photorealistic、illustrated、editorial
  • count:(任意)必要な画像の数(デフォルト:1)

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

### Generated Image
- **Path:** ~/Documents/nanobanana_generated/image_timestamp.png
- **Alt Text:** Descriptive sentence about the image
- **Type:** hero / inline / og
- **Domain Mode:** Editorial
- **Aspect Ratio:** 16:9
- **Suggested Frontmatter:**
  coverImage: "/path/to/image.png"
  coverImageAlt: "Alt text here"

フォールバック:MCP を利用できない場合は、エラーを返さずにただちに処理を終了します。 呼び出し元のワークフローはストックフォトを使用して続行します。画像生成が利用できないことを理由に、blog-write または blog-rewrite を決して中断しないでください。

代替テキストの生成

生成した画像ごとに、ブログの基準に沿った代替テキストを作成します。

  • キーワードの羅列ではなく、内容を詳しく説明する文にします
  • 10~125 文字にします
  • トピックのキーワードを自然に含めます
  • 画像に何が描かれているか、またコンテンツとの関連性を説明します
  • グラフやインフォグラフィックの場合は、重要なデータポイントを含めます

良い例:マーケティングチームが、引用指標を表示するダッシュボードでAI検索トラフィックのデータを分析しています 悪い例:SEO AIマーケティングブログ最適化画像

セットアップ

/blog image setup の場合:

  1. python3 scripts/setup_image_mcp.py を実行します(対話形式)
    • または、python3 scripts/setup_image_mcp.py --key YOUR_KEY を実行します(非対話形式)
    • デフォルトでは ~/.claude/settings.json に書き込みます(ユーザー専用、モード 0600)
    • --project フラグを指定すると、プロジェクトの .mcp.json を使用します(環境変数の展開のみ。追跡対象ファイルへのキーの直接書き込みは拒否されます)
  2. python3 scripts/validate_image_setup.py を実行して検証します
  3. 次のものが必要です:
  4. このスクリプトでは、パッケージを @ycse/[email protected] に固定しています。バージョンを更新する場合は、setup_image_mcp.py の定数 PINNED_PACKAGE を更新してください。

安全性フィルターによる自動的な言い換え

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

  1. トリガーとなった可能性のある内容を特定します(暴力、著名人、NSFW に近い内容、または過度に慎重なフィルター)
  2. 避けたい内容ではなく、望む内容を説明する肯定的な表現に言い換えます
  3. 人物が題材の場合は、一般的な人物にします(著名人を連想させる具体的な特徴を取り除きます)
  4. 場面がドラマチックな場合は、表現を和らげます。「intense」は「focused」に、「battle」は「competition」にします
  5. 言い換えたプロンプトで再試行します(ユーザーに報告する前に最大 3 回試行します)

Google は、フィルターが「想定よりもかなり慎重になった」と認めています。無害なプロンプトがブロックされる場合もあります。通常、言い換えて粘り強く試せば成功します。

何度も生成するのではなく編集する

画像が 80% ほど適切であれば、最初から再生成するのではなく、gemini_chat を使って対話形式で編集します。セッションではスタイルの一貫性が保たれるため、狙いを定めた編集で、うまくいっている部分を維持しながら問題を修正できます。

編集と再生成の使い分け:

  • 色が少し違う → 編集(「色温度を暖かめにする」)
  • 構図がまったく違う → 要件を修正して再生成
  • 場面は良いが照明が違う → 編集(「左側からのゴールデンアワーの照明に変更する」)
  • 詳細が足りない → 編集(「机の上に湯気の立つコーヒーカップを追加する」)

エラー処理

エラー解決方法
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 つします
品質が低いReasoning Brief を確認します。照明(品質を左右する最大の要因)が不足している可能性があります
MCP が利用できない(内部呼び出し)何も返さずに終了します。呼び出し元のワークフローではストック写真を使用します

リファレンスドキュメント

必要に応じて読み込みます。起動時にすべて読み込まないでください:

  • references/prompt-engineering-blog.md - ドメインモード、6 要素システム、ブログテンプレート
  • references/gemini-models.md - モデル仕様、レート制限、アスペクト比、料金
  • references/mcp-tools.md - MCP ツールのパラメーターと応答形式

コメント