# SOLARI > SOLARI CLI와 MCP — 터미널에서 쓰는 크리에이터·브랜드 인텔리전스. ## 개요 SOLARI CLI·MCP를 통해, SOLARI가 확보한 Instagram, TikTok, Threads 등의 데이터를 원하는 곳에서 자유자재로 활용할 수 있어요. catalog는 이미 모아 둔 계정·포스트를 찾고, insight는 우리가 만든 순위·유사·광고·트렌드를 주고, fetch는 핸들 하나를 계정이나 포스트로 카탈로그에 넣어요. ```console $ 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 ``` ## 설치 **macOS** Shell: ```bash curl -fsSL https://solari.sh/install | sh ``` Homebrew: ```bash brew install brandazine/solari/solari ``` npm: ```bash npm install -g @brandazine/solari ``` uv: ```bash uv tool install solari-cli ``` uv tool 은 CLI를 자기만의 환경에 넣고 PATH 에 걸어줘요. 프로젝트 의존성과 부딪히지 않아요. **Windows** PowerShell: ```powershell irm https://solari.sh/install.ps1 | iex ``` npm: ```bash npm install -g @brandazine/solari ``` uv: ```bash uv tool install solari-cli ``` uv tool 은 CLI를 자기만의 환경에 넣고 PATH 에 걸어줘요. 프로젝트 의존성과 부딪히지 않아요. **Linux** Shell: ```bash curl -fsSL https://solari.sh/install | sh ``` npm: ```bash npm install -g @brandazine/solari ``` uv: ```bash uv tool install solari-cli ``` uv tool 은 CLI를 자기만의 환경에 넣고 PATH 에 걸어줘요. 프로젝트 의존성과 부딪히지 않아요. ```console $ solari --version 1.0.0-alpha.9 ``` ## 빠른 시작 ```console $ 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를 찾은 다음 다른 도구에 넣어요: ```console $ 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 는 계정이 스스로를 소개한 문구를 찾아요: ```console $ 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 ``` ## 명령 구조 ```console $ 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이나 쉼표 목록 둘 다 받아요. ```bash solari catalog instagram content batch post_ids='["019f505f-…","019f5060-…"]' solari catalog instagram content batch post_ids=019f505f-…,019f5060-… ``` - `solari help all` — 모든 명령·도구·파라미터를 한 페이지에 보여 줘요. --json 을 붙이면 기계가 읽는 형태로 나와요. - `solari get ` — 도구만 실행해요. 덜 끝난 경로는 목록 대신 실패해요. - `solari cache refresh` — 내 컴퓨터의 도구 목록을 지금 갱신해요. ## 인증 - `solari auth login` — 브라우저를 열어요. 열 수 없는 환경(SSH, 에이전트가 대신 실행하는 경우)에서는 로그인 링크를 대신 출력해요. - `solari auth list` — 로그인해 둔 SOLARI 계정을 모두 보여줘요. - `solari auth switch ` — 이미 로그인해 둔 다른 계정으로 전환해요. 브라우저를 다시 열지 않아요. - `solari auth status` — 서버, 계정, 로그인 만료 시각. 종료 코드 3이면 다시 로그인해야 해요. - `solari auth logout` — 로그아웃해요. --all 을 붙이면 모든 계정에서 한 번에 로그아웃해요. 브라우저가 명령을 실행한 컴퓨터로 되돌려주지 못하는 환경(SSH, 컨테이너)에서는, 로그인을 마친 뒤 브라우저 주소창의 주소를 복사해서 기다리고 있는 프롬프트에 붙여넣으면 끝나요. ## 출력과 파이핑 결과는 표준 출력, 안내는 표준 에러로 나가요. 파이프에는 데이터만 흘러요. - `--json` — 가공하지 않은 JSON. 실제 데이터는 content[0].text 안의 JSON 문자열이에요. - `--ndjson` — 한 줄에 JSON 객체 하나. total 같은 감싼 값은 표준 에러로 가요. - `--refresh` — 로컬 사본을 건너뛰고 서버에서 도구 목록을 받아요. - `--verbose, -v` — 진행 상황을 표준 에러로 찍어요. 비밀 값은 가려져요. ```console $ 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 에 있어요. 환경변수는 그 한 번의 명령에서만 이겨요. ```console $ 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` — 하루 한 번 도는 업데이트 확인을 완전히 꺼요. NO_UPDATE_NOTIFIER=1 도 같은 효과예요. ## 에이전트 ```text set up solari.sh/get-started.md ``` solari init 은 이 컴퓨터의 에이전트에 CLI를 등록해요. solari init --remove 로 되돌릴 수 있어요. ```bash 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를 쓰시면 돼요. ### 기계가 읽는 문서 아무 주소 뒤에 .md 를 붙이면 마크다운이에요. 레퍼런스 전체를 한 파일로도 받을 수 있어요. - `/get-started.md` — 에이전트 설정 페이지. - `/llms.txt` — llms.txt 형식으로 정리한 문서 색인. - `/llms-full.txt` — 가이드와 도구 전체를 하나의 마크다운 파일로 이어 붙인 것. - `/docs/tools.md` — 아무 페이지나 마크다운으로. ?lang=ko 나 ?lang=ja 를 붙이면 다른 언어로 받아요. ## 직접 짠 코드에서 CLI 가 실행하는 읽기 전용 도구가 그대로 REST API(https://solari.sh/mcp/api/v1)로도 열려 있어요. 그 위에 공식 TypeScript·Python SDK 가 있고, 에이전트용으로는 MCP 서버가 있어요. 액세스 토큰 하나로 전부 써요. ### 토큰 받기 ```console $ solari auth token $ solari auth token --json ``` 로그인한 계정의 액세스 토큰을 출력해요. 만료됐으면 먼저 갱신해요. --json 을 붙이면 만료 시각, 엔드포인트, 계정이 함께 나와요. 토큰은 8시간 유효하고, 그동안 내 SOLARI 계정을 읽을 수 있으니 비밀로 다루세요. 계속 돌아야 하는 코드 — CI, 서버, 스케줄 잡 — 라면 https://solari.brandazine.com/me/api-keys 에서 API key 를 만들어 쓰세요. solari_sk_ 로 시작하고, 만들 때 한 번만 보여 주며, 폐기하기 전까지 이 토큰이 쓰이는 곳에 그대로 쓸 수 있어요. ### 브라우저 없이 CLI 쓰기 ```console $ export SOLARI_TOKEN= $ solari catalog instagram account search query=nike --json ``` SOLARI_TOKEN 이 있으면 그 컴퓨터에서는 로그인 없이 모든 명령이 돌아요 — CI, 컨테이너, 브라우저 없는 서버. 이때 CLI 는 ~/.solari/credentials.json 을 건드리지 않고, 도구 캐시도 토큰 기준으로 나눠서 다른 계정의 앱 도구가 섞이지 않아요. 토큰 수명보다 오래 도는 작업이라면 로그인해 둔 ~/.solari 를 (또는 SOLARI_HOME 으로 가리켜) 쓰세요. CLI 가 알아서 갱신해요. ### REST API 호출 ```console $ curl -sS https://solari.sh/mcp/api/v1/tools/solari_catalog_instagram_account_search \ -H "Authorization: Bearer $SOLARI_TOKEN" \ -H "Content-Type: application/json" \ -d '{"query":"nike","limit":3}' ``` 도구 인자를 JSON 객체로 /tools/<이름> 에 POST 하면 응답이 도구의 JSON 결과예요. GET /tools 는 모든 도구와 입력 스키마를 주고, 오류는 { error: { code, message } } 로 와요. 오류 코드까지 포함한 전체 레퍼런스는 API 페이지에 있어요. ### SDK 쓰기 ```ts 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 }); ``` ```python 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 한 번으로 끝나요. ## MCP로 연결하기 원격 MCP 주소: ```text https://solari.sh/mcp ``` 처음 연결하면 브라우저가 열려 로그인해요. ### Claude Desktop 설정을 열고 사이드바 맨 아래의 Customize 를 눌러요. ![Claude Desktop 설정 사이드바. 맨 아래에 Customize 가 있어요.](https://finder-dev-pub.bzine.co/docs/claude-desktop-settings.webp) _Settings → Customize_ Connectors 로 가서 Add 를 누르고 창을 채워요. 목록에 표시할 이름과 위의 주소예요. ![Claude Desktop의 Add custom connector 창. 이름과 SOLARI MCP 주소가 채워져 있어요.](https://finder-dev-pub.bzine.co/docs/claude-desktop-add-connector.webp) _Connectors → Add → Add custom connector_ Continue 를 누르면 로그인을 한 번 거쳐요. 그다음부터는 커넥터 목록에 SOLARI가 남고, 어떤 대화에서든 도구를 쓸 수 있어요. claude.ai 도 같은 방식이에요. ### Claude Code ```bash claude mcp add --transport http solari https://solari.sh/mcp ``` Claude Code가 서버에 처음 연결할 때 로그인을 물어봐요. /mcp 를 치면 연결 상태가 보이고, 로그인을 직접 시작할 수도 있어요. ### ChatGPT ChatGPT도 Claude Desktop과 같아요. 설정 → Connectors 에서 위 주소를 커스텀 커넥터로 추가하고 로그인하면 돼요. 커스텀 커넥터는 유료 요금제에서만 쓸 수 있어요. ### 그 밖의 호스트 원격 MCP 서버를 지원하는 다른 앱도 붙일 수 있어요. 대개 설정 파일에 이런 항목을 넣어요: ```json { "mcpServers": { "solari": { "url": "https://solari.sh/mcp" } } } ``` > 어떤 앱은 내 컴퓨터에 설치된 MCP 서버만 실행할 수 있어요. 그런 앱은 SOLARI에 바로 연결하지 못하니까 CLI를 쓰시면 돼요. ## 오류와 종료 코드 - `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 는 플랫폼마다 달라요. Instagram과 TikTok 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는 핸들 하나를 계정이나 포스트로 넣는 구멍이에요. CLI는 공백, MCP 이름은 밑줄이에요. ### solari catalog instagram account search > 모아 둔 Instagram 계정을 사용자명, 이름, Bio 문구로 찾아요. account_id를 확보하는 데 쓸 수 있어요. - **CLI**: `solari catalog instagram account search` - **MCP 도구**: `solari_catalog_instagram_account_search` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 SOLARI가 모아 둔 Instagram 계정 카탈로그에서 사용자명, 이름, 또는 프로필 Bio 문구로 찾아요. Instagram 검색이 아니에요. 여기서 받은 account_id는 다른 Instagram 도구에 그대로 넣으면 돼요. **언제 쓰나** — 이름이나 사용자명만 있고, account_id는 아직 없을 때 사용해요. **무엇이 나오나** — 맞는 계정 목록이에요. 가장 가까운 결과가 맨 앞에 와요. #### 파라미터 - `query` (string, 필수) — 사용자명, 이름, 또는 query_type=bio일 때는 프로필 Bio에 있는 문구 - `query_type` (enum, 선택, 기본값 "auto") — 어디를 볼지: 사용자명, 표시 이름, Bio, 또는 전부 (auto) 값: `auto`, `username`, `full_name`, `bio`. - `brands_only` (boolean, 선택, 기본값 false) — 알려진 브랜드 계정만 남겨요. 브랜드를 찾을 때 켜 주세요 - `limit` (integer, 선택, ≥ 1) — 몇 명까지 - `region` (string, 선택, ≤ 8 chars) — KR, JP 같은 국가 코드. 비우면 전체를 찾아요 #### 응답 ##### `Response` - `found` (boolean) — 맞는 계정이 있는지예요 - `items` (object[]) — 맞는 계정이에요. 가장 가까운 결과가 맨 앞이에요 ##### `items[]` - `account_id` (uuid) — 다른 Instagram 도구에 넣는 account_id예요 - `username` (string) — Instagram 사용자명 - `full_name` (string) — 표시 이름 - `biography` (string) — 프로필 Bio - `follower_count` (integer) — 팔로워 수 - `region` (string) — 국가 코드 - `is_verified` (boolean) — 인증 배지 - `profile_pic_url` (string) — 프로필 사진 URL #### 예시 ```console $ solari catalog instagram account search query=oliveyoung brands_only=true limit=5 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "found": true, "items": [ { "account_id": "018cab6d-1648-7071-9734-c47a2be2fd19", "username": "oliveyoung_official", "full_name": "올리브영 OLIVE YOUNG", "biography": "ALL LIVE YOUNG 🫒\nALL LIVE BETTER @olivebetter.official", "follower_count": 1199628, "region": "KR", "is_verified": true, "profile_pic_url": "https://dcr.bzine.co/instagram/users/oliveyoung_official/profile-picture" }, { "account_id": "018dc63c-31b5-740f-bde0-2c00931385e1", "username": "oliveyoung_global", "full_name": "OLIVE YOUNG Global", "biography": "Korea's No.1 Health & Beauty Store\n✈️ FREE SHIPPING on orders over $60", "follower_count": 535949, "region": "KR", "is_verified": true, "profile_pic_url": "https://dcr.bzine.co/instagram/users/oliveyoung_global/profile-picture" }, { "account_id": "018cabcf-e60e-70af-95eb-eff777ce5195", "username": "oliveyoung_magazine", "full_name": "올리브영 매거진", "biography": "내 일상과 가까운 뷰티 매거진", "follower_count": 142316, "region": "KR", "is_verified": false, "profile_pic_url": "https://dcr.bzine.co/instagram/users/oliveyoung_magazine/profile-picture" }, "… 2 more" ] } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_catalog_instagram_account_search", "arguments": { "query": "oliveyoung", "brands_only": true, "limit": 5 } } ``` #### 주의사항 - 이름 검색은 사용자명이나 표시 이름에 그 글자가 있어야 해요. 별명이나 약어는 잘 안 맞아요. - 브랜드를 찾을 때는 brands_only=true로 두세요. 팬 계정이 빠져요. - region을 넣으면 지정한 국가만 남아요. 특정 국가가 아니면 비워 두세요. #### 관련 도구 - [`solari_catalog_instagram_account_profile`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-account-profile.md?lang=ko) - [`solari_catalog_instagram_account_posts`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-account-posts.md?lang=ko) - [`solari_catalog_tiktok_account_search`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-account-search.md?lang=ko) ### solari insight instagram account similar > 비슷한 Instagram 계정을 찾을 때 사용해요. - **CLI**: `solari insight instagram account similar` - **MCP 도구**: `solari_insight_instagram_account_similar` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 비슷한 네트워크에 있는 Instagram 계정을 찾아 줘요. 같이 광고한 상대가 아니라, 관계가 가까운 계정이에요. **언제 쓰나** — 비슷한 계정이 필요할 때 사용해요. 광고 협업 상대가 필요하면 brand top collaborators를 쓰세요. **무엇이 나오나** — 가까운 순으로 정렬된 유사 계정이에요. #### 파라미터 - `username` (string, 필수) — Instagram 사용자명. @는 빼 주세요 - `limit` (integer, 선택, ≥ 1) — 몇 명까지 #### 응답 ##### `Response` - `user_id` (uuid) — 기준 계정의 id예요 - `user` (object) — 기준 계정의 프로필이에요 - `params` (object) — 실제로 쓴 설정이에요 - `results` (object[]) — 비슷한 계정이에요. 점수 높은 순이에요 - `diagnostics` (object) — 검색이 어떻게 돌아갔는지예요 ##### `results[]` - `user_id` (uuid) — 비슷한 계정의 account_id예요 - `username` (string) — 사용자명 - `full_name / bio` (string) — 표시 이름과 Bio예요 - `score` (number) — 이 응답의 유사도 점수예요 - `follower_count` (integer) — 팔로워 수 - `region` (string) — 국가 코드 - `has_collaborated` (boolean) — 기준 계정과 광고 협업이 있는지예요 - `last_collaboration_date` (date | null) — 가장 최근 협업 날짜예요 - `recent_media` (object[]) — 최근 포스트 미리보기예요 #### 예시 ```console $ solari insight instagram account similar username=oliveyoung_official limit=8 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "user_id": "018cab6d-1648-7071-9734-c47a2be2fd19", "user": { "user_id": "018cab6d-1648-7071-9734-c47a2be2fd19", "username": "oliveyoung_official", "full_name": "올리브영 OLIVE YOUNG", "profile_pic_url": "https://dcr.bzine.co/instagram/users/oliveyoung_official/profile-picture", "follower_count": 1199628, "region": "KR", "is_verified": null }, "params": { "k": 8, "hops": 3, "max_rank_to_use": 25 }, "results": [ { "user_id": "018cabd4-926b-7a58-b0cb-11dfc7c37006", "username": "gs25_official", "score": 0.1515, "profile_pic_url": "https://dcr.bzine.co/instagram/users/gs25_official/profile-picture", "follower_count": 1017802, "median_views": null, "full_name": "대한민국 대표 편의점 GS25", "bio": "더 재미있게 더 실속있게\n오늘 가장 최신의 트렌드를 만나는\n#25매거진 #재미있는GS25 #라이프스타일플랫폼", "region": "KR", "has_collaborated": false, "last_collaboration_date": null, "recent_media": [ { "post_id": "01a062a3-a504-7fe5-b53f-7cd291ffceff", "media_type": "image", "source_url": "https://bzine.co/cdn-cgi/image/fit=scale-down,width=480/https://smr-images.bzine.co/users/018cabd4-926b-7a58-b0cb-11dfc7c37006/posts/01a062a3-a504-7fe5-b53f-7cd291ffceff/medias/01a062a3-a7f8-702c-994f-bd426afe5d74.jpg", "thumbnail_url": "https://bzine.co/cdn-cgi/image/fit=scale-down,width=480/https://smr-images.bzine.co/users/018cabd4-926b-7a58-b0cb-11dfc7c37006/posts/01a062a3-a504-7fe5-b53f-7cd291ffceff/medias/01a062a3-a7f8-702c-994f-bd426afe5d74.jpg", "slug": "Dcx-Nrij7IV", "media_url": "https://bzine.co/cdn-cgi/image/fit=scale-down,width=480/https://smr-images.bzine.co/users/018cabd4-926b-7a58-b0cb-11dfc7c37006/posts/01a062a3-a504-7fe5-b53f-7cd291ffceff/medias/01a062a3-a7f8-702c-994f-bd426afe5d74.jpg", "play_count": null, "posted_at": "2026-09-02T10:00:09+00:00" }, "… 3 more" ], "collaborated_with": [] }, "… 7 more" ], "diagnostics": { "neighbors_used": 4930, "unique_terms": 25, "build_ms": 7664, "algorithm": "distance_weighted_jaccard", "max_rank_used": 25, "target_related_count": 25 } } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_insight_instagram_account_similar", "arguments": { "username": "oliveyoung_official", "limit": 8 } } ``` #### 주의사항 - 사용자명을 넣어요. account_id는 안 받아요. - 브랜드와 광고한 크리에이터가 필요하면 brand top collaborators를 쓰세요. #### 관련 도구 - [`solari_catalog_instagram_account_search`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-account-search.md?lang=ko) - [`solari_insight_instagram_brand_top_collaborators`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-brand-top-collaborators.md?lang=ko) ### solari insight instagram brand overview > Instagram 브랜드의 프로필과 광고 이력이에요. - **CLI**: `solari insight instagram brand overview` - **MCP 도구**: `solari_insight_instagram_brand_overview` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 브랜드 프로필과, 광고 뒤에 있는 크리에이터 id·광고 포스트 id를 줘요. 포스트 내용이 필요하면 그 id를 content batch에 넣으면 돼요. **언제 쓰나** — 브랜드를 처음 볼 때 사용해요. 정확한 광고 개수는 brand ad stats를 쓰세요. **무엇이 나오나** — 브랜드 프로필, 크리에이터 id, 광고 포스트 id예요. #### 파라미터 - `username` (string, 필수) — 브랜드 Instagram 사용자명. @는 빼 주세요 - `full` (boolean, 선택, 기본값 false) — 앞 20개가 아니라 id 목록 전체를 받아요 #### 응답 ##### `Response` - `information` (object) — 브랜드 프로필이에요. user_id, username, full_name, bio, follower_count가 들어 있어요 - `all_influencers_id` (uuid[]) — 브랜드 광고를 한 크리에이터의 account_id예요. 기본은 앞 20개예요. - `all_influencers_count` (integer) — 잘리기 전 전체 크리에이터 수예요 - `all_influencers_truncated` (boolean) — 목록이 미리보기일 때 true예요 - `all_campaign_posts_id` (uuid[]) — 광고 포스트 id예요. 기본은 앞 20개예요 - `all_campaign_posts_count` (integer) — 잘리기 전 전체 포스트 수예요 - `all_campaign_posts_truncated` (boolean) — 목록이 미리보기일 때 true예요 #### 예시 ```console $ solari insight instagram brand overview username=innisfreeofficial ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "information": { "user_id": "018cabce-14cc-7544-8890-7811ec33ef74", "username": "innisfreeofficial", "full_name": "INNISFREE | 이니스프리", "bio": "NATURE MEETS KOREAN SKIN SCIENCE", "follower_count": 847619, "brand_id": null }, "all_influencers_id": [ "01935f3d-8188-727e-a0bb-09e54aadfdac", "018caf6e-abfd-73da-88ad-11a56c39358b", "019a0061-b1d4-7adb-8ea4-1c5572dca38c", "… 17 more" ], "all_campaign_ids": [], "all_campaign_posts_id": [ "019f505f-f8be-7e88-ae08-6fba999950b1", "019f5060-3449-779e-a08b-d6d49add90cd", "019f4342-3357-7418-916c-da1c44468308", "… 17 more" ], "post_id_to_campaign_id": {}, "all_influencers_count": 93, "all_influencers_truncated": true, "all_campaign_posts_count": 100, "all_campaign_posts_truncated": true } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_insight_instagram_brand_overview", "arguments": { "username": "innisfreeofficial" } } ``` #### 주의사항 - 사용자명을 넣어요. account_id는 안 받아요. 없는 사용자명이면 404예요. - full=true면 각각 최대 100개까지 줘요. 정확한 합계는 brand ad stats를 쓰세요. #### 관련 도구 - [`solari_insight_instagram_brand_ad_stats`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-brand-ad-stats.md?lang=ko) - [`solari_catalog_instagram_content_batch`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-content-batch.md?lang=ko) - [`solari_insight_instagram_brand_ad_posts`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-brand-ad-posts.md?lang=ko) ### solari insight instagram brand ad stats > Instagram 브랜드의 광고 규모가 숫자로 나와요. - **CLI**: `solari insight instagram brand ad stats` - **MCP 도구**: `solari_insight_instagram_brand_ad_stats` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 브랜드의 최근 광고를 정확한 숫자로 줘요. 광고 포스트 수, 크리에이터 수, 재생 수 합계예요. **언제 쓰나** — 답이 숫자일 때 사용해요. brand overview의 id 목록을 세지 마세요. **무엇이 나오나** — 광고 포스트 수, 크리에이터 수, 재생 수 합계예요. #### 파라미터 - `username` (string, 필수) — 브랜드 Instagram 사용자명. @는 빼 주세요 #### 응답 ##### `Response` - `total_ad_posts` (integer) — 조회 기간의 광고 포스트예요. 정확한 값이에요. - `unique_creator_count` (integer) — 협업한 크리에이터 수예요. 같은 사람은 한 번만 세요 - `total_play_count` (integer) — 재생 수 합계예요 - `play_count_covered_posts` (integer) — 재생 수 합계에 들어간 포스트 수예요. total_ad_posts보다 작으면 하한이에요. - `window_months` (integer) — 기간이 몇 달인지예요 #### 예시 ```console $ solari insight instagram brand ad stats username=innisfreeofficial ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "total_ad_posts": 405, "unique_creator_count": 360, "total_play_count": 27357941, "play_count_covered_posts": 405, "window_months": 3 } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_insight_instagram_brand_ad_stats", "arguments": { "username": "innisfreeofficial" } } ``` #### 주의사항 - 사용자명을 넣어요. account_id는 안 받아요. #### 관련 도구 - [`solari_insight_instagram_brand_ad_posts`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-brand-ad-posts.md?lang=ko) - [`solari_insight_instagram_brand_overview`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-brand-overview.md?lang=ko) ### solari insight instagram brand ad posts > Instagram 브랜드의 광고 포스트예요. - **CLI**: `solari insight instagram brand ad posts` - **MCP 도구**: `solari_insight_instagram_brand_ad_posts` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 브랜드의 광고 포스트를 크리에이터와 함께 보여 줘요. **언제 쓰나** — 합계가 아니라 포스트 목록이 필요할 때 사용해요. **무엇이 나오나** — 광고 포스트예요. total이 정확한 건 sort=recent일 때뿐이에요. #### 파라미터 - `username` (string, 필수) — 브랜드 Instagram 사용자명. @는 빼 주세요 - `sort` (enum, 선택, 기본값 "recent") — recent는 기간 전체, engagement는 최근 일부의 순위예요 값: `recent`, `engagement`. - `months` (integer, 선택, ≥ 1) — 몇 달 전까지 볼지 - `limit` (integer, 선택, ≥ 1) — 한 페이지에 몇 개까지 - `offset` (integer, 선택, 기본값 0, ≥ 0) — 앞에서 몇 개를 건너뛸지 #### 응답 ##### `Response` - `items` (object[]) — 광고 포스트예요 - `total` (integer) — sort=recent일 때, 기간 전체의 정확한 개수예요 - `has_more` (boolean) — 다음 페이지가 있는지예요 - `ranking_window` (integer | null) — 참여 순위가 어디까지 봤는지예요. 기간 전체가 아니라 일부만 볼 때 채워져요 ##### `items[]` - `id` (uuid) — 포스트 id - `slug` (string) — Instagram 숏코드 - `text` (string) — 캡션 - `posted_at` (timestamp) — 게시 시각 (UTC) - `username / user_id / account_id` (string) — 작성한 크리에이터예요 - `like_count / comment_count / play_count` (integer) — 참여 - `media_type` (string) — 포스트 형식 - `media / media_url / thumbnail_url` (string) — 미디어 링크 - `virtual_campaign` (object | null) — 캠페인 묶음이에요. 잡힌 경우에만 와요 #### 예시 ```console $ solari insight instagram brand ad posts username=innisfreeofficial limit=2 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "items": [ { "id": "01a062a0-2747-72eb-b20d-670cf30f2c96", "slug": "DcygG05GrA-", "text": "#광고 요즘 부쩍 신경 쓰이기 시작한 모공 고민을 직접 경험해보고 싶어 방문한 이니스프리 레티놀 시카 강의실 무빙 팝업💙\n\n업그레이드된 레티놀 시카 모공 흔적 앰플을 직접 테스트해볼 수 있을 뿐 아니라, 제품을 알아보고 체험할 수 있는 다양한 프로그램과 이벤트가 마련되어 있어 더욱 재미있게 둘러볼 수 있었어요.\n\n특히 오늘 방문했을 때는 정말 많은 분들이 찾아와서 놀랐는데요. 대기 줄이 길게 …", "posted_at": "2026-09-02T14:56:19Z", "virtual_campaign": null, "username": "_mini_mming", "user_id": "018caf92-e08a-78a2-b9c3-59f6f5740182", "profile_picture_url": null, "like_count": 384, "comment_count": 4, "thumbnail_url": null, "media_url": null, "media": [], "media_type": "post", "account_id": "018caf92-e08a-78a2-b9c3-59f6f5740182" }, "… 1 more" ], "total": 405, "has_more": true, "ranking_window": null } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_insight_instagram_brand_ad_posts", "arguments": { "username": "innisfreeofficial", "limit": 2 } } ``` #### 주의사항 - 사용자명을 넣어요. 없는 사용자명이면 404예요. - sort=engagement는 최근 일부만 순위를 매겨요. ranking_window가 어디까지 봤는지 알려 줘요. #### 관련 도구 - [`solari_insight_instagram_brand_ad_stats`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-brand-ad-stats.md?lang=ko) - [`solari_insight_instagram_account_ad_posts`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-account-ad-posts.md?lang=ko) ### solari insight instagram brand top collaborators > Instagram 브랜드와 협업한 크리에이터예요. - **CLI**: `solari insight instagram brand top collaborators` - **MCP 도구**: `solari_insight_instagram_brand_top_collaborators` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 브랜드 광고를 한 크리에이터를, 횟수 많은 순으로 보여 줘요. **언제 쓰나** — 브랜드와 협업한 크리에이터가 궁금할 때 사용해요. 크리에이터 쪽에서 보려면 account collabs예요. **무엇이 나오나** — 협업 횟수 순으로 크리에이터가 나와요. #### 파라미터 - `account_id` (string, 선택, uuid, pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$) — 브랜드 account_id 또는 username을 넣어요. - `username` (string, 선택, ≤ 64 chars) — 브랜드 사용자명. account_id가 있으면 무시돼요 - `promotion` (enum, 선택, 기본값 "all") — 전체, 프로모션만, 또는 프로모션이 아닌 것만 값: `all`, `true_only`, `false_only`. - `limit` (integer, 선택, ≥ 1) — 몇 명까지 - `offset` (integer, 선택, 기본값 0, ≥ 0) — 앞에서 몇 명을 건너뛸지 #### 응답 ##### `Response` - `brand_id` (uuid) — 찾은 브랜드 account_id예요 - `promotion_filter` (string) — 이번에 쓴 프로모션 필터예요 - `items` (object[]) — 크리에이터예요. 협업 횟수 많은 순이에요 - `total_count` (integer) — 필터에 맞는 크리에이터 수예요 ##### `items[]` - `creator_id` (uuid) — 크리에이터 account_id - `username / full_name` (string) — 사용자명과 표시 이름이에요 - `profile_pic_url` (string) — 프로필 사진 - `follower_count` (integer) — 팔로워 수 - `collaboration_count` (integer) — 브랜드와의 협업 포스트 수예요. #### 예시 ```console $ solari insight instagram brand top collaborators username=innisfreeofficial limit=5 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "brand_id": "018cabce-14cc-7544-8890-7811ec33ef74", "promotion_filter": "all", "items": [ { "creator_id": "0195474c-8ee3-7690-a385-71b2913e31b5", "username": "donge_cos", "full_name": "💞동이💞", "profile_pic_url": "https://dcr.bzine.co/instagram/users/donge_cos/profile-picture", "follower_count": 83354, "collaboration_count": 31 }, { "creator_id": "018ecc75-55d8-70a7-a348-d370aa504ed9", "username": "beinny_motd", "full_name": "베이니 BEINNY", "profile_pic_url": "https://dcr.bzine.co/instagram/users/beinny_motd/profile-picture", "follower_count": 205754, "collaboration_count": 29 }, "… 3 more" ], "total_count": 2331 } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_insight_instagram_brand_top_collaborators", "arguments": { "username": "innisfreeofficial", "limit": 5 } } ``` #### 주의사항 - 포스트까지 보려면 creator_id를 brand collaborator posts에 100명씩 넣으면 돼요. #### 관련 도구 - [`solari_insight_instagram_brand_collaborator_posts`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-brand-collaborator-posts.md?lang=ko) - [`solari_insight_instagram_account_collabs`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-account-collabs.md?lang=ko) ### solari insight instagram brand collaborator posts > 브랜드와 협업한 크리에이터의 광고 포스트예요. - **CLI**: `solari insight instagram brand collaborator posts` - **MCP 도구**: `solari_insight_instagram_brand_collaborator_posts` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 크리에이터 최대 100명의 광고 포스트를 브랜드 기준으로 불러와요. 최근 구간이 아니라 전체 기간이에요. **언제 쓰나** — 여러 크리에이터의 포스트를 한 번에 볼 때 사용해요. **무엇이 나오나** — 크리에이터별 합계와 포스트예요. 참여가 높은 순이에요. #### 파라미터 - `account_id` (string, 선택, uuid, pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$) — 브랜드 account_id 또는 username을 넣어요. - `username` (string, 선택, ≤ 64 chars) — 브랜드 사용자명. account_id가 있으면 무시돼요 - `account_ids` (uuid[], 필수, 1–100 items, uuid) — 불러올 크리에이터 account_id. 최대 100명 #### 응답 ##### `Response` - `(top level)` (object[]) — 크리에이터 배열이에요 ##### `[]` - `user_id` (uuid) — 크리에이터 account_id - `username / full_name` (string) — 사용자명과 표시 이름이에요 - `follower_count` (integer) — 팔로워 수 - `post_count` (integer) — 브랜드 대상 포스트 수예요. - `reels_count / images_count` (integer) — 형식별 내역이에요 - `posts` (object[]) — 포스트예요. id, slug, text, posted_at, like_count, comment_count, play_count가 들어 있어요 - `like_count_avg / comment_count_avg` (number | null) — 평균 참여예요. 계산됐을 때만 와요 #### 예시 ```console $ solari insight instagram brand collaborator posts username=innisfreeofficial account_ids='["0195474c-8ee3-7690-a385-71b2913e31b5","018ecc75-55d8-70a7-a348-d370aa504ed9"]' ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json [ { "user_id": "018ecc75-55d8-70a7-a348-d370aa504ed9", "username": "beinny_motd", "full_name": "베이니 BEINNY", "post_count": 29, "follower_count": 205754, "reels_count": 1, "images_count": 28, "posts": [ { "id": "019c98bc-a666-717d-a5fe-ea96f1345042", "slug": "ByVKkIbnQ8S", "text": "#이니스프리 에서 새롭게 출시된 #구름블러틴트 ☁️💓\n비비드 코튼 잉크 블러버젼이에용\n.\n요즘 이런 블러틴트류 많이 출시돼서 넘 행복해요🥺💛\n이니스프리 블러틴트는 보송보송한 마무리지만 꽤 촉촉하고 가볍게 발리더라구요! 발림성 넘 좋았어요✨\n총 8가지 컬러인데 그중 제 맘에 드는 4가지 컬러는 입술에 발색해서 보여드려용 :) 특히 로즈+핑크 섞인듯한 2호 #로제핑크 완전 추천👍🏻✨\n가격은 9, …", "posted_at": "2019-06-05T14:02:19Z", "virtual_campaign": null, "like_count": 2399, "comment_count": 20, "play_count": null, "username": "beinny_motd", "user_id": "018ecc75-55d8-70a7-a348-d370aa504ed9" }, "… 10 more" ], "like_count_avg": null, "comment_count_avg": null, "synced_at": null }, "… 1 more" ] ``` #### MCP 호출로 쓰면 ```json { "name": "solari_insight_instagram_brand_collaborator_posts", "arguments": { "username": "innisfreeofficial", "account_ids": [ "0195474c-8ee3-7690-a385-71b2913e31b5", "018ecc75-55d8-70a7-a348-d370aa504ed9" ] } } ``` #### 주의사항 - account_ids는 JSON 배열이나 쉼표로 나눈 목록이에요. 한 번에 100명까지예요. #### 관련 도구 - [`solari_insight_instagram_brand_top_collaborators`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-brand-top-collaborators.md?lang=ko) - [`solari_insight_instagram_brand_overview`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-brand-overview.md?lang=ko) ### solari insight instagram brand lookalike content > 브랜드 광고와 비슷한 포스트를 찾을 때 사용해요. - **CLI**: `solari insight instagram brand lookalike content` - **MCP 도구**: `solari_insight_instagram_brand_lookalike_content` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 브랜드의 성과 좋은 광고와 비슷한 포스트를 찾아 줘요. 레퍼런스를 모을 때 쓰면 돼요. **언제 쓰나** — 광고 규모가 아니라 비슷한 레퍼런스가 필요할 때 사용해요. **무엇이 나오나** — 비슷한 포스트와, 출발점이 된 브랜드 광고예요. #### 파라미터 - `account_id` (string, 선택, uuid, pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$) — 브랜드 account_id 또는 username을 넣어요. - `username` (string, 선택, ≤ 64 chars) — 브랜드 사용자명. account_id가 있으면 무시돼요 - `limit` (integer, 선택, ≥ 1) — 비슷한 포스트를 몇 개까지 줄지 - `region` (string, 선택, 기본값 "KR") — KR, JP 같은 국가 코드 #### 응답 ##### `Response` - `items` (object[]) — 비슷한 포스트예요 - `basis` (object[]) — 출발점으로 쓴 브랜드 자신의 광고 포스트예요 - `region` (string) — 검색에 쓴 국가예요 ##### `items[] · basis[]` - `post_id` (uuid) — 다른 콘텐츠 도구에 넣는 포스트 id예요 - `slug` (string) — 공개 URL의 숏코드예요 - `author_id` (uuid) — 작성자 account_id - `username` (string) — 작성자 사용자명 - `full_name` (string | null) — 표시 이름 - `profile_pic_url` (string | null) — 프로필 사진 URL - `follower_count` (integer | null) — 작성자 팔로워 수 - `region` (string | null) — 작성자 국가 코드 - `posted_at` (timestamp) — 게시 시각 (UTC) - `media_type` (string) — image, video, 또는 carousel - `play_count` (integer | null) — 영상 재생 수예요. 이미지면 null이에요 - `like_count` (integer | null) — 좋아요 - `text` (string | null) — 캡션 - `media_url` (string) — 미디어 URL - `thumbnail_url` (string) — 썸네일 URL - `score` (number | null) — 이 응답의 순위 점수예요 - `efficiency_score` (number | null) — 작성자 팔로워 수 대비 성과예요 - `est_percentile` (number | null) — 지역 백분위예요. 0–1이에요. - `total_views_3m` (integer | null) — 최근 3개월 작성자 조회 수예요 - `median_views_3m` (integer | null) — 최근 3개월 작성자 조회 수 중앙값이에요 - `recent_collab_brands` (string[]) — 작성자가 최근에 협업한 브랜드예요 - `item_type` (string) — 항목 종류예요. 이 피드에서는 post예요 - `content_source` (string | null) — 어느 피드에서 나왔는지예요 - `is_saved` (boolean | null) — SOLARI에 저장되어 있는지예요 - `updated_at` (timestamp | null) — 성과가 마지막으로 갱신된 시각이에요 #### 예시 ```console $ solari insight instagram brand lookalike content username=innisfreeofficial limit=3 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "items": [ { "item_type": "content", "post_id": "019ecb92-a677-7421-8ed6-752efe3d99d0", "author_id": "0196cb39-870a-7a76-9773-0b95789c877d", "username": "boo_rookie", "full_name": null, "profile_pic_url": null, "follower_count": null, "region": null, "posted_at": "2026-06-11T08:14:37Z", "media_type": "video", "play_count": 427258, "like_count": null, "score": null, "efficiency_score": null, "est_percentile": null, "updated_at": null, "media_url": "https://smr-images-b.bzine.co/users/0196cb39-870a-7a76-9773-0b95789c877d/posts/019ecb92-a677-7421-8ed6-752efe3d99d0/medias/019ecb92-a92e-7fc8-b644-69b930f2e197.mp4", "thumbnail_url": "https://bzine.co/cdn-cgi/media/width=480,mode=frame,time=100ms/https://smr-images-a.bzine.co/users/0196cb39-870a-7a76-9773-0b95789c877d/posts/019ecb92-a677-7421-8ed6-752efe3d99d0/medias/019ecb92-a92e-7fc8-b644-69b930f2e1 …", "slug": "DZcD8KXxKwd", "text": null, "brand_match_score": null, "recent_collab_brands": [], "total_views_3m": null, "median_views_3m": null, "is_saved": null, "content_source": "lookalikes_by_top_ad" }, "… 2 more" ], "basis": [ { "item_type": "content", "post_id": "01a04c73-3ec3-7873-9e84-334c644abfe4", "author_id": "0196c474-c96e-71ad-aceb-61af051c81d3", "username": "hwitto_", "full_name": null, "profile_pic_url": null, "follower_count": null, "region": null, "posted_at": null, "media_type": "video", "play_count": 155729, "like_count": null, "score": null, "efficiency_score": null, "est_percentile": null, "updated_at": null, "media_url": "https://smr-images-a.bzine.co/users/0196c474-c96e-71ad-aceb-61af051c81d3/posts/01a04c73-3ec3-7873-9e84-334c644abfe4/medias/01a04c73-4036-7a83-a52a-97b0058e6732.mp4", "thumbnail_url": "https://bzine.co/cdn-cgi/media/width=480,mode=frame,time=100ms/https://smr-images.bzine.co/users/0196c474-c96e-71ad-aceb-61af051c81d3/posts/01a04c73-3ec3-7873-9e84-334c644abfe4/medias/01a04c73-4036-7a83-a52a-97b0058e6732 …", "slug": "DckGrZ6vZiU", "text": null, "brand_match_score": null, "recent_collab_brands": [], "total_views_3m": null, "median_views_3m": null, "is_saved": null, "content_source": "lookalikes_by_top_ad" }, "… 5 more" ], "region": "KR" } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_insight_instagram_brand_lookalike_content", "arguments": { "username": "innisfreeofficial", "limit": 3 } } ``` #### 주의사항 - basis가 비어 있으면, 아직 출발점으로 쓸 광고 포스트가 없는 거예요. #### 관련 도구 - [`solari_insight_instagram_brand_ad_posts`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-brand-ad-posts.md?lang=ko) - [`solari_catalog_instagram_content_search`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-content-search.md?lang=ko) ### solari catalog instagram account profile > Instagram 계정의 프로필, 성과, 최근 포스트예요. - **CLI**: `solari catalog instagram account profile` - **MCP 도구**: `solari_catalog_instagram_account_profile` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 Instagram 계정의 프로필, 성과, 최근 포스트와 협업 미리보기를 보여 줘요. **언제 쓰나** — 계정 전체 그림이 필요할 때 사용해요. 최근 포스트와 협업이 같이 와요. **무엇이 나오나** — 프로필, 성과, 최근 포스트와 협업 미리보기예요. #### 파라미터 - `account_id` (string, 선택, uuid, pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$) — account_id 또는 username을 넣어요. - `username` (string, 선택, ≤ 64 chars) — Instagram 사용자명. account_id가 있으면 무시돼요 #### 응답 ##### `Response` - `user_id` (uuid) — account_id예요 - `username / full_name / bio` (string) — 사용자명, 표시 이름, Bio예요 - `follower_count / following_count` (integer) — 팔로워 수와 팔로잉 수예요 - `total_post_count` (integer) — 누적 포스트 수예요 - `post_count_3m` (integer) — 최근 3개월 포스트예요 - `is_verified` (boolean) — 인증 배지 - `account_type` (string) — SOLARI가 본 계정 성격이에요 (brand, creator, …) - `median_views_cur` (integer) — 지금 기간의 조회 수 중앙값이에요 - `total_views_cur` (integer) — 지금 기간의 총 조회 수예요 - `ad_count_cur` (integer) — 지금 기간의 광고 포스트예요 - `median_views_growth_m1` (number) — 전월 대비 조회 수 중앙값 변화예요. 비율이에요 - `total_views_growth_m1` (number) — 전월 대비 총 조회 수 변화예요. 비율이에요 - `median_views_region_pct` (number) — 지역 기준 조회 수 중앙값 백분위예요. 0–1이에요. - `total_views_region_pct` (number) — 지역 기준 총 조회 수 백분위예요. 0–1이에요. - `recent_posts` (object[]) — 최근 포스트 미리보기예요 - `recent_collabs` (object[]) — 최근 광고 협업 미리보기예요 - `fetched_on_demand` (boolean) — 이번에 처음 가져온 계정이면 true예요. #### 예시 ```console $ solari catalog instagram account profile username=innisfreeofficial ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "user_id": "018cabce-14cc-7544-8890-7811ec33ef74", "username": "innisfreeofficial", "full_name": "INNISFREE | 이니스프리", "bio": "NATURE MEETS KOREAN SKIN SCIENCE", "profile_pic_url": "https://dcr.bzine.co/instagram/users/innisfreeofficial/profile-picture", "follower_count": 847619, "total_post_count": 4131, "post_count_3m": 100, "following_count": 17, "is_verified": true, "median_views_cur": 12409, "ad_count_cur": 0, "total_views_cur": 685771, "median_views_growth_m1": 0.04956440835659308, "total_views_growth_m1": 0.39407867587418205, "median_views_region_pct": 0.1736183168163037, "total_views_region_pct": 0.1457900950723917, "recent_posts": [ { "post_id": "01a06275-d974-7fda-98ee-dd3ee15b4dcf", "slug": "DcyMAmUh6FZ", "media_type": "video", "media_url": "https://smr-images-b.bzine.co/users/018cabce-14cc-7544-8890-7811ec33ef74/posts/01a06275-d974-7fda-98ee-dd3ee15b4dcf/medias/01a06275-db2b-77f7-a020-b4beb744771f.mp4", "thumbnail_url": "https://bzine.co/cdn-cgi/media/width=480,mode=frame,time=0ms/https://smr-images.bzine.co/users/018cabce-14cc-7544-8890-7811ec33ef74/posts/01a06275-d974-7fda-98ee-dd3ee15b4dcf/medias/01a06275-db2b-77f7-a020-b4beb744771f.m …", "text": "Deeply hydrated skin—NO OFF HOURS. 💚\nwherever the day takes MINGYU (@min9yu_k)—his hydration stays SUPERCHARGED ⚡️\n\nGreen Tea Ceramide Milk: Lightweight milky toner that won‘t clog your pores\nGreen Tea Ceramide Mist: Tou …", "play_count": 22467, "like_count": 3224, "video_media_count": 0, "media_count": 1 }, "… 5 more" ], "recent_collabs": [], "account_type": "brand", "fetched_on_demand": false } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_catalog_instagram_account_profile", "arguments": { "username": "innisfreeofficial" } } ``` #### 주의사항 - 아직 수집되지 않은 사용자명이면 첫 요청에서 바로 가져와요. 성과와 협업은 수집이 끝날 때까지 비어 있을 수 있어요. - 그다음에 not-found가 나면 Instagram에 없는 사용자명이에요. #### 관련 도구 - [`solari_catalog_instagram_account_posts`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-account-posts.md?lang=ko) - [`solari_insight_instagram_account_collabs`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-account-collabs.md?lang=ko) - [`solari_catalog_tiktok_account_profile`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-account-profile.md?lang=ko) ### solari catalog instagram account posts > Instagram 계정이 올린 포스트예요. - **CLI**: `solari catalog instagram account posts` - **MCP 도구**: `solari_catalog_instagram_account_posts` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 Instagram 계정의 포스트를 미디어, 태그, 좋아요와 함께 보여 줘요. 날짜나 형식으로 좁힐 수 있어요. **언제 쓰나** — 프로필 미리보기보다 더 많은 포스트가 필요하거나, 기간·형식으로 나누고 싶을 때 사용해요. **무엇이 나오나** — 포스트 목록이에요. 캐러셀의 모든 장과 태그된 계정·해시태그도 같이 와요. #### 파라미터 - `account_id` (string, 선택, uuid, pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$) — account_id 또는 username을 넣어요. - `username` (string, 선택, ≤ 64 chars) — Instagram 사용자명. account_id가 있으면 무시돼요 - `limit` (integer, 선택, ≥ 1) — 한 페이지에 몇 개까지 - `offset` (integer, 선택, 기본값 0, ≥ 0) — 앞에서 몇 개를 건너뛸지 - `since` (string, 선택, pattern ^\d{4}-\d{2}-\d{2}$) — 이 UTC 날짜 이후 포스트만 (YYYY-MM-DD) - `until` (string, 선택, pattern ^\d{4}-\d{2}-\d{2}$) — 이 UTC 날짜 이전 포스트만 (YYYY-MM-DD) - `post_type` (enum, 선택) — reel, video, photo, carousel 중 하나로 좁혀요 값: `reel`, `video`, `photo`, `carousel`. #### 응답 ##### `Response` - `found` (boolean) — Instagram에 없는 사용자명이면 false예요. - `account_id / username` (string) — 찾은 계정이에요 - `total` (integer) — 필터에 맞는 포스트예요 - `has_more` (boolean) — 다음 페이지가 있는지예요 - `items` (object[]) — 포스트예요. 최신순이에요 - `fetched_on_demand` (boolean) — 아직 가장 최근 포스트만 있으면 true예요 ##### `items[]` - `post_id` (uuid) — SOLARI 포스트 id - `slug` (string) — Instagram 숏코드 - `url` (string) — 공개 링크예요 - `post_type` (string) — reel, video, photo, 또는 carousel - `posted_at` (timestamp) — 게시 시각 (UTC) - `text` (string) — 캡션 - `like_count / comment_count / play_count` (integer) — 참여 - `media_count` (integer) — 미디어 개수 - `is_paid_partnership` (boolean | null) — Instagram 유료 파트너십 라벨 - `medias` (object[]) — 캐러셀 순서의 모든 미디어예요 - `medias[].tags` (object[]) — 미디어에 태그된 계정과 해시태그예요. - `thumbnail_url` (string) — 썸네일 #### 예시 ```console $ solari catalog instagram account posts username=innisfreeofficial limit=2 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "found": true, "account_id": "018cabce-14cc-7544-8890-7811ec33ef74", "username": "innisfreeofficial", "fetched_on_demand": false, "total": 4196, "has_more": true, "items": [ { "post_id": "01a06275-d974-7fda-98ee-dd3ee15b4dcf", "slug": "DcyMAmUh6FZ", "url": "https://www.instagram.com/p/DcyMAmUh6FZ/", "post_type": "reel", "posted_at": "2026-09-02T12:00:06+00:00", "text": "Deeply hydrated skin—NO OFF HOURS. 💚\nwherever the day takes MINGYU (@min9yu_k)—his hydration stays SUPERCHARGED ⚡️\n\nGreen Tea Ceramide Milk: Lightweight milky toner that won‘t clog your pores\nGreen Tea Ceramide Mist: Tou …", "like_count": 3224, "comment_count": 57, "play_count": 22467, "media_count": 1, "is_paid_partnership": false, "medias": [ { "media_type": "video", "media_url": "https://smr-images-b.bzine.co/users/018cabce-14cc-7544-8890-7811ec33ef74/posts/01a06275-d974-7fda-98ee-dd3ee15b4dcf/medias/01a06275-db2b-77f7-a020-b4beb744771f.mp4", "thumbnail_url": "https://bzine.co/cdn-cgi/media/width=480,mode=frame,time=0ms/https://smr-images.bzine.co/users/018cabce-14cc-7544-8890-7811ec33ef74/posts/01a06275-d974-7fda-98ee-dd3ee15b4dcf/medias/01a06275-db2b-77f7-a020-b4beb744771f.m …", "video_duration": 23.868000030517578, "tags": [] } ], "thumbnail_url": "https://bzine.co/cdn-cgi/media/width=480,mode=frame,time=0ms/https://smr-images.bzine.co/users/018cabce-14cc-7544-8890-7811ec33ef74/posts/01a06275-d974-7fda-98ee-dd3ee15b4dcf/medias/01a06275-db2b-77f7-a020-b4beb744771f.m …" }, "… 1 more" ] } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_catalog_instagram_account_posts", "arguments": { "username": "innisfreeofficial", "limit": 2 } } ``` #### 주의사항 - since와 until은 UTC 날짜이고, 시작일과 종료일을 포함해요. - post_type=reel은 숏폼 영상이에요. video는 reel이 아닌 영상이에요. - This reads the catalog only. If the username is missing, call solari fetch instagram posts username=… then retry. #### 관련 도구 - [`solari_catalog_instagram_account_profile`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-account-profile.md?lang=ko) - [`solari_catalog_instagram_content_detail`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-content-detail.md?lang=ko) - [`solari_catalog_tiktok_account_posts`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-account-posts.md?lang=ko) ### solari insight instagram account collabs > Instagram 크리에이터가 최근 협업한 콘텐츠예요. - **CLI**: `solari insight instagram account collabs` - **MCP 도구**: `solari_insight_instagram_account_collabs` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 Instagram 크리에이터의 최근 협업 콘텐츠를 보여 줘요. **언제 쓰나** — 크리에이터의 최근 협업이 궁금할 때 사용해요. 브랜드 쪽에서 보려면 brand top collaborators예요. **무엇이 나오나** — 최근 협업 콘텐츠예요. #### 파라미터 - `account_id` (string, 선택, uuid, pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$) — 크리에이터 account_id 또는 username을 넣어요. - `username` (string, 선택, ≤ 64 chars) — 크리에이터 사용자명. account_id가 있으면 무시돼요 - `months` (integer, 선택, ≥ 1) — 몇 달 전까지 볼지 - `limit` (integer, 선택, ≥ 1) — 한 페이지에 브랜드 몇 개까지 - `offset` (integer, 선택, 기본값 0, ≥ 0) — 앞에서 몇 개를 건너뛸지 #### 응답 ##### `Response` - `total` (integer) — 필터에 맞는 줄이에요 - `has_more` (boolean) — 줄이 더 있는지예요 - `items` (object[]) — 협업 요약이에요. 대상 브랜드별이에요 ##### `items[]` - `target_account_id` (uuid) — 대상 브랜드의 account_id예요 - `target_username` (string) — 대상 브랜드 사용자명 - `collab_count` (integer) — 브랜드와의 협업 포스트 수예요. - `last_posted_at` (timestamp) — 가장 최근 협업이에요 - `post_id / slug` (string) — 샘플 포스트의 id예요 - `text` (string) — 샘플 포스트 캡션 - `like_count / play_count` (integer) — 샘플 포스트 참여 - `media_type` (string) — 샘플 포스트 형식 - `thumbnail_url / media_url` (string) — 샘플 포스트 미디어 - `bio` (string) — 대상 브랜드 Bio #### 예시 ```console $ solari insight instagram account collabs username=beinny_motd months=6 limit=3 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "items": [ { "post_id": "01a05575-7c9b-7232-8519-4a38fa061389", "target_user_id": "018cab85-8ef8-7dc9-ab0a-7044d463f65e", "target_username": "dasique_official", "collab_count": 2, "last_posted_at": "2026-08-30T05:08:56+00:00", "slug": "DcpugJ2kzv8", "text": "#광고 무겁지 않은 가을 데일리 팔레트 로즈밀크티 . .🫖🤎\n차분하고 미지근한 로즈핑크 팔레트인데\n부드러운 밀크티 무드라서 분위기가 넘 예뻐요..🥺\n\n데이지크에서 올리브영 X 산리오 콜라보\n시티팝 에디션으로 미니섀도우팔레트 4종이 출시되는데\n그 중 자주 추천드렸던 로즈밀크티, 밀크라떼가 있더라구요 !\n\nNEW 컬러 피치레코드, 모브카세트도 출시되어요🤍\n도시의 아침과 저녁 무드를 담은 데일리한 …", "play_count": 0, "media_type": "8", "like_count": 878, "video_media_count": 0, "media_count": 15, "bio": "🫒올영세일 08.30 – 09.05\nUP TO 37% SALE\n올리브영X산리오,\n🌠데이지크 🆕 미니 섀도우", "thumbnail_url": "https://bzine.co/cdn-cgi/image/fit=scale-down,width=480/https://smr-images-c.bzine.co/users/018ecc75-55d8-70a7-a348-d370aa504ed9/posts/01a05575-7c9b-7232-8519-4a38fa061389/medias/01a05575-7dd3-779e-9050-a6cb59578cb9.jpg", "media_url": "https://bzine.co/cdn-cgi/image/fit=scale-down,width=480/https://smr-images-c.bzine.co/users/018ecc75-55d8-70a7-a348-d370aa504ed9/posts/01a05575-7c9b-7232-8519-4a38fa061389/medias/01a05575-7dd3-779e-9050-a6cb59578cb9.jpg", "target_account_id": "018cab85-8ef8-7dc9-ab0a-7044d463f65e" }, "… 2 more" ], "has_more": true, "total": 7 } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_insight_instagram_account_collabs", "arguments": { "username": "beinny_motd", "months": 6, "limit": 3 } } ``` #### 주의사항 - 광고 포스트 목록이 필요하면 account ad posts를 쓰세요. #### 관련 도구 - [`solari_insight_instagram_account_ad_posts`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-account-ad-posts.md?lang=ko) - [`solari_insight_instagram_brand_top_collaborators`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-brand-top-collaborators.md?lang=ko) ### solari insight instagram account ad posts > Instagram 크리에이터의 광고 포스트예요. - **CLI**: `solari insight instagram account ad posts` - **MCP 도구**: `solari_insight_instagram_account_ad_posts` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 Instagram 크리에이터의 광고 포스트를 보여 줘요. **언제 쓰나** — 요약이 아니라 광고 포스트 목록이 필요할 때 사용해요. **무엇이 나오나** — 광고 포스트예요. 최신순이에요. #### 파라미터 - `account_id` (string, 선택, uuid, pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$) — 크리에이터 account_id 또는 username을 넣어요. - `username` (string, 선택, ≤ 64 chars) — 크리에이터 사용자명. account_id가 있으면 무시돼요 - `months` (integer, 선택, ≥ 1) — 몇 달 전까지 볼지 - `limit` (integer, 선택, ≥ 1) — 한 페이지에 몇 줄까지 - `offset` (integer, 선택, 기본값 0, ≥ 0) — 앞에서 몇 줄을 건너뛸지 - `target` (string, 선택, ≤ 64 chars) — 지정한 브랜드만. account_id 또는 사용자명. #### 응답 ##### `Response` - `account_id / username` (string) — 찾은 크리에이터예요 - `months` (integer) — 이번에 본 기간이에요 - `total` (integer) — 전체 줄 수예요 - `has_more` (boolean) — 다음 페이지가 있는지예요 - `items` (object[]) — 포스트–브랜드 쌍이에요 ##### `items[]` - `post_id / slug / url` (string) — 포스트 id와 공개 링크예요 - `post_type` (string) — reel, video, photo, 또는 carousel - `posted_at` (timestamp) — 게시 시각 (UTC) - `text` (string) — 캡션 - `like_count / comment_count / play_count` (integer) — 참여 - `media_count` (integer) — 미디어 개수 - `is_paid_partnership` (boolean | null) — Instagram 유료 파트너십 라벨 - `target_account_id / target_username` (string) — 이 줄이 가리키는 브랜드예요 #### 예시 ```console $ solari insight instagram account ad posts username=beinny_motd months=6 limit=2 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "account_id": "018ecc75-55d8-70a7-a348-d370aa504ed9", "username": "beinny_motd", "months": 6, "total": 12, "has_more": true, "items": [ { "post_id": "01a05575-7c9b-7232-8519-4a38fa061389", "slug": "DcpugJ2kzv8", "url": "https://www.instagram.com/p/DcpugJ2kzv8/", "post_type": "carousel", "posted_at": "2026-08-30T05:08:56Z", "text": "#광고 무겁지 않은 가을 데일리 팔레트 로즈밀크티 . .🫖🤎\n차분하고 미지근한 로즈핑크 팔레트인데\n부드러운 밀크티 무드라서 분위기가 넘 예뻐요..🥺\n\n데이지크에서 올리브영 X 산리오 콜라보\n시티팝 에디션으로 미니섀도우팔레트 4종이 출시되는데\n그 중 자주 추천드렸던 로즈밀크티, 밀크라떼가 있더라구요 !\n\nNEW 컬러 피치레코드, 모브카세트도 출시되어요🤍\n도시의 아침과 저녁 무드를 담은 데일리한 …", "like_count": 878, "comment_count": 19, "play_count": 0, "media_count": 15, "is_paid_partnership": null, "target_account_id": "018cab85-8ef8-7dc9-ab0a-7044d463f65e", "target_username": "dasique_official" }, "… 1 more" ] } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_insight_instagram_account_ad_posts", "arguments": { "username": "beinny_motd", "months": 6, "limit": 2 } } ``` #### 주의사항 - target을 넣으면 지정한 브랜드만 남아요. account_id나 사용자명을 넣을 수 있어요. #### 관련 도구 - [`solari_insight_instagram_account_collabs`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-account-collabs.md?lang=ko) - [`solari_insight_instagram_brand_ad_posts`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-brand-ad-posts.md?lang=ko) ### solari catalog instagram content detail > Instagram 포스트를 불러와요. - **CLI**: `solari catalog instagram content detail` - **MCP 도구**: `solari_catalog_instagram_content_detail` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 post_id, 숏코드, 또는 공개 URL로 Instagram 포스트를 불러와요. **언제 쓰나** — 포스트가 필요할 때 사용해요. id가 많으면 content batch를 쓰세요. **무엇이 나오나** — 캡션과 성과가 있는 포스트예요. #### 파라미터 - `post_id` (string, 선택, uuid, pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$) — post_id, slug, url 중 하나를 넣어요. - `slug` (string, 선택, pattern ^[A-Za-z0-9_-]{3,20}$) — Instagram 숏코드 - `url` (string, 선택, ≤ 512 chars) — 공개 Instagram 포스트 URL #### 응답 ##### `Response` - `item` (object | null) — 포스트예요. 없거나 비공개면 null이에요 - `fetched_on_demand` (boolean) — 이번에 처음 가져온 포스트면 true예요. ##### `item` - `post_id` (uuid) — 다른 콘텐츠 도구에 넣는 포스트 id예요 - `slug` (string) — 공개 URL의 숏코드예요 - `author_id` (uuid) — 작성자 account_id - `username` (string) — 작성자 사용자명 - `full_name` (string | null) — 표시 이름 - `profile_pic_url` (string | null) — 프로필 사진 URL - `follower_count` (integer | null) — 작성자 팔로워 수 - `region` (string | null) — 작성자 국가 코드 - `posted_at` (timestamp) — 게시 시각 (UTC) - `media_type` (string) — image, video, 또는 carousel - `play_count` (integer | null) — 영상 재생 수예요. 이미지면 null이에요 - `like_count` (integer | null) — 좋아요 - `text` (string | null) — 캡션 - `media_url` (string) — 미디어 URL - `thumbnail_url` (string) — 썸네일 URL - `score` (number | null) — 이 응답의 순위 점수예요 - `efficiency_score` (number | null) — 작성자 팔로워 수 대비 성과예요 - `est_percentile` (number | null) — 지역 백분위예요. 0–1이에요. - `total_views_3m` (integer | null) — 최근 3개월 작성자 조회 수예요 - `median_views_3m` (integer | null) — 최근 3개월 작성자 조회 수 중앙값이에요 - `recent_collab_brands` (string[]) — 작성자가 최근에 협업한 브랜드예요 - `item_type` (string) — 항목 종류예요. 이 피드에서는 post예요 - `content_source` (string | null) — 어느 피드에서 나왔는지예요 - `is_saved` (boolean | null) — SOLARI에 저장되어 있는지예요 - `updated_at` (timestamp | null) — 성과가 마지막으로 갱신된 시각이에요 #### 예시 ```console $ solari catalog instagram content detail slug=DcyMAmUh6FZ ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "item": { "item_type": "content", "post_id": "01a06275-d974-7fda-98ee-dd3ee15b4dcf", "author_id": "018cabce-14cc-7544-8890-7811ec33ef74", "username": "innisfreeofficial", "full_name": "INNISFREE | 이니스프리", "profile_pic_url": "https://dcr.bzine.co/instagram/users/innisfreeofficial/profile-picture", "follower_count": 847619, "region": null, "posted_at": "2026-09-02T12:00:06Z", "media_type": "video", "play_count": 22467, "like_count": 3224, "score": null, "efficiency_score": null, "est_percentile": null, "updated_at": null, "media_url": "https://smr-images-b.bzine.co/users/018cabce-14cc-7544-8890-7811ec33ef74/posts/01a06275-d974-7fda-98ee-dd3ee15b4dcf/medias/01a06275-db2b-77f7-a020-b4beb744771f.mp4", "thumbnail_url": "https://bzine.co/cdn-cgi/media/width=480,mode=frame,time=0ms/https://smr-images.bzine.co/users/018cabce-14cc-7544-8890-7811ec33ef74/posts/01a06275-d974-7fda-98ee-dd3ee15b4dcf/medias/01a06275-db2b-77f7-a020-b4beb744771f.m …", "slug": "DcyMAmUh6FZ", "text": "Deeply hydrated skin—NO OFF HOURS. 💚\nwherever the day takes MINGYU (@min9yu_k)—his hydration stays SUPERCHARGED ⚡️\n\nGreen Tea Ceramide Milk: Lightweight milky toner that won‘t clog your pores\nGreen Tea Ceramide Mist: Tou …", "brand_match_score": null, "recent_collab_brands": [], "total_views_3m": null, "median_views_3m": null, "is_saved": null, "content_source": null }, "fetched_on_demand": false } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_catalog_instagram_content_detail", "arguments": { "slug": "DcyMAmUh6FZ" } } ``` #### 주의사항 - url은 /p/, /reel/, /tv/ 링크면 돼요. 숏코드는 알아서 잘라 줘요. - 아직 없는 숏코드나 URL이면 첫 요청에서 바로 가져와요. #### 관련 도구 - [`solari_catalog_instagram_content_batch`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-content-batch.md?lang=ko) - [`solari_catalog_instagram_account_posts`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-account-posts.md?lang=ko) ### solari catalog instagram content batch > 여러 Instagram 포스트를 한 번에 불러와요. - **CLI**: `solari catalog instagram content batch` - **MCP 도구**: `solari_catalog_instagram_content_batch` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 포스트 id 목록으로 캡션과 성과를 불러와요. 없는 id는 건너뛰어요. **언제 쓰나** — brand overview나 피드에서 받은 id로 포스트가 필요할 때 사용해요. **무엇이 나오나** — 찾은 포스트만 나와요. #### 파라미터 - `post_ids` (uuid[], 필수, 1–100 items, uuid) — 불러올 post_id. 최대 100개 - `sort` (enum, 선택, 기본값 "recent") — 최신순, 또는 참여 높은 순 값: `recent`, `engagement`. #### 응답 ##### `Response` - `items` (object[]) — 찾은 포스트예요 - `requested` (integer) — 보낸 id 개수예요 - `found` (integer) — 찾은 개수예요. 추적 중이 아닌 id는 빠져서 더 적을 수 있어요 ##### `items[]` - `id` (uuid) — 포스트 id - `slug` (string) — Instagram 숏코드 - `text` (string) — 캡션 - `posted_at` (timestamp) — 게시 시각 (UTC) - `username / user_id / account_id` (string) — 작성 계정이에요 - `like_count / comment_count` (integer) — 참여 - `play_count` (integer | null) — 영상 재생 수 - `media_type` (string) — 포스트 형식 #### 예시 ```console $ solari catalog instagram content batch post_ids='["019f505f-f8be-7e88-ae08-6fba999950b1","019f5060-3449-779e-a08b-d6d49add90cd"]' ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "items": [ { "id": "019f505f-f8be-7e88-ae08-6fba999950b1", "slug": "Dam_BYyJxtR", "text": "#광고 ₊✩‧₊˚ @innisfreeofficial ˚₊✩‧₊ \n공들인 나의 화장.. 찜통 더위에 무너져 내릴때\n이니스프리 노세범 선 파우더 하나면 고민 끝!\n\n유분 가득한 피부.. 꺼진 부위, 모공, 요철 부각되어\n10년은 늙어보이는 몰골에서 노세범 선 파우더 바르는\n즉시 핑크빛 필터를 씌운 듯~ 뽀용 피부 완성 ⭒˚.⋆\n\n노세범 맛집 답게 과다 피지와 유분을 즉각 흡착시키고\n무엇보다 가벼 …", "posted_at": "2026-07-10T10:34:01Z", "virtual_campaign": null, "username": "the_ketchap", "user_id": "018d3b53-c0c1-71cc-a44f-204f7d850267", "profile_picture_url": null, "like_count": 38579, "comment_count": 31, "thumbnail_url": null, "media_url": null, "media": [], "media_type": "reel", "play_count": 676825, "account_id": "018d3b53-c0c1-71cc-a44f-204f7d850267" }, "… 1 more" ], "requested": 2, "found": 2 } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_catalog_instagram_content_batch", "arguments": { "post_ids": [ "019f505f-f8be-7e88-ae08-6fba999950b1", "019f5060-3449-779e-a08b-d6d49add90cd" ] } } ``` #### 주의사항 - SOLARI 포스트 id만 받아요. 숏코드는 content detail의 slug로 넣으세요. #### 관련 도구 - [`solari_catalog_instagram_content_detail`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-content-detail.md?lang=ko) - [`solari_insight_instagram_brand_overview`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-brand-overview.md?lang=ko) ### solari catalog instagram content search > Instagram 캡션, Bio, 영상 대본을 검색할 때 사용해요. - **CLI**: `solari catalog instagram content search` - **MCP 도구**: `solari_catalog_instagram_content_search` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 KR, JP, US, TW에서 추적 중인 Instagram 포스트를 키워드로 찾아요. 대략 최근 6개월이에요. **언제 쓰나** — 어떤 주제의 포스트가 필요할 때 사용해요. 개수가 답이면 content aggregate를 쓰세요. **무엇이 나오나** — 관련 있는 순으로 포스트가 나와요. 맞는 문구는 하이라이트돼요. #### 파라미터 - `query` (string, 필수) — 찾을 단어 - `region` (enum, 선택, 기본값 "KR") — KR, JP, US, TW 값: `KR`, `JP`, `US`, `TW`. - `limit` (integer, 선택, ≥ 1) — 한 페이지에 몇 개까지 - `offset` (integer, 선택, 기본값 0, ≥ 0) — 앞에서 몇 개를 건너뛸지 - `since` (string, 선택, pattern ^\d{4}-\d{2}-\d{2}$) — 이 UTC 날짜 이후 포스트만 (YYYY-MM-DD) - `until` (string, 선택, pattern ^\d{4}-\d{2}-\d{2}$) — 이 UTC 날짜 이전 포스트만 (YYYY-MM-DD) #### 응답 ##### `Response` - `query / region` (string) — 이번에 쓴 query와 국가예요 - `total` (integer) — 맞는 개수예요. 10,000까지는 정확하고, 그다음엔 멈춰요 - `took_ms` (integer) — 검색에 걸린 시간이에요 - `items` (object[]) — 검색 결과예요. 점수 높은 순이에요 ##### `items[]` - `post_id` (uuid) — SOLARI 포스트 id - `slug` (string) — Instagram 숏코드 - `account_id / author_id / username` (string) — 작성 계정이에요 - `caption` (string) — 캡션 - `user_bio` (string) — 작성자 Bio예요. 검색한 텍스트의 일부예요 - `transcription_text` (string | null) — 영상에서 말한 대본이에요 - `posted_at` (timestamp) — 게시 시각 (UTC) - `like_count / comment_count` (integer) — 참여 - `follower_count` (integer) — 작성자 팔로워 수 - `score` (number) — 관련도 점수예요. 이 응답 안에서만 비교하면 돼요 - `highlight` (object) — 필드별 맞은 문구예요: caption, user_bio, transcription_text - `is_video` (boolean) — 영상 포스트인지예요 #### 예시 ```console $ solari catalog instagram content search query="이니스프리 그린티" limit=3 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "query": "이니스프리 그린티", "region": "KR", "total": 10000, "took_ms": 1586, "items": [ { "post_id": "019f12d8-3e72-78e9-b7e5-39293bc56f23", "author_id": "019f12d8-3e0f-7c74-afc6-e14405bd1523", "username": "hanydiary", "caption": "[이니스프리에디터 4기 1-2 : 그린티 PDRN 아이&립 세럼] #이니스프리 #그린티PDRN 💚 자세한 포스팅은 프로필 링크 참고해주세요 :)", "user_bio": "대외활동 | 휴학생 | 취준일기 🪽과 학생회 2년 연임 🪽이니스프리 대학생 에디터 3기 / 4기", "transcription_text": null, "posted_at": "2026-02-16T05:44:45Z", "like_count": 3, "comment_count": 3, "follower_count": 972, "score": 140.43787, "slug": "DUzrl1UkoJb", "highlight": { "caption": [ "[이니스프리에디터 4기 1-2 : 그린티 PDRN 아이&립 세럼] #이니스프리 #그린티PDRN 💚 자세한 포스팅은 프로필 링크 참고해주세요 :)" ], "user_bio": [ "대외활동 | 휴학생 | 취준일기 🪽과 학생회 2년 연임 🪽이니스프리 대학생 에디터 3기 / 4기" ], "transcription_text": [] }, "is_video": false, "media_url": null, "thumbnail_url": null, "account_id": "019f12d8-3e0f-7c74-afc6-e14405bd1523" }, "… 2 more" ] } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_catalog_instagram_content_search", "arguments": { "query": "이니스프리 그린티", "limit": 3 } } ``` #### 주의사항 - since가 대략 6개월보다 오래면 결과가 없어요. - total은 10,000까지 세고 그다음엔 멈춰요. #### 관련 도구 - [`solari_insight_instagram_content_aggregate`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-content-aggregate.md?lang=ko) - [`solari_catalog_instagram_content_batch`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-content-batch.md?lang=ko) - [`solari_catalog_tiktok_content_search`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-content-search.md?lang=ko) ### solari insight instagram content trending > 지금 뜨는 Instagram 포스트예요. - **CLI**: `solari insight instagram content trending` - **MCP 도구**: `solari_insight_instagram_content_trending` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 region으로 지정한 지역의 지금 뜨는 Instagram 포스트를, 작성자 프로필과 함께 보여 줘요. **언제 쓰나** — 지금 잘되는 콘텐츠가 궁금할 때 사용해요. 상승 속도가 중요하면 content rising을 쓰세요. **무엇이 나오나** — 지금 뜨는 포스트예요. 다음 페이지는 next_cursor로 받아요. #### 파라미터 - `region` (string, 선택, 기본값 "KR") — KR, JP 같은 국가 코드 - `limit` (integer, 선택, ≥ 1) — 한 페이지에 몇 개까지 - `cursor` (string, 선택) — 이전 페이지의 next_cursor - `account_id` (string, 선택, uuid, pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$) — 순위를 맞출 브랜드 account_id - `username` (string, 선택, ≤ 64 chars) — 순위를 맞출 브랜드 사용자명. account_id가 있으면 무시돼요 #### 응답 ##### `Response` - `items` (object[]) — 지금 뜨는 포스트예요 - `total_count` (integer) — 피드에 몇 개 있는지예요 - `region` (string) — 이번에 쓴 국가예요 - `content_type` (string) — 피드 종류예요 - `next_cursor` (string | null) — 다음 페이지를 받을 때 cursor로 다시 넣어요 ##### `items[]` - `post_id` (uuid) — 다른 콘텐츠 도구에 넣는 포스트 id예요 - `slug` (string) — 공개 URL의 숏코드예요 - `author_id` (uuid) — 작성자 account_id - `username` (string) — 작성자 사용자명 - `full_name` (string | null) — 표시 이름 - `profile_pic_url` (string | null) — 프로필 사진 URL - `follower_count` (integer | null) — 작성자 팔로워 수 - `region` (string | null) — 작성자 국가 코드 - `posted_at` (timestamp) — 게시 시각 (UTC) - `media_type` (string) — image, video, 또는 carousel - `play_count` (integer | null) — 영상 재생 수예요. 이미지면 null이에요 - `like_count` (integer | null) — 좋아요 - `text` (string | null) — 캡션 - `media_url` (string) — 미디어 URL - `thumbnail_url` (string) — 썸네일 URL - `score` (number | null) — 이 응답의 순위 점수예요 - `efficiency_score` (number | null) — 작성자 팔로워 수 대비 성과예요 - `est_percentile` (number | null) — 지역 백분위예요. 0–1이에요. - `total_views_3m` (integer | null) — 최근 3개월 작성자 조회 수예요 - `median_views_3m` (integer | null) — 최근 3개월 작성자 조회 수 중앙값이에요 - `recent_collab_brands` (string[]) — 작성자가 최근에 협업한 브랜드예요 - `item_type` (string) — 항목 종류예요. 이 피드에서는 post예요 - `content_source` (string | null) — 어느 피드에서 나왔는지예요 - `is_saved` (boolean | null) — SOLARI에 저장되어 있는지예요 - `updated_at` (timestamp | null) — 성과가 마지막으로 갱신된 시각이에요 #### 예시 ```console $ solari insight instagram content trending region=KR limit=2 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "items": [ { "item_type": "content", "post_id": "01a055fe-d72c-7005-8709-eef67b4be6f0", "author_id": "018ecc27-f8e7-7100-9339-bb050ea44a7f", "username": "sixpackpiggy", "full_name": "Jinmin Park", "profile_pic_url": "https://dcr.bzine.co/instagram/users/sixpackpiggy/profile-picture", "follower_count": 93442, "region": "KR", "posted_at": "2026-08-29T02:02:20Z", "media_type": "video", "play_count": 286749, "like_count": null, "score": 96.69330916066565, "efficiency_score": null, "est_percentile": 96.69330916066565, "updated_at": "2026-09-03T04:51:42.797111Z", "media_url": "https://smr-images-b.bzine.co/users/018ecc27-f8e7-7100-9339-bb050ea44a7f/posts/01a055fe-d72c-7005-8709-eef67b4be6f0/medias/01a055fe-d964-7d73-9a77-d06823a2abc2.mp4", "thumbnail_url": "https://bzine.co/cdn-cgi/media/width=480,mode=frame,time=0ms/https://smr-images.bzine.co/users/018ecc27-f8e7-7100-9339-bb050ea44a7f/posts/01a055fe-d72c-7005-8709-eef67b4be6f0/medias/01a055fe-d964-7d73-9a77-d06823a2abc2.m …", "slug": "Dcmzs05SAae", "text": "How dedicated are you to your Korean skincare? 💅@patinaosaka \n#koreanskincare #osaka #japan #kbeauty #traveling", "brand_match_score": null, "recent_collab_brands": [], "total_views_3m": 1875678, "median_views_3m": 57780, "is_saved": false, "content_source": null }, "… 1 more" ], "total_count": 213635, "region": "KR", "content_type": "trending", "next_cursor": "eyJhcyI6ICIyMDI2LTA5LTAzVDA1OjIwOjIzLjM4Mzk3NCswMDowMCIsICJzYyI6ICIyMDI2LTA5LTAzVDA0OjQ0OjQ3LjkzNTI1OCswMDowMCIsICJzcCI6ICIwMWEwNTVmZS1mOWIyLTdiNmYtYjY1OS05ZGE1OTM3NjgzMWMifQ==" } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_insight_instagram_content_trending", "arguments": { "region": "KR", "limit": 2 } } ``` #### 주의사항 - 브랜드 account_id나 사용자명을 넣으면, 지정한 브랜드에 맞춰 순위가 바뀌어요. - 페이지는 offset이 아니라 cursor예요. next_cursor를 다시 보내면 돼요. #### 관련 도구 - [`solari_insight_instagram_content_rising`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-content-rising.md?lang=ko) - [`solari_insight_instagram_content_trend_clusters`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-content-trend-clusters.md?lang=ko) ### solari insight instagram content rising > 급상승 중인 Instagram 포스트예요. - **CLI**: `solari insight instagram content rising` - **MCP 도구**: `solari_insight_instagram_content_rising` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 최근 성과가 갑자기 오른 Instagram 포스트예요. 작성자 프로필도 같이 와요. **언제 쓰나** — 지금 숫자보다 얼마나 빨리 오르는지가 중요할 때 사용해요. **무엇이 나오나** — 상승 중인 포스트예요. 다음 페이지는 next_cursor로 받아요. #### 파라미터 - `region` (string, 선택, 기본값 "KR") — KR, JP 같은 국가 코드 - `limit` (integer, 선택, ≥ 1) — 한 페이지에 몇 개까지 - `cursor` (string, 선택) — 이전 페이지의 next_cursor - `account_id` (string, 선택, uuid, pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$) — 순위를 맞출 브랜드 account_id - `username` (string, 선택, ≤ 64 chars) — 순위를 맞출 브랜드 사용자명. account_id가 있으면 무시돼요 #### 응답 ##### `Response` - `items` (object[]) — 상승 중인 포스트예요 - `total_count` (integer) — 피드에 몇 개 있는지예요 - `region` (string) — 이번에 쓴 국가예요 - `content_type` (string) — 피드 종류예요 - `next_cursor` (string | null) — 다음 페이지를 받을 때 cursor로 다시 넣어요 ##### `items[]` - `post_id` (uuid) — 다른 콘텐츠 도구에 넣는 포스트 id예요 - `slug` (string) — 공개 URL의 숏코드예요 - `author_id` (uuid) — 작성자 account_id - `username` (string) — 작성자 사용자명 - `full_name` (string | null) — 표시 이름 - `profile_pic_url` (string | null) — 프로필 사진 URL - `follower_count` (integer | null) — 작성자 팔로워 수 - `region` (string | null) — 작성자 국가 코드 - `posted_at` (timestamp) — 게시 시각 (UTC) - `media_type` (string) — image, video, 또는 carousel - `play_count` (integer | null) — 영상 재생 수예요. 이미지면 null이에요 - `like_count` (integer | null) — 좋아요 - `text` (string | null) — 캡션 - `media_url` (string) — 미디어 URL - `thumbnail_url` (string) — 썸네일 URL - `score` (number | null) — 이 응답의 순위 점수예요 - `efficiency_score` (number | null) — 작성자 팔로워 수 대비 성과예요 - `est_percentile` (number | null) — 지역 백분위예요. 0–1이에요. - `total_views_3m` (integer | null) — 최근 3개월 작성자 조회 수예요 - `median_views_3m` (integer | null) — 최근 3개월 작성자 조회 수 중앙값이에요 - `recent_collab_brands` (string[]) — 작성자가 최근에 협업한 브랜드예요 - `item_type` (string) — 항목 종류예요. 이 피드에서는 post예요 - `content_source` (string | null) — 어느 피드에서 나왔는지예요 - `is_saved` (boolean | null) — SOLARI에 저장되어 있는지예요 - `updated_at` (timestamp | null) — 성과가 마지막으로 갱신된 시각이에요 #### 예시 ```console $ solari insight instagram content rising region=KR limit=2 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "items": [ { "item_type": "content", "post_id": "01a0495a-4e46-73d5-a111-a818248b665b", "author_id": "019e4a24-ee85-78e9-8763-602930999853", "username": "iiiwantkitty", "full_name": "주 령", "profile_pic_url": "https://dcr.bzine.co/instagram/users/iiiwantkitty/profile-picture", "follower_count": 706, "region": "KR", "posted_at": "2026-08-28T07:38:46Z", "media_type": "video", "play_count": 48092, "like_count": null, "score": 0.1292899036795201, "efficiency_score": 0.1292899036795201, "est_percentile": 84.68488691008565, "updated_at": "2026-09-03T05:20:45.496271Z", "media_url": "https://smr-images-b.bzine.co/users/019e4a24-ee85-78e9-8763-602930999853/posts/01a0495a-4e46-73d5-a111-a818248b665b/medias/01a0495a-4fc0-7352-92dd-a04afe898589.mp4", "thumbnail_url": "https://bzine.co/cdn-cgi/media/width=480,mode=frame,time=0ms/https://smr-images-a.bzine.co/users/019e4a24-ee85-78e9-8763-602930999853/posts/01a0495a-4e46-73d5-a111-a818248b665b/medias/01a0495a-4fc0-7352-92dd-a04afe898589 …", "slug": "Dck0Wj8xeq3", "text": "이정도가 아니면 뮤트라고 하지말자..⭐️ 뮤트톤 친구 입술에 빡빡 발라주고싶음\n\n컬러 보자마자 아 내꺼하자ㅡㅡ 하고 바로 겟한 것\n\n그레이애쉬,, 핑크 ,, 브라운 다 들어간 밑힌 컬러 이거 뮤트톤들이 바르면 진짜 분위기 미처버리는 립이걸랑 영상보다 실물이 더 뮤트!\n\n입술에 올리면 좀더 투명하게 올라가면서 회끼도는데 뉴트럴하면서도 팥앙금 같은 고런 깔 느낌\n안쪽에만 톡톡 발라서 쌩얼립으로도 …", "brand_match_score": null, "recent_collab_brands": [ "apieu_cosmetics", "… 8 more" ], "total_views_3m": 2389749, "median_views_3m": 5215, "is_saved": false, "content_source": null }, "… 1 more" ], "total_count": 291665, "region": "KR", "content_type": "rising", "next_cursor": "eyJhcyI6ICIyMDI2LTA5LTAzVDA1OjIwOjQ5LjA3Mjg3MiswMDowMCIsICJzYyI6ICIyMDI2LTA5LTAzVDA1OjE5OjQwLjc1NzUwOCswMDowMCIsICJzcCI6ICIwMWEwNDNmOC1hODdlLTdiMWItYjFiNi1iODliMTU2YjU0ODgifQ==" } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_insight_instagram_content_rising", "arguments": { "region": "KR", "limit": 2 } } ``` #### 주의사항 - 파라미터는 content trending과 같고, 브랜드에 맞춰 순위를 바꾸는 것도 같아요. #### 관련 도구 - [`solari_insight_instagram_content_trending`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-content-trending.md?lang=ko) - [`solari_insight_instagram_content_trend_clusters`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-content-trend-clusters.md?lang=ko) ### solari insight instagram content trend clusters > Instagram 트렌드를 주제별로 묶어 줘요. - **CLI**: `solari insight instagram content trend clusters` - **MCP 도구**: `solari_insight_instagram_content_trend_clusters` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 region으로 지정한 지역의 트렌드 요약이에요. 이름 붙은 주제, 크기, 움직임, 멤버 포스트가 와요. **언제 쓰나** — 포스트 나열이 아니라 지금 분위기를 보고 싶을 때 사용해요. **무엇이 나오나** — 이름 붙은 클러스터와 멤버 포스트 미리보기예요. #### 파라미터 - `region` (string, 선택, 기본값 "KR") — KR, JP 같은 국가 코드 - `since_days` (integer, 선택, 기본값 7, 1–90) — 며칠 전까지 볼지 - `limit` (integer, 선택, ≥ 1) — 클러스터를 몇 개까지 줄지 - `account_id` (string, 선택, uuid, pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$) — 순서를 맞출 브랜드 account_id - `username` (string, 선택, ≤ 64 chars) — 순서를 맞출 브랜드 사용자명. account_id가 있으면 무시돼요 - `brand_aware` (boolean, 선택, 기본값 true) — 브랜드 기준으로 순서를 맞출지. 브랜드를 넣으면 기본은 켜져요 #### 응답 ##### `Response` - `success` (boolean) — 요약이 만들어졌는지예요 - `trend_count` (integer) — 나온 클러스터 수예요 - `header_text` (string) — 요약 제목이에요 - `region / since_days` (string · integer) — 이번에 쓴 국가와 기간이에요 - `brand_aware` (boolean) — 브랜드 기준으로 순서를 맞춰 달라고 했는지예요 - `als_applied` (boolean) — 브랜드 기준 순서가 실제로 적용됐는지예요 - `trends` (object[]) — 클러스터예요 ##### `trends[]` - `cluster_id` (string) — 클러스터 id - `name` (string) — 클러스터 이름 - `bullets` (string[]) — 클러스터를 설명하는 문장이에요 - `count` (integer) — 멤버 포스트예요 - `count_delta` (integer) — 이전 기간 대비 멤버 포스트 수 변화예요 - `growth_pct` (number) — 성장률이에요. 퍼센트예요 - `avg_play_delta` (number) — 평균 재생 수 변화예요 - `distinct_creators` (integer) — 이 클러스터에 들어간 크리에이터예요 - `creator_delta` (integer) — 크리에이터 수 변화예요 - `is_new` (boolean) — 이번 기간에 처음 나온 클러스터인지예요 - `member_thumbnails` (object[]) — 멤버 포스트 썸네일 미리보기예요 #### 예시 ```console $ solari insight instagram content trend clusters region=KR since_days=7 limit=2 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "success": true, "trend_count": 2, "header_text": "최근 7일 인기 트렌드 2개 (브랜드 컨텍스트 없음)", "brand_aware": true, "als_applied": false, "region": "KR", "since_days": 7, "directive": null, "trends": [ { "cluster_id": "01a05857-7727-74d8-8da5-4e95981aca8d", "name": "GV90의 미래형 하이테크 기능", "bullets": [ "화면이 회전하거나 시트가 뒤로 돌아가는 등 물리적으로 변형되는 자동차 내부 장치들을 직접 시연함", "… 1 more" ], "count": 7, "count_delta": 0, "growth_pct": 0, "avg_play_delta": 0, "creator_delta": 0, "distinct_creators": 3, "is_new": false, "early_zone_creator_count": null, "early_zone_creator_ratio": null, "als_member_count": null, "mean_als_score": null, "annotation": null, "group": null, "member_thumbnails": [ { "post_id": "01a030df-c4b3-739c-9214-44b3b9463c7b", "thumbnail_url": "https://bzine.co/cdn-cgi/media/width=480,mode=frame,time=100ms/https://smr-images-c.bzine.co/users/018cb4c9-da89-7b02-8efd-53ccb65c26c9/posts/01a030df-c4b3-739c-9214-44b3b9463c7b/medias/01a030df-c7c3-788e-8775-1096728e07 …", "slug": "DcP6jgRMTRv", "username": "sol.bpd", "media_url": "https://smr-images-c.bzine.co/users/018cb4c9-da89-7b02-8efd-53ccb65c26c9/posts/01a030df-c4b3-739c-9214-44b3b9463c7b/medias/01a030df-c7c3-788e-8775-1096728e07f2.mp4", "media_type": "video", "play_count": 1947419, "posted_at": "2026-08-20T04:37:17+00:00" }, "… 3 more" ] }, "… 1 more" ], "insights": null, "insight_query": null } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_insight_instagram_content_trend_clusters", "arguments": { "region": "KR", "since_days": 7, "limit": 2 } } ``` #### 주의사항 - 최대 2분 정도 걸릴 수 있어요. - 브랜드를 넣으면 지정한 브랜드 기준으로 순서가 바뀌어요. 원래 순서를 유지하려면 brand_aware=false로 두세요. #### 관련 도구 - [`solari_insight_instagram_content_trending`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-content-trending.md?lang=ko) - [`solari_insight_instagram_content_rising`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-content-rising.md?lang=ko) ### solari insight instagram content aggregate > Instagram 포스트 개수를 셀 때 사용해요. - **CLI**: `solari insight instagram content aggregate` - **MCP 도구**: `solari_insight_instagram_content_aggregate` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 계정, 형식, 해시태그, 멘션, 키워드별로 포스트 수를 더해요. 숫자가 답인 질문에 쓰면 돼요. **언제 쓰나** — 규모, 평균, 어떤 해시태그가 앞서는지가 필요할 때 사용해요. 포스트 자체는 content search예요. **무엇이 나오나** — 그룹별 개수예요. 큰 그룹이 먼저 와요. 다른 지표는 요청한 것만 채워져요. #### 파라미터 - `region` (enum, 선택, 기본값 "KR") — KR, JP, US, TW 값: `KR`, `JP`, `US`, `TW`. - `group_by` (enum, 선택) — 개수를 어떻게 나눌지 값: `account`, `post_type`, `hashtag`, `mention`, `caption_keyword`, `transcription_keyword`. - `interval` (enum, 선택) — 이 달력 간격으로 시계열을 붙여요 값: `day`, `week`, `month`. - `metrics` (string[], 선택) — post_count 외에 받을 지표 값: `like_sum`, `like_avg`, `comment_sum`, `comment_avg`, `view_sum`, `view_avg`, `follower_avg`, `account_count`. - `query` (string, 선택) — 캡션과 대본에서 찾을 키워드 - `usernames` (string[], 선택) — 이 Instagram 사용자명만 - `hashtags` (string[], 선택) — 이 해시태그를 모두 가진 포스트만 - `mentions` (string[], 선택) — 이 사용자명을 모두 멘션한 포스트만 - `post_types` (string[], 선택) — 이 형식만 - `since` (string, 선택, pattern ^\d{4}-\d{2}-\d{2}$) — 이 UTC 날짜 이후 포스트만 (YYYY-MM-DD) - `until` (string, 선택, pattern ^\d{4}-\d{2}-\d{2}$) — 이 UTC 날짜 이전 포스트만 (YYYY-MM-DD) - `limit` (integer, 선택, ≥ 1) — 그룹을 몇 개까지 줄지 #### 응답 ##### `Response` - `region` (string) — 집계한 국가예요 - `since` (date) — 실제로 쓴 시작 날짜예요 - `until` (date | null) — 실제로 쓴 끝 날짜예요 - `group_by` (string | null) — 이번에 쓴 묶음 기준이에요 - `interval` (string | null) — 이번에 쓴 시간 간격이에요 - `total_posts` (integer) — 필터에 맞는 포스트예요 - `truncated` (boolean) — 그룹이 limit보다 많으면 true예요 - `buckets` (object[]) — 그룹이에요. 큰 그룹이 먼저 와요 ##### `buckets[]` - `key` (string) — 그룹 값이에요. group_by가 없으면 합계 하나예요 - `metrics.post_count` (integer) — 포스트 수예요. 항상 있어요 - `metrics.like_sum / like_avg` (number | null) — 좋아요 합계와 평균이에요. 요청한 경우에만 와요 - `metrics.comment_sum / comment_avg` (number | null) — 댓글 합계와 평균이에요. 요청한 경우에만 와요 - `metrics.view_sum / view_avg` (number | null) — 조회 합계와 평균이에요. 요청한 경우에만 와요 - `metrics.share_sum / collect_sum` (number | null) — TikTok 전용이에요. 여기선 항상 null이에요 - `metrics.follower_avg` (number | null) — 작성자 팔로워 수의 평균이에요 - `metrics.account_count` (integer | null) — 그룹 안의 서로 다른 계정 수예요 - `series` (object[] | null) — 기간별 내역이에요. interval을 넣은 경우에만 와요 #### 예시 ```console $ solari insight instagram content aggregate group_by=hashtag query="이니스프리" metrics='["like_avg","view_sum","account_count"]' limit=5 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "region": "KR", "since": "2026-03-04", "until": null, "group_by": "hashtag", "interval": null, "total_posts": 1647, "truncated": true, "buckets": [ { "key": "이니스프리", "metrics": { "post_count": 772, "like_sum": null, "like_avg": 320.7240932642487, "comment_sum": null, "comment_avg": null, "view_sum": 9400953, "view_avg": null, "share_sum": null, "share_avg": null, "collect_sum": null, "collect_avg": null, "follower_avg": null, "account_count": 587 }, "series": null }, { "key": "광고", "metrics": { "post_count": 548, "like_sum": null, "like_avg": 373.04021937842776, "comment_sum": null, "comment_avg": null, "view_sum": 5463711, "view_avg": null, "share_sum": null, "share_avg": null, "collect_sum": null, "collect_avg": null, "follower_avg": null, "account_count": 381 }, "series": null }, "… 3 more" ] } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_insight_instagram_content_aggregate", "arguments": { "group_by": "hashtag", "query": "이니스프리", "metrics": [ "like_avg", "view_sum", "account_count" ], "limit": 5 } } ``` #### 주의사항 - metrics에 이름을 넣지 않으면 post_count만 채워져요. - KR, JP, US, TW의 대략 최근 6개월이에요. 더 오래된 since는 잘려요. - interval만 넣으면 기간마다 한 칸이에요. group_by와 같이 쓰면 그룹마다 시계열이 붙어요. #### 관련 도구 - [`solari_catalog_instagram_content_search`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-content-search.md?lang=ko) - [`solari_insight_tiktok_content_aggregate`](https://finder-dev-pub.bzine.co/docs/tools/insight-tiktok-content-aggregate.md?lang=ko) ### solari catalog instagram tag search > 해시태그 또는 멘션이 달린 포스트를 찾을 때 사용해요. - **CLI**: `solari catalog instagram tag search` - **MCP 도구**: `solari_catalog_instagram_tag_search` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 추적된 전체 기간에서 해시태그 또는 멘션을 정확히 찾아요. 본문 어디든 있는 키워드면 content search를 쓰세요. **언제 쓰나** — 캠페인 해시태그가 얼마나 쓰였는지, 또는 멘션된 포스트가 필요할 때 사용해요. **무엇이 나오나** — 검색한 태그가 달린 포스트예요. 수집된 시각 최신순이에요. #### 파라미터 - `query` (string, 필수, ≤ 200 chars) — 해시태그(#ootd) 또는 멘션(@사용자명) - `limit` (integer, 선택, ≥ 1) — 한 페이지에 몇 개까지 - `cursor` (string, 선택) — 이전 페이지의 next_cursor #### 응답 ##### `Response` - `query` (string) — 실제로 쓴 태그예요. 앞의 #이나 @는 빼요 - `tag_kind` (string) — hashtag 또는 mention이에요. query를 어떻게 읽었는지예요 - `matched_tags` (integer) — 저장된 표기 중 맞은 개수예요. 0이면 이 태그를 한 번도 본 적이 없는 거예요 - `items` (object[]) — 찾은 포스트예요 - `found` (integer) — 내용까지 가져온 포스트예요 - `next_cursor` (string | null) — 다음 페이지를 받을 때 cursor로 다시 넣어요. 마지막 페이지면 null이에요 - `mirror_synced_at` (timestamp | null) — 태그 인덱스가 마지막으로 갱신된 시각이에요 (UTC) ##### `items[]` - `id` (uuid) — 포스트 id - `slug` (string) — Instagram 숏코드 - `text` (string) — 캡션 - `posted_at` (timestamp) — 게시 시각 (UTC) - `username / user_id / account_id` (string) — 작성 계정이에요 - `like_count / comment_count` (integer) — 참여 - `play_count` (integer | null) — 영상 재생 수 - `media_type` (string) — 포스트 형식 #### 예시 ```console $ solari catalog instagram tag search query=#ootd limit=3 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "query": "ootd", "tag_kind": "hashtag", "matched_tags": 1, "items": [ { "id": "01a06a16-781f-7578-822b-1c326e72f28d", "slug": "DW1jniHiVSU", "text": "御殿場是一個一天逛不完的地方 希望下次有時間可以慢慢逛 —— OOTD —— Pants:LAKOLE / Shirt:HARE #LYNN__OOTD #日常穿搭 #ootd …", "posted_at": "2026-04-07T16:16:21Z", "virtual_campaign": null, "username": "llling_yinnnnn", "user_id": "019dbc46-1a67-7ef5-b95a-2fb466790d04", "account_id": "019dbc46-1a67-7ef5-b95a-2fb466790d04", "profile_picture_url": null, "like_count": 3, "comment_count": 4, "media_type": "post", "play_count": null, "media": [] }, { "id": "01a06a16-552d-7099-ae0a-77e6b68de960", "slug": "DaS66VzJBPW", "text": "SEOUL OOTD — 這次搭配了四種完全不同風格 #ootd #lynn__ootd #穿搭販賣機 #韓國穿搭", "posted_at": "2026-07-02T15:33:13Z", "virtual_campaign": null, "username": "llling_yinnnnn", "user_id": "019dbc46-1a67-7ef5-b95a-2fb466790d04", "account_id": "019dbc46-1a67-7ef5-b95a-2fb466790d04", "profile_picture_url": null, "like_count": 32, "comment_count": 1, "media_type": "reel", "play_count": 888, "media": [] }, "… 1 more" ], "found": 3, "next_cursor": "01a06a16-552d-7099-ae0a-77e6b68de960", "mirror_synced_at": "2026-09-03T21:47:19Z" } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_catalog_instagram_tag_search", "arguments": { "query": "#ootd", "limit": 3 } } ``` #### 주의사항 - 순서는 수집된 시각이지 posted_at이 아니에요. 게시 시각 순이 필요하면 직접 정렬하세요. - 태그 인덱스는 하루에 한 번 갱신돼요. 기준 시각은 mirror_synced_at이에요. - 정확히 맞아야 해요. #ootd는 #ootdkorea와 안 맞아요. 멘션은 @를 붙이세요. #### 관련 도구 - [`solari_catalog_instagram_content_search`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-content-search.md?lang=ko) - [`solari_insight_instagram_content_aggregate`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-content-aggregate.md?lang=ko) ### solari catalog tiktok account search > 틱톡 사용자명이나 이름으로 TikTok 사용자를 찾아요. account_id를 확보하는 데 사용할 수 있어요. - **CLI**: `solari catalog tiktok account search` - **MCP 도구**: `solari_catalog_tiktok_account_search` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 사용자명이나 이름으로 틱톡 브랜드·크리에이터를 찾아요. Instagram account_id는 여기서 쓸 수 없어요. **언제 쓰나** — 틱톡 이름이나 사용자명만 있고, account_id는 아직 없을 때 사용해요. **무엇이 나오나** — 맞는 계정 목록이에요. 가장 가까운 결과가 맨 앞에 와요. #### 파라미터 - `query` (string, 필수) — 이름 또는 TikTok 사용자명 - `limit` (integer, 선택, ≥ 1) — 몇 명까지 - `region` (string, 선택, ≤ 8 chars) — KR, JP 같은 국가 코드. 비우면 전체를 찾아요 #### 응답 ##### `Response` - `found` (boolean) — 맞는 계정이 있는지예요 - `items` (object[]) — 맞는 계정이에요. 가장 가까운 결과가 맨 앞이에요 ##### `items[]` - `account_id` (uuid) — TikTok account_id예요. Instagram 것과는 서로 바꿔 쓸 수 없어요 - `username` (string) — TikTok 사용자명 - `nickname` (string) — 표시 이름 - `follower_count / video_count` (integer) — 팔로워 수와 영상 수예요 - `region` (string | null) — 국가 코드예요. 추적 중인 계정 중에도 없는 경우가 많아요 - `is_verified / is_private` (boolean) — 인증과 비공개 여부예요 - `is_commerce_user` (boolean) — 커머스 계정인지예요 - `commerce_user_category` (string | null) — 커머스 카테고리예요. Beauty 같은 값이에요 - `profile_url` (string) — 공개 프로필 URL #### 예시 ```console $ solari catalog tiktok account search query=innisfree limit=5 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "found": true, "items": [ { "account_id": "019b2137-f76e-7b33-9437-26044fa7b1ed", "username": "innisfree_official", "nickname": "Innisfreeofficial", "follower_count": 143800, "video_count": 767, "region": "KR", "is_verified": true, "is_private": false, "is_commerce_user": true, "commerce_user_category": "Beauty", "profile_url": "https://www.tiktok.com/@innisfree_official" } ] } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_catalog_tiktok_account_search", "arguments": { "query": "innisfree", "limit": 5 } } ``` #### 주의사항 - region을 넣으면 지정한 국가만 남고, region이 없는 계정은 빠져요. 특정 국가가 아니면 비워 두세요. - 아직 수집되지 않은 사용자명은 여기에 안 나와요. catalog tiktok account profile에 넣으면 바로 가져와요. #### 관련 도구 - [`solari_catalog_tiktok_account_profile`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-account-profile.md?lang=ko) - [`solari_catalog_tiktok_account_posts`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-account-posts.md?lang=ko) - [`solari_catalog_instagram_account_search`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-account-search.md?lang=ko) ### solari catalog tiktok account profile > TikTok 계정의 프로필과 최근 포스트예요. - **CLI**: `solari catalog tiktok account profile` - **MCP 도구**: `solari_catalog_tiktok_account_profile` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 TikTok 계정의 프로필과 최근 포스트 미리보기를 보여 줘요. **언제 쓰나** — 틱톡 계정 전체 그림이 필요할 때 사용해요. **무엇이 나오나** — 프로필, 최근 포스트, 그리고 추적 중인지예요. #### 파라미터 - `account_id` (string, 선택, uuid, pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$) — TikTok account_id 또는 username을 넣어요. - `username` (string, 선택, ≤ 64 chars) — TikTok 사용자명. account_id가 있으면 무시돼요 #### 응답 ##### `Response` - `account_id` (uuid) — TikTok account_id예요 - `username / nickname / bio` (string) — 사용자명, 표시 이름, Bio예요 - `bio_links` (string[]) — Bio에 있는 링크예요 - `follower_count / following_count` (integer) — 팔로워 수와 팔로잉 수예요 - `heart_count` (integer) — 계정 전체의 누적 좋아요예요 - `video_count` (integer) — 올린 영상 수예요 - `is_verified / is_private` (boolean) — 인증과 비공개 여부예요 - `is_commerce_user / commerce_user_category` (boolean · string) — 커머스 여부와 카테고리예요 - `region / language` (string | null) — 국가 코드와 언어 코드예요 - `avatar_url / profile_url` (string) — 프로필 사진과 공개 프로필 링크예요 - `tracked` (boolean) — 정기 수집 대상인지예요 - `sync_status` (string) — 수집 상태예요 - `synced_at` (timestamp) — 마지막 수집 시각이에요 - `recent_posts` (object[]) — 최근 포스트 미리보기예요 - `fetched_on_demand` (boolean) — 이번에 처음 가져온 계정이면 true예요. ##### `recent_posts[]` - `post_id` (uuid) — TikTok 포스트 id예요. Instagram 것과는 서로 바꿔 쓸 수 없어요 - `video_id` (string) — TikTok URL에 있는 공개 숫자 id예요 - `url` (string) — 공개 링크예요 - `account_id` (uuid) — 작성자 account_id - `username` (string) — 작성자 사용자명 - `post_type` (string) — video 또는 carousel - `posted_at` (timestamp) — 게시 시각 (UTC) - `caption` (string) — 캡션 - `duration_seconds` (integer) — 영상 길이 - `width / height` (integer) — 해상도 - `play_count` (integer) — 재생 수 - `like_count` (integer) — 좋아요 - `comment_count` (integer) — 댓글 수 - `share_count` (integer) — 공유 수 - `collect_count` (integer) — 저장 수 - `is_ad` (boolean) — TikTok 광고 표시예요 - `is_pinned` (boolean) — 프로필에 고정되어 있는지예요 - `aigc_label_type` (string | null) — AI 콘텐츠 라벨이에요. TikTok이 붙인 경우에만 와요 - `original_language_code` (string | null) — 원본 언어예요 - `cover_url` (string) — 커버 이미지 URL - `video_url` (string) — 영상 파일 URL - `images` (string[]) — 캐러셀 장이에요. 영상이면 비어 있어요 - `hashtags` (string[]) — 캡션에 있는 해시태그예요 - `mentions` (string[]) — 캡션에서 멘션된 사용자명이에요 - `transcript` (string | null) — 말한 대본이에요. include_transcript=true일 때만 와요 #### 예시 ```console $ solari catalog tiktok account profile username=innisfree_official ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "account_id": "019b2137-f76e-7b33-9437-26044fa7b1ed", "username": "innisfree_official", "nickname": "Innisfreeofficial", "bio": "NATURE MEETS KOREAN SKIN SCIENCE", "bio_links": [ "https://linktr.ee/innisfree_official" ], "follower_count": 143900, "following_count": 14, "heart_count": 2200000, "video_count": 767, "is_verified": true, "is_private": false, "is_commerce_user": true, "commerce_user_category": "Beauty", "region": "KR", "language": null, "avatar_url": "https://p16-common-sign.tiktokcdn-eu.com/tos-alisg-avt-0068/3f8e48dc4a284a8ead37e93175ebdb86~tplv-tiktokx-cropcenter:720:720.jpeg?dr=10399&refresh_token=04b90255&x-expires=1788541200&x-signature=Gd3gJu4HyBZPCr%2FqEevyDs6 …", "profile_url": "https://www.tiktok.com/@innisfree_official", "sync_status": "OK", "tracked": true, "synced_at": "2026-09-02T17:16:05.835000Z", "recent_posts": [ { "post_id": "01a0631e-f0df-7e9d-a09b-d84bc31d3834", "video_id": "7680375687139642645", "url": "https://www.tiktok.com/@innisfree_official/video/7680375687139642645", "account_id": "019b2137-f76e-7b33-9437-26044fa7b1ed", "username": "innisfree_official", "post_type": "video", "posted_at": "2026-09-02T12:00:00Z", "caption": "Deeply hydrated skin—NO OFF HOURS. 💚 wherever the day takes MINGYU—his hydration stays SUPERCHARGED ⚡️ Green Tea Ceramide Milk: Lightweight milky toner that won't clog your pores Green Tea Ceramide Mist: Touch-free, fa …", "duration_seconds": 23, "width": 1080, "height": 1920, "play_count": 493, "like_count": 37, "comment_count": 2, "share_count": 0, "collect_count": 3, "is_ad": false, "is_pinned": false, "aigc_label_type": null, "original_language_code": null, "cover_url": "https://smr-images-a.bzine.co/tiktok/users/019b2137-f76e-7b33-9437-26044fa7b1ed/posts/01a0631e-f0df-7e9d-a09b-d84bc31d3834/medias/cover.jpg", "video_url": "https://smr-images-a.bzine.co/tiktok/users/019b2137-f76e-7b33-9437-26044fa7b1ed/posts/01a0631e-f0df-7e9d-a09b-d84bc31d3834/medias/origin.mp4", "images": [], "hashtags": [], "mentions": [], "transcript": null }, "… 5 more" ], "fetched_on_demand": false } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_catalog_tiktok_account_profile", "arguments": { "username": "innisfree_official" } } ``` #### 주의사항 - 아직 수집되지 않은 사용자명이면 첫 요청에서 바로 가져와요(약 10–40초). 수집이 끝나기 전에는 최근 포스트만 있어요. - 그다음에 not-found가 나면 TikTok에 없는 사용자명이에요. #### 관련 도구 - [`solari_catalog_tiktok_account_posts`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-account-posts.md?lang=ko) - [`solari_catalog_tiktok_account_search`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-account-search.md?lang=ko) - [`solari_catalog_instagram_account_profile`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-account-profile.md?lang=ko) ### solari catalog tiktok account posts > TikTok 계정이 올린 포스트예요. - **CLI**: `solari catalog tiktok account posts` - **MCP 도구**: `solari_catalog_tiktok_account_posts` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 TikTok 계정의 포스트를 보여 줘요. 말한 내용이 필요할 때만 include_transcript를 켜 주세요. **언제 쓰나** — 프로필 미리보기보다 더 많은 포스트가 필요하거나, 기간·형식으로 나누고 싶을 때 사용해요. **무엇이 나오나** — 포스트 목록이에요. 요청하면 대본도 붙어요. #### 파라미터 - `account_id` (string, 선택, uuid, pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$) — TikTok account_id 또는 username을 넣어요. - `username` (string, 선택, ≤ 64 chars) — TikTok 사용자명. account_id가 있으면 무시돼요 - `limit` (integer, 선택, ≥ 1) — 한 페이지에 몇 개까지 - `offset` (integer, 선택, 기본값 0, ≥ 0) — 앞에서 몇 개를 건너뛸지 - `since` (string, 선택, pattern ^\d{4}-\d{2}-\d{2}$) — 이 UTC 날짜 이후 포스트만 (YYYY-MM-DD) - `until` (string, 선택, pattern ^\d{4}-\d{2}-\d{2}$) — 이 UTC 날짜 이전 포스트만 (YYYY-MM-DD) - `post_type` (enum, 선택) — video 또는 carousel로 좁혀요 값: `video`, `carousel`. - `include_transcript` (boolean, 선택, 기본값 false) — 말한 대본을 포함할지 #### 응답 ##### `Response` - `found` (boolean) — TikTok에 없는 사용자명이면 false예요. - `account_id / username` (string) — 찾은 계정이에요 - `total` (integer) — 필터에 맞는 포스트예요 - `has_more` (boolean) — 다음 페이지가 있는지예요 - `items` (object[]) — 포스트예요. 최신순이에요 - `fetched_on_demand` (boolean) — 아직 가장 최근 포스트만 있으면 true예요 ##### `items[]` - `post_id` (uuid) — TikTok 포스트 id예요. Instagram 것과는 서로 바꿔 쓸 수 없어요 - `video_id` (string) — TikTok URL에 있는 공개 숫자 id예요 - `url` (string) — 공개 링크예요 - `account_id` (uuid) — 작성자 account_id - `username` (string) — 작성자 사용자명 - `post_type` (string) — video 또는 carousel - `posted_at` (timestamp) — 게시 시각 (UTC) - `caption` (string) — 캡션 - `duration_seconds` (integer) — 영상 길이 - `width / height` (integer) — 해상도 - `play_count` (integer) — 재생 수 - `like_count` (integer) — 좋아요 - `comment_count` (integer) — 댓글 수 - `share_count` (integer) — 공유 수 - `collect_count` (integer) — 저장 수 - `is_ad` (boolean) — TikTok 광고 표시예요 - `is_pinned` (boolean) — 프로필에 고정되어 있는지예요 - `aigc_label_type` (string | null) — AI 콘텐츠 라벨이에요. TikTok이 붙인 경우에만 와요 - `original_language_code` (string | null) — 원본 언어예요 - `cover_url` (string) — 커버 이미지 URL - `video_url` (string) — 영상 파일 URL - `images` (string[]) — 캐러셀 장이에요. 영상이면 비어 있어요 - `hashtags` (string[]) — 캡션에 있는 해시태그예요 - `mentions` (string[]) — 캡션에서 멘션된 사용자명이에요 - `transcript` (string | null) — 말한 대본이에요. include_transcript=true일 때만 와요 #### 예시 ```console $ solari catalog tiktok account posts username=innisfree_official limit=2 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "found": true, "account_id": "019b2137-f76e-7b33-9437-26044fa7b1ed", "username": "innisfree_official", "total": 87, "has_more": true, "items": [ { "post_id": "01a0631e-f0df-7e9d-a09b-d84bc31d3834", "video_id": "7680375687139642645", "url": "https://www.tiktok.com/@innisfree_official/video/7680375687139642645", "account_id": "019b2137-f76e-7b33-9437-26044fa7b1ed", "username": "innisfree_official", "post_type": "video", "posted_at": "2026-09-02T12:00:00Z", "caption": "Deeply hydrated skin—NO OFF HOURS. 💚 wherever the day takes MINGYU—his hydration stays SUPERCHARGED ⚡️ Green Tea Ceramide Milk: Lightweight milky toner that won't clog your pores Green Tea Ceramide Mist: Touch-free, fa …", "duration_seconds": 23, "width": 1080, "height": 1920, "play_count": 493, "like_count": 37, "comment_count": 2, "share_count": 0, "collect_count": 3, "is_ad": false, "is_pinned": false, "aigc_label_type": null, "original_language_code": null, "cover_url": "https://smr-images-b.bzine.co/tiktok/users/019b2137-f76e-7b33-9437-26044fa7b1ed/posts/01a0631e-f0df-7e9d-a09b-d84bc31d3834/medias/cover.jpg", "video_url": "https://smr-images-a.bzine.co/tiktok/users/019b2137-f76e-7b33-9437-26044fa7b1ed/posts/01a0631e-f0df-7e9d-a09b-d84bc31d3834/medias/origin.mp4", "images": [], "hashtags": [], "mentions": [], "transcript": null }, "… 1 more" ], "fetched_on_demand": false } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_catalog_tiktok_account_posts", "arguments": { "username": "innisfree_official", "limit": 2 } } ``` #### 주의사항 - 대본이 길어서 include_transcript는 기본이 꺼져 있어요. - This reads the catalog only. If the username is missing, call solari fetch tiktok posts username=… then retry. #### 관련 도구 - [`solari_catalog_tiktok_account_profile`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-account-profile.md?lang=ko) - [`solari_catalog_tiktok_content_detail`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-content-detail.md?lang=ko) - [`solari_catalog_instagram_account_posts`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-account-posts.md?lang=ko) ### solari catalog tiktok content detail > TikTok 포스트를 불러와요. - **CLI**: `solari catalog tiktok content detail` - **MCP 도구**: `solari_catalog_tiktok_content_detail` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 post_id, video_id, 또는 공개 URL로 TikTok 포스트를 불러와요. **언제 쓰나** — 포스트가 필요할 때 사용해요. id가 많으면 content batch를 쓰세요. **무엇이 나오나** — 포스트예요. 대본이 있으면 같이 와요. #### 파라미터 - `post_id` (string, 선택, uuid, pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$) — post_id, video_id, url 중 하나를 넣어요. - `video_id` (string, 선택, pattern ^\d{15,20}$) — 공개된 TikTok 숫자 id - `url` (string, 선택, ≤ 512 chars) — 공개 TikTok 포스트 URL #### 응답 ##### `Response` - `item` (object | null) — 포스트예요. 없거나 비공개면 null이에요 - `fetched_on_demand` (boolean) — 이번에 처음 가져온 포스트면 true예요. ##### `item` - `post_id` (uuid) — TikTok 포스트 id예요. Instagram 것과는 서로 바꿔 쓸 수 없어요 - `video_id` (string) — TikTok URL에 있는 공개 숫자 id예요 - `url` (string) — 공개 링크예요 - `account_id` (uuid) — 작성자 account_id - `username` (string) — 작성자 사용자명 - `post_type` (string) — video 또는 carousel - `posted_at` (timestamp) — 게시 시각 (UTC) - `caption` (string) — 캡션 - `duration_seconds` (integer) — 영상 길이 - `width / height` (integer) — 해상도 - `play_count` (integer) — 재생 수 - `like_count` (integer) — 좋아요 - `comment_count` (integer) — 댓글 수 - `share_count` (integer) — 공유 수 - `collect_count` (integer) — 저장 수 - `is_ad` (boolean) — TikTok 광고 표시예요 - `is_pinned` (boolean) — 프로필에 고정되어 있는지예요 - `aigc_label_type` (string | null) — AI 콘텐츠 라벨이에요. TikTok이 붙인 경우에만 와요 - `original_language_code` (string | null) — 원본 언어예요 - `cover_url` (string) — 커버 이미지 URL - `video_url` (string) — 영상 파일 URL - `images` (string[]) — 캐러셀 장이에요. 영상이면 비어 있어요 - `hashtags` (string[]) — 캡션에 있는 해시태그예요 - `mentions` (string[]) — 캡션에서 멘션된 사용자명이에요 - `transcript` (string | null) — 말한 대본이에요. include_transcript=true일 때만 와요 #### 예시 ```console $ solari catalog tiktok content detail video_id=7680375687139642645 include_transcript=true ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "item": { "post_id": "01a0631e-f0df-7e9d-a09b-d84bc31d3834", "video_id": "7680375687139642645", "url": "https://www.tiktok.com/@innisfree_official/video/7680375687139642645", "account_id": "019b2137-f76e-7b33-9437-26044fa7b1ed", "username": "innisfree_official", "post_type": "video", "posted_at": "2026-09-02T12:00:00Z", "caption": "Deeply hydrated skin—NO OFF HOURS. 💚 wherever the day takes MINGYU—his hydration stays SUPERCHARGED ⚡️ Green Tea Ceramide Milk: Lightweight milky toner that won't clog your pores Green Tea Ceramide Mist: Touch-free, fa …", "duration_seconds": 23, "width": 1080, "height": 1920, "play_count": 493, "like_count": 37, "comment_count": 2, "share_count": 0, "collect_count": 3, "is_ad": false, "is_pinned": false, "aigc_label_type": null, "original_language_code": null, "cover_url": "https://smr-images-b.bzine.co/tiktok/users/019b2137-f76e-7b33-9437-26044fa7b1ed/posts/01a0631e-f0df-7e9d-a09b-d84bc31d3834/medias/cover.jpg", "video_url": "https://smr-images-c.bzine.co/tiktok/users/019b2137-f76e-7b33-9437-26044fa7b1ed/posts/01a0631e-f0df-7e9d-a09b-d84bc31d3834/medias/origin.mp4", "images": [], "hashtags": [], "mentions": [], "transcript": null }, "fetched_on_demand": false } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_catalog_tiktok_content_detail", "arguments": { "video_id": "7680375687139642645" } } ``` #### 주의사항 - vm.tiktok.com, vt.tiktok.com 짧은 링크도 돼요. - 아직 없는 video_id나 URL이면 첫 요청에서 바로 가져와요(약 10–40초) #### 관련 도구 - [`solari_catalog_tiktok_content_batch`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-content-batch.md?lang=ko) - [`solari_catalog_tiktok_account_posts`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-account-posts.md?lang=ko) ### solari catalog tiktok content batch > 여러 TikTok 포스트를 한 번에 불러와요. - **CLI**: `solari catalog tiktok content batch` - **MCP 도구**: `solari_catalog_tiktok_content_batch` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 틱톡 포스트 id 목록으로 캡션과 성과를 불러와요. 없는 id는 건너뛰어요. **언제 쓰나** — 검색이나 계정 포스트에서 받은 id를 한 번에 볼 때 사용해요. **무엇이 나오나** — 찾은 포스트만 나와요. #### 파라미터 - `post_ids` (uuid[], 필수, 1–100 items, uuid) — 불러올 TikTok 포스트 id. 최대 100개 - `sort` (enum, 선택, 기본값 "recent") — 최신순, 또는 참여 높은 순 값: `recent`, `engagement`. - `include_transcript` (boolean, 선택, 기본값 false) — 말한 대본을 포함할지 #### 응답 ##### `Response` - `requested` (integer) — 보낸 id 개수예요 - `found` (integer) — 찾은 개수예요 - `items` (object[]) — 찾은 포스트예요 ##### `items[]` - `post_id` (uuid) — TikTok 포스트 id예요. Instagram 것과는 서로 바꿔 쓸 수 없어요 - `video_id` (string) — TikTok URL에 있는 공개 숫자 id예요 - `url` (string) — 공개 링크예요 - `account_id` (uuid) — 작성자 account_id - `username` (string) — 작성자 사용자명 - `post_type` (string) — video 또는 carousel - `posted_at` (timestamp) — 게시 시각 (UTC) - `caption` (string) — 캡션 - `duration_seconds` (integer) — 영상 길이 - `width / height` (integer) — 해상도 - `play_count` (integer) — 재생 수 - `like_count` (integer) — 좋아요 - `comment_count` (integer) — 댓글 수 - `share_count` (integer) — 공유 수 - `collect_count` (integer) — 저장 수 - `is_ad` (boolean) — TikTok 광고 표시예요 - `is_pinned` (boolean) — 프로필에 고정되어 있는지예요 - `aigc_label_type` (string | null) — AI 콘텐츠 라벨이에요. TikTok이 붙인 경우에만 와요 - `original_language_code` (string | null) — 원본 언어예요 - `cover_url` (string) — 커버 이미지 URL - `video_url` (string) — 영상 파일 URL - `images` (string[]) — 캐러셀 장이에요. 영상이면 비어 있어요 - `hashtags` (string[]) — 캡션에 있는 해시태그예요 - `mentions` (string[]) — 캡션에서 멘션된 사용자명이에요 - `transcript` (string | null) — 말한 대본이에요. include_transcript=true일 때만 와요 #### 예시 ```console $ solari catalog tiktok content batch post_ids='["01a0631e-f0df-7e9d-a09b-d84bc31d3834"]' ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "requested": 1, "found": 1, "items": [ { "post_id": "01a0631e-f0df-7e9d-a09b-d84bc31d3834", "video_id": "7680375687139642645", "url": "https://www.tiktok.com/@innisfree_official/video/7680375687139642645", "account_id": "019b2137-f76e-7b33-9437-26044fa7b1ed", "username": "innisfree_official", "post_type": "video", "posted_at": "2026-09-02T12:00:00Z", "caption": "Deeply hydrated skin—NO OFF HOURS. 💚 wherever the day takes MINGYU—his hydration stays SUPERCHARGED ⚡️ Green Tea Ceramide Milk: Lightweight milky toner that won't clog your pores Green Tea Ceramide Mist: Touch-free, fa …", "duration_seconds": 23, "width": 1080, "height": 1920, "play_count": 493, "like_count": 37, "comment_count": 2, "share_count": 0, "collect_count": 3, "is_ad": false, "is_pinned": false, "aigc_label_type": null, "original_language_code": null, "cover_url": "https://smr-images-b.bzine.co/tiktok/users/019b2137-f76e-7b33-9437-26044fa7b1ed/posts/01a0631e-f0df-7e9d-a09b-d84bc31d3834/medias/cover.jpg", "video_url": "https://smr-images-b.bzine.co/tiktok/users/019b2137-f76e-7b33-9437-26044fa7b1ed/posts/01a0631e-f0df-7e9d-a09b-d84bc31d3834/medias/origin.mp4", "images": [], "hashtags": [], "mentions": [], "transcript": null } ] } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_catalog_tiktok_content_batch", "arguments": { "post_ids": [ "01a0631e-f0df-7e9d-a09b-d84bc31d3834" ] } } ``` #### 주의사항 - SOLARI 포스트 id만 받아요. 숫자 video id는 content detail의 video_id로 넣으세요. - TikTok 포스트 id와 Instagram 포스트 id는 서로 바꿔 쓸 수 없어요. #### 관련 도구 - [`solari_catalog_tiktok_content_detail`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-content-detail.md?lang=ko) - [`solari_catalog_tiktok_content_search`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-content-search.md?lang=ko) ### solari catalog tiktok content search > TikTok 캡션과 영상 대본을 검색할 때 사용해요. - **CLI**: `solari catalog tiktok content search` - **MCP 도구**: `solari_catalog_tiktok_content_search` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 KR, JP, US, TW에서 추적 중인 틱톡 포스트를 키워드로 찾아요. 대략 최근 6개월이에요. **언제 쓰나** — 어떤 주제의 틱톡 포스트, 또는 화면에서 말한 내용이 필요할 때 사용해요. **무엇이 나오나** — 관련 있는 순으로 포스트가 나와요. 맞는 문구는 하이라이트돼요. #### 파라미터 - `query` (string, 필수) — 찾을 단어 - `region` (enum, 선택, 기본값 "KR") — KR, JP, US, TW 값: `KR`, `JP`, `US`, `TW`. - `limit` (integer, 선택, ≥ 1) — 한 페이지에 몇 개까지 - `offset` (integer, 선택, 기본값 0, ≥ 0) — 앞에서 몇 개를 건너뛸지 - `since` (string, 선택, pattern ^\d{4}-\d{2}-\d{2}$) — 이 UTC 날짜 이후 포스트만 (YYYY-MM-DD) - `until` (string, 선택, pattern ^\d{4}-\d{2}-\d{2}$) — 이 UTC 날짜 이전 포스트만 (YYYY-MM-DD) #### 응답 ##### `Response` - `query / region` (string) — 이번에 쓴 query와 국가예요 - `total` (integer) — 맞는 개수예요. 10,000까지는 정확하고, 그다음엔 멈춰요 - `took_ms` (integer) — 검색에 걸린 시간이에요 - `items` (object[]) — 검색 결과예요. 점수 높은 순이에요 ##### `items[]` - `post_id / video_id / url` (string) — 포스트 id와 공개 링크예요 - `account_id / username` (string) — 작성 계정이에요 - `caption` (string) — 캡션 - `user_bio` (string) — 작성자 Bio - `transcription_text` (string | null) — 말한 대본이에요. 검색한 텍스트의 일부예요 - `transcription_language` (string | null) — 대본 언어 코드예요 - `post_type` (string) — video 또는 carousel - `posted_at` (timestamp) — 게시 시각 (UTC) - `duration_seconds` (integer) — 영상 길이 - `play_count / like_count / comment_count / share_count / collect_count` (integer) — 참여 - `follower_count` (integer) — 작성자 팔로워 수 - `is_ad` (boolean) — TikTok이 붙인 광고 표시예요 - `cover_url` (string) — 커버 이미지 - `score` (number) — 관련도 점수예요 - `highlight` (object) — 필드별 맞은 문구예요 #### 예시 ```console $ solari catalog tiktok content search query="올리브영 세일" limit=3 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "query": "올리브영 세일", "region": "KR", "total": 4041, "took_ms": 29, "items": [ { "post_id": "01a05c46-9a08-7e92-a40e-b1a039103118", "video_id": "7679484556189207815", "url": "https://www.tiktok.com/@flos_bonita/video/7679484556189207815", "account_id": "0196cb39-87a7-7be3-ac4a-4a80b7818a90", "username": "flos_bonita", "caption": "태닝한 산리오 키링이라니…☀️🥹💗 푸드올로지 X 산리오 콜라보 실물 너무 귀엽잖아!! 헬로키티·쿠로미·한교동·마이멜로디까지🎀 제품마다 다른 키링이라 산리오 덕후들 취향 제대로 저격💘 올영 세일 시작했으니 얼른 구경해봐요👀🛒 #푸드올로지 #태닝키티 #올리브영추천템 #올영세일", "user_bio": "화미 프로필 링크", "transcription_text": "살리오 덕후라면 절대 그냥 넘길 수 없는 영상 오늘부터 시작인 올리브영 세일과 함께 푸드올로지와 살리오 콜라보 나왔어요 이번 콜라보는 젤리 폼 앰플 젤리 3 종으로 피디아렌 앰플 젤리 글루타치원 씨 앰플 젤리 히알루론산 앰플 젤리까지 제품마다 귀여운 살리오 굿즈도 함께 만나 볼 수 있는데 헬로키티 크로미 한교동부터 마이 멜로디까지 저는 역시 헬로키티 더 쿠답게 키티 키링으로 폼구 최애 캐릭터 …", "transcription_language": "ko", "post_type": "video", "posted_at": "2026-08-29T16:02:22Z", "duration_seconds": 37, "play_count": 955, "like_count": 26, "comment_count": 0, "share_count": 0, "collect_count": 5, "follower_count": 1345, "is_ad": true, "cover_url": "https://p16-common-sign.tiktokcdn-eu.com/tos-alisg-p-0037/oEu4VAolaEBAAYjMAjBtiyCIAABiPp9TOCAME~tplv-tiktokx-origin.image?dr=10395&x-expires=1788426000&x-signature=FAP0C10M1M1gEwD4YMB03pYd0YA%3D&t=4d5b0474&ps=13740610&sh …", "score": 53.787056, "highlight": { "caption": [ "헬로키티·쿠로미·한교동·마이멜로디까지🎀 제품마다 다른 키링이라 산리오 덕후들 취향 제대로 저격💘 올 세일 시작했으니 얼른 구경해봐요👀🛒 #푸드올로지 #태닝키티 #올리브영추천템 #올영세일" ], "user_bio": [], "transcription_text": [ "살리오 덕후라면 절대 그냥 넘길 수 없는 영상 오늘부터 시작인 올리브 세일과 함께 푸드올로지와 살리오 콜라보 나왔어요 이번 콜라보는 젤리 폼 앰플 젤리 3 종으로 피디아렌 앰플 젤리 글루타치원 씨 앰플 젤리 히알루론산 앰플 젤리까지 제품마다 귀여운 살리오 굿즈도 함께", "… 1 more" ] } }, "… 2 more" ] } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_catalog_tiktok_content_search", "arguments": { "query": "올리브영 세일", "limit": 3 } } ``` #### 주의사항 - offset은 9,800이 끝이에요. 더 보려면 날짜를 좁혀서 다시 찾아요. - total은 10,000까지 세고 그다음엔 멈춰요. #### 관련 도구 - [`solari_insight_tiktok_content_aggregate`](https://finder-dev-pub.bzine.co/docs/tools/insight-tiktok-content-aggregate.md?lang=ko) - [`solari_catalog_tiktok_content_batch`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-content-batch.md?lang=ko) - [`solari_catalog_instagram_content_search`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-content-search.md?lang=ko) ### solari insight tiktok content aggregate > TikTok 포스트 개수를 셀 때 사용해요. - **CLI**: `solari insight tiktok content aggregate` - **MCP 도구**: `solari_insight_tiktok_content_aggregate` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 계정, 형식, 해시태그, 멘션, 키워드별로 틱톡 포스트 수를 더해요. **언제 쓰나** — 업로드 리듬, 해시태그 비중, 평균 재생이 필요할 때 사용해요. 포스트 자체는 content search예요. **무엇이 나오나** — 그룹별 개수예요. 큰 그룹이 먼저 와요. 다른 지표는 요청한 것만 채워져요. #### 파라미터 - `region` (enum, 선택, 기본값 "KR") — KR, JP, US, TW 값: `KR`, `JP`, `US`, `TW`. - `group_by` (enum, 선택) — 개수를 어떻게 나눌지 값: `account`, `post_type`, `hashtag`, `mention`, `caption_keyword`. - `interval` (enum, 선택) — 이 달력 간격으로 시계열을 붙여요 값: `day`, `week`, `month`. - `metrics` (string[], 선택) — post_count 외에 받을 지표 값: `like_sum`, `like_avg`, `comment_sum`, `comment_avg`, `view_sum`, `view_avg`, `share_sum`, `share_avg`, `collect_sum`, `collect_avg`, `follower_avg`, `account_count`. - `query` (string, 선택) — 캡션과 대본에서 찾을 키워드 - `usernames` (string[], 선택) — 이 TikTok 사용자명만 - `hashtags` (string[], 선택) — 이 해시태그를 모두 가진 포스트만 - `mentions` (string[], 선택) — 이 사용자명을 모두 멘션한 포스트만 - `post_types` (string[], 선택) — 이 형식만 값: `video`, `carousel`. - `since` (string, 선택, pattern ^\d{4}-\d{2}-\d{2}$) — 이 UTC 날짜 이후 포스트만 (YYYY-MM-DD) - `until` (string, 선택, pattern ^\d{4}-\d{2}-\d{2}$) — 이 UTC 날짜 이전 포스트만 (YYYY-MM-DD) - `limit` (integer, 선택, ≥ 1) — 그룹을 몇 개까지 줄지 #### 응답 ##### `Response` - `region` (string) — 집계한 국가예요 - `since` (date) — 실제로 쓴 시작 날짜예요 - `until` (date | null) — 실제로 쓴 끝 날짜예요 - `group_by` (string | null) — 이번에 쓴 묶음 기준이에요 - `interval` (string | null) — 이번에 쓴 시간 간격이에요 - `total_posts` (integer) — 필터에 맞는 포스트예요 - `truncated` (boolean) — 그룹이 limit보다 많으면 true예요 - `buckets` (object[]) — 그룹이에요. 큰 그룹이 먼저 와요 ##### `buckets[]` - `key` (string) — 그룹 값이에요. group_by가 없으면 합계 하나예요 - `metrics.post_count` (integer) — 포스트 수예요. 항상 있어요 - `metrics.like_sum / like_avg` (number | null) — 좋아요 합계와 평균이에요. 요청한 경우에만 와요 - `metrics.comment_sum / comment_avg` (number | null) — 댓글 합계와 평균이에요. 요청한 경우에만 와요 - `metrics.view_sum / view_avg` (number | null) — 재생 합계와 평균이에요. 요청한 경우에만 와요 - `metrics.share_sum / collect_sum` (number | null) — 공유와 저장 합계예요. 요청한 경우에만 와요 - `metrics.follower_avg` (number | null) — 작성자 팔로워 수의 평균이에요 - `metrics.account_count` (integer | null) — 그룹 안의 서로 다른 계정 수예요 - `series` (object[] | null) — 기간별 내역이에요. interval을 넣은 경우에만 와요 #### 예시 ```console $ solari insight tiktok content aggregate group_by=account query="이니스프리" metrics='["view_sum","like_avg","account_count"]' limit=5 ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "region": "KR", "since": "2026-03-04", "until": null, "group_by": "account", "interval": null, "total_posts": 20, "truncated": true, "buckets": [ { "key": "merryview_", "metrics": { "post_count": 2, "like_sum": null, "like_avg": 2378.5, "comment_sum": null, "comment_avg": null, "view_sum": 179504, "view_avg": null, "share_sum": null, "share_avg": null, "collect_sum": null, "collect_avg": null, "follower_avg": null, "account_count": 1 }, "series": null }, { "key": "_kimdayun_", "metrics": { "post_count": 1, "like_sum": null, "like_avg": 1829, "comment_sum": null, "comment_avg": null, "view_sum": 102000, "view_avg": null, "share_sum": null, "share_avg": null, "collect_sum": null, "collect_avg": null, "follower_avg": null, "account_count": 1 }, "series": null }, "… 3 more" ] } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_insight_tiktok_content_aggregate", "arguments": { "group_by": "account", "query": "이니스프리", "metrics": [ "view_sum", "like_avg", "account_count" ], "limit": 5 } } ``` #### 주의사항 - view_*는 재생 수예요. share_*와 collect_*는 Instagram과 달리 값이 채워져요. - KR, JP, US, TW의 대략 최근 6개월이에요. 더 오래된 since는 잘려요. #### 관련 도구 - [`solari_catalog_tiktok_content_search`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-content-search.md?lang=ko) - [`solari_insight_instagram_content_aggregate`](https://finder-dev-pub.bzine.co/docs/tools/insight-instagram-content-aggregate.md?lang=ko) ### solari fetch instagram account > Ingest one Instagram handle into the catalog. - **CLI**: `solari fetch instagram account` - **MCP 도구**: `solari_fetch_instagram_account` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 Add one Instagram account to the SOLARI catalog by exact username. This is not a search. If it is already stored, nothing is scraped. **언제 쓰나** — When catalog search does not know an exact handle you already have. **무엇이 나오나** — Whether it was ingested, the account_id, and the catalog command to read it. #### 파라미터 - `username` (string, 필수, ≤ 64 chars) — Instagram username. #### 응답 ##### `Response` - `ingested` (boolean) — true if this call collected it live. - `already_tracked` (boolean) — true if it was already in the catalog. - `fetched_on_demand` (boolean) — Same as ingested. - `account_id` (uuid) — The ingested account. - `username` (string) — Resolved handle. - `note` (string) — What to expect next. - `next` (string) — Catalog command to read the result. #### 예시 ```console $ solari fetch instagram account username=innisfreeofficial ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "ingested": false, "already_tracked": true, "fetched_on_demand": false, "account_id": "018cabce-14cc-7544-8890-7811ec33ef74", "username": "innisfreeofficial", "note": "Already in the SOLARI catalog. Nothing was scraped.", "next": "solari catalog instagram account profile username=innisfreeofficial" } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_fetch_instagram_account", "arguments": { "username": "innisfreeofficial" } } ``` #### 주의사항 - Do not use this to search a name. Use catalog account search first. - A first-time ingest can take several seconds. Metrics and collaborations stay empty until the crawl finishes. #### 관련 도구 - [`solari_catalog_instagram_account_search`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-account-search.md?lang=ko) - [`solari_catalog_instagram_account_profile`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-account-profile.md?lang=ko) - [`solari_fetch_instagram_posts`](https://finder-dev-pub.bzine.co/docs/tools/fetch-instagram-posts.md?lang=ko) ### solari fetch instagram posts > Collect one Instagram account's posts into the catalog. - **CLI**: `solari fetch instagram posts` - **MCP 도구**: `solari_fetch_instagram_posts` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 Collect posts for one Instagram account into the SOLARI catalog by exact username. This is not a post listing. If the handle is already stored, nothing is scraped. **언제 쓰나** — When catalog posts does not know an exact handle you already have. **무엇이 나오나** — Whether it was ingested, how many posts came back, and the catalog command to read them. #### 파라미터 - `username` (string, 필수, ≤ 64 chars) — Instagram username. #### 응답 ##### `Response` - `ingested` (boolean) — true if this call collected it live. - `already_tracked` (boolean) — true if it was already in the catalog. - `fetched_on_demand` (boolean) — Same as ingested. - `found` (boolean) — false if the handle could not be collected. - `account_id` (uuid) — The ingested account. - `username` (string) — Resolved handle. - `total` (integer) — Posts available so far. - `note` (string) — What to expect next. - `next` (string) — Catalog command to read the result. #### 예시 ```console $ solari fetch instagram posts username=innisfreeofficial ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "ingested": false, "already_tracked": true, "fetched_on_demand": false, "found": true, "account_id": "018cabce-14cc-7544-8890-7811ec33ef74", "username": "innisfreeofficial", "total": 12, "note": "Already in the SOLARI catalog. Nothing was scraped.", "next": "solari catalog instagram account posts username=innisfreeofficial" } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_fetch_instagram_posts", "arguments": { "username": "innisfreeofficial" } } ``` #### 주의사항 - Do not use this to list stored posts. Use catalog instagram account posts for that. - A first-time ingest can take several seconds. Only recent posts exist until the crawl finishes. #### 관련 도구 - [`solari_fetch_instagram_account`](https://finder-dev-pub.bzine.co/docs/tools/fetch-instagram-account.md?lang=ko) - [`solari_catalog_instagram_account_posts`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-account-posts.md?lang=ko) - [`solari_catalog_instagram_account_search`](https://finder-dev-pub.bzine.co/docs/tools/catalog-instagram-account-search.md?lang=ko) ### solari fetch tiktok account > Ingest one TikTok handle into the catalog. - **CLI**: `solari fetch tiktok account` - **MCP 도구**: `solari_fetch_tiktok_account` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 Add one TikTok account to the SOLARI catalog by exact username. This is not a search. If it is already stored, nothing is scraped. **언제 쓰나** — When catalog search does not know an exact handle you already have. **무엇이 나오나** — Whether it was ingested, the account_id, and the catalog command to read it. #### 파라미터 - `username` (string, 필수, ≤ 64 chars) — TikTok username. #### 응답 ##### `Response` - `ingested` (boolean) — true if this call collected it live. - `already_tracked` (boolean) — true if it was already in the catalog. - `fetched_on_demand` (boolean) — Same as ingested. - `account_id` (uuid) — The ingested account. - `username` (string) — Resolved handle. - `note` (string) — What to expect next. - `next` (string) — Catalog command to read the result. #### 예시 ```console $ solari fetch tiktok account username=innisfree_official ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "ingested": false, "already_tracked": true, "fetched_on_demand": false, "account_id": "01a0631e-f0df-7e9d-a09b-d84bc31d3834", "username": "innisfree_official", "note": "Already in the SOLARI catalog. Nothing was scraped.", "next": "solari catalog tiktok account profile username=innisfree_official" } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_fetch_tiktok_account", "arguments": { "username": "innisfree_official" } } ``` #### 주의사항 - Do not use this to search a name. Use catalog account search first. - A first-time ingest can take 10 to 40 seconds. Only recent posts exist until the crawl finishes. #### 관련 도구 - [`solari_catalog_tiktok_account_search`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-account-search.md?lang=ko) - [`solari_catalog_tiktok_account_profile`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-account-profile.md?lang=ko) - [`solari_fetch_tiktok_posts`](https://finder-dev-pub.bzine.co/docs/tools/fetch-tiktok-posts.md?lang=ko) ### solari fetch tiktok posts > Collect one TikTok account's posts into the catalog. - **CLI**: `solari fetch tiktok posts` - **MCP 도구**: `solari_fetch_tiktok_posts` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 Collect posts for one TikTok account into the SOLARI catalog by exact username. This is not a post listing. If the handle is already stored, nothing is scraped. **언제 쓰나** — When catalog posts does not know an exact handle you already have. **무엇이 나오나** — Whether it was ingested, how many posts came back, and the catalog command to read them. #### 파라미터 - `username` (string, 필수, ≤ 64 chars) — TikTok username. #### 응답 ##### `Response` - `ingested` (boolean) — true if this call collected it live. - `already_tracked` (boolean) — true if it was already in the catalog. - `fetched_on_demand` (boolean) — Same as ingested. - `found` (boolean) — false if the handle could not be collected. - `account_id` (uuid) — The ingested account. - `username` (string) — Resolved handle. - `total` (integer) — Posts available so far. - `note` (string) — What to expect next. - `next` (string) — Catalog command to read the result. #### 예시 ```console $ solari fetch tiktok posts username=innisfree_official ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "ingested": false, "already_tracked": true, "fetched_on_demand": false, "found": true, "account_id": "01a0631e-f0df-7e9d-a09b-d84bc31d3834", "username": "innisfree_official", "total": 12, "note": "Already in the SOLARI catalog. Nothing was scraped.", "next": "solari catalog tiktok account posts username=innisfree_official" } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_fetch_tiktok_posts", "arguments": { "username": "innisfree_official" } } ``` #### 주의사항 - Do not use this to list stored posts. Use catalog tiktok account posts for that. - A first-time ingest can take 10 to 40 seconds. Only recent posts exist until the crawl finishes. #### 관련 도구 - [`solari_fetch_tiktok_account`](https://finder-dev-pub.bzine.co/docs/tools/fetch-tiktok-account.md?lang=ko) - [`solari_catalog_tiktok_account_posts`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-account-posts.md?lang=ko) - [`solari_catalog_tiktok_account_search`](https://finder-dev-pub.bzine.co/docs/tools/catalog-tiktok-account-search.md?lang=ko)