ai-goofish-monitor:Python 開源閒魚監控,用 AI 視覺模型過濾商品

ai-goofish-monitor 是 GitHub 上 13.8K 星的開源 Python 專案,整合 Playwright 爬蟲與視覺模型,自動監控閒魚商品並透過 Webhook 推播。了解它的 Docker 部署流程、BYOK AI 資料流向、閒魚帳號登入態風險與台灣讀者的適用性。

用 AI 摘要這篇文章:

一個在 GitHub 拿下 13.8K 星的開源 Python 專案,把 Playwright 爬蟲、視覺模型與 Docker 部署綁在一起,專門幫你盯著閒魚上的二手商品;它最大的賣點是把商品縮圖交給 AI 視覺模型判讀,跳過傳統關鍵字匹配的盲點,但同時也把帳號風險、雲端 AI 費用與跨境使用邊界一起放進你的部署清單。

先用 Docker 把它跑起來:最小的部署流程

作者把安裝過程收斂成 git clone → cp .env → docker compose up 的最小步驟,這也是 ai-goofish-monitor 在 README 強調的路徑。先從 Docker 路徑看起,再回頭拆解它背後做了什麼:

git clone https://github.com/Usagi-org/ai-goofish-monitor
cd ai-goofish-monitor
cp .env.example .env
# 編輯 .env 填入 OPENAI_API_KEY、OPENAI_BASE_URL、OPENAI_MODEL_NAME
docker compose up -d

容器啟動後,瀏覽器打開 http://127.0.0.1:8000,預設帳號 admin、預設密碼 admin123。映像檔本身已經把 Chromium 包進去,宿主機不需要再裝瀏覽器;資料庫檔落在主機的 ./data/app.sqlite3,登入態、提示詞、日誌與商品圖快取則各自落在 state/prompts/logs/images/ 幾個掛載目錄。

這套部署邏輯從 README 直接複製即可運作,但它把幾個需要讀者自己接手的決策一起埋進 .env:要選哪個 OpenAI 相容的視覺模型、要走哪個代理、要不要把預設密碼改掉、要不要在前面掛一層 HTTPS 反向代理。這些項目都會在後面章節展開。

映像檔預設從 ghcr.io/usagi-org/ai-goofish:latest 拉取;如果拉不下來,README 提供了南京大學的鏡像 ghcr.nju.edu.cn/usagi-org/ai-goofish:latest 作為加速 fallback,再手動 retag 成官方路徑。資料預設落在四個 volume:data/(SQLite 任務與結果)、state/(閒魚登入態 cookie)、prompts/(AI 提示詞)、logs/(運行日誌),另外還有 images/ 暫存商品圖、config.jsonjsonl/price_history/ 則是從舊版本升級時用的相容入口。這套儲存設計意味著只要你備份 data/state/,整個監控設定與帳號狀態就可以搬機重建。

升級流程也圍繞著 Docker:docker compose pull && docker compose up -d 會抓新映像、重建容器,SQLite schema 在啟動時自動 migrate。不過封存之後,這條升級路徑不會再有新映像可拉,已發布的最後一版映像仍可取用,但不再更新。

它實際做什麼:把爬蟲、視覺模型與排程綁在同一個 Web 介面

ai-goofish-monitor 的全名已經點出它的核心:用 Playwright 開瀏覽器、用視覺模型看商品圖、把整個流程包成 Web 介面。把它拆成三層會更清楚:

層級負責的事技術
抓取層用登入態模擬使用者逛閒魚,下載商品頁與縮圖Playwright + Chromium
判讀層把商品標題、價格、描述與縮圖整包送給視覺模型判斷OpenAI 相容 API(BYOK)
調度層省市區篩選、Cron 排程、帳號與代理輪換、多頻道通知FastAPI + SQLite + APScheduler

requirements.txt 看,它依賴的核心函式庫有 playwrightopenaifastapiuvicornapscheduler(Cron 排程)、httpx[socks](HTTP/SOCKS5 代理)、Pillow(圖片處理)、pyzbar(QR 解碼)與 qrcode(QR 產生)。從這套依賴可以推回它的功能邊界:HTTP/socks 代理支援、圖片下載與基本處理、QR 掃讀(可能用於登入流程)、Python 排程器,再加上一層 OpenAI 官方 SDK 帶來的 BYOK 視覺模型呼叫。

