Social Media Uploader Pro - Post From Claude, ChatGPT or n8n avatar

Social Media Uploader Pro - Post From Claude, ChatGPT or n8n

Pricing

from $0.000013 / actor start

Go to Apify Store
Social Media Uploader Pro - Post From Claude, ChatGPT or n8n

Social Media Uploader Pro - Post From Claude, ChatGPT or n8n

Post videos from Claude, ChatGPT or n8n. This is an MCP server. Point your client at the Standby URL and nine tools show up. You pass your own logins on every call; the server stores none. Each upload is a billable run on your own account, even when it fails. On YouTube use the OAuth tool.

Pricing

from $0.000013 / actor start

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

2 hours ago

Last modified

Share

Social Media Uploader Pro: post videos to your own accounts from Claude, ChatGPT or n8n

This is an MCP server. Point your AI client at its Standby URL and nine tools appear, six of which publish a video to your own TikTok, Instagram, Facebook or YouTube account from a public URL. Then you say "post this to TikTok and YouTube" and it happens.

Two things to know first. Your Apify token goes into the URL twice, because Apify's Standby gateway removes the copy it authenticated you with, and a single copy answers NO_APIFY_TOKEN on every tool. And every upload starts a separate, billable Actor run on your own Apify account: one that fails to publish still costs that Actor's run-start fee, and where an Actor bills per megabyte, that charge covers the bytes it moved either way.

InputTool calls from your MCP client, carrying your own platform logins
OutputA started upload run on your account, and its result when you ask for it
CeilingNine tools, six platforms, one platform per call
Account neededYour own Apify token, plus your own login for each platform
Price$0.0000125 per start of this server. Each upload is a separate billable run on your account

🔌 What Social Media Uploader Pro does

It is a thin wrapper. Your client calls a tool, the tool starts the matching uploader Actor on your account with the input you gave it, and hands back the run id. No upload happens inside this server.

You pass your own credentials on every call. They land in that run's input record, encrypted in the fields the Actor marks secret. The server keeps none, logs none, and takes them out of any error text.

The nine tools, read off the running server:

What you want to doTool
See which platforms your token can reach, and read their live priceslist_platforms
Post to TikTokupload_tiktok
Post a Reel to Instagramupload_instagram_reel
Post a Reel to a Facebook Page or profileupload_facebook_reel
Post a vertical video to YouTube as a Shortupload_youtube_short
Post a long video to YouTube through the browser routeupload_youtube_video
Post to YouTube over Google's official API with your own OAuth appupload_youtube_video_oauth
Check what a run did, and whether anything was actually publishedget_upload_status
Stop a run that is stuckabort_upload

Call list_platforms first. It starts no upload, and says which of the six your token can reach and what each charges right now.

📥 What you give it

Connect your client to the Standby URL with your Apify token in it twice:

https://dami-studio--social-media-uploader-pro.apify.actor/mcp?token=YOUR_TOKEN&apifyToken=YOUR_TOKEN

In Claude Desktop, n8n or any MCP client, that URL is the whole setup. A call looks like this:

{
"videoUrl": "https://example.com/clip.mp4",
"caption": "New drop, link in bio",
"privacy": "public",
"cookies": "<your own TikTok cookie export>",
"maxTotalChargeUsd": 1,
"demoMode": false
}

Four supporting arguments are on every upload tool, whatever the platform:

  • maxTotalChargeUsd caps what the run may spend on your account. Set it.
  • demoMode starts the Actor, checks the input and returns a labelled sample. It neither verifies your login nor uploads, and it still costs that Actor's run-start fee.
  • proxyConfiguration goes to the uploader exactly as you send it, if you use it at all.
  • waitSeconds returns a run id at once, or waits for a result.

📤 What you get back

A tool call answers with the run it started. get_upload_status is what you ask afterwards: run status, the charges settled on your account, and the Actor's own result row.

FieldWhat it is
runIdThe child run on your account. Everything else is looked up from this.
publishedWorked out from the result row, never from the run status. This is the field that matters.
duplicateSuppressedtrue when you sent the same upload twice inside ten minutes and the first run was still going, so the same runId comes back instead of a second upload.
privacyStatus, privacyOverriddenOn the YouTube OAuth route, what YouTube actually stored against what you asked for.

A normal, non-Standby run uploads nothing. It writes one notice row and stops, which is what you get if you press Start on the Actor page:

