# SOLARI > SOLARI CLI와 MCP — 터미널에서 쓰는 크리에이터·브랜드 인텔리전스. ## 개요 SOLARI CLI·MCP를 통해, SOLARI가 확보한 Instagram, TikTok, Threads 등의 데이터를 원하는 곳에서 자유자재로 활용할 수 있어요. catalog는 이미 모아 둔 계정·포스트를 찾고, insight는 우리가 만든 순위·유사·광고·트렌드를 주고, fetch는 플랫폼에서 바로 가져와요. 핸들 하나를 계정이나 포스트로 카탈로그에 넣거나, Instagram 해시태그의 포스트를 모아 와요. ```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 ``` 게시물마다 assets가 들어 있어요. 미디어 파일이 순서대로 오고, 각각의 asset_url은 그대로 내려받을 수 있는 링크예요. --json과 --ndjson은 항상 응답 전체를 돌려주기 때문에 행이나 링크가 빠지지 않아요. ```console $ solari catalog instagram account posts username=innisfreeofficial limit=200 --ndjson \ | jq -r '.assets[].asset_url | select(.)' > urls.txt $ aria2c -i urls.txt -d media -j 8 ``` ## 에이전트 피드백 에이전트가 SOLARI만으로 일을 끝낼 수 없으면, 묻지 않고 스스로 SOLARI 팀에 알려요. 데이터가 없을 때, 결과가 너무 적을 때, 필요한 기능이 없을 때, 값이 틀려 보일 때, 도구가 계속 실패할 때에 해당해요. ```console $ solari feedback "brand ad posts returned 3 rows for a 24 month window" \ category=insufficient_results tool_name=solari_insight_instagram_brand_ad_posts \ details='{"months":24,"returned":3}' ``` 개인정보는 빼고 보내요. 이메일, 전화번호, 일반인의 이름, 키 같은 것들이에요. 공개된 계정명, 도구 이름, 파라미터, 건수가 도움이 돼요. SOLARI는 저장하기 전에 이메일, 전화번호, 키, 토큰을 한 번 더 지우고, 에이전트는 피드백을 보냈다고 한 줄로 알려 줘요. ## 설정 설정은 ~/.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 ``` 설치 스크립트가 이 컴퓨터에서 찾은 에이전트(Claude Code, Codex, Grok Build, Antigravity CLI, OpenCode)에 CLI를 바로 등록해요. solari init 은 그 단계를 다시 돌리고, solari init --remove 로 되돌릴 수 있어요. ```bash solari init # checkbox of every CLI (all on; space toggles, enter installs) solari init --detected # no checkbox; only the agents already on this machine 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://pub.brandazine.ai/docs/claude-desktop-settings.webp) _Settings → Customize_ Connectors 로 가서 Add 를 누르고 창을 채워요. 목록에 표시할 이름과 위의 주소예요. ![Claude Desktop의 Add custom connector 창. 이름과 SOLARI MCP 주소가 채워져 있어요.](https://pub.brandazine.ai/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는 플랫폼에서 바로 가져오는 구멍이에요(핸들 하나를 계정·포스트로, 또는 Instagram 해시태그의 포스트). 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://pub.brandazine.ai/docs/tools/catalog-instagram-account-profile.md?lang=ko) - [`solari_catalog_instagram_account_posts`](https://pub.brandazine.ai/docs/tools/catalog-instagram-account-posts.md?lang=ko) - [`solari_catalog_tiktok_account_search`](https://pub.brandazine.ai/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://pub.brandazine.ai/docs/tools/catalog-instagram-account-search.md?lang=ko) - [`solari_insight_instagram_brand_top_collaborators`](https://pub.brandazine.ai/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://pub.brandazine.ai/docs/tools/insight-instagram-brand-ad-stats.md?lang=ko) - [`solari_catalog_instagram_content_batch`](https://pub.brandazine.ai/docs/tools/catalog-instagram-content-batch.md?lang=ko) - [`solari_insight_instagram_brand_ad_posts`](https://pub.brandazine.ai/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://pub.brandazine.ai/docs/tools/insight-instagram-brand-ad-posts.md?lang=ko) - [`solari_insight_instagram_brand_overview`](https://pub.brandazine.ai/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) — 캠페인 묶음이에요. 잡힌 경우에만 와요 - `assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 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://pub.brandazine.ai/docs/tools/insight-instagram-brand-ad-stats.md?lang=ko) - [`solari_insight_instagram_account_ad_posts`](https://pub.brandazine.ai/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://pub.brandazine.ai/docs/tools/insight-instagram-brand-collaborator-posts.md?lang=ko) - [`solari_insight_instagram_account_collabs`](https://pub.brandazine.ai/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) — 평균 참여예요. 계산됐을 때만 와요 - `posts[].assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `posts[].assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 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://pub.brandazine.ai/docs/tools/insight-instagram-brand-top-collaborators.md?lang=ko) - [`solari_insight_instagram_brand_overview`](https://pub.brandazine.ai/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) — 성과가 마지막으로 갱신된 시각이에요 - `assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 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://pub.brandazine.ai/docs/tools/insight-instagram-brand-ad-posts.md?lang=ko) - [`solari_catalog_instagram_content_search`](https://pub.brandazine.ai/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://pub.brandazine.ai/docs/tools/catalog-instagram-account-posts.md?lang=ko) - [`solari_insight_instagram_account_collabs`](https://pub.brandazine.ai/docs/tools/insight-instagram-account-collabs.md?lang=ko) - [`solari_catalog_tiktok_account_profile`](https://pub.brandazine.ai/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) — 썸네일 - `assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 null이에요 #### 예시 ```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://pub.brandazine.ai/docs/tools/catalog-instagram-account-profile.md?lang=ko) - [`solari_catalog_instagram_content_detail`](https://pub.brandazine.ai/docs/tools/catalog-instagram-content-detail.md?lang=ko) - [`solari_catalog_tiktok_account_posts`](https://pub.brandazine.ai/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://pub.brandazine.ai/docs/tools/insight-instagram-account-ad-posts.md?lang=ko) - [`solari_insight_instagram_brand_top_collaborators`](https://pub.brandazine.ai/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) — 이 줄이 가리키는 브랜드예요 - `assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 null이에요 #### 예시 ```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://pub.brandazine.ai/docs/tools/insight-instagram-account-collabs.md?lang=ko) - [`solari_insight_instagram_brand_ad_posts`](https://pub.brandazine.ai/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) — 성과가 마지막으로 갱신된 시각이에요 - `assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 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://pub.brandazine.ai/docs/tools/catalog-instagram-content-batch.md?lang=ko) - [`solari_catalog_instagram_account_posts`](https://pub.brandazine.ai/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) — 포스트 형식 - `assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 null이에요 #### 예시 ```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://pub.brandazine.ai/docs/tools/catalog-instagram-content-detail.md?lang=ko) - [`solari_insight_instagram_brand_overview`](https://pub.brandazine.ai/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) — 영상 포스트인지예요 - `assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 null이에요 #### 예시 ```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://pub.brandazine.ai/docs/tools/insight-instagram-content-aggregate.md?lang=ko) - [`solari_catalog_instagram_content_batch`](https://pub.brandazine.ai/docs/tools/catalog-instagram-content-batch.md?lang=ko) - [`solari_catalog_tiktok_content_search`](https://pub.brandazine.ai/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) — 성과가 마지막으로 갱신된 시각이에요 - `assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 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://pub.brandazine.ai/docs/tools/insight-instagram-content-rising.md?lang=ko) - [`solari_insight_instagram_content_trend_clusters`](https://pub.brandazine.ai/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) — 성과가 마지막으로 갱신된 시각이에요 - `assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 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://pub.brandazine.ai/docs/tools/insight-instagram-content-trending.md?lang=ko) - [`solari_insight_instagram_content_trend_clusters`](https://pub.brandazine.ai/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://pub.brandazine.ai/docs/tools/insight-instagram-content-trending.md?lang=ko) - [`solari_insight_instagram_content_rising`](https://pub.brandazine.ai/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://pub.brandazine.ai/docs/tools/catalog-instagram-content-search.md?lang=ko) - [`solari_insight_tiktok_content_aggregate`](https://pub.brandazine.ai/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) — 포스트 형식 - `assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 null이에요 #### 예시 ```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://pub.brandazine.ai/docs/tools/catalog-instagram-content-search.md?lang=ko) - [`solari_insight_instagram_content_aggregate`](https://pub.brandazine.ai/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://pub.brandazine.ai/docs/tools/catalog-tiktok-account-profile.md?lang=ko) - [`solari_catalog_tiktok_account_posts`](https://pub.brandazine.ai/docs/tools/catalog-tiktok-account-posts.md?lang=ko) - [`solari_catalog_instagram_account_search`](https://pub.brandazine.ai/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일 때만 와요 - `assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 null이에요 #### 예시 ```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://pub.brandazine.ai/docs/tools/catalog-tiktok-account-posts.md?lang=ko) - [`solari_catalog_tiktok_account_search`](https://pub.brandazine.ai/docs/tools/catalog-tiktok-account-search.md?lang=ko) - [`solari_catalog_instagram_account_profile`](https://pub.brandazine.ai/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일 때만 와요 - `assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 null이에요 #### 예시 ```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://pub.brandazine.ai/docs/tools/catalog-tiktok-account-profile.md?lang=ko) - [`solari_catalog_tiktok_content_detail`](https://pub.brandazine.ai/docs/tools/catalog-tiktok-content-detail.md?lang=ko) - [`solari_catalog_instagram_account_posts`](https://pub.brandazine.ai/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일 때만 와요 - `assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 null이에요 #### 예시 ```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://pub.brandazine.ai/docs/tools/catalog-tiktok-content-batch.md?lang=ko) - [`solari_catalog_tiktok_account_posts`](https://pub.brandazine.ai/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일 때만 와요 - `assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 null이에요 #### 예시 ```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://pub.brandazine.ai/docs/tools/catalog-tiktok-content-detail.md?lang=ko) - [`solari_catalog_tiktok_content_search`](https://pub.brandazine.ai/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) — 필드별 맞은 문구예요 - `assets` (object[]) — 게시물의 미디어 파일이에요. 순서대로 오고, 각각 asset_url, media_type, video_duration이 있어요 - `assets[].asset_url` (string | null) — 원본 크기 이미지나 영상을 바로 받을 수 있는 링크예요. 저장된 파일이 없으면 null이에요 #### 예시 ```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://pub.brandazine.ai/docs/tools/insight-tiktok-content-aggregate.md?lang=ko) - [`solari_catalog_tiktok_content_batch`](https://pub.brandazine.ai/docs/tools/catalog-tiktok-content-batch.md?lang=ko) - [`solari_catalog_instagram_content_search`](https://pub.brandazine.ai/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://pub.brandazine.ai/docs/tools/catalog-tiktok-content-search.md?lang=ko) - [`solari_insight_instagram_content_aggregate`](https://pub.brandazine.ai/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://pub.brandazine.ai/docs/tools/catalog-instagram-account-search.md?lang=ko) - [`solari_catalog_instagram_account_profile`](https://pub.brandazine.ai/docs/tools/catalog-instagram-account-profile.md?lang=ko) - [`solari_fetch_instagram_posts`](https://pub.brandazine.ai/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://pub.brandazine.ai/docs/tools/fetch-instagram-account.md?lang=ko) - [`solari_catalog_instagram_account_posts`](https://pub.brandazine.ai/docs/tools/catalog-instagram-account-posts.md?lang=ko) - [`solari_catalog_instagram_account_search`](https://pub.brandazine.ai/docs/tools/catalog-instagram-account-search.md?lang=ko) ### solari fetch instagram account search > Find accounts on Instagram by name, live. - **CLI**: `solari fetch instagram account search` - **MCP 도구**: `solari_fetch_instagram_account_search` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 Ask Instagram itself for accounts matching a name or handle fragment. Catalog account search only knows tracked accounts; this finds the rest and tells you which ones are already tracked. **언제 쓰나** — When catalog account search returns nothing for a name, or you need the exact handle before ingesting it. **무엇이 나오나** — Up to 50 accounts in Instagram's order, with account_id on the ones already in the catalog. #### 파라미터 - `query` (string, 필수, ≤ 100 chars) — Name or handle fragment, with or without @. #### 응답 ##### `Response` - `query` (string) — The text the lookup ran on, without @. - `items` (object[]) — Matching accounts, Instagram's order. - `found` (integer) — Accounts returned. - `tracked` (integer) — How many carry an account_id. ##### `items[]` - `username` (string) — Handle, lowercased. - `full_name` (string | null) — Display name. - `is_verified` (boolean) — Verified badge. - `is_private` (boolean) — Private account. - `profile_picture_url` (string | null) — Profile picture URL. - `account_id` (uuid | null) — SOLARI account id if already tracked; null means ingest it with fetch instagram account first. #### 예시 ```console $ solari fetch instagram account search query=innisfree ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "query": "innisfree", "items": [ { "username": "innisfreeofficial", "full_name": "innisfree official", "is_verified": true, "is_private": false, "profile_picture_url": "https://scontent.cdninstagram.com/v/t51.2885-19/example.jpg", "account_id": "018cabce-14cc-7544-8890-7811ec33ef74" }, { "username": "innisfree_jp", "full_name": "innisfree Japan", "is_verified": false, "is_private": false, "profile_picture_url": null, "account_id": null } ], "found": 2, "tracked": 1 } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_fetch_instagram_account_search", "arguments": { "query": "innisfree" } } ``` #### 주의사항 - Nothing is stored. To bring an untracked hit into the catalog, run fetch instagram account with its username. - Order and ranking are Instagram's, so the official account is not always first: check is_verified. - No follower counts here; read them with catalog account profile once the account is tracked. #### 관련 도구 - [`solari_catalog_instagram_account_search`](https://pub.brandazine.ai/docs/tools/catalog-instagram-account-search.md?lang=ko) - [`solari_fetch_instagram_account`](https://pub.brandazine.ai/docs/tools/fetch-instagram-account.md?lang=ko) - [`solari_catalog_instagram_account_profile`](https://pub.brandazine.ai/docs/tools/catalog-instagram-account-profile.md?lang=ko) ### solari fetch instagram hashtag posts > Collect a live page of a hashtag's posts. - **CLI**: `solari fetch instagram hashtag posts` - **MCP 도구**: `solari_fetch_instagram_hashtag_posts` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 Collect one live page of an Instagram hashtag feed, store the posts, and get them back in feed order. Every call goes out to Instagram, so read catalog tag search first. **언제 쓰나** — When a hashtag is missing or stale in catalog tag search, or you need its top posts or reels right now. **무엇이 나오나** — The posts of that page, already stored, and a cursor for the next page. #### 파라미터 - `hashtag` (string, 필수, ≤ 150 chars) — Hashtag, with or without #. - `tab` (enum, 선택) — recent, top, or clips (reels). 값: `recent`, `top`, `clips`. - `cursor` (string, 선택, ≤ 8192 chars) — next_cursor from the previous page. #### 응답 ##### `Response` - `ingested` (boolean) — true if this call stored at least one post. - `fetched_on_demand` (boolean) — Always true: every call collects live. - `hashtag` (string) — The hashtag the fetch ran on, without #. - `tab` (string) — Feed the page came from. - `is_hidden` (boolean) — true if Instagram returns no feed for this hashtag: hidden, restricted, or nonexistent. items is empty then. - `hidden_reason` (string | null) — Instagram's label for a hidden hashtag. - `found` (integer) — Posts in items. - `fetched_count` (integer) — Posts Instagram returned for this page. Higher than found when some could not be stored. - `items` (object[]) — The posts of this page, in feed order. - `next_cursor` (string | null) — Pass back as cursor for the next page. null when the feed ends. - `note` (string) — What to expect next. - `next` (string) — Catalog command that reads the same tag later. ##### `items[]` - `id` (uuid) — Post id. - `slug` (string) — Instagram shortcode. - `text` (string) — Caption. - `posted_at` (timestamp) — Published at (UTC). - `username / user_id / account_id` (string) — Authoring account. - `like_count / comment_count` (integer) — Engagement. - `play_count` (integer | null) — Video plays. - `media_type` (string) — Post format. - `assets` (object[]) — Media files in order. Each has asset_url, media_type, and video_duration. - `assets[].asset_url` (string | null) — Direct download link to the full-size image or video. Null when no file is stored yet. #### 예시 ```console $ solari fetch instagram hashtag posts hashtag=ootd tab=top ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "ingested": true, "fetched_on_demand": true, "hashtag": "ootd", "tab": "top", "is_hidden": false, "hidden_reason": null, "found": 1, "fetched_count": 1, "items": [ { "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": [] } ], "next_cursor": "eyJwIjoxLCJtIjoiUVZGRC4uLiJ9", "note": "These posts were collected live and are stored now. solari_catalog_instagram_tag_search lists them after its next daily refresh.", "next": "solari catalog instagram tag search query=#ootd" } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_fetch_instagram_hashtag_posts", "arguments": { "hashtag": "ootd", "tab": "top" } } ``` #### 주의사항 - One page is roughly 20 to 30 posts and takes several seconds. - A cursor only works with the hashtag and tab it came from. - The feed ends only when next_cursor is null. A page can come back with found 0 and a next_cursor: keep going. - Instagram answers a hidden, restricted, or misspelled hashtag the same way: is_hidden=true and no posts. Check the spelling with hashtag search. - The posts are stored at once, but catalog tag search lists them only after its next daily refresh. - Media files of a just-collected post can take a moment to be stored, so asset_url may be null at first. #### 관련 도구 - [`solari_fetch_instagram_hashtag_search`](https://pub.brandazine.ai/docs/tools/fetch-instagram-hashtag-search.md?lang=ko) - [`solari_catalog_instagram_tag_search`](https://pub.brandazine.ai/docs/tools/catalog-instagram-tag-search.md?lang=ko) - [`solari_catalog_instagram_content_batch`](https://pub.brandazine.ai/docs/tools/catalog-instagram-content-batch.md?lang=ko) ### solari fetch instagram hashtag search > Find hashtags by keyword, with their sizes. - **CLI**: `solari fetch instagram hashtag search` - **MCP 도구**: `solari_fetch_instagram_hashtag_search` - **권한**: `solari:read` — 로그인한 SOLARI 계정이면 쓸 수 있어요. - **Required plan**: Free - **Credit**: 0 Look hashtags up on Instagram by keyword and see how many posts each one has. Nothing is stored. **언제 쓰나** — When you need the exact spelling or the biggest variant of a tag before reading or collecting it. **무엇이 나오나** — Up to 20 hashtags with the post count Instagram reports. #### 파라미터 - `query` (string, 필수, ≤ 100 chars) — Keyword, with or without #. #### 응답 ##### `Response` - `query` (string) — The keyword the lookup ran on. - `hashtags` (object[]) — Matching hashtags, best match first. - `found` (integer) — Hashtags returned. ##### `hashtags[]` - `name` (string) — Hashtag without #. - `post_count` (integer | null) — Posts Instagram reports under it. #### 예시 ```console $ solari fetch instagram hashtag search query=skincare ``` _읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였어요._ ```json { "query": "skincare", "hashtags": [ { "name": "skincare", "post_count": 128000000 }, { "name": "skincareroutine", "post_count": 31000000 }, { "name": "skincaretips", "post_count": 9400000 } ], "found": 3 } ``` #### MCP 호출로 쓰면 ```json { "name": "solari_fetch_instagram_hashtag_search", "arguments": { "query": "skincare" } } ``` #### 주의사항 - post_count is Instagram's own total, not the number of posts SOLARI has collected. - There is no pagination: Instagram returns at most 20 candidates. #### 관련 도구 - [`solari_fetch_instagram_hashtag_posts`](https://pub.brandazine.ai/docs/tools/fetch-instagram-hashtag-posts.md?lang=ko) - [`solari_catalog_instagram_tag_search`](https://pub.brandazine.ai/docs/tools/catalog-instagram-tag-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://pub.brandazine.ai/docs/tools/catalog-tiktok-account-search.md?lang=ko) - [`solari_catalog_tiktok_account_profile`](https://pub.brandazine.ai/docs/tools/catalog-tiktok-account-profile.md?lang=ko) - [`solari_fetch_tiktok_posts`](https://pub.brandazine.ai/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://pub.brandazine.ai/docs/tools/fetch-tiktok-account.md?lang=ko) - [`solari_catalog_tiktok_account_posts`](https://pub.brandazine.ai/docs/tools/catalog-tiktok-account-posts.md?lang=ko) - [`solari_catalog_tiktok_account_search`](https://pub.brandazine.ai/docs/tools/catalog-tiktok-account-search.md?lang=ko)