Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Publish Markdown articles to X (Twitter) Articles editor with proper formatting. Use when user wants to publish a Markdown file/URL to X Articles, or mentions "publish to X", "post article to Twitter", "X article", or wants help with X Premium article publishing. Handles cover image upload and converts Markdown to rich text automatically.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 55% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 67% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 12% | 0% |
Publish Markdown content to X (Twitter) Articles editor, preserving formatting with rich text conversion.
pip install Pillow pyobjc-framework-Cocoa patchrightX Article Publisher 现在支持持久化认证,无需每次手动登录!
首次使用前,运行认证设置:
bashcd ~/.claude/skills/x-article-publisher/scripts python auth_manager.py setup
流程:
bash# 检查认证状态 python auth_manager.py status # 验证认证是否有效 python auth_manager.py validate # 清除认证数据(需重新登录) python auth_manager.py clear # 重新认证(清除 + 设置) python auth_manager.py reauth
认证设置完成后,skill 执行时会自动:
auth_manager.py setup注意:认证数据存储在 ~/.claude/skills/x-article-publisher/data/browser_state/,已通过 .gitignore 排除,不会提交到 Git。
Located in ~/.claude/skills/x-article-publisher/scripts/:
推荐使用 - 自动完成所有发布步骤:
bash# 基本用法 python publish_article.py --file article.md # 显示浏览器(调试用) python publish_article.py --file article.md --show-browser # 自定义标题 python publish_article.py --file article.md --title "自定义标题"
Parse Markdown and extract structured data:
bashpython parse_markdown.py <markdown_file> [--output json|html] [--html-only]
Returns JSON with: title, cover_image, content_images (with block_index for positioning), html, total_blocks
Copy image or HTML to system clipboard:
bash# Copy image (with optional compression) python copy_to_clipboard.py image /path/to/image.jpg [--quality 80] # Copy HTML for rich text paste python copy_to_clipboard.py html --file /path/to/content.html
前提:已完成认证设置(python auth_manager.py setup)
直接运行 publish_article.py,自动完成所有步骤:
bashcd ~/.claude/skills/x-article-publisher/scripts python publish_article.py --file /path/to/article.md
脚本会自动:
如需更精细控制,可分步执行:
python parse_markdown.py article.md当文章没有 H1 标题时,parse_markdown.py 会返回 needs_title_generation: true。
Claude 应该自动:
--title "生成的标题" 参数发布好标题的特点:
示例:
bash# 解析文章 python parse_markdown.py article.md # 如果 needs_title_generation: true,Claude 生成标题后: python publish_article.py --file article.md --title "AI时代,普通人的3个生存法则"
当文章没有封面图时,parse_markdown.py 会返回 needs_cover_generation: true。
Claude 应该自动:
gemini-image-generator 或 jimeng-image-generator skill 生成封面图封面图生成提示词模板:
为一篇关于「{文章主题}」的文章生成封面图。
风格:简洁、现代、科技感
元素:{1-3个核心视觉元素}
文字:可选,如果加文字只放{1-3个关键词}
尺寸:16:9 横版工作流示例:
bash# 1. 解析文章 python parse_markdown.py article.md # 输出: needs_cover_generation: true # 2. Claude 调用生图 skill 生成封面(假设保存到 /tmp/cover.png) # 3. 将封面图插入文章开头,或手动上传
注意:封面图上传目前需要在浏览器中手动操作,脚本会打开编辑器后等待用户操作。
json{ "title": "Article Title", "title_source": "h1", // "h1", "h2", "first_line", or "none" "needs_title_generation": false, // true if no H1 title "cover_image": "/path/to/first-image.jpg", "needs_cover_generation": false, // true if no cover image "content_images": [ {"path": "/path/to/img2.jpg", "block_index": 5} ], "html": "<p>Content...</p><h2>Section</h2>...", "total_blocks": 45 }
字段说明:
title_source: 标题来源h1: 来自 H1 标题(最理想)h2: 来自第一个 H2 标题first_line: 来自第一行文本none: 无法提取标题needs_title_generation: 是否需要 Claude 生成更好的标题needs_cover_generation: 是否需要 Claude 生成封面图@@@IMG_X@@@ markers after image insertionUser: "Publish /path/to/article.md to X"
bashcd ~/.claude/skills/x-article-publisher/scripts python publish_article.py --file /path/to/article.md
Output:
📄 解析文件:/path/to/article.md
📝 标题:文章标题
🖼️ 封面图:/path/to/cover.jpg
📷 内容图:2 张
🌐 启动浏览器...
📍 导航到 X Articles...
🔘 点击 create 按钮...
📝 填写标题...
📋 粘贴内容...
✅ 草稿已创建!
💡 请在浏览器中检查并手动发布
🖥️ 浏览器保持打开,请检查草稿并手动发布
⏎ 完成后按回车键关闭浏览器...技术经验参考: 浏览器自动化调试技巧详见 skill-development-guide
Other measured skills in the registry, with their headline benchmark lift.