{
"ok": true,
"kind": "mcp-server-info",
"message": "This Actor is an MCP server. Enable Standby for it, then point your AI agent / MCP client at its Standby URL. A normal run only prints this notice, it uploads nothing...",
"tools": ["list_platforms", "upload_tiktok", "upload_instagram_reel", "upload_facebook_reel", "upload_youtube_short", "upload_youtube_video", "upload_youtube_video_oauth", "get_upload_status", "abort_upload"],
"toolCount": 9,
"platforms": ["tiktok", "instagram_reel", "facebook_reel", "youtube_short", "youtube_video", "youtube_video_oauth"]
}

🧾 Reading the output

A finished run is not a published video. These uploaders write a diagnostic row and exit normally rather than crashing, so a run can read SUCCEEDED and have published nothing. Read published, nothing else.

Three answers mean a setup problem rather than an upload problem:

CodeWhat it means
NO_APIFY_TOKENYour token reached the gateway but not the server. Put it in the URL twice, as above.
ACTOR_NOT_ACCESSIBLEThe token is fine but cannot reach that uploader. Run list_platforms to see which ones it can.
NOT_AN_UPLOAD_RUNThe run id you passed is not a run of one of the six uploaders.

get_upload_status and abort_upload work on any run of those six Actors on your account, not only the ones this server started. Neither starts an upload or bills an upload event.

▶️ How to run it

  1. Open Social Media Uploader Pro and copy the Standby URL from the API tab.
  2. Add your Apify token twice: ?token=...&apifyToken=....
  3. Paste that URL into your MCP client as a remote server and restart the client.
  4. Ask it to run list_platforms. Six platforms with prices should come back.
  5. Ask it to post something, with demoMode on first.

💰 How much does it cost?

The server itself is $0.0000125 per start. list_platforms, get_upload_status and abort_upload cost nothing beyond that.

Every upload is a separate billable run on your own Apify account, at the published price of the Actor behind that platform. list_platforms reads those prices live, so they never go stale in your client. Three things to plan for:

  • A run that fails to publish still costs that Actor's run-start fee.
  • Where an Actor bills per megabyte, that covers the bytes it moved, published or not.
  • demoMode starts a real run, so it is not free either.

That is what maxTotalChargeUsd is for. Set it on every call, especially with an agent driving.

💡 What people use it for

  • Posting one clip to three platforms by asking once, instead of opening three apps.
  • The last step of an n8n pipeline: render, then publish, no browser in the loop.
  • Letting an assistant queue a week of uploads from a folder of clips and captions.
  • Publishing from a machine with no display on it.

🚧 What it does not do

  • It does not store your logins. Every call carries its own, so there is no way to check whether a login is alive without starting a run.
  • One platform per call. Three platforms is three calls and three runs.
  • No scheduling of its own. YouTube's scheduled publish is there through the OAuth tool. Anything else, schedule on your side.
  • An unverified Google Cloud project makes every OAuth upload private. YouTube stores it that way whatever you asked for, and lifting it needs Google's own audit. Check privacyOverridden before treating an upload as public.
  • A Google consent screen in "Testing" issues refresh tokens that die after seven days. Move it to "In production" or the integration stops a week after you build it.
  • An abort does not refund. Whatever charged before you stopped it stays charged.
  • It does not make the video. Bring a public URL to a finished file.

🧭 Which uploader do you need?

If you wantUse
To post by asking Claude, ChatGPT or n8nThis one
To post one TikTok yourself from the Apify consoleTikTok Video Uploader Pro
To post one YouTube video yourselfYouTube Video Uploader Pro
Research tools for your agent instead of uploadsResearch MCP Server
The title, caption and hashtags written firstSocial Metadata Generator

❓ Questions people ask

Why does the token go in twice? The gateway consumes the copy it authenticates with, so the server never sees it. The apifyToken copy is the one it reads.

Which YouTube tool should I use? upload_youtube_video_oauth. Google's own API, your OAuth app, no browser. That is the route to build anything unattended on.

Where do my cookies and tokens end up? In the input of the run you started, on your account, encrypted in the fields that Actor marks secret. Not in a log, not in a dataset, not held here.

My agent called the tool twice. Did I pay twice? Not if the second call was identical, inside ten minutes, while the first was still running. The same run id comes back with duplicateSuppressed set.

🆘 If something breaks

Open the Issues tab on the actor page. Send the run id and the tool you called. Never paste a cookie, a token or a client secret into an issue.