关于 wechat-article-extractor
wechat-article-extractor 是用于从微信公众号文章链接或 HTML 中提取内容与元数据的工具,适合处理文章采集和解析的开发场景。它可识别多种文章类型,并提供针对失效、删除及访问受限等情况的错误信息。
主要功能
- 01解析微信公众号文章链接
- 02提取文章及公众号元数据
- 03获取文章 HTML 与封面图
- 04识别多种文章类型
- 05处理访问与内容错误
适用场景
- 01采集文章标题、作者和发布时间
- 02从 HTML 页面解析文章内容
- 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详细介绍
微信文章提取器
提取微信公众号文章的元数据和内容。
功能
- 解析微信文章 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