HollerAtTheCode/Automated-Kleinanzeigen
GitHub: HollerAtTheCode/Automated-Kleinanzeigen
本地优先的 Kleinanzeigen 二手发布助手,利用 AI 图像分析和比价搜索帮助用户半自动地准备商品上架草稿。
Stars: 0 | Forks: 0
# 自动化 Kleinanzeigen
Automated Kleinanzeigen 是一个本地优先的助手,用于准备私人 Kleinanzeigen 发布信息。它可以帮助您将产品照片转化为可编辑的发布内容,研究当前活跃的 Kleinanzeigen 报价,并能够打开一个独立的浏览器配置文件,为发布表单进行预填充以供手动审查。
该应用程序不会盲目发布信息。它可以协助预填充标题、描述、价格、价格类型、成色、类别和图片,但最终的登录、审查和发布点击操作仍由用户完成。
## 预期用途
本应用程序仅适用于在受信任的个人设备上进行本地托管,且仅供私人、非商业用途。它并未被设计、强化或许可为公共 Web 服务、托管 SaaS 产品、多用户系统或商业化的 Kleinanzeigen 自动化平台。
除非您完全了解局域网暴露的风险,否则请保持默认的环回绑定。请勿将此应用程序部署到公共服务器上。
## 功能
- 拖拽上传产品图片。
- 通过 OpenAI Responses API 进行产品识别和发布数据提取。
- 通过 Playwright 进行活跃的 Kleinanzeigen 比价搜索。
- 带有手动异常值/排除控制的稳健价格推荐。
- 可编辑的发布标题、描述、类别提示、价格、价格类型、交付方式以及比价来源。
- 辅助 Kleinanzeigen 浏览器流程,配备专用的持久本地配置文件,并尽力进行表单预填充。
- 仅在当前会话中处理上传的图片、分析结果、比价来源和发布内容。
## 安全模型
本项目被设计为一个本地私人物品出售助手,而非托管服务、批量发布系统或账户自动化工具。
- 服务器默认绑定到 `127.0.0.1`。
- 非环回绑定地址需要设置 `ALLOW_NON_LOOPBACK_HOST=true`,因为本地 API 被特意设置为免身份验证。
- 没有宽松的 CORS 中间件。
- 上传图片的文件系统路径仅保留在服务器端,不会在 API 响应中返回。
- `.env`、`.runtime/`、构建输出、Playwright 报告和测试产物会被 Git 忽略。
- OpenAI API 密钥从环境变量中读取,应用程序绝不会将其存储。
- Kleinanzeigen 登录 cookie 仅存在于独立的 Playwright 配置文件目录中。
- 辅助浏览器流程绝不会点击最终的发布操作。
Kleinanzeigen 是一项第三方服务。本项目不隶属于 Kleinanzeigen,也未获得其认可或支持。请在尊重 Kleinanzeigen 条款及您的账户安全的前提下使用它。
## 环境要求
- Node.js 22 或更新版本
- npm
- 用于实时图像分析和发布文本生成的 OpenAI API 密钥
- 用于 UI 测试和浏览器辅助流程的 Playwright 浏览器二进制文件
## 设置
```
npm install
cp .env.example .env
```
在 `.env` 中设置 `OPENAI_API_KEY` 以进行实时的 AI 分析,或者在应用程序的本地设置面板中粘贴一个密钥。在 UI 中输入的运行时密钥仅保存在服务器内存中,不会被持久化存储。如果没有提供密钥,自动图像分析功能将被禁用,而不是返回占位符结果。
```
npm run dev
```
打开 `http://127.0.0.1:5173`。
## 配置说明
| 变量 | 默认值 | 描述 |
| --- | --- | --- |
| `OPENAI_API_KEY` | 空 | 用于 OpenAI 图像分析和发布文本生成的 API 密钥。 |
| `OPENAI_MODEL` | `gpt-5.1` | 与 Responses API 一起使用的模型。 |
| `PORT` | `5173` | 本地服务器端口。 |
| `HOST` | `127.0.0.1` | 本地绑定地址。除非您了解相关风险,否则请保持仅限环回地址。 |
| `ALLOW_NON_LOOPBACK_HOST` | 空 | 在 `HOST` 绑定到 `localhost`、`127.0.0.1` 或 `::1` 之外之前,必须将其设置为 `true`。 |
| `SESSION_DIR` | `.runtime/sessions` | 临时会话数据位置。 |
| `PLAYWRIGHT_PROFILE_DIR` | `.runtime/browser-profile` | 持久的 Kleinanzeigen 浏览器配置文件。 |
## 开发说明
```
npm test
npm run build
npm run test:ui
```
如果 UI 测试报告缺少浏览器,请安装 Playwright Chromium:
```
npx playwright install chromium
```
## API 接口
- `POST /api/session`
- `GET /api/session/:id`
- `POST /api/session/:id/images`
- `POST /api/session/:id/analyze`
- `POST /api/session/:id/analysis`
- `POST /api/session/:id/price-search`
- `POST /api/session/:id/price-recommendation`
- `POST /api/session/:id/sale-notes`
- `POST /api/session/:id/draft`
- `POST /api/session/:id/publish-assist`
- `GET /api/settings`
- `POST /api/settings/openai-key`
## 数据留存
在进程运行期间,上传的图片和会话数据会本地存储在 `SESSION_DIR` 下。应用程序会在正常终止进程时删除会话数据。Playwright 浏览器配置文件特意被设置为持久化的,以便 Kleinanzeigen 的登录状态在应用程序重启后依然保留。
## 许可证
尚未选择许可证。在添加许可证之前,仓库所有者保留所有权利。
标签:AI助手, MITM代理, OpenAI, Playwright, RPA, 二手交易, 内存规避, 暗色界面, 本地应用, 特征检测, 自动化攻击