# solari instagram tag search

> 完全一致のハッシュタグ1つ、または@メンションが付いた投稿をすべて。

- **CLI**: `solari instagram tag search`
- **MCP ツール**: `solari_instagram_tag_search`
- **アクセス権**: `solari:read` — サインイン済みの SOLARI アカウントであれば利用できます。

指定したタグと完全に一致する、追跡中の投稿をすべて内容まで含めて返します — '#ootd' はハッシュタグ、'@handle' はそのアカウントへのメンションで、収集の新しい順・カーソルページングです。タグ全体が完全に一致する必要があり、追跡した全期間・全リージョンをカバーします（solari_instagram_content_search は自由テキスト検索ですが、4リージョン・約6か月のみです）。サインイン済みの SOLARI アカウントであればどなたでもご利用いただけます。

**どんなときに使うか** — キャンペーンハッシュタグの実際の広がりを測るとき、または特定のアカウントをメンションした投稿をすべて探すときです。追跡した全期間に対して、タグ全体が完全に一致するものだけを探します。テキストのどこかにあるキーワードを探すなら content search ですが、そちらは4リージョン・約6か月しか見ません。

**何が返るか** — タグが付いた投稿を収集の新しい順に整えて、次のページ用のカーソルとともに返します。

## パラメータ

- `query` (string, 必須, ≤ 200 chars) — 完全一致のタグ1つ。'#ootd' または 'ootd' はハッシュタグを、'@oliveyoung_official' はそのアカウントへのメンションを検索します。空白とワイルドカードは使えません。
- `limit` (integer, 任意, ≥ 1) — 1ページあたりの投稿数、既定値20。1000を超える値は1000に丸められます。ページを大きくしてもコストは増えません。
- `cursor` (string, 任意) — 前回のレスポンスの next_cursor。最初のページでは省略してください。

## レスポンス

### `Response`

- `query` (string) — 実際に検索に使われたタグの値。先頭の # や @ は含まれません。
- `tag_kind` (string) — hashtag または mention — query をどちらとして読んだかを示します。
- `matched_tags` (integer) — query が一致した、保存されているタグ表記の数。1より大きいのが普通です — メンションはハンドルとそのアカウントの数値 id の両方に、ハングルのハッシュタグは2種類の Unicode 表記の両方に一致するためです。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) — 投稿アカウント。account_id が現在の名称です。
- `like_count / comment_count` (integer) — エンゲージメントのスナップショット。
- `play_count` (integer | null) — 動画の再生数。
- `media_type` (string) — 投稿の形式。

## 例

```console
$ solari 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_instagram_tag_search",
  "arguments": {
    "query": "#ootd",
    "limit": 3
  }
}
```

## 注意点

- 並び順は公開日ではなく収集時刻です — 1つのアカウントの投稿はまとめて収集されるため、連続する項目が同じ投稿者になりやすく、posted_at はばらつきます。公開順が重要な場合はご自身で posted_at 順に並べ替えてください。
- タグの索引は1日1回作り直されます。直近数時間の投稿にはまだタグが付いていないことがあり、正確な基準時刻は mirror_synced_at にあります。キャプションとエンゲージメント数値は常に最新です。
- ページがどれだけ大きくても計算コストは同じです。50件を20ページたどるより、1000件を1ページで取得するほうが有利です。
- タグ全体が完全に一致する必要があります。'#ootd' は '#ootdkorea' に一致せず、ワイルドカードもありません。
- 先頭に @ を付けると、そのアカウントをメンションした投稿を検索します: 'query=@oliveyoung_official'。

## 関連ツール

- [`solari_instagram_content_search`](https://solari.sh/docs/tools/instagram-content-search.md?lang=ja)
- [`solari_instagram_content_aggregate`](https://solari.sh/docs/tools/instagram-content-aggregate.md?lang=ja)
