Schedule Instagram Reels, posts and TikToks from your Mac
The content queue in Mobster for Mac posts for your profiles from the iPhones they are signed in on. You line up media, a caption, hashtags, a sound, a profile and a time. When a post is due, Mobster sends its media to that profile’s iPhone, writes the post in the app, checks which profile is signed in and stops at Post. You approve it, and it goes out. This is the queue end to end, with the files and limits that matter when you run more than one profile.
Name each profile and its iPhone
A profile is a handle on a social app, such as @yourbrand on Instagram. Open Settings › Profiles, choose Add a profile, and fill in:
- Handle and App. The same handle can be on several apps, once per app.
- iPhone it’s signed in on. Tasks for this profile run on that phone. Default phone uses the phone a task would use anyway.
- How replies should sound, a Signature and Links, which the agent reads before it writes as the profile.
- Optional region, language and time zone, which the phone should be set to.
Profiles keep no passwords, card numbers or API keys, and Mobster refuses a value that looks like one. Your Mobster account is a different thing: it lives in Settings › Account. A task for @yourbrand starts in Instagram on its phone and goes out as @yourbrand.
A phone runs one task at a time. Two profiles on one iPhone post one after the other, and two profiles on two iPhones post side by side.
Line up posts
Open Queue in the sidebar.
- Drop photos and videos anywhere on the page. Each one becomes a post. Drop a folder to add everything in it.
- A text file beside a photo with the same name (
beach.jpgandbeach.txt) becomes its caption. - Add posts opens a menu: Choose photos and videos, Choose a folder and Import a CSV.
Files you drop are copied into the app’s data folder, up to 4 GB each. Files you choose with the picker stay where they are. On each post, write the caption, the hashtags (#spring #sale or spring, sale) and a sound. Choose its profile and Set a time. A post with no time goes when the queue starts. A caption holds at most 2,200 characters with its hashtags. A post holds at most 10 photos or videos, as a carousel.
Watch a folder turns a folder into a drop box. Every new photo or video saved there joins the queue as a post for the profile you choose, with the text file beside it as its caption. Files already in the folder stay out. A file still being written waits until it has not changed for 10 seconds.
Import a CSV
One post a row, with a header row. Only media is required, and columns go in any order:
media,caption,hashtags,sound,profile,schedulelaunch/ teaser.mov,Two days.,launch,Golden Hour,@yourbrand on TikTok,2026-10-20T09:30launch/ 1.jpg|launch/ 2.jpg,Swipe for the details.,"launch, spring",,@yourbrand on Instagram,2026-10-20T12:00Paths separated by | make a carousel. A schedule without an offset is read in the profile’s time zone. The format column takes auto, post, reel, story or video. The content queue docs list every column. An import is your own click in the Mac app: another program with the API token cannot start it.
What happens when a post is due
For each due post, on its profile’s iPhone, Mobster does three things.
- Send the media. It sends the photos and videos into Photos, in an album named Mobster, dated now so they are first in the app’s picker. It uses the route that reaches the phone (the cable, Wi-Fi, AirDrop or iPhone Mirroring) and checks each file. If a file does not arrive, the post stops there and nothing is posted.
- Write and post. The built-in agent opens the app, picks the media in order, adds the sound and the caption, and taps Post, which waits for your approval.
- Copy the link. After the post goes out, the agent taps Copy link, and the queue reads the link from the phone’s clipboard.
Phones that start in the same moment start apart: 90 seconds by default. The menu beside the approval choice offers 30 seconds, 5 minutes or together.
Check the profile before Post
Before Mobster posts, it confirms which profile is signed in. It reads the app’s own profile screen, the one with Edit profile, and looks for the handle at the top. The run shows this step as Check the profile, and the queue’s step is CHECK_PROFILE. Three outcomes:
- The profile matches. The task goes on, and the approval says As @yourbrand on Instagram.
- Another profile is signed in. The task stops before anything is sent: “This would post as @sam.personal, not @yourbrand. Mobster stopped before posting.”
- Mobster can’t tell. The agent opens the profile screen again. After three tries the task stops: “Mobster couldn’t confirm on screen that @yourbrand is signed in to Instagram, so it stopped before posting.”
Mobster never switches profiles inside an app. Switch on the phone, then run the post again. Someone else’s profile, one with Follow or Message on it, never counts as yours.
Approve each post, or the batch
Choose how posts are approved, then Start queue.
| Approval | What happens at Post |
|---|---|
| Ask before each post | each post shows its approval card, “As @yourbrand on Instagram”, and waits for you |
| Approve the batch | Approve N covers the posts as they are now. Mobster answers each of their Post cards once, for that profile in that app. A post you change afterwards asks again |
Any other card, such as a message, a follow or a purchase, still waits for you. A queued post asks before posting in every permission mode, and a “Don’t ask again” you gave elsewhere does not apply to it.
Pacing per profile
Each profile keeps a pace, in every task as that profile and in the queue. Choose Pacing on a profile in the queue to change it.
| Kind | A day, at most | Minutes between |
|---|---|---|
| Posts | 4 | 60 |
| Messages | 20 | 4 |
| Comments | 30 | 2 |
| Follows | 30 | 2 |
| Likes and reactions | 100 | 0.5 |
A day is counted in the profile’s own time zone, and so is its posting window (Posts between 09:00 and 21:00, say). The queue holds a post until its profile’s pace and window allow it, and the post says when: “Waits for @yourbrand’s pace: next post at Thu 14:00”. A post with a time waits for them only within its own day. If they would hold it to a later day, it shows Missed its time. A post with no time waits as long as they need.
When an app shows a profile a captcha, asks it to verify the account or who it is, or warns about automated or unusual activity, Mobster stops without acting and pauses the profile. If you set an alert webhook, it sends a line there. Nothing runs as that profile until you deal with it in the app and press Resume.
How each post ends
| State | Meaning | What you can do |
|---|---|---|
| Posted | the Post was approved and the task saw it go out | View post |
| Declined | the Post was not approved, or the card timed out: nothing went out | edit it, or Run again |
| Didn’t post | it stopped before Post (the media didn’t arrive, another profile was signed in, the sound wasn’t there) | fix it, then Run again |
| Check the profile | the Post was approved, and the task could not confirm it went out | look at the profile, then It posted or It didn’t |
| Missed its time | more than 2 hours past its time while Mobster is not running, its profile is paused, or it waits for your client’s approval; or its profile’s pace or posting window would hold it past its day | set a new time, or Run again |
Run again drops the post’s old time: it goes once its queue runs and its profile’s pace and window allow, on any day. If that run does not post, press Run again to try again.
Mobster never posts again on its own after a post whose outcome it cannot confirm. If it quits while a post is going out, that post shows Check the profile when you reopen the app. Every queue step is written to a journal before it starts (queue-journal/, beside your task history). Results lists every post that ended, with its profile, outcome, time and link. Export report saves a CSV of them.
Script it
The queue has an HTTP API under /api/queue, with the same token as the rest of the Mobster API. These routes are the ones to know:
| Route | What it does |
|---|---|
POST / | add posts: {items: [{media, caption, hashtags, sound, format, profile, scheduledAt}]} |
POST /, /stop | start or stop the queue |
GET / | the posting report |
GET, POST / | a profile’s pace |
POST / | a paused profile runs again |
The API still says accounts for profiles, because 0.4.0 shipped under that name. Starting a queue, the batch approval and imports are your own clicks in the Mac app, so another program with the token cannot do them.
Try it
Get Mobster for Mac, add a profile and the iPhone it is signed in on, and drop one photo into Queue. Set it to Ask before each post and start the queue. Watch the Post card appear with the profile’s name on it. If the post is for a client, Get client approval for social posts with one link shows how to ask them first. For the inbox side of the same profiles, read Instagram DM management on your own iPhone. The phone setup is in Automate your own iPhone from a Mac, and Safety lists when Mobster asks first.
Questions
Does Mobster post without asking me?
No. When a post is due, Mobster stops at Post and waits. You approve each post on its card, or approve the whole batch once. A post whose outcome Mobster can't confirm is never posted again by Mobster.
Can the queue post to Instagram and TikTok at the same time?
Yes, when the profiles live on different iPhones. Posts on different iPhones go at the same time, started 90 seconds apart by default. A phone runs one task at a time, so two profiles on one iPhone post one after the other.
What stops a post from going out under the wrong profile?
Before it posts, Mobster opens the app's own profile screen and looks for the handle. If another profile is signed in, the post stops with nothing sent. Mobster never switches profiles inside an app.
How many posts can a profile make in a day?
By default 4 posts a day and at least 60 minutes between them, counted in the profile's own time zone. You change both under Pacing on the profile, and you can set a posting window such as 09:00 to 21:00.
Can I import a spreadsheet of posts?
Yes, in Mobster for Mac. Add posts, then Import a CSV. Only the media column is required. Caption, hashtags, sound, profile, schedule and format are optional.



