記事・カード用の横長画像(5:2)をNano Banana 2(Gemini AI)で生成するスキル。 必ず日本語のタイトル文章を引きがある形で含める。文字は中央に大きく横いっぱいにする。実行環境はエージェントが利用できるツールに合わせる。 「記事用の画像を作って」「カード画像を生成」「横長のヘッダー画像」「記事バナー」 「x-article-image」「記事画像生成」などのリクエストで発動。
From x-managernpx claudepluginhub iketomo/cowork_x_plugin --plugin x-managerThis skill is limited to using the following tools:
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
Nano Banana 2(Gemini AI)を使って記事用横長画像を生成する。実行環境はエージェントの利用可能ツールに合わせて選ぶ(Nano Banana 2 をデフォルトで使えるツールがあればそれを優先し、なければ Supabase Edge Function を利用する)。
gemini-3.1-flash-image-preview)を直接呼び出せる画像生成ツールがある場合 → そのツールを使用する。x-generate-article-image がデプロイ済みであること。Supabase Secrets に GEMINI_API_KEY が設定済みであること(未設定時は https://aistudio.google.com/ でAPIキーを取得し、Supabase Dashboard → Edge Functions → Secrets に登録)。Read で x-manager/config.local.md を読み込み、以下を取得する:
Anon KeyEdge Function Base URL$ARGUMENTS にテキストが指定されていればそれを使用エージェントツールで Nano Banana 2 を使う場合:
そのツールの仕様に従い、スタイル「日本のビジネス書風ゆるいイラスト」・アスペクト比 5:2 を指定して生成する。文字は中央に大きく、横いっぱいに配置する。 保存はツールの挙動に任せ、Supabase Storage は必須ではない。
Supabase Edge Function を使う場合(Step 5):
以下に従い pg_net 経由で呼び出す。Edge Function が Storage に保存する場合はその URL を返せるが、保存自体は必須要件ではない。
VMからの直接HTTP通信はプロキシブロックされるため、Supabase MCP の execute_sql を使って pg_net 経由で呼び出す。
リクエスト送信(タイムアウトは60秒に設定すること):
SELECT net.http_post(
url := '{Edge Function Base URL}/x-generate-article-image',
headers := '{"Content-Type": "application/json", "Authorization": "Bearer {Anon Key}"}'::jsonb,
body := '{"text": "{画像用テキスト}", "id_suffix": "xxx"}'::jsonb,
timeout_milliseconds := 60000
) AS request_id;
レスポンス取得(45秒待機してから実行):
SELECT id, status_code, content::text, error_msg
FROM net._http_response
WHERE id = {request_id};
status_code = 200 かつ content に "success":true → image_url をユーザーに報告status_code = 500 かつ GEMINI_API_KEY is not configured → Supabase SecretsへのAPIキー設定を案内error_msg に Timeout → リクエストIDで再度ポーリングするか、待機時間を増やして再実行gemini-3.1-flash-image-preview(Nano Banana 2)x-images バケットに保存される場合があり、そのときの URL 形式は https://{project}.supabase.co/storage/v1/object/public/x-images/YYYY/MM/x_article_image_YYYYMMDDHHMMSS_{suffix}.png