mcpField
I
image-studio

image-studio

github.com/moonlight-lupin创意与媒体113122 次安装1 天前更新
代码仓库

关于 image-studio

Image Studio 是通过 fal.ai 生成或编辑图像的技能,面向需要先探索构图、再制作成品的创作者。它按任务区分新图生成、图像编辑和照片修整,并在付费调用前确认授权;输出文件保存在本地供审核,不会代为发布。

主要功能

  1. 01按三种图像任务选择流程
  2. 02先构思提示词并确认方案
  3. 03低成本原型迭代与定向编辑
  4. 04通过 Nano Banana Pro 制作成品
  5. 05将生成文件保存在本地供审核
  6. 06调用前检查授权、密钥和路径

适用场景

  1. 01探索新图像的构图与风格
  2. 02修改现有照片中的元素或风格
  3. 03修正曝光、反光和透视等问题
  4. 04为网页、社交媒体或印刷准备图像

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/moonlight-lupin/agent-skills --skill image-studio

安装后在 Claude Code 中输入/image-studio确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
examples/
example-run.md
references/
cleanup-checklist.md
fal-models.md
moss-layout.md
scripts/
falgen.py
LICENSE-APACHE-2.0
moss_compile_prompt.py
tests/
test_falgen.py
test_moss_compile_prompt.py

详细介绍

图像工作室

通过三个有计划的阶段,使用 fal.ai 将想法变成完成的图像——构思 → 低成本原型 → 制作最终成品。分阶段的目的是控制成本并掌控流程:先用快速模型低成本迭代,与用户敲定概念,然后只针对双方认可的图像使用高质量模型生成一次。

此技能会在本地生成文件,供用户审阅和使用。它绝不会将任何内容作为最终品牌素材发布、公布或发送。

适用范围和路由

仅在以下所有条件都满足时使用此技能:

  1. 任务是生成图像或编辑图像,而非布局/设计自动化、图表制作、仪表板、流程图或幻灯片/演示文稿制作。
  2. 用户接受通过 fal.ai 向外传输数据并支付 API 使用费用。
  3. 本地辅助工作流可用,或用户希望你为该工作流准备提示词/简介。

不要在以下情况使用此技能:

  • Canva 模板、PowerPoint 演示文稿、品牌演示文稿布局、数据图表、仪表板、流程图、架构图或流程图示。
  • 视频生成。
  • 机密或敏感的图像/文档处理。
  • 明确要求使用原生图像生成/编辑工具的宿主环境。

三种模式——先选择

工作流取决于你是在创建图像、修改现有图像,还是清理现有图像——它们的步骤并不相同:

  • 路径 A · 从零开始创建(没有源图像)。构图尚未确定,因此先低成本制作原型进行探索,再以高质量完成定稿——使用下方的阶段 1 → 2 → 3。
  • 路径 B · 编辑/叠加到现有图像上(在房间中添加人物、为照片重新设计风格、添加或移除元素)。源照片已经确定了构图,因此低成本原型只会带来偏差和瑕疵,无法预测最终质量——跳过原型阶段。 先构思并确认提示词(阶段 1),然后直接对原图进行高质量编辑(阶段 3)。对于注重成本的多轮迭代,请使用同系列的 fal-ai/nano-banana/edit(忠实预览),而不是 Kontext dev。“原型”是双方认可的提示词,而不是图像。
  • 路径 C · 清理/增强现有照片(将业余/手机拍摄的照片提升为专业水准——修复眩光、反射、白平衡、曝光、透视/扭曲、噪点和杂物)。机制与路径 B 相同(不制作原型;一次全面处理,直接高质量编辑原图),但目标是忠实校正,而非改变——根据 references/cleanup-checklist.md 编写提示词,并完整保留每一项真实特征。适用于任何主体——室内场景、人像、产品、食物、风景。通常按清单处理一轮即可。请参阅下方的清理部分。

阶段 1–3 对路径 A 作了完整说明;路径 B 和 C 复用阶段 1(构思/确认),然后直接进入阶段 3(高质量编辑原图),跳过阶段 2 的原型制作。

开始之前 — 出站数据传输与预检查

生成图像会将提示词发送到 fal.ai。编辑、放大或移除背景也会将你提供的图像发送到 fal.ai。fal.ai 是一家美国第三方服务,生成的图像会从其 CDN 下载。这属于向外部传输数据。

