mcpField
X
xhs-skill

xhs-skill

github.com/leeguoooooマーケティング・グロース1245 回インストール34 週間前に更新
リポジトリ

xhs-skill について

小紅書クリエイターセンターへのログイン、投稿の準備と検証、データのエクスポートをまとめたスキルです。QR・Cookie 用のローカルツールと、agent-browser-stealth に委ねるブラウザー操作、厳格な前後確認を組み合わせています。

主な機能

  1. 01QR 表示と Cookie 正規化ツール
  2. 02ログイン状態の検証
  3. 03投稿データの検証と内容レビュー
  4. 04ブラウザーでの直列投稿手順
  5. 05クリエイターデータのエクスポート案内
  6. 06機密データのローカル保存規則

活用シーン

  1. 01クリエイターセンターのログイン状態を保存・検証
  2. 02投稿前のデータ確認
  3. 03クリエイターデータをファイルやスクリーンショットで出力
  4. 04下書き管理と投稿後の確認

MCP 対応

ログイン、投稿、エクスポートなどのブラウザー操作には agent-browser-stealth を使用します。README には MCP サーバーや MCP 専用インターフェースの説明はありません。

インストール

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

$npx skills add https://github.com/leeguooooo/xhs-skill --skill xhs-skill

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

cli.mjs
package.json
agents/
openai.yaml
bin/
xhs-skill.mjs
config/
review_policy.json
review_taxonomy.json
verify_publish_policy.json
lib/
cookies.mjs
image.mjs
qr.mjs
scripts/
review_publish_payload.mjs
verify_login.mjs
verify_publish_payload.mjs

詳細

本スキルは xhs-* を統合したもので、ユーザーが clawhub install xhs-skill を一度実行するだけで使い始められるようにすることを目的としています。

制約:

  • すべてのブラウザー操作(ページを開く/クリック/入力/アップロード/スクリーンショット/ログイン/エクスポート)は、すべて agent-browser-stealth に委任します。
  • このリポジトリで公開処理のオーケストレーションスクリプト(publish_from_payload など)を作成・保守することは禁止です。公開操作は、セッション内で agent-browser-stealth が実行する必要があります。
  • agent-browser の使用は禁止です(旧経路は無効化されています。agent-browser-stealth を統一して使用してください)。
  • すべての機密データ(cookies、エクスポートファイル、スクリーンショット)はローカルの data/ ディレクトリのみに保存し、チャットに貼り付けないでください。

実行上の厳格な制約(安定性):

  • 同じ agent-browser-stealth session での並行操作は禁止です(順次実行してください)。並行操作すると、os error 35 による誤った失敗が発生しやすくなります。
  • snapshot の ref は変動します。重要な操作の前後には必ず snapshot -i を再取得し、placeholder/role/text で再特定してフォールバックしてください。
  • QR コードをスキャンしただけではログイン成功とは限りません。必ず事後検証を行ってください(以下の A 節「ログイン成功の判定」を参照)。

インストール

clawhub install xhs-skill
cd skills/xhs-skill
npm i

説明:npm i は、このスキルに同梱されているローカル CLI(QR コードのデコード、cookies ツール)にのみ使用します。QR コードのデコードや cookies の変換が不要であれば、QR コードのスキャンとエクスポートには agent-browser-stealth だけを使用することもできます。

ディレクトリの規約(ローカル)

コマンドを実行する作業ディレクトリに、以下を用意することをおすすめします。

  • data/xhs_login_qr.png:ログインページの QR コードのスクリーンショット(PNG)
  • data/raw_cookies.json:エクスポートした元の cookies(JSON)
  • data/xhs_cookies.json:正規化済みの cookies(JSON)
  • data/exports/<YYYY-MM-DD>/:エクスポートデータ(CSV/XLSX/スクリーンショット)
  • data/assets/<YYYY-MM-DD>/:投稿に使うアイコン/画像素材と出典の記録
mkdir -p data

A. ログイン(QR コードをスキャン)して cookies を保存する

