marcolang/marketing-skills/instagram-carousel-tweet
Claude Code and agent skill by marcolang/marketing-skills
- community
Checking that the SKILL.md file is still in the repository.
Creates high-quality Instagram carousels in an X (Twitter) post visual format, delivered as swipeable HTML previews with export-ready slides (1080×1350px PNG). Handles the full workflow: brand setup, slide copy, X-style visual design (profile header, clean background, X engagement bar), HTML generation, and Playwright-based export. Use this skill whenever the user asks to create, design, or generate an Instagram carousel in tweet-style or X-style format (e.g., "tweet-style carousel", "X-style c…
Install
npx vskill@latest install marcolang/marketing-skills/instagram-carousel-tweetSKILL.md
Instagram Tweet-style Carousel Generator (X / Twitter Layout)
Generates fully self-contained, swipeable HTML carousels where every slide mimics an authentic X (Twitter) post — designed to be exported as individual 1080×1350px PNGs for Instagram.
Working Directory Rules
All file operations MUST use the current working directory (cwd) as the base. Never use hardcoded absolute paths like `C:\Users\marco\`.
- Detect cwd at the start of every session using
pwdoros.getcwd() - Save all generated files (HTML, PNGs) relative to cwd
- The
ASSETS/folder is always{cwd}/ASSETS/ - The
.claude/launch.jsonis always{cwd}/.claude/launch.json - The export output folder is always
{cwd}/slides/ - Never scan directories outside of cwd for project files or images
Step 0 — Ask Background Preference First
Before collecting any other details, always ask:
"Você prefere o fundo claro (branco, estilo X padrão) ou escuro (preto, estilo X dark mode)?"
This choice determines the entire color system and font colors. Do not proceed until the user answers.
Step 1: Collect Brand Details
After background preference is confirmed, ask for:
- Display name — shown in the post header (e.g., "Marco Lang")
- X handle — shown below the name (e.g., @marcolang)
- Verified badge — blue checkmark yes/no (default: yes)
- Profile photo — before asking the user anything about the photo, search in this order:
- `{cwd}/assets/` — check the project folder first (case-insensitive:
assets/orASSETS/) - Skill folder `assets/` — if not found above, check the skill's own assets folder at
~/.claude/skills/instagram-carousel-tweet/assets/
- Use the Glob tool or
lsto list files in each location - If an image file is found (JPG, PNG, WEBP) in either location, use it automatically and tell the user which file was picked — do not ask
- Only ask the user to provide a photo if no image is found in either location
- Content / topic — what the carousel is about
- Idioma dos slides — default: Português (BR) unless specified otherwise
- Number of slides — default: 7
If the user provides a website URL or brand assets, derive name and handle from those.
If the user says "make me a carousel about X" without brand details, ask before generating. Don't assume defaults.
Handling User-Provided Images
This section applies from the very first HTML generation — not only during export.
The profile photo will be located inside the ASSETS/ folder in the working directory. Always:
- Find the file in
ASSETS/(e.g.,ASSETS/foto.jpg,ASSETS/profile.png) - Check the actual file format with the
filecommand — extension may lie - Embed as base64
data:URI — never use relative paths
⚠️ Critical Rules
- NEVER use relative paths (
ASSETS/foto.jpg) — they break in every browser context except the exact folder the HTML lives in. - NEVER use `background: url(filepath)` — leads to 1.5MB+ base64 inline strings that crash the browser parser.
- ALWAYS embed as base64 `data:` URI — works in preview, export, and any environment.
- ALWAYS generate the HTML via Python (
Path.write_text()) — shell heredocs interpolate$and backticks, corrupting base64 strings.
Step-by-step: embed the profile photo
Common image mistakes to avoid
| Mistake | What goes wrong | Fix | |
|---|---|---|---|
<img src="ASSETS/foto.jpg"> | Broken image in browser | Always use base64 data: URI | |
background: url('data:...') inline with 1.5MB base64 | Browser parser crash | Use <img> tag with object-fit:cover | |
| Generating HTML via shell heredoc | $ and backtick chars corrupt base64 | Always use Python Path.write_text() | |
Assuming .png extension = PNG | Wrong MIME type breaks rendering | Run file command first |
Step 2: Color System
Two modes only — no gradients, no brand-derived palettes. The X aesthetic is deliberately minimal.
Light Mode (fundo claro)
Dark Mode (fundo escuro)
Step 3: Typography
X uses a system font stack. Use Inter from Google Fonts as the closest equivalent.
Font size scale:
- Display name: 16px, weight 700, color
TEXT_PRIMARY - Handle: 15px, weight 400, color
TEXT_MUTED - Tweet body: 20px, weight 400, line-height 1.55, color
TEXT_PRIMARY
_(Large text makes each slide readable at a glance — key for Instagram carousels)_
- Engagement counts: 13px, weight 400, color
TEXT_MUTED - Slide counter: 13px, weight 500
Apply via CSS class .x-font using font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif.
Slide Structure (X Post Layout)
Every slide is an exact replica of an X post. Structure from top to bottom:
Profile Header
Content Area
Content rules:
- Text should feel like a natural tweet — direct, punchy, no corporate speak
- Each slide = one thought / one point
- First slide is the hook (question, bold statement, number)
- Last slide is the CTA (follow, save, share)
- Do NOT repeat the same intro phrase on every slide
Engagement Bar + Slide Counter
Engagement numbers: Use realistic-looking but fictional numbers. Example: 847 replies, 2.3K reposts, 18.4K likes, 412K views. Vary per slide.
Slide Sequences
Standard Thread (7 slides — default)
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckinginstagram-carousel-tweet/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/marcolang/marketing-skills/instagram-carousel-tweet)