前言¶
新聞站點的列表往往藏在接口裏,詳情頁又可能是 CSR 或帶簽名的請求。很多人先寫詳情解析,翻頁和增量策略後面再補,結果內存裏堆完全部歷史頁、重複入庫、反爬觸發後沒有可觀測信號。下面介紹 SkillHub 上的「新聞爬蟲工程」Skill:它用一套固定的工程流程,指導 Agent 從偵察數據源、設計表結構,到增量回填、監控報警和驗收清單,把單次腳本改成長期運行的採集管道。
這是什麼¶
「新聞爬蟲工程」(座標 @user_756344a1/news-crawler-engineering,版本 1.0.2)是社區來源(community)的 Agent Skill,分類爲 data-analysis,發佈者爲 user_756344a1。Skill 不要求 API Key(requires_api_key=false)。
官方簡介說明其用途:設計、實現、審查並加固新聞/資訊爬蟲,使其作爲生產級數據管道運行;適用於構建、分析、調試或重構新聞站爬蟲、市場資訊爬蟲、輿情采集、列表/詳情抽取、分頁、增量回填、反爬分析或爬蟲庫表設計等任務。
核心功能¶
Skill 內容基於通用 SKILL.md 格式,把「一個站點 = 採集系統中的一個 source」作爲前提,主要覆蓋以下已寫明的能力。
偵察與採集模式¶
- 先偵察:定位真實列表 API、分頁參數、欄目 ID、詳情 URL 規則;確認列表是否已帶標題、時間、來源、圖片、摘要、正文;在頁面與 JS 中查找
ajax、fetch、page、columnId等線索;涉及 JS/簽名/cookie 時建議使用瀏覽器 Network,並提到可配合user-js-reverseMCP。 - 再選模式:API 含全文則以 API 爲主;僅列表則 API 分頁 + 詳情頁補正文;純靜態 HTML 則解析分頁列表與詳情;強 CSR/反爬則先逆向 API/簽名再重放。
數據模型與字段規範¶
- 主表參考
get_market_news_info,正文與大字段放在get_market_news_content(content、content_html、images、raw_data)。 - 業務唯一鍵:
UNIQUE KEY uk_source_unique_id (source, source_unique_id);news_id僅作關聯,不作爲內容表唯一鍵。 - 字段規則包括:
media_name爲採集站點名;original_source爲文章展示的真實來源;summary不得填站點固定描述;author不得用editor冒充;stock_list爲純字符串數組如["AAPL","INTC"];crawl_error只存短錯誤信息;站點擴展字段進extra_data。 - 正文成功判定:有文本即成功;無文本但有圖片也算成功;無文本且無圖片則
crawl_status = 4。
正文抽取優先級¶
- API 分段/塊結構(段落邊界最準)。
- HTML 詳情頁已知容器選擇器。
- 全頁
get_text()按行拆分(最後手段)。
段落用 \n\n 分隔;塊結構裏圖文交錯時,在 content 中用 [圖片:caption] 佔位,images 按出現順序存 URL。說明中強調:Referer 或詳情 URL 含中文等非 ASCII 時需 URL 編碼(如 urllib.parse.quote)。
增量、回填與入庫¶
標準策略:按 source + column_name 查 MAX(publish_time);無歷史則閾值 now - backfill_days(默認 90 天);有歷史則 max_publish_time - overlap_hours(默認 6 小時);按欄目分頁遍歷;每頁批量去重、拉詳情、立刻 upsert,整頁早於閾值則停止翻頁。禁止把所有欄目歷史頁攢在內存裏最後一次性寫入。
存儲要求:主表與內容表同一事務;使用 INSERT ... ON DUPLICATE KEY UPDATE;失敗記錄也要落庫便於重試。crawl_status 取值 1–5 分別表示成功、詳情請求失敗、頁面結構異常、正文爲空、解析異常。
翻頁停止與穩定性¶
區分「本頁文章全部早於閾值」(should_stop=True,正常結束)與「API 失敗或空列表」(should_stop=False,累加 consecutive_empty)。連續空頁(建議 3 頁)應中斷並告警。API 失敗應返回 ([], False) 而非誤設 should_stop=True。
監控報警(Skill 要求內置)¶
三層通知:未捕獲異常;total_success == 0;詳情失敗率超過 50%。Skill 內給出 main() 與飛書/通知的示例結構。
代理與內存¶
海外站點可能需直連、對默認代理顯式 proxies={};實現前先驗證是否要代理、是否有 TLS 指紋檢測。task 字典只保留入庫所需字段,逐頁處理避免內存堆積。
代碼與驗收¶
爬蟲腳本文件頭需含 @Desc 與 來源url: 行。交付前需跑通列表→詳情→解析,並覈對表結構、樣例雙表寫入、JSON 字段、編碼、summary/original_source、重跑跳過已成功行、失敗可重試、報警與代理行爲等檢查項。
安裝與啓用¶
SkillHub 頁面給出的安裝提示爲:讓 AI 根據 SkillHub 安裝文檔 安裝 @user_756344a1/news-crawler-engineering。
已安裝 SkillHub CLI 時,安裝須用 --dir 指向當前 Agent 的 skills 目錄,否則默認落在 ./skills/ 且可能不被識別:
command -v skillhub && skillhub --version
skillhub install @user_756344a1/news-crawler-engineering --dir <skills 目錄>
常見路徑(來自官方安裝文檔):
- Cursor:
~/.cursor/skills/ - Claude Code:
~/.claude/skills/ - Codex:
~/.codex/skills/或項目下.agents/skills/
未安裝 CLI 時,可使用官方一鍵腳本(完整安裝含 CLI 與默認 Skill):
curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash
安裝後需在對應客戶端中讓 Agent 加載 skills 目錄中的 Skill(部分環境需重啓或重新打開會話)。Codex CLI、Claude Code 與 Cursor 的差異主要體現在 skills 目錄位置,安裝命令本身一致。
典型用法¶
Skill 通過 description 觸發:當對話涉及新聞爬蟲工程化任務時,Agent 應按 Skill 中的 Workflow 執行。可復現的啓用方式示例:
- 安裝 Skill 到當前環境的 skills 目錄(見上一節命令)。
- 在 Cursor 等客戶端中提出具體任務,例如:「爲某財經快訊欄目做增量爬蟲,列表是 POST JSON 分頁,需要按 Skill 裏的表結構設計主表和內容表,並實現三層報警。」
- Agent 應先完成偵察清單(列表 API、分頁、字段是否含正文),再輸出類結構爬蟲(欄目配置、閾值、按頁去重入庫、詳情解析、事務 upsert),並按 Verification Checklist 要求端到端跑通腳本。
Skill 內嵌的 Python 片段可作爲實現參考,例如翻頁循環中區分 raw_tasks 與去重後 tasks、以及 main() 中的零入庫與失敗率判斷邏輯,均可在安裝後的 SKILL.md 中直接查看。
適用場景與注意¶
適合誰: 需要把新聞/資訊/市場快訊採集做成可維護管道的數據工程師、後端或爬蟲開發者;需要統一庫表、增量策略、字段語義和評審清單的團隊。
限制與注意:
- Skill 是工程規範與流程指引,不替代你對目標站點的合規審查與 robots/服務條款約束;反爬與簽名逆向仍須結合站點策略與
user-js-reverse等工具。 - 文檔中的表名(如
get_market_news_info)來自 Skill 約定,落地時需與你們現有庫表對齊或做映射。 - SkillHub 統計(截至資料抓取):評分 100000,下載 3676 次;以 SkillHub 技能頁 爲準。
結尾¶
「新聞爬蟲工程」把偵察、模式選擇、雙表模型、增量回填、翻頁語義、內置監控和驗收清單寫進同一套 Skill,適合在 Agent 輔助開發時減少「能跑但不穩」的爬蟲交付。官方入口:SkillHub - 新聞爬蟲工程,API 座標頁:https://api.skillhub.cn/user_756344a1/news-crawler-engineering。