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.
Two reasons this exists. X reduces the reach of posts that send people off-platform, so a link tweet underperforms native content. And X's API prices a post containing a URL at $0.200 versus $0.015 without one — the link tweet is also the expensive kind. An Article is native content with the link 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).cover—hero(default),og,none, or an explicit image URL. A failed cover upload never blocks the draft.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, and links convert. Code blocks and inline code become plain text (Articles have no code formatting). Inline images are not carried over — the cover image is the Article's visual.
- H3 and deeper headings render as second-level headings. The X API currently rejects third-level heading blocks; BlackOps works around it automatically.
Cost note
X has not published pricing for the Articles endpoints, and the announcement post X creates on publish may bill as a URL post ($0.200) rather than a plain post ($0.015). Before making Articles a routine part of your distribution, publish one and check the effect on your X API credit balance. Drafting and publishing are explicit calls precisely so nothing spends on your behalf automatically.