ad-x

Skill

Specifies what to produce for an X (Twitter) ad: Promoted Posts, Website Cards, App Cards, and Video Ads, with the exact slots (post text, card title, CTA enum), character limits (280 post, 70 card title), asset ratios, and the native-feel rules that decide whether the algorithm classes it as quality content or scroll-past. Use whenever the task is producing X ad copy or card assets; strictly platform-specific, so it does not cover audience targeting, conversion tracking, or organic posting strategy.

Apache-2.0 Octomind launch agents. Platform-specific to X/Twitter Ads.

Instructions

Overview

This skill defines exactly what to produce for an X (Twitter) ad. It is platform-spec only: the slots X exposes for Promoted Posts, Website Cards, App Cards, and Video Ads, the character limits, asset ratios, and the CTA button enum.

Instructions

Ad Formats Covered

FormatWhat You Produce
Promoted PostPost text (280 char), optional media, native append (no extra card)
Promoted Post + Website CardPost text + image/video + card title + URL + CTA
Promoted Post + App CardPost text + image/video + card title + app ID + CTA
Video AdPromoted Post with video + optional Website / App Card append
Image Carousel2–6 images, each with optional URL + CTA
Vertical Video AdFull-screen 9:16 video — runs in Immersive Media Viewer (Video tab) and dedicated placements
Spotlight Takeover24h top of Explore "For you" tab — premium
Timeline Takeover24h takeover on Home Timeline — premium
Trend Takeover / Trend Takeover+Premium trend sponsorship; Trend Takeover+ adds auto-playing video on tap
Amplify Pre-RollPre-roll on publisher video across 15+ content categories; 1:1 recommended
Dynamic Product Ads (DPA)Catalog-driven, requires X Pixel/CAPI + Shopping Manager; single/collection/carousel render
SlotLimitNotes
Post text280 charsSame as organic; emojis count
Media1 image, up to 4 images, or 1 video, or 1 GIFImage OR video, not both
Card appendOptionalIf used, draws Website Card or App Card below post

Website Card — Slots and Limits

SlotLimitNotes
Card title70 chars (2026: verify in Ads Manager — X revises limits)Shown below image/video
Card image1.91:1 (1200×628) or 1:1 (800×800)Required if no video
Card video16:9, 1:1, or 9:16Up to 2:20 — sweet spot 15–60s
Destination URLURLLanding page
CTA buttonEnumSee CTA section
Display URLAuto-shortenedCannot be customised

App Card — Slots and Limits

SlotLimitNotes
App iconPulled from app storeAuto
App namePulled from app storeAuto
App ratingPulled from app storeAuto
Card image1.91:1 or 1:1Required if no video
Card video16:9, 1:1, 9:16Up to 2:20
CTA button"Install", "Open", "Play", "Book"Limited App CTA set

Image / Video Specs

AssetSpecNotes
Promoted Post image1200×675 (16:9) or 1200×1200 (1:1)JPG / PNG, max 5MB
Multi-image (carousel)2–6 images, each 800×800 (1:1)Up to 6 images
Promoted Post video16:9 (1920×1080) or 1:1 (720×720) or 9:16 (720×1280)MP4, max 1GB, up to 2:20
Vertical Video Ad9:16 (1080×1920)Full-screen Explore placement
GIFUp to 15MBAuto-loops
Video bitrate6,000–10,000 kbpsHigher for vertical
Video frame rate29.97 or 30 fps60 fps allowed

CTA Button Enum (2026 — verify in Ads Manager)

X's creative specs page lists these CTA labels; the link-preview format with a headline below the media and a CTA button rolled out first for the Sales objective in 2025:

  • Play
  • Install
  • Open
  • Book
  • Shop
  • Connect
  • Order

Older labels (Learn More, Sign Up, Visit Site, Shop Now) may still appear on legacy cards or other objectives — pick from what Ads Manager offers for the chosen objective.

