
什么是 AI Writer?
AI Writer 是一款开源应用,可将产品照片转换为可编辑的电商描述。你可以提供一到八个公开的 HTTPS 图片 URL,选择输出语言,并使用支持视觉能力的 OpenAI Chat Completions 模型生成草稿。
该应用支持英语、土耳其语、西班牙语、德语、法语和中文。它还包括账户身份验证、基于浏览器的编辑、翻译,以及由 MySQL 支持的积分系统。

AI Writer 生成的是草稿,而不是经过验证的产品规格。发布前请仔细审核每条描述,因为图片无法可靠证明尺寸、面料成分或认证等详细信息。
主要功能
- 基于图片撰写:根据一到八张可公开访问的 HTTPS 产品图片生成文案。
- 获取产品页面:使用 Puppeteer 从公开产品页面收集图片链接。
- 六种输出语言:以英语、土耳其语、西班牙语、德语、法语或中文生成内容。
- 编辑与翻译:在浏览器中完善生成的草稿、复制草稿,并通过一次操作完成翻译。
- 账户与积分:应用使用 bcrypt 密码、MySQL 会话和余额机制,防止并行操作导致超额消费。
- 失败退款:支持的生成请求失败时,已预留的积分会退回。
- 实验性视频输入:从短 YouTube 视频中提取最多八个画面,并将其用作视觉输入。
前置条件
安装前,请准备以下内容:
- Node.js 22.12 或更高版本,以及 npm。
- 带 Compose 的 Docker,或可访问现有的 MySQL 8 或更高版本服务器。
- 有权访问支持视觉能力的 Chat Completions 模型的 OpenAI API 密钥。
- 如果要从产品页面获取图片,请通过 Puppeteer 安装 Chrome。
- 如果要尝试实验性视频处理,请确保 FFmpeg 和 FFprobe 可在
PATH中使用。
如果你只计划根据图片生成描述,则无需安装 FFmpeg。
自动安装 AI Writer
交互式安装脚本是最简单的安装方式。克隆仓库、进入其目录、运行安装程序,然后启动应用:
git clone https://github.com/csadigital/ai-writer.git
cd ai-writer
npm run setup
npm start安装程序会下载应用依赖和 Chrome,在不回显的情况下询问你的 OpenAI API 密钥,创建数据库和会话密钥,并初始化 MySQL。它会保留现有的 .env 值,并创建本地备份。
设置过程中,选择 docker 可自动启动持久化 MySQL 容器。Docker 必须已安装并正在运行。选择 existing 可连接到你自己的 MySQL 服务器。使用管理员凭据时,安装程序可以创建专用数据库和应用用户,但不会保存管理员密码。
启动后,在浏览器中打开 http://localhost:3000。
停止 Docker 数据库
要停止本地 MySQL 容器而不删除其中的持久化数据,请运行:
docker compose -f compose.mysql.yml stop在 .env 中更改数据库凭据不会重置之前初始化的 Docker 卷。请保留原始凭据,或执行有意进行的数据库迁移。
手动安装 AI Writer
手动设置可让你直接控制环境和数据库配置。克隆项目、安装指定版本的依赖,并创建环境文件:
git clone https://github.com/csadigital/ai-writer.git
cd ai-writer
npm ci
cp .env.example .env
node -e "console.log(require('node:crypto').randomBytes(32).toString('hex'))"将生成的值复制到 .env 中的 SESSION_SECRET。该密钥必须至少包含 32 个字符。然后添加 OpenAI API 密钥和 MySQL 连接设置。请使用全新的凭据,切勿提交 .env 文件。
使用 MySQL 管理员创建数据库和应用用户,授予该用户访问数据库的权限,然后使用 schema.sql 初始化数据表:
mysql -h 127.0.0.1 -u ai_writer -p ai_writer < schema.sql
npm start打开 http://localhost:3000,创建账户并登录。
配置环境
应用从环境变量中读取设置。至少需要配置 OpenAI 凭据、会话密钥和数据库连接。
OPENAI_API_KEY:必需的 OpenAI API 凭据。OPENAI_MODEL:支持视觉能力的 Chat Completions 模型。默认值为gpt-4.1-mini。SESSION_SECRET:必需的随机密钥,至少包含 32 个字符。DB_HOST和DB_PORT:MySQL 地址。默认值分别为127.0.0.1和3306。DB_USER和DB_PASSWORD:本地 MySQL 应用凭据。DB_NAME:数据库名称。默认值为ai_writer。PORT:应用 HTTP 端口。默认值为3000。NODE_ENV:运行模式。默认值为development。TRUST_PROXY:设置应用是否信任一个 HTTPS 反向代理。默认值为0。
所选模型必须通过 Chat Completions API 支持图像输入。有关兼容的请求行为,请参阅OpenAI 官方图像输入指南。
生成您的第一份产品描述
- 创建账户:通过本地应用注册并登录。每个新账户都会获得十个积分。
- 添加产品照片:提供一至八个公开的 HTTPS 图像 URL。模型必须能够访问这些 URL。
- 选择语言:选择英语、土耳其语、西班牙语、德语、法语或中文。
- 生成草稿:提交图像进行视觉分析并生成描述。
- 编辑结果:在浏览器中检查草稿,修正未经支持的声明、语气或产品详情。
- 复制文本:将修改后的描述复制到您的电商工作流程中。
成功生成一份描述需要一个积分。如果生成请求失败,应用会退还预留的积分。
图像工作流示例
对于具有多个角度的产品,请提供一组直接图像 URL,例如:
https://example.com/products/item-front.jpg
https://example.com/products/item-side.jpg
https://example.com/products/item-detail.jpg仅使用公开的 HTTPS 地址。多个视角可以为模型提供更多可见上下文,但不能替代产品目录中经过核实的规格信息。
从产品页面获取图像
AI Writer 可以使用 Puppeteer 检查公开的产品页面并收集图像链接,无需手动收集每个图像 URL。此工作流需要使用 Puppeteer 管理的 Chrome 安装。
- 向页面获取工作流提供公开的产品页面 URL。
- 让应用收集候选图像链接。
- 从获取的结果中选择合适的产品照片。
- 照常生成并检查描述。
仅处理您获授权使用的页面和图像。对于公开部署,应将浏览器自动化置于沙箱中,并限制网络访问。
翻译现有草稿
生成或编辑描述后,使用翻译操作生成另一种支持的语言。成功翻译需要一个积分。发布前,请检查译文中的产品术语、品牌语调和事实准确性。
使用实验性视频工作流
AI Writer 可以从短 YouTube 视频中提取最多八帧,并将这些帧作为视觉上下文提交。由于 localhost 图像链接无法被 API 访问,本地帧会以数据 URL 的形式发送给模型。
视频必须符合以下所有限制:
- 不得是直播视频。
- 时长不得超过三分钟。
- 大小不得超过 50 MB。
- FFmpeg 和 FFprobe 必须在
PATH中可用。 - 您必须获授权处理该媒体。
此功能依赖上游 YouTube 下载器的可用性,而 YouTube 可能会拒绝自动下载。处理失败时会退还预留的积分。
开发与测试
修改应用时使用以下开发命令:
npm run dev使用以下命令运行项目检查、自动化测试和生产依赖项审计:
npm run check
npm test
npm audit --omit=dev测试套件涵盖身份验证、会话轮换、CSRF 防护、URL 验证、转义输出、图像生成、翻译、积分退款和并行积分消费。本地测试会隔离数据库与 AI 服务,因此不会使用生产凭据或进行付费 API 调用。持续集成还会创建临时的真实 MySQL 服务器,以验证安装程序的架构创建和数据库用户授权。
高级提示
谨慎选择图像
使用能从有用角度展示产品的清晰照片。将请求控制在一至八张图像的限制内。增加的图像应提供有意义的视觉信息,而不是重复相同视角。
将事实数据与视觉推测分开
不要将关于尺寸、成分或认证的生成内容视为权威信息。编辑时,请从库存系统或产品信息系统中添加经过核实的规格。
保护密钥和数据库访问
妥善保管 .env 文件,使用专用数据库凭据,避免提交 API 密钥或会话密钥。如果使用现有的 MySQL 服务器,请仅授予应用用户访问其指定数据库的权限。
为公开部署做好准备
在将 AI Writer 暴露到互联网之前,请阅读仓库中的部署指南。公开服务器需要 HTTPS、受限的网络出口和沙箱化浏览器。仅依靠 DNS 验证并不能完全防御 DNS 重绑定攻击。
内置积分可以限制支出,但项目不包含计费集成、自动购买积分、密码恢复或电子邮件验证功能。发布仓库也不会创建托管应用或在线演示。
了解项目的主要文件
app.js:Express 应用以及账户和积分路由。db.js:MySQL 连接池。youtube.js:受限的实验性视频工作流。lib/ai.js:模型请求和多语言提示词。lib/network.js:公共 HTTPS URL 验证。views/:EJS 页面和共享布局。public/:样式、浏览器端代码和品牌资源。schema.sql:账户数据库表。scripts/setup.js:交互式安装程序。compose.mysql.yml:可选的本地 MySQL 服务。test/:自动化回归检查。
结论
AI Writer 提供了一套实用的本地工作流,可将产品照片转换为多语言电商文案草稿。请先运行交互式安装程序,连接支持视觉能力的 OpenAI 模型,添加公共 HTTPS 图片,并在发布前审核每项结果。其账户、积分、翻译和测试功能构成了坚实基础,但生产环境部署仍需仔细处理浏览器隔离、网络控制和 HTTPS。
