Skip to main content

Linkly AI CLI の紹介

Linkly AI CLI は、Linkly AI Desktop の MCP サービスに接続して、ターミナルからローカルドキュメントを検索、閲覧、読み取りできるコマンドラインツールです。同時に、AI Agent(Claude Desktop、Cursor など)と Linkly AI の間のブリッジとしても機能します。

ターミナル検索

コマンドラインから直接ドキュメントを検索。開発者やギークユーザーに最適です

MCP ブリッジ

stdio MCP モードで実行し、Claude Desktop、Cursor などの AI ツールから Linkly AI を呼び出せます

インストール

ターミナルで以下を実行:
または Homebrew でインストール:
Linkly AI Desktop をすでにインストールしている場合は、デスクトップアプリから CLI をインストールすることもできます:初回起動ウィザードの「エージェントと接続」画面で「インストール」をクリックすると CLI と Skills がまとめてインストールされます。または、メインウィンドウの「エージェントの利用」ページの「詳細」セクションで、「Linkly AI CLI」の行の「インストール」をクリックします。「あと一歩です」と表示されたら「設定」をクリックして、ターミナルから linkly コマンドを直接実行できるようにしてください。
インストール完了後、インストールを確認します:
デフォルトでは、CLI は ~/.linkly/port ファイルを通じてローカルの Linkly AI Desktop アプリを自動的に検出して接続します。LAN やクラウドトンネル経由でリモートのデバイスに接続することもできます — 下記の接続モードを参照してください。

使い方

CLI は search → grep または outline → read の段階的なワークフローに従います:まず検索で対象ドキュメントを見つけ、次に grep でパターンを特定するか、アウトラインで構造を把握し、最後に具体的な内容を読み取ります。ユーザーが指すコンテナ(「Notion ノートの中で」「Dropbox の論文フォルダで」)の実際のパスがわからない場合は、search の前に find-paths を呼び出してパスを特定できます。
成功したコマンド出力の末尾には、[meta] now=2026-05-08T...Z という UTC タイムスタンプ行が付きます(JSON モードではトップレベルの _meta.now フィールド)。これは Desktop が AI アシスタントに「先月」などの相対日付を計算するために提供するメタ情報です。人間ユーザーは無視して構いません。スクリプト処理時は、最終行をフィルタしてから後続の解析を行うことを推奨します。

接続ステータスの確認

Linkly AI Desktop の実行ステータス、バージョン番号、インデックス済みドキュメント数、インデックスステータスを返します。

ドキュメント検索

ローカルドキュメントを検索し、最も関連性の高い結果リストを返します。タイトル、パス、マッチ度、内容スニペットが含まれます。 よく使うパラメータ:
--modified-after / --modified-before は ISO 8601 UTC 形式を受け付けます:日付のみ 2024-01-01(00:00:00Z として扱われる)または完全な RFC 3339 タイムスタンプ 2024-01-01T00:00:00Z。--time-sort は newest / oldest を受け付け、省略すると BM25 + ベクトルのハイブリッド関連度順を保持します。
--scope notes は結果をノートに限定し、--library と --path-glob を無視します — これらのフィルターはエラーにならず、静かに破棄されます。

ドキュメントアウトラインの表示

ドキュメントの構造化されたアウトラインとメタデータを取得します。DOC_ID は検索結果から取得します。複数のドキュメントを一度に表示したり、- を指定して ID をパイプで渡したりできます:
アウトラインが長い場合、一部のノードは折りたたまれます。--expand で展開するノード ID をカンマ区切りで指定すると、それ以外のノードは折りたたまれます。指定しない場合は、どのノードを展開するかが自動的に決まります:
アウトライン機能は Markdown、DOCX、DOC、PowerPoint (PPTX)、XLSX、CSV、EPUB、RTF のドキュメントで最も効果的です。これらの形式の見出し構造を解析できます。プレーンテキストやブックマークのない PDF の場合は、read コマンドを直接使用することをお勧めします。

ドキュメント内のパターン検索

1 つまたは複数のドキュメント内で、正規表現パターンにマッチする箇所を検索します。特定のテキスト(用語、人名、日付、識別子など)を探す必要があるときに使用します:

