rednote-gate について
rednote-gateは、専用の使い捨てRedNoteアカウントをブラウザー操作するローカルMCPサーバーです。読み取りは即時に実行し、書き込みはローカルページで人が承認するまで保留します。既定ではドライランです。
主な機能
- 01RedNoteのノート、コメント、検索結果の取得
- 02投稿、下書き、いいね、コメントのキュー登録
- 03ローカルページでの人による承認
- 04既定のドライランと日次上限
- 05テキストカード画像のローカル生成
活用シーン
- 01ノートとコメントを調べてトピックを調査
- 02投稿や返信を用意して人の確認を受ける
- 03公開せずにブラウザーフローをテスト
- 04承認と状態確認で書き込みキューを管理
MCP 対応
ローカルのstdio MCPサーバーとして、互換ホストにRedNoteの読み書きツールとプロンプトを提供します。書き込みツールはキュー登録のみを行い、承認はMCP外のローカルページで行います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
15掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
rednote-gate
rednote-gate は、専用の使い捨て RedNote(Xiaohongshu)アカウントを 1 つだけ操作します。メインアカウントやブランドアカウントには決して接続しないでください。ブラウザー自動化を使用するため、RedNote の利用規約に違反します。アカウントは利用制限または停止される可能性があります。失っても差し支えないアカウントだけを使用してください。
ウェブサイト:https://yashshelar007.github.io/rednote-gate/
Claude Code、Claude Desktop、Codex 向けのローカル MCP サーバーです。読み取り操作は直接実行されます。書き込み操作はすべて、ローカルウェブページで人間が「承認」をクリックするまでキューで待機します。
クイックスタート
npm からインストール
npm install -g rednote-gate
rednote-gate setup
Chromium がインストールされ、使い捨てアカウントの QR コードログインが開き、rednote-gate が Claude Code に接続されます。データとログイン情報は ~/.rednote-gate に保存されます。
またはクローンから
git clone https://github.com/YashShelar007/rednote-gate.git
cd rednote-gate
npm run setup
ビルドも必要になる点を除けば、手順は同じです。.session/ にログイン情報がすでにあるクローンでは、データはクローンのフォルダーに保存されます。
続いて rednote-gate のプロンプトを使います。Claude Code ではスラッシュコマンドとして表示されます。
| プロンプト(スラッシュコマンド) | 動作 |
|---|---|
/rednote-gate:post_photos | Claude が写真と 1 行の概要から写真ノートを書き、キューに追加します |
/rednote-gate:reply_to_comments | Claude がノートのコメントを読み、最大 3 件の返信を下書きして、キューに追加します |
/rednote-gate:post_from_concept | Claude がコンセプトを調査し、オリジナルのノートを書き、テキストカード画像を生成して、キューに追加します |
/rednote-gate:research_topic | Claude がトピックを検索し、上位のノートとコメントを読んで、効果的な内容を要約します。読み取り専用です。 |
/rednote-gate:review_queue | Claude が待機中の項目と実行結果を要約します |
/rednote-gate:help | すべてのツールとプロンプト、自分のモード、今日の残りの予算を確認できます |
「ハイキングの写真を 2 枚投稿して」のように、普通の言葉で頼むこともできます。rednote のツールを初めて使うと、小さなバックグラウンドサービスが起動します。このサービスがブラウザー、承認ページ、ワーカーを管理します。Claude Code を閉じても実行し続けるため、承認ページは常に動作し、承認済みの項目は必ず実行されます。5 分間アイドル状態が続くと、ブラウザーウィンドウが閉じます。停止するには rednote-gate stop を実行します(クローンの場合は npm run stop)。項目がキューに追加されると、ブラウザーで承認ページが開き、Mac に通知が表示されます。「承認」をクリックすると、約 30 秒後に実行され、ページに結果のスクリーンショットが表示されます。完了時、または RedNote に CAPTCHA が表示された場合に通知されます。
状況:2026-10-06 に rednote.com のアカウントで、すべてのフローを実際のサイトで確認しました。確認したのは 4 件の読み取りと、人間が承認ページで承認した投稿、下書き、コメント、返信の実行です。実際のサイトでの最終確認をご覧ください。
全体の仕組み
| 部分 | ここ |
|---|---|
| ホスト | Claude Code、Claude Desktop、または Codex:あなたが会話する AI アプリです |
| クライアント | ホスト内のコネクターで、サーバーごとに 1 つあります。ホストが提供します。 |
| サーバー | rednote-gate。ローカルの MCP サーバーです。ホストが起動し、stdio 経由で通信します。 |
| ツール (15) | 5 つの読み取りツールはすぐに実行されます。6 つの書き込みツールはキューに追加するだけです。4 つのローカルツールは RedNote にアクセスしません。 |
| プロンプト (6) | post_photos、post_from_concept、reply_to_comments、research_topic、review_queue、help。Claude Code ではスラッシュコマンドとして表示されます。 |
| リソース | なし |
モデルがツールを呼び出します。プロンプトはあなたが選びます。バックグラウンドサービス、承認ページ、rednote-gate CLI は MCP の一部ではありません。承認ページは 127.0.0.1 上のローカルウェブページです。モデルが自分の書き込みを承認できないよう、意図的に MCP の外にあります。
機能
rednote-gate はローカルの stdio MCP サーバーです。Node 20 以降が必要です。TypeScript で記述されており、お使いのマシン上で Playwright Chromium を操作します。
読み取りツールはすぐに実行されます。
| ツール | 引数 | 戻り値 |
|---|---|---|
rednote_login_status | なし | site、loggedIn(メインサイト)、creatorSession(投稿に必要なクリエイターサイト) |
rednote_search | keyword、limit(最大 30) | noteId、title、author、likes、url。url には xsec_token が含まれます。 |
rednote_get_note | url | noteId、title、body、author、tags、likes、collects、コメント数、ipLocation、time |
rednote_get_comments | url、limit(最大 50) | id、author、text、likes、返信数。最初のページのみです。 |
rednote_make_cards | cards(1~9 個:title、最大 8 行、footer)、オプションの theme(notebook、sticky、chalkboard、blueprint) | お使いのコンピューターで 1080x1440 のテキストカード PNG をレンダリングし、そのパスを返します。RedNote には一切アクセスしません。 |
rednote_my_notes | limit(最大 30) | 自分のノートを新しい順に返します:noteId、title、likes、url |
rednote_queue_status | limit | 最近のキュー項目:id、tool、status、最終変更日時。承認リンクは決して返しません。 |
rednote_help | なし | rednote-gate でできること、現在のモード、本日の残り予算 |
rednote_open_approval_page | なし | ブラウザーで承認ページを開きます。リンクは決して返しません。 |
書き込みツールは項目をキューに追加して、そのキュー ID を返すだけです。ブラウザーには一切アクセスしません。
| ツール | 引数 | 承認後の動作 |
|---|---|---|
rednote_create_post | title(RedNote の上限は 20:CJK 文字は 1 文字、ASCII は半文字としてカウント)、body(最大 1000 文字、絵文字可、# は不可)、images(JPEG、PNG、WebP ファイルの絶対パスを 1~9 個。最初の画像がカバーになります)、オプションの topics(最大 5 個、# なし) | 写真ノートを投稿します。トピック選択欄に該当するトピックがちょうど表示された場合は、各トピックをリンク付きの RedNote トピックとして追加します。それ以外の場合は、通常の #text として追加します。 |
rednote_create_draft | rednote_create_post と同じ | 投稿の代わりに下書きを保存します。 |
rednote_create_video_post | title、body、video(MP4 または MOV ファイル 1 個の絶対パス、最大 500 MB。プロジェクトの上限です)、オプションの topics | RedNote による処理が完了した後、動画ノートを投稿します。 |
rednote_post_comment | url、text(最大 500 文字) | ノートにコメントを投稿します。 |
rednote_like_note | url、オプションの noteTitle | ノートに「いいね」します(独自の日次上限があります。RN_DAILY_LIKES を参照)。すでに「いいね」済みのノートには実行しません。 |
rednote_reply_comment | url、commentId、commentAuthor、commentText、text(最大 500 文字) | 指定したコメントに返信します。 |
rednote_reply_comment には、rednote_get_comments が返した ID、投稿者、テキストをそのまま渡してください。返信前にワーカーがページから該当 ID のコメントを読み取り、投稿者とテキストが完全に一致するか確認します。一致しない場合は返信しません。
タイトル、コメント、返信は 1 行で入力してください。改行は Enter として入力され、コメントが途中で送信される可能性があります。ノートの本文には改行を含められます。
ノートの URL は https://www.xiaohongshu.com/explore/<id>?xsec_token=... の形式(海外アカウントの場合は www.rednote.com)である必要があります。rednote_search の結果から取得してください。トークンのない URL は拒否されます。RedNote が CAPTCHA を表示するためです。docs/friction.md を参照してください。
承認ゲートの仕組み
簡単な例:
- Claude に「/Users/me/pics/desk.jpg を使って、デスクのセットアップについて投稿して」と依頼します。
- Claude が
rednote_create_postを呼び出します。サーバーは画像を確認し、キューにコピーしてハッシュ化します。q_20261006T153012_ab12のようなキュー ID を返します。ブラウザーは開きません。何も投稿されません。 rednote-gate approveを実行し、表示されたリンクを開きます。ページにタイトル、本文、画像がそのまま表示されます。「承認」をクリックします。- ワーカーは 10 秒ごとにキューを確認します。クリック後 30 秒待機するため、その間に「キャンセル」を押すこともできます。その後、予算に余裕があれば項目を処理します。台帳に
attemptの行を記録してから、投稿者ページを開き、画像をアップロードしてテキストを入力します。 - ドライランモード(デフォルト)では、最後のクリックの前に停止します。項目は
dry_runになります。ライブモード(rednote-gate live)では、投稿をクリックします。項目はpostedになります。 - Claude は
rednote_queue_statusを呼び出して結果を確認できます。承認リンクを受け取ることはありません。
「承認」をクリックしても、項目に承認済みの印が付くだけです。それだけで投稿されることはありません。チャット内で承認することはできません。Claude に「はい、投稿して」と伝えても何も変わりません。
ステータス
pending -> approved | rejected
approved -> posting | rejected (Cancel)
posting -> posted | dry_run | failed | unknown
| ステータス | 意味 |
|---|---|
pending | キューに追加され、人による操作を待っています |
approved | 人が「承認」をクリックしました。ワーカーと予算を待っています。 |
rejected | 人が「拒否」をクリックしたか、承認済みの項目で「キャンセル」をクリックしました |
posting | ワーカーが現在処理中です |
posted | ライブでの処理が完了しました |
dry_run | ドライランを有効にした状態で、ワーカーがフローを実行しました。ページに移動し、画像をアップロードしてテキストを入力しましたが、最後のボタンはクリックしていません。 |
failed | ドライランでエラーが発生したか、ライブ処理が最後のクリックの前に停止しました(返信対象のコメントが変更された場合など)。何も送信されていません。再度キューに追加できます。 |
unknown | ライブ処理で最後のクリック後にエラーが発生したか、ライブ処理の途中でプロセスが終了しました。投稿されたかどうかは不明です。再試行されることはありません。アカウントを手動で確認してください。 |
同一の書き込みをキューに追加すると、2つ目の項目ではなく既存の ID が返されます。同一とは、ツール、引数、画像のバイト列が同じであることを意味します。最初の項目が pending、approved、posting、posted、unknown のいずれかの間は、この動作が適用されます。
ガードレール
- コードで承認します。 書き込みツールはキューに追加するだけです。ワーカーが最後のボタンをクリックするのは、ライブモードで、かつ承認済みの項目に限られます。
- 承認した内容が投稿されます。 画像はキューに追加されるときにコピーされ、ハッシュ化されます。ファイルシグネチャを検証し、実際の JPEG、PNG、WebP ファイルだけを受け付けます。画像はそれぞれ最大 20 MB です。ノートには 1~9 枚の画像を添付できます。これはプロジェクト側の制限であり、RedNote の制限ではありません。
- 1 日あたりの上限。 任意の連続した 24 時間におけるライブ試行は、最大
RN_DAILY_WRITES回です(既定値は 5 回)。コメントや返信にも、直前のライブでのコメントまたは返信の試行からRN_COMMENT_GAP_MIN分(既定値は 10 分)空ける必要があります。上限は台帳に基づいて計算されるため、再起動してもリセットされません。失敗したライブ試行や結果不明のライブ試行もカウントされます。ドライランはカウントされません。上限を超えている承認済み項目は待機します。承認ページには、次の枠が空く時刻が表示されます。 - 取り消し可能な時間。 承認後、ワーカーは 30 秒待機します。その間にキャンセルすれば、実行を停止できます。
- 承認はモードに紐付けられます。 「ドライランを承認」は、ドライランとしてのみ実行されます。ライブモードで再起動しても、以前に承認したドライランは実行されません。ページの案内に従ってキャンセルし、再度承認してください。
- 送信前に読み戻します。 入力後、すべてのフィールドを読み戻します。トピックやメンションの選択欄など、何かがテキストを変更した場合は、最後のクリックの前に停止します。
- クラッシュ時の安全対策。 ブラウザーの起動前に
attemptの行が書き込まれるため、クラッシュしても上限を消費します。ライブ項目が試行の途中で中断された場合はunknownとなり、再試行されません。ドライランが試行の途中で中断された場合はfailedとなります。 - 送信前に再度確認します。 アップロード前に画像のハッシュを再確認します。返信は、対象のコメントが引き続き存在し、そのテキストが承認した内容と一致する場合にのみ送信されます。
- 問題があれば停止します。 RedNote に CAPTCHA や「頻繁すぎます」という警告が表示された場合、rednote-gate は台帳に
blockedの行を書き込みます。ワーカーを停止し、読み取りツールを拒否します。書き込みツールは引き続きキューに追加できます。キューへの追加でブラウザーにアクセスすることはないためです。再試行はしません。この停止状態は再起動後も維持されます。続行するには、人が承認ページの「再開」をクリックします。 - 単独のノート URL は受け付けません。
xsec_tokenを含まない URL は、ブラウザーを開く前に拒否されます。 - ブラウザーを操作するのは 1 つのサービスだけです。 ブラウザーを操作するのはサービスだけで、
data/内のロックファイルで制御されます。すべての MCP ホスト(Claude Code、Claude Desktop、Codex、複数の同時セッション)は、この 1 つのサービスに接続するため、アカウント上で 2 つ目のブラウザーが起動することはありません。 - 既定ではドライランです。
rednote-gate liveを実行するか、設定ページでライブモードに切り替えるまで、ドライランのままです。settings.jsonに保存されたモードがRN_DRY_RUNより優先されます。
利用規約に関する警告
このプロジェクトは、実際のブラウザーとログイン済みの実際のセッションを使ってRedNoteのウェブサイトを操作します。RedNoteの利用規約では、これが認められていません。使用すると、アカウントにレート制限がかかったり、制限されたり、停止されたりする可能性があります。そのリスクはご自身で負うことになります。
2026年に小紅書が発表した2件の告知も適用されます(2026-10-07に確認)。2026-03-10には、「AI 托管」(AIホスティング)アカウントに対する措置を発表しました(IT之家の記事)。ときどきAIホスティングに投稿文の作成、投稿、交流をさせるアカウントには、警告が届き、投稿の配信が抑制されます。AIホスティングツールを通じて直接登録、投稿、交流を行うアカウントは停止されます。また、公開ノートがすべてその方法で投稿されたアカウントも停止されます。2026-04-27には、AIコンテンツに関するルールを公開しました(IT之家の記事)。クリエイターは、AIが生成または推敲したノートを公開する際に、その旨を表示する必要があります。表示のないAIコンテンツには、プラットフォームが独自のラベルを付けます。ルールに反してAIでアカウントを運用すると、段階的に処罰され、最終的には停止される可能性があります。
承認をクリックしても、アカウントがルールに準拠するわけではありません。rednote-gate経由でのみ投稿する使い捨てアカウントは、3月の告知に記載された停止対象に該当します。
- この用途専用の使い捨てアカウントを1つだけ使用してください。メインアカウントは絶対に使用しないでください。ブランドアカウントも絶対に使用しないでください。
- 書き込みは少なく、十分な間隔を空けてください。予算は上限であり、目標ではありません。
- お住まいの地域の法律と、閲覧したり返信したりするノートの投稿者を尊重してください。
セットアップ
Node 20以降、この用途のために作成したRedNoteアカウント、およびそのアカウントでログインしているスマートフォンが必要です。
npm install -g rednote-gate
rednote-gate setup
rednote-gate setupは、パッケージに同梱されたPlaywrightを使ってChromiumをインストールし、その後、以下の2つの手順を実行します。各手順は個別に実行することもできます。
rednote-gate login
rednote-gate connect
クローンから実行する場合は、npm installとnpm run buildの後にnpm run setupを実行すると、同じ処理が行われます。クローンでは、npm run login、connect、live、dry、stop、approveで同じコマンドを実行できます。
rednote-gate connectは、すべてのプロジェクトで使えるようにrednote-gateをClaude Codeに追加します(claude mcp add --scope user)。Claude DesktopとCodex用の設定も表示します。下記をご覧ください。
初期状態はドライランです。承認済みの項目はフォームに入力されますが、投稿はされません。ドライランが問題ないことを確認したら、次のコマンド1つでモードを切り替えます。
rednote-gate live
ライブモードの意味が説明され、確認を求められます。rednote-gate live --yesを実行すると、確認を省略できます。モードはsettings.jsonに保存されます。これはダッシュボードの「設定」ページから書き込まれるファイルと同じで、次のツール呼び出し時にサービスが再起動します。rednote-gate dryでドライランに戻せます。一方のモードで行った承認が、もう一方のモードで実行されることはありません。
その他のコマンド:
| コマンド | 内容 |
|---|---|
rednote-gate status | バージョン、サイト、モード、今日の予算の残り、サービスの稼働状況 |
rednote-gate doctor | オフラインでのチェック。Node、Chromium、ログイン、設定、台帳、サービスをそれぞれ合格または不合格の1行で表示します。RedNoteには接続しません。 |
rednote-gate approve | 承認ページのリンクを表示します |
rednote-gate stop | バックグラウンドサービスを停止します |
rednote-gate help | すべてのコマンドを表示します |
コマンドを指定せずにrednote-gateを実行すると、MCPサーバーが起動します。MCPホストが起動するのはこのコマンドです。
データの保存場所
データとログイン情報は ~/.rednote-gate に保存されます。キュー、台帳、設定は data/ に、ログイン情報は .session/ に保存されます。RN_HOME を設定すると、両方の保存場所が移動します。以前のバージョンの .session/ がすでにあるクローンでは、引き続きそのフォルダーが使用されます。
rednote-gate login を実行すると、xiaohongshu.com のページが表示されたブラウザーで開きます。海外アカウントの場合は rednote.com に移動し、rednote.com でページが再読み込みされて、新しい QR コードのスキャンを求められます。アカウントが使用するサイトは .session/site に記録されます。使い捨てアカウントのスマートフォンで QR コードをスキャンしてください。ページにログイン済みと表示されているのにターミナルで処理が進まない場合は、そこで Enter を押してください。続いて creator.xiaohongshu.com にアクセスしてクリエイターセッションを取得します。このサイトで求められた場合は、もう一度スキャンしてください。セッションは、所有者のみがアクセスできる権限(0600)で .session/state.json に保存されます。
実行前に MCP ホストを終了してください。ブラウザーを操作できるプロセスは一度に 1 つだけです。
このファイルは認証情報です。Git の追跡対象から除外されています。rednote-gate がこのファイルを表示することはありません。共有、コミット、共有ディスクへのコピーは絶対に行わないでください。
次に、MCP ホストにサーバーを追加します。
Claude Code、Claude Desktop、Codex への接続
rednote-gate connect を実行すると、インストール環境に合わせた 3 つすべての設定が出力されます。npm でグローバルインストールしている場合、コマンドは rednote-gate です。クローンから実行する場合は、dist/cli.js の絶対パスを指定して node を使います。
Claude Code:
claude mcp add rednote-gate --scope user -- rednote-gate
Claude Desktop(claude_desktop_config.json 内):
{
"mcpServers": {
"rednote-gate": {
"command": "rednote-gate",
"args": []
}
}
}
Claude Desktop からは、シェルの PATH が見えない場合があります。サーバーを起動できない場合は、絶対パスを使用してください。command には which node の出力を、args には ["<npm root -g>/rednote-gate/dist/cli.js"] を指定します。
Codex(~/.codex/config.toml 内):
[mcp_servers.rednote-gate]
command = "rednote-gate"
args = []
env ブロックは省略できます。環境変数を参照してください。
@playwright/mcp などのブラウザー MCP サーバーを、rednote-gate と同じホストセッションで読み込まないでください。ブラウザーを操作できるエージェントが承認ページを開き、「Approve」をクリックする可能性があります。
承認ページ
MCP サーバーの実行中、ページは http://127.0.0.1:7317 で動作します。ポートは RN_APPROVAL_PORT で変更できます。
リンクを取得します。
rednote-gate approve
シークレットトークン付きの URL が出力されます。サーバーは起動するたびに新しいトークンを生成するため、再起動後は新しいリンクを取得してください。リンクは data/approval-url に、所有者のみがアクセスできる権限で保存されます。
ページには次の内容が表示されます。
- 投稿と下書きの場合:正確なタイトル、本文、画像
- コメントの場合:コメントのテキスト
- 返信の場合:返信先のコメントと返信のテキスト
- 過去 24 時間に使用されたライブ書き込み数と、次の枠が利用可能になる時刻
- モード:DRY RUN または LIVE
- CAPTCHA または警告によってワーカーが停止した場合の停止バナー
- 各試行の後に、ブラウザーが最後に表示した画面のスクリーンショット
- 承認済みの項目または実行中の項目がある間、5 秒ごとに自動更新
Claude が書き込みをキューに追加すると、自動的にページが開きます(1 分に 1 回まで)。rednote_open_approval_page を使うと、要求に応じてページを開けます。
ページには、本日の使用状況メーターと Settings へのリンクも表示されます。設定できるのは、モード(ドライランまたはライブ。ライブにするには確認チェックが必要)、1 日あたりの書き込み数、1 日あたりの「いいね」数、コメント間の待ち時間、通知です。設定は data/settings.json に保存され、再起動せずに、次に実行される項目から適用されます。上限を超える設定はできません。上限は書き込み 20 件、「いいね」50 件、コメント間隔 2 分です。
ボタン:
| ボタン | 動作 |
|---|---|
| Approve dry run、またはライブモードで Approve and publish、Approve and save draft、Approve and send、Approve and send reply | 保留中の項目を承認済みにします。投稿は行いません。ワーカーは約 30 秒後に実行します。 |
| Reject | 保留中の項目を却下済みにします |
| Cancel before it runs | 承認済みの項目のうち、ワーカーがまだ開始していないものを却下します |
| Resume | 停止状態を解除し、台帳に resumed の行を書き込みます |
ページの保護方法:
- 127.0.0.1 のみで待ち受けます。
- Host ヘッダーを検証し、DNS リバインディングを防ぎます。
- すべてのリクエストでトークンが必要です。
- 状態を変更するリクエストは POST のみで、同一オリジンから送信される必要があります。これにより、他のウェブサイトからの操作を防ぎます。
- フレーム内には表示できません。厳格な Content Security Policy と no-referrer を送信します。
キューファイルの形式
すべてのデータは ~/.rednote-gate/data/、またはログイン済みのクローンでは data/ に保存されます。RN_HOME または RN_DATA_DIR で保存先を変更できます。このフォルダーにアクセスできるのは所有者のみです。クローンでは Git の対象外です。
| パス | 内容 |
|---|---|
data/queue/<id>.json | キュー項目 1 件 |
data/queue/<id>/<n>.<ext> | 項目をキューに追加したときにコピーされる画像 |
data/ledger.jsonl | 台帳 |
data/screenshots/<id>.png | 試行のスクリーンショット |
data/approval-url | 承認リンク(0600) |
data/lock | サービスのプロセス ID。ブラウザーを操作するのはサービスのみです |
data/service.log | サービスのログ |
キュー項目:
{
"id": "q_20261006T153012_ab12",
"tool": "create_post",
"args": { "title": "...", "body": "...", "images": ["q_20261006T153012_ab12/0.jpg"] },
"imageSha256": ["..."],
"contentHash": "...",
"createdAt": "2026-10-06T15:30:12.000Z",
"status": "pending",
"history": [{ "status": "pending", "at": "2026-10-06T15:30:12.000Z" }]
}
args.images 内の画像パスは data/queue/ からの相対パスです。imageSha256 には画像ごとに 1 つのハッシュが格納されます。contentHash はツール、引数、画像のハッシュを対象とし、重複チェックで比較されます。状態が変わるたびに、history に 1 件追加されます。
台帳の形式
data/ledger.jsonl には、1 行につき 1 つの JSON オブジェクトが格納されます。
| フィールド | 意味 |
|---|---|
at | イベントの時刻 |
event | attempt、result、blocked、resumed のいずれか |
id | キュー ID |
tool | 使用した書き込みツール |
dryRun | ドライランが有効だったかどうか |
outcome | 項目の最終ステータス:posted、dry_run、failed、unknown のいずれか |
detail | 短いメモ |
screenshot | スクリーンショットのパス |
すべての行にすべてのフィールドが含まれるわけではありません。ブラウザーの起動前に attempt 行が書き込まれます。試行が終了すると、その後に result 行が書き込まれます。その間にプロセスが終了した場合は、result のない attempt が残ります。次回の起動時に、その項目は unknown(実行時)または failed(ドライラン時)になり、result 行に記録されます。
予算には、過去 24 時間の dryRun: false を持つ attempt 行がカウントされます。停止状態も台帳から判断されます。blocked 行の後に resumed 行がない場合は、再起動後も停止状態です。
行が有効な JSON でない場合、その行を修正または削除するまで書き込みは停止します。予算を読み取れない場合は、安全側に倒して処理を停止します。
環境変数
| 変数 | デフォルト | 意味 |
|---|---|---|
RN_HOME | ~/.rednote-gate | data/ と .session/ の格納フォルダーです。.session/ がすでにあるクローンでは、代わりにクローンのフォルダーが使われます。 |
RN_SITE | rednote-gate login から取得 | xiaohongshu.com(中国本土のアカウント)または rednote.com(海外アカウント) |
RN_HEADLESS | headed | 1 にすると Chromium をヘッドレスで実行します |
RN_DRY_RUN | 1 | 0 にすると、ワーカーが承認済み項目の最後のボタンをクリックします |
RN_DAILY_WRITES | 5 | 任意の連続する 24 時間内に許可される実行時の試行回数 |
RN_COMMENT_GAP_MIN | 10 | 実行時のコメントまたは返信の試行間隔(分) |
RN_DAILY_LIKES | 10 | 任意の連続する 24 時間内に許可される実行時の「いいね」の回数。RN_DAILY_WRITES とは別枠です |
RN_APPROVAL_PORT | 7317 | 承認ページのポート |
RN_DATA_DIR | <RN_HOME>/data | キュー、台帳、設定、スクリーンショット、ロックの格納先 |
RN_SESSION_PATH | <RN_HOME>/.session/state.json | 保存されたログインセッション |
RN_OPEN_APPROVAL | on | 0 にすると、承認ページが自動で開かなくなります |
RN_NOTIFY | on | 0 にすると、Mac の通知が無効になります |
RN_TYPE_MIN_MS | 40 | 入力する文字ごとの最短遅延時間 |
RN_TYPE_MAX_MS | 140 | 入力する文字ごとの最長遅延時間 |
上限値とポートは整数で指定する必要があります。入力に誤りがあると、上限が無効になるのではなく、エラーでサーバーが停止します。
ダッシュボードの Settings ページは data/settings.json に書き込みます。このファイルの上限値、モード、通知の設定は、これらの変数より優先されます。
これらの値は MCP ホストの env ブロックに設定してください。rednote-gate コマンドはシェルから値を読み取ります。RN_HOME、RN_DATA_DIR、RN_SESSION_PATH を設定する場合は、シェルでも同じ値をエクスポートしてください。rednote-gate connect は、この 3 つの値を Claude Code のエントリーにコピーします。
ドライランでも副作用は発生します。ページを開き、RedNote のクリエイターページに画像をアップロードし、テキストを入力します。最後の公開、保存、送信のクリックだけをスキップします。
このツールが行わないこと
- 人間が Approve をクリックしない限り、何も投稿しません。チャット内での承認機能はありません。
- 複数のアカウントや複数のブラウザーコンテキストを使ったり、書き込みを同時に実行したりしません。
- 一括投稿や、誰も確認していない投稿の予約は行いません。
- CAPTCHA を解いたり、ブロックされた後に再試行したりしません。
- お気に入り登録、フォロー、メッセージの送信は行いません。(「いいね」はオーナーのリクエストにより 2026-10-06 に追加され、同じ承認ページと独自の日次上限の対象です。)
- アカウントをクラウドブラウザーで実行しません。
- メインアカウントやブランドアカウントには触れません。
既知の制限
- ブラウザーエージェントが承認できる可能性があります。 同じマシン上で独自のブラウザーツールを使うエージェントは、承認ページを開いて「承認」をクリックできます。同じホストセッションでブラウザー MCP サーバーを読み込まないでください。ユーザーとして実行されるプロセスも同様に、
data/approval-urlを読み取れます。このゲートが制止できるのは、rednote-gate のツールを介してモデルが操作することです。実行するほかのソフトウェアを制止することはできません。 - サービスは実行を続けます。 初回使用時に起動し、
rednote-gate stopを実行するか、再起動するまで稼働し続けます。更新後にrednote-gate stopを実行すると、次のツール呼び出しでサービスが新たに起動します。設定の変更に再起動は不要です。ログはdata/service.logにあります。 - セレクターは変わります。 RedNote はページを変更します。セレクターは
src/rednote.tsのSELオブジェクトにあります。そこで修正してください。証拠は PROTOTYPE-RUNSHEET.md のキャプチャーブロックと docs/friction.md に記録してください。 unknownが再キュー登録をブロックします。unknown項目があると、同一の書き込みはブロックされます。手動で確認して投稿されていなかった場合は、再度キューに追加する前にテキストを変更してください。- 下書きは rednote-gate のブラウザーに保存されます。 RedNote のウェブ投稿サイトでは、下書きはアカウントではなくブラウザーに保存されます(サイト独自のお知らせにもそう記載されています)。rednote-gate で保存した下書きは、スマートフォンアプリには表示されません。rednote-gate はセッションとともにブラウザーの IndexedDB を保存することで、再起動後も下書きを保持します。仕上げるには、rednote-gate のブラウザーで投稿サイトの草稿箱を開いてください。
- コメントを取得するのは最初のページのみです。
- デフォルトではヘッド付きです。 ブラウザーツールの実行時に Chromium ウィンドウが開き、1 つのタブとして開いたままになります。信頼できるようになったら、
RN_HEADLESS=1を設定してください。
アンチボット対策(意図的に開示)
所有者は 2026-10-06 に、これらの対策を維持することを決定しました。誰もが予期しない事態にならないよう、ここに記載しています。
- 人間の入力速度に合わせたタイピング。文字ごとにランダムな遅延を加え、ランダムに一時停止します。
- Chromium は
--disable-blink-features=AutomationControlledを指定して起動します。 - 固定のデスクトップ版 Chrome 124 macOS ユーザーエージェントです。Playwright が実際に実行する新しい Chromium とは一致しません。
CAPTCHA の解決は行いません。上記 3 項目を超えるフィンガープリント偽装も行いません。
RedNote のページには、人には見えず、クリックもできない隠しデコイボタンがあります。rednote-gate は、人がクリックする可視要素のみを操作し、クリックを強制することはありません。docs/friction.md を参照してください。
ライブサイトでの最終確認
| フロー | ツール | 2026-10-06 時点のステータス |
|---|---|---|
| ログイン状態 | rednote_login_status | 2026-10-06 にヘッド付きで確認済み(rednote.com);ヘッドレスは未確認 |
| 検索 | rednote_search | 2026-10-06 にヘッド付きで確認済み(rednote.com);ヘッドレスは未確認 |
| ノートの取得 | rednote_get_note | 2026-10-06 にヘッド付きで確認済み(rednote.com);ヘッドレスは未確認 |
| 自分のノート | rednote_my_notes | 2026-10-06 にヘッド付きで確認済み(rednote.com) |
| 投稿のトピックと絵文字 | topics を指定した rednote_create_post | 2026-10-06 にライブサイトで確認済み(rednote.com):ノートのタグ一覧にリンク付きトピックが4件、絵文字が4個保持される |
| AI ラベル | aiGenerated: true を指定した rednote_create_post | 2026-10-07 にドライランで確認済み(rednote.com):内容タイプの宣言が「笔记含AI合成内容」に設定され、プレビューに表示される;ライブでは未投稿 |
| 動画ノート | rednote_create_video_post | 2026-10-06 にドライランで確認済み(rednote.com):アップロード、処理、トピックのリンクが完了し、「发布」が見つかった;実際の動画は未投稿 |
テキストカードと post_from_concept | rednote_make_cards | 2026-10-06 にライブサイトで確認済み(rednote.com):コンセプトを調査し、カードを4枚作成してノートとして公開 |
| いいね | rednote_like_note | 2026-10-06 にライブサイトで確認済み(rednote.com):クリック後に「いいね」状態を確認、件数は151から152に増加 |
| コメントの取得 | rednote_get_comments | 2026-10-06 にヘッド付きで確認済み(rednote.com);ヘッドレスは未確認 |
| 投稿の作成 | rednote_create_post | 2026-10-06 にライブサイトで確認済み(rednote.com):ノートを公開し、rednote_my_notes に表示 |
| 下書きの作成 | rednote_create_draft | 2026-10-06 にライブサイトで確認済み(rednote.com):保存済み。ただし rednote-gate のブラウザー内のみ(「既知の制限」を参照) |
| コメントの投稿 | rednote_post_comment | 2026-10-06 にライブサイトで確認済み(rednote.com) |
| コメントへの返信 | rednote_reply_comment | 2026-10-06 にライブサイトで確認済み(rednote.com);コメント間隔の制限により9分間保留された後、自動的に送信 |
各行の確認方法については、PROTOTYPE-RUNSHEET.md を参照してください。実行のたびに、日付と結果をこの表に更新してください。
クレジット
- セレクターとページ状態のパスは、xpzouying/xiaohongshu-mcp(Apache-2.0、コミット a5c8f77)および sykuang/rednote-mcp(MIT、コミット 7e87754)を参考にしています。
- 書き込みの結果が不確かな場合は
unknownとし、再試行しないというルールは、mimi17-shq/xiaohongshu-mcp-reliable(Apache-2.0)に従っています。
これらのプロジェクトやその他のプロジェクトの比較については、docs/landscape.md を参照してください。
ライセンス
MIT。作者:Yash Shelar。LICENSE を参照してください。
rednote-gate は独立したプロジェクトであり、いかなる組織とも提携していません。RedNote と Xiaohongshu は、それぞれの所有者の商標です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