进行任何 API 调用之前:

  1. 确认任务在范围内。
  2. 在会话中首次生成之前,确认用户明确同意向 fal.ai 传输数据并使用付费 API。
  3. 在成本更高的 Stage-3 生产运行之前,再次确认用户明确同意。
  4. 检查 scripts/falgen.py 是否存在、依赖项是否已安装、是否已设置 FAL_KEY,以及工作目录是否可写。
  5. 对于编辑、放大和移除背景,只使用非机密、非敏感且用户有权通过 fal.ai 处理的图像。
  6. 使用 falgen.py 打印的确切输出路径;不要根据示例推断文件名。

绝不要将机密或敏感图像、文档交给 fal.ai 处理,例如某人的照片、机密报告、交易材料、财务文件、投资者材料、租户材料、估值材料或任何受 NDA 约束的内容。如果用户要求编辑敏感内容,请停止操作,并指出数据传输问题,而不是上传内容。

Stage 1 的头脑风暴纯粹在聊天中进行,不涉及数据传输,因此可以先起草提示词,再确认是否发送。

所需设置: 一个已开通账单功能的 fal.ai 账户,以及 FAL_KEY——可以是环境变量,也可以直接保存在工作文件夹中的文本文件里(任意文件名,例如 fal key.txt)。辅助程序会自动查找密钥——先查环境变量,再查工作文件夹中的任意小型文本文件(包含 FAL_KEY=your-key 的一行,或符合 fal 的 id:secret 格式的原始密钥),最后查找主目录(仅检查文件名包含 fal/key/api/env 的文件,且只接受明确写有 FAL_KEY=… 的行——不会从主目录读取裸令牌,因此不会误取其他服务的凭据)。因此,检查之前不要向用户索要密钥;只有在找不到密钥时才提示用户。它使用 fal-client 软件包(pip install fal-client requests)。如果找不到密钥,辅助程序会显示清晰的错误消息并退出——没有密钥就无法继续生成,但 Stage 1 仍可正常使用。(密钥文件应保留在本地;绝不要提交它。)

阶段 1 — 构思提示词(不调用 API)

好的输出始于好的提示词,因此在投入任何费用前,先花时间打磨提示词。通过询问用户,整理出一份结构化的提示词简报,涵盖:

  • 主体 — 具体说明图像中的内容。
  • 风格 / 媒介 — 照片级写实、3D 渲染、扁平插画、线稿、水彩等。
  • 构图 — 取景、焦点、布局,以及文字或留白的位置。
  • 光线 / 氛围 — 柔和、戏剧化、整洁专业、温暖、忧郁。
  • 配色 — 按照用户的要求,不包含机密细节。
  • 宽高比 — 根据用途确定:16:9 用于演示文稿 / 主视觉,1:1 或 4:5 用于社交媒体,9:16 用于限时动态,2:3 / 3:4 用于人像,或自定义横幅比例。
  • 质量修饰词和负面提示词 — 例如“细节丰富、焦点清晰”;“不要文字、不要水印、不要多余的手指”。

提供两三个风格迥异的提示词方向,而不是只给一个,让用户可以对不同选项作出反馈。将双方确认的简报保存到 _workings/(例如 _workings/prompt-brief_[slug].md),确保整个过程可审计。提示词中不要包含机密细节。

对于路径 B 和 C,这一步取代了原型制作,因此必须在首次付费调用前与用户确认提示词。主体是人物,或需要将内容叠加到真实场景上时,请注意以下两点:

  • 描述动作,而不是情绪。“坐着微笑”看起来僵硬、刻意摆拍。应明确描述真实的互动——“交谈中,一人在比划,两人相互注视,一人向朋友展示笔记本电脑屏幕”——让人物彼此互动,而不是看着镜头。
  • **保护面部。**远处或较小的面部容易变形——尽量减少人物数量、增大人物尺寸,添加“清晰自然的面部和手部”,并仅重新编辑有问题的区域,不要重新生成整张图像。

阶段 1.5 — 提示词交付规范(阶段 2 前检查)

