CLI(cr)
統合 CLI でログイン、文書、コメント、共有、個人トークンを操作する方法。
cr は commentor の API を呼ぶ統合 CLI です。ログイン情報の保管、接続先の分離、個人トークンの期限確認を共通化し、文書・コメント・共有の操作を 1 本のコマンドで扱います。
共通の指定
接続先は --origin、CR_ORIGIN、既定の本番接続先の順で決まります。資格情報を分けるときは --profile または CR_PROFILE を使います。
cr --origin https://comment-review.fsmarketing.workers.dev --profile agent whoami
CR_ORIGIN=https://comment-review.fsmarketing.workers.dev CR_PROFILE=agent cr docs list
環境変数 CR_TOKEN がある場合は、保存済みの資格情報より優先します。トークンを別の origin へ自動で送ることはありません。
通常の出力は人が読む形式です。エージェントやスクリプトから使うときは --json を付け、標準出力をデータとして扱ってください。コメントの一覧は 1 コメント 1 行の JSON になります。
終了コード
| 値 | 意味 | 次にやること |
|---|---|---|
| 0 | 成功 | なし |
| 1 | サーバーが断った、または処理の途中で失敗した(一部だけ成功した、手元への保存に失敗した、原因の分からない失敗) | 中身か権限を直してから送る。一部だけ成功したときは、エラーの説明にある「済んだこと」を確かめてから送る |
| 2 | 送る前に止まった(使い方の誤り、資格情報が無い、期限切れ、手元のファイルが無い・読めない・大きすぎる) | コマンドかファイルを直す。資格情報なら cr login |
| 3 | cr comments watch で、期限までに変化が無かった |
必要ならもう一度見張る |
| 4 | 一時的な失敗(サーバーの 500 番台、429(回数の上限)、つながらない、応答の途中で切れた) | 読み取りは、少し待ってから同じコマンドを送り直してよい。書き込みは、サーバーで書けた可能性があるので、今の状態を確かめてから送り直す |
エラーの形
--json を付けて失敗したときは、標準エラーに 1 行の JSON だけが出ます。エラーそのものは標準出力に出ません(cr comments watch --follow で出し済みのデータは残ります)。標準出力だけを読むと、エラーのときは中身が届かず、0 でない終了コードで失敗が分かります。
{"error":"review not found","status":404,"message":"文書が見つかりません: review_example01(招待されていない文書も、見つからないと出ます)","hint":"cr docs list で ID を確かめる"}
{"error":"network","status":null,"message":"サーバーにつながりません","hint":"少し待ってから、同じコマンドを送り直す"}
| 欄 | 内容 |
|---|---|
error |
サーバーが返したエラー名をそのまま。エラー名の無い応答は http_<状態>、つながらないときは network。CLI の中で起きたエラーは usage・credentials_missing・token_expired・input_file・watch_timeout・local_write・internal のどれか |
status |
HTTP の状態。CLI の中のエラーとつながらないときは null |
message |
何が起きたか |
hint |
次にやること。無ければ null |
--json を付けないときは、標準エラーに「cr: <何が起きたか>」の行と、「次:」の行、HTTP のエラーなら生のエラー名の行(例 (HTTP 404 review not found))が出ます。
ログインと本人情報
cr login --scope docs,access,comments --name review-agent
cr login --scope comments --profile agent --name comment-agent
cr login --scope org --profile org-admin --name org-admin
cr whoami
cr logout
cr login はブラウザを開いて確認を求め、許可後に個人トークンを保存します。範囲を省略すると comments だけになります。ログインの詳しい流れはログインと個人トークンを参照してください。
個人トークン
cr tokens list
cr tokens revoke pt_example01
一覧には名前、範囲、期限、最後に使った時刻、現在の要求に使ったかどうかが出ます。個人トークンの値は一覧に出ません。期限の残りが 14 日以下になると、CLI は標準エラーへ更新の案内を出します。
案件
cr projects list
cr projects roles EX-AA
cr projects roles EX-AA --set someone@example.com=manager
projects list は案件の写しと、自分に付いた役割を表示します。projects roles は案件の管理の人が役割を読み、--set や --remove で役割を変更します。案件の役割を扱うには access の範囲が必要です。
組織
cr org members list
cr org members add external@example.com --kind external
cr org members kind external@example.com client
cr org members disable external@example.com
cr org members enable external@example.com
cr org members remove external@example.com
cr org admins list
cr org admins add someone@example.com
cr org admins remove someone@example.com
org members は社外・クライアントの台帳を登録、変更、停止、削除します。org admins は組織管理者を追加・削除します。どちらも org の範囲が要ります。org members は組織管理者が使えます。org admins add・org admins remove と、組織管理者の停止はツール管理者だけが使えます。エージェントに渡すトークンには org を付けません。
文書
cr docs list --json
cr docs list --project EX-AA
cr docs get review_example01 --json
cr docs info review_example01
cr docs upload page.html --title "料金ページ" --share restricted --project EX-AA
cr docs owner review_example01 someone@example.com
cr docs project review_example01 EX-AA
cr docs project review_example01 --clear
cr docs add-version review_example01 page-v2.html --label "第 2 稿"
cr docs title review_example01 "料金ページ(改訂)"
cr docs tags review_example01 --add 料金,LP --remove 下書き
cr docs archive review_example01
cr docs unarchive review_example01
cr docs source review_example01 --out page-current.html
cr docs source review_example01 --version v1 --out page-v1.html
cr docs delete review_example01
docs upload は新しい文書を作ります。--project を付けると、案件の結び付けを含む 1 つの要求で配信し、文書の ID はサーバーが作ります。docs add-version は既存の文書へ版を追加し、前の版とそのコメントを残します。本文を差し替えるときも、対象の版を読み、最新の版を前提に操作してください。
docs owner は文書の本当のオーナーが、すでにログインした組織メンバーへオーナーを移譲します。移譲後の前のオーナーは編集者として残ります。
docs source は版の元の HTML を取り出します。--version を省くと最新版です。--out を省くと標準出力へ出します。
docs delete は確認なしで文書を消し、元に戻せません。題名・タグ・アーカイブ・削除には docs の範囲が要ります。
コメント
cr comments list review_example01 --json > comments.json
cr comments add review_example01 --quote "月額 980 円" --body "税込か税抜かを明記してください。"
cr comments edit review_example01 comment_example01 --body "税込か税抜かを明記してください。"
cr comments reply review_example01 comment_example01 --body "反映しました。"
cr comments resolve review_example01 comment_example01
cr comments reopen review_example01 comment_example01
cr comments delete review_example01 comment_example01
コメントの位置は --quote(本文からの引用)で決まります。引用を省くと最初の区画に付きます。引用が本文に無い、または複数箇所に当たる場合は、引用を長くしてやり直してください。
絞り込みと書き出し
cr comments list review_example01 --status open --json
cr comments list review_example01 --since 2026-10-05T09:00:00+09:00 --human
cr comments list review_example01 --author "山田 花子" --ai
cr comments list review_example01 --status open --format md > open-comments.md
--status は open(未解決)か closed(解決済み)です。--since は ISO 8601 の日時で、コメントの作成・編集と返信のうち最も新しい時刻がそれより後のものを出します。--author は書いた人の表示名か ID と完全に一致するものを出します。--ai は CLI・API・エージェントから書かれたもの、--human はそれ以外です。指定はすべて組み合わせて絞ります。--format md は議事録や作業の指示書に貼れる Markdown で出します(--json とは一緒に使えません)。
変化の待ち受け
cr comments watch review_example01 --json
cr comments watch review_example01 --timeout 300
cr comments watch review_example01 --follow
comments watch は 10 秒ごとに文書の変化を確かめ、新しいコメント・編集・削除・状態の変更・返信を出します。--follow が無ければ、変化を 1 回出して終わります。変化が無いまま --timeout(既定 600 秒)を過ぎると、標準出力には何も出さず、終了コード 3 で終わります。--follow を付けると、止めるまで出し続けます。
反映案
cr apply create review_example01 page-fixed.html --title "指摘の反映"
cr apply get review_example01 apply_example01 --json
cr apply accept review_example01 apply_example01 --backup page-before.html
cr apply reject review_example01 apply_example01
apply create は、手元で直した HTML を反映案として登録します。CLI は今の最新版との差分を作ります。HTML を生成する機能はありません。apply get は反映案の状態と差分の要約を出します。
apply accept は反映案を採用し、最新版の本文を上書きします。採用しても新しい版は作られないので、CLI は採用の直前に今の本文を --backup のファイル(省くとカレントディレクトリの <文書の ID>-before-<日時>.html)へ保存します。保存できなければ採用しません。元に戻すときは、保存したファイルを cr docs add-version で上げ直してください。作成・採用・却下には docs の範囲が要ります。
検索
cr search comments "税込" --json
cr search comments "直してください" --status open --human --limit 100
cr search comments "税込" --project EX-AA
cr search docs "料金"
cr search docs "料金" --project EX-AA
cr search docs "LP" --json
search comments は、自分が見られる全文書のコメント本文・引用文・返信から、語を含むものを探します。絞り込み(--status・--since・--author・--ai・--human・--project)は comments list と同じ意味です。search docs は、題名・タグ・最新版の本文から文書を探します。--project を付けると、指定した案件に結び付いた文書だけを探します。
探せるのは、ダッシュボードの一覧に出る文書だけです。全角と半角、英字の大文字と小文字の違いは区別しません。結果は既定で 50 件、--limit で最大 200 件までです。それより多いときは標準エラーに件数が出るので、語を足して絞ってください。
本文の索引がまだ作られていない文書があると、search docs は標準エラーに「索引の作成待ちが N 件あります」と出します。その文書は、題名とタグでは見つかりますが、本文では見つかりません。
エージェントに渡すトークン
エージェントには、cr login --scope comments --profile agent で作ったコメント操作だけのトークンを渡してください。エージェントは文書の本文を読むので、本文に書かれた指示に従ってしまうことがあります。comments だけの範囲なら、文書の削除・本文の差し替え(反映案の採用)・共有の変更はできません。
共有と招待
cr share set review_example01 restricted
cr invite add review_example01 user@example.com --role viewer
cr invite role review_example01 user@example.com --role editor
cr invite remove review_example01 user@example.com
共有と招待には access の範囲が要ります。招待先は組織内のアドレス、または組織の台帳に登録された社外・クライアントです。役割は editor または viewer です。
管理操作
cr admin members disable user@example.com
cr admin co-owners --out co-owners.json
cr admin co-owners --apply co-owners.json
メンバーの停止と共同オーナーの書き換えには管理用の認証が要ります。停止すると、その人の有効な個人トークンと未使用のログインコードが使えなくなります。co-owners --out で書き換え対象を保存し、内容を確認してから --apply で反映します。
範囲外の操作
個人トークンの範囲にない操作を実行すると、サーバーは 403 insufficient_scope を返します。その場合は、必要な範囲を指定して同じプロファイルで cr login をやり直してください。CLI はトークンの値を標準出力へ出しません。