xPoster
GitHub Get it

Chrome Extension · Manifest V3 · MIT

Write long-form Markdown
Move it into X Articles

A side-panel publishing desk for checking the live X Article editor, importing drafts, preparing supported media, and keeping recoverable records. Cover generation stays optional, and the final Publish click stays yours.

  • No backend
  • No account
  • No tracking
xPoster side panel importing a Markdown draft into an X Article
13 Block types imported
10 Language choices
0 Servers · trackers · gates
MIT Free & open source

01

What it can do

Markdown stays your source of truth. X stays the final publishing surface. Search the capabilities below.

02

Cover workbench

Generate article cover candidates only when you choose to. API keys, reusable visual styles, and recent covers stay in the side panel settings.

01

Bring your own image API key

OpenAI, Gemini, and OpenAI-compatible image endpoints are supported. Keys are stored locally in the browser.

02

Save reusable cover styles

Keep a list of visual rules, pick one as the default, and edit each style in a compact dialog.

03

Choose before anything touches X

Generate 5:2 candidates, review them locally, then set the selected cover on the current X Article draft.

03

30-second start

Check first, then write. The preflight locks onto the real editor before the import begins.

  1. 1

    Install

    Add xPoster from the Chrome Web Store.

  2. 2

    Open an X Article

    Go to x.com/compose/articles.

  3. 3

    Drop your Markdown

    Paste text, choose a .md file, or drop several.

  4. 4

    Check article

    Preflight the active tab and editor bridge.

  5. 5

    Write to X draft

    xPoster fills the Draft.js editor for you.

  6. 6

    Review & publish

    You make the final editorial call in X.

04

Markdown & media support

What goes in, and what xPoster does with it.

---
title: How I Write Long Posts for X
cover: ./images/cover.png
---

# How I Write Long Posts for X

I draft in Markdown first, then use
xPoster for the final handoff.

![Workspace](./images/workspace.png)

| Step  | Tool        |
| ----- | ----------- |
| Draft | Obsidian    |
| Post  | X Articles  |

https://x.com/xiaoxiaodong01/status/123
InputBehavior
--- title ---Uses frontmatter title when possible.
# HeadingFirst H1 becomes the title as a fallback.
Paragraphs, lists, quotesConverted to X Article rich text.
**bold** `code`Inline styles and links preserved.
![alt](img.png)Uploads local or web images xPoster can read.
Markdown tablesInserted as readable X table blocks.
X / Twitter status URLsInserted as real tweet embeds where supported.
Code fences & dividersImported as supported X Article blocks.

05

Best for, and not for

Best for

  • Writers who draft long-form X posts in Markdown
  • Moving Obsidian, Notion, or local .md into X Articles
  • Posts with images, tables, code, and tweet embeds
  • People who publish many drafts and want a queue
  • Maintainers who prefer inspectable open source

Not for

  • Automatic posting or scheduled publishing
  • Bypassing X limits, moderation, or restrictions
  • Threads, newsletters, or normal tweet composer
  • Perfect WYSIWYG across every X editor change
  • Private image hosts Chrome cannot reach

06

Install

Use the Web Store build unless you want to inspect or modify the extension yourself.

Recommended

Chrome Web Store

One click. Automatic updates. Reviewed build.

Add to Chrome

For developers

Load unpacked

  1. Clone or download this project.
  2. Open chrome://extensions.
  3. Turn on Developer mode.
  4. Click Load unpacked, pick the manifest.json folder.
git clone https://github.com/nevertoday/xposter.git

07

FAQ

Write to X draft is disabled

Load or edit a Markdown draft first, open an X Article tab, then click Check article.

Images stay as links

Local images need a selected image folder. Web images need to be downloadable after Chrome grants the image-site permission.

The imported article looks wrong

Do not publish yet. Edit directly in X, or reset the draft and retry from the saved Markdown record.

X editor changes break import

Open an issue with your Chrome version, xPoster version, and the diagnostics JSON from the toolbar popup.

OpenAI key usage

Only the optional cover generator, with your own key, and it sends only the source text you choose. You can also point it at any OpenAI-compatible endpoint, including a local one.

08

Made by 小小东

xPoster is free and open source. If it saves you time, a star, an issue, or a WeChat, Alipay, or Buy Me a Coffee scan all help keep it maintained.

WeChat reward QR code
WeChat
Alipay reward QR code
Alipay
Buy Me a Coffee QR code
Buy Me a Coffee