Mac · 全程在你自己的电脑上 · CSV(含图片地址)进,CSV(多一列 alt_text)出 · 带命令行

AltForge:为整份商品目录写 alt 文本

AltForge 只需要一份 CSV:每行一件商品,图片列写着图片地址(链接或文件名),其余列是品名、品牌、品类、颜色、关键词。它在你的 Mac 上逐张读图,然后把同一份表格还给你——原有每一列原封不动,只多出一列写好的 alt_text。模型在本机运行:图片和商品名都不上传,也不按张计费。

US$6.99 一次买断 · 含免费版

版本 1.0.0 · macOS 14 Sonoma 或更新,Apple Silicon · 下载 226 MB,模型已内置
一次买断 · 包含 1.x 全部更新 · 14 天全额退款

AltForge 打开一份商品目录:左侧是表格行和商品图片,中间是选中商品的 alt 文本,右侧是包含品牌、品名和图片描述片段的模板

一份 CSV 进去,同一份 CSV 出来

输入就是你手上已有的导出表,输出就是那张表多了一列。不重建、不丢行,图片列也绝不会被改写。

Before(处理前) — 你导出的表:一行一件商品,image 列放着图片链接,其余是店铺本来就在用的列。
CSV 表格,列为 sku、title、brand、category、color、image、keywords;image 列是四张商品图的链接
After(处理后) — 同样的四行,原有每一列不变,只多出一列根据图片写出的 alt_text。
同样的四行数据新增 alt_text 列,例如「SwordFish Atlantic Linen Shirt — A blue shirt is laid out on a white background」

工作方式

  1. 只选 CSV,这一个输入就够了。 Shopify、WooCommerce、Etsy、ERP 或者电子表格导出的 CSV;图片列可以写链接、路径或文件名。图片默认在 CSV 所在文件夹查找,所以「表格和图片放一起」是常规做法;图片在别处,打开后还能另选文件夹。App 自带一份四件商品的示例(图片列是真实链接,图片随 App 安装):在起始页点「选择示例」即可。
  2. 先看它认对了没有。 表头会被读进来,列按名字识别:image、sku、title、brand、category、color、keywords,中文列名同样认。认错的在「设置 ▸ 列」里一个下拉框就能改;在生成第一句之前,就能看到有多少行找不到图片。
  3. 让它看。 Florence-2 在这台 Mac 上逐张读图,Apple Silicon 上每张约一秒。它描述的是画面里有什么——物件、颜色、材质、背景——而不是文件名,它根本看不到文件名。
  4. 把表格拿回去。 导出时原有每一列都原样保留,只多出一列 alt 文本。找不到图片的行会连同原因写进第二份 CSV,不会有行悄悄消失。
AltForge 的起始窗口:左边是「为整份目录写 alt 文本」,右边是只收一份 CSV 的面板,带「选择 CSV」和「选择示例」两个按钮

用模板统一口吻

Florence-2 只看到了图片;你的表格知道品牌、品名、颜色和搜索词——所以文案由两者拼成。通用预设覆盖常见需求,另有三个按导出平台的口径排列,模板那一行也可以手改:

可用的占位符有 {title}、{brand}、{category}、{color}、{keywords}、{caption}、{sku}、{filename} 和 {index}。某一行的某列为空时,它会连同旁边的分隔符一起消失,所以没有品牌列的表格不会产出以破折号开头的文案。结果会压缩多余空格、首字母大写,并按词边界裁到字符上限——默认 125,这是 alt 文本在实际使用中的合理上限,输入时旁边会实时显示字数。

四种看图方式

Florence-2 训练过几种描述任务,AltForge 拿出对店铺最有用的四种:

命令行上是同样的四种:--task caption|detailed|paragraph|ocr,也可以写 --style concise|detailed|paragraph|ocr。更细的描述任务属于授权版;免费版只写那一句简述。

原有每一列都还给你

