mcpField
W
wechat-article-extractor

wechat-article-extractor

github.com/freestylefly数据与数据库1403.9k 次安装36 周前更新
代码仓库

关于 wechat-article-extractor

wechat-article-extractor 是用于从微信公众号文章链接或 HTML 中提取内容与元数据的工具,适合处理文章采集和解析的开发场景。它可识别多种文章类型,并提供针对失效、删除及访问受限等情况的错误信息。

主要功能

  1. 01解析微信公众号文章链接
  2. 02提取文章及公众号元数据
  3. 03获取文章 HTML 与封面图
  4. 04识别多种文章类型
  5. 05处理访问与内容错误

适用场景

  1. 01采集文章标题、作者和发布时间
  2. 02从 HTML 页面解析文章内容
  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

详细介绍

微信文章提取器

提取微信公众号文章的元数据和内容。

功能

  • 解析微信文章 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 实体

备注

  • 可处理各种微信页面结构和反爬措施
  • 根据页面内容自动检测文章类型
  • 支持从搜狗微信搜索结果(weixin.sogou.com)中提取
  • 某些字段可能因文章类型和页面结构而为空(null)

评论

支持 Markdown