X Article Publisher
Publish Markdown articles to X (Twitter) Articles with one command, skipping manual formatting, image uploads, and rich-text fiddling.
Positives: mandatory draft-only (never auto-publish), user logs in manually, local-only image search disclosed on stderr. Deductions: parse_markdown.py silently scans ~/Downloads, ~/Desktop, ~/Pictures as fallback image sources — beyond-least-privilege local data access enabled by default without confirmation; browser automation over a logged-in X session lacks explicit per-action confirmation for external side effects (uploads/publishing); no rollback guidance beyond manual draft deletion.
Scripts are well-structured with clear args, stderr diagnostics, exists/missing_images fields, and explicit unsupported-platform errors; troubleshooting covers MCP issues, browser locks, and paths. Deductions: regex-based Markdown→HTML conversion fragile for nested structures; zero tests or CI proving key paths; hard assumptions on X editor DOM (button labels, refs) that break on UI changes; SKILL.md self-contradicts on positioning strategy (recommends block_index in Best Practices but after_text search in Step 6). Static review caps reliability at 10.
Target scenario and trigger description are clear; supported-format table, Linux non-support, and Premium Plus requirement disclosed. Deductions: core function depends entirely on x.com plus Playwright MCP — poor mainland-China reachability and a paid subscription are required with no disclosure of this; trigger conditions possibly over-broad; fragility to X UI changes not declared as a boundary.
MIT license, versioning, changelog, bilingual README, and explicit attribution to sugarforever/01coder-agent-skills; decent layering. Deductions: changelog dates are inconsistent (v1.1.0 dated 2025-12 before v1.2.0's 2025-01); Linux status contradicts between README and scripts; hardcoded ~/.claude/skills/ paths; SKILL.md vs README inconsistent on after_text/block_index guidance; no known-limitations section (e.g., editor redesign breakage).
Core path (parse→clipboard→browser paste→save draft) is coherently designed with clear marginal value over manual work; README provides comparison tables and example outputs. Deductions: everything rides on unexecuted browser UI automation with no committed tests or execution evidence, so real-world success rate is unverifiable; highly sensitive to X editor changes; '10x efficiency' is author-asserted; tables/code blocks degrade to blockquotes. Static cap of 7 applies.
Source is directly auditable and README includes example JSON and attribution — auditable primary material. Deductions: no tests, no CI evidence, no third-party reproduction; all effectiveness claims (time savings, reliability gains) are author-only with no corroboration. Static cap 5, actual coverage thinner.
- parse_markdown.py silently scans the user's Downloads/Desktop/Pictures directories when images are missing — a default-on local file scan; privacy-sensitive users should be aware or edit SEARCH_DIRS.
- The skill automates a logged-in X session and uploads content without per-action confirmation; always review the draft manually before publishing.
- Core function depends on x.com and an X Premium Plus subscription; reachability from mainland-China networks is problematic, and X editor redesigns can break the workflow.
- Markdown→HTML conversion is regex-based; nested formatting and complex tables may lose fidelity; tables/code blocks are degraded to images or blockquotes.
- No tests or CI execution evidence is committed; all efficiency and reliability claims are author-asserted and independently unverified; Linux is unsupported.
- SKILL.md and README give inconsistent guidance on block_index vs after_text positioning, and changelog dates conflict — trust actual script behavior over prose.
What does this skill do, and when should you use it?
This is a Claude Code Agent Skill that automates publishing Markdown articles to the X (Twitter) Articles editor. It parses Markdown with Python scripts to produce structured data and HTML, then drives a browser via Playwright MCP to upload the cover, fill the title, paste rich text, and insert images and dividers — saving only a draft, never auto-publishing. The author claims it cuts per-article publishing time from 20-30 minutes to 2-3 minutes. It requires an X Premium Plus subscription and a logged-in browser session.
Runs parse_markdown.py to extract title, cover image, content images (with block_index positioning), dividers, and HTML; uses copy_to_clipboard.py to copy images (with optional compression) or HTML to the system clipboard; converts Markdown tables to PNG via table_to_image.py and Mermaid diagrams via mmdc; then through Playwright MCP it opens x.com/compose/articles, uploads the cover (first image), fills the title (from H1), pastes rich text, inserts images and dividers in reverse block_index order, and saves as draft.
- X Premium Plus users who write in Markdown and don't want to reformat articles by hand
- Technical bloggers with image-heavy posts who need precise image placement after specific paragraphs
- Authors whose articles contain tables or Mermaid diagrams that must be converted to PNG before publishing
- Users who want Claude Code to automate the workflow while retaining manual review before publishing
- macOS or Windows users (Linux is not yet supported)
What are this skill's strengths and limitations?
- Rich text pasted via clipboard preserves H2, bold, links, lists, and blockquotes
- Block-index positioning plus reverse insertion eliminates image placement drift
- Tables and Mermaid diagrams are auto-converted to PNG to bypass X's native limitations
- Safe by design: draft-only, never auto-publishes
- Cross-platform (macOS/Windows), with automatic image search in Downloads/Desktop/Pictures when paths fail
- Requires an X Premium Plus subscription — Articles is exclusive to it
- Linux is not supported (explicitly stated in the source)
- Depends on Playwright MCP and a logged-in browser session; browser-lock and MCP-disconnect issues require manual troubleshooting
- Code blocks degrade to blockquotes; native table rendering unsupported
- The "10x efficiency improvement" figure is the author's own claim; no independent benchmarks or test suite are evident
How do you install this skill?
Method 1 (recommended): git clone https://github.com/wshuyi/x-article-publisher-skill.git, then cp -r x-article-publisher-skill/skills/x-article-publisher ~/.claude/skills/. Method 2: in Claude Code run /plugin marketplace add wshuyi/x-article-publisher-skill and /plugin install x-article-publisher@wshuyi/x-article-publisher-skill. Prerequisites: install Playwright MCP, log into X in the browser (Premium Plus required), pip install Pillow pyobjc-framework-Cocoa on macOS or pip install Pillow pywin32 clip-util on Windows; for Mermaid support, npm install -g @mermaid-js/mermaid-cli.
How do you use this skill?
Trigger with natural language, e.g. "Publish /path/to/article.md to X" or "Help me post this article to X Articles: ~/Documents/my-post.md", or use the command /x-article-publisher /path/to/article.md. The skill parses the Markdown, opens the X Articles editor, uploads the cover, fills the title, pastes the body, inserts images and dividers in reverse order, then saves a draft and prompts you to review and publish manually.
How does this skill compare with similar options?
The README explicitly credits the publish-x-article skill in sugarforever/01coder-agent-skills as the inspiration for v1.2.0 features (dividers, table-to-image, Mermaid support, Windows clipboard).