Nodes/MLTask_ComfyUI/SocialMan Poster
ComfyUI Node

SocialMan Poster

The node that actually hits Post — one token, eight networks

By misterjoessef·Created 2 years ago·Updated 2 years ago· 1
SocialMan Poster
  • token
  • post_data
  • tiktok_data
  • youtube_data
  • facebook_data
  • instagram_data
  • twitter_data
  • linkedin_data
  • pinterest_data
  • post_link
media_file_pathuse media to poster node
show_status_bannerfalse
prepare_onlyfalse

This is the node you've actually been looking for. Every other node in the MLTask/SocialMan suite builds a data dictionary - captions, titles, which account to target. SocialManPoster is the one that talks to the network and makes the post real. You wire your image or video in, feed it the per-platform data dicts, and it publishes to Facebook, Instagram, Twitter, LinkedIn, Pinterest, TikTok, YouTube, and the generic post feed in one shot.

Here's the part to get straight before you start: this is not a local posting tool, and the name is not a lie about it calling an API - it does, and you need a token. The node is a thin client to MLTask's cloud service. When you run it, it POSTs to https://comfy.api.mltask.com/v1/create-post with your media's file path and every data dict you attached. The MLTask backend - not your machine - talks to each platform's real API, hands back a post ID and pre-signed upload URLs, and the node streams your image or video (plus thumbnails) up to those URLs before calling /complete-post to actually publish. If you're offline, nothing happens. If you don't have a SocialMan subscription, the backend rejects you with a user_not_subscribed error. It's a paid SaaS with a free token, not a forever-free thing.

What you set

The token input is the whole ballgame, and it's a custom widget, not a text field. The node shows you three buttons: Set Token, Set Password, and Get New Token. The last one opens mltask.com/user/comfyui, where you generate a token. The token is a 32-character hex string, stored in a socialman.json file inside the pack's directory - that's why the account-dropdown nodes (Facebook, Instagram, Pinterest, YouTube) stay stuck on "Refresh or set the token" until you do this. The password is a separate 4+-character PIN you invent; think of it as the local trigger you pull to authorize each post. Both are sent with every request, and neither belongs in a shared workflow. That default text is blunt for a reason: don't paste your token into a workflow you're going to share.

The inputs that matter after that:

  • media_file_path - a STRING file path. Easiest source is SocialManMediaToPoster, which turns an IMAGE tensor or a Video Helper Suite file into a real path for you.
  • post_data - title + description from SocialManPostData, the generic fallback when you don't want platform-specific settings.
  • The seven platform dicts - facebook_data, instagram_data, twitter_data, linkedin_data, pinterest_data, tiktok_data, youtube_data - each produced by its matching PosterData node. Connect only the ones you want to post to.
  • show_status_banner - toggles pop-up progress ("Uploading main file…") so you're not staring at a frozen graph.
  • prepare_only - uploads and stages the post but skips the final publish. Genuinely handy for testing a workflow without spamming your followers.

The single output is post_link (a STRING): the URL of the published post, which a success dialog also shows you.

Where people get burned

  • GIFs hard-fail. The code raises "Gif files not supported at the moment." Convert to a video or a static image first.
  • YouTube is video-only. If your media is an image, the node silently empties the YouTube data - the YouTube API can't take image posts. The Facebook, Instagram, and Pinterest thumbnails get dropped too, because they only serve as video covers.
  • Thumbnails only matter for video. Wire yt_thumbnail / fb_thumbnail / insta_thumbnail / pin_thumbnail when your media is a video; for images they're ignored.
  • Errors arrive as dialog messages, not console spam. "No token provided," "Token expired," "Wrong password," and "You are not subscribed" all map to specific hints. The generic "something went wrong, make sure the video is valid" one usually does mean the video file is corrupt or a format the backend won't take.

Installing it

The pack installs once, the normal way: ComfyUI Manager, search MLTask_ComfyUI, install, restart. Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/misterjoessef/MLTask_ComfyUI

Its requirements.txt is just requests and aiohttp - light. The pack does use ffprobe (from ffmpeg) to time TikTok video covers, so keep ffmpeg on PATH. This is a small, low-traffic pack with a video tutorial linked from the README; if you hit something odd, that tutorial is more likely to save you than a search - there's almost no forum chatter about it yet.

CategoryMLTask/SocialMan

Inputs (12)

NameTypeDefaultDescription
tokenSM_TOKENput your token here and DO NOT SHARE IT WITH ANYONE
media_file_pathoptSTRINGuse media to poster node
post_dataoptMLT_SM_POST_DATA
tiktok_dataoptMLT_SM_TIKTOK_DATA
youtube_dataoptMLT_SM_YOUTUBE_DATA
facebook_dataoptMLT_SM_FACEBOOK_DATA
instagram_dataoptMLT_SM_INSTAGRAM_DATA
twitter_dataoptMLT_SM_TWITTER_DATA
linkedin_dataoptMLT_SM_LINKEDIN_DATA
pinterest_dataoptMLT_SM_PINTEREST_DATA
show_status_banneroptBOOLEANfalse
prepare_onlyoptBOOLEANfalse

Outputs (1)

NameTypeDescription
post_linkSTRING