mcpField
P
prompt-to-asset

prompt-to-asset

本地服务
github.com/MohamedAbdallah-14媒体与设计2414 周前更新

关于 prompt-to-asset

prompt-to-asset 是一个 MCP 服务与命令行工具,用于生成应用图标、favicon、OG 图片、Logo 等素材,并按免费优先的顺序路由到多个图像模型。面向需要零成本或低成本生成素材的开发者。

主要功能

  1. 01免费优先的多模型路由
  2. 02inline_svg、外部粘贴与 API 三种模式
  3. 03按平台导出 iOS、Android、PWA 与 favicon 套件
  4. 04离线导出,无需网络请求
  5. 05生成后进行尺寸、透明度与对比度校验

适用场景

  1. 01为新应用生成透明背景 Logo 与 favicon
  2. 02将一张主图批量导出为各平台应用图标
  3. 03在没有图像模型 API 密钥的情况下生成素材

MCP 相关

该服务通过 MCP 工具(如 asset_doctor、asset_enhance_prompt、asset_export_bundle)向 AI 助手提供素材生成与导出能力。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"mohamedabdallah-14-prompt-to-asset": {
"command": "npx",
"args": [
"-y",
"prompt-to-asset"
]
}
}
}
启动命令npx -y prompt-to-asset

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmprompt-to-asset0.4.2

工具

24

收录的工具列表 · 更新于 2 周前

参数类型必填说明
asset_typeenum否将按资源类型列出的模式范围缩小为一种类型。logo | app_icon | favicon | og_image | splash_screen | illustration | icon_pack | hero | sticker | transparent_mark

详细介绍

提示词生成资源演示 — 一条提示词在 20 秒内生成完整的 favicon 套件。兼容 Claude Code、Cursor、Windsurf、VS Code。无需 API 密钥。

prompt‑to‑asset

面向开发者的免费图像生成工具,可通过命令行或 AI 助手使用。
只需一段简短描述,即可生成应用图标、favicons、OG 图片、徽标、启动屏幕、SVG 和平台套件,并优先采用最佳零成本方案。
专为 Cloudflare Workers AI、NVIDIA NIM、HF Inference、Stable Horde、Pollinations、免费试用和离线 SVG 打造。

npm 下载量 CI 许可证 node MCP Glama 评分 无需密钥 星标

在 Cursor 中安装 在 VS Code 中安装 Claude Desktop Smithery

快速入门 · 免费方案 · 用法 · 模式 · 免费 API · MCP 工具 · 完整指南 · 更新日志

30 秒快速开始

任选一种,运行即可。推荐方案排在最前。 运行环境:Node ≥ 20.11(推荐 24)。macOS、Linux、Windows(使用 --fix 原生依赖时需用 WSL2)。

### 🔵 AI 助手 · 推荐

点击上方的安装按钮,然后将以下任一内容粘贴到聊天中:

• Make a transparent logo for Forge, a dev-tools brand. Flat vector, warm orange.
• Make a favicon for my app, dark-mode aware.
• Fan this master.png out to iOS + Android + PWA.
• Ingest this screenshot as a mark, vectorize, export everything.

适用于 Cursor、Claude Code、VS Code、Windsurf、Codex、Gemini CLI。无需在终端中输入任何内容。

🟢 无需密钥,无需安装

运行一个 curl,再运行一个 npx。离线分发到所有平台。

curl -o logo.png \
  "https://image.pollinations.ai/prompt/\
minimal+flat+vector+logo\
?model=flux&width=1024&nologo=true"

npx prompt-to-asset export logo.png \
  --platforms ios,android,pwa,favicon

输出:iOS AppIconSet、Android 自适应图标、PWA、favicon 套件、visionOS 脚手架。

🟣 CLI · 免费 API 密钥

CLI 体验最佳:优先使用免费令牌,付费密钥可选。

npm i -g prompt-to-asset
p2a doctor          # check env
p2a doctor --fix    # auto-install deps
p2a pick            # interactive

从 Cloudflare Workers AI、NVIDIA NIM、HF Inference、Stable Horde 和免费试用开始。付费提供商仍可作为可选回退方案。

免费方案一览

你不需要付费 API 密钥。以下按推荐程度从高到低排列:

方案可获得的内容注册要求
通过 AI 助手使用 inline_svgLogo、favicon、图标包——即时生成无
Cloudflare Workers AIFlux-1-Schnell + SDXL,每天 10k neurons免费令牌 + 账户 ID
NVIDIA NIMFlux.1-dev、Flux.2-klein、SDXL、SANA免费令牌,无需银行卡
HF InferenceSDXL、SD3、Flux dev/schnell免费只读令牌
Stable Horde通过社区 GPU 使用 SDXL、Flux匿名排队
Pollinations(HTTP GET)最后备用的栅格图像,RGB无
Google AI Studio(仅粘贴的 UI)Nano Banana / Nano Banana ProGoogle 账户

