TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南
TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南

gansgoods 開發的 Chrome MV3 擴充,把閒魚(Goofish)與 Fiverr 網頁聊天對話勾選後匯出成 HTML 或 Markdown,純前端零外送,但圖片影片是外連 CDN 連結非內嵌。
用 AI 摘要這篇文章:
把一段閒魚對話匯出成檔案,聽起來是「備份」兩個字就能講完的事。但實際打開任何一個匯出工具的原始碼,你會看到一條很清楚的承諾邊界:文字訊息的結構(誰說的、什麼時候說的、回覆了誰)可以被完整帶走,圖片和影片卻多半只是記下原本的 CDN 連結,連結過期就破圖。xianyu-chat-exporter 就是落在這條邊界上的工具。它是 GitHub 上 gansgoods 開發的 Chrome Manifest V3 擴充,做的事很單純:在閒魚(Goofish)或 Fiverr 的網頁聊天室裡,把你勾選的訊息抓下來,存成一份 HTML 或 Markdown 檔案。
它的價值和它的限制都來自同一個設計選擇:擴充只讀你眼前那個分頁的畫面(DOM),讀完用瀏覽器自己的下載功能產生檔案,全程不經過任何伺服器。這代表你的對話內容不會外流給作者或第三方,但也代表它能否抓得到,完全取決於閒魚和 Fiverr 前端長什麼樣子,平台一改版就可能失效。
整個擴充只有四個權限:activeTab(讀你正在看的那個分頁)、scripting(把提取程式碼注入那個分頁)、downloads(把產生的檔案存下來),以及一條 host_permissions 限制它只能在 xianyu.com、goofish.com、fiverr.com 這三個域名上動作。沒有 tabs(不能看你其他分頁)、沒有 storage(不把資料存在瀏覽器裡)、沒有 webRequest(不攔截網路請求)、也沒有背景常駐腳本。你按下工具列圖示的那一刻它才開始動作,放開就不做事。這和 tabs 權限的差別值得留意:activeTab 只在你主動點擊擴充時對那個分頁臨時生效,tabs 則會讓擴充持續讀取所有分頁的網址和標題。少了 tabs,這個擴充就無法在背景默默記錄你逛過哪些聊天室,這對一個會讀取私人對話的工具來說是重要的信任界線。