Copy Rules — Promoted Post Must Read Native

  • 280 chars is the hard cap, but the sweet spot is 70–150. Walls of text scroll past in milliseconds.
  • First line carries the post. The image or hook line must stop the thumb in ≤1 second.
  • No hashtags unless they're real topic tags (X's topic system, not arbitrary #marketing).
  • 1 link per post — if you append a Website Card, do NOT also put the URL in the text. Pick the card.
  • Emojis: 0–2, and only if they replace a word or anchor an idea. Decorative emoji strings (✨🚀💯) flag as low-quality.
  • Avoid "Click the link below" — readers know.
  • Avoid "Hey [audience]," openers — they read as templated ads.
  • Brand-safety verdict: edgy is fine if defensible. Crude language gets the ad classed as higher brand-safety risk, which narrows placements and reach.

Ranking Touchpoints (for ad-as-post)

Promoted Posts compete in the same feed ranking as organic posts, so the same quality signals apply:

  • Templated, generic copy and stock visuals underperform — make it look like a real artifact.
  • Fast scroll-past and negative feedback ("not interested", mutes, reports) cost delivery across the audience.
  • Brand-safety and policy classifiers can limit or stop delivery; disapproval is the visible form, reach loss the invisible one.

Takeover surfaces (Timeline, Trend, Spotlight) bypass the auction but still pass policy review.

Audience Reach Caveat (Premium / Premium+)

  • Premium+ users see NO ads in feeds
  • Premium tier users see ~50% fewer ads in For You / Following
  • Material consequence: organic-feeling creative compounds harder because the in-feed surface skews toward less-subscribed users
  • Char-count gotcha: if a URL is embedded in post text (not card-attached), each URL consumes 23 chars of the 280 budget — usable copy drops to 257 chars

Policy Constraints

  • Trademark / copyrighted material without authorisation — disapproval
  • Misleading metrics ("10M users" without proof) — manual review
  • Crypto and financial products — country-restricted and certification-gated; check X's financial services policy for the target country before writing (2026 rules change often)
  • Gambling — restricted, country-specific certification required
  • Adult content — banned in ads even though organic permits some under the Adult Content Creator (ACC) program
  • Political / issue ads — allowed only in specified countries, for certified advertisers, under local election law and silence periods (X reinstated political ads in 2023). Targeting an ineligible country = rejection
  • Personal attributes targeting in copy — disapproval risk
  • Sensitive personal events (illness, bereavement) — restricted
  • Adjacency exclusion — ads will not serve adjacent to 12 categories (adult, violence, political conflict, profanity, drugs, spam, misinfo, hate, terrorism, self-harm, gambling, obscenity). Affects reach in regulated verticals

Output Format

markdown
# X Ads — [Product] [Campaign Name]

## Format
[Promoted Post / Website Card / App Card / Video Ad / Carousel / Vertical Video]

## Destination URL
[Landing page URL]

## Promoted Post Text (≤280, ≤150 ideal)
> [Copy — first line is the hook]

Char count: [N]/280

## Website Card (if attached)
- Card title (≤70 char): [title] — [chars]
- CTA: [from enum]
- Image / video: see visual spec

## Visual Spec
- Asset type: [Image / Video / GIF / Carousel]
- Ratio: [16:9 / 1:1 / 9:16]
- Shot: [concrete scenario]
- Text overlay (video): "[per-scene captions]"
- First frame (video): [what's visible at 0s — must hook]

## Carousel (if used)
| # | Image (1:1) brief | URL | CTA |
|---|-------------------|-----|-----|
| 1 | [shot] | [URL] | [enum] |
| 2 | ... | ... | ... |

## Variant Set
| # | Angle | Post Text (≤280) | Card Title | CTA |
|---|-------|------------------|------------|-----|
| 1 | [angle] | [hook line + rest] | [≤70] | [enum] |
| 2 | ... | ... | ... | ... |

## Pre-Submit Checklist
- [ ] Post reads native — could pass as organic
- [ ] Post text ≤280 char (ideally ≤150)
- [ ] First line hooks in ≤1 second of read
- [ ] No "click the link below" or "Hey [audience]"
- [ ] One link OR one card — not both
- [ ] Emojis ≤2 and load-bearing, not decorative
- [ ] No hashtag spam
- [ ] CTA from correct enum (Website vs App card)
- [ ] Video captioned for silent autoplay
- [ ] Brand-safety: crude language out, defensible edgy in
- [ ] Visual ratio matches placement

When NOT to Use This Skill

  • Audience targeting / tailored audiences → out of scope
  • Conversion tracking / Pixel setup → out of scope