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.
68
82%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Publish Markdown content to X (Twitter) Articles editor, preserving formatting with rich text conversion.
pip install Pillow pyobjc-framework-Cocoa patchrightX Article Publisher 现在支持持久化认证,无需每次手动登录!
首次使用前,运行认证设置:
cd ~/.claude/skills/x-article-publisher/scripts
python auth_manager.py setup流程:
# 检查认证状态
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/:
推荐使用 - 自动完成所有发布步骤:
# 基本用法(默认显示浏览器)
python publish_article.py --file article.md
# 隐藏浏览器(后台运行)
python publish_article.py --file article.md --headless
# 自定义标题
python publish_article.py --file article.md --title "自定义标题"Parse Markdown and extract structured data:
python 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:
# 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,自动完成所有步骤:
cd ~/.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 "生成的标题" 参数发布好标题的特点:
示例:
# 解析文章
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 横版工作流示例:
# 1. 解析文章
python parse_markdown.py article.md
# 输出: needs_cover_generation: true
# 2. Claude 调用生图 skill 生成封面(假设保存到 /tmp/cover.png)
# 3. 将封面图插入文章开头,或手动上传注意:封面图上传目前需要在浏览器中手动操作,脚本会打开编辑器后等待用户操作。
{
"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"
cd ~/.claude/skills/x-article-publisher/scripts
python publish_article.py --file /path/to/article.mdOutput:
📄 解析文件:/path/to/article.md
📝 标题:文章标题
🖼️ 封面图:/path/to/cover.jpg
📷 内容图:2 张
🌐 启动浏览器...
📍 导航到 X Articles...
🔘 点击 create 按钮...
📝 填写标题...
📋 粘贴内容...
✅ 草稿已创建!
💡 请在浏览器中检查并手动发布
🖥️ 浏览器保持打开,请检查草稿并手动发布
⏎ 完成后按回车键关闭浏览器...技术经验参考: 浏览器自动化调试技巧详见 skill-development-guide
f595e96
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.