mcpField
W
wechat-article-extractor

wechat-article-extractor

github.com/freestyleflyデータ・データベース1403.9k 回インストール36 週間前に更新
リポジトリ

wechat-article-extractor について

wechat-article-extractor は、WeChat公式アカウントの記事URLやHTMLから内容とメタデータを抽出するツールです。記事収集や解析を行う開発者向けで、複数の記事形式を識別し、削除・期限切れ・アクセス制限などの状況も扱います。

主な機能

  1. 01WeChat記事URLの解析
  2. 02記事とアカウントのメタデータ抽出
  3. 03記事HTMLとカバー画像の取得
  4. 04複数の記事形式の識別
  5. 05アクセス・コンテンツエラーの処理

活用シーン

  1. 01記事タイトル、著者、公開日時の収集
  2. 02HTMLページからの記事内容の解析
  3. 03削除済み・期限切れ記事の識別

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/freestylefly/wechat-article-extractor-skill --skill wechat-article-extractor

インストール後、Claude Code で/wechat-article-extractorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitignore
README.md
package.json
convert.js
package-lock.json
scripts/
errors.js
extract.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 になる場合があります

コメント