详情和配额:Pollinations 之外的免费方案。运行 p2a doctor,或让助手调用 asset_doctor(),查看当前可用的服务。

提示

遇到问题?点击上方的 Install in Cursor 或 Install in VS Code,重启编辑器,然后说:“为我的应用制作一个支持深色模式的 favicon。”


亮点

  • 免费优先的 CLI 生成 — p2a doctor、p2a pick 和 MCP 工具会优先选择免费的 API 方案和模型,让开发者无需启用计费,就能在 CLI 中生成内容。
  • 三种执行模式 — inline_svg(由宿主大模型编写 SVG)、external_prompt_only(粘贴到任意网页 UI)、api(服务调用免费或付费提供商)。选择适合你的模式。三种模式都可以零成本完成。
  • 60+ 个模型,免费优先路由 — Cloudflare Workers AI、NVIDIA NIM、HF、Horde、Pollinations、免费试用,以及可选的 OpenAI / Ideogram / Recraft / BFL / Gemini 付费服务。每条规则都注明了研究来源。
  • 拒绝错误操作 — 查看 Never 列。超过 3 个词的字标不通过扩散采样器生成。Imagen 不生成透明 PNG。Flux 不使用 negative_prompt。
  • 离线分发到各个平台 — 一个 1024² 母版 → iOS AppIconSet、Android 自适应 + 单色图标、PWA 192/512/512-maskable、favicon 套件、visionOS 视差效果、Flutter 启动图标。无需联网。
  • 发布前验证 — 对每项输出进行 tier-0 检查:尺寸、Alpha 通道是否存在、棋盘格 FFT、安全区 bbox、ΔE2000 调色板偏差、WCAG 对比度、字标 OCR Levenshtein 距离。
  • 精灵图集 + 9-slice — 将 PNG 帧打包成兼容 TexturePacker 的图集(Phaser、PixiJS、Godot、Unity);输出 9-slice 数值 + CSS border-image + Android .9.png。

目录

点击展开

用法

只需和助手对话。以下是新聊天中的示例:

为一家名为 Forge 的开发者工具公司制作一个透明 Logo。扁平矢量风格,采用暖橙色与中性色的双色搭配。

幕后流程:

  1. asset_doctor() — 检查哪些模式和提供方可用。
  2. 如果不存在 brand.json,则调用 asset_init_brand({ app_name: "Forge", palette: ["#EA580C", "#F5F5F4"] })。
  3. asset_enhance_prompt({ brief }) 返回一个 AssetSpec:包含分类、改写后的提示词、modes_available[]、可选的 svg_brief、可选的 paste_targets,以及指向支持该决策的研究文件的 routing_trace(另含 never_models — 说明为何拒绝 Imagen 或 DALL·E)。
  4. 助手会向你提供 inline_svg / external_prompt_only / api 选项。
  5. 如果选择 inline_svg:它会直接编写 <svg>,并调用 asset_save_inline_svg → 将 master.svg、favicon.ico、apple-touch、AppIconSet、PWA 包写入磁盘。
  6. 如果选择 external_prompt_only:助手会显示优化后的提示词和最佳粘贴目标(优先免费)。生成并保存后,再说 “导入此文件” → asset_ingest_external。
  7. 如果选择 api:助手会调用路由选定的提供方。服务端会处理背景去色、矢量化、导出和验证。
  8. 后续操作:“也为 iOS 和 Android 各生成一套” → 使用已保存的 master 调用 asset_export_bundle。

无需输入任何 CLI 命令。CLI 仍是 CI、Shell 脚本和非 MCP 环境的一等选择 — 两种入口都使用同一核心。


为何要做这个项目

有两个事实决定了这里的一切。

制作可用于生产环境的软件素材,关键在于路由和后处理,而不是提示词工程。

Imagen 3/4 和 Gemini Flash Image 无法生成真正的 RGBA PNG — 它们的 VAE 仅支持 RGB,因此要求透明背景时,灰白棋盘格会被渲染成像素。SDXL 拼写超过约 8 个字符就会出错。只有 Recraft 能输出原生 SVG。Flux 遇到 negative_prompt 会报错。这些问题在模型界面中都看不出来,却都会悄无声息地破坏“一次提示词生成素材”的工具。

你可能没有图像模型 API 密钥。这个插件照样能用。

三种模式都可以零成本完成。


