AI Content Repurposing: Blog to Social Posts
Pricing
from $40.00 / 1,000 format generateds
AI Content Repurposing: Blog to Social Posts
Paste a blog post, transcript or URL and get up to 9 publish-ready formats: tweet thread, LinkedIn post, SEO meta, summary, Instagram caption and carousel, Reels/Shorts script, YouTube title and description. Platform limits checked and auto-fixed.
Pricing
from $40.00 / 1,000 format generateds
Rating
0.0
(0)
Developer
Turgay NANTA
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
4 days ago
Last modified
Categories
Share
AI Content Repurposing: Blog Post to Social Media Posts
You wrote one good article. Now it needs a tweet thread, a LinkedIn post, an Instagram caption, a carousel, a Shorts script, a YouTube title and description, a meta description and a summary. Rewriting the same idea nine times takes an afternoon, and generic AI tools give you posts that are too long for the platform or sound like a robot.
Paste a blog post, transcript or newsletter, or give its URL. This content repurposing tool writes up to nine publish-ready formats from it, checks each one against the platform's limits, and fixes the ones that do not fit before you see them.
- Nine formats from one source: tweet thread (X), LinkedIn post, SEO meta description, short summary, Instagram caption with hashtags, Instagram carousel, Reels/Shorts script, YouTube title, YouTube description with hashtags.
- Limits checked by code, not hoped for: tweets at most 280 characters, meta description 150-160 characters, YouTube title at most 70 characters, hashtag counts, word counts, slide counts.
- Auto-fix: a format that is too long is trimmed at a sentence or word boundary; one that still does not fit is rewritten once by the model.
- One status table: every format shows its size, whether it is publish-ready, what was fixed, and the full text to copy.
- Only from your content: the model is told not to invent facts and to avoid cliché AI phrasing.
- Five output languages: English, Turkish, German, Spanish, French, whatever the source language.
- Clear cost: the default four formats cost $0.1801 per source; all nine cost $0.3801 (see Pricing).
Example: the status table
| Format | Size | Publish Ready | Auto Fix | Warning | Preview |
|---|---|---|---|---|---|
| Tweet Thread | 5 tweets | Yes | none | none | 1/ Most remote teams don't fail on tools. They fail on habits... |
| LinkedIn Post | 164 words | Yes | none | none | Remote work stopped being a perk a while ago. The teams that do... |
| SEO Meta Description | 158 characters | Yes | trimmed | none | Remote teams that thrive share three habits: written communication... |
| Short Summary | 3 sentences | Yes | none | none | Remote work is now the default for many knowledge workers... |
Illustrative example based on the one-click sample text; wording varies per run. In the real dataset, empty Auto Fix and Warning cells show a dash. Each row also has a Content column with the full text.
At a glance
| Input | Source text (sourceText) or a public article URL (url), plus the formats you want |
| Output | One dataset row per format (status + full content) and a final _summary row |
| Formats | tweet_thread, linkedin_post, seo_meta, summary, instagram_caption, instagram_carousel, reels_shorts_script, youtube_title, youtube_description |
| Quality checks | Character, word, sentence, tweet, slide and hashtag limits per format |
| Auto-fix | Deterministic trim for over-long text, then one model rewrite if still outside the limit |
| Languages | Output in English, Turkish, German, Spanish or French |
| Pricing | Per source processed + per format generated; see Pricing |
| Runs on | Apify Console, API, schedules, n8n, Make, Zapier, AI agents via MCP |
Quick start
- Paste your article or transcript into Source text, or put a blog post address into Source URL.
- Choose the Formats to generate. The default is tweet thread, LinkedIn post, SEO meta description and summary.
- Pick the Output language.
- Click Start. Open the Dataset tab: the Format Status view shows the table; the
Contentfield holds each full text.
The form comes with a short sample text, so one click on Start shows you the output. When you give a URL, it is used instead of the text.
The nine formats and their checks
| Format | What you get | Checked limits |
|---|---|---|
| Tweet Thread (X) | 4-7 numbered tweets, the first one a hook, at most 2 hashtags requested | 4-7 tweets, each at most 280 characters |
| LinkedIn Post | A professional but warm post with a strong first line, short paragraphs, a question or call to action | 120-220 words |
| SEO Meta Description | One paragraph with the main keyword | 150-160 characters |
| Short Summary | 3-4 information-dense sentences, main idea first | 2-6 sentences |
| Instagram Caption | A hook in the first lines, a short body, 8-12 relevant hashtags at the end | At most 2,200 characters, 8-15 hashtags |
| Instagram Carousel | 5-8 numbered slide texts, hook first, call to action last | 5-8 slides |
| Reels/Shorts Script | Spoken text for a vertical video of about 60 seconds, strong first 3 seconds, no stage directions | At most 140 words |
| YouTube Title | One line, main keyword first, not clickbait | At most 70 characters |
| YouTube Description | A strong first two sentences, short detail, 3-5 hashtags at the end | At least 40 words, 3-5 hashtags |
"Publish Ready: Yes" means the text passed these checks. It does not replace reading the post before you publish it.
Use cases
Bloggers and newsletter writers
Every new article becomes a thread, a LinkedIn post and a meta description in one run. Schedule posts over the week from one piece of writing.
Podcasters and YouTubers
Paste an episode transcript. Get a YouTube title and description, a Shorts script for a clip, and an Instagram caption to promote the episode.
Content marketing teams and agencies
Turn each client article into a ready social pack. The status table shows at a glance which formats are ready and which need a human look.
SaaS and B2B marketers
Repurpose release notes, case studies and webinar summaries into LinkedIn posts and carousels for the sales team to share.
Small business owners
Write one update about your shop or service and get posts for every channel without learning each platform's rules.
Multilingual teams
Write the source once and generate the posts in English, Turkish, German, Spanish or French. The source can be in any language.
Automation builders
Connect a blog RSS feed or CMS webhook to the Actor through n8n, Make or Zapier, and send the generated formats to a scheduling tool or a review sheet.
Worked example: one article, one week of posts
You publish a 1,500-word article on "Three habits of productive remote teams".
- Run with the URL and all nine formats selected.
- Check the status table. Suppose eight formats are "Yes". The Instagram caption shows "No" with the warning "7 hashtags (expected 8-15)".
- Look at Auto Fix. The SEO meta description says "trimmed": it was 171 characters and was cut at a sentence boundary to fit 160. The YouTube description says "regenerated (LLM)": its hashtag count was fixed by a rewrite.
- Fix the one remaining item by hand (add a hashtag), or accept it.
- Plan the week: Monday LinkedIn post, Tuesday thread, Wednesday carousel, Thursday Shorts script, Friday Instagram caption. The meta description goes into your CMS, the summary into your newsletter.
Cost: $0.0001 + $0.02 + 9 x $0.04 = $0.3801. Rewrites for auto-fix are not charged as extra formats.
How it works
- Choose the source. If
urlis filled, the page is downloaded and its HTML tags, scripts and styles are removed. OtherwisesourceTextis used. - Clean. Extra spaces and blank lines are removed. Sources longer than 12,000 characters are cut at a word boundary.
- Generate each format separately. Each format has its own instructions (length, structure, hashtags) plus shared rules: write in the chosen language, use only the source content, avoid cliché phrases and emoji piles, return only the requested text.
- Check limits. Code counts tweets, characters, words, sentences, slides and hashtags against the table above.
- Auto-fix, step 1 (free): SEO meta description, YouTube title, Instagram caption and Reels script that are too long are trimmed, preferring a sentence ending, never cutting a word in half.
- Auto-fix, step 2: if a format still does not fit, the model gets one rewrite request with the exact rule and the measured problem. The rewrite is kept if it fits, or if it has no more warnings than the original.
- Write the table. One row per format, then a
_summaryrow.
If one format fails to generate, the others continue and the failed one is not charged.
Input
| Field | Type | Default | Description |
|---|---|---|---|
sourceText | string | sample text | The content to repurpose: article, transcript, newsletter, notes. Used when url is empty. |
url | string | empty | A public blog or article URL. When given, it takes priority over sourceText. |
formats | array | 4 formats | Which formats to generate. An empty list means all nine. |
language | string | English | Output language: English, Türkçe, Deutsch, Español, Français. |
model | string | claude-haiku-4-5-20251001 | Advanced. claude-sonnet-4-6 for deeper, more creative writing. |
Example: all formats from a URL
{"url": "https://yourblog.com/remote-team-habits","formats": [],"language": "English"}
Example: selected formats from a transcript, in German
{"sourceText": "Welcome to episode 42. Today we talk about ...","formats": ["youtube_title", "youtube_description", "reels_shorts_script"],"language": "Deutsch"}
Output
One row per format
| Column | Content |
|---|---|
Format | Format name, for example "LinkedIn Post" |
Size | Measured size: tweets, words, characters, sentences, slides, hashtags |
Publish Ready | Yes if all checks passed, otherwise No |
Auto Fix | trimmed, regenerated (LLM), or a dash when nothing was changed |
Warning | What is still outside the limit, or a dash |
Preview | First 90 characters |
Content | The full text to copy |
tweets | For the thread: the list of tweets, one per item |
slides | For the carousel: the list of slides, one per item |
format | The format key, for example linkedin_post |
The _summary row
| Key | Content |
|---|---|
generated_formats | How many formats were produced |
requested_formats | How many were requested |
all_publish_ready | true when every generated format passed its checks |
source_char_count | Length of the cleaned source text |
source_url | The URL, when you used one |
hashtag_tip | Present when a hashtag format was generated: a pointer to our Instagram Hashtag Discovery Actor for checking hashtag demand |
Pricing
This Actor charges per event. Current prices are on the Pricing tab; at the time of writing:
| Event | When | Price |
|---|---|---|
actor-start | Once per run | $0.0001 |
content-processed | Once per run, for the source text | $0.02 |
format-generated | Per format generated | $0.04 |
Formats that fail to generate are not charged. Auto-fix rewrites are included in the format price.
Examples
| Run | Calculation | Total |
|---|---|---|
| 1 format | $0.0001 + $0.02 + 1 x $0.04 | $0.0601 |
| Default 4 formats | $0.0001 + $0.02 + 4 x $0.04 | $0.1801 |
| All 9 formats | $0.0001 + $0.02 + 9 x $0.04 | $0.3801 |
| 20 articles a month, 4 formats each | 20 x $0.1801 | $3.602 |
| 20 articles a month, all 9 formats | 20 x $0.3801 | $7.602 |
There is no separate scraper billed to your account: URLs are downloaded directly by the Actor.
Integrations
API
curl -X POST "https://api.apify.com/v2/acts/enezli~ai-content-repurposer/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"url":"https://yourblog.com/remote-team-habits","formats":["tweet_thread","linkedin_post"]}'
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("enezli/ai-content-repurposer").call(run_input={"sourceText": open("article.txt").read(),"formats": ["linkedin_post", "instagram_caption", "youtube_title"],"language": "English",})for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row.get("_summary"):continueprint(row["Format"], row["Publish Ready"])print(row["Content"], "\n")
n8n, Make, Zapier
Trigger: new blog post (RSS, CMS webhook, Google Docs) → Run Actor with the post URL → Get dataset items → send rows with Publish Ready = Yes to your social scheduler or a Google Sheet for review; send No rows to a person.
Schedules
If you publish on a fixed day, a scheduled task can process a source on a set day. For new posts, an RSS-triggered workflow in n8n, Make or Zapier fits better.
AI agents (MCP)
Available through the Apify MCP server, so an assistant can repurpose a document on request ("turn this article into a LinkedIn post and a thread").
Workflow recipes
Blog-to-social pipeline. In n8n, Make or Zapier, trigger on each new post in your blog's RSS feed, run the Actor with the post URL and the formats you publish, and write the rows to a "to review" sheet. A person approves each row and pastes it into the scheduler.
Podcast launch kit. After each episode, paste the transcript with youtube_title, youtube_description, reels_shorts_script and instagram_caption. You get the upload texts and a clip script from one run.
Evergreen recycling. Pick your ten best older articles and run each with the formats you did not publish at the time. Old content gets new reach without new writing.
Client social pack (agencies). For every article you write for a client, run all nine formats and export the dataset as Excel. The Publish Ready column doubles as your internal QA checklist.
One source, several languages. Run the same source three times with different language values to get localized posts for each market.
How to prepare a good source
- Lead with the point. The first paragraphs shape the hooks; a clear opening gives stronger first tweets and captions.
- Keep concrete facts in the text: numbers, examples, names, steps. The model is told not to invent, so what is not in the source will not be in the posts.
- Remove noise from transcripts: greetings, sponsor reads and filler words take up the 12,000-character budget.
- One topic per source. A post that covers five topics produces diluted threads; split it into several runs.
- Include your call to action (newsletter, product, event) in the source if you want it in the posts.
Tips for better results
- Give it real substance. A 500-2,000 word source with concrete points gives much better posts than two sentences.
- Use the URL of the article itself, not a homepage or category page; the Actor reads the whole page text, including menus.
- Paste text for pages that need JavaScript or a login. The URL fetch reads the plain HTML.
- Choose only the formats you publish. You pay per format.
- Use the stronger model for thought-leadership pieces where tone matters.
- Read before posting. "Publish Ready" checks limits, not opinions or facts.
Limitations
- Plain HTML fetch. URLs are downloaded directly without a browser. Pages that load their text with JavaScript, block bots, or require a login may return little or no text; paste the text instead.
- Menus and footers. The URL text includes whatever is on the page; navigation text can slip into the source. Pasting the article body gives cleaner results.
- 12,000 characters of source. Longer sources are cut; the end of a very long transcript may not be used.
- One source per run. For many articles, start several runs or loop through the API.
- Limits are checked, not guaranteed. After the trim and one rewrite, a format can still be outside its limit; it is then marked "No" with the reason.
- Hashtags come from your content, not from live platform data. Check demand separately if reach matters.
- No posting. The Actor writes content; it does not publish to any platform.
Troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
| Output is about the sample text, not your article | Old behavior when both text and URL were set; now the URL wins | Make sure url is filled; otherwise replace the sample sourceText |
| Run failed: "Could not fetch URL content" | The site blocked the request, timed out or needs a login | Paste the article text into sourceText |
| Posts mention menu items or cookie text | The page has a lot of non-article text | Paste the article body instead of the URL |
| A format shows "No" | Still outside its limit after auto-fix | Read the Warning; edit by hand or run again |
| Posts are in the wrong language | language left at English | Choose the output language |
| Run failed: "Source content is empty" | Both sourceText and url were empty | Add text or a URL |
FAQ
Which formats are generated by default?
Tweet thread, LinkedIn post, SEO meta description and short summary. Select more in the form, or send an empty formats list through the API for all nine.
Does it post to my social accounts? No. It produces the text; publishing stays with you or your scheduling tool.
Can I use a YouTube video or podcast as the source?
Paste its transcript as sourceText. The Actor works on text.
Will the posts sound like AI? The instructions ban common AI clichés and emoji piles and ask for natural, human writing based only on your source. Tone still depends on the source and the model; the stronger model writes with more nuance.
What does "trimmed" mean? The text was a little too long and was cut at the end of a sentence or word to fit the limit, without inventing anything.
What does "regenerated (LLM)" mean? The format did not fit after trimming, so the model rewrote it once with the exact rule. It is included in the format price.
Can the source be in one language and the output in another? Yes. Choose the output language; the source can be in any language the model reads.
Are my texts stored? Only in your own Apify storage. The source text is sent to the language model provider solely to write your formats.
Can I process many articles at once? One source per run. Start runs in parallel or loop over your articles through the API or an automation tool.
Why is there a hashtag tip in the summary? Hashtags here are derived from your content. The tip points to our Instagram Hashtag Discovery Actor if you want to check which hashtags are actually used.
What's new
- URL takes priority: when you give a URL, the page is used, even though the sample text is pre-filled in the form. Earlier versions could repurpose the sample text instead.
Trademarks
This Actor is not affiliated with, endorsed by, or connected to X, LinkedIn, Instagram, Meta, YouTube or Google. All product names are trademarks of their respective owners.