关于 prompt-to-asset
prompt-to-asset 是一个 MCP 服务与命令行工具,用于生成应用图标、favicon、OG 图片、Logo 等素材,并按免费优先的顺序路由到多个图像模型。面向需要零成本或低成本生成素材的开发者。
主要功能
- 01免费优先的多模型路由
- 02inline_svg、外部粘贴与 API 三种模式
- 03按平台导出 iOS、Android、PWA 与 favicon 套件
- 04离线导出,无需网络请求
- 05生成后进行尺寸、透明度与对比度校验
适用场景
- 01为新应用生成透明背景 Logo 与 favicon
- 02将一张主图批量导出为各平台应用图标
- 03在没有图像模型 API 密钥的情况下生成素材
MCP 相关
该服务通过 MCP 工具(如 asset_doctor、asset_enhance_prompt、asset_export_bundle)向 AI 助手提供素材生成与导出能力。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
24收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| asset_type | enum | 否 | 将按资源类型列出的模式范围缩小为一种类型。logo | app_icon | favicon | og_image | splash_screen | illustration | icon_pack | hero | sticker | transparent_mark |
详细介绍
prompt‑to‑asset
面向开发者的免费图像生成工具,可通过命令行或 AI 助手使用。
只需一段简短描述,即可生成应用图标、favicons、OG 图片、徽标、启动屏幕、SVG 和平台套件,并优先采用最佳零成本方案。
专为 Cloudflare Workers AI、NVIDIA NIM、HF Inference、Stable Horde、Pollinations、免费试用和离线 SVG 打造。
30 秒快速开始
任选一种,运行即可。推荐方案排在最前。 运行环境:Node ≥ 20.11(推荐 24)。macOS、Linux、Windows(使用 --fix 原生依赖时需用 WSL2)。
|
### 🔵 AI 助手 · 推荐
点击上方的安装按钮,然后将以下任一内容粘贴到聊天中:
适用于 Cursor、Claude Code、VS Code、Windsurf、Codex、Gemini CLI。无需在终端中输入任何内容。 |
🟢 无需密钥,无需安装运行一个
输出:iOS AppIconSet、Android 自适应图标、PWA、favicon 套件、visionOS 脚手架。 |
🟣 CLI · 免费 API 密钥CLI 体验最佳:优先使用免费令牌,付费密钥可选。
从 Cloudflare Workers AI、NVIDIA NIM、HF Inference、Stable Horde 和免费试用开始。付费提供商仍可作为可选回退方案。 |
免费方案一览
你不需要付费 API 密钥。以下按推荐程度从高到低排列:
| 方案 | 可获得的内容 | 注册要求 |
|---|---|---|
通过 AI 助手使用 inline_svg | Logo、favicon、图标包——即时生成 | 无 |
| Cloudflare Workers AI | Flux-1-Schnell + SDXL,每天 10k neurons | 免费令牌 + 账户 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,重启编辑器,然后说:“为我的应用制作一个支持深色模式的 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。扁平矢量风格,采用暖橙色与中性色的双色搭配。
幕后流程:
asset_doctor()— 检查哪些模式和提供方可用。- 如果不存在
brand.json,则调用asset_init_brand({ app_name: "Forge", palette: ["#EA580C", "#F5F5F4"] })。 asset_enhance_prompt({ brief })返回一个AssetSpec:包含分类、改写后的提示词、modes_available[]、可选的svg_brief、可选的paste_targets,以及指向支持该决策的研究文件的routing_trace(另含never_models— 说明为何拒绝 Imagen 或 DALL·E)。- 助手会向你提供
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 各生成一套” → 使用已保存的 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 V4 | Imagen、Gemini Flash Image、SD 1.5 |
| 含 1–3 个词的 Logo | Ideogram 3 Turbo → gpt-image-1.5 → Recraft V4 | 将 SVG 字体与标志合成 | Imagen、SD 1.5、flux-schnell |
| 含 >3 个词的 Logo | **绝不使用扩散采样器。**将标志与 SVG 字体排版合成。 | — | — |
| 原生 SVG | Recraft 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 / Horde | Pollinations → 仅粘贴 | — |
禁用一栏非常重要。这就是为什么 prompt-to-asset 会拒绝使用任何扩散采样器渲染超过 3 个词的文字标志,也解释了为什么请求透明 PNG 时不会使用 Imagen。
Pollinations 之外的免费途径
| 选项 | 方式 | 最适合 | 局限 |
|---|---|---|---|
| Cloudflare Workers AI | 免费 API 令牌 + account ID | Flux-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.ai | curl → 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
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。如果将 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 / 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 | 预先填充的 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 会逐字节验证。
- 贡献流程:CONTRIBUTING.md
- 用户入门指南:GETTING_STARTED.md
- 常见问题:TROUBLESHOOTING.md
- 发行说明:CHANGELOG.md
社区
- 问题和功能请求:GitHub Issues
- 安全问题披露:SECURITY.md
- 行为准则:CODE_OF_CONDUCT.md
- Star 历史:
如果这个仓库帮你省去了手工制作另一个 AppIconSet 的麻烦,点个 Star 就能帮助它触达其他面临同样难题的开发者。
延伸阅读
深入了解设计背后的思考:
- 我为何不再挑选图像模型,而是改为构建路由器 — 介绍如何在 30 多种图像模型之间进行路由。
- MCP 服务架构:prompt-to-asset 的内部构造 — 深入解析架构。
许可证
MIT © prompt-to-asset 贡献者。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。