Orshot 소셜 미디어 스케줄러: 렌더링, 포스팅, 스케줄링, 학습
Orshot은 템플릿에서 이미지, 캐러셀, 비디오를 렌더링하고 13개 이상의 플랫폼에 하나의 요청으로 포스팅합니다. 또한 초안, 스케줄, 편집, 분석 보고를 지원하므로 에이전트가 두 번째 도구 없이 전체 콘텐츠 캘린더를 운영할 수 있습니다. 다른 곳에서 만든 이미지와 함께 모든 공개 미디어 URL을 첨부할 수도 있습니다.
지원 플랫폼: X (Twitter), Instagram, Facebook, LinkedIn (프로필 및 페이지), TikTok, YouTube, Pinterest, Reddit, Bluesky, Threads, Telegram, Snapchat, Google Business.
1단계: Orshot MCP 서버 연결
이 단계가 선행되어야 모든 작업이 가능합니다. MCP 경로는 붙여넣을 키가 없고, 모든 포스트를 시각적 카드로 표시하며, 에이전트에서 사용할 경로입니다.
openclaw mcp add orshot --url https://mcp.orshot.com/mcp --transport streamable-http --auth oauth
openclaw mcp login orshot
Claude Code: claude mcp add --transport http orshot https://mcp.orshot.com/mcp. 다른 MCP 클라이언트도 동일한 URL을 사용합니다.
Headless 작업 전용 (cron, n8n, 서버 스크립트): export ORSHOT_API_KEY=... 설정 후 Authorization: Bearer $ORSHOT_API_KEY 헤더로 REST API 호출.
2단계: 연결된 계정 확인
orshot_list_social_accounts # MCP
GET /v1/social/accounts?include_health=true # REST
# [{ "id": 1, "platform": "linkedin", "account_name": "Acme", "account_username": "acme", "health": { "status": "ok" } }]
계정 목록이 표시되면 포스팅할 수 있습니다. 각 계정의 숫자 id와 재연결이 필요한지 알려주는 health 플래그를 기록하세요.
목록이 비어 있다면 사람이 수동으로 계정을 연결해야 합니다. API로는 계정을 연결할 수 없습니다. 사용자에게 Orshot 대시보드(Workspace > Socials > Accounts, https://orshot.com/dashboard, 워크스페이스의 Socials 섹션)로 안내하세요. 각 플랫폼은 자체 OAuth 로그인으로 연결됩니다. 소셜 게시는 유료 플랜의 애드온으로, 연결된 계정당 월 $12이며 포스트당 추가 크레딧은 없습니다. 무료 플랜은 계정을 연결할 수 없습니다. 플랜 및 애드온 정보는 https://orshot.com/pricing 에서 확인하세요. 이 내용을 한 번 명확하게 설명하고 사용자가 다시 연락할 때까지 기다리세요. 이후 orshot_list_social_accounts를 호출하면 새 계정이 표시됩니다.
핵심 워크플로우
- 연결 및 계정 목록 확인 (위 참조).
- 미디어 결정. 템플릿에서 렌더링 (
templateId+modifications) 또는 기존media_url사용. - 먼저 초안 작성. 사용자가 지금 게시하겠다고 명확히 말하지 않는 한
status: "draft"로 포스트를 생성합니다. - 사용자에게 미리보기, 캡션, 계정 및 시간을 보여줍니다. MCP에서
orshot_get_social_post는 시각적 카드를 렌더링합니다. - 사용자가 변경한 사항을 편집하고 (
orshot_update_social_post), 발행 (orshot_publish_social_draft) 또는 스케줄링 (status: "scheduled"+scheduled_for)합니다. - 비동기 플랫폼(Instagram, TikTok) 완료 후 상태 확인:
processing이published또는failed로 변경됩니다. - 하루 후 분석 데이터 읽기, 다음 스케줄 전 최적 시간 인사이트 확인.
MCP 도구 맵
| 작업 | 도구 |
|---|---|
| 계정 목록 | orshot_list_social_accounts |
| 렌더링 + 포스팅 원스텝 | orshot_render_template with publish |
| 미디어 URL 포스팅 | orshot_publish_social_post |
| 포스트 목록 / 읽기 | orshot_list_social_posts, orshot_get_social_post (시각적 카드) |
| 편집 / 발행 / 폐기 | orshot_update_social_post, orshot_publish_social_draft, orshot_discard_social_post |
| 분석 | orshot_get_social_analytics, orshot_get_social_analytics_daily, orshot_get_social_followers, orshot_get_social_post_analytics |
| 최적 게시 시간 | orshot_get_best_time_to_post |
MCP 서버는 명시적인 승인이 없으면 기본적으로 status: "draft"를 사용합니다. 이 방식을 유지하세요.
필수 호출
한 번의 호출로 렌더링 및 포스팅 (또는 초안, 스케줄)
MCP에서는 동일한 publish 객체와 함께 orshot_render_template을 사용합니다.
await fetch("https://api.orshot.com/v1/studio/render", {
method: "POST",
headers: { "Content-Type": "application/json", Authorization: `Bearer ${apiKey}` },
body: JSON.stringify({
templateId: 123,
modifications: { headline: "Ship day", stat: "2,000 renders" },
response: { type: "url", format: "png" },
publish: {
accounts: [1, 3],
content: "Caption up to 5000 chars",
status: "scheduled", // published | draft | scheduled
scheduled_for: "2026-11-01T14:00:00Z",
timezone: "America/New_York",
platformOptions: {
"3": { firstComment: "https://orshot.com", disableLinkPreview: true }, // LinkedIn
},
},
}),
});
여러 페이지 템플릿은 지원되는 플랫폼에서 캐러셀로 게시됩니다. 응답에는 data.content (렌더 결과)와 계정당 하나의 항목이 있는 publish[]가 포함됩니다.
이미 보유한 미디어 포스팅
orshot_publish_social_post 또는 다음 명령어 사용:
curl -s -X POST https://api.orshot.com/v1/social/publish \
-H "Authorization: Bearer $ORSHOT_API_KEY" -H "Content-Type: application/json" \
-d '{
"accounts": [2],
"content": "Six things nobody tells you",
"media_urls": ["https://.../1.png", "https://.../2.png", "https://.../3.png"],
"status": "draft",
"tiktokSettings": { "autoAddMusic": true }
}'
| 필드 | 참고 |
|---|---|
accounts | 필수, 숫자 ID |
content | 캡션, 최대 5000자 |
media_url / media_urls | 하나 또는 여러 개의 공개 URL; 여러 개 = 캐러셀 |
status | published (REST 기본값), draft, scheduled |
scheduled_for | ISO 8601, 최소 60초 이후, scheduled 상태에서만 사용 |
timezone | IANA 시간대 이름 |
platformOptions | 계정 ID별 옵션: LinkedIn firstComment, disableLinkPreview; Pinterest title, link |
tiktokSettings.autoAddMusic | 최상위 레벨, TikTok 사진 캐러셀 |
응답: { post_id, status, platforms: [{ account_id, platform, status, url, error, action }] }. status는 published, scheduled, drafted, partial, processing, failed 중 하나입니다. action: "reconnect"는 사용자가 대시보드에서 해당 계정을 다시 연결해야 함을 의미합니다.
보류 포스트 관리
GET /v1/social/posts?status=draft&limit=25 # also scheduled | published | processing | partial | failed, platform=, account_id=, cursor=
GET /v1/social/posts/:id
PATCH /v1/social/posts/:id # content, media_urls, accounts, status (draft|scheduled), scheduled_for, timezone, platformOptions
POST /v1/social/posts/:id/publish # send a held post now
POST /v1/social/posts/:id/sync # refresh provider status
DELETE /v1/social/posts/:id # discard; refused once any account went live
각 포스트의 is_editable 및 is_discardable 필드는 현재 허용되는 작업을 알려줍니다. 편집은 다시 렌더링하지 않으며 비용이 들지 않습니다.
분석
GET /v1/social/analytics?platform=linkedin&source=orshot # per post: impressions, engagement, clicks, rate; followers per account
GET /v1/social/analytics/daily?from=2026-10-01&to=2026-10-21 # day by day
GET /v1/social/analytics/accounts?from=2026-09-01 # follower history and growth per account
GET /v1/social/analytics/insights?platform=instagram # best day-and-hour slots (UTC), frequency vs engagement, decay
source는 all, orshot 또는 external (플랫폼에서 동기화된 포스트, 첫날부터 내역 존재)입니다. refresh=1은 캐시를 무시합니다. 분당 분석 요청 한도: 10개. 인사이트는 게시 기록이 필요하므로 새 계정은 빈 슬롯을 반환합니다.
일반적인 패턴
패턴 1: 주간 콘텐츠 캘린더를 초안으로 작성
하나의 템플릿에서 다른 modifications로 일곱 개의 포스트를 렌더링하고, 각각 status: "draft"로 생성한 후, orshot_list_social_posts로 사용자에게 목록을 보여주고 승인된 포스트를 발행 또는 스케줄링합니다. 캡션이나 시간이 변경될 때마다 업데이트합니다.
패턴 2: 최적 게시 시간에 스케줄링
해당 플랫폼에 대해 orshot_get_best_time_to_post를 호출하고, 최상위 슬롯(UTC)을 가져와 사용자의 시간대로 변환한 후 scheduled_for로 전달합니다. 슬롯이 비어 있으면 임의의 시간을 생성하지 말고 사용자에게 시간을 요청합니다.
패턴 3: 모든 플랫폼에 크로스포스트, 플랫폼별 추가 기능 활용
모든 ID를 포함한 accounts 배열을 사용합니다. 링크는 platformOptions[<linkedin id>].firstComment에, Pinterest용 title과 link, TikTok 사진 포스트용 tiktokSettings.autoAddMusic을 설정합니다. content는 대상 플랫폼 중 가장 짧은 제한 길이를 유지하세요 (X가 가장 짧습니다).
패턴 4: 여러 페이지 템플릿에서 캐러셀 생성
pageN@ 키와 함께 5~10 페이지 템플릿을 렌더링하고 publish를 추가합니다. Orshot은 각 페이지를 업로드하고 Instagram, LinkedIn, TikTok (사진 모드), Threads 및 Bluesky에 캐러셀로 게시합니다. orshot-carousel 스킬에 6슬라이드 공식이 있습니다.
패턴 5: 결과에서 학습
매일: source: "orshot"로 orshot_get_social_analytics 호출, 참여율로 정렬 후 상위 25%의 훅 스타일 유지, 하위 25% 폐기, 다음 주 초안 작성. 변경 사항을 기록하여 사용자가 로그를 읽을 수 있도록 합니다.
패턴 6: 실패 복구
partial 또는 failed와 함께 action: "reconnect" 발생 시: 사용자에게 대시보드(Workspace > Socials > Accounts)에서 어떤 계정을 다시 연결해야 하는지 알리고, 포스트를 초안으로 유지한 후 사용자가 확인하면 orshot_publish_social_draft로 재시도합니다. 다른 error: 그대로 표시하고, 무턱대고 재시도하지 마세요.
안전 규칙
- 해당 포스트에 대한 명시적인 승인 없이 절대 게시하지 마세요. "준비", "초안", "보여줘"는
status: "draft"를 의미합니다. - 보내기 전에 정확한 계정(플랫폼 및 사용자 이름), 캡션 및 시간을 다시 말해주세요.
- 사용자가 요청하지 않은 포스트는 폐기하지 마세요.
- 사용자에게 더 많은 계정을 연결하라고 제안하기 전에 월 $12 계정당 애드온에 대해 한 번 언급하세요.
- REST를 사용할 때는 API 키를 환경 변수에 유지하고 절대 출력하지 마세요.
자주 발생하는 실수
- 계정 ID는 숫자이며 계정별로 고유합니다. 두 개의 LinkedIn 계정은 두 개의 ID를 갖습니다. 플랫폼 이름이 아닌 ID로 게시하세요.
- PDF는 어디에도 게시할 수 없습니다.
png,jpg또는webp(또는 비디오 플랫폼의 경우mp4)로 렌더링하세요. - TikTok과 YouTube는 비디오를 필요로 하며 단일 이미지를 허용하지 않습니다. TikTok은 사진 캐러셀(여러 이미지)을 허용합니다. Google Business는 이미지만 허용합니다.
scheduled_for이 60초 미만이면 거부되며,draft또는published상태와 함께 사용할 수 없습니다.- Instagram과 TikTok은 비동기식으로 게시됩니다.
processing은 실패가 아닙니다. 보고 전에 포스트를 동기화하거나 다시 읽으세요. - 게시 실패가 렌더링 실패를 의미하지는 않습니다. 렌더링이 성공했더라도
publish[]를 읽으세요. - 미디어 URL은 공개되어야 합니다. Orshot 렌더 URL은 공개입니다. 서명된 URL이나 localhost URL은 사용할 수 없습니다.
- 5000자를 초과하는 캡션은 거부됩니다. 플랫폼 제한은 더 낮습니다. X가 가장 짧습니다.
- 분석은 모든 분석 엔드포인트에서 분당 10개 요청으로 제한됩니다.
- 무료 플랜 워크스페이스는 계정을 연결할 수 없습니다.
/social/*에서 403과 함께 플랜 메시지가 표시되면 인증 버그가 아닌 결제 상태 문제입니다. https://orshot.com/pricing을 안내하세요.
빠른 참조
openclaw mcp add orshot --url https://mcp.orshot.com/mcp --transport streamable-http --auth oauth && openclaw mcp login orshot
GET /v1/social/accounts?include_health=true # orshot_list_social_accounts
POST /v1/studio/render # + publish: { accounts, content, status, scheduled_for, timezone, platformOptions, tiktokSettings } orshot_render_template
POST /v1/social/publish # { accounts, content, media_url | media_urls, status, scheduled_for, timezone, platformOptions, tiktokSettings } orshot_publish_social_post
GET /v1/social/posts?status=draft # orshot_list_social_posts
GET /v1/social/posts/:id # orshot_get_social_post
PATCH /v1/social/posts/:id # orshot_update_social_post
POST /v1/social/posts/:id/publish # orshot_publish_social_draft
POST /v1/social/posts/:id/sync
DELETE /v1/social/posts/:id # orshot_discard_social_post
GET /v1/social/analytics # orshot_get_social_analytics
GET /v1/social/analytics/daily?from=&to= # orshot_get_social_analytics_daily
GET /v1/social/analytics/accounts?from= # orshot_get_social_followers
GET /v1/social/analytics/insights?platform= # orshot_get_best_time_to_post
문서: https://orshot.com/docs/publish/introduction.md, https://orshot.com/docs/api-reference/social-publish.md, https://orshot.com/docs/api-reference/social-posts-list.md. 렌더링 세부 사항은 orshot 스킬에 있습니다.