将任何提示词方向交给阶段 2 前,请逐项核对:

  • 图像中出现的每段文字,都必须以最终文案原样写出,并使用目标语言,同时注明其作用和位置(标题 / 细节 / 脚注)——绝不能只写“标题”或使用占位符,也不能虚构名称或标志。
  • 负面提示词必须与图像相符:若文字是必需内容,就不能沿用通用示例中的“不要文字”;应明确说明哪些内容需要刻意排除。
  • 图像描述中不能包含指令式措辞;提示词只能描述可见图像。
  • 卡片 / 海报 / 设计方向必须注明设计内容铺满画面,除非需要模型展示框景。
  • 必须原样保留用户指定的主体、数量、排除项和预期可见文案。

若任何一项不符合要求,请先修正提示词方向,再进入阶段 2。

阶段 2 — 低成本制作原型并迭代

使用便宜、快速的文生图模型生成图像,让迭代成本保持低廉;然后根据用户反馈不断完善,直到他们认可原型。

首次生成 — 使用 FLUX schnell 进行文生图:

python scripts/falgen.py generate \
  --prompt "[the agreed prompt]" \
  --aspect 16:9 --num 2 \
  --run-log _workings/run-log_[slug].md \
  --out-dir _workings --name image_[slug]_v1

--num 2 会提供几个变体供用户选择。辅助工具可能会保存多个文件,例如 image_[slug]_v1_1.png 和 image_[slug]_v1_2.png;务必使用辅助工具打印的确切保存路径。

收到反馈后,选择成本更低的做法:

  • 概念或整体构图有重大变化 → 调整提示词措辞,并重新运行 generate 生成下一版本(例如 --name image_[slug]_v2)。
  • 对选定图像进行针对性调整 — 例如“让天空色调更暖”“移除左侧的建筑”或“在右上方留出更多负空间” → 使用 edit。

阶段 2 默认使用的编辑器是 FLUX Kontext [dev](fal-ai/flux-kontext/dev)。这是一个便宜的指令式编辑器,按计算秒计费;fal 不会在本地返回确切运行时长,因此辅助工具会将费用标记为按时间计费,fal 控制面板仍是费用信息的权威来源。Kontext 会保留输入图像的尺寸,只修改你指定的内容。

python scripts/falgen.py edit \
  --prompt "make the sky warmer and add negative space top-right" \
  --image _workings/[actual_saved_prototype_path].png \
  --run-log _workings/run-log_[slug].md \
  --out-dir _workings --name image_[slug]_v3

使用 Kontext 编辑时,不要传入 --aspect;Kontext 会保留源图像尺寸。Kontext 仅接受一张图像。如果需要多张参考图像,请使用支持 image_urls 的模型,例如 fal-ai/nano-banana/edit,并确认费用方面的取舍。

将每次迭代都保存到 _workings/,并递增版本号,以免丢失任何内容。持续迭代,直到用户说“就是这张”。

为何有两种做法:重新生成提示词能探索全新的构图;编辑则保留用户已经满意的构图,只修改他们指出的内容。根据反馈选择合适的做法。

阶段 3 — 生成最终成品

用户批准原型后,再次确认是否可以继续。这是主要的费用支出。

按照用户实际需要的质量和分辨率渲染已商定的概念。通常,直接以目标尺寸生成最终成品,就不需要单独放大。

确认分辨率 — 2K 还是 4K? 这会影响价格,因此要询问:

  • 2K(合理的默认选项)。适合屏幕和实体使用 — 演示文稿、社交媒体、网页、电子邮件、数字 PDF — 以及标准尺寸的打印(约 A4)。不适合近距离观看的大幅面打印,也不适合大幅裁剪后放大。
  • 4K — Nano Banana Pro 按基础价格的 2 倍计费(见 references/fal-models.md)。适合大幅面或近距离观看的打印(海报、横幅、展板),也适合需要长期复用的主视觉。不值得用于屏幕或社交媒体,因为这些用途最终都要缩小。