目的:小紅書クリエイターセンターにログインして cookies をエクスポートし、頻繁に再ログインするのを避けます。

  1. agent-browser-stealth でログインページを開きます。
  • https://creator.xiaohongshu.com/login
  • デフォルトで「電話番号/認証コードでログイン」が表示される場合は、「QR コード」をクリックして QR コード画面に切り替えます。
  1. agent-browser-stealth で QR コードを撮影し、data/xhs_login_qr.png に保存します(PNG)。

  2. (任意)ローカル CLI で QR コードのテキストをデコードし、ASCII QR コードを表示します。

node ./bin/xhs-skill.mjs qr show --in ./data/xhs_login_qr.png

OpenClaw からの返送ルール(必須):

  • ファイルパスだけを返すことは禁止です(例:data/xhs_login_qr.png とだけ伝える)。
  • 必ず node ./bin/xhs-skill.mjs qr show --in ./data/xhs_login_qr.png を実行し、出力された QR コードのテキストと ASCII QR コードをそのままユーザーに送信してください。
  • セッションが画像表示に対応している場合は、補足として QR コードのスクリーンショットの絶対パス(または画像添付)も追加してください。
  • QR コードを送信したら処理を一時停止し、ユーザーが「スキャン済み」と確認してから cookies のエクスポートを続行してください。

推奨する返送テンプレート:

请用小红书 App 扫这个二维码登录。
二维码文本: <qr_text>
<ASCII QR>
  1. 小紅書アプリで QR コードをスキャンしてログインした後、cookies を data/raw_cookies.json にエクスポートします(DevTools は使用しません)。
agent-browser-stealth cookies --json > ./data/raw_cookies.json
  1. cookies を正規化し、data/xhs_cookies.json に保存します。
node ./bin/xhs-skill.mjs cookies normalize --in ./data/raw_cookies.json --out ./data/xhs_cookies.json
node ./bin/xhs-skill.mjs cookies status --in ./data/xhs_cookies.json

5.1 スクリプトを使った事後検証を推奨します(実行可能なゲート)。

# 例:先让 agent-browser-stealth 记录当前 URL 与后台探测后的 URL
CURRENT_URL="$(agent-browser-stealth get url)"
agent-browser-stealth open https://creator.xiaohongshu.com/creator/home
PROBE_FINAL_URL="$(agent-browser-stealth get url)"

node ./scripts/verify_login.mjs \
  --cookies ./data/xhs_cookies.json \
  --current-url "$CURRENT_URL" \
  --probe-final-url "$PROBE_FINAL_URL" \
  --json

ログイン成功の判定(必須):

  • 「ログイン完了」と報告するには、以下の 2 条件を両方満たす必要があります(web_session は必須条件ではなくなりました)。
  • 現在の URL が /login ではない。
  • クリエイターバックエンドのページにアクセスでき、401 エラーやログインページへのリダイレクトが発生しない。
  • 加点要素:cookies に「session-like cookie」(例:web_session、または名前に session を含む cookie)が存在すること。存在しなくても利用できる可能性はありますが、安定性は低くなります。
  • 必須条件のいずれかを満たさない場合は、「ログイン失敗/未完了」と報告してログイン手順をやり直してください。成功したと誤って報告することは禁止です。

ログイン結果の出力契約(JSON):

{
  "task": "xhs_login",
  "ok": true,
  "checks": {
    "left_login": true,
    "backend_not_rejected": true,
    "has_session_like_cookie": true
  },
  "artifacts": {
    "qr_png": "data/xhs_login_qr.png",
    "raw_cookies": "data/raw_cookies.json",
    "normalized_cookies": "data/xhs_cookies.json"
  }
}

失敗時は ok=false とし、失敗した項目(例:まだ /login にいる、または probe によってログインページにリダイレクトされた)を示してください。「完了」と出力することは禁止です。

  1. (任意)Cookie: ヘッダーを生成します。
node ./bin/xhs-skill.mjs cookies to-header --in ./data/xhs_cookies.json

失敗時のフォールバック:

  • QR コードのデコードに失敗した場合:通常、QR コード画面に切り替わっていないか、QR コードが小さすぎます。agent-browser-stealth で拡大してから再撮影してください(PNG のまま)。
  • cookies の正規化に失敗した場合:元の data/raw_cookies.json を保持し、後から互換性の分岐を追加してください。

