SKILL.md
唯讀
名稱
wechat-article-extractor
描述
從微信公眾號文章中擷取中繼資料與內容。當使用者需要解析微信文章網址(mp.weixin.qq.com)、擷取文章資訊(標題、作者、內容、發布時間、封面圖),或將微信文章轉換為結構化資料時使用。支援多種文章類型,包括圖文、影片、圖片、語音與轉載。
WeChat Article Extractor
從微信公眾號文章中擷取中繼資料與內容。
功能
- 解析微信文章網址(
mp.weixin.qq.com) - 擷取文章中繼資料:標題、作者、描述、發布時間
- 擷取帳號資訊:名稱、頭像、別名、描述
- 取得文章內容(HTML)
- 取得封面圖網址
- 支援多種文章類型:圖文、影片、圖片、語音、純文字、轉載
- 處理各種錯誤情況:內容已刪除、連結過期、存取限制
使用方式
從網址基本擷取
const { extract } = require('./scripts/extract.js');
const result = await extract('https://mp.weixin.qq.com/s?__biz=...');
// 回傳:{ 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, // 回傳 HTML 內容(預設:true)
shouldReturnRawMeta: false, // 回傳原始中繼資料(預設:false)
shouldFollowTransferLink: true, // 跟隨已遷移帳號的連結(預設:true)
shouldExtractMpLinks: false, // 擷取內嵌的 mp.weixin 連結(預設:false)
shouldExtractTags: false, // 擷取文章標籤(預設:false)
shouldExtractRepostMeta: false // 擷取轉載來源資訊(預設:false)
});
回傳格式
成功回傳
{
done: true,
code: 0,
data: {
// 帳號資訊
account_name: "公眾號名稱",
account_alias: "微信號",
account_avatar: "頭像URL",
account_description: "功能介紹",
account_id: "原始ID",
account_biz: "biz參數",
account_biz_number: 1234567890,
account_qr_code: "QR Code URL",
// 文章資訊
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",
// 連結參數
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 | 不支援的連結 | 不支援的網址 |
| 2010 | 內容取得失敗 | 內容擷取失敗 |
| 2011 | 涉嫌過度行銷 | 行銷/垃圾內容 |
| 2012 | 帳號已被封鎖 | 帳號被封鎖 |
| 2013 | 帳號已自主登出 | 帳號已刪除 |
| 2014 | 內容被投訴 | 內容被檢舉 |
| 2015 | 帳號處於遷移流程中 | 帳號遷移中 |
| 2016 | 冒名侵權 | 冒充他人 |
相依套件
所需的 npm 套件:
cheerio- HTML 解析dayjs- 日期格式化request-promise- HTTP 請求qs- 查詢字串解析lodash.unescape- HTML 實體解碼
備註
- 處理各種微信頁面結構與反爬機制
- 自動從頁面內容偵測文章類型
- 支援從搜狗微信搜尋結果(
weixin.sogou.com)擷取 - 部分欄位可能為 null,取決於文章類型與頁面結構






