Repurpose your best Sprout Social posts into new drafts
Every Monday, find your three best performing posts, rewrite them for your other networks, and queue drafts for approval in Sprout.
Every Monday at 7am, mine my own best Sprout Social content and turn it back into new posts for my other connected networks.
Start by using the Sprout Social Query Post Analytics operation to pull every post I published in the last 30 days along with its lifetime performance metrics. Post analytics metrics carry a "lifetime." prefix, so read fields such as lifetime.impressions and lifetime.engagements (profile analytics metrics do not carry that prefix). This operation is index paginated with page and limit and caps the total result set at 10,000, so page through until I have the full 30 day window.
Rank the posts by engagement rate rather than raw impressions. Compute engagement rate per post as lifetime engagements divided by lifetime impressions, so that a strong post on a small profile is not buried under a mediocre post on a large one. Take the top three.
Skip any post I already repurposed in the last 90 days. Keep a running record of the source post ids this workflow has reused, carry that record between runs, and age out entries older than 90 days. If one of the top ranked posts is on that skip list, move down to the next best post so the same winner is not recycled every month.
Use the Sprout Social List Customer Profiles operation to resolve my connected profiles, their customer_profile_id values, and their network types. Profile ids used in filters are customer_profile_id values. For each of the three winners, work out which network it originally ran on, then write a genuinely fresh variant for each of my other connected networks. Do not copy the caption across. Adapt length, tone, and hashtag use per network: short and punchy with minimal hashtags for X, a longer and more professional framing without hashtag spam for LinkedIn, visual-first with a fuller hashtag set for Instagram, and conversational for Facebook. Keep the idea and the hook that made the original work, and change the execution.
For each variant, use the Sprout Social Create Publishing Post operation to put it into Sprout as a draft targeting that network's customer_profile_id, scheduled for a slot later that same week. Sprout publishing creates drafts only: is_draft must be true and delivery.type only accepts SCHEDULED. That constraint is a feature here rather than a limitation, because it makes the human approval step natural, so never describe this workflow as publishing automatically. Spread the scheduled times across the week instead of stacking them all at once.
Finish by sending a single Slack message with the Slack Bot Send a Message operation to my marketing channel. List every draft that was created, grouped under the original post that inspired it, and include that original's engagement rate plus a one line explanation of why it did well (the hook, the format, the topic, or the timing). For each draft, show the target network and the scheduled time so a human can approve or edit it in Sprout before anything goes out. If nothing qualified this week, say that in one line rather than sending an empty summary.
What does this prompt do?
- Looks at everything you published in the last 30 days and ranks it by engagement rate rather than raw impressions, so a great post on a smaller profile is not buried under an average post on a big one.
- Takes the top three winners and writes genuinely fresh variants for each of your other connected networks, adjusting length, tone, and hashtag use instead of copying one caption everywhere.
- Queues every variant in Sprout as a draft scheduled for a slot later that week, so nothing goes out until a person approves it.
- Sends one Slack summary listing what was drafted, which original post inspired it, and why that original did well.
- Remembers what it has already recycled and skips any post reused in the last 90 days, so the same winner does not come back around every month.
What do I need to use this?
- A Sprout Social account on the Advanced plan or higher. Social API access is not included on the Standard or Professional plans.
- At least two social profiles connected to Sprout, so there is somewhere to cross-post to.
- A Slack workspace and a channel where the weekly summary should land.
- Roughly 30 days of published posts already in Sprout, so there is enough history to rank.
How can I customize it?
- Change the timing. Monday at 7am is only a default, and any weekly or every-other-week slot works just as well.
- Change how many winners get repurposed each run, or how long a post has to rest before it can be reused again (90 days by default).
- Point the summary at a different Slack channel, and adjust the tone rules used for each network to match your brand voice.
FAQs
Will this post to my social accounts automatically?
Do I need a paid Sprout Social plan?
Why rank by engagement rate instead of impressions?
Will it just copy the same caption onto every network?
What stops the same post being recycled every month?
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 letting your best posts die after one week.
Mine your own top performers every Monday and queue fresh, network-specific drafts for approval in Sprout.