A1. アカウント制限/レート制限を避けるための運用ルール(必須)

要点:小紅書のリスク管理では、主に「操作のペース+フィンガープリント+行動+IP+アカウントの信頼度」が確認されます。主な原因はツールそのものではなく、その使い方です。

必須の方針:

  1. 人間らしいペース:
  • 間を空けずに連続してクリック/入力することは禁止です。重要な操作の間には、ランダムな待機時間を設けてください(1.2s~7s を推奨)。
  • 入力には type --delay(1 文字ずつ)を優先し、一括で瞬時に入力する fill は避けてください。
  1. フィンガープリントの固定:
  • 公開ワークフローを実行するときは、--profile を固定し、--headed を有効にすることを優先してください。
  • 同じアカウントでは、長期にわたって同じ profile ディレクトリを再利用することを推奨します。実行のたびに一時環境を新規作成しないでください。
  1. 公開頻度のゲート:
  • 同じ profile での公開は、デフォルトで 24h <= 3 件までです。
  • 2 回の公開の最小間隔は、デフォルトで 30 分です。
  • ゲートに該当した場合は処理を中止し、無理に公開してはいけません。
  1. 公開前のウォームアップ:
  • まず短時間、通常どおり閲覧します(ホームページ/クリエイターバックエンドでの滞在とスクロール)。その後、公開ページに移動してください。
  • 「ページを開いてすぐに送信する」ことは禁止です。
  1. ネットワークとデバイス:
  • データセンターの IP や、プロキシを高頻度で切り替えることは禁止です。
  • 家庭用ネットワークまたはスマートフォンのテザリングを優先し、同じアカウントではデバイス/IP をできるだけ安定させてください。
  1. レート制限を受けた後の対応:
  • レート制限:自動化を停止し、3~7 日間、通常どおり手動で利用してください。
  • アカウント停止:申し立てのみ可能です。アカウントを変更する場合は、profile + IP + デバイス環境 も同時に変更してください。

B. ノートを公開する(画像・テキスト/動画)

入力(ユーザーが提供):

  • ノートの種類:画像・テキスト または 動画
  • タイトル、本文、タグ(必須)
  • トピック(必須。トレンド投稿の場合は「今日のトレンド」であること)
  • 画像/動画のパス(ローカルの絶対パスを優先)
  • アイコン/画像素材の要件(任意):キーワード、スタイル(フラット/写実的/線画)、メインカラー、背景を透明にするかどうか
  • トレンドの出典(必須):出典名、出典 URL、出典日(YYYY-MM-DD)

公開の必須ゲート:

  1. まず公開素材を data/publish_payload.json にまとめます(例)。
{
  "topic": "今日热点:xxxx",
  "source": {
    "name": "央视新闻",
    "url": "https://example.com/news",
    "date": "2026-02-12",
    "evidence_snippet": "2月12日该媒体报道提到:......",
    "key_facts": ["关键事实1(含日期/数字)", "关键事实2(含日期/数字)"]
  },
  "post": {
    "title": "20字内标题示例",
    "body": "不少于 80 字的正文......",
    "tags": ["#热点", "#今日新闻", "#小红书运营"],
    "real_topics": ["#人工智能", "#AI资讯", "#科技观察"],
    "media": ["/abs/path/cover.png", "/abs/path/card_1.png"]
  }
}
  1. 公開前に必ず検証スクリプトを実行します。
# 普通模式
node ./scripts/verify_publish_payload.mjs --in ./data/publish_payload.json --policy ./config/verify_publish_policy.json --tag-registry ./data/tag_registry.json --min-registry-tags 12 --require-source-evidence on --strict-anti-ai on --json

# 今天热点模式(强制 source.date = 今天)
node ./scripts/verify_publish_payload.mjs --in ./data/publish_payload.json --policy ./config/verify_publish_policy.json --tag-registry ./data/tag_registry.json --min-registry-tags 12 --require-source-evidence on --strict-anti-ai on --mode hot --json
  1. 公開前に必ずコンテンツ審査スクリプトを実行します(階層化ルール+AI)。
