news-extractor について
5つの中国語ニュースプラットフォームから記事を抽出し、構造化された JSON と Markdown ファイルに保存するスキルです。URL からプラットフォームを判定し、対応する抽出処理で記事を解析します。
主な機能
- 01記載された5つのニュースサイトに対応
- 02記事 URL からサイトを判定
- 03記事の内容を抽出・解析
- 04JSON と Markdown ファイルを保存
活用シーン
- 01対応サイトの記事をアーカイブ
- 02記事ページを構造化 JSON に変換
- 03抽出した記事を Markdown で保存
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jackjin1997/ clawforge --skill news-extractorインストール後、Claude Code で/news-extractorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignorepyproject.tomluv.lockreferences/platform-patterns.mdscripts/detector.pyextract_news.pyformatter.pymodels.pyscripts/crawlers/__init__.pybase.pyfetchers.pynetease.pysohu.pytencent.pytoutiao.pywechat.py詳細
ニュース抽出スキル
主要なニュースプラットフォームから記事の内容を抽出し、JSON と Markdown 形式で出力します。
対応プラットフォーム
| プラットフォーム | ID | URL の例 |
|---|---|---|
| WeChat 公式アカウント | https://mp.weixin.qq.com/s/xxxxx | |
| 今日頭条 | toutiao | https://www.toutiao.com/article/123456/ |
| 網易ニュース | netease | https://www.163.com/news/article/ABC123.html |
| 捜狐ニュース | sohu | https://www.sohu.com/a/123456_789 |
| Tencent ニュース | tencent | https://news.qq.com/rain/a/20251016A07W8J00 |
依存関係のインストール
このスキルでは、依存関係の管理に uv を使用します。初回使用前にインストールしてください。
# 项目级使用(推荐)
cd .claude/skills/news-extractor
uv sync
# 或用户级使用
cd ~/.claude/skills/news-extractor
uv sync
説明:このスキルは、プロジェクトレベル(
.claude/skills/)またはユーザーレベル(~/.claude/skills/)のディレクトリに配置できます。プロジェクトレベルではチームで共有しやすく、ユーザーレベルでは複数のプロジェクトで再利用しやすくなります。
重要:すべてのスクリプトは uv run を使用して実行してください。python で直接実行しないでください。uv run はプロジェクトの仮想環境にある依存関係を自動的に使用します。
依存関係の一覧
| パッケージ名 | 用途 |
|---|---|
| pydantic | データモデルの検証 |
| requests | HTTP リクエスト |
| curl_cffi | ブラウザーを模倣した取得 |
| tenacity | 再試行の仕組み |
| parsel | HTML/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)に 2 種類の形式で出力します。
{news_id}.json- 構造化された JSON データ{news_id}.md- Markdown 形式の記事
ワークフロー
- URL の受け取り - ユーザーがニュースのリンクを指定します
- プラットフォームの検出 - プラットフォームの種類を自動で識別します
- コンテンツの抽出 - 対応するスクレイパーを呼び出して、コンテンツを取得・解析します
- 形式の変換 - JSON と Markdown を生成します
- ファイルの出力 - 指定したディレクトリに保存します
出力形式
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)
---
## 正文内容
段落内容...

---
## 媒体资源
### 图片 (N)
1. URL1
2. URL2
使用例
WeChat 公式アカウントの記事を抽出する
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 が正しいか確認してください |
平台不支持 | 対応していないサイトです | このスキルは、一覧に記載されたニュースサイトのみをサポートします |
提取失败 | ネットワークエラー、またはページ構造の変更です | 再試行するか、URL が有効か確認してください |
注意事項
- 教育および研究目的でのみ使用してください
- 大規模なスクレイピングは行わないでください
- 対象サイトの robots.txt と利用規約を尊重してください
- WeChat 公式アカウントでは、有効な Cookie が必要な場合があります(現在のデフォルト設定で通常は利用できます)
参考資料
コメント
Markdown 対応