mcpField
N
news-extractor

news-extractor

github.com/nanmicoder数据与数据库635402 次安装12 周前更新
代码仓库

关于 news-extractor

News Extractor 是用于从所列 12 个中外平台提取文章的 Agent Skill。它根据 URL 自动识别平台,并将结构化内容保存为 JSON 和 Markdown,适用于研究或内容处理流程。

主要功能

  1. 01支持所列 12 个平台
  2. 02根据 URL 自动识别平台
  3. 03提取并解析文章内容
  4. 04输出 JSON 和 Markdown
  5. 05支持通过 Cookie 获取受保护的 Twitter 推文

适用场景

  1. 01将新闻 URL 转换为结构化数据
  2. 02将文章保存为 Markdown 供阅读或研究
  3. 03使用 Cookie 提取受保护的 Twitter 推文

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nanmicoder/newscrawler --skill news-extractor

安装后在 Claude Code 中输入/news-extractor确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

pyproject.toml
uv.lock
references/
platform-patterns.md
scripts/
detector.py
extract_news.py
formatter.py
models.py
scripts/crawlers/
__init__.py
base.py
bbc.py
cnn.py
detik.py
fetchers.py
lenny.py
naver.py
netease.py
quora.py
sohu.py
tencent.py
toutiao.py
twitter_client.py
twitter_types.py
twitter.py
wechat.py

详细介绍

来自项目 README

News Extractor Skill

从主流新闻平台提取文章内容,输出 JSON 和 Markdown 格式。

标准兼容、独立可迁移:本目录遵循 Agent Skills 规范,包含完整的 SKILL.md、脚本与依赖,不依赖 NewsCrawler 的其他模块。通过兼容的 Skills 安装器安装后,运行一次 uv sync 即可使用。

运行环境需要 Python 3.9+、uv 和目标站点的网络访问。

支持平台 (12)

中文平台
平台IDURL 示例
微信公众号wechathttps://mp.weixin.qq.com/s/xxxxx
今日头条toutiaohttps://www.toutiao.com/article/123456/
网易新闻neteasehttps://www.163.com/news/article/ABC123.html
搜狐新闻sohuhttps://www.sohu.com/a/123456_789
腾讯新闻tencenthttps://news.qq.com/rain/a/20251016A07W8J00
国际平台
平台IDURL 示例
BBC Newsbbchttps://www.bbc.com/news/articles/c797qlx93j0o
CNN Newscnnhttps://edition.cnn.com/2025/10/27/uk/article-slug
Twitter/Xtwitterhttps://x.com/user/status/123456789
Lenny's Newsletterlennyhttps://www.lennysnewsletter.com/p/article-slug
Naver Blognaverhttps://blog.naver.com/username/123456
Detik Newsdetikhttps://news.detik.com/internasional/d-123456/slug
Quoraquorahttps://www.quora.com/question/answers/123456

依赖安装

本 skill 使用 uv 管理依赖。首次使用前需要安装:

cd <Agent Skills 目录>/news-extractor
uv sync

重要: 所有脚本必须使用 uv run 执行,不要直接用 python 运行。

依赖列表
包名用途
pydantic数据模型验证
requestsHTTP 请求
curl_cffi浏览器模拟抓取
tenacity重试机制
parselHTML/XPath 解析
demjson3非标准 JSON 解析

使用方式

基本用法
# 以下命令均在 news-extractor Skill 目录内执行

# 提取新闻,自动检测平台,输出 JSON + Markdown
uv run scripts/extract_news.py "URL"

# 指定输出目录
uv run scripts/extract_news.py "URL" --output ./output

# 仅输出 JSON
uv run scripts/extract_news.py "URL" --format json

# 仅输出 Markdown
uv run scripts/extract_news.py "URL" --format markdown

# Twitter 受保护推文 (需要 Cookie)
uv run scripts/extract_news.py "URL" --cookie "auth_token=xxx; ct0=yyy"

# 列出支持的平台
uv run scripts/extract_news.py --list-platforms
输出文件

