x-article-publisher-skill
π‘ Summary
This skill automates the process of publishing Markdown articles to X Articles, preserving formatting and improving efficiency.
π― Target Audience
π€ AI Roast: βPowerful, but the setup might scare off the impatient.β
Risk: Medium. Review: shell/CLI command execution; outbound network access (SSRF, data egress); filesystem read/write scope and path traversal; dependency pinning and supply-chain risk. Run with least privilege and audit before enabling in production.
X Article Publisher Skill
Publish Markdown articles to X (Twitter) Articles with one command. Say goodbye to tedious rich text editing.
v1.2.0 β Now with divider support, table-to-image, Mermaid support, and cross-platform clipboard
The Problem
If you're used to writing in Markdown, publishing to X Articles is a painful process:
| Pain Point | Description | |------------|-------------| | Format Loss | Copy from Markdown editor β Paste to X β All formatting gone | | Manual Formatting | Set each H2, bold, link manually β 15-20 min per article | | Tedious Image Upload | 5 clicks per image: Add media β Media β Add photo β Select β Wait | | Position Errors | Hard to remember where each image should go |
Time Comparison
| Task | Manual | With This Skill | |------|--------|-----------------| | Format conversion | 15-20 min | 0 (automatic) | | Cover image | 1-2 min | 10 sec | | 5 content images | 5-10 min | 1 min | | Total | 20-30 min | 2-3 min |
10x efficiency improvement
The Solution
This skill automates the entire publishing workflow:
Markdown File
β Python parsing
Structured Data (title, images with block_index, HTML)
β Playwright MCP
X Articles Editor (browser automation)
β
Draft Saved (never auto-publishes)
Key Features
- Rich Text Paste: Convert Markdown to HTML, paste via clipboard β all formatting preserved
- Block-Index Positioning (v1.1): Precise image placement using element indices, not text matching
- Reverse Insertion: Insert images from highest to lowest index to avoid position shifts
- Smart Wait Strategy: Conditions return immediately when met, no wasted wait time
- Safe by Design: Only saves as draft, never publishes automatically
What's New in v1.1.0
| Feature | Before | After | |---------|--------|-------| | Image positioning | Text matching (fragile) | Block index (precise) | | Insertion order | Sequential | Reverse (highβlow) | | Wait behavior | Fixed delay | Immediate return on condition |
Why Block-Index?
Previously, images were positioned by matching surrounding text β this failed when:
- Multiple paragraphs had similar content
- Text was too short to be unique
Now, each image has a block_index indicating exactly which block element it follows. This is deterministic and reliable.
Requirements
| Requirement | Details | |-------------|---------| | Claude Code | claude.ai/code | | Playwright MCP | Browser automation | | X Premium Plus | Required for Articles feature | | Python 3.9+ | With dependencies below | | OS | macOS or Windows |
# macOS pip install Pillow pyobjc-framework-Cocoa # Windows pip install Pillow pywin32 clip-util # For Mermaid diagrams (optional) npm install -g @mermaid-js/mermaid-cli
Installation
Method 1: Git Clone (Recommended)
git clone https://github.com/wshuyi/x-article-publisher-skill.git cp -r x-article-publisher-skill/skills/x-article-publisher ~/.claude/skills/
Method 2: Plugin Marketplace
/plugin marketplace add wshuyi/x-article-publisher-skill
/plugin install x-article-publisher@wshuyi/x-article-publisher-skill
Usage
Natural Language
Publish /path/to/article.md to X
Help me post this article to X Articles: ~/Documents/my-post.md
Skill Command
/x-article-publisher /path/to/article.md
Workflow Steps
[1/7] Parse Markdown...
β Extract title, cover image, content images with block_index
β Convert to HTML, count total blocks
[2/7] Open X Articles editor...
β Navigate to x.com/compose/articles
[3/7] Upload cover image...
β First image becomes cover
[4/7] Fill title...
β H1 used as title (not included in body)
[5/7] Paste article content...
β Rich text via clipboard
β All formatting preserved
[6/7] Insert content images (reverse order)...
β Sort by block_index descending
β Click block element at index β Paste image
β Wait for upload (returns immediately when done)
[7/7] Save draft...
β β
Review and publish manually
Supported Markdown
| Syntax | Result | Notes |
|--------|--------|-------|
| # H1 | Article title | Extracted, not in body |
| ## H2 | Section headers | Native support |
| **bold** | Bold text | Native support |
| *italic* | Italic text | Native support |
| [text](url) | Hyperlinks | Native support |
| > quote | Blockquotes | Native support |
| - item | Unordered lists | Native support |
| 1. item | Ordered lists | Native support |
|  | Images | First = cover |
| --- | Dividers | Via Insert menu (v1.2) |
| Tables | PNG images | Via table_to_image.py (v1.2) |
| Mermaid | PNG images | Via mmdc CLI (v1.2) |
Example
Input: article.md
# 5 AI Tools Worth Watching in 2024  AI tools exploded in 2024. Here are 5 worth your attention. ## 1. Claude: Best Conversational AI **Claude** by Anthropic excels at long-context understanding. > Claude's context window reaches 200K tokens.  ## 2. Midjourney: AI Art Leader [Midjourney](https://midjourney.com) is the most popular AI art tool. 
Parsed Output (JSON)
{ "title": "5 AI Tools Worth Watching in 2024", "cover_image": "./images/cover.jpg", "content_images": [ {"path": "./images/claude-demo.png", "block_index": 4}, {"path": "./images/midjourney.jpg", "block_index": 6} ], "total_blocks": 7 }
Insertion Order
Images inserted in reverse: block_index=6 first, then block_index=4.
Result
- Cover:
cover.jpguploaded - Title: "5 AI Tools Worth Watching in 2024"
- Content: Rich text with H2, bold, quotes, links
- Images: Inserted at precise positions via block index
- Status: Draft saved (ready for manual review)
Project Structure
x-article-publisher-skill/
βββ .claude-plugin/
β βββ plugin.json # Plugin config
βββ skills/
β βββ x-article-publisher/
β βββ SKILL.md # Skill instructions
β βββ scripts/
β βββ parse_markdown.py # Extracts block_index + dividers
β βββ copy_to_clipboard.py # Cross-platform clipboard
β βββ table_to_image.py # Markdown table β PNG (v1.2)
βββ docs/
β βββ GUIDE.md # Detailed guide
βββ README.md # This file
βββ README_CN.md # Chinese version
βββ LICENSE
FAQ
Q: Why Premium Plus? A: X Articles is exclusive to Premium Plus subscribers.
Q: Windows/Linux support? A: Windows is now supported (v1.2). Linux support is still in progress β PRs welcome!
Q: Image upload failed? A: Check: valid path, supported format (jpg/png/gif/webp), stable network.
Q: Can I publish to multiple accounts? A: Not automatically. Switch accounts in browser manually before running.
Q: Why insert images in reverse order? A: Each inserted image shifts subsequent block indices. Inserting from highest to lowest ensures earlier indices remain valid.
Q: What if text matching was used before?
A: v1.1 replaces text matching with block_index. The after_text field is kept for debugging but not used for positioning.
Q: Why does wait return immediately sometimes?
A: browser_wait_for textGone="..." returns as soon as the text disappears. The time parameter is just a maximum, not a fixed delay.
Documentation
- Detailed Usage Guide β Complete documentation with examples
Changelog
v1.2.0 (2025-01)
- Divider support: Detect
---in Markdown, insert via X Articles menu - Table to image: New
table_to_image.pyscript converts Markdown tables to PNG - Mermaid support: Documentation for using
mmdcto convert diagrams - YAML frontmatter: Automatically skip frontmatter in Markdown files
- Windows support: Cross-platform clipboard operations (pywin32 + clip-util)
v1.1.0 (2025-12)
- Block-index positioning: Replace text matching with precise element indices
- Reverse insertion order: Prevent index shifts when inserting multiple images
- Optimized wait strategy: Return immediately when upload completes
- H1 title handling: H1 extracted as title, not included in body HTML
v1.0.0 (2025-12)
- Initial release
- Rich text paste via clipboard
- Cover + content image support
- Draft-only publishing
License
MIT License - see LICENSE
Author
Acknowledgments
v1.2.0 features were inspired by and adapted from:
- sugarforever/01coder-agent-skills β The
publish-x-articleskill contributed ideas for:- Divider detection and menu-based insertion
- Table-to-image conversion script
- Mermaid diagram support documentation
- YAML frontmatter handling
- Windows clipboard implementation
Thank you to the community for building upon and improving this skill!
Contributing
- Issues: Report bugs or request features
- PRs: Welcome! Especially for Windows/Linux support
Pros
- Significantly reduces publishing time.
- Preserves Markdown formatting.
- Automates image placement accurately.
- User-friendly with clear workflow.
Cons
- Requires X Premium Plus subscription.
- Limited to Markdown format.
- Windows/Linux support still in progress.
- May need manual review before publishing.
Related Skills
pytorch
SβIt's the Swiss Army knife of deep learning, but good luck figuring out which of the 47 installation methods is the one that won't break your system.β
agno
SβIt promises to be the Kubernetes for agents, but let's see if developers have the patience to learn yet another orchestration layer.β
nuxt-skills
SβIt's essentially a well-organized cheat sheet that turns your AI assistant into a Nuxt framework parrot.β
Disclaimer: This content is sourced from GitHub open source projects for display and rating purposes only.
Copyright belongs to the original author wshuyi.
