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, 二手交易, 内存规避, 暗色界面, 本地应用, 特征检测, 自动化攻击