AltForge 不重建你的表格。导出就是输入 CSV 加上一列——默认叫 alt_text,表格本来就有 alt 列的话写进那一列——其余所有列和值原样写回。引号、内嵌逗号和换行由真正的 CSV 写入器处理,编码也会自动判断:带不带 BOM 的 UTF-8,或中文表格工具导出的 GB18030。

文案可以改。点一行,改句子,确认;某一行的图片想重新生成,也可以只跑那一行,不影响其余九十九行。手动改过的句子归你,不会被覆盖。图片不存在、或者行读不出来时,这一行会带着行号和原因写进 catalogue.alt.errors.csv。

免费版与授权

下载的就是完整应用。没有授权时,只扫一个文件夹,前 100 张图片可以生成并导出——足够用你自己的商品看清它到底能做到什么。第 101 行起留空并在窗口里计数,不会悄悄丢掉。

免费版授权版
每份目录的图片数前 100 张全部行
文件夹只扫一个含子文件夹
描述方式一句简述简述、详细、段落、OCR
模板、预设与列映射固定 {caption},列自动识别✓
导出文字末尾带 (generated by AltForge free)原样
导出保留全部原有列✓✓
命令行(fill 整张表)前 100 行✓
更新✓1.x 全部更新
价格免费US$6.99,一次

目录留在你的 Mac 上

不上传、不注册、不数额度。AltForge 不会把你的图片、商品名或文案发到任何地方。模型就在应用里,第一次运行不需要下载。唯一的网络请求是每天一次更新检查,从 swordfishsoft.org 取新版本列表和已退款订单列表——所有人取的是同一份文件。更新检查可以在设置里关掉。生成和导出完全不需要联网。详见隐私政策。

命令行与 AI 助手

AltForge 附带 altforge,与应用共用同一套内核、同一个模型、同一个模板引擎。可以在终端里整表跑,可以挂进定时任务,也可以交给能在你 Mac 上执行命令的 AI 助手,比如 Claude Code 或 Codex。

altforge fill --csv products.csv --images photos --out products-alt.csv
altforge fill --csv products.csv --images photos --template "{brand} {title} — {caption}"   # 统一口吻
altforge fill --csv catalog.csv --images ./photos \
  --image-column image_url --id-column sku --out catalog.filled.csv \
  --style concise --max-chars 125 --skip-existing --json altforge.jsonl

altforge mapping --csv products.csv        # 先看列是怎么认的,什么都不写
altforge models download                   # 不开应用也能修复内置模型
altforge license status                    # 看这台 Mac 用的是哪把授权码

给 AI 助手的提示词

我的 Mac 上装了 AltForge。它根据一份 CSV 和一文件夹商品图片写 alt 文本,完全离线,用的是 Florence-2,并且带一个命令行工具:
"/Applications/AltForge.app/Contents/Helpers/altforge"
(如果把命令装进了 PATH,也可以直接写 altforge)。先用 --help 看用法。参数:
  altforge fill --csv SHEET [--images DIR] [--out SHEET] [--image-column NAME] [--id-column NAME] [--alt-column NAME] [--template "..."] [--task caption|detailed|paragraph|ocr] [--style concise|detailed|paragraph|ocr] [--limit N] [--max-chars N] [--skip-existing] [--force] [--dry-run] [--json FILE]
  altforge mapping --csv SHEET      看列被识别成了什么
  altforge models [download] [--id vision|embed|encoder|decoder|tokenizer]
  altforge license [status|KEY]
不给 --out 时,结果写在输入旁边的 .alt.csv。输入 CSV 永远不被修改;表格里已有的 alt 文字会重新生成、写回同一列。找不到图片的行会带着原因写进 .errors.csv。--dry-run 只报数量;--json 每行一个 JSON 对象再加一行汇总。
退出码:0 全部行处理完,2 部分行失败但表格已写出,3 参数不对,4 碰到免费限额或授权能力,5 模型文件缺失,130 被打断。进度写到 stderr,全程不等待输入。
如果提示模型缺失,运行 altforge models download;如果说需要授权,请直接告诉我,不要绕过。不要删除或移动我的文件。
我的任务: 

