Zhihu について
Zhihu は、Zhihu の閲覧、検索、ダウンロード、投稿、分析をターミナルから行う非公式 CLI ツールキットです。複数アカウントに対応し、README には zhihu-mcp サーバーのオプションエントリーポイントも記載されています。
主な機能
- 01フィード、ランキング、質問、コメントの閲覧
- 02検索と Markdown 形式でのダウンロード
- 03記事と回答の投稿・編集
- 04交流、コレクション管理、メッセージ送信
- 05データのエクスポートと収益・コンテンツ分析
- 06複数アカウントプロファイルの保存と切り替え
活用シーン
- 01ターミナルから Zhihu の内容を検索してオフラインで読む
- 02Markdown ファイルから記事を投稿または更新
- 03個人の投稿や活動データを一括エクスポート
- 04収益やダウンロード済みコンテンツの文章傾向を分析
MCP 対応
README にはオプションの [mcp] インストール項目と zhihu-mcp サーバーのエントリーポイントが記載されていますが、MCP クライアントに公開する機能は説明されていません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🧢 zhihu-cli
ターミナルが新しい Zhihu の拠点になります。
機能が充実し、自動化にも対応した Zhihu CLI と開発者ツールキットです。
browse · download · search · publish · analyze — all from the command line.
zhihu-cli を使えば、ターミナルが多機能な Zhihu クライアントになります。一度認証すれば、ブラウザーを開かずに閲覧、検索、ダウンロード、投稿、分析ができます。
⚠️ これは Zhihu の非公式 CLI です。自己責任でご利用ください。Zhihu Inc. とは提携していません。
👉 DSH プラグインをお探しですか? → dsh-plugin/
🚀 クイックスタート
要件: Python 3.10 以降。インストールする前に
python --versionでバージョンを確認してください。
# Install
pip install zhihu-toolkit
1. 認証する
zhihu auth paste # paste a cURL from browser DevTools
zhihu auth login # scan a QR code with the Zhihu App
zhihu auth import # import the session from a local browser (needs: pip install 'zhihu-toolkit[browser]')
2. 動作を確認する
zhihu auth status # check login status and active profile
✨ できること
📖 読む・閲覧する
Zhihu のフィード、人気ランキング、質問、記事、ピン、コメントを、Rich 対応のページャーでターミナル上に表示して閲覧できます。抜粋付きのリアルタイムトレンドリストを確認したり、パーソナライズされたおすすめフィードをスクロールしたり、リンクをクリックすることなく質問と回答スレッド全体を読んだりできます。Zhihu Daily(知乎日报)には専用のグループがあり、zhihu daily latest、zhihu daily before <date>、zhihu daily story <id> --save を利用できます。
💾 オフライン用にダウンロードする
記事、回答、質問、ピン、動画など、あらゆる Zhihu コンテンツを YAML フロントマター付きのクリーンな Markdown として保存できます。コンテンツを個別にダウンロードすることも、マニフェストを使って一括処理することもできます。すべて ~/.zhihu-cli/downloads/ に種類別に整理して保存されるため、メモシステムやオフラインでの閲覧にすぐ利用できます。
🔍 検索する
Zhihu 全体から質問、記事、ユーザー、トピックを検索できます。コマンドラインから検索結果の詳細度や件数を調整できます。
✍️ 投稿・編集する
Markdown で回答や記事を作成し、1 つのコマンドで Zhihu に投稿できます。更新が必要な場合は、ローカルファイルから既存の回答や記事を編集できます。Markdown から HTML への変換は、Zhihu 独自のレンダリングパイプラインで自動的に行われます。
💬 交流する
ブラウザーを使わずに、賛成票、感謝、フォロー、ブロック、コメントなどのソーシャル機能を利用できます。コレクションの作成、追加、整理もできます。ダイレクトメッセージの送受信や、MQTT によるリアルタイム通知とチャットのストリーミングにも対応しています。
🕸️ スクレイピング・エクスポートする
自分の投稿、アクティビティ履歴、回答、記事を構造化 JSON として一括エクスポートできます。汎用コンバーターを使って、形式をまたいでデータを統合・正規化し、独自のデータパイプラインに利用できます。
📊 分析する
クリエイター分析 — Zhihu の収益データを取得して可視化できます。月別サマリー、トレンドチャート(EMA 付き)、高度な指標(ボリンジャーバンド、MACD)、派生分析(速度・加速度・ジャーク)、曜日別の内訳、コンテンツごとの日次指標を確認できます。チャートは PNG として保存されます。
NLP ツール — ダウンロードしたコンテンツに対して、単語頻度分析、ワードクラウドの生成、K-means クラスタリングを実行できます。Markdown ライブラリ全体を対象に処理します。
🔐 複数アカウント
異なるアカウントのプロフィールを複数保存し、1 つのコマンドで切り替えられます。各プロフィールは、それぞれ独自の認証情報と Cookie を保持します。
🏗️ アーキテクチャ
src/zhihu_cli/
├── main.py # Click CLI — command group hub
├── output.py # styled terminal output (Rich)
├── content/
│ ├── handlers/ # one file per Zhihu domain
│ └── utils/ # HTML↔Markdown, ZSE v4 signing
├── creator_tools/ # income analytics + plotting
├── nlp_tools/ # word count, wordcloud, clustering
└── extensions/ # plugin system (auto-discovered)
| レイヤー | 役割 |
|---|---|
| 🔐 認証 | cURL の貼り付けまたは QR コードログインで取得したブラウザー Cookie と User-Agent ヘッダーを、プロファイルごとにキャッシュします |
| ✍️ 署名 | ZSE v4 暗号を使用して、すべての Zhihu リクエストに x-zse-93 / x-zse-96 ヘッダーを自動署名します |
| 🌐 リクエスト | 検出を回避するため、curl_cffi で Chrome の TLS フィンガープリントを偽装します |
| 📄 抽出 | 直接 API 呼び出しを優先し、失敗した場合は HTML ページのスクレイピングと js-initialData の解析にフォールバックします |
| 📝 Markdown | HTML → LaTeX の前処理 → 再帰的な走査 → クリーンな Markdown。公開時は逆の手順です |
| 🔌 拡張機能 | extensions/ に register_cli(group) を備えたプラグインを配置すると、起動時に自動検出されます |
🧪 その他
オプションの依存関係
pip install -e ".[nlp]" # jieba, matplotlib, wordcloud, scikit-learn...
pip install -e ".[creator]" # matplotlib, numpy, pandas, seaborn...
pip install -e ".[classifier]" # torch, transformers, scikit-learn...
pip install -e ".[llm]" # openai (zhihu agora ai, zhihu chat bot, crank)
pip install -e ".[notify]" # desktop-notifier (zhihu chat interactive --notify)
pip install -e ".[mcp]" # mcp (the zhihu-mcp server entry point)
シェル補完
eval "$(python autocomp.py)"
🤝 コントリビューション
プルリクエストを歓迎します!コードベースは拡張しやすい構成になっています。
- 新しいコマンドの場合:
commands/にregister_<name>(group)関数を含むファイルを追加し、main.pyでインポートします。 - 新しいハンドラーの場合:
content/handlers/にファイルを追加し、既存のパターンに従います。 - 新しい拡張機能の場合:
register_cli(group)を公開する__init__.pyを含むextensions/<name>/を作成します。
提出前にフォーマッターを実行してください。
pre-commit run --all-files
ruff check .
ruff format .
📜 ライセンス
MIT
❤️ と、あまりにも多くのターミナルセッションを使って作られました。
バグを報告 · このリポジトリをフォーク · このリポジトリにスターを付けましょう ⭐
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。