prompt-to-asset について
prompt-to-asset は、アプリアイコン、favicon、OG 画像、ロゴなどを生成する MCP サーバー兼コマンドラインツールです。30 以上の画像モデルに対して無料のプロバイダーを優先してルーティングします。画像モデルの API キーを用意せずに素材を作りたい開発者を対象としています。
主な機能
- 01複数の画像モデルに対する無料優先のルーティング
- 02inline SVG、外部貼り付け、API の 3 つのモード
- 03iOS、Android、PWA、favicon セットへのオフライン書き出し
- 04寸法、アルファチャンネル、コントラストの自動検証
- 05スプライトシートと 9 スライス出力
活用シーン
- 01新規アプリの透過背景ロゴと favicon の作成
- 021 枚のマスター画像からプラットフォーム別アイコンセットの書き出し
- 03画像モデルの API キーなしでの素材作成
MCP 対応
本サーバーは asset_doctor、asset_enhance_prompt、asset_export_bundle などの MCP ツールとして素材の生成と書き出し機能を AI アシスタントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
24掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| asset_type | enum | いいえ | アセットタイプ別のモード一覧を 1 種類に絞り込みます。logo | app_icon | favicon | og_image | splash_screen | illustration | icon_pack | hero | sticker | transparent_mark |
詳細
prompt‑to‑asset
開発者向けの無料画像生成。CLI または AI アシスタントから利用できます。
1つの概要から、アプリアイコン、ファビコン、OG画像、ロゴ、スプラッシュ画面、SVG、プラットフォーム別の一式を生成します。まずは最適な無料ルートを利用します。
Cloudflare Workers AI、NVIDIA NIM、HF Inference、Stable Horde、Pollinations、無料トライアル、オフライン SVG 向けに構築されています。
30秒で開始
どれか1つ選んで実行するだけです。これで完了です。 推奨の方法を最初に紹介します。
実行環境:Node ≥ 20.11(24を推奨)。macOS、Linux、Windows(--fix のネイティブ依存関係には WSL2 を使用)。
|
### 🔵 AI アシスタント · おすすめ
上のインストールボタンをクリックしてください。その後、以下のいずれかをチャットに貼り付けます:
Cursor、Claude Code、VS Code、Windsurf、Codex、Gemini CLI で動作します。ターミナルへの入力は一切不要です。 |
🟢 API キー不要、インストール不要
出力:iOS AppIconSet、Android adaptive、PWA、favicon バンドル、visionOS スキャフォールド。 |
🟣 CLI · 無料 API キー最高の CLI エクスペリエンス:まず無料トークンを使い、有料キーは必要に応じて利用できます。
Cloudflare Workers AI、NVIDIA NIM、HF Inference、Stable Horde、無料トライアルから始めましょう。有料プロバイダーは、引き続きオプションのフォールバックとして利用できます。 |
無料で使える方法の概要
有料 API キーは不要です。おすすめ順に並べています:
| 方法 | 利用できるもの | 登録 |
|---|---|---|
inline_svg(AI アシスタント経由) | ロゴ、ファビコン、アイコンパック — 即時生成 | 不要 |
| Cloudflare Workers AI | Flux-1-Schnell + SDXL、1 日あたり 10k ニューロン | 無料トークン + アカウント ID |
| NVIDIA NIM | Flux.1-dev、Flux.2-klein、SDXL、SANA | 無料トークン、カード不要 |
| HF Inference | SDXL、SD3、Flux dev/schnell | 無料の読み取りトークン |
| Stable Horde | コミュニティ GPU 上の SDXL、Flux | 匿名キュー |
| Pollinations(HTTP GET) | 最終手段のラスター画像、RGB | 不要 |
| Google AI Studio(貼り付け専用 UI) | Nano Banana / Nano Banana Pro | Google アカウント |
詳細とクォータ:Pollinations 以外の無料利用方法。p2a doctor を実行するか、アシスタントに asset_doctor() を依頼すると、現在利用可能なものを確認できます。
ヒント
行き詰まった場合は、上の Install in Cursor または Install in VS Code をクリックし、エディターを再起動して、次のように入力してください:「アプリ用のファビコンを作成して。ダークモードにも対応させて。」
主な機能
- 無料、CLI 優先の生成 —
p2a doctor、p2a pick、および MCP ツールは有料モデルより先に無料の API 経路を優先するため、開発者は課金を有効にせずに CLI 内で生成できます。 - 3 つの実行モード —
inline_svg(ホスト LLM が SVG を作成)、external_prompt_only(任意のウェブ UI に貼り付け)、api(サーバーが無料または有料のプロバイダーを呼び出し)。用途に合わせて選べます。3 つすべて、費用 0 ドルで完了できます。 - 60 以上のモデル、無料優先のルーティング — Cloudflare Workers AI、NVIDIA NIM、HF、Horde、Pollinations、無料トライアルに加え、オプションで有料の OpenAI / Ideogram / Recraft / BFL / Gemini も利用できます。各ルールには調査ソースが記載されています。
- 不適切な処理を拒否 —
Never列を参照してください。3 語を超えるワードマークを拡散サンプラーに通しません。透明 PNG を Imagen で生成しません。Flux にnegative_promptを指定しません。 - オフラインでのプラットフォーム一括出力 — 1024² のマスター画像 1 枚から、iOS AppIconSet、Android adaptive + monochrome、PWA 192/512/512-maskable、favicon バンドル、visionOS 視差画像、Flutter ランチャー用画像を生成します。ネットワーク接続は不要です。
- 出力前に検証 — すべての出力に対してティア 0 のチェックを実施:寸法、アルファチャンネルの有無、チェッカーボード FFT、安全領域のバウンディングボックス、ΔE2000 によるパレットのずれ、WCAG コントラスト、ワードマークの OCR Levenshtein。
- スプライトシート + 9 スライス — PNG フレームを TexturePacker 互換のアトラス(Phaser、PixiJS、Godot、Unity)にパックし、9 スライスの数値 + CSS
border-image+ Android.9.pngを出力します。
目次
クリックして展開
使い方
アシスタントに話しかけるだけです。新しいチャットでの例:
Forgeという開発者向けツール企業の、背景が透明なロゴを作ってください。フラットなベクターで、ニュートラルな色を背景に、温かみのあるオレンジを2色使ってください。
内部では、次の処理が行われます。
asset_doctor()— 利用可能なモードとプロバイダーを確認します。asset_init_brand({ app_name: "Forge", palette: ["#EA580C", "#F5F5F4"] })—brand.jsonが存在しない場合に実行します。asset_enhance_prompt({ brief })はAssetSpecを返します。内容は、分類、書き換えられたプロンプト、modes_available[]、任意のsvg_brief、任意のpaste_targets、判断の根拠となった調査ファイルを示すrouting_trace(およびImagenやDALL·Eが却下された理由を示すnever_models)です。- アシスタントが**
inline_svg/external_prompt_only/api**を提示します。 - **
inline_svg**の場合:<svg>をインラインで作成し、asset_save_inline_svgを呼び出します →master.svg、favicon.ico、apple-touch、AppIconSet、PWAバンドルをディスクに書き込みます。 - **
external_prompt_only**の場合:アシスタントが、調整済みプロンプトと最適な貼り付け先(無料のものを優先)を提示します。生成して保存した後、「このファイルを取り込んで」と伝えます →asset_ingest_external。 - **
api**の場合:アシスタントがルーティングされたプロバイダーを呼び出します。サーバーがマット処理、ベクター化、エクスポート、検証を行います。 - 追加の依頼:「これをiOSとAndroid用にも展開してください」 → 保存済みのマスターを使って
asset_export_bundleを実行します。
CLIに入力する必要はありません。CI、シェルスクリプト、MCP以外の環境では、CLIも引き続き第一級の手段です。どちらのインターフェースも同じコアを利用します。
これが存在する理由
ここでのすべてを左右する事実が2つあります。
本番品質のソフトウェアアセットを作成するうえで重要なのは、プロンプトエンジニアリングではなく、ルーティングと後処理の問題です。
Imagen 3/4とGemini Flash Imageでは、本物のRGBA PNGを生成できません。VAEがRGB専用のため、透明な背景を求めると、灰色と白の市松模様が ピクセルとして 描画されます。SDXLは約8文字を超えると正確に文字を描けません。ネイティブSVGを出力できるのはRecraftだけです。Fluxはnegative_promptでエラーになります。こうした制約はモデルのUIからは見えません。しかし、どれも「プロンプト → アセット」を一度で実行するツールを、気づかれないまま破綻させます。
画像モデルのAPIキーを持っていない場合もあります。それでもこのプラグインは動作します。
3つのモードはいずれも、費用をかけずに完了できます。
3 つのモード
flowchart LR
A["one-line brief"] --> B["asset_enhance_prompt"]
B --> C{"mode"}
C -->|inline_svg| D["Host LLM emits SVG inline<br/>→ asset_save_inline_svg"]
C -->|external_prompt_only| E["Paste into web UI<br/>→ asset_ingest_external"]
C -->|api| F["Server calls routed provider"]
D --> G["matte · vectorize · validate"]
E --> G
F --> G
G --> H["AssetBundle<br/>ios · android · pwa · favicon · visionos · flutter"]
| モード | キー? | 動作 | 最適な用途 |
|---|---|---|---|
inline_svg | いいえ | サーバーが SVG 作成用の指示(viewBox、パレット、パス数の上限 ≤ 40)を返します。ホスト LLM が <svg>…</svg> をインラインで生成し、asset_save_inline_svg がマスター、favicon.ico、apple-touch、AppIconSet、PWA バンドルを書き込みます。即時に処理され、決定的です。 | ロゴ、ファビコン、アイコンパック、ステッカー、シンプルなアプリアイコンのマスター |
external_prompt_only | いいえ | サーバーが、使用する生成サービスの形式に合ったプロンプトと、貼り付け先の優先順位付きリストを返します。無料の選択肢が先頭に並びます:Pollinations、HF Inference、Stable Horde、Google AI Studio、Ideogram、Recraft、Midjourney、fal.ai、BFL、ChatGPT、Firefly、Krea。他の場所で生成してローカルに保存し、asset_ingest_external を呼び出します。 | どの用途にも適しています。特にイラスト、ヒーロー画像、テキストの多いロゴに最適です |
api | 任意 | サーバーがプロバイダーを直接呼び出します。Pollinations/Horde/HF ならキーなしで利用でき、有料キーにも対応しています。ルーティング → 生成 → マット処理 → ベクター化 → エクスポート → 検証 → コンテンツアドレス方式のバンドル化を行います。 | 自動化、CI、レート制限を許容できない場合 |
ホスト LLM がモードを選ぶことも、自分で選ぶこともできます。サーバーは modes_available を公開し、アシスタントが選択肢を提示できるようにします。常に無料の選択肢を優先します。
ルーター
ルーターの判断は data/routing-table.json に記載されています。機能マトリクスは data/model-registry.json にあります。すべてのルールには調査元が記載されています。
| 必要なもの | 優先 | 代替 | 使用しないもの |
|---|---|---|---|
| 透明な PNG マーク | gpt-image-1.5(background:"transparent") | Ideogram 3 Turbo(/generate-transparent)→ Recraft V4 | Imagen、Gemini Flash Image、SD 1.5 |
| 1~3 語のテキスト入りロゴ | Ideogram 3 Turbo → gpt-image-1.5 → Recraft V4 | マークに SVG 文字を合成 | Imagen、SD 1.5、flux-schnell |
| 3 語を超えるテキスト入りロゴ | 拡散サンプラーは使用しません。 マークと SVG タイポグラフィを合成します。 | — | — |
| ネイティブ SVG | Recraft V4(ブランドスタイルのパイプラインには V3) | inline_svg(ホスト LLM が SVG を作成) | その他すべて |
| 写実的なヒーロー画像 | まず無料の CLI ルートを使用:Cloudflare / NVIDIA NIM / HF | 有料キーを使う Flux Pro / gpt-image-1.5 / Gemini | 新規作成では DALL·E 3、Imagen 4 |
| 既存のマークを反復編集 | flux-kontext-pro(編集専用) | Pollinations Kontext(無料) | — |
| すべて無料で利用 | inline_svg → Cloudflare / NVIDIA NIM / HF / Horde | Pollinations → 貼り付けのみ | — |
使用しないものの列は重要です。これがあるため、prompt-to-asset は拡散サンプラーで 3 語を超えるワードマークを生成せず、透明な PNG を求めた場合に Imagen が選ばれることもありません。
Pollinations 以外の無料の選択肢
| オプション | 方法 | 最適な用途 | 注意点 |
|---|---|---|---|
| Cloudflare Workers AI | 無料の API トークン + アカウント ID | Flux-1-Schnell、SDXL、DreamShaper | 1 日 10k ニューロンの上限(約 900 回の Flux-Schnell または 5k 回の SDXL-Lightning) |
| NVIDIA NIM | 無料の API トークン、カード不要 | Flux.1-dev、Flux.2-klein、SDXL、SANA | 月 1k リクエスト。無料のコマンドライン経由で特に便利 |
| HF Inference | 無料の読み取りトークン | SDXL、SD3、Flux dev + schnell | レート制限あり、コールドスタート時のレイテンシー |
| Stable Horde | 匿名の kudos キュー | SDXL、Flux のコミュニティ GPU | 無料レーンでは数分待つ場合があります |
| Pollinations.ai | curl → HTTP GET。登録不要。 | 使い捨てのラスター画像 | 最終手段:通知のないモデル切り替え、縮小、RGB のみ |
| Google AI Studio(UI) | aistudio.google.com の無料の対話型 Web UI | Nano Banana / Nano Banana Pro | 無料 API なし — 貼り付けのみ。PNG をダウンロードし、asset_ingest_external を呼び出します |
| ローカル ComfyUI | コミュニティ製の comfyui-mcp アダプター | 完全な品質、上限なし | GPU はご自身で用意してください |
inline_svg | ホスト側の LLM がチャット内に <svg> を出力 | ロゴ、ファビコン、シンプルなアイコン | パスは ≤40 個。単純な図形のみ |
external_prompt_only | 任意の Web UI に貼り付け | その UI で生成できるもの | 手動で保存し、その後 asset_ingest_external を呼び出します |
Google Gemini / Imagen — 検証済みの料金(2026 年 4 月)
公開されている Gemini API の料金を基に、2026-04-26 に検証済みです。
- Imagen 4 の画像出力は有料 API です。 料金表では無料枠は「利用不可」とされ、Fast / Standard / Ultra の料金は画像 1 枚あたり $0.02 / $0.04 / $0.06 です。
- Nano Banana ファミリーは有料 API です。
gemini-3.1-flash-image-preview(Nano Banana 2)、gemini-3-pro-image-preview(Nano Banana Pro)、gemini-2.5-flash-image(初代 Nano Banana)は、画像出力が有料枠のみと記載されています。API 経由で使用するには、GCP プロジェクトで課金を有効にする必要があります。 - テキスト、マルチモーダル理解、埋め込みは無料です。 Gemini のテキスト出力モデルは、無料枠で入力と出力が引き続き「無料」です。
- 無料の対話型画像生成は、aistudio.google.com の AI Studio Web UI からも利用できます。 コミュニティで確認されている上限は 1 日 500~1,000 枚で、変動します。課金なしで Nano Banana 品質を利用するには、
external_prompt_only+asset_ingest_externalを使用してください。 - Gemini の一般向けアプリ(gemini.google.com)からの画像生成も無料です。Basic は 1 日 20 枚、AI Plus は 50 枚、AI Pro は 100 枚、Ultra は 1,000 枚です。
- 有料 API の標準料金(画像 1 枚あたり): Nano Banana(
gemini-2.5-flash-image)は $0.039、Nano Banana 2 Flash(gemini-3.1-flash-image-preview)は 0.5K が $0.045、1K が $0.067、2K が $0.101、4K が $0.151、Nano Banana Pro(gemini-3-pro-image-preview)は 1K~2K が $0.134、4K が $0.24(+入力画像 1 枚あたり $0.0011)、Imagen 4 Fast は $0.02、Standard は $0.04、Ultra は $0.06 です。Batch API は 50%割引です。
p2a doctorを実行するか、アシスタントにasset_doctor()を依頼すると、現在の環境で利用できるものを確認できます。
インストール
すべてのコマンドは npx 経由で動作するため、インストールは不要です。
# Zero install
npx prompt-to-asset doctor # what's live in this shell right now
npx prompt-to-asset doctor --fix # auto-install native deps (brew / cargo / scoop; never sudo)
npx prompt-to-asset pick # interactive route picker
npx prompt-to-asset init --register # scaffold brand.json + register in .cursor / .vscode / .windsurf
# Or global for daily use
npm i -g prompt-to-asset
p2a doctor
# Or per-project for CI
npm i -D prompt-to-asset
AI アシスタントに登録する
|
Claude Code
Smithery(ユニバーサル)
|
Cursor · VS Code · Windsurf · Codex · Gemini CLI この README の上部にあるインストールボタンを使用するか、 Claude Desktop
|
登録すると、アシスタントから 24 個の asset_* ツールをすべて利用できるようになります。
対応モデル
有料の直接 API: gpt-image-1、gpt-image-1.5、dall-e-3(2026-05-12 に非推奨)、imagen-3、imagen-4、gemini-3-flash-image(Nano Banana)、gemini-3-pro-image、sd-1.5、sdxl、sd3-large、playground-v3、flux-schnell、flux-dev、flux-pro、flux-2、flux-kontext-pro、ideogram-3、ideogram-3-turbo、recraft-v3、leonardo-phoenix、leonardo-diffusion-xl、fal-flux-pro、fal-flux-2、fal-sdxl。
無料枠/キー不要: pollinations-flux、pollinations-turbo、pollinations-kontext、pollinations-sd、horde-sdxl、horde-flux、hf-sdxl、hf-sd3、hf-flux-schnell、hf-flux-dev。
プロンプト貼り付け専用のモデル: midjourney-v6、midjourney-v7、firefly-3、krea-image-1。貼り付け専用のプライマリモデルに対して mode: "api" を指定して asset_generate_* を呼び出すと、API で利用可能なチェーン内の最初のモデルにソフトフォールバックし、警告が表示されます。チェーン全体が貼り付け専用の場合は、エラーではなく ExternalPromptPlan が返されます。
🛠 MCP ツール一覧(25 個のツール)
| ツール | 目的 | | ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `asset_capabilities` | モードとプロバイダーの一覧です。有料/無料枠/貼り付けのみを分類し、キー不要のルートを優先して表示します。読み取り専用です。 | | `asset_enhance_prompt` | 分類、ルーティング、書き換えを行います。モード、`svg_brief`、`paste_targets`、`routing_trace { research_sources, never_models, fallback_chain }` に加え、ブリーフが曖昧な場合は `clarifying_questions[]` を返します。読み取り専用です。 | | `asset_generate_logo` | `inline_svg`/`external_prompt_only`/`api`。`InlineSvgPlan`/`ExternalPromptPlan`/`AssetBundle` を返します。 | | `asset_generate_app_icon` | 同じ3つのモードです。`api` は iOS/Android/PWA/visionOS/Flutter 向けにすべて生成します。ダーク版と色付きバリアントを生成するには、`ios_18_appearances: true` を設定します。 | | `asset_generate_favicon` | `favicon-{16,32,48}.png`、`icon.svg`、`icon-dark.svg`、`apple-touch`、PWA 192/512/512-maskable、`` スニペット、`manifest.webmanifest` を生成します。 | | `asset_generate_og_image` | Satori と `@resvg/resvg-js` を使用して 1200×630 の画像を生成します。タイポグラフィは決定論的で、拡散モデルによる文字の崩れはありません。 | | `asset_generate_illustration` | `external_prompt_only`/`api`。バンドル参照、LoRA、または `style_id` によりブランドを固定します。優先ルートは Flux.2(参照画像は最大8点)です。 | | `asset_generate_splash_screen` | iOS `LaunchScreen-2732.png`、Android `mipmap-*/splash.png` とテーマ XML、PWA スプラッシュ画面と README を生成します。承認済みのマークを再利用するには、`existing_mark_svg` を渡します。 | | `asset_generate_hero` | マーケティング用のヒーロー画像(16:9/21:9/3:2/2:1)。`external_prompt_only`/`api`。 | | `asset_save_inline_svg` | `inline_svg` の往復処理です。SVG をブリーフに照らして検証し、バンドルを書き込みます。 | | `asset_ingest_external` | `external_prompt_only` の往復処理です。マット処理 → ベクター化 → 検証 → バンドルの順に実行します。 | | `asset_remove_background` | BiRefNet/BRIA RMBG-2.0/LayerDiffuse/差分マット/U²-Net。 | | `asset_vectorize` | `vtracer`/`potrace`/Recraft/ポスタライズによるフォールバックを実行し、その後 SVGO を使用します。 | | `asset_upscale_refine` | DAT2/Real-ESRGAN/SUPIR/img2img/Lanczos。アセットの種類を考慮します。 | | `asset_validate` | Tier-0(寸法、アルファ、チェッカーボード FFT、安全領域の bbox、ΔE2000 パレット、WCAG コントラスト、OCR Levenshtein)。`PROMPT_TO_BUNDLE_VLM_URL` を介した Tier-2 の VLM 判定。 | | `asset_brand_bundle_parse` | `brand.json`/DTCG トークン/AdCP/Markdown を解析し、正規形式の `BrandBundle` に変換します。 | | `asset_doctor` | 環境の構造化された一覧です。ネイティブ依存関係、最適なものから並べた無料枠のルート、有料キー、貼り付けのみのサーフェス、パイプライン URL、モードフラグ、「次に試すこと」を表示します。読み取り専用です。 | | `asset_models_list` | フィルター(`free`/`paid`/`paste_only`/`rgba`/`svg`)を使って、60以上のモデルレジストリを閲覧します。読み取り専用です。 | | `asset_models_inspect` | 1つのモデル ID(または別名)の全機能を表示します。強み、弱み、貼り付け先、ルーティング規則、環境の状態を確認できます。読み取り専用です。 | | `asset_export_bundle` | 1024² のマスター PNG から、iOS AppIconSet、Android アダプティブアイコン、PWA マスカブル、visionOS パララックス、Flutter ランチャーアイコン、ファビコンを生成します。オフラインで動作します。 | | `asset_sprite_sheet` | PNG/WEBP/JPG のフレームを、TexturePacker 互換の JSON アトラス付きスプライトシートにまとめます(Phaser/PixiJS/Godot/Unity)。オフラインで動作します。 | | `asset_nine_slice` | 画像と4つのピクセルガイドから、9スライス設定、CSS `border-image`、エンジン対応の数値(Unity/Godot/Phaser/PixiJS)を生成します。Android `.9.png` は任意です。 | | `asset_init_brand` | `brand.json` のひな形を作成し、アセットディレクトリが存在することを確認します。Next.js、Expo、Flutter、Xcode、Astro、Vite、Remix、Nuxt、React Native、Electron、Node を自動検出します。 | | `asset_train_brand_lora` | ユーザー所有の LoRA トレーニングエンドポイント(`PROMPT_TO_BUNDLE_MODAL_LORA_TRAIN_URL`)をラップします。パスを保護し、入力を検証します。 | ツールには `readOnlyHint` / `idempotentHint` が注釈されているため、Cursor は確認なしで自動承認します。⌨️ CLI の概要
MCP がまだ登録されていない場合に Bash 経由で LLM が使用するほか、CI でも使用します。読み取り専用コマンドはすべて --json を受け付けます。
p2a # default — MCP stdio server
p2a mcp # same, explicit
p2a export <master.png> # offline platform fan-out
p2a export <master.png> --json
p2a init # interactive brand.json + IDE registration hints
p2a init --register # + auto-write .cursor/mcp.json / .vscode/mcp.json / .windsurf/mcp.json
p2a pick # interactive model picker
p2a doctor # environment inventory
p2a doctor --json # structured output
p2a doctor --data # check data/model-registry.json ↔ data/routing-table.json consistency
p2a doctor --fix # auto-install missing native deps (brew / cargo / scoop; never sudo)
p2a models list # --free | --paid | --paste-only | --rgba | --svg
p2a models inspect <id> # full capability dump
p2a sprite-sheet <dir> # pack frames → PNG + atlas
p2a nine-slice <image> # 9-slice JSON + CSS + engine numbers + .9.png
p2a --help
🎨 ブランドバンドル — brand.json
{
"name": "Halcyon",
"palette": ["#2563eb", "#ffffff"],
"fonts": { "display": { "family": "Inter", "weights": [700, 800] } },
"style_refs": ["https://…/sample1.png", "./refs/style2.png"],
"do_not": ["drop shadows", "heavy gradients"],
"lora": "halcyon-flux-v2",
"sref_code": "--sref 1234567890",
"style_id": "rc_halcyon_01"
}
p2a init はフレームワークを検出し、アセットディレクトリを提案したうえで、このファイルを書き込みます。このファイルが存在すると、すべてのジェネレーターが自動的に読み込みます。
📱 プラットフォームのサポート
| プラットフォーム | 提供されるもの |
|---|---|
| iOS(Xcode) | 1024 ピクセルで不透明、スクワークルに対応した AppIcon.appiconset。ios_18_appearances: true による iOS 18 のダークおよびティントバリエーション。 |
| Android | アダプティブな前景と背景、Android 13 のモノクロームアイコン、すべての mipmap 密度、オプションの .9.png。 |
| PWA / web | favicon.ico(16/32/48 のマルチレゾリューション)、prefers-color-scheme のダークモードに対応した icon.svg、180×180 で不透明な apple-touch-icon.png、192/512/512-maskable、manifest.webmanifest、<head> 用の <link> スニペット。 |
| Flutter | iOS、Android アダプティブ、web、macOS、Windows を設定済みの flutter_launcher_icons.yaml。 |
| visionOS | README を含む、3 層パララックスのひな形。レイヤーの分割は人が判断します。 |
| Next.js / Astro / Vite / Remix / Nuxt / Expo / React Native / Electron | p2a init / asset_init_brand によるフレームワーク検出と、適切な出力ディレクトリ。 |
| ゲーム | sprite-sheet は TexturePacker 互換のアトラス(Phaser、PixiJS、Godot、Unity)を生成します。nine-slice はエンジンですぐに使える数値を出力します。 |
🏗 アーキテクチャ
brief (text)
↓ asset_capabilities → modes available + free/paid/paste-only bucketing
↓ asset_enhance_prompt → AssetSpec {
↓ routing_trace: { rule_id, reason, research_sources, never_models, fallback_chain },
↓ modes_available,
↓ svg_brief?, (inline_svg)
↓ paste_targets?, (external_prompt_only)
↓ rewritten_prompt, …
↓ }
↓
├─ mode: inline_svg → host LLM emits <svg>; asset_save_inline_svg writes bundle
├─ mode: external_prompt_only → user pastes into web UI; asset_ingest_external runs matte → vectorize → validate
└─ mode: api → provider(model, prompt, params) → matte → vectorize → upscale → export → validate
コンテンツアドレス指定ストレージ:assets/<hash[0:2]>/<hash>/<variant>.<ext>。MCP サーバーは同期型でステートレスです。各 AssetBundle の prompt_hash と params_hash は、ホスト型パイプラインの jobId として BullMQ / SQS / Cloudflare Queues にそのまま利用できるよう設計されています。リファレンス設計:docs/research/18-asset-pipeline-tools/18e-production-pipeline-architecture.md。
API キーはユーザーが管理します。それ以外はすべて LLM が担います。
ターミナルで行うのは、パッケージのインストールと .env へのキーの設定だけです。シークレットをチャットに通すべきではありません。それ以外の操作――doctor のチェック、モデルの調査、プラットフォームへの一括展開、ブランドのひな形作成、スプライトシート、9 スライスの設定――はすべて、自然言語で依頼するとアシスタントが呼び出す MCP ツールです。
比較
| ツール | プロンプトの強化 | 複数モデルへのルーティング | キー不要 | 開発用アセット一式 | オフラインでのプラットフォーム一括展開 |
|---|---|---|---|---|---|
| Promptati / PromptHero | シネマティックのみ | ✗ | ✗ | ✗ | ✗ |
| Looka / Brandmark / Designs.ai | ✗ | ✗ | ✗ | 一部 | ✗ |
| ChatGPT / Midjourney / Ideogram (direct) | ✗ | ✗ | ✗ | ✗ | ✗ |
| appicon.co | ✗ | ✗ | ✓ | 一部 | iOS のみ |
| flutter_launcher_icons | ✗ | ✗ | ✓ | 一部 | iOS + Android |
prompt-to-asset | ✓ | ✓(60 以上のモデル) | ✓(Pollinations / HF / Horde / SVG) | ✓ | ✓(iOS + Android + PWA + visionOS + favicon + Flutter) |
セキュリティ
このツールは最大 15 プロバイダーの API キーを扱います。譲れない原則は次のとおりです。
- キーは環境変数にのみ保存します。 ディスクへの書き込み、ログへの記録、MCP レスポンスでの返却は一切行いません。プロバイダーのエラーボディは、ホスト LLM に渡す前に
redact()(packages/mcp-server/src/security/redact.ts)を通します。 - パスへのアクセスは許可リストで制限します。
image_path/output_dir/existing_mark_svgはシンボリックリンクを解決し、プロジェクトの cwd、設定済みの出力ディレクトリ、キャッシュディレクトリ、OS の一時ディレクトリの範囲外を拒否します。P2A_ALLOWED_PATHS=/path1:/path2で許可範囲を広げられます。 - SVG は書き込む前に XSS 対策のサニタイズを行います。
<script>、<foreignObject>、on*=ハンドラー、javascript:URI、外部の<image href>/<use href>、ネットワーク経由の CSS@importはすべて拒否されます。このチェックは常に実行され、SVGO は必要ありません。 - コストの上限を設定できます。
P2A_MAX_SPEND_USD_PER_RUN=5.00を設定すると、1 回のツール呼び出しに上限を設けられます。事前見積もりが上限を超える場合、呼び出しは拒否されます。無料枠のルートは常に $0 です。 - 起動時にデータの整合性を確認します。 起動時に
assertDataIntegrityAtBoot()を実行します。ルーティングルールがレジストリに存在しないモデル ID を参照している場合、明確なエラーを表示してサーバーの起動を拒否します。p2a doctor --dataを使って CI で確認できます。 - テレメトリーはありません。ルーティング先のプロバイダーが明示的に必要としない限り、リモート呼び出しは行いません。
ポリシーの全文:SECURITY.md。
調査に基づく決定
実装されているルーティングルール、文体の切り替え、安全領域のサイズ、テキストの上限は、いずれも docs/research/ 内のファイルに裏付けられています。asset_enhance_prompt は呼び出しごとに routing_trace.research_sources 配列を返します。観点からコードへの対応表と、実装済みの内容および保留中の内容を正直に記録した一覧は、docs/RESEARCH_MAP.md にあります。
開発
git clone https://github.com/MohamedAbdallah-14/prompt-to-asset.git
cd prompt-to-asset
npm install
npm run build
npm run typecheck
npm run lint
npm test # vitest watch
npm run test:run # vitest run (CI)
npm run smoke # list tools via MCP stdio + correctness assertions
npm run sync # regenerate IDE mirrors from SSOTs
npm run verify # byte-verify mirrors match SSOTs
SSOT は skills/*/SKILL.md、rules/*.md、.claude-plugin/、data/*.json にあります。.cursor/、.claude/、.windsurf/ を直接編集しないでください。これらは scripts/sync-mirrors.sh と CI によって再生成され、バイト単位で検証されます。
- コントリビューションの流れ: CONTRIBUTING.md
- ユーザー向けの導入ガイド: GETTING_STARTED.md
- よくある問題: TROUBLESHOOTING.md
- リリースノート: CHANGELOG.md
コミュニティ
- イシューと機能リクエスト: GitHub Issues
- セキュリティに関する報告: SECURITY.md
- 行動規範: CODE_OF_CONDUCT.md
- スターの履歴:
このリポジトリのおかげで AppIconSet を手作業で作る手間が省けたなら、スターを付けていただくと、同じ課題に取り組むほかの開発者にもこのプロジェクトが届きやすくなります。
もっと読む
この設計の背景を詳しく紹介しています。
- 画像モデルを選ぶのをやめて、代わりにルーターを作った理由 — 30 種類以上の画像モデルを使い分ける利点について。
- MCP サーバーのアーキテクチャ:prompt-to-asset の内部構造 — アーキテクチャを詳しく解説します。
ライセンス
MIT © prompt-to-asset のコントリビューター。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。