運作流程拆開來看:你點擊擴充圖示後,popup.js(全檔 936 行)先用 chrome.tabs.query 拿到當前分頁的網址,判斷是閒魚還是 Fiverr;接著用 chrome.scripting.executeScript 把對應的提取函式注入分頁,在那個分頁的環境裡讀取 DOM。閒魚的聊天訊息包在 Ant Design 的 ant-list-item 元素裡,擴充靠 class 名稱找到文字、圖片容器、影片標籤,再靠 inline style 裡的 direction: rtl 或 text-align: right 判斷哪幾則是你自己發的。抓出來的訊息陣列回傳給 popup,你可以在面板上逐則勾選,接著按下匯出按鈕時,generateHtml 或 generateMarkdown 把選中的訊息組成檔案字串,用 Blob 包成物件再交給 chrome.downloads.download 存檔。
我把整份 popup.js 讀過一遍,沒有任何 fetch、XMLHttpRequest 或對外的 chrome.runtime.sendMessage 呼叫。README 裡「純前端實現,不上傳任何資料」這句話,原始碼層級是站得住的。你的對話從閒魚網頁走到你自己的下載資料夾,中間沒有別的伺服器。幾個值得記下的實作細節:擴充會先掃一遍所有訊息找出有效的頭像 URL(過濾掉 tps-2-2、tps-1-1 這類 2×2 像素的阿里雲佔位圖),再用這顆頭像回填那些還沒載入頭像的訊息;時間戳不在每則訊息上,要往前找帶有 text-align: center 的日期分隔符號;HTML 匯出檔是自足的單一檔案,CSS 和 JavaScript(含圖片點擊放大、25% 到 300% 縮放的 lightbox)都內嵌在一份 HTML 裡,但圖片本身不內嵌,這點下一節會講。
匯出按鈕旁有一個除錯勾選框,勾了之後會在 HTML 或 Markdown 之外,多下載一份 JSON 原始資料檔(包含匯出時間、對話標題、總訊息數、選中訊息數,以及每則訊息的完整欄位)。這個選項主要給開發者看提取結果用,一般人不會用到。
大多數介紹這個擴充的文章只提閒魚,但 manifest.json 的 name 欄位直接寫著閒魚與 Fiverr 的聊天紀錄匯出(原文是簡體中文),host_permissions 也明確列入 fiverr.com。原始碼裡有兩條獨立的提取路徑:extractXianyuMessages 處理閒魚(同時涵蓋 xianyu.com 與 goofish.com,後者是閒魚的海外品牌名),extractFiverrMessages 處理 Fiverr。如果你在 Fiverr 上接案,想把和某個客戶的往來溝通留底,這個擴充同一套介面也能用。
不過兩條路徑的細緻度並不對等。閒魚那條會結構化處理引用回覆(找 reply-container)、圖片高清版(.ant-image-img)、影片、甚至引用訊息裡的圖片和影片(還會比對圖片 ID 避免重複顯示);Fiverr 那條主要靠解析整個訊息元素的 textContent,用正則比對 21 Dec 2025, 11:29 這類英文日期格式來切出時間戳,再從時間戳後面截取訊息文字,發送者名稱則嘗試從 figure[title] 或 p 元素抓。引用回覆、影片附件、引用圖片在 Fiverr 路徑裡對應的欄位全部是空字串。換句話說,Fiverr 匯出的檔案不會保留「你回覆了哪一則」的關係,也抓不到影片附件,只能拿到純文字和圖片連結。如果你主要在 Fiverr 上用,要預期匯出內容比閒魚那邊陽春不少。
這是整個工具最需要想清楚的限制。generateHtml 產生的 HTML 檔裡,圖片是 <img src="https://img.alicdn.com/...">,影片是 <video src="...">,來源都是閒魚原本的 CDN 位址,不是被下載下來嵌入檔案的 base64 資料。Markdown 匯出也是一樣,圖片寫成 。README 的注意事項自己寫了一句:「閒魚圖片連結來自阿里雲 CDN,有時效性」。
這句話的實際意思是:你匯出的檔案本身很小(純文字加連結),但打開它看圖需要連網,而且那些 CDN 連結過一段時間會失效。失效之後你的文字訊息還在,頭像、商品照、對方傳的圖片會全部變成破圖。Markdown 匯出的結構相對單純:按時間戳分組成三級標題,每則訊息標出發送者與內容,圖片寫成連結形式、影片也是連結,適合貼進筆記軟體做純文字搜尋,但同樣逃不掉 CDN 過期的問題。所以與其說這個工具「備份你的聊天」,不如說它「把你和對方的文字對話結構化帶走,媒體部分只留一張借閱單」。如果你的目的是留存交易糾紛的證據(對方傳的商品照、收件地址截圖),光靠這份匯出檔是不夠的,你還得另外把那些圖片手動下載一份。

