<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>闲鱼 on KnightLi的博客</title>
        <link>https://www.knightli.com/tags/%E9%97%B2%E9%B1%BC/</link>
        <description>Recent content in 闲鱼 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sun, 17 May 2026 17:24:03 +0800</lastBuildDate><atom:link href="https://www.knightli.com/tags/%E9%97%B2%E9%B1%BC/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>ai-goofish-monitor：用 AI 自动盯闲鱼商品的开源监控系统</title>
        <link>https://www.knightli.com/2026/05/17/ai-goofish-monitor/</link>
        <pubDate>Sun, 17 May 2026 17:24:03 +0800</pubDate>
        
        <guid>https://www.knightli.com/2026/05/17/ai-goofish-monitor/</guid>
        <description>&lt;p&gt;ai-goofish-monitor 是 Usagi-org 开源的闲鱼商品监控系统。&lt;/p&gt;
&lt;p&gt;它的目标很明确：把闲鱼搜索、筛选、商品分析、结果记录和通知推送自动化，帮助用户从大量二手商品里更快找到符合条件的目标。项目基于 Playwright 做页面自动化，再接入支持图片输入的 AI 模型，对商品信息做进一步判断。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Usagi-org/ai-goofish-monitor&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;先说结论&#34;&gt;先说结论
&lt;/h2&gt;&lt;p&gt;ai-goofish-monitor 更像一个“闲鱼采购情报面板”，而不是简单的关键词提醒脚本。&lt;/p&gt;
&lt;p&gt;它有几个明显特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有完整 Web 管理界面，可以管理任务、账号、AI 标准、日志和结果。&lt;/li&gt;
&lt;li&gt;支持多任务并发，每个任务可以配置关键词、价格、筛选条件和 AI Prompt。&lt;/li&gt;
&lt;li&gt;使用 Playwright 抓取闲鱼页面，适合处理需要登录态和页面交互的场景。&lt;/li&gt;
&lt;li&gt;使用 AI 判断商品是否符合需求，不只依赖关键词匹配。&lt;/li&gt;
&lt;li&gt;支持 ntfy.sh、企业微信、Bark、Telegram、Webhook 等通知渠道。&lt;/li&gt;
&lt;li&gt;支持 Cron 定时任务、多账号管理、代理轮换、失败重试和 Docker 部署。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它适合经常在闲鱼找特定商品的人，比如二手数码、摄影器材、显卡、硬盘、游戏机、乐器、家电和收藏品。但它也不是“自动捡漏神器”。闲鱼搜索结果本身会变化，账号登录态可能失效，平台风控也会影响自动化稳定性。使用时更应该把它当成辅助筛选工具，而不是完全替代人工判断。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;在闲鱼上找二手商品，经常有几个痛点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;商品太多，手动翻很累。&lt;/li&gt;
&lt;li&gt;标题和描述不规范，关键词很容易漏掉或误判。&lt;/li&gt;
&lt;li&gt;好价格出现时间短，发现太晚就没了。&lt;/li&gt;
&lt;li&gt;同一个商品可能有多个地区、价格、成色和卖家差异。&lt;/li&gt;
&lt;li&gt;低价商品里混着配件、损坏品、翻新货和诱导性标题。&lt;/li&gt;
&lt;li&gt;想持续盯多个关键词时，手动搜索很难坚持。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;普通关键词提醒只能解决一部分问题。比如你搜索“ThinkPad X1”，可能会混入配件、坏屏、空盒、拆机件；你搜索“索尼 A7C”，又可能遇到镜头套装、租赁信息、标题党和价格异常。&lt;/p&gt;
&lt;p&gt;ai-goofish-monitor 的思路是：先用自动化把候选商品抓出来，再交给 AI 按你的需求做二次判断，最后把值得关注的结果推送给你。&lt;/p&gt;
&lt;h2 id=&#34;核心功能&#34;&gt;核心功能
&lt;/h2&gt;&lt;p&gt;项目 README 里列出的核心能力比较完整：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web 可视化管理：任务管理、账号管理、AI 标准编辑、运行日志、结果浏览。&lt;/li&gt;
&lt;li&gt;AI 驱动：支持自然语言创建任务，并用多模态模型分析商品。&lt;/li&gt;
&lt;li&gt;多任务并发：不同任务可以独立配置关键词、价格、筛选条件和 AI Prompt。&lt;/li&gt;
&lt;li&gt;高级筛选：支持包邮、新发布时间范围、省 / 市 / 区三级区域筛选。&lt;/li&gt;
&lt;li&gt;即时通知：支持 ntfy.sh、企业微信、Bark、Telegram、Webhook 等多渠道。&lt;/li&gt;
&lt;li&gt;定时调度：支持 Cron 配置周期性任务。&lt;/li&gt;
&lt;li&gt;账号与代理轮换：多账号管理、任务绑定账号、代理池轮换与失败重试。&lt;/li&gt;
&lt;li&gt;Docker 部署：支持容器化部署。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些能力组合起来，覆盖了从“创建监控任务”到“收到命中提醒”的完整链路。&lt;/p&gt;
&lt;h2 id=&#34;工作流是什么样&#34;&gt;工作流是什么样
&lt;/h2&gt;&lt;p&gt;一个典型流程大概是这样：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;部署服务并打开 Web UI。&lt;/li&gt;
&lt;li&gt;导入闲鱼账号登录态。&lt;/li&gt;
&lt;li&gt;创建监控任务。&lt;/li&gt;
&lt;li&gt;设置关键词、价格区间、地区、新发布范围等筛选条件。&lt;/li&gt;
&lt;li&gt;编写或让 AI 生成判断标准。&lt;/li&gt;
&lt;li&gt;任务按实时或定时方式运行。&lt;/li&gt;
&lt;li&gt;Playwright 打开页面并抓取商品信息。&lt;/li&gt;
&lt;li&gt;AI 根据标题、描述、图片和 Prompt 判断是否符合需求。&lt;/li&gt;
&lt;li&gt;命中结果写入 SQLite。&lt;/li&gt;
&lt;li&gt;系统通过配置的通知渠道推送结果。&lt;/li&gt;
&lt;li&gt;用户在 Web UI 里查看结果、日志和价格历史。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这个流程里，AI 的价值主要在第 8 步。它可以理解“我想要成色好、价格合理、不要配件、不要维修机、最好同城自提”这类自然语言条件，比单纯关键词规则灵活。&lt;/p&gt;
&lt;h2 id=&#34;docker-部署&#34;&gt;Docker 部署
&lt;/h2&gt;&lt;p&gt;项目推荐使用 Docker 部署：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/Usagi-org/ai-goofish-monitor &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ai-goofish-monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose logs -f app
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose down
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;默认 Web UI 地址是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://127.0.0.1:8000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;官方镜像地址是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghcr.io/usagi-org/ai-goofish:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果镜像访问慢，README 里也给了加速镜像示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker pull ghcr.nju.edu.cn/usagi-org/ai-goofish:latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker tag ghcr.nju.edu.cn/usagi-org/ai-goofish:latest ghcr.io/usagi-org/ai-goofish:latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Docker 镜像已内置 Chromium，不需要宿主机额外安装浏览器。默认持久化目录包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;data/&lt;/code&gt;：SQLite 主存储，保存任务、结果和价格历史。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;state/&lt;/code&gt;：登录状态 cookie 文件。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prompts/&lt;/code&gt;：任务提示词。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;logs/&lt;/code&gt;：运行日志。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;images/&lt;/code&gt;：商品图片和任务临时图片目录。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果修改了 &lt;code&gt;.env&lt;/code&gt; 里的 &lt;code&gt;SERVER_PORT&lt;/code&gt;，也要同步调整 &lt;code&gt;docker-compose.yaml&lt;/code&gt; 的端口映射。&lt;/p&gt;
&lt;h2 id=&#34;最少配置&#34;&gt;最少配置
&lt;/h2&gt;&lt;p&gt;项目的最少配置主要围绕 AI 模型和 Web UI 登录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_api_key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_openai_compatible_base_url
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_MODEL_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_multimodal_model
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;WEB_USERNAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;admin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;WEB_PASSWORD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;change_me
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中前三项是 AI 模型接入必填项：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;OPENAI_API_KEY&lt;/code&gt;：模型 API Key。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OPENAI_BASE_URL&lt;/code&gt;：OpenAI 兼容接口地址。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OPENAI_MODEL_NAME&lt;/code&gt;：支持图片输入的模型名称。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;WEB_USERNAME&lt;/code&gt; 和 &lt;code&gt;WEB_PASSWORD&lt;/code&gt; 用于 Web UI 登录。README 提到默认账号密码是 &lt;code&gt;admin/admin123&lt;/code&gt;，生产环境必须修改。&lt;/p&gt;
&lt;h2 id=&#34;第一次使用&#34;&gt;第一次使用
&lt;/h2&gt;&lt;p&gt;第一次使用时，流程大致是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 &lt;code&gt;http://127.0.0.1:8000&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;登录 Web UI。&lt;/li&gt;
&lt;li&gt;进入“闲鱼账号管理”。&lt;/li&gt;
&lt;li&gt;使用项目提供的 Chrome 扩展导出闲鱼登录态 JSON。&lt;/li&gt;
&lt;li&gt;把登录态粘贴到系统里。&lt;/li&gt;
&lt;li&gt;登录态文件会保存到 &lt;code&gt;state/&lt;/code&gt;，例如 &lt;code&gt;state/acc_1.json&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;回到“任务管理”，创建任务并绑定账号。&lt;/li&gt;
&lt;li&gt;运行任务并查看结果。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这里最关键的是登录态。由于闲鱼并不是开放给第三方随意抓取的标准 API，项目需要用浏览器登录状态来模拟正常页面访问。登录态失效、风控、验证码、账号异常都会影响任务运行。&lt;/p&gt;
&lt;h2 id=&#34;ai-任务和关键词任务&#34;&gt;AI 任务和关键词任务
&lt;/h2&gt;&lt;p&gt;项目支持两类任务创建方式。&lt;/p&gt;
&lt;p&gt;第一类是 &lt;code&gt;AI判断&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;你可以填写“详细需求”，提交后系统会异步生成分析标准。适合需求比较复杂的场景，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只要主机本体，不要配件。&lt;/li&gt;
&lt;li&gt;价格明显低于市场价才提醒。&lt;/li&gt;
&lt;li&gt;成色要好，描述里不能有进水、维修、暗病。&lt;/li&gt;
&lt;li&gt;优先同城，能面交更好。&lt;/li&gt;
&lt;li&gt;图片里要能看到序列号、包装或关键配件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第二类是 &lt;code&gt;关键词判断&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它更接近传统规则监控：根据关键词、价格、地区等条件直接创建任务，不经过 AI 生成流程。适合规则简单、误报可以接受的场景。&lt;/p&gt;
&lt;p&gt;实际使用中可以混合使用：关键词负责初筛，AI 负责减少误报。&lt;/p&gt;
&lt;h2 id=&#34;web-ui-能做什么&#34;&gt;Web UI 能做什么
&lt;/h2&gt;&lt;p&gt;Web UI 是这个项目区别于普通脚本的重要部分。&lt;/p&gt;
&lt;p&gt;任务管理页可以配置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 创建任务。&lt;/li&gt;
&lt;li&gt;关键词规则。&lt;/li&gt;
&lt;li&gt;价格范围。&lt;/li&gt;
&lt;li&gt;新发布范围。&lt;/li&gt;
&lt;li&gt;区域筛选。&lt;/li&gt;
&lt;li&gt;账号绑定。&lt;/li&gt;
&lt;li&gt;定时规则。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;账号管理页可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;导入闲鱼账号登录态。&lt;/li&gt;
&lt;li&gt;更新登录态。&lt;/li&gt;
&lt;li&gt;删除账号。&lt;/li&gt;
&lt;li&gt;为任务指定账号。&lt;/li&gt;
&lt;li&gt;让系统自动选择账号。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;结果和日志页可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查看命中商品。&lt;/li&gt;
&lt;li&gt;导出结果。&lt;/li&gt;
&lt;li&gt;查询历史记录。&lt;/li&gt;
&lt;li&gt;查看任务运行过程。&lt;/li&gt;
&lt;li&gt;排查登录态失效、风控和 AI 调用问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;系统设置页可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查看系统状态。&lt;/li&gt;
&lt;li&gt;编辑 Prompt。&lt;/li&gt;
&lt;li&gt;调整代理和轮换配置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于长期监控来说，Web UI 很关键。否则任务一多，配置、日志、结果和通知都会变得难维护。&lt;/p&gt;
&lt;h2 id=&#34;数据存储&#34;&gt;数据存储
&lt;/h2&gt;&lt;p&gt;项目当前在线主存储使用 SQLite，默认路径是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;data/app.sqlite3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Docker 默认把 SQLite 主库挂载到：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./data:/app/data
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;应用启动时会自动建库建表，并尝试从旧的 &lt;code&gt;config.json&lt;/code&gt;、&lt;code&gt;jsonl/&lt;/code&gt;、&lt;code&gt;price_history/&lt;/code&gt; 导入一次历史数据。&lt;/p&gt;
&lt;p&gt;需要注意的是，&lt;code&gt;state/&lt;/code&gt;、&lt;code&gt;prompts/&lt;/code&gt;、&lt;code&gt;logs/&lt;/code&gt;、&lt;code&gt;images/&lt;/code&gt; 仍然是文件系统目录，不在 SQLite 中。商品图片会临时保存到类似下面的目录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;images/task_images_&amp;lt;task_name&amp;gt;/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;任务结束后默认会清理。&lt;/p&gt;
&lt;p&gt;这种结构比较适合个人或小团队部署：SQLite 足够轻，迁移也简单；文件目录保留登录态、图片和日志，排查问题更直观。&lt;/p&gt;
&lt;h2 id=&#34;通知渠道&#34;&gt;通知渠道
&lt;/h2&gt;&lt;p&gt;项目支持多种通知渠道，常见配置包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;NTFY_TOPIC_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GOTIFY_URL&lt;/code&gt; / &lt;code&gt;GOTIFY_TOKEN&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BARK_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WX_BOT_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TELEGRAM_BOT_TOKEN&lt;/code&gt; / &lt;code&gt;TELEGRAM_CHAT_ID&lt;/code&gt; / &lt;code&gt;TELEGRAM_API_BASE_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WEBHOOK_*&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通知是这类工具的核心体验。监控系统如果只把结果写进后台，用户仍然需要反复打开页面查看；有推送之后，命中商品才能在第一时间触达。&lt;/p&gt;
&lt;p&gt;更实用的配置方式是按商品价值分层：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;普通关键词命中只写入后台。&lt;/li&gt;
&lt;li&gt;AI 高置信度结果推送到手机。&lt;/li&gt;
&lt;li&gt;高价值商品推送到企业微信或 Telegram。&lt;/li&gt;
&lt;li&gt;调试阶段开启更多日志，稳定后减少噪音。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;开发者运行&#34;&gt;开发者运行
&lt;/h2&gt;&lt;p&gt;如果不使用 Docker，本地开发需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.10+&lt;/li&gt;
&lt;li&gt;Node.js + npm&lt;/li&gt;
&lt;li&gt;Playwright CLI&lt;/li&gt;
&lt;li&gt;Chromium 或 Chrome / Edge 浏览器&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;基础命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/Usagi-org/ai-goofish-monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ai-goofish-monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一键启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod +x start.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./start.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;start.sh&lt;/code&gt; 会检查 Playwright CLI 和浏览器条件，自动安装依赖、构建前端、复制构建产物并启动后端。&lt;/p&gt;
&lt;p&gt;手动启动后端：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m src.app
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uvicorn src.app:app --host 0.0.0.0 --port &lt;span class=&#34;m&#34;&gt;8000&lt;/span&gt; --reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;前端开发：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; web-ui
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;测试和构建：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PYTEST_DISABLE_PLUGIN_AUTOLOAD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; pytest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; web-ui &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;适合哪些人&#34;&gt;适合哪些人
&lt;/h2&gt;&lt;p&gt;ai-goofish-monitor 适合这些用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;经常在闲鱼蹲特定型号商品的人。&lt;/li&gt;
&lt;li&gt;想监控二手数码、摄影器材、游戏设备、硬件配件的人。&lt;/li&gt;
&lt;li&gt;想把“关键词搜索 + 人工筛选”自动化的人。&lt;/li&gt;
&lt;li&gt;有 OpenAI 兼容模型 API，并愿意为 AI 判断支付调用成本的人。&lt;/li&gt;
&lt;li&gt;熟悉 Docker 或基本命令行部署的人。&lt;/li&gt;
&lt;li&gt;需要把命中结果推送到手机、企业微信或 Telegram 的用户。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不太适合这些情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完全不懂部署，只想要一个即开即用 App。&lt;/li&gt;
&lt;li&gt;不愿意处理登录态、验证码和账号风控。&lt;/li&gt;
&lt;li&gt;需要官方授权、强合规的数据接口。&lt;/li&gt;
&lt;li&gt;想大规模高频抓取平台数据。&lt;/li&gt;
&lt;li&gt;希望 AI 自动判断交易风险并替你下单。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用风险和边界&#34;&gt;使用风险和边界
&lt;/h2&gt;&lt;p&gt;这类工具一定要注意边界。&lt;/p&gt;
&lt;p&gt;第一，遵守平台规则。&lt;/p&gt;
&lt;p&gt;闲鱼有自己的服务条款、风控策略和账号安全机制。自动化访问可能触发限制。不要高频抓取，不要绕过风控，不要把它用于骚扰卖家、批量采集隐私或破坏平台秩序。&lt;/p&gt;
&lt;p&gt;第二，保护账号登录态。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;state/&lt;/code&gt; 里保存的是登录状态 cookie 文件。它本质上等同于账号访问凭据，不能提交到 Git 仓库，也不要放到不可信服务器上。服务器如果暴露在公网，Web UI 必须修改默认密码，并建议放在 VPN、反向代理鉴权或内网之后。&lt;/p&gt;
&lt;p&gt;第三，AI 判断不是事实保证。&lt;/p&gt;
&lt;p&gt;AI 可以帮你减少误报，但不能保证商品真实、卖家可信、价格合理或交易安全。最终仍然要人工看商品详情、卖家评价、聊天记录、发货方式和支付流程。&lt;/p&gt;
&lt;p&gt;第四，注意成本。&lt;/p&gt;
&lt;p&gt;如果每个候选商品都交给多模态模型分析，调用成本可能很快上升。建议先用关键词、价格和区域做强筛选，再把少量候选交给 AI。&lt;/p&gt;
&lt;p&gt;第五，注意隐私。&lt;/p&gt;
&lt;p&gt;商品截图、聊天相关内容、账号状态和通知内容都可能包含敏感信息。通知 Webhook、日志目录和数据库都要妥善保护。&lt;/p&gt;
&lt;h2 id=&#34;和普通脚本的差别&#34;&gt;和普通脚本的差别
&lt;/h2&gt;&lt;p&gt;普通闲鱼监控脚本通常只做三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;搜索关键词。&lt;/li&gt;
&lt;li&gt;判断价格。&lt;/li&gt;
&lt;li&gt;发通知。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ai-goofish-monitor 更进一步：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 Web UI 管理任务和账号。&lt;/li&gt;
&lt;li&gt;用 AI Prompt 表达复杂购买标准。&lt;/li&gt;
&lt;li&gt;用多模态模型看商品图和描述。&lt;/li&gt;
&lt;li&gt;用 SQLite 保存结果和价格历史。&lt;/li&gt;
&lt;li&gt;用日志页排查任务失败原因。&lt;/li&gt;
&lt;li&gt;用代理轮换和多账号机制提高稳定性。&lt;/li&gt;
&lt;li&gt;用定时任务支持长期运行。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也正因为功能更多，它的部署和维护成本更高。对普通用户来说，Docker 部署是最省事的方式；对开发者来说，Web UI、FastAPI、Playwright、SQLite 这套结构也比较容易二次开发。&lt;/p&gt;
&lt;h2 id=&#34;可以怎么用&#34;&gt;可以怎么用
&lt;/h2&gt;&lt;p&gt;比较实用的使用方式是从小任务开始。&lt;/p&gt;
&lt;p&gt;比如你想找一台二手相机，可以先创建一个任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;关键词：&lt;code&gt;A7C&lt;/code&gt;、&lt;code&gt;索尼 A7C&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;价格范围：按市场价设置上限&lt;/li&gt;
&lt;li&gt;区域：优先本省或同城&lt;/li&gt;
&lt;li&gt;新发布范围：最近一天或最近几小时&lt;/li&gt;
&lt;li&gt;AI 标准：排除单镜头、排除维修机、排除明显配件、关注快门数和成色&lt;/li&gt;
&lt;li&gt;通知：只推送 AI 判断通过的结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;稳定运行后，再逐步增加任务数量。不要一开始就上几十个关键词、多个账号和高频 Cron。先看登录态稳定性、误报率、AI 成本和通知噪音，再调参数。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;ai-goofish-monitor 把闲鱼监控从“关键词脚本”推进到了“可管理的 AI 监控系统”。它用 Playwright 处理页面自动化，用 AI 处理复杂判断，用 Web UI 管理任务和结果，用 SQLite 保存数据，再通过多种通知渠道把结果推送出来。&lt;/p&gt;
&lt;p&gt;它最适合个人或小团队做特定商品监控，尤其是二手数码、硬件、摄影器材这类价格波动大、发布时间敏感、描述噪音多的品类。&lt;/p&gt;
&lt;p&gt;但它也需要谨慎使用：登录态要保护，默认密码要改，抓取频率要克制，AI 结果要人工复核，平台规则和隐私边界不能忽视。把它当成辅助筛选工具，它会很有价值；把它当成全自动交易系统，就容易高估它的能力。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Usagi-org/ai-goofish-monitor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor/blob/master/README_EN.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;项目英文 README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor/blob/master/DISCLAIMER.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;项目免责声明&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
