X投稿用の画像をGemini AIで生成するスキル。 Supabase Edge Function `x-generate-image` を呼び出し、 日本のビジネス書風「ゆるいイラスト」スタイルの正方形画像を生成してSupabase Storageに保存し、公開URLを返す。 「X投稿の画像を作って」「投稿用の画像を生成」「ツイートに画像を添付したい」 「Xの画像生成」「x-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.
Supabase Edge Function (x-generate-image) 経由で Gemini AI を使って投稿用画像を生成する。
x-generate-image がデプロイ済み(モデル: gemini-3.1-flash-image-preview)GEMINI_API_KEY が設定済み
https://aistudio.google.com/ でAPIキーを取得し、
Supabase Dashboard → Settings → Edge Functions → Secrets に GEMINI_API_KEY として登録するRead で x-manager/config.local.md を読み込み、以下を取得する:
Anon KeyEdge Function Base URL$ARGUMENTS にテキストが指定されていればそれを使用VMからの直接HTTP通信はプロキシブロックされるため、Supabase MCP の execute_sql を使って pg_net 経由で呼び出す。
リクエスト送信(タイムアウトは60秒に設定すること):
SELECT net.http_post(
url := '{Edge Function Base URL}/x-generate-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-previewx-images バケット(public)https://iltymrnkqchixvtpvewm.supabase.co/storage/v1/object/public/x-images/YYYY/MM/x_post_image_YYYYMMDDHHMMSS_{suffix}.png