dsh-toutiao-reader: 今日頭條文章抓取插件

前言

在 DeepSeek Harness (DSH) 的生態中,將真實場景的閱讀經驗打包成工具是提升智能體能力的關鍵。dsh-toutiao-reader 正是這樣一款插件,它將作者在處理今日頭條文章時的實戰經驗封裝爲 webfetch 工具與 toutiao-reader 技能。

今日頭條的靜態頁面通常會被其反爬機制攔截(如 __ac_nonce、__ac_signature),直接請求會返回安全驗證頁,而 web_search 僅能返回摘要。這款插件填補了這一空白:它接收文章鏈接,返回標題與完整的純文本內容。

核心功能

該插件主要由兩部分組成:

  1. webfetch 工具
    實現三級抓取策略,確保高成功率:

    • 直連: 靜態直連,約 1 秒(基於域名緩存記憶哪些站點需要瀏覽器)。
    • Edge 常駐 CDP: 冷啓動約 20 秒,啓動後在 9333 端口監聽。後續請求約 3-6 秒。複用持久標籤頁,並主動屏蔽圖片與字節跳動 CDN 以提速。支持自動處理安全驗證頁(質詢頁)。
    • dump-dom 兜底: 當 CDP 不可用時的一鍵渲染兜底方案。
  2. toutiao-reader 技能
    封裝了一套完整的模型調用文檔,涵蓋:

    • 今日頭條 URL 形態識別。
    • 讀取 method 字段以判斷抓取層級。
    • 質詢頁處理與重試節奏控制。
    • 常駐無頭瀏覽器的管理(端口/PID/停止命令)。
    • 針對短文本或空文本的排查邏輯(如視頻頁、App 插頁)。

安裝與啓用

命令行安裝

使用官方 CLI 命令添加插件:

dsh plugin --profile web add dsh-toutiao-reader

插件市場安裝

在 DSH Web 界面中:
1. 進入 Settings。
2. 找到 Plugin Market。
3. 搜索 “toutiao” 並安裝。

本地開發安裝(手動)

如果進行本地開發,需手動創建 Junction 並修改配置:

New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\profiles\web\node_modules\dsh-toutiao-reader" -Target "<plugin dir>"

隨後修改該 profile 的 package.json,在 dependencies 中添加 "dsh-toutiao-reader": "link:<plugin dir>",並在 dsh.profile.bundles 中添加 "dsh-toutiao-reader"。

配置

在 DSH Web 的 cordis.patch.yml 中,啓用 id-override 模式(僅覆蓋 ID,不重新插入):

- id: dsh-toutiao-reader
  config:
    workspace: D:/DSH_Workspace  # 相對 outfile 路徑的基目錄
    cdpPort: 9333                # CDP 調試端口
    browserPath: ""              # 瀏覽器路徑,留空則自動檢測 Edge 或 Chrome
    maxChars: 12000              # 默認文本截斷長度
    domainCachePath: ""          # 域名緩存路徑,留空則使用 %TEMP%/webfetch-domains.json

典型用法

調用 webfetch

模型調用 webfetch(url),返回結構如下:

{
  "method": "resident-edge-cdp",  // 抓取方式
  "title": "文章標題",
  "text": "文章正文內容...",
  "textLength": 1024,
  "truncated": false,
  "outfile": null,
  "error": null
}

參數說明:
* url (string, required): 文章鏈接。PC 端 www.toutiao.com/article/<id>/ 效果最佳,移動端/分享頁通常無正文。
* maxChars (number): 返回文本上限,默認 12000,最大 60000。超出時 truncated 設爲 true。
* outfile (string, optional): 將完整文本(標題+空行+正文)保存到文件。支持絕對路徑或相對於 workspace 的相對路徑。

注意事項

  1. 冷啓動延遲: 首次調用常駐瀏覽器需要約 20 秒,後續調用在 3-6 秒左右。這是正常現象。
  2. 只讀安全: 插件爲只讀模式,除非指定 outfile,否則不寫入本地文件;不讀取任何憑證,不涉及手機等隱私數據。
  3. 端口限制: 常駐無頭瀏覽器僅在 127.0.0.1 監聽,不對外暴露。
  4. 環境要求: 需要本地安裝 Edge 或 Chrome(自動檢測),且 Node.js 版本需 ≥ 20。
  5. 併發限制: isConcurrencySafe: false,因爲 CDP 複用單一標籤頁,調用必須串行化。
  6. 文本內容: 如果返回文本很短或爲空,通常是因爲視頻頁、問答頁或 App 插頁。建議切換至 PC 端 URL 使用。

結語

dsh-toutiao-reader 通過整合直連、常駐瀏覽器和 dump-dom 三級策略,解決了今日頭條文章抓取難的問題。它既可作爲獨立的插件使用,也能與工作區腳本共享常駐瀏覽器進程,適合需要在 DSH 環境中批量處理新聞或文章內容的開發者。

  • GitHub: https://github.com/RyanShen3/dsh-toutiao-reader
  • 目錄: https://www.skillhub.cn/plugins/RyanShen3/dsh-toutiao-reader
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