前言¶
新闻站点的列表往往藏在接口里,详情页又可能是 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。