node ./scripts/review_publish_payload.mjs --in ./data/publish_payload.json --policy ./config/review_policy.json --taxonomy ./config/review_taxonomy.json --ai-provider auto --require-ai off --mode hot --json
  1. 検証と審査の両方の結果が ok=true の場合に限り、公開ページに進んで「公開/送信」をクリックできます。 検証ポリシーは ./config/verify_publish_policy.json、審査ポリシーは ./config/review_policy.json、階層化されたリスクパスは ./config/review_taxonomy.json にあります。
  2. いずれかのゲートで失敗した場合は、処理を中止し、不足分を補うよう案内してください。「スクリーンショットだけを送って、そのまま公開する」ことは禁止です。

リンクの禁止(必須):

  • タイトル/本文/タグに、リンクやドメイン形式(http/https、www.、xxx.com/.cn/...)を含めることは禁止です。アカウント停止につながるリスクがあります。
  • コンテンツの作成が難しい場合、または検証に合格しない場合は、中止してください。「適当に 1 件公開する」ことは避けてください。

AI 検出への対策と実際のタグ(必須):

  • 「AI として 100% 検出されない」とは保証しません。リスクの大幅な低減を目標とします。
  • 本文には「個人の視点+具体的な事実を示す情報(数字/日付/出典への言及)」を必ず含め、テンプレートのような文体は避けてください。
  • 公開前に必ず review_publish_payload の審査ゲートを通過し、decision=pass が求められます。また、再確認用に risk_path、根拠、review_queue を出力してください。
  • source.evidence_snippet と source.key_facts は必須であり、出典の事実をたどって確認できる内容にしてください。
  • タグと post.real_topics は、どちらも実際のトピックプール data/tag_registry.json に含まれるものを使用してください。タグを独自に作成することは禁止です。
  • #タグ を自動で本文に追加し、トピックに見せかけることは禁止です。
  • 公開前に小紅書の公開ページで、実際のトピックを少なくとも 3 つ手動で選択してから、agent-browser-stealth に最終的な公開クリックを実行させてください。

例:実際のタグプールを準備します(毎日更新することを推奨)。

cat > ./data/tag_registry.json <<'JSON'
{
  "updated_at": "2026-02-24",
  "source": {
    "platform": "xiaohongshu",
    "method": "manual_from_publish_topic_picker",
    "url": "https://creator.xiaohongshu.com/creator/publish"
  },
  "tags": ["#AI热点", "#人工智能", "#行业观察", "#科技新闻", "#AI资讯", "#科技观察"]
}
JSON

公開の実行方法(唯一):

  • 本リポジトリが担当するのは「データ準備+ゲート検証+レビュー検証」のみです。公開自動化スクリプトは提供しません。
  • ブラウザー操作は必ず agent-browser-stealth で順番に実行します:事前チェック -> 入力 -> 読み戻し検証 -> 公開 -> 再確認。
  • いずれかのゲートが失敗した場合(verify/review が ok=true でない場合)、必ず「公開前」の段階で停止し、送信ボタンを押してはいけません。

P0:公開オーケストレーター(プロセスのオーケストレーションであり、リポジトリのスクリプトではありません):

  1. 事前チェック:
  • 固定の入口ルートは https://creator.xiaohongshu.com/publish/publish です。/creator/* を最初の入口として使用してはいけません。
  • https://creator.xiaohongshu.com/new/home(「アクセスしたページは見つかりませんでした」)にリダイレクトされた場合は、ただちに /publish/publish に戻って再試行します。
  • 公開ページに入ったら、まず「画像とテキスト」モードに切り替えてから画像をアップロードします。「画像とテキスト」モードに切り替えるまでは、次の手順に進みません。
  1. 入力:
  • タイトル、本文、タグ/トピック、公開範囲を入力します。
  1. 読み戻し検証:
  • 検証に合格した場合のみ、公開ボタンをクリックできます。
  1. 公開:
  • 公開ボタンをクリックした後、ページの状態が安定するまで待ち、URL を記録します。
  1. 再確認:
  • まず、URL パラメーターに published=true が含まれていることを確認します。
  • 次に、ページメニューから「ノート管理」に移動して二次確認します。管理ページの直リンクをハードコードして再確認してはいけません。

