# solari fetch instagram posts

> Instagram 계정의 게시물·릴스·태그된 게시물을 실시간으로 수집합니다.

- **CLI**: `solari fetch instagram posts`
- **MCP 도구**: `solari_fetch_instagram_posts`
- **권한**: `solari:read`
- **이용 가능 플랜**: 무료 체험 · Plus · Pro · Enterprise
- **크레딧**: 1

Instagram 계정의 탭 하나를 실시간으로 수집하고, 같은 호출에서 게시물을 탭 순서대로 조회수·좋아요·댓글과 함께 돌려줍니다. type으로 탭을 고릅니다: posts(프로필 그리드), reels(릴스), tagged_posts(다른 계정이 이 계정을 태그한 게시물).

**언제 쓰나요** — 계정의 최신 게시물이나 현재 릴스 조회수가 필요할 때, 또는 catalog account posts 결과에 빠진 게시물이 있거나 오래돼 보일 때 쓰세요.

**돌려주는 값** — 수집한 게시물(catalog account posts와 같은 item 형태)과 수집 결과.

## 파라미터

- `username` (string, 필수, ≤ 64 chars) — Instagram username.
- `type` (enum, 선택, 기본값 "posts") — posts(프로필 그리드), reels(릴스 탭), tagged_posts(다른 계정이 이 계정을 태그한 게시물). 값: `posts`, `reels`, `tagged_posts`.
- `pages` (integer, 선택, 기본값 1, 1–3) — 수집할 탭 페이지 수. 한 페이지에 게시물 12개 정도입니다.
- `cursor` (string, 선택, ≤ 8192 chars) — 이전 호출의 collection.next_cursor. 넘기면 그 다음(더 오래된) 페이지부터 이어서 수집합니다.

## 응답

### `Response`

- `found` (boolean) — Instagram에 그 핸들의 계정이 없으면 false. 이때 items는 비어 있습니다.
- `account_id` (uuid) — 해당 계정.
- `username` (string) — 찾은 핸들.
- `type` (string) — 수집한 탭.
- `collection` (object) — 수집 결과.
- `total` (integer) — items에 담긴 게시물 수.
- `items` (object[]) — 수집한 게시물(탭 순서).
- `note` (string) — 알릴 내용이 있을 때만 옵니다: 비공개 계정, 탭을 받지 못함, 아직 저장 중인 게시물, 더 가져올 페이지.
- `next` (string) — 탭이 더 이어질 때만: cursor=next_cursor를 붙인 같은 호출로 이어서 수집합니다.

### `collection`

- `type / pages` (string / integer) — 읽은 탭과 페이지 수.
- `fetched_count` (integer) — Instagram이 돌려준 게시물 수.
- `stored_count` (integer) — 이번 호출에서 카탈로그에 저장·갱신한 게시물 수.
- `has_more` (boolean) — 읽은 페이지보다 탭이 더 이어지면 true. cursor=next_cursor로 이어서 수집합니다.
- `truncated` (boolean) — 요청한 페이지를 다 읽기 전에 수집이 멈췄으면 true.
- `pending_count` (integer) — 아직 저장 중인 게시물 수. 이 게시물의 item에는 당분간 post_id, slug, url, posted_at만 있습니다.
- `skipped_reason` (string | null) — 아무것도 수집하지 않은 이유. private은 비공개 계정이라는 뜻입니다.
- `unavailable_reason` (string | null) — Instagram이 탭을 돌려주지 않은 이유.

### `items[]`

- `post_id` (uuid) — SOLARI 게시물 id.
- `slug` (string) — Instagram shortcode.
- `url` (string) — 공개 고유 링크.
- `post_type` (string) — reel, video, photo, carousel 중 하나.
- `posted_at` (timestamp) — 게시 시각(UTC).
- `text` (string) — 캡션.
- `like_count / comment_count` (integer) — 참여 지표.
- `play_count` (integer | null) — 조회수. Instagram이 조회수를 주지 않으면 null이며, 사진 대부분이 그렇습니다.
- `media_count` (integer) — 미디어 수.
- `is_paid_partnership` (boolean | null) — Instagram 유료 파트너십 표시.
- `medias` (object[]) — 캐러셀 순서대로 나열한 모든 미디어.
- `assets` (object[]) — 미디어 파일 목록(순서대로). 파일마다 바로 내려받는 asset_url, media_type, video_duration이 있습니다.
- `thumbnail_url` (string) — 썸네일.
- `author_username / author_account_id` (string / uuid) — tagged_posts에서만: 게시물을 올린 계정.

## 예시

```console
$ solari fetch instagram posts username=innisfreeofficial type=reels
```

_읽기 편하도록 긴 문자열과 반복되는 배열 항목을 줄였습니다._

```json
{
  "found": true,
  "account_id": "018cabce-14cc-7544-8890-7811ec33ef74",
  "username": "innisfreeofficial",
  "type": "reels",
  "collection": {
    "type": "reels",
    "pages": 1,
    "fetched_count": 12,
    "stored_count": 12,
    "has_more": true,
    "truncated": false,
    "next_cursor": "eyJhIjoiMDE4Y2FiY2UiLCJ0IjoicmVlbHMiLCJjIjoiUUZEIn0",
    "pending_count": 0,
    "skipped_reason": null,
    "unavailable_reason": null
  },
  "total": 12,
  "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": []
        }
      ],
      "assets": [
        {
          "asset_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",
          "media_type": "video",
          "video_duration": 23.868000030517578
        }
      ],
      "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 …"
    },
    "… 11 more"
  ],
  "note": "The tab has more posts: request up to 3 pages to collect further back.",
  "next": "solari fetch instagram posts username=innisfreeofficial type=reels pages=3 cursor=eyJhIjoiMDE4Y2FiY2UiLCJ0IjoicmVlbHMiLCJjIjoiUUZEIn0"
}
```

## MCP 호출

```json
{
  "name": "solari_fetch_instagram_posts",
  "arguments": {
    "username": "innisfreeofficial",
    "type": "reels"
  }
}
```

## 주의사항

- 조회수는 type=reels로 보세요. 프로필 그리드의 사진은 play_count가 null입니다.
- 최근 게시물을 빠짐없이 보거나 현재 조회수가 필요하면 catalog instagram account posts 대신 이 도구를 쓰세요. 저장된 카탈로그는 빠진 게시물이 있거나 오래됐을 수 있습니다.
- 호출 한 번에 보통 5~45초 걸립니다. 수집한 게시물은 카탈로그에도 저장됩니다.
- 비공개 계정은 items가 비어 있고 collection.skipped_reason=private입니다. 모르는 핸들은 먼저 수집하며, found=false면 Instagram에 그런 계정이 없다는 뜻입니다.
- likes_hidden이 true면 like_count를 쓰지 마세요. 작성자가 좋아요를 숨겨서 null이거나 실제 값이 아닐 수 있습니다.

## 관련 도구

- [`solari_catalog_instagram_account_posts`](https://clip-pub.bzine.co/docs/tools/catalog-instagram-account-posts.md?lang=ko)
- [`solari_fetch_instagram_account`](https://clip-pub.bzine.co/docs/tools/fetch-instagram-account.md?lang=ko)
- [`solari_fetch_instagram_post`](https://clip-pub.bzine.co/docs/tools/fetch-instagram-post.md?lang=ko)
- [`solari_fetch_instagram_hashtag_posts`](https://clip-pub.bzine.co/docs/tools/fetch-instagram-hashtag-posts.md?lang=ko)
