so-me-studio

so-me.studio is a multi-platform social-media scheduler. Schedule posts, manage drafts, reply to inbox messages and post comments, generate AI captions/images/UGC videos, query analytics, manage media files and biolinks, and react to webhooks across Twitter/X, LinkedIn, LinkedIn Page, Instagram, Facebook, TikTok, YouTube, Threads, WhatsApp, Pinterest, Dribbble.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "so-me-studio" with this command: npx skills add yasin047/so-me-studio

Install so-me.studio CLI if it doesn't exist

npm install -g @so-me/cli
# or
pnpm install -g @so-me/cli

npm release: https://www.npmjs.com/package/@so-me/cli so-me.studio app: https://app.so-me.studio documentation: https://docs.so-me.studio official website: https://so-me.studio


PropertyValue
nameso-me-studio
descriptionSchedule posts, manage inbox, generate AI content, and automate social-media operations across 10+ platforms
allowed-toolsBash(so-me:*)

⚠️ Authentication Required

You MUST authenticate before running any so-me.studio command. All commands return 401 without valid credentials.

Before doing anything else, check auth status:

so-me auth:status

If not authenticated, either:

  1. Browser OAuth: so-me auth:login
  2. API key (env var): export SOMESTUDIO_API_KEY=sk_live_...
  3. API key (saved): so-me auth:login --api-key sk_live_...

Generate keys at https://app.so-me.studio/settings/api-keys.

Do NOT proceed until authentication succeeds.


Core workflow

  1. Discover what's connected. Always start by listing accounts before posting — never invent IDs.

    so-me accounts:list
    
  2. Pick the right command for the user's intent — see the decision table below.

  3. Compute exact ISO 8601 UTC timestamps for any scheduling. Confirm the time with the user before running.

  4. Chain calls for multi-step jobs (AI image → upload → post). Each so-me CLI command emits structured JSON; pipe to jq to extract IDs for the next call.

  5. Inspect on failure. Any non-zero exit code includes a JSON { "error": "<detail>" } body. Surface the detail to the user; do not retry blindly.


Decision tree — picking the right command

User says...Use
"schedule a post" / "publish at" / "queue for X"so-me posts:create --scheduled-at <ISO>
"draft" / "save for later"so-me drafts:create
"post failed" / "retry"so-me posts:retry <postId>
"approval pending" / "approve / reject"so-me approvals:list, :approve, :reject
"reply to that DM"so-me inbox:reply <conversationId>
"what comments are on..."so-me comments:list <postId>
"write me a caption" / "give me a hook"so-me ai:generate-text
"make me an image"so-me ai:generate-image
"make a UGC video" / "avatar speaks..."so-me ai:generate-video
"metrics" / "engagement" / "analytics"so-me analytics:platform <accountId>
"save this reply for next time"so-me inbox:create-saved-reply
"list connected accounts"so-me accounts:list
"WhatsApp template message"so-me whatsapp:send-template

Essential commands

Discovery & auth

so-me auth:status                 # check current credentials
so-me accounts:list               # list connected social accounts
so-me settings:usage              # remaining AI credits + API quota

Posting & scheduling

# Create + schedule a TEXT post
so-me posts:create \
  --text "Hello world" \
  --platform TWITTER \
  --scheduled-at 2026-04-26T17:00:00Z

# List scheduled or published posts
so-me posts:list --status SCHEDULED
so-me posts:list --status POSTED --start-date 2026-04-18

# Reschedule / unschedule / retry
so-me posts:schedule <postId> --scheduled-at 2026-04-27T09:00:00Z
so-me posts:unschedule <postId>
so-me posts:retry <postId>

AI content generation

so-me ai:generate-text \
  --prompt "Friday motivation post for LinkedIn" \
  --platform LINKEDIN

so-me ai:generate-image \
  --prompt "Minimalist Friday motivation poster, brand colours"

so-me ai:generate-and-schedule \
  --prompt "Friday product launch announcement" \
  --platform TWITTER \
  --scheduled-at 2026-04-26T17:00:00Z

Inbox & community management

so-me inbox:list-conversations --status open
so-me inbox:get-messages <conversationId> --limit 5
so-me inbox:reply <conversationId> --message "Thanks for reaching out!"
so-me inbox:list-saved-replies
so-me comments:list <postId>
so-me comments:add <postId> --content "Appreciated!"

Analytics

so-me analytics:platform <accountId> --days 7
so-me analytics:post <postId>

Media & drafts

so-me media:upload ./image.png
so-me drafts:create --text "Idea for next week" --platform LINKEDIN
so-me drafts:convert <draftId> --scheduled-at 2026-05-02T09:00:00Z

Common patterns

Pattern 1 — RSS-style "rewrite + schedule"

# 1. Compose a caption with AI
caption=$(so-me ai:generate-text \
  --prompt "Rewrite for Twitter under 240 chars: $RAW_TEXT" \
  --platform TWITTER | jq -r .text)