P0:ルートと状態の安定性(必須):

  • 安定した入口として認めるのは /publish/publish のみです。他のページは中継としてのみ使用し、成功判定の根拠にはしません。
  • 「公開ページが使える」ことは「管理ページが使える」ことを意味しません。公開後は必ずメニューから移動して二次確認します。
  • 公開ページの要素が表示されない場合は、失敗と判断する前に、「画像とテキスト」モードで画像がアップロード済みかどうかを確認します。

P0:セレクターの二つの手段(必須):

  • 第 1 の手段(デフォルト):セマンティックな特定(placeholder + role + 可視性 + 近くの文言)。
  • 第 2 の手段(フォールバック):DOM 構造の手掛かりによる特定(例:タイトル入力欄の placeholder の意味と、本文エディターの tiptap/ProseMirror セマンティッククラス名)。
  • snapshot ref または @e1/@e2 の番号だけに依存してはいけません。重要な操作の前後には、必ず snapshot -i で再確認します。
  • DOM によるフォールバックは、セッション中のみの一時的な手段として使用します。該当箇所が見つかった場合も、「読み戻し検証」でフィールドが正しいことを確認します。脆弱な selector をハード依存にしてはいけません。

P0:書き込みの信頼性(必須):

  • タイトルフィールドは、単一行、表示状態、編集可能、「タイトル」の意味に該当する placeholder があることを満たす必要があります。
  • 本文フィールドは、複数行または contenteditable であり、表示状態、編集可能、「本文/内容」の意味に該当する placeholder または近くのテキストがあることを満たす必要があります。
  • 入力後は必ず「双方向の読み戻し検証」を実行します。タイトルと本文の両方を読み取り、title_len と body_len を計算します。
  • 入力ずれの判定:title_len > 20 かつ body_len < 80 の場合、またはタイトルに長文の特徴(大量の改行/句点)が見られる場合は、入力ずれと判定します。
  • 入力ずれの自動修復:自動で「入れ替えて再入力」を 1 回実行します(タイトルと本文を消去 -> タイトルに短いタイトルを入力 -> 本文に本文を入力 -> 読み戻して再検証)。それでも失敗する場合は中止して失敗を報告し、送信を続けてはいけません。
  • 必須ルール:タイトルに # タグ、長文の本文、リンクを含めてはいけません。タグは小紅書の公開ページにある「タグ/トピック」の操作で選択し、タグのテキストをタイトルに入れてはいけません。

P0:下書き確認の完了ループ(必須):

  1. 「保存して退出」をクリックした後、「保存に成功しました/下書きが保存されました」に類する toast を待って検証します。
  2. 下書き一覧に移動し、「新しい下書き項目」が表示されていることを検証します。
  3. 新しい項目で最低限、次の項目を検証します:
  • タイトルの先頭部分が今回のタイトルと一致すること。
  • タイムスタンプが今回の実行時間内(推奨:2 分以内)であること。
  • 下書きを開いた後に読み戻した title/body/media/tags が引き続きゲートを満たすこと。
  1. いずれかの検証に失敗した場合は「下書き保存失敗」と判定し、1 回の再試行を許可します。再試行後も失敗する場合は、プロセスを中止します。

P0:画像の前処理(スクリプトなし):

  • リポジトリのスクリプトは追加せず、「公開前のローカル前処理+読み戻しによるサイズ確認」に統一します。
  • 推奨サイズ:1242x1660(縦向き 3:4)。
  • 任意のコマンド(1 回限りの実行で、リポジトリのスクリプトとして保存しません):
# macOS: 先居中裁剪再缩放到 1242x1660(按需替换输入输出路径)
sips -c 1660 1242 ./data/assets/in.png --out ./data/assets/out_1242x1660.png
  • アップロード後、公開ページでサムネイルの縦横比が正常であることを確認します。引き伸ばしや切り抜きに異常がある場合は、先に素材を差し替えてから続行します。