先看授權。這個倉庫在 GitHub 上沒有任何 LICENSE 檔,GitHub API 回傳的 license 是 null。公開不等於授權,沒有授權條款代表法律上你沒有明確的修改、再散布或商業使用權利,只能在合理使用範圍內自己裝來用。很多介紹文章直接叫它「開源工具」,這在授權層級是不精確的說法;比較準確的描述是「原始碼公開但授權狀態未明確」。作者在 README 放了 Ko-fi、微信與支付寶的捐贈連結,工具本身免費,但捐贈不等於授權。
維護狀態是另一個硬傷。倉庫在 2025 年 12 月 20 日一天內密集提交了十幾個 commit(從基本功能到引用圖片、影片修 bug),2026 年 1 月 31 日補上 Fiverr 支援和捐贈連結後就沒有再動。截至目前沒有任何 release 或 tag,唯一的 issue 是作者自己開給自己合併的 lightbox 功能分支(#1)。超過半年沒有新 commit、0 個正式版本、沒有任何外部使用者回報的 issue 被處理,這對一個依賴別人網站 DOM 結構的擴充來說,代表一旦閒魚或 Fiverr 改版把前端元件換掉,沒有人會出來修。再加上它從未上架 Chrome 線上應用程式商店,只能透過開發者模式手動載入未封裝的原始碼資料夾,這代表擴充沒有經過商店的自動審核流程,你得自己承擔載入未審核擴充的安全風險。
更根本的限制是它抓資料的原理決定的脆弱。擴充靠 ant-list-item、message-text 這類 class 名稱,以及 inline style 裡的 direction: rtl 或 text-align: right 來辨識訊息和發送者,這些都是網站前端框架(閒魚用的是 Ant Design)的實作細節,不是公開 API,隨時可能因為改版而變。它還有一個容易踩到的使用前提:你必須先在聊天頁面手動往上捲到底,讓懶加載的歷史訊息都載進 DOM,擴充才抓得到完整對話;如果你只捲了最近一段就點匯出,拿到的就只有那段。作者在 README 的使用步驟裡特別把這一步標成「重要」,但介面上沒有任何提示或自動捲動機制。
匯出的是「你和某個人的完整對話」,這份檔案裡同時包含對方發的訊息、對方的頭像、對方傳的圖片,而對方完全不會知道你做了這件事。在閒魚這類二手交易平台上,聊天內容經常出現收件地址、電話、付款約定;在 Fiverr 上則可能涉及客戶的接案需求與報價。把這些內容結構化存檔,正當用途是交易留底、客戶溝通備份、換手機或換平台時把紀錄留一份。但如果把檔案轉傳、公開,甚至拿對方傳的私訊或影像去做別的事,就踩到隱私和法律的線。
另外要提醒的是,透過瀏覽器自動化方式抓取平台對話,在閒魚或 Fiverr 的使用條款裡怎麼認定,需要你自己翻條款確認。工具本身是中性的前端 DOM 讀取,但怎麼用、用在哪個平台、把匯出的內容拿去做什麼,風險要自己評估。如果你也對閒魚生態的其他工具感興趣,可以看看我們寫過的 閒魚商品 AI 監控工具,那是做商品降價提醒的,和這裡的匯出是不同功能。
這個擴充適合的人是:在閒魚或 Fiverr 上有需要留底的對話(交易糾紛證據、客戶溝通紀錄、平台搬家前的備份),能接受圖片影片要自己另外存,也願意承擔「平台改版後可能突然失效」這個風險。它不適合想拿來做永久媒體備份的人(CDN 連結會過期),也不適合打算商用再散布的人(沒有授權條款)。如果你要的是把平台內容整批搬進本機長期保存,類似 dYm 把抖音影片下載進本機 SQLite 歸檔 那種做法,這個擴充的媒體外連設計是辦不到的。
安裝方式是 Chrome 擴充的開發者模式:從 GitHub 把整個倉庫下載成 ZIP 解壓縮(或 git clone),打開 chrome://extensions/,右上角開啟開發者模式,點「載入未封裝項目」選那個資料夾就完成。它沒有上架 Chrome 線上應用程式商店,所以只能這樣手動載入,這也意味著它沒有經過商店審核。裝好之後,打開閒魚或 Fiverr 的聊天頁面,先把訊息捲到最頂端讓歷史紀錄載完,再點擴充圖示,勾選要匯出的訊息,選 HTML 或 Markdown 下載即可。
整體看,xianyu-chat-exporter 是一個把「我要把自己在平台上的對話搬一份到本機」這個需求做到最小可用版本的工具:資料流乾淨、權限節制、零外送,這些是它的優點;但無授權、半年未更新、媒體靠外連 CDN、DOM 選擇器隨時可能失效,這些是你在依賴它之前必須先認清的代價。把它當應急的留底工具,比把它當永久的備份方案,更貼近它實際能做的事。如果你要的是持續、被動地把刷過的內容存下來,可以參考 ThatTweet 那種自動留存推文進本機知識庫 的做法,和這裡手動勾選匯出是不同思路。