通过 --arg resolution=2K(或 4K)传入;辅助工具会在报告的费用中体现 4K 附加费用。

  1. 以目标分辨率进行高质量渲染 — 使用 Nano Banana Pro (fal-ai/nano-banana-pro/edit,按张图片统一收费)编辑已批准的原型,以忠实保留原型,并通过 resolution 提前指定输出尺寸(最高 4K):

    python scripts/falgen.py edit \
      --prompt "[full locked prompt]. Use the supplied prototype as the COMPOSITION reference only. Reproduce at high fidelity — keep the subject, framing, palette and mood — and CORRECT the prototype's generative flaws: render natural anatomy (fix malformed hands, fingers and limbs; no extra or missing fingers/limbs), fix distorted faces and eyes, straighten warped objects and lines, remove artefacts. Name the specific ones you see, e.g. 'the left hand has six fingers — render a natural five-fingered hand'. Crisp clean edges, photorealistic." \
      --image _workings/[actual_approved_prototype_path].png \
      --model fal-ai/nano-banana-pro/edit --aspect 16:9 \
      --arg resolution=4K \
      --run-log _workings/run-log_[slug].md \
      --out-dir . --name image_[slug]_final
    

    最终提示词必须包含完整的锁定提示词,而不只是笼统的增强指令 — 并且必须点明需要修复的缺陷。“改进/放大这张图”并不能修复缺陷:Nano Banana Pro 不会修正未被明确指出的缺陷,而要求它“保留所有内容”反而会保留缺陷。保留概念(主体、构图、调色板、氛围);修复执行效果(人体结构、扭曲的物体、瑕疵)。将原型视为构图参考,而非提示词说明的替代品。如果缺陷仍然存在,只重新编辑对应区域,不要处理整张图片。

    编辑现有照片(路径 B/C)?以原始照片为基准,而不只是原型。 廉价原型模型对细节的把握容易偏移,因此要将原始照片(真实场景的准确信息来源)以及你制作过的已批准原型一并提供给 Nano Banana Pro — edit 支持多个 --image(以 image_urls 发送)。先传入原始照片,再传入原型,并在提示词中说明各自对应的图片:

    python scripts/falgen.py edit \
      --prompt "Use the FIRST image as the true scene — keep its room, materials, lighting and layout exactly — and the SECOND as the intended change. Produce the change at high fidelity." \
      --image _workings/[original_photo].jpg \
      --image _workings/[approved_prototype].png \
      --model fal-ai/nano-banana-pro/edit --arg resolution=2K \
      --run-log _workings/run-log_[slug].md \
      --out-dir . --name image_[slug]_final
    

    或者,如果要根据锁定提示词重新生成高质量成品,请使用:

    python scripts/falgen.py generate \
      --prompt "[full locked prompt]" \
      --model fal-ai/nano-banana-pro \
      --aspect 16:9 --arg resolution=4K \
      --run-log _workings/run-log_[slug].md \
      --out-dir . --name image_[slug]_final
    
  2. 仅在需要时放大 — 单独放大是可选步骤,仅在必须超过 4K 或放大外部图片时才需要。默认放大器是 Recraft Crisp(fal-ai/recraft/upscale/crisp),这是一个能忠实保留原图、按次统一收费的放大器:

    python scripts/falgen.py upscale \
      --image _workings/[actual_image_to_upscale].png \
      --run-log _workings/run-log_[slug].md \
      --out-dir . --name image_[slug]_final
    

    如需能创造性地放大、增加细节但费用高得多的选项,可通过 --model fal-ai/clarity-upscaler 启用。

将完成的图片保存在工作文件夹根目录下,命名为 image_[slug]_final.png,或使用辅助工具输出的确切文件名。告知用户文件路径,并提醒他们这是供其审核的草稿素材,并非已发布的材料。

清理 / 增强现有照片(路径 C)

将业余拍摄、手机拍摄或消息应用中的照片处理成专业效果的图像。它沿用第 3 阶段的机制——使用 nano-banana-pro/edit 对原图进行质量编辑,不做原型图——但目标是忠实修正,而非改变,方法是按清单检查,而非反复迭代。此方法适用于任何主体——室内场景、肖像、产品、食物、风景——因此,先查看 references/cleanup-checklist.md 中的主体类型表,了解这张照片的“忠实”意味着什么。

  1. 检查 references/cleanup-checklist.md——逐行将“特征迹象”与照片对照。只保留你能指出照片中实际迹象的条目。删除照片中不存在的所有问题——包括修复并不存在的问题,因为这会主动改变一张本来正确的图像(参见清单中的“不要做什么”)。
  2. 核实——向用户列出你选中的问题及证据(“我看到左侧墙面上的垂直线条向内汇聚、窗户高光过曝,以及偏暖色调——问题 1、2、4”)。这样可以在付费调用前避免选得过多。
  3. 汇总仅包含已核实项目的完整修正提示词(清单中有模板),并指出需要保留的关键固定特征。请用户确认——这将取代原型制作。
  4. 执行一次 2K 处理(保留源图宽高比——除非要重新裁剪,否则不要传入 --aspect)。只针对具体的残留问题进行迭代,不要重做整张图。