支援的通知頻道涵蓋 ntfy.sh、企業微信、Bark、Telegram、Gotify 與 generic Webhook;排程器支援 Cron 規則,可以設成每十分鐘掃一次特定關鍵字。Web UI 在 README 提供的四張截圖分別展示監控概覽、任務管理、結果查看與通知推送四個主畫面;另外從功能說明文件看,還有運行日誌、系統設置、AI 標準編輯與閒魚帳號管理幾個輔助頁面。

ai-goofish-monitor Web UI 監控概覽畫面,顯示任務執行狀態與統計數字(官方 README 截圖)。Pin
Web UI 監控概覽畫面(圖片來源:ai-goofish-monitor README)
ai-goofish-monitor 通知推播範例,透過 Telegram、企業微信、Bark 等頻道收到符合條件的商品訊息(官方 README 截圖)。Pin
透過 Telegram、Bark、企業微信等頻道推播命中商品(圖片來源:ai-goofish-monitor README)

任務建立支援兩種模式。「AI 判斷」模式讓你用自然語言描述需求,系統先把需求交給視覺模型生成判讀標準,再建立任務,這條流程走背景 job,提交後會跑出獨立的進度彈窗。「關鍵詞判斷」模式跳過 AI 標準生成,直接用關鍵字規則建立任務。兩種模式都可以疊加價格區間、新發布時間範圍、省/市/區三級區域篩選與帳號綁定。

ai-goofish-monitor 任務管理頁面,可設定關鍵字、價格區間、AI 判斷條件與省市区區域篩選(官方 README 截圖)。Pin
任務管理頁面,支援 AI 判斷與關鍵字雙模式(圖片來源:ai-goofish-monitor README)

作者還提供了一個 Chrome 擴充功能,用來匯出閒魚的登入態 JSON。匯出後的檔案會落在 state/acc_1.json 之類的位置,爬蟲啟動時直接讀進來用。每個任務可以指定綁定哪個帳號,也可以不綁定交給系統自動選。

AI 視覺這條鏈路的真實資料流向

ai-goofish-monitor 的差異化賣點是「會看圖」。對應的實作邏輯是:抓到商品後,把標題、價格、描述與縮圖整包送到使用者設定的 OpenAI 相容端點,由視覺模型回出「推薦或不推薦」的判斷,再依判斷結果發通知或寫資料庫。

這條鏈路是 BYOK(Bring Your Own Key)架構。.env.example 的預設值給了一組值得停下來看一下的組合:

OPENAI_BASE_URL=https://api-inference.modelscope.cn/v1/
OPENAI_MODEL_NAME=XiaomiMiMo/MiMo-V2-Flash

預設端點指向阿里的 ModelScope,模型是小米的 MiMo-V2-Flash。換句話說,如果你照預設值部署,每一張被抓到的商品縮圖都會被送到位於中國大陸的推論端點。對台灣讀者來說,這有兩層含義值得拆開看。

「會看圖」不等於「圖留在本機」。視覺模型推理發生在你設定的雲端,不是你部署 Docker 的那台機器。要讓圖真的不出本機,得自己接本地推論方案(例如 Ollama 上的視覺模型)當 OpenAI 相容端點。

BYOK 給你選擇權,也把責任交給你。要換成 OpenAI、Anthropic、Azure、Cloudflare AI、自架 vLLM,都只要改 .env 三個變數;相對地,AI 帳單、資料流向與合規考量也全部回到你身上。

上述流程來自 README、.env.example 與 docker-compose 的設計描述,按工具的設計行為整理,未必反映每一種部署組合的實測結果。

你的閒魚帳號登入態:本地落地,但風險自負

要把爬蟲跑起來,必須先把閒魚的登入態餵進系統。作者透過 Chrome 擴充功能把 cookie 匯出成 JSON,再貼進 Web UI。這些 cookie 檔案落地在本機的 state/ 目錄,爬蟲以你的登入狀態模擬使用者瀏覽行為。

這個設計帶來幾個必須明說的後果。

帳號風險由使用者扛。閒魚的服務條款對自動化抓取有一定限制,頻率太高、行為太機械化,都可能觸發風控、暫時限制,甚至帳號被停權。工具本身的 PROXY_ROTATION_ENABLEDTASK_FAILURE_GUARD 是降低風險的機制,但不能消除風險。

cookie 過期是使用者自己的事。閒魚改版、cookie 過期、裝置驗證觸發,都會讓任務失敗;日誌頁會把這些事件記下來,但你需要自己重新匯出登入態。這不是那種「設定一次就永遠跑」的服務。