脚本默认输出两种格式到指定目录(默认 ./output):

  • {news_id}.json - 结构化 JSON 数据
  • {news_id}.md - Markdown 格式文章

工作流程

  1. 接收 URL - 用户提供新闻链接
  2. 平台检测 - 自动识别平台类型
  3. 内容提取 - 调用对应爬虫获取并解析内容
  4. 格式转换 - 生成 JSON 和 Markdown
  5. 输出文件 - 保存到指定目录

输出格式

JSON 结构
{
  "title": "文章标题",
  "news_url": "原始链接",
  "news_id": "文章ID",
  "meta_info": {
    "author_name": "作者/来源",
    "author_url": "",
    "publish_time": "2024-01-01 12:00"
  },
  "contents": [
    {"type": "text", "content": "段落文本", "desc": ""},
    {"type": "image", "content": "https://...", "desc": ""},
    {"type": "video", "content": "https://...", "desc": ""}
  ],
  "texts": ["段落1", "段落2"],
  "images": ["图片URL1", "图片URL2"],
  "videos": []
}
Markdown 结构
# 文章标题

## 文章信息
**作者**: xxx
**发布时间**: 2024-01-01 12:00
**原文链接**: [链接](URL)

---

## 正文内容

段落内容...

![图片](URL)

---

## 媒体资源
### 图片 (N)
1. URL1
2. URL2

使用示例

提取微信公众号文章
uv run scripts/extract_news.py \
  "https://mp.weixin.qq.com/s/ebMzDPu2zMT_mRgYgtL6eQ"
提取 BBC 新闻
uv run scripts/extract_news.py \
  "https://www.bbc.com/news/articles/c797qlx93j0o"
提取 Twitter 推文
# 公开推文 (无需认证)
uv run scripts/extract_news.py \
  "https://x.com/BarackObama/status/896523232098078720"

# 受保护推文 (需要 Cookie)
uv run scripts/extract_news.py \
  "https://x.com/user/status/123456" --cookie "auth_token=xxx; ct0=yyy"

错误处理

错误类型说明解决方案
无法识别该平台URL 不匹配任何支持的平台检查 URL 是否正确
平台不支持非支持的站点本 Skill 仅支持列出的 12 个平台
提取失败网络错误或页面结构变化重试或检查 URL 有效性
认证失败Twitter Cookie 无效重新获取 Cookie

注意事项

  • 仅用于教育和研究目的
  • 不要进行大规模爬取
  • 尊重目标网站的 robots.txt 和服务条款
  • 微信公众号可能需要有效的 Cookie(当前默认配置通常可用)
  • Twitter 公开推文无需认证,受保护推文需要 Cookie

目录结构

news-extractor/
├── SKILL.md                      # [必需] Skill 定义文件
├── pyproject.toml                # 依赖管理
├── references/
│   └── platform-patterns.md      # 平台 URL 模式说明
└── scripts/
    ├── extract_news.py           # CLI 入口脚本
    ├── models.py                 # 数据模型
    ├── detector.py               # 平台检测
    ├── formatter.py              # Markdown 格式化
    └── crawlers/                 # 爬虫模块
        ├── __init__.py
        ├── base.py               # BaseNewsCrawler 基类
        ├── fetchers.py           # HTTP 获取策略
        ├── wechat.py             # 微信公众号
        ├── toutiao.py            # 今日头条
        ├── netease.py            # 网易新闻
        ├── sohu.py               # 搜狐新闻
        ├── tencent.py            # 腾讯新闻
        ├── bbc.py                # BBC News
        ├── cnn.py                # CNN News
        ├── twitter.py            # Twitter/X
        ├── twitter_client.py     # Twitter API 客户端
        ├── twitter_types.py      # Twitter 数据类型
        ├── lenny.py              # Lenny's Newsletter
        ├── naver.py              # Naver Blog
        ├── detik.py              # Detik News
        └── quora.py              # Quora

参考

评论

支持 Markdown