Efecto — Social Media Design Guide
Design social media assets — Instagram, YouTube, TikTok, Twitter/X, LinkedIn, Pinterest, Facebook — using the Efecto design tool. Proper sizing, bold typography, and platform-specific best practices.
Setup
This skill requires the
Efecto MCP server. Check if it's available by looking for tools like
,
, or
in your tool list.
If Efecto tools are NOT available, install the MCP server:
Claude Code
bash
claude mcp add efecto -- npx -y @efectoapp/mcp
Cursor
json
{
"mcpServers": {
"efecto": {
"command": "npx",
"args": ["-y", "@efectoapp/mcp"]
}
}
}
Windsurf / VS Code / Other MCP Clients
json
{
"mcpServers": {
"efecto": {
"command": "npx",
"args": ["-y", "@efectoapp/mcp"]
}
}
}
Once installed, you'll have access to 46 design tools plus a standalone image search tool. The MCP server connects your agent to the Efecto design canvas at
efecto.app.
How It Works
- Your agent creates an Efecto session via MCP ()
- You open the returned design URL in your browser
- The agent pushes design commands — you see every change live
- Iterate with natural language until the design is perfect
Using Efecto Tools — Quick Reference
Session Workflow
Every design starts with a session:
create_session label: "Instagram Carousel"
Returns
. Tell the user to open the URL, then poll
until
.
Building Social Media Designs
The primary workflow is: create artboard → add sections with JSX → refine with updates.
# 1. Create an artboard (Instagram post example)
create_artboard name: "Slide 1" width: 1080 height: 1080 backgroundColor: "#111827" className: "flex flex-col"
# 2. Add content with JSX
add_section parentId: "<artboard-id>" jsx: '<section className="flex flex-col items-center justify-center gap-8 p-16 w-full h-full">
<h1 className="text-7xl font-extrabold text-white text-center leading-none">Stop designing like it's 2020</h1>
<p className="text-xl text-gray-400 font-medium">Swipe for 5 rules -></p>
</section>'
# 3. Duplicate artboard for carousel slides
duplicate_artboard artboardId: "<artboard-id>" newName: "Slide 2"
# 4. Read state and batch-update the duplicate
get_document
batch_update updates: [
{ nodeId: "abc", textContent: "01" },
{ nodeId: "def", textContent: "White space is not wasted space" }
]
All 46 Tools
| Category | Tools |
|---|
| Session | , , , |
| Reading | , , , , |
| Creating | , , |
| Modifying | , , , , |
| Organizing | , , , , , |
| Selection | , , , , |
| Alignment | , |
| Fill & Export | , |
| Viewport | , , , |
| Document | , |
| History | , |
| Theme | , , , |
| Quality | , |
JSX Format for
Write standard HTML tags with Tailwind
. The tag determines the node type:
<div>/<section>/<nav> → frame <img> → image
<h1>-<h6>/<p>/<span> → text <button> → button
<a> → link <svg> → icon
<input> → input <video> → video
Icons:
<svg icon="arrow-right" className="w-5 h-5 text-gray-600" />
Critical Gotchas
- Artboard must include — without it, children overlap at (0,0)
- Artboard is a property, NOT a className — use
backgroundColor: "#111827"
, not
- Never use arbitrary hex in className — silently fails. Use named colors () or inline
- Use instead of — doesn't work in Efecto
- Buttons ignore children — use a flex container with + instead
- Always add on direct children of artboards
- For carousels: use to create slides, then to change content per slide
Images — Use Real Photos, Not Placeholders
Use
to find free, high-quality stock photos from Lummi.
No session required — call it anytime.
search_images
query: "team celebration"
orientation: "square"
luminance: "bright"
limit: 4
Then apply images to your designs:
- Image node: with , , ,
className: "w-full h-full object-cover"
- Background fill: with
fill: { type: "image", url: "<url>", size: "cover" }
- In JSX:
<img src="<url>" alt="..." className="w-full h-full object-cover" />
Tips for social media: Match
to the platform format —
for Instagram/LinkedIn posts,
for Stories/Reels/TikTok,
for YouTube thumbnails/Twitter. Use
for dramatic social content. Real photos make social media content feel authentic — avoid empty placeholder boxes.
Shader Nodes & Visual Effects
Make social media content stand out with shader nodes. Use
with
.
Generative Backgrounds
Eye-catching backgrounds without images — perfect for quote cards, carousels, and story slides:
add_node
parentId: "<artboard-id>"
type: "shader"
shaderType: "meshGradient"
className: "w-full h-full"
Shader types:
(organic),
(premium),
(bold),
(energy),
(ambient),
(celebration).
Apply Effects to Photos
Process images with ASCII, dither, halftone, or glitch effects for scroll-stopping visuals:
search_images query: "team photo" orientation: "square" limit: 1
add_node
parentId: "<artboard-id>"
type: "shader"
inputType: "image"
mediaInput: { mediaUrl: "<url>", mediaType: "image", objectFit: "cover" }
effectId: "ascii-standard"
effectEnabled: true
className: "w-full h-full"
Best effects for social:
(tech/dev content),
(retro),
(print/zine),
(nostalgic),
(painterly),
(edgy).
Post-Processes
Add film grain, vignette, or scanlines for texture:
postProcesses: [
{ type: "grain", enabled: true, settings: { intensity: 0.3 } },
{ type: "scanlines", enabled: true, settings: { intensity: 0.2 } }
]
Mindset: Think Poster, Not Website
When you design a website, you're writing for someone who stopped scrolling and is reading. On social media, you have 1-2 seconds to communicate before they scroll past. This changes everything:
- Type big. The canvas is 1080px wide but renders at ~375px on a phone screen. A paragraph that's perfectly legible on a website becomes unreadable squished into an Instagram card. Default to or where you'd normally use .
- Write less. If a slide has more than 2-3 short lines, it has too much text. Cut ruthlessly. One idea per slide.
- Think like a billboard. Would you put a paragraph on a highway billboard? No. Same energy.
Typography for Social Media
Choose font sizes based on the role, not a formula. The canvas is large (1080px+) but the content is consumed small — so sizes need to be generous.
| Role | Size | Weight | Example |
|---|
| Hero / Impact | to | or | A single punchy statement |
| Slide headline | to | or | The main point of each slide |
| Supporting text | to | or | One sentence of context |
| Labels / tags | to | | Category labels, @handles |
| Smallest allowed | | any | Nothing smaller than this. Ever. |
Key insight: Where you'd use
on a website, use
on social. Where you'd use
for a web heading, use
to
on social. It's not scaling — it's choosing the right size for a medium that gets consumed at 1/3 the designed resolution.
Copywriting: Gen-Z Designer Energy
Social media copy is NOT web copy. Write like a creative director at a streetwear brand, not a SaaS marketing team.
Rules:
- Max 6-8 words per headline. "Ship faster. Break nothing." not "Our platform helps engineering teams ship code faster while maintaining quality."
- One idea per slide. If you need a comma, you probably need two slides.
- Kill filler words. No "that", "just", "really", "very", "in order to", "leverage", "utilize".
- Use sentence fragments. "Built different." "Zero to launch." "Your next big thing." Complete sentences are optional.
- Active voice, present tense. "Build" not "Building". "Ship" not "Shipping".
- No paragraphs. If text wraps more than 2 lines on a social media slide, rewrite shorter.
- CTAs are 2-3 words. "Follow for more" / "Save this" / "Link in bio" / "Try it free"
Bad (website brain):
"Our comprehensive platform provides teams with everything they need to design, build, and deploy modern web applications efficiently."
Good (social media brain):
"Design. Build. Ship."
Instagram
Artboard Sizes
| Format | Width | Height | Use Case |
|---|
| Post (Square) | 1080 | 1080 | Feed posts, single images |
| Portrait Post | 1080 | 1350 | Feed posts (more screen real estate) |
| Story / Reel | 1080 | 1920 | Stories, Reels, vertical video covers |
| Carousel Slide | 1080 | 1080 | Each slide in a carousel |
| Carousel (Portrait) | 1080 | 1350 | Carousel, portrait format |
Carousel Best Practices
- Slide 1 = the hook. Bold headline, eye-catching, minimal text. This is the thumbnail in someone's feed — it decides if they stop scrolling.
- Consistent design system. Same background, type styles, and layout across all slides. Only the content changes.
- One point per slide. Not three. Not two. One.
- Number your points. Big, bold numbers (01, 02, 03) anchor each slide and create a sense of progression.
- Last slide = CTA. "Follow for more" / "Save this for later" / "Link in bio".
- Swipe cue on slide 1. Arrow, dots, or "Swipe ->" so people know there's more.
- High contrast only. Subtle color differences get crushed by JPEG compression and small screens.
Carousel Template
jsx
// Slide 1 — Hook (bold, minimal, scroll-stopping)
<section className="flex flex-col items-center justify-center gap-8 p-16 bg-gray-900 w-full h-full">
<h1 className="text-7xl font-extrabold text-white text-center leading-none tracking-tight">Stop designing like it's 2020</h1>
<p className="text-xl text-gray-400 font-medium">Swipe for 5 rules -></p>
</section>
// Slide 2-N — Content (one idea, big number, short text)
<section className="flex flex-col justify-center gap-8 p-16 bg-gray-900 w-full h-full">
<span className="text-8xl font-black text-blue-400">01</span>
<h2 className="text-4xl font-bold text-white leading-snug">White space is not wasted space</h2>
<p className="text-2xl text-gray-400 leading-relaxed">Let your design breathe. Cramped layouts feel amateur.</p>
</section>
// Last Slide — CTA (simple, direct)
<section className="flex flex-col items-center justify-center gap-6 p-16 bg-gray-900 w-full h-full">
<h2 className="text-5xl font-extrabold text-white text-center">Found this useful?</h2>
<p className="text-3xl text-blue-400 font-bold text-center">Save it. Share it.</p>
<p className="text-xl text-gray-500 font-medium">@yourbrand</p>
</section>
Story Template
jsx
<section className="flex flex-col items-center justify-center gap-10 px-12 py-24 bg-gray-900 w-full h-full">
<span className="text-xl font-semibold text-blue-400 uppercase tracking-widest">New drop</span>
<h1 className="text-5xl font-extrabold text-white text-center leading-tight">Your bold statement here</h1>
<p className="text-2xl text-gray-400 text-center leading-relaxed max-w-[900px]">One short sentence of context.</p>
<button className="px-10 py-5 text-xl font-bold text-gray-900 bg-white rounded-2xl">See more</button>
</section>
YouTube
Artboard Sizes
| Format | Width | Height | Use Case |
|---|
| Thumbnail | 1280 | 720 | Video thumbnail (16:9) |
| Channel Banner | 2560 | 1440 | Channel art (safe area: 1546x423 center) |
| End Screen | 1280 | 720 | End screen overlay |
| Community Post | 1080 | 1080 | Community tab image |
Thumbnail Best Practices
YouTube thumbnails are the most competitive visual format on the internet. They render at ~200px wide in sidebar suggestions and ~360px in search results.
- Face + emotion wins. If applicable, a human face with an exaggerated expression outperforms everything. Use large image fills for photos.
- Max 3-5 words. The title does the explaining — the thumbnail does the selling. "DON'T DO THIS" beats "5 Common Mistakes Developers Make When Deploying".
- Massive text. to . If you can't read it at 200px wide, it's too small.
- High contrast outlines. Text needs to pop against any background. Use contrasting colors or add a dark container behind light text.
- Split composition. Left half = text/graphic, right half = face/subject. Or vice versa. Don't center everything.
- 2-3 colors max. Thumbnails with too many colors look chaotic at small sizes. Pick one bold accent color.
- No thin fonts. Everything or heavier. Thin type disappears.
Thumbnail Template
jsx
<section className="flex items-center gap-8 p-12 bg-blue-600 w-full h-full">
<div className="flex flex-col gap-4 grow">
<h1 className="text-7xl font-black text-white leading-none uppercase">Stop doing this</h1>
<p className="text-3xl font-bold text-blue-200">5 design mistakes</p>
</div>
<div className="w-[400px] h-[400px] bg-blue-800 rounded-3xl"></div>
</section>
Channel Banner Template
jsx
// Safe area is center 1546x423 — keep all important content there
<section className="flex flex-col items-center justify-center gap-4 p-16 bg-gray-900 w-full h-full">
<h1 className="text-6xl font-extrabold text-white tracking-tight">Your Channel Name</h1>
<p className="text-2xl text-gray-400 font-medium">Design tips every week</p>
</section>
TikTok
Artboard Sizes
| Format | Width | Height | Use Case |
|---|
| Video Cover | 1080 | 1920 | Video thumbnail / cover image |
| Profile Photo | 200 | 200 | Account avatar |
TikTok Tips
- Vertical-first — everything is 9:16
- Safe zones matter. Bottom 20% is covered by captions/UI. Top 15% has the username/follow button. Keep key content in the center 65%.
- Even bolder than Instagram — TikTok moves faster
- Text must be readable over video frames — use solid color blocks or dark overlays behind text
- to for headlines, nothing below
TikTok Cover Template
jsx
<section className="flex flex-col items-center justify-center gap-8 px-12 py-48 bg-gray-900 w-full h-full">
<span className="px-6 py-2 text-lg font-bold text-white bg-red-500 rounded-full uppercase">Part 3</span>
<h1 className="text-5xl font-extrabold text-white text-center leading-tight">The trick nobody talks about</h1>
<p className="text-2xl text-gray-400 text-center">Watch till the end</p>
</section>
Pinterest
Artboard Sizes
| Format | Width | Height | Use Case |
|---|
| Standard Pin | 1000 | 1500 | Standard pin (2:3 ratio) |
| Long Pin | 1000 | 2100 | Infographic / tall pin |
| Square Pin | 1000 | 1000 | Square format |
| Board Cover | 600 | 600 | Board thumbnail |
Pinterest Tips
- Pinterest is a search engine, not a feed. Pins are discovered through keywords, not followers.
- Tall pins win. 2:3 ratio takes more screen space in the masonry grid. Long pins (1000x2100) for infographics or step-by-step content.
- Text overlay is essential. Pinterest users scan thumbnails to decide what to click. If your pin is just a photo, it gets scrolled past.
- Keep text in the top 60% — the bottom gets cropped in grid view.
- Warm, bright colors outperform dark designs on Pinterest (opposite of Instagram/YouTube).
- Include a clear CTA: "Read more", "Get the free guide", "Shop now".
Pin Template
jsx
<section className="flex flex-col items-center justify-between gap-8 px-12 py-16 bg-amber-50 w-full h-full">
<div className="flex flex-col items-center gap-6">
<span className="text-lg font-bold text-amber-700 uppercase tracking-widest">Free Guide</span>
<h1 className="text-5xl font-extrabold text-gray-900 text-center leading-tight">10 Design Rules Every Beginner Needs</h1>
<p className="text-2xl text-gray-600 text-center">Save this pin for later</p>
</div>
<div className="w-full h-[500px] bg-amber-100 rounded-3xl"></div>
<p className="text-xl font-semibold text-amber-700">yourdomain.com</p>
</section>
Facebook
Artboard Sizes
| Format | Width | Height | Use Case |
|---|
| Post Image | 1200 | 630 | Shared image / link preview |
| Cover Photo | 1640 | 856 | Page cover (safe: center 820x312) |
| Event Cover | 1920 | 1005 | Event banner |
| Story | 1080 | 1920 | Facebook Story |
| Ad (Square) | 1080 | 1080 | Feed ad |
| Ad (Landscape) | 1200 | 628 | Feed ad, landscape |
Facebook Tips
- Facebook compresses images aggressively — use solid colors over subtle gradients
- Link preview images (1200x630) are the most common format — they appear when sharing URLs
- Cover photos get cropped differently on mobile vs desktop. Keep critical content in the center 820x312 safe zone.
- Text-heavy images get penalized in ad delivery — keep text under 20% of the image area for ads
- Wider aspect ratios (1200x630) for feed, vertical (1080x1920) for Stories
Post Template
jsx
<section className="flex items-center gap-12 p-16 bg-white w-full h-full">
<div className="flex flex-col gap-4 grow">
<span className="text-xl font-semibold text-blue-600 uppercase tracking-wide">Announcement</span>
<h1 className="text-5xl font-extrabold text-gray-900 leading-tight">We just launched something big</h1>
<p className="text-2xl text-gray-500">Link in comments</p>
</div>
<div className="w-[350px] h-[350px] bg-blue-100 rounded-3xl"></div>
</section>
Twitter / X
Artboard Sizes
| Format | Width | Height | Use Case |
|---|
| Image post | 1200 | 675 | Standard tweet image (16:9) |
| Card image | 1200 | 628 | Link preview card |
| Banner | 1500 | 500 | Profile banner |
| Two-image post | 700 | 800 | Each image in 2-image tweet |
| Thread graphic | 1200 | 675 | Consistent visual for threads |
Twitter Tips
- Even more aggressive than Instagram — the timeline is dense and fast
- Headlines: to
- Body: to max
- Aim for one sentence visible at a glance
- Works well with high contrast and bold color blocks
- Thread graphics: use a consistent template across all images with a numbering system (1/7, 2/7, etc.)
Tweet Image Template
jsx
<section className="flex flex-col items-center justify-center gap-6 p-16 bg-gray-900 w-full h-full">
<h1 className="text-6xl font-extrabold text-white text-center leading-tight">Hot take incoming</h1>
<p className="text-2xl text-gray-400 text-center">Your bold opinion in one sentence.</p>
<p className="text-xl text-blue-400 font-semibold">@yourhandle</p>
</section>
LinkedIn
Artboard Sizes
| Format | Width | Height | Use Case |
|---|
| Post | 1200 | 1200 | Square feed post |
| Portrait post | 1080 | 1350 | Takes more feed space |
| Carousel slide | 1080 | 1080 | Document carousel |
| Banner | 1584 | 396 | Profile/company banner |
| Article cover | 1200 | 644 | Newsletter header |
LinkedIn Tips
- Slightly more polished than Instagram, but same type-size rules apply
- Carousel slides: numbered insights, one per slide
- Include name/logo on every slide for brand recognition
- Professional does not equal boring — still use bold type and strong contrast
- LinkedIn carousels are uploaded as PDFs — each artboard becomes a page
LinkedIn Carousel Template
jsx
// Cover slide
<section className="flex flex-col items-center justify-center gap-8 p-16 bg-white w-full h-full border-2 border-gray-100">
<span className="text-xl font-semibold text-blue-600">Your Name | Topic</span>
<h1 className="text-5xl font-extrabold text-gray-900 text-center leading-tight">7 lessons from building a design system</h1>
<p className="text-2xl text-gray-500 text-center">A thread. Slide -></p>
</section>
// Content slide
<section className="flex flex-col justify-center gap-8 p-16 bg-white w-full h-full border-2 border-gray-100">
<span className="text-7xl font-black text-blue-600">01</span>
<h2 className="text-4xl font-bold text-gray-900 leading-snug">Start with your constraints, not your aspirations</h2>
<p className="text-2xl text-gray-500 leading-relaxed">A design system for 3 engineers looks nothing like one for 300.</p>
<p className="text-lg text-gray-400 font-medium">Your Name</p>
</section>
General Design Rules
Layout
- Center-align most content (social is not web's default left-align)
- Generous padding: to minimum — don't crowd the edges
- Vertically center: on slides — content should sit in the middle, not hang from the top
- on top-level sections to fill the artboard completely
Color & Contrast
- Minimum 4.5:1 contrast ratio — feed images get JPEG-compressed, low contrast disappears
- Solid backgrounds beat gradients for text readability
- Dark mode designs (white on dark) tend to pop more in feeds
- Avoid pastel-on-pastel — it looks washed out at thumbnail size
Multi-Slide Consistency
- Same background color on every slide
- Same headline position (same y-position across slides)
- Same font sizes for the same role (all headlines match, all body text matches)
- Brand element (@handle or logo) in the same spot on every slide
Platform Quick Reference
| Platform | Best Format | Text Style | Vibe |
|---|
| Instagram | 1080x1350 portrait | Bold, centered | Visual-first, aesthetic |
| YouTube | 1280x720 thumbnail | Massive, high-contrast | Clickbait energy, faces |
| TikTok | 1080x1920 vertical | Bold with safe zones | Fast, punchy, trending |
| Pinterest | 1000x1500 tall | Warm, clear overlay | Aspirational, search-driven |
| Facebook | 1200x630 landscape | Clean, readable | Broad audience, shareable |
| Twitter/X | 1200x675 landscape | One-liner, bold | Opinionated, minimal |
| LinkedIn | 1080x1080 square | Professional-bold | Thought leadership, clean |