mapping、models 和 license 不需要授权即可使用;fill 在免费版里处理每份表格的前 100 行。

购买流程

  1. 先下载、先用免费版。 打开磁盘映像,把 AltForge 拖进「应用程序」,然后拿自己目录的一百张图片跑一遍——模型已经内置在应用里。
  2. 在本页购买授权。 结账由我们的转售商 Paddle 完成,可以刷卡、用 PayPal 或结账页上的其他方式,适用地区会加税。
  3. 复制授权码。 付款成功后会立即显示在本页,同时也会发到你的邮箱。把它粘进 AltForge → 设置 → 授权,限制就没了。

授权码丢了?用付款时的邮箱发信到 [email protected],我们会重发。

常见问题

和直接让 ChatGPT 写 alt 文本有什么不同?

三点。你的目录不会离开这台 Mac,未发布商品的图片和商品名仍然属于你;没有按张计费,也没有速率限制,两万行的表格一次跑完;输出就是那张表——每一列都在,只多一列——而不是一个还得自己复制粘贴的聊天窗口。云端的视觉 API 能把一张图描述得很好,但它没法把带 SKU 列的干净 CSV 还给你。

表格里原有的 alt 文本会怎样?

它会被读进来、显示在每张图旁边;点「生成」会在同一列上写新文案——这一列就是 AltForge 负责的那一列。其他所有列原样保留。想在不丢旧值的前提下对比,可以在「设置 ▸ 目录」里换一个新列名(例如 alt_forge):导出时会新增这一列,原来的列不动。也可以只重新生成某一行。

生成的文案准吗?

Florence-2 描述看得见的东西:物件的种类、颜色、材质和场景。这正是读屏软件需要的,通常也远好过 IMG_2041.jpg 这样的文件名。它不可能知道这是「我们卖得最好的小羊皮托特包」——那是模板里品牌、品名和关键词列的活儿。涉及法律或医疗宣称的文案,发布前请逐条读一遍;应用把模型写的句子放在图片旁边,就是为了让你能这么做。

免费的一百张怎么算?

每份目录里前 100 行有图片的行。再开另一份目录又是新的一百张;限制是按目录算的,不是按月。

能读什么样的 CSV?

逗号分隔,UTF-8(带不带 BOM 都行)和 GB18030。带引号的字段、内嵌逗号和换行都支持。Excel 可以导出「CSV UTF-8」;旧版中文 Excel 选「CSV(逗号分隔)」即可,AltForge 会自动识别 GB18030 编码。

它怎么找到每一行的图片?

先按图片列里的文件名找,忽略 URL 前缀和查询串;再按去掉扩展名的名字找;再按同一个名字加任意支持的扩展名找,所以 sku-123 能找到 sku-123.jpg。你选的文件夹下的子文件夹也会搜索。支持的格式是 JPEG、PNG、WebP、GIF、BMP 和 TIFF。

图片找不到怎么办?

这一行会以空 alt 值导出,并带着原因写进 errors CSV。读不出来的行也进同一个文件,修好之后可以只重跑这些行。

一整份目录要跑多久?

M 系列 Mac 上每张约一秒,一千个商品大约一刻钟;模型只加载一次,之后一直留在内存里。第一次之后全部离线。

支持哪些 Mac?

Apple Silicon(M1 及以后)、macOS 14 Sonoma 或更新。不支持 Intel Mac。

有 Windows 版吗?

暂时没有。问的人够多我们就做,同一份授权同样通用。可以发信到 [email protected]。

macOS 问我要不要打开,这正常吗?

正常。第一次打开任何从网站下载的应用,macOS 都会问一次。确认提示里写着 Apple 已检查且未发现恶意软件,然后点「打开」:应用有我们的 Apple Developer ID 签名,并经过 Apple 公证。

用着不合适怎么办?

每次购买都有14 天全额退款。