這個周末,我終于用低成本干成了一件想了六年的事:讓 AI 替我把文章自動發到五個平臺。知乎回答、微博、頭條號、百家號、公眾號,全程我就在旁邊說要求,完全沒動手。這篇把技術實現拆開說說,希望能幫大家少走我踩過的所有坑。
瀏覽器遙控器 + AI大腦
要自動化發文章,繞不開一件事:你得讓程序能操作一個真實的瀏覽器。我選的是 CDP(Chrome DevTools Protocol)——Chrome 原生調試協議,通過 WebSocket 直連,能控制導航、點擊、輸入、執行 JS、截圖,幾乎瀏覽器能干的事它都能干。
我把它包成了一個 REST API 服務(qwen 幫我用 Go 寫的,取了易這個字,叫 easybrowser),暴露 52 個 API 操作。命令長這樣:
# 打開知乎curl -X POST http://127.0.0.1:58081/api/tool/browser_navigate -d '{"url":"https://www.zhihu.com"}'# 看頁面長什么樣(返回帶 ref 的可訪問性樹)curl -X POST http://127.0.0.1:58081/api/tool/browser_snapshot_ax -d '{"mode":"compact"}'# 點一個按鈕(ref 來自快照)curl -X POST http://127.0.0.1:58081/api/tool/browser_click -d '{"ref":"e12"}'
按用途分,這 52 個操作大致是六類:
- 感知:看頁面長什么樣——AX 樹快照(帶穩定 ref)、DOM 快照、可見元素快照、截圖、讀元素文本和屬性、取 URL 和標題、判斷元素可見/可用、數一數有幾個匹配元素
- 點操作:點擊、雙擊、填輸入框、按鍵(含 Ctrl+A 這種組合鍵)、選下拉框、勾復選框、滾動、懸停、拖拽、上傳文件
- 坐標級兜底:ref 拿不到時按坐標干活——單擊、雙擊、移動鼠標、滾動、拖拽路徑、聚焦輸入
- JS 直連:直接執行任意 JavaScript、用 JS 點擊/填表、調底層 CDP 接口
- 導航與 Tab:前進、后退、刷新、開新標簽頁、列標簽、切換、收養、關閉
- 等待與旁路:等元素出現、等 URL 變化、等固定時長、讀剪貼板、取控制臺日志、下載媒體文件
一共 52 個,基本覆蓋了我在瀏覽器里手動能干的所有事。我配的這套 api 不是抓包來的,是照著人類操作瀏覽器的習慣,參考openai的browseruse,個性化拆出來的。這是服務真實跑起來的接口列表:
![]()
AI 大腦負責看快照、決定點哪、填什么。它不用直接碰瀏覽器,只調用這個 REST API。這么一層拆開的好處是:換個 AI,底座不用動,一些純程序實現的 RPA 工作不用動,而且可以復用我真實的登錄狀態,不用費勁繞開驗證碼。
關鍵一:復用真實登錄態,規避反爬
這是我整個方案的地基,也決定了為什么不用 Selenium 和 Playwright。Selenium 起的是全新瀏覽器,沒的登錄態,過不了驗證碼,過不了風控。
我的做法:Chrome 以 啟動,跑在真實顯示器上,我在里面正常登錄一遍,之后所有平臺都「已登錄」。CDP 直連這個 Chrome,平臺風控看你就是看真人——指紋、Cookie、UA、行為全部一致。知乎那種惡心至極的反爬,對我這條路沒啥效果。
--remote-debugging-port=9222
關鍵二:AI 怎么看頁面、點按鈕
瀏覽器操作最難的,不是執行點擊,是告訴 AI 該點哪個。我的方案是三層遞進:
- AX 樹快照(主路徑):把頁面轉成帶穩定 ref 的可訪問性樹,。AI 直接引用 ref 點擊,不依賴脆弱的 CSS 選擇器
- e1、e2、e3…
- DOM 快照兜底:AX 樹覆蓋不到的復雜頁面,退到 DOM 行文本
- 坐標點擊:ref 都拿不到時,直接用坐標點
為了防「AI 反復截圖同一頁卡死」,還加了個硬切換:連續兩次快照結構沒變化,強制切到 DOM 路徑。
關鍵三:富文本編輯器怎么灌內容(全案最難)
知乎、公眾號的編輯器是 Draft.js 這類 React 富文本組件,普通的模擬鍵盤輸入根本灌不進去。格式全亂,圖片粘不進去。我踩出來的正確姿勢是「剪貼板橋接」:
- Markdown 轉成 HTML,有個細節:純圖片段落要解包成 ,否則圖片上下會多出空行
- 用 把 HTML 塞進系統剪貼板,指定 MIME 類型 (DISPLAY 指向真實顯示器)
- xclip
- text/html
- 模擬瀏覽器級全選、粘貼——必須用 CDP 的 的 類型。用普通的 不會觸發瀏覽器級快捷鍵,Ctrl+A、Ctrl+V 全部失靈
- Input.dispatchKeyEvent
- rawKeyDown
- keyDown
- Draft.js 的 自動把剪貼板 HTML 渲染成富文本,標題、加粗、圖片原樣保留
- convertFromHTML
就這么幾個細節,我讓 DS flash 調了兩個小時。如果早知道 和 的區別,就省掉一半調試時間。
rawKeyDown
keyDown
關鍵四:各平臺的坑(踩坑實錄)
知乎:專欄 API 用瀏覽器 fetch 跨域調用,被 CORS 攔死(),但是專欄沒有意義,沒有流量。我的正確路線是「回答模式」——在真實瀏覽器里搜索到相關的問題,選擇熱度最高最匹配的問題,然后 AI 打開問題頁,粘貼 HTML,點發布。
Failed to fetch
微博:文章編輯器是 SPA,用 fetch 抓 HTML 拿不到用戶信息——要直接用 JS 從頁面 DOM 里提取 uid。另一個坑:草稿保存接口只收 ,發 JSON 會返回「參數錯誤」。就這一個格式問題,能讓整篇內容存不進草稿箱。
form-urlencoded
頭條號 / 百家號:有官方內容發布接口,圖片走各自的上傳通道,直接提交審核。這倆是最省心的。
微博的普通動態:長文沒人點開,把文章用 PIL 渲染成排版長圖(1080px,Noto CJK,章節切分),先發一條全文微博,再逐章發帶精華和章節圖的引用微博,間隔 15 分鐘。這個流程我從 2020 年 2 月就在想,那時候還在用各種 RPA 工具,全都實現不了,這次終于如愿了。
LLM 的角色:不是寫代碼,是當腦子
這套系統里 LLM 不寫代碼,它做四件事:從文章提煉搜索關鍵詞、從候選問題里匹配最相關的、給全文和每個章節寫摘要、看頁面快照決定下一步點哪。
它還有個繞不開的特性:偶發返回空響應。我測了五次,兩次返回空。解法是重試——所有 LLM 調用統一加三到五次重試,縮輸入再試。
這里多說一句成本。開發這種類似RPA的 agent 任務是個燒 token 大戶:每一步 AI 都要讀整頁快照,調試五個平臺,燒了150萬 tokens。另外執行中還是需要AI幫忙看著點,也不是能無腦靠程序執行的。
所以AI的選型就一條標準:聰明到能穩定執行,便宜到敢天天跑。我現在的主力是 DeepSeek V4 Flash(輸入百萬 token 一塊錢)和 Qwen 3.8。貴一百倍的模型,同樣的活,我的錢包先撐不住了。
六年愿望的成功
知乎回答也已經發出去了,匹配的是熱度最高、跟文章最相關的問題:
![]()
頭條號、百家號的內容管理里,文章都在「已發布」列表里躺著:
![]()
![]()
微博主頁上,8 條圖文序列已經掛出來了,先全文、后逐章引用:
![]()
發布追蹤庫是 SQLite,每次發布自動記一條,cron 每六小時刷閱讀量:
![]()
結尾:技術價值 vs 商業價值
這套東西對我來說最大的價值不是省那四十五分鐘,是第一次用不到 20 塊錢的 API 成本,實現了想了好幾年,而且幾百塊一年 SaaS 都做不到的體驗。我只負責登錄和下指示,剩下全靠AI干活。
瀏覽器自動化這個方向,過去被 Playwright、Selenium 和各類 RPA 工具占據了,但它們都解決不了一個根本問題:沒有登錄態,而且對大模型不友好,我前幾年玩selenium也搞不定很多想法啊。
而 CDP 直連真實瀏覽器,把「登錄」這個最難的問題,用最簡單的方式繞了過去。然后讓AI能夠用執行命令行的方式操作瀏覽器,剩下的,就可以交給足夠聰明、足夠便宜的模型了。AI是真的會幫你探測到后端接口,然后直接調接口完成很多重復的活兒了。
技術棧清單:Go(CDP 服務)· Python(發布腳本)· PIL(長圖渲染)· SQLite(追蹤)· cron(定時)· DeepSeek V4 Flash / Qwen 3.8(AI 大腦)。如果你也有一堆重復的網頁操作想甩給 AI,這條路,值得走。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.