SOLARI CLI · MCP

ガイド

SOLARI CLI と MCP — ターミナルで使うクリエイター・ブランドインテリジェンス。

概要

SOLARI CLI・MCP を使えば、SOLARI が集めた InstagramTikTokThreads などのデータを、使いたい場所で自由に扱えます。catalog はすでに集めているアカウントや投稿を探し、insight は SOLARI が作った順位・類似・広告・トレンドを返し、fetch はハンドルをアカウントまたは投稿として 1 件カタログに入れます。

$ solari insight instagram account similar username=oliveyoung_official limit=10
$ solari insight instagram brand lookalike content username=innisfreeofficial limit=10
$ solari insight instagram content trend clusters region=KR since_days=7

インストール

curl -fsSL https://solari.sh/install | sh
$ solari --version
1.0.0-alpha.9

クイックスタート

$ solari auth login          # opens a browser; sign in with your SOLARI account
$ solari                     # catalog, insight, and fetch
$ solari catalog instagram account   # a group path lists its tools
$ solari catalog instagram account search --help    # parameters, without calling

$ solari catalog instagram account search query=oliveyoung brands_only=true limit=3

account_id を取って、他のツールに渡します:

$ solari catalog instagram account search query=innisfree brands_only=true --json \
    | jq -r '.content[0].text | fromjson | .items[0].account_id'
018cabce-14cc-7544-8890-7811ec33ef74

$ solari insight instagram brand ad stats username=innisfreeofficial
$ solari insight instagram brand top collaborators username=innisfreeofficial limit=20

query_type=bio は、アカウントが自分について書いた文言を探します:

$ solari catalog instagram account search query="협찬 문의" query_type=bio region=KR limit=10
$ solari catalog instagram account search query=skincare query_type=bio brands_only=true limit=20

コマンド構造

$ solari insight instagram brand              # lists the group
$ solari brand overview --help        # unambiguous trailing paths resolve while browsing
$ solari insight instagram brand overview username=innisfreeofficial   # calls

引数は key=value のペア。配列は JSON でもカンマ区切りリストでも受け付けます。

solari catalog instagram content batch post_ids='["019f505f-…","019f5060-…"]'
solari catalog instagram content batch post_ids=019f505f-…,019f5060-…
solari help all
すべてのコマンド・ツール・パラメータを 1 ページに出します。--json で機械可読になります。
solari get <path ...>
ツールだけ実行します。途中までのパスは一覧ではなく失敗します。
solari cache refresh
自分のマシンのツール一覧をすぐに更新します。

認証

solari auth login
ブラウザを開きます。開けない環境(SSH や、エージェントが代わりに実行している場合)では、サインイン用のリンクを代わりに表示します。
solari auth list
サインイン済みの SOLARI アカウントをすべて表示します。
solari auth switch <account>
すでにサインイン済みの別のアカウントに切り替えます。ブラウザを開き直す必要はありません。
solari auth status
サーバー、アカウント、サインインの期限。終了コード 3 は再サインインです。
solari auth logout
サインアウトします。--all を付けるとすべてのアカウントから一度にサインアウトします。

ブラウザがコマンドを実行したマシンに戻してくれない環境(SSH やコンテナの中)では、サインインを終えたあとブラウザのアドレスバーにある URL をコピーし、待機しているプロンプトに貼り付けてください。

出力とパイプ

結果は標準出力、案内は標準エラーです。パイプにはデータだけが流れます。

--json
生の JSON。実データは content[0].text の JSON 文字列です。
--ndjson
1 行に JSON オブジェクト 1 つ。total などの囲みは標準エラーへ。
--refresh
ローカルの写しを飛ばしてサーバーからツール一覧を取ります。
--verbose, -v
進行状況を標準エラーに出します。秘匿値は伏せます。
$ solari insight instagram brand ad posts username=innisfreeofficial months=24 limit=200 --ndjson >> ads.ndjson
$ jq -s 'group_by(.username) | map({creator: .[0].username, posts: length})' ads.ndjson

設定

設定は ~/.solari/config.json です。環境変数はその 1 回のコマンドだけ優先されます。

$ solari config list
$ solari config set server https://solari.sh
$ solari config unset server
server · SOLARI_SERVER
接続先 SOLARI サーバー。既定は https://solari.sh。
cacheTtl · SOLARI_CACHE_TTL
自分のマシンのツール一覧を最新とみなす秒数。既定は 900 で、0 なら毎回サーバーに問い合わせます。
cacheShadow · SOLARI_CACHE_SHADOW
自分のマシンから答えたあと、裏で静かにツール一覧を更新するか。既定は true。
callTimeout · SOLARI_CALL_TIMEOUT
ツール呼び出しを待つ秒数。既定は 150。
catalogTimeout · SOLARI_CATALOG_TIMEOUT
ツール一覧を待つ秒数。既定は 8。
SOLARI_TOKEN
solari auth token で得たアクセストークン。すべてのコマンドで保存済みサインインの代わりに使われます。「自分のコードから」を参照。
SOLARI_HOME
SOLARI のファイルを ~/.solari 以外の場所に置きます。
SOLARI_NO_UPDATE_CHECK=1
1 日 1 回の更新チェックを完全に無効化します。NO_UPDATE_NOTIFIER=1 も同じ効果です。

エージェント

set up solari.sh/get-started.md

solari init はこのマシンのエージェントに CLI を登録します。solari init --remove で元に戻せます。

solari init            # checkbox of every CLI (all on; space toggles, enter installs)
solari init claude     # just one target
solari init --yes      # skip the picker, install all
solari init --remove

