wechat-article-extractor について
wechat-article-extractor は、WeChat公式アカウントの記事URLやHTMLから内容とメタデータを抽出するツールです。記事収集や解析を行う開発者向けで、複数の記事形式を識別し、削除・期限切れ・アクセス制限などの状況も扱います。
主な機能
- 01WeChat記事URLの解析
- 02記事とアカウントのメタデータ抽出
- 03記事HTMLとカバー画像の取得
- 04複数の記事形式の識別
- 05アクセス・コンテンツエラーの処理
活用シーン
- 01記事タイトル、著者、公開日時の収集
- 02HTMLページからの記事内容の解析
- 03削除済み・期限切れ記事の識別
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ freestylefly/ wechat-article-extractor-skill --skill wechat-article-extractorインストール後、Claude Code で/wechat-article-extractorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreREADME.mdpackage.jsonconvert.jspackage-lock.jsonscripts/errors.jsextract.js詳細
WeChat 記事抽出ツール
WeChat 公式アカウント(微信公众号)の記事からメタデータとコンテンツを抽出します。
機能
- WeChat 記事の URL(
mp.weixin.qq.com)を解析 - 記事のメタデータを抽出:タイトル、著者、説明、公開時刻
- アカウント情報を抽出:名前、アバター、エイリアス、説明
- 記事コンテンツ(HTML)を取得
- カバー画像の URL を取得
- 複数の記事タイプに対応:投稿、動画、画像、音声、テキスト、転載
- 削除済みコンテンツ、期限切れリンク、アクセス制限など、さまざまなエラーケースに対応
使用方法
URL からの基本的な抽出
const { extract } = require('./scripts/extract.js');
const result = await extract('https://mp.weixin.qq.com/s?__biz=...');
// Returns: { done: true, code: 0, data: {...} }
HTML からの抽出
const html = await fetch(url).then(r => r.text());
const result = await extract(html, { url: sourceUrl });
オプション
const result = await extract(url, {
shouldReturnContent: true, // Return HTML content (default: true)
shouldReturnRawMeta: false, // Return raw metadata (default: false)
shouldFollowTransferLink: true, // Follow migrated account links (default: true)
shouldExtractMpLinks: false, // Extract embedded mp.weixin links (default: false)
shouldExtractTags: false, // Extract article tags (default: false)
shouldExtractRepostMeta: false // Extract repost source info (default: false)
});
レスポンス形式
成功時のレスポンス
{
done: true,
code: 0,
data: {
// Account info
account_name: "公众号名称",
account_alias: "微信号",
account_avatar: "头像URL",
account_description: "功能介绍",
account_id: "原始ID",
account_biz: "biz参数",
account_biz_number: 1234567890,
account_qr_code: "二维码URL",
// Article info
msg_title: "文章标题",
msg_desc: "文章摘要",
msg_content: "HTML内容",
msg_cover: "封面图URL",
msg_author: "作者",
msg_type: "post", // post|video|image|voice|text|repost
msg_has_copyright: true,
msg_publish_time: Date,
msg_publish_time_str: "2024/01/15 10:30:00",
// Link params
msg_link: "文章链接",
msg_source_url: "阅读原文链接",
msg_sn: "sn参数",
msg_mid: 1234567890,
msg_idx: 1
}
}
エラー時のレスポンス
{
done: false,
code: 1001,
msg: "无法获取文章信息"
}
エラーコード
| コード | メッセージ | 説明 |
|---|---|---|
| 1000 | 文章获取失败 | 一般的な失敗 |
| 1001 | 无法获取文章信息 | タイトルまたは公開時刻を取得できません |
| 1002 | 请求失败 | HTTP リクエストに失敗しました |
| 1003 | 响应为空 | レスポンスが空です |
| 1004 | 访问过于频繁 | アクセス頻度が高すぎます |
| 1005 | 脚本解析失败 | スクリプトの解析に失敗しました |
| 1006 | 公众号已迁移 | アカウントが移行されました |
| 2001 | 请提供文章内容或链接 | 入力がありません |
| 2002 | 链接已过期 | リンクの有効期限が切れています |
| 2003 | 内容涉嫌侵权 | コンテンツが削除されました(著作権侵害) |
| 2004 | 无法获取迁移后的链接 | 移行後のリンクを取得できませんでした |
| 2005 | 内容已被发布者删除 | コンテンツが投稿者によって削除されました |
| 2006 | 内容因违规无法查看 | 規約違反によりコンテンツを表示できません |
| 2007 | 内容发送失败 | コンテンツの送信に失敗しました |
| 2008 | 系统出错 | システムエラー |
| 2009 | 不支持的链接 | サポートされていない URL です |
| 2010 | 内容获取失败 | コンテンツの取得に失敗しました |
| 2011 | 涉嫌过度营销 | 過度なマーケティング/スパムコンテンツ |
| 2012 | 账号已被屏蔽 | アカウントがブロックされました |
| 2013 | 账号已自主注销 | アカウントが削除されました |
| 2014 | 内容被投诉 | コンテンツが報告されました |
| 2015 | 账号处于迁移流程中 | アカウントは移行中です |
| 2016 | 冒名侵权 | なりすましによる権利侵害 |
依存関係
必須の npm パッケージ:
cheerio- HTML 解析dayjs- 日付形式の整形request-promise- HTTP リクエストqs- クエリ文字列の解析lodash.unescape- HTML エンティティ
注意事項
- さまざまな WeChat ページ構造やスクレイピング対策に対応します
- ページのコンテンツから記事タイプを自動検出します
- Sogou WeChat 検索結果(
weixin.sogou.com)からの抽出に対応します - 記事タイプやページ構造によっては、一部のフィールドが null になる場合があります
コメント
Markdown 対応