mcpField
N
news-extractor

news-extractor

github.com/jackjin1997Data & databases1336 installsUpdated 19w ago
Repository

About news-extractor

A skill that extracts article content from five Chinese news platforms and saves structured JSON and Markdown files. It detects the platform from a URL and uses a platform-specific extractor to parse the article.

Key features

  1. 01Support five listed news platforms
  2. 02Detect platform from article URL
  3. 03Extract and parse article content
  4. 04Save JSON and Markdown files

Use cases

  1. 01Archive articles from supported news sites
  2. 02Convert article pages into structured JSON
  3. 03Save extracted articles as Markdown

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/jackjin1997/clawforge --skill news-extractor

After installing, type/news-extractorin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

.gitignore
pyproject.toml
uv.lock
references/
platform-patterns.md
scripts/
detector.py
extract_news.py
formatter.py
models.py
scripts/crawlers/
__init__.py
base.py
fetchers.py
netease.py
sohu.py
tencent.py
toutiao.py
wechat.py

Details

From the project README

News Extractor Skill

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

支持平台

平台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

依赖安装

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

# 项目级使用(推荐)
cd .claude/skills/news-extractor
uv sync

# 或用户级使用
cd ~/.claude/skills/news-extractor
uv sync

说明: 此 skill 可放置在项目级 (.claude/skills/) 或用户级 (~/.claude/skills/) 目录。项目级便于团队共享,用户级便于跨项目复用。

重要: 所有脚本必须使用 uv run 执行,不要直接用 python 运行。uv run 会自动使用项目虚拟环境中的依赖。

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

使用方式

基本用法
# 提取新闻,自动检测平台,输出 JSON + Markdown
uv run .claude/skills/news-extractor/scripts/extract_news.py "URL"

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

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

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

# 列出支持的平台
uv run .claude/skills/news-extractor/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 .claude/skills/news-extractor/scripts/extract_news.py \
  "https://mp.weixin.qq.com/s/ebMzDPu2zMT_mRgYgtL6eQ"

输出:

[INFO] Platform detected: wechat (微信公众号)
[INFO] Extracting content...
[INFO] Title: 文章标题
[INFO] Author: 公众号名称
[INFO] Text paragraphs: 15
[INFO] Images: 3
[SUCCESS] Saved: ./output/ebMzDPu2zMT_mRgYgtL6eQ.json
[SUCCESS] Saved: ./output/ebMzDPu2zMT_mRgYgtL6eQ.md
提取今日头条文章
uv run .claude/skills/news-extractor/scripts/extract_news.py \
  "https://www.toutiao.com/article/7434425099895210546/"

错误处理

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

注意事项

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

参考

Comments

Markdown supported