--- name: efecto-social-media description: Design social media assets with Efecto — Instagram posts, carousels, stories, YouTube thumbnails, TikTok covers, Twitter/X images, LinkedIn slides, Pinterest pins, and Facebook graphics. Use when asked to "design a post", "create a carousel", "make a thumbnail", "design social media", or any social content task. Requires Efecto MCP server. metadata: mcp-server: efecto author: pablostanley version: "1.0.0" argument-hint: --- # 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 `create_session`, `add_section`, or `get_document` 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 Add to `.cursor/mcp.json`: ```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 68 MCP tools, including image search and native animation authoring. The MCP server connects your agent to the Efecto design canvas at [efecto.app](https://efecto.app). ### How It Works 1. Your agent creates an Efecto session via MCP (`create_session`) 2. You open the returned design URL in your browser 3. The agent pushes design commands — you see every change live 4. 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 `{ sessionId, documentId, designUrl }`. Tell the user to open the URL, then call `wait_for_connection` (blocks until paired). If the user already has an Efecto URL with `?session=...`, call `attach_session` with that URL instead of creating a duplicate session. Never call `create_session` twice to "reconnect" — a paired session refuses overwrite without `force: true`. Use `session_status` to inspect routing (`{ all: true }` for the full session list). ### 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: "" jsx: '

Stop designing like it's 2020

Swipe for 5 rules ->

' # 3. Duplicate artboard for carousel slides duplicate_artboard artboardId: "" 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 68 Tools | Category | Tools | |----------|-------| | **Session** | `create_session`, `attach_session`, `wait_for_connection`, `session_status`, `close_session` | | **Reading** | `get_document`, `get_selection`, `get_node_tree`, `list_artboards`, `find_nodes` | | **Creating** | `create_artboard`, `add_section`, `add_node` | | **Modifying** | `update_node`, `update_class`, `update_artboard`, `batch_update`, `replace_section` | | **Animation** | `list_animation_presets`, `apply_animation_plan`, `clear_animations` | | **Organizing** | `move_node`, `duplicate_node`, `duplicate_artboard`, `group_nodes`, `ungroup_node`, `reorder_node` | | **Selection** | `select_nodes`, `deselect_all`, `set_visibility`, `delete_nodes`, `delete_artboard` | | **Alignment** | `align_nodes`, `distribute_nodes` | | **Fill & Export** | `set_fill`, `export_image` | | **Viewport** | `zoom_to_artboard`, `zoom_to_fit`, `set_viewport`, `move_artboard` | | **Document** | `rename_document`, `new_document` | | **History** | `undo`, `redo` | | **Theme** | `get_theme`, `set_theme`, `set_theme_mode`, `reset_theme` | | **Quality** | `audit_design`, `repair_design` | **Scoped reads (large docs).** `get_document` returns the whole tree by default — on multi-artboard carousels that can blow past tool-result token caps. Prefer scoped modes: `outline: true` (one-line summary per top-level child), `artboardId: "..."` (single slide), `maxDepth: N` (cap descent; 0 = artboard header only, 1 = top-level children). Response includes an approx-token count so you can decide whether to widen. Drill into a subtree with `get_node_tree` after. **Routing inspection.** `session_status` returns the legacy single-session shape by default (sessionId, paired, browserConnected, knownSessions). Pass `{ all: true }` for the list shape — every session in this MCP process with isActive/paired flags. If this MCP process restarted, `attach_session` with the current browser URL makes that session active again. ### JSX Format for `add_section` Write standard HTML tags with Tailwind `className`. The tag determines the node type: ```
/
/
``` --- ## 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. 1. **Face + emotion wins.** If applicable, a human face with an exaggerated expression outperforms everything. Use large image fills for photos. 2. **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". 3. **Massive text.** `text-6xl` to `text-8xl` `font-black`. If you can't read it at 200px wide, it's too small. 4. **High contrast outlines.** Text needs to pop against any background. Use contrasting colors or add a dark container behind light text. 5. **Split composition.** Left half = text/graphic, right half = face/subject. Or vice versa. Don't center everything. 6. **2-3 colors max.** Thumbnails with too many colors look chaotic at small sizes. Pick one bold accent color. 7. **No thin fonts.** Everything `font-bold` or heavier. Thin type disappears. ### Thumbnail Template ```jsx

Stop doing this

5 design mistakes

``` ### Channel Banner Template ```jsx // Safe area is center 1546x423 — keep all important content there

Your Channel Name

Design tips every week

``` --- ## 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 - `text-5xl` to `text-7xl` for headlines, nothing below `text-xl` ### TikTok Cover Template ```jsx
Part 3

The trick nobody talks about

Watch till the end

``` --- ## 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
Free Guide

10 Design Rules Every Beginner Needs

Save this pin for later

yourdomain.com

``` --- ## 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
Announcement

We just launched something big

Link in comments

``` --- ## 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: `text-5xl` to `text-7xl` `font-extrabold` - Body: `text-2xl` to `text-3xl` 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

Hot take incoming

Your bold opinion in one sentence.

@yourhandle

``` --- ## 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
Your Name | Topic

7 lessons from building a design system

A thread. Slide ->

// Content slide
01

Start with your constraints, not your aspirations

A design system for 3 engineers looks nothing like one for 300.

Your Name

``` --- ## General Design Rules ### Layout - **Center-align** most content (social is not web's default left-align) - **Generous padding**: `p-12` to `p-16` minimum — don't crowd the edges - **Vertically center**: `justify-center` on slides — content should sit in the middle, not hang from the top - **`w-full h-full`** 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 |