作者的 DISCLAIMER.md 明確把這層責任寫進去:本專案僅供學習與研究目的,使用者必須遵守所在司法管轄區的法律,對使用行為自負全部責任,作者不對任何直接或間接損害負責。這份宣告實質把界線畫清楚,是部署前該先讀完的一份文件。

從部署到實際使用:幾個你會踩到的坑

把流程展開成「部署→第一次任務→收到通知」之後,幾個文件會提醒、但容易被略過的點值得記下來。

預設密碼要馬上改WEB_USERNAME=adminWEB_PASSWORD=admin123 是出廠值,如果部署在雲端 VPS 或 NAS 上卻沒改密碼,等於把監控後台開放給任何掃到這個 port 的人。改密碼之外,更穩的做法是把它放在反向代理後面,加上 HTTPS 與存取控制。

預設沒有 HTTPS。FastAPI 預設綁 8000 plain HTTP,沒有 TLS。如果你要從外部網路連回來,自行加上 Caddy、Traefik 或 Nginx 反向代理是必要的,否則登入態會以明文在網路上跑。

AI 帳單會疊得很快。每一次商品判讀都會叫一次視覺模型 API;如果你設了多個任務、Cron 環又設得太密,token 用量會疊得很快。建議第一次先用小範圍關鍵字試水溫,再決定排程頻率。

區域篩選會吃掉結果集。README 明確提醒:區域篩選會顯著縮小結果集。如果你設了某個縣市,可能會讓大部分任務都空手而歸;除非真的只看某個地方面交,不然建議先留空。

與其他監控工具的差異:它鎖在閒魚這個場域

ai-goofish-monitor 放回工具光譜看,它屬於「專注單一平台、用 AI 視覺加值」這一類。比起通用型的網路監控工具(例如 Sniffnet 著眼於流量可視化),它的視角完全鎖在閒魚商品流;比起通用型的 Python AI 工作台(例如 QuantDingerdYm 處理的是使用者自己的量化或歸檔資料),它的資料來源是固定的爬蟲,不是使用者提供的資料庫或本機檔案。

換句話說,它的價值與限制都來自同一個設計選擇:綁死閒魚。綁死的好處是 README、Web UI、AI prompt、通知格式全部針對閒魚欄位調整過;綁死的代價是這套工具不能直接搬到其他二手平台(蝦皮、旋轉拍賣、Facebook Marketplace)使用,要移植得自己改爬蟲層。

對於想了解「AI 視覺如何加進爬蟲流程」的讀者,它是一個閱讀價值很高的範例專案;對於想要跨平台監控的讀者,它更接近一份單平台參考實作。

授權、社群與維護狀態:高星數但已封存

ai-goofish-monitor 採 MIT 授權,LICENSE 落款是 dingyufei615;GitHub organization 名稱 Usagi-org 是作者用的組織帳號。比起許多同類開源工具介紹案例裡常見「README 寫 MIT 但倉庫無 LICENSE 檔」的授權狀態不明確情況,這個專案的授權狀態是清晰的,是可以拿來自用、修改、再散布的。

