Rewrite approved calendar posts for each social network
When a content calendar row is approved, each network gets its own version of the copy, scheduled to the right connected social profiles.
Watch my Airtable content calendar with a poll trigger on the new or updated record event, and run this once for each record that changes. Build this as an agent workflow, because the core copy has to be rewritten differently for each social network before anything gets scheduled. The first thing to do on every run is check the row's Status field: if it is anything other than Approved, stop immediately and do nothing. Also stop if the row is already marked Scheduled, so that editing a row that has already been booked never double posts it.
From the approved row, read the core copy, the link, the image URL, the list of target networks, and the publish date. The approved copy is the source of truth for what this post is allowed to say. A human signed off on that wording, so treat it as the full set of facts available to you.
Next, resolve the named networks into real profiles. Call Sendible Get Social Profiles to list the social profiles connected to my Sendible account, and match each network named on the row to the connected profile for that network, collecting its account id. If a network named on the row has no connected profile in Sendible, skip that network quietly and carry on with the others. A missing connection should never fail the whole run or block the networks that are connected.
Now rewrite the core copy once per network that resolved to a profile. For LinkedIn, write a longer, professional framing with a clear opening line and room to explain the point. For X, keep it under 280 characters including the link. For Instagram and Facebook, write a hashtag friendly caption with a handful of relevant hashtags. Include the row's link where the network supports it. Never invent claims, offers, statistics, customer names or product details that are not in the approved copy: rewriting here means reframing and reformatting for the audience of each network, not adding new substance.
Schedule each version with Sendible Schedule Message, one call per network so that every network gets its own wording. Note that send_to is a comma separated string of profile ids taken from Get Social Profiles, not a JSON array. Attach the row's image URL as a plain URL in the media array. If the row has a publish date, pass it as send_date_client, and be aware that Sendible interprets this in the time zone configured on the Sendible user account rather than UTC. If the row has no publish date set, omit send_date_client entirely, call Sendible Get Queues to find my publishing queue, and pass its queue id instead so the post is added to the queue rather than booked at a fixed time.
Once scheduling is done, close the loop. Use Airtable Update Record on the same record id to flip Status from Approved to Scheduled and stamp which profiles the post went to, so the calendar itself shows what is already booked. That update is a PATCH, so only those fields change and everything else the team put in the row is left untouched. Then post a short confirmation to my social channel with Slack Bot Send a Message: name the row, list which networks were scheduled and for when, and mention any target network that was skipped because no profile is connected. If every network was skipped, or every scheduling call failed, leave the row as Approved and say that in Slack instead, so someone can fix it and the row stays eligible.
What does this prompt do?
- Picks up a content calendar row the moment someone marks it Approved, and ignores anything still in draft, review or rejected
- Writes a separate version of the copy for each network you targeted: a longer professional framing for LinkedIn, a tight one under 280 characters for X, and a hashtag friendly caption for Instagram and Facebook
- Books each version onto the matching connected social profile at the publish date on the row, attaching the row's image, or drops it into a publishing queue when no date is set
- Flips the row to Scheduled, records which profiles it went to, and posts a short confirmation in your social channel
What do I need to use this?
- An Airtable base with a content calendar table, one row per planned post
- A Sendible account with the social profiles you want to publish to already connected
- A status field on the calendar that includes Approved and Scheduled as options, so approval is what releases a post
- Fields on each row for the core copy, a link, an image URL, the target networks, and the publish date
- A Slack workspace and a channel where your social team wants the confirmations
How can I customize it?
- Change the writing rules per network, for example a stricter length for X, a house style for LinkedIn, or a set number of hashtags on Instagram
- Rename the trigger status if your team uses Ready or Signed off instead of Approved
- Point the confirmation at a different Slack channel, or turn it off if the calendar is the only place people look
- Require an image before anything goes out, or allow text only posts on the networks that permit them
FAQs
Will it change the meaning of my copy?
What happens if one of my target networks is not connected?
What if the row has no publish date?
What time zone are posts scheduled in?
Do posts that are still being drafted ever go out?
Related templates
When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.
Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.
Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.
When you merge a fix in GitHub, this agent checks the matching dead-letter queue, replays the failed messages, and reports back on the pull request and in Slack.
Stop rewriting the same post four times.
Approve the row once and every network gets its own version, already scheduled to the right profiles.