wechat-article-extractor

wechat-article-extractor

熱門

從微信公眾號文章中擷取中繼資料與內容。當使用者需要解析微信文章網址(mp.weixin.qq.com)、擷取文章資訊(標題、作者、內容、發布時間、封面圖),或將微信文章轉換為結構化資料時使用。支援多種文章類型,包括圖文、影片、圖片、語音與轉載。

105星標
18分支
更新於 2026/2/19
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,取決於文章類型與頁面結構