三种模式

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)。宿主大模型以内联方式生成 <svg>…</svg>,然后由 asset_save_inline_svg 写入主文件 + favicon.ico + apple-touch + AppIconSet + PWA 包。即时生成。结果确定。Logo、favicon、图标包、贴纸、简单的应用图标主文件
external_prompt_only否服务端返回符合目标方言的提示词,以及按优先级排列的粘贴目标列表,免费选项优先:Pollinations、HF Inference、Stable Horde、Google AI Studio、Ideogram、Recraft、Midjourney、fal.ai、BFL、ChatGPT、Firefly、Krea。在其他平台生成,保存到本地,再调用 asset_ingest_external。任何内容——尤其适合插画、主视觉、含大量文字的 Logo
api可选服务端直接调用提供方。可通过 Pollinations / Horde / HF 无需密钥使用,也可使用付费密钥。路由 → 生成 → 去除底色 → 矢量化 → 导出 → 验证 → 内容寻址打包。自动化、CI、无法接受速率限制的场景

宿主大模型会选择模式,也可以由你来选择。服务端会提供 modes_available,以便助手向你展示可选模式。始终优先选择免费方式。


路由器

路由决策位于 data/routing-table.json 中。能力矩阵位于 data/model-registry.json 中。每条规则都注明了研究来源。

需求首选备用禁用
透明 PNG 标志gpt-image-1.5,并设置 background:"transparent"Ideogram 3 Turbo(/generate-transparent)→ Recraft V4Imagen、Gemini Flash Image、SD 1.5
含 1–3 个词的 LogoIdeogram 3 Turbo → gpt-image-1.5 → Recraft V4将 SVG 字体与标志合成Imagen、SD 1.5、flux-schnell
含 >3 个词的 Logo**绝不使用扩散采样器。**将标志与 SVG 字体排版合成。——
原生 SVGRecraft V4(品牌风格工作流使用 V3)inline_svg(由宿主 LLM 编写 SVG)其他所有工具
照片级真实感主视觉优先使用免费命令行路线: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 / HordePollinations → 仅粘贴—

禁用一栏非常重要。这就是为什么 prompt-to-asset 会拒绝使用任何扩散采样器渲染超过 3 个词的文字标志,也解释了为什么请求透明 PNG 时不会使用 Imagen。

Pollinations 之外的免费途径

选项方式最适合局限
Cloudflare Workers AI免费 API 令牌 + account IDFlux-1-Schnell、SDXL、DreamShaper每天上限 10k neurons(约可生成 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.aicurl → HTTP GET。无需注册。一次性光栅图最后的选择:模型会静默切换、缩小尺寸,且仅支持 RGB
Google AI Studio (UI)在 aistudio.google.com 免费使用交互式网页界面Nano Banana / Nano Banana Pro无免费 API——只能粘贴;下载 PNG,再调用 asset_ingest_external
本地 ComfyUI社区 comfyui-mcp 适配器完整保真度,无上限需要自行准备 GPU
inline_svg托管 LLM 在聊天中生成 <svg>徽标、favicon、简单图标≤40 条路径;几何形状需简单
external_prompt_only粘贴到任意网页界面由该界面决定需手动保存,然后调用 asset_ingest_external
Google Gemini / Imagen — 已核实的定价(2026 年 4 月)

已于 2026-04-26 根据公开的 Gemini API 定价核实:

  • Imagen 4 图像输出属于付费 API。 定价表将免费层列为“不可用”,Fast / Standard / Ultra 的价格分别为每张图像 $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 文本输出模型在免费层的输入和输出仍为 Free of charge。
  • 交互式图像生成也可通过 AI Studio 网页界面免费使用:aistudio.google.com。社区观察到的限额为每天 500–1,000 张图像,具体动态变化。若想获得 Nano Banana 画质且无需付费,可使用 external_prompt_only + asset_ingest_external。
  • 通过 Gemini 消费者应用免费生成图像:gemini.google.com:Basic 每天 20 张,AI Plus 每天 50 张,AI Pro 每天 100 张,Ultra 每天 1,000 张。
  • 付费 API 定价(每张图像,标准): Nano Banana(gemini-2.5-flash-image)$0.039;Nano Banana 2 Flash(gemini-3.1-flash-image-preview)$0.045/0.5K、$0.067/1K、$0.101/2K、$0.151/4K;Nano Banana Pro(gemini-3-pro-image-preview)$0.134/1K-2K、$0.24/4K(另加每张输入图像 $0.0011);Imagen 4 Fast $0.02、Standard $0.04、Ultra $0.06。批处理 API 可享 5 折优惠。

运行 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

claude mcp add prompt-to-asset -- p2a

Smithery(通用)

npx -y @smithery/cli install prompt-to-asset --client claude

Cursor · VS Code · Windsurf · Codex · Gemini CLI

使用本 README 顶部的安装按钮,或参阅 docs/install.md,查看每个 IDE 对应的准确配置片段。

Claude Desktop

下载 .mcpb bundle → 双击 → 重启。

注册后,你的助手即可使用完整的 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。如果将 asset_generate_* 与 mode: "api" 搭配用于仅支持粘贴的主模型,它会自动回退到链中第一个可通过 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` | 同样支持三种模式。`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(尺寸、Alpha、棋盘格 FFT、安全区边界框、ΔE2000 调色板、WCAG 对比度、OCR Levenshtein)。Tier-2 通过 `PROMPT_TO_BUNDLE_VLM_URL` 使用 VLM 作为评审。 | | `asset_brand_bundle_parse` | 将 `brand.json` / DTCG 令牌 / AdCP / Markdown 解析为规范的 `BrandBundle`。 | | `asset_doctor` | 结构化环境清单:原生依赖、按优先级从高到低排列的免费层级路线、付费密钥、仅粘贴的界面、流水线 URL、模式标志、“下一步尝试什么”。只读。 | | `asset_models_list` | 浏览包含 60 多个模型的注册表,并按 `free` / `paid` / `paste_only` / `rgba` / `svg` 筛选。只读。 | | `asset_models_inspect` | 查看单个模型 ID(或 aka 别名)的完整能力信息,包括优势、弱点、粘贴目标、路由规则和环境状态。只读。 | | `asset_export_bundle` | 将 1024² 主 PNG 分发为 iOS AppIconSet + Android 自适应图标 + PWA maskable + visionOS 视差图标 + Flutter 启动器图标 + favicon。离线。 | | `asset_sprite_sheet` | 将 PNG/WEBP/JPG 帧打包为精灵表 + 兼容 TexturePacker 的 JSON 图集(Phaser / PixiJS / Godot / Unity)。离线。 | | `asset_nine_slice` | 根据图像和四条像素参考线生成九宫格配置 + 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 会自动批准,无需提示。

⌨️ 命令行界面

LLM 会在 MCP 尚未注册时通过 Bash 使用此界面,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)AppIcon.appiconset,包含不透明、适配圆角超椭圆的 1024 图标。通过 ios_18_appearances: true 提供 iOS 18 深色和色调变体。
Android自适应前景和背景、Android 13 单色图标、所有 mipmap 密度,以及可选的 .9.png。
PWA / Webfavicon.ico(16/32/48 多分辨率)、支持 prefers-color-scheme 深色模式的 icon.svg、不透明的 180×180 apple-touch-icon.png、192/512/512-maskable、manifest.webmanifest,以及供你的 <head> 使用的 <link> 代码片段。
Flutter预先填充的 flutter_launcher_icons.yaml,配置 iOS、Android 自适应图标、Web、macOS 和 Windows。
visionOS带 README 的三层视差脚手架。图层拆分由人工决定。
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 都旨在直接用作托管流水线的 BullMQ / SQS / Cloudflare Queues jobId。参考设计:docs/research/18-asset-pipeline-tools/18e-production-pipeline-architecture.md。