不過,高星數不等於持續維護。專案在 GitHub 上的狀態是 archived(已封存),最近一次 commit 落在 2026-05-18,截至 2026 年 7 月約兩個月未再更新。最後一個正式 release 是 v2.4(2026-04-27 發布),最後一次 commit 則是合併一份安全性修補,修掉 /api/prompts/{filename} endpoint 的路徑遍歷漏洞(PR #489)。可以推論,作者選擇在修完這個安全問題之後把專案封存,凍結在一個相對完整的版本上。

封存意味著作者已經主動標示「不再維護」,未來若閒魚改版導致爬蟲失效、或 Chromium/Playwright 有重大更新,這個專案不會再收到修正。56 個未關閉的 issue 也不會再被處理。這是部署前必須接受的事實:你部署的是一個凍結在 2026 年 5 月的版本,未來修補要靠你自己 fork 出去改。把它當作「研究用參考實作」比當作「長期生產服務」更合適。

作者在 README 的致謝段落列了兩條線索:參考了 superboyyy/xianyu_spider 這個前身專案,並感謝 LinuxDo 社群 (@jooooody 等) 的腳本貢獻。這份程式碼建立在已經存在的閒魚爬蟲生態上,再把視覺模型與 Web 介面疊上去,不是從零開始。

台灣讀者的適用性邊界

對台灣讀者來說,使用這個工具前要先把幾個地理與帳號前提處理掉。

閒魚帳號前提。閒魚是中國大陸的 C2C 平台,要登入閒魚本身就需要中國手機門號綁定的淘寶或支付寶帳號。對台灣讀者來說,這通常是跨境拍賣或人民幣收付需求才會跨進去的場域。

網路環境前提。從台灣連閒魚的網路品質與可用性,取決於你的網路環境。Playwright 跑的是瀏覽器,吃的是你宿主機的網路;要不要走代理、走哪個代理,是部署前要先決定的事,工具本身只提供 PROXY_URL 與代理輪換機制讓你掛上去。

預設 AI 端點位置。預設的 AI 端點在中國大陸(ModelScope),預設的視覺模型是小米 MiMo。如果你想把資料流向限縮在非中國基礎設施,這組預設值必須改掉;可選的替代包括 OpenAI、Azure OpenAI、Cloudflare AI 或自架的 Ollama/vLLM。

對台灣讀者來說,這個工具的最佳應用場景,是「已經在跨境買人民幣計價的二手 3C、零件、收藏品,而且願意自己處理帳號與網路前提」的那一群人。對一般本地二手交易,旋轉拍賣、蝦皮台灣在地拍賣更貼近日常。

適合誰、不適合誰

適合不適合
想研究 AI 視覺整合進爬蟲流程的開發者想找長期穩定、會持續更新的生產服務
已有閒魚帳號、做跨境二手收物的玩家只在台灣本地二手市場活動的一般使用者
願意自架 Docker、自己處理 AI key 與代理期望開箱即用、不願碰設定的使用者
把它當 MIT 授權參考程式碼來改寫想直接商用轉售、卻不願自行承擔維護

把它放回 TripStar 這類「開源 AI Agent」與 dYm 這類「本機 SQLite + AI 上標籤」的光譜來看,ai-goofish-monitor 是同一個「dual-use 開源專案」家族裡,鎖定電商平台爬蟲加視覺判讀這個利基的成員。它能不能用,取決於你願不願意把帳號、網路、AI 端點與維護責任一次扛起來。

常見問題

可以用它來監控蝦皮或旋轉拍賣嗎?

不行。它的爬蟲層是專門為閒魚寫的,要移植到其他平台得自己改寫抓取邏輯、登入態處理與欄位解析。README 也沒有提供其他平台介接的選項。

AI 視覺判讀會不會把圖留在本機?

不會。預設行為是把圖送到你設定的 OpenAI 相容端點;要讓圖真的不出本機,得自己接本地推論方案當 OpenAI 相容伺服器(例如 Ollama 或 vLLM 上跑視覺模型),並把 OPENAI_BASE_URL 指過去。

這個專案還在維護嗎?

截至 2026 年 7 月,GitHub 上的狀態是 archived(已封存),最近一次更新是 2026-05-18。作者不再 push 修正,閒魚改版造成的破壞不會被修。

會不會違反閒魚的服務條款?

工具的 DISCLAIMER.md 明確把它定位為學習研究用途,並要求使用者遵守所在司法管轄區的法律。實際是否違反閒魚 ToS,取決於你的使用頻率、行為模式與閒魚當時的政策;帳號風險由使用者自負。

MIT 授權可以商用嗎?

可以。MIT 是寬鬆授權,允許商用、修改、再散布,只要保留版權宣告與授權條款。實際能不能順利用在商業場景,還是要看你的使用情境是否牴觸閒魚 ToS 或當地法規。

結語:一份值得讀、但要自己接手的開源實作

ai-goofish-monitor 把 AI 視覺加進閒魚爬蟲的設計,讓它在通用監控工具的類別裡有一個清晰的位置:它把「自然語言條件 + 視覺判讀 + 多頻道通知」這一套組合,鎖在中國大陸最大的 C2C 二手平台上,不走全網監控路線,也不是 local-first 的隱私工具。對台灣讀者來說,價值更接近研究與跨境採購的輔助角色,日常使用空間有限。

如果你打算部署它,記得把幾件事一起寫進清單:改掉預設密碼、把 Web UI 放在 HTTPS 反向代理後面、把 AI 端點改成你信任的服務、把使用頻率壓在閒魚風控可以接受的範圍內。如果你只是想看 AI 視覺怎麼跟爬蟲綁在一起,這份 MIT 授權的程式碼本身就是一份夠完整的閱讀材料。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 702

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...