P0:公開前の必須チェック(必須):

  • タイトルの長さが <= 20。
  • 本文の長さが >= 80。
  • 画像がアップロード済み(画像とテキストの場合は 1 枚以上で、サムネイルが表示されていること)。
  • 実際のトピックが >= 3 個選択済みであること(小紅書のトピック選択機能で選択し、本文に連結したものではないこと)。
  • タイトル/本文/タグにリンク語(http、https、www.、ドメイン形式)が含まれていないこと。
  • いずれかの条件を満たさない場合は、ただちに中止します。「先に公開して後で修正」してはいけません。

P0:公開後の二重確認(必須):

  1. 第 1 の確認:公開後の URL に published=true が含まれていること。
  2. 第 2 の確認:公開ページのメニューから「ノート管理」に移動し、一覧に新しいノート(タイトルの先頭部分+時間範囲)が表示されていることを確認します。
  3. 管理ページにリダイレクトされる、またはアクセスできない場合は「再確認未完了」と判定し、run_log に記録して手動確認を促します。

P1:話題から payload への半自動化(スクリプトなし):

  • newsnow -> payload のコードジェネレーターは追加せず、セッションテンプレートへの入力に切り替えます。
  • 話題を収集した後、以下のテンプレートに従って data/publish_payload.json を生成し、「見解の段落」だけを手動で編集します:
{
  "topic": "今日热点:<主题>",
  "source": {
    "name": "<来源名>",
    "url": "<来源URL>",
    "date": "YYYY-MM-DD",
    "evidence_snippet": "<原文证据摘录>",
    "key_facts": ["<事实1:含日期/数字>", "<事实2:含日期/数字>"]
  },
  "post": {
    "title": "<8-20字标题,不含标签>",
    "body": "<观点段+事实段,不少于80字>",
    "tags": ["#标签1", "#标签2", "#标签3"],
    "real_topics": ["#真实话题1", "#真实话题2", "#真实话题3"],
    "media": ["/abs/path/1.png"]
  }
}

P1:タグ/トピックプールの管理(スクリプトなし):

  • 毎日最初の公開前に、data/tag_registry.json を 1 回手動で更新します(小紅書の公開ページにあるトピック選択機能から転記します)。
  • 当日更新していない場合、プロセスでリスクを通知し、公開前に更新するよう提案する必要があります。
  • ゲートの要件は変更しません。tags と real_topics はどちらも tag_registry に含まれている必要があります。

P1:プロセスの可観測性(スクリプトなし):

  • 実行ごとに終了時、data/run_log/<YYYY-MM-DD_HH-mm-ss>.json を出力します(手動でファイルに書き込んでかまいません。スクリプトは追加しません)。
  • 推奨フィールド:steps、durations_ms、failed_step、error_message、screenshots、result_url、draft_check、editor_check、route_check、post_publish_check。

P1:固定テンプレート(強く推奨):

  • 固定タイトルテンプレート:[主题词]+[观点/结论]。目標は 12~18 文字とし、長さ超過を避けるため 2~8 文字の余裕を残します。
  • 固定本文テンプレート:开场观点 -> 事实1 -> 事实2 -> 个人判断 -> 行动建议。デフォルトは 120 文字超です。
  • 固定タグ/トピックプール:data/tag_registry.json からのみ選択し、その場で語句を作ってゲートに失敗することを避けます。

P2:回帰テストケース(毎日のスモークテスト、手動実行):

  • シナリオ 1:下書きとしてのみ保存(公開しない)。
  • シナリオ 2:下書き保存後、再編集して下書き保存。
  • シナリオ 3:正式公開(すべてのゲートに合格)。
  • 各シナリオで run_log を 1 つ出力し、「特定の安定性/入力ずれ率」の比較に使用します。

