# solari instagram content aggregate

> 投稿を列挙するのではなく数えます。アカウント、フォーマット、ハッシュタグ、メンション、キーワード単位。

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

追跡中の投稿に対する件数とエンゲージメントの集計。個々の投稿ではなく数値で答える問いに使います。アカウント別・月別の投稿数、あるトピックで優勢なハッシュタグ、フォーマット別の平均いいね数など。account、post_type、hashtag、mention、caption_keyword、transcription_keywordのいずれかでグループ化でき、任意で各グループをday、week、monthで分割できます。post_countは常に返ります。like/comment/viewの合計と平均、平均フォロワー数、ユニークアカウント数はmetricsで要求してください。対象はフリーテキストのquery、usernames、hashtags、mentions、post_typesで絞り込んでください。mentionsで絞り込みaccountでグループ化すると、指定したハンドルをタグ付けしたアカウントが分かります。カバー範囲はKR、JP、US、TWの各リージョンで、保持期間はおよそ直近6か月。それより古いsinceは切り詰められ、適用された値がレスポンスに返されます。バケットは件数の多い順。truncated=trueは、limitで返した数より多くのグループが存在したことを意味します。件数ではなく投稿そのものが必要な場合はsolari_instagram_content_searchをお使いください。サインイン済みの SOLARI アカウントであれば利用できます。

**どんなときに使うか** — 数値で答える問い。アカウント別・月別の投稿数、あるトピックで優勢なハッシュタグ、フォーマット別の平均いいね数。

**何が返るか** — グループごとの件数とエンゲージメント集計。件数の多いグループ順。

## パラメータ

- `region` (enum, 任意, 既定値 "KR") — 集計対象のリージョン。インデックスがあるのはこの4リージョンのみ。 値: `KR`, `JP`, `US`, `TW`.
- `group_by` (enum, 任意) — グループ化する軸。省略すると、絞り込み後の集合全体を単一の合計バケットに集計します。 値: `account`, `post_type`, `hashtag`, `mention`, `caption_keyword`, `transcription_keyword`.
- `interval` (enum, 任意) — 分割するカレンダー間隔。単独では期間ごとに1バケットを返し、group_byと組み合わせると各グループが時系列を持ちます。 値: `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, 任意) — キャプション、クリエイターのbio、動画の文字起こしに対して照合するフリーテキストのフィルタ。
- `usernames` (string[], 任意) — これらのInstagramハンドルに限定します。
- `hashtags` (string[], 任意) — これらのハッシュタグをすべて含む投稿に限定します。
- `mentions` (string[], 任意) — これらのハンドルをすべてタグ付けした投稿に限定します。group_by=accountと組み合わせると、指定したハンドルをタグ付けしているアカウントをランキングできます。
- `post_types` (string[], 任意) — これらの投稿フォーマットに限定します。
- `since` (string, 任意, pattern ^\d{4}-\d{2}-\d{2}$) — このUTC日付以降の投稿のみ。YYYY-MM-DD形式で、当日を含みます。デフォルトは183日前で、これが受け付けられる最も古い境界でもあります。
- `until` (string, 任意, pattern ^\d{4}-\d{2}-\d{2}$) — このUTC日付以前の投稿のみ。YYYY-MM-DD形式で、当日を含みます。
- `limit` (integer, 任意, ≥ 1) — group_byを指定したときに返すグループの最大数。デフォルトは20。50を超える値は50に切り詰められます。

## レスポンス

### `Response`

- `region` (string) — 集計を実行したリージョン。
- `since` (date) — 実際に適用された開始日。保持期間より古いリクエストは切り詰められ、その値がここに返されます。
- `until` (date | null) — 実際に適用された終了日。
- `group_by` (string | null) — 適用されたグループ化の軸。
- `interval` (string | null) — 適用されたカレンダー間隔。
- `total_posts` (integer) — フィルタに一致した投稿数。グループが重複する場合、バケット件数の合計と一致しないことがあります。
- `truncated` (boolean) — limitで返した数より多くのグループが存在した場合にtrue。
- `buckets` (object[]) — グループごとに1エントリ。件数の多い順。

### `buckets[]`

- `key` (string) — グループの値 — ハンドル、ハッシュタグ、フォーマットなど。group_byを省略した場合は単一の合計バケットになります。
- `metrics.post_count` (integer) — 投稿数。常に返ります。
- `metrics.like_sum / like_avg` (number | null) — いいねの合計と平均。metricsで要求した場合のみ。
- `metrics.comment_sum / comment_avg` (number | null) — コメントの合計と平均。
- `metrics.view_sum / view_avg` (number | null) — 再生数の合計と平均。
- `metrics.share_sum / collect_sum` (number | null) — TikTok専用のメトリクス。Instagramでは常にnull。
- `metrics.follower_avg` (number | null) — 投稿したアカウントの平均フォロワー数。
- `metrics.account_count` (integer | null) — グループ内のユニークアカウント数。
- `series` (object[] | null) — 期間ごとの内訳。intervalを指定した場合に返ります。

## 例

```console
$ solari 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_instagram_content_aggregate",
  "arguments": {
    "group_by": "hashtag",
    "query": "이니스프리",
    "metrics": [
      "like_avg",
      "view_sum",
      "account_count"
    ],
    "limit": 5
  }
}
```

## 注意点

- post_countは常に返ります。それ以外はmetricsで指定しない限りnull。
- mentionsで絞り込みaccountでグループ化すると、「どのアカウントがこのハンドルをタグ付けしたか」が分かります。
- インデックスの対象はKR、JP、US、TWで、範囲はおよそ直近6か月。sinceのデフォルトは183日前で、これが受け付けられる下限でもあります。それより古い値は切り詰められ、適用された値がレスポンスに返されます。
- interval単独では期間ごとに1バケットを返します。group_byと組み合わせると、各グループが時系列を持ちます。
- 投稿そのものが答えになる場合はcontent searchをお使いください。

## 関連ツール

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