ターミナルやスクリプト、そしてコマンドを自分で実行するエージェントには CLI を使ってください。Claude Desktop や ChatGPT のように、アプリ自身がサーバーにつなぐ場合は MCP をお使いください。

機械可読なドキュメント

どのページの URL にも .md を付けられます。リファレンス全体を 1 ファイルでも受け取れます。

/get-started.md
エージェント向けセットアップページ。
/llms.txt
llms.txt 形式でまとめたドキュメントの索引。
/llms-full.txt
ガイドとツール全体を 1 つの Markdown ファイルに連結したもの。
/docs/tools.md
任意のページを Markdown で。?lang=ko や ?lang=ja を付けると他の言語で取得できます。

自分のコードから

CLI が実行する読み取り専用ツールは、そのまま REST API(https://solari.sh/mcp/api/v1)としても提供されます。その上に公式 TypeScript・Python SDK があり、エージェント向けには MCP サーバーがあります。アクセストークンひとつで全部使えます。

トークンを取得する

$ solari auth token
$ solari auth token --json

サインイン中のアカウントのアクセストークンを出力します。期限切れなら先に更新します。--json を付けると期限、エンドポイント、アカウントも出ます。トークンは 8 時間有効で、その間は自分の SOLARI アカウントを読めるので秘密として扱ってください。

ブラウザなしで CLI を使う

$ export SOLARI_TOKEN=<token from a signed-in machine>
$ solari catalog instagram account search query=nike --json

SOLARI_TOKEN があれば、そのマシンではサインインなしで全コマンドが動きます — CI、コンテナ、ブラウザのないサーバー。このとき CLI は ~/.solari/credentials.json に触れず、ツールキャッシュもトークン単位に分かれるので、別アカウントのアプリツールが混ざりません。トークンの寿命より長く動くジョブなら、サインイン済みの ~/.solari を(または SOLARI_HOME で指して)使ってください。CLI が自動で更新します。

REST API を呼ぶ

$ curl -sS https://solari.sh/mcp/api/v1/tools/solari_catalog_instagram_account_search \
  -H "Authorization: Bearer $(solari auth token)" \
  -H "Content-Type: application/json" \
  -d '{"query":"nike","limit":3}'

ツールの引数を JSON オブジェクトとして /tools/<名前> に POST すると、レスポンスがツールの JSON 結果です。GET /tools は全ツールと入力スキーマを返し、エラーは { error: { code, message } } で返ります。エラーコードを含む完全なリファレンスは API ページにあります。

SDK を使う

import { Solari } from "@brandazine/solari-sdk";

const solari = new Solari({ token: process.env.SOLARI_TOKEN });
const hits = await solari.tools.catalog.instagram.account.search({ query: "nike", limit: 3 });
from solari_sdk import Solari

solari = Solari()  # reads SOLARI_TOKEN
hits = solari.tools.catalog.instagram.account.search(query="nike", limit=3)

npm install @brandazine/solari-sdk、または pip install solari-sdk。どちらも REST API を薄く包んだ依存関係なしのライブラリです。ドット区切りのパスが solari_ 接頭辞の下でツール名に結合されます。

コードから MCP で

どの MCP クライアントも同じ bearer トークンで https://solari.sh/mcp を直接呼べます。エンドポイントはステートレスなので、initialize なしの tools/call 一発で動きます。

エラーと終了コード

0
成功。
1
ツールまたはサーバー側で失敗しました。
2
CLI が受け付けられない入力です。存在しないパス、抜けている引数、不正な値のいずれかです。
3
サインインが必要です。ブラウザでのサインインは人にしか完了できないため、エージェントは再試行を続けず利用者に伝えてください。

よく見るツールエラー

auth expired, reconnect the connector
サインインの有効期限が切れました。solari auth login を実行し直すか、アプリでコネクタをつなぎ直してください。
SOLARI access denied (403)
SOLARI が呼び出しを拒否しました。サインインし直してください。
rate limited, retry shortly
短い時間に呼び出しが多すぎました。少し待ってから再試行してください。
SOLARI upstream timed out
呼び出しに時間がかかりすぎました。ほとんどのツールは 90 秒、集計とトレンドクラスターのツールは 120 秒です。範囲を狭めるか limit を下げて再試行してください。

データカバレッジ

  • content search・content aggregate: KR・JP・US・TW、直近およそ 6 か月。
  • アカウント・ブランド・投稿ツール: 履歴全体、リージョン制限なし。
  • リージョンの中では KR のカバレッジが最も深くなっています。
  • 件数は 10,000 まで正確。TikTok 検索のページ送りは 9,800 で止まります。

識別子

  • account_id はプラットフォームごと。InstagramTikTok の id は互換しません。
  • account_id か username。両方あると account_id が優先です。
  • post_id もプラットフォームごと。公開 id は slug(Instagram) か video_id(TikTok)。

よくある質問

SOLARI のデータを変更したいです。

いいえ。すべてのツールは読み取り専用です。

Claude などのエージェントでも使いたいです。

はい。solari init でこのマシンのエージェントに CLI を知らせるか、MCP サーバーに直接つないでください。

検索結果がないと出ます。

アカウント検索はユーザー名・表示名にその文字がある必要があります。コンテンツ検索は KR・JP・US・TW、直近 6 か月です。

料金が気になります。

いまは無料でご利用いただけます。変更がある場合は事前にご案内します。

ツールリファレンス

CLI と MCP が提供するすべてのツールです。catalog は集めた行、insight は SOLARI が計算した答え、fetch はハンドルをアカウントまたは投稿として 1 件入れる入口です。CLI は空白、MCP 名はアンダースコアです。

ツールリファレンス