# solari tiktok account posts

> 1つのTikTokアカウントの投稿を新しい順にページングします。

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

1つのTikTokアカウントの投稿を新しい順に返します。ページネーションとフィルタに対応。アカウントはaccount_id（solari_tiktok_account_searchが返すTikTokアカウントのUUID）またはusername（TikTokハンドル）で指定してください。各アイテムはpost_id（SOLARIの投稿UUID）、video_id（公開されている数値のTikTok id）とurl、post_type（videoまたはcarousel）、posted_at、caption、duration_seconds、play/like/comment/share/collectの各カウント、is_ad、cover_url、images（カルーセルのスライド）、hashtags、mentions、およびinclude_transcript=trueのときはtranscriptを持ちます。文字起こしは長いため、include_transcriptはデフォルトで無効。発話内容が重要な場合のみ有効にしてください。レスポンスはfound、account_id、username、total、has_more、itemsを含みます。limitとoffsetでページングし、since/until（UTCの日付、両端を含む）とpost_typeで絞り込みます。未追跡のハンドルは最初のリクエスト時にライブ取得されます（10〜40秒かかります）。fetched_on_demand=trueは、バックグラウンドのクロールが完了するまで直近の投稿のみ利用できることを示します。found=falseは、そのハンドルがTikTokに存在しないことを意味します。サインイン済みのSOLARIアカウントであれば利用できます。

**どんなときに使うか** — プロフィールのプレビューより深く掘り下げるとき、または期間とフォーマットで絞り込むとき。

**何が返るか** — 投稿。オプションで発話の文字起こしを含みます。

## パラメータ

- `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（SOLARIアカウントUUID）。これかusernameのいずれかを指定してください。
- `username` (string, 任意, ≤ 64 chars) — TikTokハンドル。先頭の@はあってもなくてもかまいません。account_idが指定されている場合は無視されます。
- `limit` (integer, 任意, ≥ 1) — 1ページあたりの投稿数。デフォルトは12。200を超える値は200に上限で切り詰められます。
- `offset` (integer, 任意, 既定値 0, ≥ 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) — falseは、そのハンドルがTikTokに存在しないことを意味します。
- `account_id / username` (string) — 解決されたアカウント。
- `total` (integer) — フィルタに一致した投稿数。
- `has_more` (boolean) — 次のページが存在するかどうか。
- `items` (object[]) — 投稿。新しい順。
- `fetched_on_demand` (boolean) — 現時点で直近の投稿のみ利用できる場合はtrue。

### `items[]`

- `post_id` (uuid) — SOLARIの投稿id。Instagramの投稿idとは別の名前空間。
- `video_id` (string) — 公開されている数値のTikTok id。/video/または/photo/の後ろの数字。
- `url` (string) — TikTokの公開パーマリンク。
- `account_id` (uuid) — 投稿者のTikTok 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) — TikTokが付与した場合のAI生成コンテンツラベル。
- `original_language_code` (string | null) — ソース言語のコード。
- `cover_url` (string) — カバー画像のURL。
- `video_url` (string) — 動画ファイルのURL。
- `images` (string[]) — カルーセルのスライド。video投稿では空。
- `hashtags` (string[]) — キャプションから抽出されたハッシュタグ。
- `mentions` (string[]) — キャプション内でメンションされたハンドル。
- `transcript` (string | null) — 発話の文字起こし。include_transcript=trueのときのみ入ります。

## 例

```console
$ solari 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_tiktok_account_posts",
  "arguments": {
    "username": "innisfree_official",
    "limit": 2
  }
}
```

## 注意点

- 文字起こしは長いため、include_transcriptはデフォルトで無効。発話内容が重要な場合のみ有効にしてください。
- 1ページあたり最大200件。

## 関連ツール

- [`solari_tiktok_account_profile`](https://solari.sh/docs/tools/tiktok-account-profile.md?lang=ja)
- [`solari_tiktok_content_detail`](https://solari.sh/docs/tools/tiktok-content-detail.md?lang=ja)
- [`solari_instagram_account_posts`](https://solari.sh/docs/tools/instagram-account-posts.md?lang=ja)