坚守诚实原则:

  • 只修正拍摄方式,不改变主体是什么。 保留所有真实特征和布局。只清理确实是临时物品的杂物(遥控器、线缆、标签、摄影者的倒影);绝不要为了让主体更好看而移除或改动真实特征,也绝不要虚构更好的景色或饰面——那会歪曲主体。
  • 这是一次生成式重渲染,因此可能会出现细微偏差;请与原图对照检查。对于房源图片或任何注重字面准确性的场景,非生成式编辑(Lightroom/Photoshop)才是忠实度的黄金标准——这只是快速初稿,不是正式记录。

运行日志

该辅助工具始终会将机器可读的费用 / 会话日志写入 ./_falgen-costs.jsonl。较新的日志条目包含命令、模型、已脱敏的参数、输入图像引用、输出路径、尺寸、种子、费用依据和预估费用。日志中不会记录临时上传 / CDN 图像 URL。

在生成 / 编辑 / 放大 / 去背景调用时传入 --run-log _workings/run-log_[slug].md,即可追加一份人类可读的 Markdown 审计日志,其中包括:

  • 最终或中间输出路径;
  • 输入图像路径(如适用);
  • 提示词和非 URL 模型参数;
  • 模型端点;
  • 使用的种子(如有);
  • 输出尺寸;
  • 费用依据和预估费用。

这样可以审计结果,也更容易复现。如果不传入 --run-log,请使用 python scripts/falgen.py costs 和 JSONL 文件作为审计记录。

模型选择

该辅助工具默认按阶段选择合适的模型;使用 --model [endpoint-id] 可覆盖默认值。当前已验证的端点 ID、所属阶段和大致费用见 references/fal-models.md。fal.ai 的目录会有变动——如果模型 ID 报错,请查阅该参考文件和 fal.ai 模型库,不要猜测。该文件中标记为 (verify) 的内容尚未在此版本中通过实时模型库确认;请先确认,再依赖这些信息。

尝试其他模型/进行比较——但优先使用默认模型

除非结果确实不尽如人意,否则请坚持使用经过验证的默认模型。它们经过了有意选择:schnell 适合低成本原型制作,Kontext dev 适合低成本、忠实的编辑,Nano Banana Pro 则适合生成最高达 4K 的高质量成品——这是在质量、成本和可预测性之间经过测试的平衡。结果令人失望时,通常首先应该改进提示词或进行有针对性的编辑,而不是到处寻找新模型。

只有在默认模型仍然无法满足需求时——例如模型确实无法呈现指定的主体、风格或图像内必需文本——才切换模型。任何阶段都可以使用 --model;注册表列出了经过验证的替代方案。

  • 如需比较,用 2–3 个候选模型处理同一提示词/图像,并为它们指定不同的 --name(cmp_schnell、cmp_fluxdev 等),将结果并排展示,再用实时显示的各模型费用行和 costs 汇总,帮助用户权衡质量与成本。对比测试要精简;每次调用都会产生实际费用。
  • **不熟悉的模型:**便捷标志针对已知模型集进行了调整(--aspect → FLUX 使用 image_size,nano-banana 使用 aspect_ratio,Kontext 则跳过;编辑时会发送 image_urls,但 Kontext 系列只发送单个 image_url)。对于辅助工具不熟悉的端点,请查看其 API 页面,并通过 --arg key=value 或 --arg-json '{...}' 传入标志无法映射的参数。实时费用统计和下载功能适用于任何端点。

实验完成后请回到默认模型,除非替代模型在该用例中明显更好,且结果可重复。

布局控制生成——MOSS-Image(精确放置图像内文本)

