mcpField
W
wechat-article-downloader

wechat-article-downloader

github.com/qiye45ドキュメント9.9k64 回インストール10 週間前に更新
リポジトリ

wechat-article-downloader について

MCP ツールを使ってWeChat公式アカウントの記事をダウンロードする Skill です。リモート MCP では単一記事やコレクションを扱い、ローカル MCP では認証情報の取得、記事の一括保存、CSV出力も行えます。

主な機能

  1. 01単一記事のダウンロード
  2. 02記事コレクションのダウンロード
  3. 03ローカルでの記事一括ダウンロード
  4. 04公式アカウント認証情報の取得
  5. 05記事メタデータのCSV出力
  6. 06ローカルからリモート MCP への切り替え

活用シーン

  1. 01WeChat記事を1件保存
  2. 02appmsgalbumコレクションのダウンロード
  3. 03公式アカウントの記事の一括保存
  4. 04分析用の記事統計データの出力

MCP 対応

`http://127.0.0.1:4545/mcp` のローカル MCP サーバーを介して、記事、アカウント、バッチ処理、エクスポートのツールを利用します。ローカル MCP が利用できない場合、リモート MCP では単一記事とコレクションをダウンロードできます。

インストール

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

$npx skills add https://github.com/qiye45/wechatdownload --skill wechat-article-downloader

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

同梱ファイルevals/evals.json

詳細

WeChat 記事ダウンローダー

このスキルでは、WeChat 記事ダウンロードツールと連携する MCP サーバーを使用して、WeChat 公式アカウントの記事をダウンロードできます。

前提条件

このスキルを完全に利用するには、ローカル MCP エンドポイント http://127.0.0.1:4545/mcp を使用します。

ローカル MCP を利用できない場合は、リモート対応ツールとして https://changfengbox.top/api/mcp にフォールバックできます。

ローカル MCP ツール:

  • single_article_download - 単一の記事をダウンロードします
  • get_public_account_id - 公式アカウントの認証情報を取得します
  • batch_download_articles - アカウントのすべての記事を一括ダウンロードします
  • export_article_data - 記事のメタデータを CSV にエクスポートします

