Instagram Post to Article
Pricing
from $100.00 / 1,000 articles
Instagram Post to Article
Under maintenanceTransforms Instagram carousel posts into longform blog articles using multimodal LLMs. Extracts slide images, interprets visual and textual content, and synthesizes a coherent longform article.
Pricing
from $100.00 / 1,000 articles
Rating
0.0
(0)
Developer
Hikayat Labs
Actor stats
0
Bookmarked
3
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
⚠️ ALPHA SOFTWARE — Expect breaking changes, bugs, and evolving features. Report issues →
Instagram Post to Article transforms Instagram carousel posts into longform articles using multimodal AI. It extracts carousel content, processes images with OCR, interprets visual and textual elements, and synthesizes a coherent article.
Works best with educational carousels, data-driven posts, how-to guides, and infographic-style content.
How it works
Three-stage pipeline:
- Extract — Invoke Instagram Scraper to fetch the post and download carousel images
- Interpret — OCR on text overlays + multimodal analysis of visual content (charts, infographics, data)
- Synthesize — Generate a structured article grounded in the source material
Processing takes ~30–60 seconds per post, depending on carousel length and image complexity.
Cost
Pay-per-event pricing:
| Event | Cost |
|---|---|
| Instagram extraction (via Instagram Scraper) | Billed by that actor — see its pricing |
| Slide processing | ~$0.01 per image |
| Article synthesis | ~$0.1 per article |
Typical 5-slide carousel: ~$0.2 total (depending on Instagram Scraper costs + slide processing). Pricing may change during alpha.
Input
{"postUrls": [{"url": "https://www.instagram.com/p/ABC123/"},{"url": "https://www.instagram.com/p/DEF456/","synthesisTemplate": "newsletter","synthesisGuide": "Include a subscriber call-to-action"}],"synthesisTemplate": "article","synthesisGuide": "Write in a neutral journalistic tone","includeExtracted": false,"includeInterpretation": false}
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
postUrls | array | ✅ | — | Instagram post URLs to process. Each item is an object with url (required) and optional overrides (see below). |
synthesisTemplate | string | No | "article" | Preset output style. Options: article, newsletter, social_thread, none. |
synthesisGuide | string | No | — | Custom instructions for tone, focus, style. Appended to template instructions. |
includeExtracted | boolean | No | false | Include raw extraction data in output. |
includeInterpretation | boolean | No | false | Include OCR results and semantic blueprint in output. |
Synthesis Templates
Templates provide base instructions for the LLM. synthesisGuide extends or refines them.
| Template | Output style |
|---|---|
article | General purpose — structured with headings, conversational voice |
newsletter | Concise, scannable, hook intro, call-to-action ending |
social_thread | Punchy, short paragraphs, engaging hooks — LinkedIn/Twitter style |
none | No template — only custom synthesisGuide (if any) is sent |
Per-URL Overrides
Each item in postUrls can override the global settings:
{"url": "https://www.instagram.com/p/ABC123/","synthesisTemplate": "newsletter","synthesisGuide": "Write for a tech-savvy audience","includeExtracted": true,"includeInterpretation": false}
Per-URL values take precedence over global defaults. Omit any field to inherit the global value.
Output
Each processed post produces one dataset item:
{"sourceUrl": "https://www.instagram.com/p/ABC123/","title": "Generated Article Title","body": "# Markdown article content...","wordCount": 1234,"sourceCount": 5,"error": null,"errorMessage": null}
| Field | Description |
|---|---|
sourceUrl | Original Instagram post URL |
title | Generated article title (markdown) |
body | Full article body in markdown |
wordCount | Word count of generated article |
sourceCount | Number of carousel slides used as source |
error | Error code if failed: SCRAPE_FAILED, IMAGE_DOWNLOAD_FAILED, OCR_FAILED, INTERPRETATION_FAILED, LLM_ERROR, TIMEOUT, CONFIG_ERROR, INTERNAL_ERROR |
errorMessage | Detailed error description |
extracted | (only if includeExtracted: true) Raw extraction data |
interpretation | (only if includeInterpretation: true) OCR results and semantic blueprint |
Failed posts still produce a dataset item with error and errorMessage populated. The actor continues processing remaining URLs.
API Usage
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("actor-id").call(run_input={"postUrls": [{"url": "https://www.instagram.com/p/EXAMPLE/"}],"synthesisTemplate": "article"})for item in client.dataset(run["defaultDatasetId"]).list_items().items:print(item["title"], item["wordCount"])
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: "YOUR_API_TOKEN" });const run = await client.actor("actor-id").call({postUrls: [{ url: "https://www.instagram.com/p/EXAMPLE/" }],synthesisTemplate: "article",});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) {console.log(item.title, item.wordCount);}
apify call actor-id \'{"postUrls":[{"url":"https://www.instagram.com/p/EXAMPLE/"}],"synthesisTemplate":"article"}'
FAQ
What post types work best? Educational carousels, how-to guides, data-driven posts, and infographics with text overlays. Single images, reels, and highly visual/low-text content don't translate well.
Private accounts? No. Only public posts.
Can I customize the output? Yes — use synthesisTemplate for a preset style and synthesisGuide for custom instructions on tone, structure, and focus.
What if a post fails? The actor continues processing remaining URLs. Check error and errorMessage in the output for details.
Can I automate runs? Yes. Use Apify scheduling, webhooks, or the API. Combine with Instagram Scraper to auto-process new posts from specific accounts.
Your Feedback
This is alpha software. Bug reports and feature requests help us improve:
- 🐛 Create an issue with the run ID, input parameters, and expected vs actual behavior
By Hikayat Labs