adaptlypost
使用 AdaptlyPost API 安排和管理 Instagram、X (Twitter)、Bluesky、TikTok、Threads、LinkedIn、Facebook、Pinterest 和 YouTube 上的社交媒体帖子。当用户想要安排社交媒体帖子、管理社交媒体内容、上传社交帖子媒体、列出连接的社交帐户、检查帖子状态、将内容交叉发布到多个平台或自动化其社交媒体工作流程时使用。 AdaptlyPost 是一款 SaaS 工具——无需自托管。
安装 / 下载方式
TotalClaw CLI推荐
totalclaw install totalclaw:totalclaw~tarasshyn-adaptlypostcURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/totalclaw%3Atotalclaw~tarasshyn-adaptlypost/file -o tarasshyn-adaptlypost.md## 概述(中文)
使用 AdaptlyPost API 安排和管理 Instagram、X (Twitter)、Bluesky、TikTok、Threads、LinkedIn、Facebook、Pinterest 和 YouTube 上的社交媒体帖子。当用户想要安排社交媒体帖子、管理社交媒体内容、上传社交帖子媒体、列出连接的社交帐户、检查帖子状态、将内容交叉发布到多个平台或自动化其社交媒体工作流程时使用。 AdaptlyPost 是一款 SaaS 工具——无需自托管。
## 原文
# AdaptlyPost
Schedule social media posts across 9 platforms from one API. SaaS — no self-hosting needed.
## Setup
1. Sign up at https://adaptlypost.com/signup
2. Go to Settings → API Tokens → generate an API token
3. Set the environment variable:
```bash
export ADAPTLYPOST_API_KEY="adaptly_your-token-here"
```
Base URL: `https://post.adaptlypost.com/post/api/v1`
Auth header: `Authorization: Bearer $ADAPTLYPOST_API_KEY`
## Core Workflow
### 1. List connected accounts
```bash
curl -s -H "Authorization: Bearer $ADAPTLYPOST_API_KEY" \
https://post.adaptlypost.com/post/api/v1/social-accounts
```
Returns `{ "accounts": [{ "id", "platform", "displayName", "username", "avatarUrl" }] }`. Save the `id` — you'll use it as a connection ID when creating posts.
### 2. Publish a post immediately (no scheduling)
To publish right away, simply **omit `scheduledAt` entirely** and do NOT set `saveAsDraft`:
```bash
curl -X POST https://post.adaptlypost.com/post/api/v1/social-posts \
-H "Authorization: Bearer $ADAPTLYPOST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platforms": ["TWITTER"],
"contentType": "TEXT",
"text": "This goes live right now!",
"timezone": "America/New_York",
"twitterConnectionIds": ["CONNECTION_ID_HERE"]
}'
```
**IMPORTANT**: Do NOT set `scheduledAt` to a time in the near future as a workaround. Omitting `scheduledAt` is the correct way to publish immediately.
Returns `{ "postId", "queuedPlatforms", "skippedPlatforms", "isScheduled", "scheduledAt" }`.
**Important**: You must include the correct `*ConnectionIds` array for each platform in `platforms`. For example, if posting to Instagram and Twitter, include both `instagramConnectionIds` and `twitterConnectionIds`. For Facebook, use `pageIds` instead.
### 3. Schedule a text post for later
```bash
curl -X POST https://post.adaptlypost.com/post/api/v1/social-posts \
-H "Authorization: Bearer $ADAPTLYPOST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platforms": ["TWITTER"],
"contentType": "TEXT",
"text": "Your post text here",
"timezone": "America/New_York",
"scheduledAt": "2026-06-15T10:00:00.000Z",
"twitterConnectionIds": ["CONNECTION_ID_HERE"]
}'
```
### 4. Save a post as draft (no scheduling)
Same as scheduling, but set `saveAsDraft: true` and omit `scheduledAt`:
```bash
curl -X POST https://post.adaptlypost.com/post/api/v1/social-posts \
-H "Authorization: Bearer $ADAPTLYPOST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platforms": ["INSTAGRAM"],
"contentType": "TEXT",
"text": "Draft post to review later",
"timezone": "Europe/London",
"saveAsDraft": true,
"instagramConnectionIds": ["CONNECTION_ID_HERE"]
}'
```
### 5. Schedule a post with media (3-step flow)
**Step A** — Get presigned upload URLs:
```bash
curl -X POST https://post.adaptlypost.com/post/api/v1/upload-urls \
-H "Authorization: Bearer $ADAPTLYPOST_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "files": [{ "fileName": "photo.jpg", "mimeType": "image/jpeg" }] }'
```
Returns `{ "urls": [{ "fileName", "uploadUrl", "publicUrl", "key", "expiresAt" }] }`.
**Step B** — Upload file to storage:
```bash
curl -X PUT "UPLOAD_URL_HERE" \
-H "Content-Type: image/jpeg" \
--data-binary @/path/to/photo.jpg
```
**Step C** — Create post with the public URL:
```bash
curl -X POST https://post.adaptlypost.com/post/api/v1/social-posts \
-H "Authorization: Bearer $ADAPTLYPOST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platforms": ["INSTAGRAM"],
"contentType": "IMAGE",
"text": "Post with image!",
"mediaUrls": ["PUBLIC_URL_FROM_STEP_A"],
"timezone": "America/New_York",
"scheduledAt": "2026-06-15T10:00:00.000Z",
"instagramConnectionIds": ["CONNECTION_ID_HERE"]
}'
```
For video: use `mimeType: "video/mp4"`, `contentType: "VIDEO"`.
For carousel: upload multiple files, include all public URLs in `mediaUrls`, use `contentType: "CAROUSEL"`.
### 6. List posts
```bash
curl -s -H "Authorization: Bearer $ADAPTLYPOST_API_KEY" \
"https://post.adaptlypost.com/post/api/v1/social-posts?limit=20&offset=0"
```
Returns `{ "posts": [...], "total": 25, "hasMore": true }`. Use `limit` (1-100, default 20) and `offset` (default 0) for pagination.
### 7. Get post details
```bash
curl -s -H "Authorization: Bearer $ADAPTLYPOST_API_KEY" \
https://post.adaptlypost.com/post/api/v1/social-posts/POST_ID
```
Returns full post object with platform-specific status for each target platform.
### 8. Cross-post to multiple platforms
Include multiple platforms and their connection IDs in a single request:
```bash
curl -X POST https://post.adaptlypost.com/post/api/v1/social-posts \
-H "Authorization: Bearer $ADAPTLYPOST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platforms": ["TWITTER", "BLUESKY", "LINKEDIN"],
"contentType": "TEXT",
"text": "Same post across 3 platforms!",
"timezone": "America/New_York",
"scheduledAt": "2026-06-15T10:00:00.000Z",
"twitterConnectionIds": ["TWITTER_ID"],
"blueskyConnectionIds": ["BLUESKY_ID"],
"linkedinConnectionIds": ["LINKEDIN_ID"]
}'
```
### 9. Use per-platform text
Override the default text for specific platforms:
```bash
curl -X POST https://post.adaptlypost.com/post/api/v1/social-posts \
-H "Authorization: Bearer $ADAPTLYPOST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platforms": ["TWITTER", "LINKEDIN"],
"contentType": "TEXT",
"text": "Default text for all platforms",
"platformTexts": [
{ "platform": "TWITTER", "text": "Short version for X #shortform" },
{ "platform": "LINKEDIN", "text": "Longer professional version with more detail for LinkedIn audience." }
],
"timezone": "America/New_York",
"scheduledAt": "2026-06-15T10:00:00.000Z",
"twitterConnectionIds": ["TWITTER_ID"],
"linkedinConnectionIds": ["LINKEDIN_ID"]
}'
```
## Platform-Specific Configs
Pass these as config arrays in the request body. See [references/platform-configs.md](references/platform-configs.md) for full details.
| Platform | Config Field | Key Options |
| --------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------- |
| **TikTok** | `tiktokConfigs` | `privacyLevel` (required), `allowComments`, `allowDuet`, `allowStitch`, `sendAsDraft`, `brandedContent`, `autoAddMusic` |
| **Instagram** | `instagramConfigs` | `postType` (FEED/REEL/STORY) |
| **Facebook** | `facebookConfigs` | `postType` (FEED/REEL/STORY), `videoTitle` |
| **YouTube** | `youtubeConfigs` | `postType` (VIDEO/SHORTS), `videoTitle`, `tags`, `privacyStatus`, `madeForKids`, `playlistId` |
| **Pinterest** | `pinterestConfigs` | `boardId` (required), `title`, `link` |
| **X (Twitter)** | — | No config object, uses `twitterConnectionIds` only |
| **Bluesky** | — | No config object, uses `blueskyConnectionIds` only |
| **Threads** | — | No config object, uses `threadsConnectionIds` only