ドキュメント内容の読み取り

1 つまたは複数のドキュメントの完全な内容を読み取り、行番号付きのテキストを出力します。長いドキュメントの場合、ページ分割して読み取れます:
--json を指定した場合、複数のドキュメントは JSON Lines(1 行に 1 オブジェクト)として出力されます。ID が 1 つだけのときは従来どおり単一のオブジェクトを出力するため、既存のスクリプトに影響はありません。
ページ分割戦略: デフォルトでは 1 回に 200 行を読み取ります(最大 500 行)。長いドキュメントの場合、--offset を調整して段階的に読み取ります:

パス特定(find-paths)

インデックス済みドキュメントのファイルパスフィールドに対してキーワードで曖昧マッチングを行い、フォルダ単位で集約して上位の候補ディレクトリを返します。search の補助ツールとして位置づけられており、ユーザーがコンテナを名前で示しているのに(「Notion ノートの中で」「Dropbox の論文フォルダで」)その実際のパスがわからないとき、まず find-paths で実際のパスを探し、返されたパスの特徴的なセグメントを search の --path-glob パラメータに渡します。フォルダ名に glob メタ文字(* ? [)が含まれる場合は、返された path_glob フィールドをそのまま使えます——すでにエスケープ済みで、そのフォルダに字面一致します。 典型的な 2 ステップワークフロー:
バリエーションマッチング: --patterns はカンマ区切りの複数キーワードを受け付け、内部で OR 関係でサブストリングマッチングを行います。1 回の呼び出しで複数のバリエーションを渡す(翻訳ペア、大文字小文字、既知のアプリ識別子など)ことを推奨します:
find-paths は「フォルダを探す」ツールであり、「ファイルを探す」ツールではありません:キーワードがディレクトリセグメントにマッチした場合のみカウントされます。キーワードがファイル名セグメントにのみマッチする場合(「孤児ファイル」)、静かに破棄されます。マッチするファイルがあるはずなのに 0 件返る場合は、linkly search を --path-glob なしで直接呼び出すフォールバックを検討してください。

ライブラリと概要(list-libraries、explore)

利用可能なライブラリを一覧表示します。返されたライブラリ名は、他のコマンドの --library パラメータで使えます。
すべてのドキュメント、または特定のライブラリの全体像を表示します。検索の前にどんな資料があるかを把握するのに向いています。--library にはライブラリ名または local://<id> を指定できます。--remote を使う場合は cloud://<owner>/<slug> も指定できます。

ノート

Linkly AI は短い Markdown のノートをライブラリフォルダ内に保存します。これらはアップロードされることのない通常のローカルファイルで、他のドキュメントと同じようにインデックスされます。
既存のノートを編集するには、その note_id と現在の version が必要です。どちらも linkly list --scope notes が返します:
本文中の #タグ こそがノートのタグです——--tags でできるのは追加だけです(タグを削除するには内容から対応する #タグ を消します)。0.11.0 より古い Desktop では、編集時に --tags が必須で、全置換として扱われます。--base-version は同時実行チェックで、読み取り後にノートが変更されていた場合、上書きせずに NOTE_VERSION_CONFLICT で失敗します。ノートの内容は制限された Markdown のサブセット(段落、太字、取り消し線、リスト)です。見出し、コード、リンク、表は拒否されます。

接続の診断(doctor)

このマシンのデスクトップアプリへの接続をチェックします。リモートの Key や LAN 接続を保存している場合は、それらもあわせてチェックします。接続ごとに結果が個別に表示され、失敗した場合は対処方法も示されます。使える接続が 1 つでもあれば終了コード 0 で終了します。 --remote、--lan、または --endpoint / --token を付けると、その接続だけをチェックし、終了コードもその結果だけで決まります:

Skills の管理(skills)

install は Skills を ~/.agents/skills/linkly-ai にインストールし、~/.claude/skills/linkly-ai にそこへのリンクを作成します。詳しくは Skills を使うをご覧ください。 Skills に新しいバージョンがあると、コマンド出力の末尾に 1 行の通知が付きます(最大 4 時間に 1 回)。環境変数 LINKLY_NO_SKILLS_HINT=1 を設定すると、この通知を止められます。MCP クライアントの設定でこの変数を設定すれば、linkly mcp ブリッジでも通知が出なくなります。

シェル補完

bash、zsh、fish、powershell、elvish 用の補完スクリプトを出力します。
その後、新しいシェルを開いてください。このスクリプトは静的で、Linkly AI Desktop と通信することはありません。そのためアプリを終了していても動作し、プロンプトの表示が遅くなることもありません。

MCP モード

stdio MCP サーバーモードで実行し、Linkly AI のツールを MCP 互換の AI クライアントに公開します。 接続先(アップストリーム)によって、クライアントがアクセスできる範囲が決まります:
クラウドライブラリにアクセスできるブリッジモードは --remote だけです。先に linkly auth login でサインインしてください(リモートモードを参照)。
ブリッジは LAN 上の他のデバイスにあるデスクトップアプリには接続できません。LAN 上の AI クライアントは HTTP でデスクトップアプリに直接接続してください(LAN アクセスを参照)。stdio のみに対応したクライアントは、代わりに linkly mcp --remote を使用できます。
--client <名前> は、デスクトップアプリのアクセスログに表示されるアプリ名を指定します(以下の例を参照)。--remote を使う場合、この名前はクラウドゲートウェイにも送信されます。 Claude Desktop などのローカル AI アプリの設定: 以下の内容を Claude Desktop などのアプリの設定ファイルに追加してください:
~/Library/Application Support/Claude/claude_desktop_config.json を編集:
Cursor の設定: Cursor で Settings → MCP Servers → Add Server を開き、以下を追加:
  • Name: linkly-ai
  • Command: linkly mcp --client cursor

CLI のアップデート

自動的に最新バージョンを確認してアップデートします。CLI は起動時にバックグラウンドで更新を確認し、新しいバージョンがある場合はこのコマンドの実行を促します。

接続モード

CLI は Linkly AI ナレッジベースに接続する方法を 3 つサポートしています: --lan または --remote を指定しない場合、CLI はこのマシンのデスクトップアプリにのみ接続します。
API Key(lkai_ で始まるもの)と LAN アクセストークンは、あなたのローカル資料にアクセスするための鍵に相当します。どの AI との会話にも貼り付けないでください(ChatGPT、Claude、Cursor、Codex、Doubao、Kimi など)。AI アシスタントに linkly auth set-key を実行させることもしないでください。会話の内容はモデルの提供元に送られ、会話履歴に残ります。アプリによってはクラウドにも同期されます。AI アシスタントにリモート接続させるときは、下の linkly auth login の 2 段階ログインを使い、あなたはブラウザで認可するだけです。set-key はご自身のターミナルで実行してください。Key が会話に出てしまった場合は、ダッシュボードで失効させて作り直してください。LAN トークンは「MCP 接続設定を表示」で再生成できます。

ローカルモード(デフォルト)

追加のパラメータは不要です。CLI は ~/.linkly/port を読み取り、実行中のデスクトップアプリを検出します:

LAN モード

ローカルネットワーク内の他のデバイスで実行されている Linkly AI インスタンスに接続します。アドレスとトークンはそのデバイスで取得します:そのデバイスのデスクトップアプリで「エージェントの利用」ページを開き、「管理」セクションで「LAN アクセスを許可」をオンにしてから、「連携」セクションの「MCP 接続設定を表示」をクリックし、「LAN」セクションからコピーします(詳しくは LAN アクセスを参照)。 そのうえで、このマシンでご自身のターミナルから一度保存します:
以降は任意のコマンドで --lan を使用します:
保存したくない場合は、毎回アドレスとトークンを直接指定することもできます:
トークンを再生成した場合は、新しいトークンで auth set-key --lan をもう一度実行してください。不要になったら、linkly auth logout --lan で保存済みの LAN 設定を削除できます。
LAN 接続の保存と --lan パラメータには CLI 1.0.0 以降が必要です。CLI が保存できる LAN 接続は 1 つだけで、auth set-key --lan をもう一度実行すると、以前に保存したアドレスとトークンは上書きされます。別のデバイスに一時的に接続するには --endpoint と --token を使ってください。

リモートモード

クラウドトンネル経由で、どこからでもナレッジベースに接続できます。まず一度だけログインします:
CLI はワンタイムリンクと確認コード(XXXX-XXXX)を表示し、可能であればブラウザを自動で開きます。リンクはどのデバイスで開いてもかまいません(CLI がサーバー上で動いている場合はスマートフォンでも OK)。サインインし、確認コードがターミナルの表示と一致することを確かめてから 承認 をクリックすると、CLI が新しく発行された API Key を保存します。リンクの有効期限は 10 分です。認可ページには、認可するアカウント、確認コード、アクセスを求めているデバイス(そのデバイスの自己申告)、付与される権限が表示されます。CLI にブラウザを開かせたくない場合は --no-browser を付けてください。リンクを表示するだけになります。 続いて、任意のコマンドで --remote を使用します:
フォアグラウンドで待機できない エージェントやスクリプト は、ログインを 2 段階に分けて実行します。エージェントがあなたに渡すのはリンクと確認コードだけで、Key は CLI が自動で保存するため、会話を経由しません。2 つのステップは、同じ環境・同じシステムユーザー・同じ設定ディレクトリで実行してください:
--wait は既定で 300 秒待つと打ち切り(--timeout で変更可能)、コード timeout を返します。リンクが有効なうちはもう一度実行してください。--json モードでは、失敗時に code が付きます:timeout、expired、denied、no_pending_login、login_in_progress(--wait を使うか、--restart でやり直す)、already_logged_in(先に linkly auth logout を実行)、network。どのメッセージにも、次に実行すべきコマンドが示されます。 ログインのたびに cli-<hostname>-xxxx という名前の API Key が新しく作成され、ダッシュボード で確認・失効できます。1 つのアカウントが持てる API Key は最大 10 個で、上限に達している場合は認可ページにその旨が表示されます。ログインの成功が示すのはアカウントの本人確認だけで、クラウドナレッジベースやデスクトップアプリに到達できることまでは意味しません。 キーを貼り付けたい場合は、ダッシュボード で作成し、ご自身のターミナルで保存することもできます:
保存済みのキーは、いつでも確認・削除できます:
logout は、auth login で発行されたキーを失効させます(約 90 秒以内に使えなくなります)。set-key で保存したキーは、ほかの場所で使われている可能性があるため、このマシンから削除されるだけです。必要に応じてダッシュボードで失効させてください。 認証情報(および認可待ちのログイン)は、既定では ~/.linkly に保存されます。LINKLY_CONFIG_DIR を設定すると別の場所に置けます。たとえば、1 つのエージェントが同じシステムアカウントで複数の人にサービスを提供する場合は、ユーザーごとにディレクトリを分けます。1 つのディレクトリに保存できるアカウントは 1 つだけです。ローカルのデスクトップアプリの検出(~/.linkly/port)には影響しません。
--lan、--remote、--endpoint は併用できません。--endpoint と --token は必ず一緒に指定してください。この場合、保存済みの LAN 設定は読み込まれません。

パラメータ説明

グローバルオプション

--lan、--endpoint、--token、--remote はドキュメント系コマンド(search、grep、outline、read、list、note-save、find-paths、explore、list-libraries)に加え、status と doctor で使用できます。mcp コマンドは --remote のみ受け付けます。--json は auth set-key、self-update、skills install、skills update、completions、mcp では効果がありません。

Exit Codes

デフォルトでは、CLI は慣例的な 2 つの値を使用します:成功時は 0、失敗時は 1。ここでの「成功」には「1 件も見つからなかった」場合も含まれる点に注意してください。ヒットのない検索でも終了コードは 0 です。引数の誤り(必須引数の不足、不正な値など)は、--exit-code の有無にかかわらず 2 で終了します。 --exit-code を指定すると、この 2 つを区別できます:
このフラグがオプトインなのは、1 の意味が変わるためです。指定しない場合、1 は「失敗」を意味し、既存のスクリプトはこれを前提に判定しています。

search パラメータ

find-paths パラメータ

outline パラメータ

grep パラメータ

read パラメータ

list パラメータ

note-save パラメータ

completions パラメータ