Schedule a week of posts
Turn finished generations into a scheduled week across connected accounts, with per-platform overrides and comment-to-DM armed before publish.
Publishing is where an agent quietly does damage: a post going out now instead of Tuesday, or landing on the wrong account. Two habits prevent both. Resolve the targets explicitly, and schedule rather than publish while the user is still reviewing.
Resolve the targets
advibly_social_list_accounts {
brand_id,
context: "Listing the brand's connected social accounts before scheduling the approved campaign posts to the right profiles."
}
→ accounts[]: profile_id, platform, handle, status, placementsTarget profile_ids explicitly. Omitting both profile_ids and
target_platforms publishes to every connected account on the brand,
which is rarely what a week's plan means.
If the brand holds several accounts per network, they are grouped into
account sets, and one post cannot span two sets. Send a separate post per
set. Naming a platform instead of profile_ids targets the primary set only.
Attach media by generation id
advibly_social_create_post {
brand_id,
caption: "Three weeks, no pilling. Our serum, now in the 50ml size.",
generation_ids: [imageGenerationId],
profile_ids: [instagramProfileId, tiktokProfileId],
scheduled_at: "2026-10-01T09:00:00Z",
context: "Scheduling the approved campaign image and caption on the selected profiles at the user's requested publishing time."
}
→ post_id, status, postproxy_post_idgeneration_ids resolves the Advibly media automatically, which is more
reliable than pasting URLs. media_urls exists for anything that did not come
from Advibly.
Scheduling mode is decided by which arguments you send:
| Arguments | What happens |
|---|---|
Neither scheduled_at nor queue | Publishes now. |
scheduled_at (ISO 8601) | Scheduled for that instant. |
queue: true | Dropped into the brand's queue, slot assigned. |
draft: true | Saved, not published. |
While the user is still approving copy, draft: true or a scheduled_at
well in the future are both safe. Publishing now is not reversible by
deleting the post.
Per-platform overrides
One call covers the week's cross-posting; platform_configurations handles
where the networks disagree.
platform_configurations: {
youtube: { title: "Three weeks, no pilling", privacy_status: "public" },
instagram: { caption: "...", format: "reel" },
linkedin: { organization_id: "<id>" },
facebook: { page_id: "<id>" }
}| Network | The rule that bites |
|---|---|
Always needs page_id. It cannot post to a personal profile. | |
A company page needs organization_id. Without it the post goes to the personal profile. | |
| YouTube | A custom cover_url is invalid on Shorts and is dropped automatically for vertical clips of three minutes or less. Long-form keeps it, and the channel must be verified. |
Both ids come from the placements on advibly_social_list_accounts.
Arm comment-to-DM in the same call
A trigger is keyed by the post id, which exists from the moment of scheduling. So arming a scheduled post makes the automation live the minute it publishes, and there is no window where the caption asks for a comment nothing answers.
advibly_social_create_post {
brand_id,
caption: "Comment GUIDE and I'll DM you the full routine 👇",
generation_ids: [...],
scheduled_at: "2026-10-01T09:00:00Z",
dm_automation: {
keyword: "GUIDE",
thing: "morning routine guide",
link: "https://example.com/guide",
link_title: "Get the guide",
flow: "guide-drop"
},
context: "Scheduling the campaign post and arming its comment-to-DM automation so the caption's call to action works from publish."
}guide-drop(the default) sends a DM with a button, checks whether the person follows the posting account, then delivers the link card.link-dropputs the link in the first DM with no follow gate.once_per_userisper_postby default;everandneverare the other two.- Instagram only, and the caption has to tell people to comment the keyword. The automation is what delivers the link; the caption is what triggers it.
On a post that already exists, advibly_social_arm_dm_automation takes the
same fields plus post_id. Drafts have no post id, so dm_automation and
draft: true together are refused.
Amend before it goes out
advibly_social_update_post {
post_id,
caption: "...",
scheduled_at: "2026-10-02T09:00:00Z",
context: "Applying the user's requested caption and timing change to the scheduled campaign post before it publishes."
}Edits are rejected within roughly five minutes of publish time. Past that line, delete and recreate.
Confirm and measure
advibly_social_get_post {
post_id,
context: "Checking the per-platform publishing result of the scheduled campaign post to report status back to the user."
}Publishing is per network, so one post can succeed on Instagram and fail on TikTok. A failed post can be retried without recreating it.
For the week's results, advibly_social_list_posts returns posts with
performance, and advibly_social_get_profile_stats returns account-level
numbers.
A missing or disconnected profile in advibly_social_list_accounts means the
network authorisation lapsed. It has to be reconnected in Settings →
Integrations; no MCP call can
renew it.
Next
- Make the week's creative first: Launch campaign image set.
- Feed it from long footage: Cut a long video into clips.