---
title: CLI（cr）
description: 統合 CLI でログイン、文書、コメント、共有、個人トークンを操作する方法。
---

`cr` は commentor の API を呼ぶ統合 CLI です。ログイン情報の保管、接続先の分離、個人トークンの期限確認を共通化し、文書・コメント・共有の操作を 1 本のコマンドで扱います。

## 共通の指定

接続先は `--origin`、`CR_ORIGIN`、既定の本番接続先の順で決まります。資格情報を分けるときは `--profile` または `CR_PROFILE` を使います。

```bash
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 でない終了コードで失敗が分かります。

```json
{"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）`）が出ます。

## ログインと本人情報

```bash
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` だけになります。ログインの詳しい流れは[ログインと個人トークン](/login)を参照してください。

## 個人トークン

```bash
cr tokens list
cr tokens revoke pt_example01
```

一覧には名前、範囲、期限、最後に使った時刻、現在の要求に使ったかどうかが出ます。個人トークンの値は一覧に出ません。期限の残りが 14 日以下になると、CLI は標準エラーへ更新の案内を出します。

## 案件

```bash
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` の範囲が必要です。

## 組織

```bash
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` を付けません。

## 文書

```bash
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` の範囲が要ります。

## コメント

```bash
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`（本文からの引用）で決まります。引用を省くと最初の区画に付きます。引用が本文に無い、または複数箇所に当たる場合は、引用を長くしてやり直してください。

### 絞り込みと書き出し

```bash
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` とは一緒に使えません）。

### 変化の待ち受け

```bash
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` を付けると、止めるまで出し続けます。

## 反映案

```bash
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` の範囲が要ります。

## 検索

```bash
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` だけの範囲なら、文書の削除・本文の差し替え（反映案の採用）・共有の変更はできません。

## 共有と招待

```bash
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` です。

## 管理操作

```bash
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 はトークンの値を標準出力へ出しません。