リモートフォールバック MCP(https://changfengbox.top/api/mcp)が現在サポートしているもの:

  • メソッド:initialize、tools/list、tools/call
  • tools/call の name で指定するツール:
    • wechat - 単一の記事をダウンロードします
    • wechat_collection - 公式アカウントのコレクション(appmsgalbum)をダウンロードします

重要:リモートフォールバックでは、single_article_download、batch_download_articles、get_public_account_id、export_article_data などのローカルツール名は公開されていません。

ワークフロー

1. ローカル MCP サーバーの状態を確認する

ほとんどの機能を使用する前に、ローカル MCP が実行中であることを確認します。

import requests

LOCAL_MCP_ENDPOINT = "http://127.0.0.1:4545/mcp"

def check_local_mcp():
    response = requests.post(
        LOCAL_MCP_ENDPOINT,
        json={"jsonrpc": "2.0", "method": "initialize", "id": 1},
        headers={"Content-Type": "application/json"},
        timeout=3,
    )
    if response.status_code != 200:
        raise RuntimeError("Local MCP is not available")
    return LOCAL_MCP_ENDPOINT

local_mcp_endpoint = check_local_mcp()

ローカル MCP にアクセスできない場合は、次の手順が必要であることをユーザーに伝えてください。

  1. WeChat 記事ダウンロードツールを開きます
  2. 「启动MCP」チェックボックスをオンにして、MCP サービスを起動します
  3. サービスがポート 4545 で実行中であることを示す確認メッセージが表示されるまで待ちます
2. 単一の記事をダウンロードする

まずローカルツールを使用します。ローカル MCP が失敗した場合は、リモートの wechat ツールにフォールバックします。

import requests

LOCAL_MCP_ENDPOINT = "http://127.0.0.1:4545/mcp"
FALLBACK_DOWNLOAD_MCP_ENDPOINT = "https://changfengbox.top/api/mcp"

def call_tool(endpoint, tool_name, arguments, req_id=2):
    payload = {
        "jsonrpc": "2.0",
        "method": "tools/call",
        "id": req_id,
        "params": {
            "name": tool_name,
            "arguments": arguments,
        }
    }

    response = requests.post(
        endpoint,
        json=payload,
        headers={"Content-Type": "application/json"},
        timeout=10,
    )
    response.raise_for_status()
    return response.json()

def download_single_article(url):
    try:
        return call_tool(
            LOCAL_MCP_ENDPOINT,
            "single_article_download",
            {"url": url},
            req_id=2,
        )
    except Exception:
        remote_config = {
            "保存离线网页": True,
            "HTML": True,
            "MD": True,
            "PDF": False,
            "WORD": False,
            "TXT": False,
            "MHTML": False,
            "文件开头添加日期": True,
        }
        return call_tool(
            FALLBACK_DOWNLOAD_MCP_ENDPOINT,
            "wechat",
            {"url": url, "config": remote_config},
            req_id=3,
        )

# Example usage
article_url = "https://mp.weixin.qq.com/s/xxxxx"
result = download_single_article(article_url)
print(result)

記事は、ツールで設定されている形式(HTML、PDF、Word、Markdown、MHTML など)で、ツールのデフォルトのダウンロードディレクトリに保存されます。

リモートの wechat の設定では、次のキーを使用できます。

  • 保存离线网页
  • HTML
  • MD
  • PDF
  • WORD
  • TXT
  • MHTML
  • 文件开头添加日期

ローカルの 127.0.0.1:4545 を利用できない場合、この手順では https://changfengbox.top/api/mcp とツール名 wechat を使用する必要があります。

3. コレクション(appmsgalbum)をダウンロードする

コレクションの URL の場合は、tools/call 経由でリモートの wechat_collection を呼び出します。

def download_collection(collection_url):
    payload = {
        "jsonrpc": "2.0",
        "method": "tools/call",
        "id": 4,
        "params": {
            "name": "wechat_collection",
            "arguments": {
                "url": collection_url,
            },
        },
    }

    response = requests.post(
        "https://changfengbox.top/api/mcp",
        json=payload,
        headers={"Content-Type": "application/json"},
        timeout=20,
    )
    response.raise_for_status()
    return response.json()
4. 公式アカウントの認証情報を取得する(ローカルのみ)

一括ダウンロードの前に、公式アカウントの認証情報を取得する必要があります。取得処理では、次の操作が行われます。

  1. ツールがサンプル記事の URL からアカウント ID を抽出します
  2. WeChat デスクトップクライアントで開く必要がある専用リンクを生成します
  3. リンクを開くと、認証情報が自動的に取得されます
def get_account_credentials():
    payload = {
        "jsonrpc": "2.0",
        "method": "tools/call",
        "id": 3,
        "params": {
            "name": "get_public_account_id",
            "arguments": {}
        }
    }
    
    response = requests.post('http://127.0.0.1:4545/mcp',
                            json=payload,
                            headers={"Content-Type": "application/json"})
    
    result = response.json()
    return result

result = get_account_credentials()
print(result)

これを呼び出した後、ユーザーに次の操作を行ってもらいます。

  1. ツールのログウィンドウから生成されたリンクをコピーします
  2. ブラウザーではなく、WeChat デスクトップクライアントでリンクを開きます
  3. ツールが認証情報を自動的に取得するまで待ちます
  4. 「获取密钥成功」(認証情報を取得しました)というメッセージが表示されたことを確認します
5. 記事を一括ダウンロードする(ローカルのみ)

認証情報を取得したら、公式アカウントのすべての記事を一括ダウンロードできます。

def batch_download_articles():
    payload = {
        "jsonrpc": "2.0",
        "method": "tools/call",
        "id": 4,
        "params": {
            "name": "batch_download_articles",
            "arguments": {}
        }
    }
    
    response = requests.post('http://127.0.0.1:4545/mcp',
                            json=payload,
                            headers={"Content-Type": "application/json"})
    
    result = response.json()
    return result

result = batch_download_articles()
print(result)

一括ダウンロードでは、次の処理が行われます。

  • ツールで設定された日付範囲とフィルターに従って記事をダウンロードします
  • 設定に応じて、記事を複数の形式(HTML、PDF、Word、Markdown、MHTML)で保存します
  • 公式アカウント名ごとにファイルを整理します
  • ツールのログウィンドウに進行状況を表示します
6. 記事データをエクスポートする(ローカルのみ)

記事のメタデータ(タイトル、URL、公開日、閲覧数、「いいね」の数など)を CSV にエクスポートするには、次のようにします。

def export_article_data():
    payload = {
        "jsonrpc": "2.0",
        "method": "tools/call",
        "id": 5,
        "params": {
            "name": "export_article_data",
            "arguments": {}
        }
    }
    
    response = requests.post('http://127.0.0.1:4545/mcp',
                            json=payload,
                            headers={"Content-Type": "application/json"})
    
    result = response.json()
    return result

result = export_article_data()
print(result)

記事のメタデータを含む CSV ファイルがダウンロードディレクトリにエクスポートされます。

よくあるワークフロー

ワークフロー 1:単一の記事をダウンロードする

ユーザーの依頼:「この WeChat 記事をダウンロードしてください:https://mp.weixin.qq.com/s/xxxxx」

  1. ローカル MCP サーバーの状態を確認します
  2. ローカル MCP が実行中の場合は、URL を指定して single_article_download を呼び出します
  3. ローカル MCP を利用できない場合は、url + config を指定してリモートの wechat を呼び出します
  4. ダウンロードが開始されたことと、ファイルの保存先をユーザーに伝えます
ワークフロー 2:コレクションのダウンロード(appmsgalbum)

ユーザー:「この WeChat コレクション/appmsgalbum をダウンロードして」

  1. リモートの tools/call を name="wechat_collection" で呼び出します
  2. arguments にコレクションの URL を渡します
  3. 必要に応じて、先に tools/list を呼び出してツールの引数を確認します
  4. ファイルの保存場所をユーザーに伝えます
ワークフロー 3:公式アカウントからの記事の一括ダウンロード(ローカルのみ)

ユーザー:「この公式アカウントの記事をすべてダウンロードして」

  1. ローカル MCP サーバーの状態を確認します
  2. ユーザーからアカウントの記事 URL のサンプルが提供されていることを確認します
  3. get_public_account_id を呼び出し、生成されたリンクを WeChat で開く必要があることをユーザーに説明します
  4. 認証情報を取得したというユーザーからの確認を待ちます
  5. batch_download_articles を呼び出して一括ダウンロードを開始します
  6. ツールのインターフェースで進行状況を確認します
ワークフロー 4:記事のメタデータをエクスポート(ローカルのみ)

ユーザー:「記事データを CSV にエクスポートして」または「記事の統計情報を取得して」

  1. ローカル MCP サーバーの状態を確認します
  2. 認証情報をすでに取得していることを確認します(未取得の場合は、認証情報の取得手順を案内します)
  3. export_article_data を呼び出します
  4. CSV ファイルの保存場所をユーザーに伝えます

エラーへの対処

よくある問題と解決方法:

単一ダウンロード中にローカル MCP を利用できない場合:自動的に https://changfengbox.top/api/mcp に切り替え、name="wechat" で再試行します。

リモートツール名が一致しない場合:リモートへのフォールバック時にローカルの名前を使用しないでください。wechat または wechat_collection のみを使用します。

認証情報の取得/一括ダウンロード/エクスポートでローカル MCP を利用できない場合:これらのワークフローはローカルのみで実行できます。ユーザーは WeChat ダウンロードツールを起動し、MCP サービスを有効にする必要があります。

認証情報を取得できていない場合:ユーザーは生成されたリンクを WeChat デスクトップクライアントで開き、認証情報の取得手続きを完了する必要があります。

ダウンロードに失敗した場合:ツールのログウィンドウで具体的なエラーメッセージを確認します。よくある原因:

  • 記事 URL の形式が無効
  • ネットワーク接続の問題
  • WeChat によるレート制限

出力先

すべてのダウンロードは、ツールに設定されたダウンロードディレクトリ(デフォルト:ツールのディレクトリ内にある 下载/ フォルダー)に保存され、次の項目別に整理されます:

  • 公式アカウント名(一括ダウンロードの場合)
  • 記事タイトル
  • 形式(HTML、PDF、Word、Markdown、MHTML など)

ダウンロードが完了すると、ツールのインターフェースのログウィンドウに正確なファイルパスが表示されます。

コメント