对于精确位置至关重要的图像——海报、徽章、标题卡片、中英双语标牌——MOSS-Image-SFT(fal-ai/moss-image,$0.05/MP)接受 JSON 布局提示词:包含场景描述,以及带有像素边界框和准确可见文本的扁平 items。2026 年 10 月 22 日的实时验证结果:一个包含 5 个元素、尺寸为 1024² 的海报仅运行一次并产生一次费用;所有元素都位于距其边界框约 5–7 px 的范围内,且没有多余文字。同场对比中,fal-ai/nano-banana-2 的字符准确率相当(3/3 个中英双语提示词均无字形错误),价格则较高且为固定单价(1K 图像为 $0.08/image),但在严格要求“仅包含这些文本”的提示词下,它生成了两个额外文本。因此:如果追求文本准确性,Nano Banana 系列足以胜任;如果追求文本位置精度和简洁干净的效果,则选择 MOSS-Image 路线。

布局格式和编译器已在本地随附:

  1. 起草符合 references/moss-layout.md 的布局 JSON——包含 summary 和扁平 items 数组、width/height(必须为 16 的正整数倍)、像素空间中的 [x_min,y_min,x_max,y_max] 边界框,以及 text 字段中的准确可见文本。将文件保存到 _workings/。

  2. 编译——编译器会验证布局,将像素边界框转换为 MOSS 内部的 abs_centralized/yxyx 格式,并拒绝超出边界的边界框(绝不会静默裁切):

    python scripts/moss_compile_prompt.py _workings/[slug]_layout.json \
      --output _workings/[slug]_layout_prompt.txt
    
  3. 生成——使用与草稿宽高相同的 image_size。对于已编译的布局提示词,必须设置 enable_prompt_expansion=false——fal 的提示词规划器(默认开启)会改写已有结构的提示词,导致位置错乱:

    python scripts/falgen.py generate \
      --prompt "$(cat _workings/[slug]_layout_prompt.txt)" \
      --model fal-ai/moss-image \
      --arg 'image_size={"width":[W],"height":[H]}' \
      --arg enable_prompt_expansion=false \
      --run-log _workings/run-log_[slug].md \
      --out-dir . --name image_[slug]_final
    

注意:MOSS 仅支持 T2I,不提供编辑端点;后续编辑仍会使用 Nano Banana 系列。使用 moss-image 生成时,不要传入 --aspect——辅助工具会向其不认识的模型发送 aspect_ratio,这会与自定义 image_size 冲突。[W]×[H] 必须与草稿的宽×高一致,且两者都必须是 16 的倍数。设计海报时,建议采用铺满画面的措辞(“海报铺满整个画面”),否则模型可能会把设计框成一张样机卡片。它的成本(1024² 时约 $0.05)也使其适合用作第 2 阶段原型,尤其是在概念本身就是一种布局时。

辅助脚本 — scripts/falgen.py

一个脚本,包含五个子命令。它从环境中读取 FAL_KEY,自动将任何本地 --image 上传到 fal 存储,通过 fal_client.subscribe 调用模型,将生成的图像下载到本地,并输出保存路径及估算费用。运行 python scripts/falgen.py -h 或 python scripts/falgen.py [subcommand] -h 查看所有选项。

主要标志:

  • generate — --prompt(必需)、--model、--aspect、--num、--seed、--out-dir、--name。
  • edit — --prompt(必需)、--image(可重复使用)、--model、--aspect、--num、--seed、--out-dir、--name。
  • upscale — --image(必需)、--model、--factor、--out-dir、--name。
  • removebg — --image(必需)、--model、--out-dir、--name。将主体抠出并保存为透明背景的 PNG。这是用于合成到演示文稿/社交媒体图片中的实用工具,不属于主要的生成→编辑→放大流程。
  • costs — 输出本次会话的累计费用;使用 --reset 清零。
  • recommend — 显示各阶段推荐的默认模型及实时价格。只读,不产生费用。
  • search "term" — 搜索 fal 实时目录(--category、--limit);每条结果均显示其实时价格、类别和许可证。只读。查找默认选项未涵盖的模型后,仍应优先使用默认模型,除非默认模型确实无法满足需求。
  • --arg key=value — 可用于任何生成/编辑/放大/抠图子命令的备用参数,用于传递标志未涵盖的原始模型参数。值可以是 JSON 标量、数组或对象,例如 --arg image_size='{"width":1200,"height":800}'。
  • --arg-json '{...}' — 将多个原始模型参数作为一个 JSON 对象传递,适用于嵌套选项。
  • --run-log path.md — 追加一份便于审计的可读 Markdown 运行日志。
  • --verbose — 实时输出模型自身的进度日志。默认关闭。

