wx-favorites-report 実践レビュー:WeChatお気に入り可視化ツール、ワンクリックでインタラクティブレポート生成
WeChatのお気に入りには、いったいどれだけのものが隠れているか考えたことはありますか?気軽に保存した記事、動画、リンクのうち、どれだけが二度と開かれることがないのでしょうか?
wx-favorites-report はオープンソースのWeChatお気に入り可視化ツールで、暗号化されたWeChat Macローカルデータベースからエンドツーエンドで復号化・解析を行い、7種類のグラフを含むインタラクティブHTMLレポートを生成します。簡単に言えば、WeChatのお気に入りを「ブラックボックス」から「ダッシュボード」に変えるツールです。
一、wx-favorites-reportとは
wx-favorites-reportは開発者zhuyansenによってオープンソース化され、当初はClaude CodeのSkillとして公開され、後にclaude-code-skills-zhなどのオープンソースプロジェクトに統合されました。
そのコア機能は3つのステップに要約できます:
- 復号化:WeChat Macクライアントの暗号化データベース(SQLCipher)からキーを抽出して復号化
- 解析:SQLite内のXML構造化データを統一JSONに解析
- 可視化:統計ダッシュボード、月次トレンド、タイプ分布などを含む単一ファイルHTMLレポートを生成
このプロセスは完全に自動化できます。Claude Codeを使用している場合、「WeChatお気に入り可視化」と一言言えば、ツールが全プロセスを自動的に完了します。
二、コア機能の詳細
2.1 データ抽出:暗号化DBからプレーンテキストへ
WeChat Mac 4.xのお気に入りデータはSQLCipherで暗号化されたSQLiteデータベースに保存されています。wx-favorites-reportはfrida動的インジェクション技術を使用し、WeChatのCCKeyDerivationPBKDF関数をフックして、実行時にキー導出プロセスをキャプチャします。
# 依存関係のインストール
pip3 install frida frida-tools pycryptodome
# WeChat署名コピーの準備(Hardened Runtimeを回避)
cp -R /Applications/WeChat.app ~/Desktop/WeChat.app
codesign --force --deep --sign - ~/Desktop/WeChat.app
復号化パラメータはSQLCipher 4標準:AES-256-CBC暗号化、HMAC-SHA512検証、PBKDF2 256000回反復。
2.2 統計ダッシュボード
レポートのトップページはデータ概要パネルで、4つの主要指標を表示します:
- お気に入り総数:合計でどれだけのコンテンツを保存したか
- 経過日数:最初のお気に入りから現在までの期間
- 1日平均お気に入り数:平均して1日に何件保存しているか
- ソース数:お気に入りコンテンツがいくつの異なるソースから来ているか
2.3 7種類の可視化グラフ
| グラフタイプ | 表示内容 | インタラクション方式 |
|---|---|---|
| 月次トレンド | 月別お気に入り数の変化 | 折れ線+エリアチャート |
| タイプ分布 | 記事/動画/リンク/画像の割合 | ドーナツチャート |
| ソースランキング | トップ15のお気に入りソース | 水平棒グラフ |
| アクティビティヒートマップ | 曜日×時間のお気に入り頻度 | ヒートマトリックス |
| 時間帯分布 | 1日のうちどの時間帯が最もお気に入りするか | 二重棒グラフ |
| ワードクラウド | タイトルと説明文からキーワードを抽出 | インタラクティブワードクラウド |
| タグクラウド | WeChatお気に入りタグの分布 | クリック可能なタグ |
2.4 お気に入りブラウザ
レポートの下部には、完全に機能するお気に入りブラウザがあり、以下をサポート:
- タイプ別フィルタリング(記事/動画/リンク/画像)
- タグ別フィルタリング
- 全文検索
- 複数のソート方法
- ページネーション表示
- カードをクリックして完全なコンテンツと元リンクを表示
三、技術原理
3.1 WeChatデータベース構造
WeChat Mac 4.xのお気に入りデータはfavorite.dbに保存されており、パスは:
~/Library/Containers/com.tencent.xinWeChat/Data/Documents/
xwechat_files/<wxid>/db_storage/favorite/favorite.db
3.xバージョンがFavItems+FavDataItemの2テーブル構造を使用していたのに対し、4.xはfav_db_item単一テーブルに変更され、コンテンツフィールドはXML形式です。
3.2 キー抽出の6回の反復
これはプロジェクト全体で最も難しい部分です。開発者は6回の試行を経験しました:
| 回数 | 方法 | 結果 |
|---|---|---|
| 1 | Cメモリスキャン x’hex’形式 | 失敗:WeChat 4.xはこの形式を使用しない |
| 2 | 生saltバイトの検索 | 失敗:ASCII文字列と誤一致 |
| 3 | HMACブルートフォース検証 | 失敗:フィルタ条件が実際の位置をスキップ |
| 4 | フィルタなしブルートフォース検索 | 失敗:キーはPBKDF2導出後に保存される |
| 5 | DYLDフック / lldb | 失敗:macOS SIPが阻止 |
| 6 | frida + CCKeyDerivationPBKDF | 成功 |
最終的なソリューションは、fridaフックでシステムレベルのPBKDF2関数を介して、WeChat起動時にキー導出プロセスをキャプチャします。
3.3 データ処理フロー
暗号化DB → fridaキー抽出 → PyCryptodome復号化 → SQLite読み取り
→ XML解析 → 統一JSON → EChartsレンダリング → 単一ファイルHTML
四、インストールとデプロイ
4.1 環境要件
| 条件 | 説明 |
|---|---|
| オペレーティングシステム | macOS(Apple SiliconまたはIntel) |
| WeChatバージョン | Mac 4.xがログイン済み |
| Python | 3.9+ |
| オプション | Claude Code(ワンクリック実行) |
4.2 手動インストール手順
ステップ1:Python依存関係のインストール
pip3 install frida frida-tools pycryptodome
ステップ2:WeChat署名コピーの準備
cp -R /Applications/WeChat.app ~/Desktop/WeChat.app
codesign --force --deep --sign - ~/Desktop/WeChat.app
ステップ3:キーの抽出
killall WeChat 2>/dev/null; sleep 2
# fridaフックスクリプトを実行
# WeChat起動後:ログイン → 「お気に入り」ページを開く → 60秒待機
ステップ4:復号化とレポート生成
# データの解析
python3 parse_favorites.py --input favorite_decrypted.db --output data.json
# HTMLレポートの生成
python3 generate_report.py --input data.json --output report.html
# ローカルプレビュー
python3 -m http.server 8765
# ブラウザで http://localhost:8765/report.html を開く
4.3 Claude Codeワンクリック実行
Claude Codeをインストールしている場合、会話の中で以下と言うだけです:
WeChatお気に入り可視化
Claudeがキー抽出、復号化、解析、レポート生成の全プロセスを自動的に完了します。
五、実践チュートリアル:最初のお気に入りレポートを生成する
5.1 データ抽出
fridaスクリプトを実行すると、WeChatが再起動します。この時、以下の操作が必要です:
- WeChatにログイン(QRコードスキャンまたは確認)
- 左側の「お気に入り」タブをクリック
- fridaがキーをキャプチャするまで60秒待機
キーは/tmp/wechat_frida_keys.logに保存され、saltマッチングでfavorite.dbに対応するenc_keyを見つけます。
5.2 データベース復号化
Pythonで復号化:
from Crypto.Cipher import AES
import hashlib
# fridaログからenc_keyとsaltを取得
enc_key = bytes.fromhex("your_enc_key_here")
# SQLCipher 4パラメータ
kdf_iter = 256000
page_size = 4096
reserve_size = 80 # IV(16) + HMAC(64)
# ページごとに復号化...
5.3 レポート生成とカスタマイズ
python3 generate_report.py --input data.json --output report.html
生成されるレポートは単一ファイルHTMLで、すべてのCSSとJavaScriptがインライン化されており、ダブルクリックで直接開くことも、任意の静的ホスティングサービスにアップロードすることもできます。
六、レポートの解釈:お気に入りデータの分析方法
6.1 使用習慣の発見
アクティビティヒートマップを通じて、以下を発見できます:
- 平日と週末のどちらでお気に入りを多くするか?
- 1日のうちどの時間帯がお気に入りピークか?
- 「深夜にスマホを見て疯狂してお気に入りする」パターンが存在するか?
6.2 コンテンツ嗜好の分析
タイプ分布図はお気に入りの嗜好を示します:
- 記事が80%以上を占める場合、「深い読書型」ユーザー
- 動画の割合が高い場合、「断片化学習」を好む
- リンクの割合が高い場合、より多くの「ツールお気に入り」
6.3 ソース品質の評価
ソースランキングトップ15で以下を特定できます:
- どの公式アカウント/ウェブサイトが最も頻繁にお気に入りされているか?
- これらのソースのコンテンツ品質は継続的に安定しているか?
- フォローを解除すべきか、RSS購読に追加すべきソースはあるか?
七、他のWeChatデータツールとの比較
| ツール | データタイプ | プラットフォーム | 可視化 | 難易度 |
|---|---|---|---|---|
| wx-favorites-report | お気に入り | Mac | ⭐⭐⭐⭐⭐ | 中 |
| WeChatMsg | チャット履歴 | Windows | ⭐⭐⭐ | 中 |
| PyWxDump | チャット履歴+連絡先 | Windows | ⭐⭐ | 高 |
| WeChat組み込みお気に入り検索 | お気に入り | 全プラットフォーム | ⭐ | 低 |
wx-favorites-reportの独自の利点は:
- お気に入りシーンに特化:チャット履歴ツールほど大きく複雑ではない
- 高品質な可視化:7種類の専門グラフ、WeChat組み込みのリスト検索を遥かに凌駕
- 単一ファイル出力:追加ソフトウェアのインストールなしで閲覧可能
- Claude Code統合:一言で全プロセスを完了
WeChatチャット履歴にも興味がある場合は、以前の記事PyWxDump実践レビューをご覧ください。
八、応用シーン
8.1 個人データ管理
定期的にお気に入りレポートを生成することで、以下が可能になります:
- 期限切れや不要なお気に入りを整理
- 忘れ去られた高品質コンテンツを発見
- 個人ナレッジベースの素材リストを構築
8.2 コンテンツ整理
あなたがコンテンツクリエイターの場合、お気に入りレポートは以下に役立ちます:
- 関心のある分野やトピックを分析
- コンテンツインスピレーションのソースパターンを発見
- トピック選択にデータサポートを提供
8.3 使用習慣の分析
データから自分の情報消費パターンを振り返る:
- 「お気に入り=忘却」になっていないか?
- お気に入り行動は不安と関連しているか?
- より効果的な情報管理システムをどう構築するか?
九、制限事項と注意事項
9.1 プラットフォーム制限
- macOSのみサポート:キー抽出はfridaとmacOSのWeChatクライアントに依存
- WeChatバージョン要件:現在Mac 4.xに対応、3.xはテーブル構造が異なる
- WeChatログインが必要:使用中のWeChatアカウントが必要
9.2 データプライバシー
- すべてのデータ処理はローカルで完了し、サーバーにアップロードされない
- レポートHTMLファイルにはお気に入りデータが含まれるため、公開共有しないでください
- frida実行中はWeChatプロセスをフックするため、完了後に署名コピーを閉じることを推奨
9.3 既知の制限
- 画像/動画/ファイルの元のコンテンツはWeChat CDNに保存されており(暗号化形式)、レポートでプレビューできない
- 記事のサムネイルはWeChat公式アカウントCDNから取得されるため、レポート閲覧時にインターネット接続が必要
- WeChat更新のたびにデスクトップコピーの再署名が必要になる場合がある
十、FAQ
Q1: wx-favorites-reportは安全ですか?WeChatデータが漏洩しませんか?
すべてのデータ処理は完全にローカルで完了し、サーバーにアップロードされません。fridaはローカルでのみWeChatプロセスをフックしてキーを抽出し、レポート生成後は純粋なローカルHTMLファイルです。ただし、生成されたレポートファイルの管理に注意し、公開共有しないでください。
Q2: Windowsやモバイル版WeChatに対応していますか?
現在、macOSプラットフォームのWeChat Mac 4.xクライアントのみをサポートしています。Windowsとモバイル版の暗号化メカニズムは異なるため、現時点ではサポートしていません。WindowsプラットフォームのWeChatデータツールが必要な場合は、PyWxDumpを参照してください。
Q3: WeChat更新後も使用できますか?
WeChatのメジャーバージョン更新はデータベース構造や暗号化方式を変更する可能性があり、その場合はツールの適応を待つ必要があります。マイナーバージョン更新は通常使用に影響しませんが、更新のたびにデスクトップコピーの再署名が必要です。
Q4: 生成されたレポートは共有できますか?
レポートは単一ファイルHTMLで、オフラインで閲覧できます。ただし、個人のお気に入りデータが含まれているため、自己使用のみにし、公開ウェブサイトへのアップロードや他者への共有は避けてください。
Q5: Claude Codeがなくても使用できますか?
はい。Claude Codeはワンクリック実行の便利さを提供するだけで、ドキュメントの手順に従って手動で操作すれば全プロセスを完了できます。コアスクリプト(parse_favorites.pyとgenerate_report.py)は独立したPythonプログラムです。
十一、まとめ
wx-favorites-reportは、私がこれまで見た中で最も完全なWeChatお気に入り可視化ソリューションです。「WeChatお気に入りデータをエクスポートして分析できない」という問題を解決し、暗号化データベースからインタラクティブレポートまでのフルチェーン自動化が非常に成熟しています。
利点:
- フルチェーン自動化、復号化からレポートまでワンクリックで完了
- 7種類の可視化グラフ、豊富なデータインサイト
- 単一ファイルHTML出力、ゼロ依存で閲覧
- Claude Code統合、使用のハードルを低減
欠点:
- macOSのみサポート、Windows/モバイルユーザーは使用不可
- キー抽出プロセスに一定の技術的ハードルがある
- 画像/動画コンテンツをレポートでプレビューできない
あなたが「ヘビーお気に入りユーザー」で、自分が何を保存しているのか、お気に入り習慣がどうなっているかを明確にしたいなら、wx-favorites-reportは試す価値があります。
このブログ記事がお役に立てれば幸いです!WeChatデータ管理に興味がある場合は、AIツールレビューコレクションもご覧いただき、さらに多くの実用的なデータ分析・可視化ツールについて知ってください。