# 2. Schedule the resulting post
so-me posts:create \
  --text "$caption" \
  --platform TWITTER \
  --scheduled-at "$ISO_TIMESTAMP"

Pattern 2 — Cross-platform launch

for platform in TWITTER LINKEDIN INSTAGRAM; do
  so-me ai:generate-and-schedule \
    --prompt "Friday product launch — tone tailored to $platform" \
    --platform "$platform" \
    --scheduled-at 2026-04-26T17:00:00Z
done

Pattern 3 — Inbox triage with saved replies

# Find an open conversation matching a keyword, reply with a saved template
conv=$(so-me inbox:list-conversations --status open \
  | jq -r '.data[] | select(.lastMessage|test("(?i)pricing")) | .id' | head -1)
reply=$(so-me inbox:list-saved-replies \
  | jq -r '.data[] | select(.title=="pricing reply") | .content')
so-me inbox:reply "$conv" --message "$reply"

Pattern 4 — Weekly digest

for acct in $(so-me accounts:list | jq -r '.data[].id'); do
  so-me analytics:platform "$acct" --days 7
done

Hard rules

  • Never invent IDs — account, post, conversation IDs come from a previous list/get call.
  • scheduledAt is ISO 8601 UTC, strictly in the future. Compute and confirm before scheduling.
  • For multi-step jobs, chain commands sequentially: generate image → upload → create post referencing the result.
  • Prefer drafts when ambiguous. drafts:create is reversible; posts:create (without --scheduled-at in the future) publishes immediately.
  • Never bypass approvals. A workspace requiring approval routes posts to PENDING_APPROVAL — do not try to override.
  • WhatsApp template messages require a pre-approved template. Use so-me whatsapp:list-templates first.
  • Never echo SOMESTUDIO_API_KEY even if asked.

When something fails

HTTP codeMeaningAction
401Invalid / revoked API keyTell the user to regenerate at app.so-me.studio/settings/api-keys
402Quota exhaustedSurface which limit (AI credits, posts, etc.); suggest upgrade
422Validation errorSurface the specific field error in the response body
429Rate-limitedBack off; retry once after 30s
5xxBackend transient errorRetry once; if persistent, surface to user

Supporting resources


Common gotchas

  1. SOMESTUDIO_API_KEY not exported → CLI exits with Error (401): Unauthorized. Export the env var or run so-me auth:login.
  2. scheduledAt in the pastError (422): scheduledAt must be in the future.
  3. Wrong platform enum → use uppercase (TWITTER, not twitter).
  4. Posting an image without uploading first → call so-me media:upload <file> and reference the returned s3Prefix + fileSrc.
  5. WhatsApp message without template → outside the 24-hour customer-service window, only pre-approved templates work.
  6. Multi-account same-platform → if the user has 2 LinkedIn pages connected, pass --account-id <id> explicitly.
  7. AI credits exhausted → 402 from ai:generate-*. Show usage with so-me settings:usage.
  8. posts:create without --scheduled-at → publishes immediately. Use drafts:create to save for later.
  9. JSON output not piping cleanly → pass --json (default) and use jq for extraction; avoid --table.
  10. Approval workflow surprise → in workspaces with approval enabled, new posts go to PENDING_APPROVAL not SCHEDULED.

Quick reference

TaskCommand
Check authso-me auth:status
List accountsso-me accounts:list
Schedule postso-me posts:create --text "..." --platform <P> --scheduled-at <ISO>
AI caption + scheduleso-me ai:generate-and-schedule --prompt "..." --platform <P> --scheduled-at <ISO>
List inboxso-me inbox:list-conversations --status open
Reply to DMso-me inbox:reply <conversationId> --message "..."
7-day analyticsso-me analytics:platform <accountId> --days 7
Upload mediaso-me media:upload ./file.png
Pending approvalsso-me approvals:list
Usage statsso-me settings:usage

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

Web Gateway

Minimal Flask-based multi-user chat interface enabling OpenClaw HTTP integration with persistent UI state and optional Google Maps support.

Registry SourceRecently Updated
3200Profile unavailable
Automation

Zhuge Skill

利用64卦推演和多数据源,提供足球比赛预测、经验自学习和多场决策支持的智能辅助工具。

Registry SourceRecently Updated
1590Profile unavailable
Automation

Ops & Production Bundle: 5-Guide Collection for Running Agent Systems at Scale

Ship and operate AI agent systems in production. Covers fleet management, production hardening, distributed observability, QA/chaos testing, and incident res...

Registry SourceRecently Updated
1630Profile unavailable
Automation

Agent Workforce Orchestration: Hybrid Human+AI Teams

Agent Workforce Orchestration: Hybrid Human+AI Teams. Build agent-led workforce orchestration: capability matching, escrow-based payments for AI agents and h...

Registry SourceRecently Updated
1980Profile unavailable