AdviblyDocs

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, placements

Target 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_id

generation_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:

ArgumentsWhat happens
Neither scheduled_at nor queuePublishes now.
scheduled_at (ISO 8601)Scheduled for that instant.
queue: trueDropped into the brand's queue, slot assigned.
draft: trueSaved, 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>" }
}
NetworkThe rule that bites
FacebookAlways needs page_id. It cannot post to a personal profile.
LinkedInA company page needs organization_id. Without it the post goes to the personal profile.
YouTubeA 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-drop puts the link in the first DM with no follow gate.
  • once_per_user is per_post by default; ever and never are 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

On this page