X Articles

Publish a blog post to X as a native long-form Article — real headings, formatting, and clickable links — instead of a link post.

X Articles are native long-form posts on X. Instead of distributing a blog post as a standard tweet carrying a link, BlackOps can draft the post as an Article: the title, a substantial excerpt with real headings, lists, bold and italic text, clickable links, and your post's hero image as the cover. The Article closes with the canonical link back to the full post on your site.

The reason this exists: X reduces the reach of posts that send people off-platform, so a link tweet underperforms native content. An Article is native content that X actually distributes, with the link to your site carried inside the body.

How it works

Drafting and publishing are two separate actions, and publishing is always yours.

draft_x_article takes a published blog post and creates an Article draft on X. BlackOps converts the post's Markdown into the Article format, keeps roughly the first 2,500 characters (cut at a paragraph boundary, never mid-sentence), and appends a closing paragraph linking to the full post. The hero image is uploaded as the Article cover. The draft lands in the X composer under your account, where you can review and edit it.

publish_x_article makes a drafted Article public. X generates an announcement post for it; BlackOps stores that post's id against your blog post so distribution stays traceable, and returns the announcement URL. Nothing in BlackOps ever publishes an Article on its own.

The Article deliberately carries an excerpt, not the whole post. Publishing the full text natively would hand X the content and leave your site with nothing to visit. The excerpt earns native reach; the canonical link converts it into sessions on your domain.

Usage

Draft an Article from a published post:

draft_x_article({
  id: "<post id or slug>",
  confirm: true
})

Review the draft in the X composer, then publish it:

publish_x_article({
  id: "<post id>",
  confirm: true
})

Options on draft_x_article:

  • title — override the Article title (defaults to the post title).
  • max_chars — excerpt budget, 500 to 25,000 (default 2,500).
  • coverhero (default), og, none, or an explicit image URL. A failed cover upload never blocks the draft.
  • inline_images — embed the post's inline images in the Article body at their original positions (default true, up to 8). Each image's alt text becomes its caption. Set false for a text-only Article.
  • username / account_id — pick the X account when the site has more than one connected.
  • force — start a fresh Article even if the post already has one.

Requirements and formatting notes

  • The connected X account needs an X Premium+ subscription — Articles are not available on standard accounts. Ineligible accounts get a clear error, not a raw API failure.
  • The post must be published on your site first.
  • Headings, lists, blockquotes, bold, italic, strikethrough, links, and inline images convert. Code blocks and inline code become plain text (Articles have no code formatting).
  • Inline images upload to X individually and appear where they sit in the post, captioned with their alt text. If an image fails to upload, the Article is drafted without it rather than failing.
  • H3 and deeper headings render as second-level headings. The X API currently rejects third-level heading blocks; BlackOps works around it automatically.

Related

Want this page as machine-readable markdown? GET /docs/features/x-articles.md