プロセス(ブラウザー側の操作はすべて agent-browser-stealth で実行します):

  1. ログイン済みであることを確認します(上記の A を先に完了するか、有効なログイン状態があること)。
  2. data/publish_payload.json を準備して検証します(ok=true が必須)。
  3. https://creator.xiaohongshu.com/publish/publish を開き、まず snapshot -i で最新の構造を取得します。
  4. 画像とテキストモードに切り替えてメディアをアップロードします(サムネイルの縦横比と枚数を確認します)。
  5. 「セマンティックな特定を優先し、DOM をフォールバックとして使用」してタイトルと本文を入力します。入力後は「双方向の読み戻し検証+入力ずれの自動修復」を実行します。
  6. 小紅書のタグ操作でタグと実際のトピックを選択します(3 個以上)。タグをタイトルに入れてはいけません。
  7. 公開前の必須チェック(タイトル、本文、画像、トピック、リンク語がないこと)を実行します。
  8. 「保存して退出」をクリックし、下書きの完了ループ検証(toast + 一覧の新しい項目 + 読み戻し)を実行します。
  9. 「公開/送信」をクリックする前に一時停止し、最終プレビューの確認をユーザーに求めます。
  10. 公開後に二重確認(published=true + メニューからノート管理に移動して二次確認)を実行し、run_log に記録します。

公開結果の出力仕様(JSON):

{
  "task": "xhs_publish",
  "ok": true,
  "result_url": "https://creator.xiaohongshu.com/....",
  "content_checks": {
    "title_len": 18,
    "body_len": 136,
    "tag_count": 3,
    "real_topic_count": 3,
    "editor_alignment_ok": true,
    "draft_saved_ok": true,
    "publish_precheck_ok": true,
    "published_param_ok": true,
    "manage_menu_check_ok": true,
    "topic": "今日热点:xxxx",
    "source_date": "2026-02-12"
  },
  "artifacts": {
    "payload_json": "data/publish_payload.json",
    "media_inputs": ["..."],
    "run_log_json": "data/run_log/2026-02-27_14-36-00.json",
    "error_screenshot": null
  }
}

公開に失敗した場合は ok=false とし、error_message、error_screenshot のパス、未通過の missing_checks、failed_stage(preflight/fill/readback/publish/postcheck)を返します。

C. クリエイターセンターのデータをエクスポートする(CSV/XLSX またはスクリーンショット)

目的:クリエイターセンターの重要なデータを data/exports/<YYYY-MM-DD>/ にエクスポートし、後続の分析に使用します。

  1. ログイン済みであることを確認します。
  2. agent-browser-stealth を使って、クリエイターセンターでよく使う分析ページ(ダッシュボード/コンテンツ分析/フォロワー分析)に移動します。
  3. 各ページで:
  • ページにエクスポート機能がある場合は、それを優先して data/exports/<date>/ に保存します。
  • エクスポート機能がない場合は、重要な領域のスクリーンショットを同じディレクトリに保存します。
  1. エクスポートした期間、集計基準の説明、ページ URL を記録します。

本地 CLI(本技能自带)

命令:

  • node ./bin/xhs-skill.mjs qr show --in <pngPath>
  • node ./bin/xhs-skill.mjs cookies normalize --in <jsonPath> --out <outPath>
  • node ./bin/xhs-skill.mjs cookies status --in <cookiesJsonPath>
  • node ./bin/xhs-skill.mjs cookies to-header --in <cookiesJsonPath>
  • node ./scripts/verify_publish_payload.mjs --in <payloadJsonPath> --policy ./config/verify_publish_policy.json --tag-registry ./data/tag_registry.json --min-registry-tags 12 --require-source-evidence on --strict-anti-ai on [--mode hot]
  • node ./scripts/review_publish_payload.mjs --in <payloadJsonPath> --policy ./config/review_policy.json --taxonomy ./config/review_taxonomy.json --ai-provider auto --require-ai off [--mode hot]

D. 轻量发版流程(维护者)

  1. 先跑本地门禁:
  • npm run check:constraints
  • npm test
  1. 查看改动只包含预期文件:git status --short
  2. 用中文 Conventional Commit 提交(示例):
  • docs(skill): 补充发版前快速自检清单
  1. 发布到 ClawHub(patch):
  • clawhub sync --all --bump patch --changelog "docs: 补充发版前快速自检清单"

コメント