如果调用因 fal 余额不足而失败,辅助脚本会检测到这一情况,并提供清晰的说明,而不是输出原始堆栈跟踪。

端到端运行示例见 examples/example-run.md。

费用与余额

生成响应不包含费用字段,因此每次运行时,falgen.py 都会查询 fal 的实时定价 API,并尽可能根据实际输出分辨率或输出数量计算费用,随后输出该步骤的费用和本次会话的累计费用(追加到 ./_falgen-costs.jsonl)。运行:

python scripts/falgen.py costs

在一系列操作结束后输出完整明细,并告知用户总费用。请留意 references/fal-models.md 中的计费单位:

  • 按图像计费的模型按每张输出收取固定费用。
  • 按百万像素计费的模型在分辨率更高时费用也更高。
  • 按计算秒数计费的模型费用随运行时长变化。fal 不会返回运行时长,因此辅助脚本会将该步骤标记为按时间计费,而不会猜测具体费用。

只有设置了 fal Admin API 密钥 FAL_ADMIN_KEY 时才会显示余额;普通的 FAL_KEY 无法读取账单信息,并且可能会收到 HTTP 403。未设置 Admin 密钥时,将跳过余额查询并显示一行提示。请告知用户每个步骤的预估费用和本次会话的总费用;只有用户添加 Admin 密钥后,才提供实时余额。

原则

  • 草稿,而非建议 — 输出是供具备资质的人员审核的草稿,不是可直接发布的成品。
  • 绝不捏造 — 不要编造费用、模型 ID、功能或输出路径。如有不确定之处,请如实说明。
  • 关键环节保持确定性 — 费用跟踪、文件命名和模型路由都是确定性的;LLM 仅负责创意判断。
  • 诚实并准确表达把握程度 — 标明不确定性,不要夸大质量,并展示费用。
  • 保持工作区整洁 — 交付文件放在工作文件夹根目录;中间文件放在 _workings/;已被替代的版本放在 _superseded/。

数据处理

发送到 fal.ai 的提示词和任何参考图像都会脱离用户的控制,交由第三方工具处理,因此请遵守 PII/数据外传规则:不要向 fal.ai 发送机密或敏感内容。请将真实的源文件和输出文件保留在本地计算机上。如有疑问,请勿外传;先询问用户。

注意事项

  1. 不要跳过 Stage 1——精心编写提示词可以避免之后进行代价高昂的反复迭代。
  2. 始终在进入 Stage 3 前确认——主要开销通常发生在这一阶段。
  3. 使用实际保存路径——示例只是占位符;请使用 falgen.py 打印的路径。
  4. Kontext 会忽略宽高比——它会保留输入图像的尺寸。编辑 Kontext 图像时,不要传入 --aspect。
  5. Kontext 只接受一张图像并生成一个输出——如果向 Kontext 模型传入多张图像或设置 --num > 1,辅助脚本现在会提前报错。
  6. 谨慎使用 JSON 参数——为 shell 正确引用嵌套 JSON,或使用 --arg-json。
  7. Clarity upscaler 价格高昂——除非你明确需要增强创意细节,否则请使用 Recraft Crisp。
  8. 背景移除会返回透明 PNG——用于消息应用时,请将其转换为白色背景的 JPG。
  9. fal 余额查询需要管理员密钥——仅设置 FAL_KEY 不足以显示账单余额。

验证清单

  • 范围仅限图像生成/编辑,不包括布局、图表、示意图或演示文稿制作。
  • 首次调用 API 前,用户已确认允许向 fal.ai 外传数据并使用付费 API。
  • 提示词概要已保存到 _workings/。
  • 每次迭代都已使用递增版本号或辅助脚本生成的确切文件名保存。
  • 使用的是实际打印的输出路径,而不是推测的路径。
  • 用户已在进入 Stage 3 前确认继续。
  • 最终提示词包含完整的锁定提示词,而不只是通用的增强说明。
  • 最终图像已保存到工作文件夹的根目录,而不只是 _workings/ 中。
  • 已使用 --run-log _workings/run-log_[slug].md,或已检查 JSONL 费用/会话日志。
  • 已通过 falgen.py costs 打印费用汇总。
  • 已告知用户文件路径,并提醒这是草稿。

评论

支持 Markdown