### 设计理念

API 密钥由你掌控。其他一切都交给大模型。

终端中唯一要做的事,就是安装软件包并将密钥写入 .env。密钥不应通过聊天传递。其他所有操作——诊断检查、模型检查、多平台分发、品牌素材搭建、精灵图集、九宫格配置——都是你用自然语言提出请求后,由助手调用的 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 响应中。服务商的错误正文在传递给宿主大模型前,会先经过 redact()(packages/mcp-server/src/security/redact.ts)处理。
  • 路径访问采用允许列表。image_path / output_dir / existing_mark_svg 会解析符号链接,并拒绝任何超出项目当前工作目录、已配置输出目录、缓存目录和操作系统临时目录的路径。可通过 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,即可为单次工具调用设置费用上限。若预估费用超出上限,调用前检查会拒绝执行。免费层级路由的费用始终为 $0。
  • **启动时确保数据完整性。**启动时会运行 assertDataIntegrityAtBoot()。如果某条路由规则指向注册表中不存在的模型 ID,服务将拒绝启动并给出明确错误。可在 CI 中通过 p2a doctor --data 进行检查。
  • 无遥测。除非路由到的服务商明确要求,否则不会进行远程调用。

完整政策: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

单一事实来源位于 skills/*/SKILL.md、rules/*.md、.claude-plugin/ 和 data/*.json。不要直接编辑 .cursor/、.claude/、.windsurf/——它们会由 scripts/sync-mirrors.sh 重新生成,且 CI 会逐字节验证。


社区

Star 历史

如果这个仓库帮你省去了手工制作另一个 AppIconSet 的麻烦,点个 Star 就能帮助它触达其他面临同样难题的开发者。


延伸阅读

深入了解设计背后的思考:

文章也发布在 Medium 和 dev.to。


许可证

MIT © prompt-to-asset 贡献者。

基于涵盖 34 个类别的研究汇编构建。请参阅 SYNTHESIS.md 和 RESEARCH_MAP.md。

⬆ 返回顶部

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。