Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Generate professional social media carousel posts using the PostNitro.ai Embed API. Supports AI-powered content generation and manual content import for Link...
Generate professional social media carousel posts using the PostNitro.ai Embed API. Supports AI-powered content generation and manual content import for Link...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Generate social media carousel posts via the PostNitro.ai Embed API. Two workflows: AI generation (topic/article/X post โ carousel) and content import (your own slides, with optional infographics).
Sign up at https://postnitro.ai (free plan: 5 credits/month) Go to account settings โ "Embed" โ generate an API key Set up your template, brand, and AI preset in the PostNitro dashboard Set environment variables: export POSTNITRO_API_KEY="your-api-key" export POSTNITRO_TEMPLATE_ID="your-template-id" export POSTNITRO_BRAND_ID="your-brand-id" export POSTNITRO_PRESET_ID="your-ai-preset-id" Base URL: https://embed-api.postnitro.ai Auth header: embed-api-key: $POSTNITRO_API_KEY
All carousel creation is asynchronous: Initiate โ Poll Status โ Get Output.
curl -X POST 'https://embed-api.postnitro.ai/post/initiate/generate' \ -H 'Content-Type: application/json' \ -H "embed-api-key: $POSTNITRO_API_KEY" \ -d '{ "postType": "CAROUSEL", "templateId": "'"$POSTNITRO_TEMPLATE_ID"'", "brandId": "'"$POSTNITRO_BRAND_ID"'", "presetId": "'"$POSTNITRO_PRESET_ID"'", "responseType": "PNG", "aiGeneration": { "type": "text", "context": "5 tips for growing your LinkedIn audience in 2026", "instructions": "Professional tone, actionable advice" } }' Returns { "success": true, "data": { "embedPostId": "post123", "status": "PENDING" } }. Save the embedPostId. aiGeneration.type values: "text" โ context is the text content to turn into a carousel "article" โ context is an article URL to extract and convert "x" โ context is an X (Twitter) post or thread URL See examples/generate-from-text.json, examples/generate-from-article.json, and examples/generate-from-x-post.json.
curl -X POST 'https://embed-api.postnitro.ai/post/initiate/import' \ -H 'Content-Type: application/json' \ -H "embed-api-key: $POSTNITRO_API_KEY" \ -d '{ "postType": "CAROUSEL", "templateId": "'"$POSTNITRO_TEMPLATE_ID"'", "brandId": "'"$POSTNITRO_BRAND_ID"'", "responseType": "PNG", "slides": [ { "type": "starting_slide", "heading": "Your Title", "description": "Intro text" }, { "type": "body_slide", "heading": "Key Point", "description": "Details here" }, { "type": "ending_slide", "heading": "Take Action!", "cta_button": "Learn More" } ] }' Returns same response format with embedPostId. Slide rules: Exactly 1 starting_slide (required) At least 1 body_slide (required) Exactly 1 ending_slide (required) heading is required on every slide Slide fields: heading (required), sub_heading, description, image (URL), background_image (URL), cta_button, layoutType, layoutConfig. For infographic slides, set layoutType: "infographic" on body slides โ replaces the image with structured data columns. See examples/import-infographics.json and references/api-reference.md for full infographics config.
curl -X GET "https://embed-api.postnitro.ai/post/status/$EMBED_POST_ID" \ -H "embed-api-key: $POSTNITRO_API_KEY" Poll every 3โ5 seconds until data.embedPost.status is "COMPLETED". The logs array shows step-by-step progress.
curl -X GET "https://embed-api.postnitro.ai/post/output/$EMBED_POST_ID" \ -H "embed-api-key: $POSTNITRO_API_KEY" Returns downloadable URLs in data.result.data: PNG: Array of URLs (one per slide) PDF: Single URL See references/api-reference.md for full response schemas.
Generate a carousel from a topic with professional tone: { "aiGeneration": { "type": "text", "context": "5 mistakes startups make with their LinkedIn strategy and how to fix each one", "instructions": "Professional but conversational tone. Each slide should have one clear takeaway." } }
Turn an existing article into a carousel: { "aiGeneration": { "type": "article", "context": "https://yourblog.com/posts/social-media-strategy-2026", "instructions": "Extract the 5 most actionable points. Keep slide text concise." } }
Convert a viral X thread into a visual carousel: { "aiGeneration": { "type": "x", "context": "https://x.com/username/status/1234567890", "instructions": "Maintain the original voice and key points" } }
Import slides with structured infographic layouts: See examples/import-infographics.json for a complete example with grid and cycle layouts.
LinkedIn: Professional tone, actionable insights, 6โ10 slides, clear CTA. Instagram: Visual-first, concise text, 5โ8 slides, storytelling arc. TikTok: Trendy, punchy, 4โ7 slides, hook on slide 1. X (Twitter): Data-driven, 3โ6 slides, provocative opening.
Default responseType is PDF โ always specify "PNG" explicitly if you want individual slide images. heading is required on every slide โ omitting it returns an error. Slide structure is strict โ exactly 1 starting, at least 1 body, exactly 1 ending. Article type needs a URL โ "article" type expects a URL as context, not plain text. X type needs an X post URL โ "x" type expects https://x.com/... or https://twitter.com/... as context. Infographics replace images โ setting layoutType: "infographic" overrides any image on that slide. Cyclical infographics use first column only โ columnDisplay: "cycle" ignores data in columns 2+. Max 3 columns โ columnCount cannot exceed 3 for infographic layouts. Image URLs must be public โ image and background_image fields require publicly accessible URLs. Credits vary by method โ AI generation costs 2 credits/slide, content import costs 1 credit/slide.
PlanPriceCredits/MonthFree$05Monthly$10250+ (scalable) Content import: 1 credit per slide AI generation: 2 credits per slide
Reference docs: references/api-reference.md โ Complete endpoint reference with request/response schemas and infographics config Ready-to-use examples: examples/EXAMPLES.md โ Index of all examples examples/generate-from-text.json โ AI generation from text examples/generate-from-article.json โ AI generation from article URL examples/generate-from-x-post.json โ AI generation from X post examples/import-default.json โ Basic slide import examples/import-infographics.json โ Import with infographic layouts
# Auth Header: embed-api-key: $POSTNITRO_API_KEY # AI generation POST /post/initiate/generate { postType, templateId, brandId, presetId, responseType?, requestorId?, aiGeneration: { type, context, instructions? } } # Content import POST /post/initiate/import { postType, templateId, brandId, responseType?, requestorId?, slides: [{ type, heading, ... }] } # Check status (poll until COMPLETED) GET /post/status/{embedPostId} # Get output (download URLs) GET /post/output/{embedPostId}
Always confirm the user has set POSTNITRO_API_KEY, POSTNITRO_TEMPLATE_ID, POSTNITRO_BRAND_ID before calling any endpoint. POSTNITRO_PRESET_ID is only required for AI generation, not for content import. For "article" type, the context must be a URL โ not article text. For article text, use "text" type. For "x" type, the context must be an X/Twitter post URL. Default responseType is "PDF" โ always pass "PNG" if the user wants individual slide images. When importing slides, always structure as: 1 starting_slide โ 1+ body_slide โ 1 ending_slide. For data-heavy content, suggest using infographic layouts on body slides instead of plain text. Poll GET /post/status/{embedPostId} every 3โ5 seconds โ don't hammer the endpoint. After getting output, the data field contains download URLs โ present them to the user directly. If the user doesn't specify a platform, suggest LinkedIn (most common carousel use case). Warn users about credit costs upfront: AI generation is 2x the cost of content import.
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.