x-article-publisher について
Markdown をリッチテキストに変換し、X Articles エディターに入力する公開スキルです。ブラウザー認証を保持して一括で下書きを保存できますが、自動公開は行いません。
主な機能
- 01Markdown の解析と書式変換
- 02ブラウザー認証の保持
- 03エディター入力と下書き保存
- 04タイトルと画像の処理
- 05解析・クリップボード用スクリプト
活用シーン
- 01Markdown 記事を X Articles 用に整える
- 02保存済みのログイン状態を再利用する
- 03書式付きの記事を下書き保存する
- 04タイトルやカバー画像の要否を確認する
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ joeseesun/ qiaomu-x-article-publisher --skill x-article-publisherインストール後、Claude Code で/x-article-publisherを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdLICENSE.gitignoremetadata.jsonCHANGELOG.mddata/.gitignore.gitkeepdata/browser_state/.gitkeeplib/browser_auth/browser_factory.pyauth_manager.pyconfig.pyexceptions.py__init__.pyqiaomu-x-article-publisher-github/CHANGELOG.md.gitignoreCONTRIBUTING.mdLICENSEREADME.mdREADME_FULL.mdmetadata.jsonqiaomu-x-article-publisher-github/data/.gitignore.gitkeepqiaomu-x-article-publisher-github/data/browser_state/.gitkeepqiaomu-x-article-publisher-github/lib/browser_auth/__init__.pyconfig.pyauth_manager.pyexceptions.pyqiaomu-x-article-publisher-github/scripts/auth_manager.pycopy_to_clipboard.pydebug_editor.py詳細
X Article Publisher
Markdown コンテンツを X(Twitter)の Articles エディターに公開します。リッチテキスト変換により、書式を保持します。
前提条件
- X Premium Plus サブスクリプション
- 依存関係を含む Python 3.9 以降:
pip install Pillow pyobjc-framework-Cocoa patchright
🎉 初回使用:一度認証すれば、繰り返しログインする必要はありません
X Article Publisher は永続認証に対応しました。毎回手動でログインする必要はありません!
🔧 認証の初期設定(一度だけ)
初めて使用する前に、認証設定を実行してください。
cd ~/.claude/skills/x-article-publisher/scripts
python auth_manager.py setup
手順:
- ✅ ブラウザーウィンドウが自動で開き、X のログインページが表示されます
- 🔐 X アカウントに手動でログインします(Premium+ サブスクリプションが必要です)
- ✅ 2FA 認証を完了します(有効にしている場合)
- 🏠 ログインに成功すると、自動的にホームのタイムラインに移動します
- 💾 認証状態が自動で保存されます(有効期間は 7 日間です)
📋 認証管理コマンド
# 检查认证状态
python auth_manager.py status
# 验证认证是否有效
python auth_manager.py validate
# 清除认证数据(需重新登录)
python auth_manager.py clear
# 重新认证(清除 + 设置)
python auth_manager.py reauth
🚀 自動化ワークフロー
認証設定が完了すると、スキルの実行時に以下が自動的に行われます。
- ✅ 認証状態を確認します
- 🔓 認証済みの場合は、保存済みのブラウザー状態をそのまま使用します(ログイン不要です)
- ⚠️ 未認証の場合は、
auth_manager.py setupの実行を促します
注意:認証データは ~/.claude/skills/x-article-publisher/data/browser_state/ に保存されます。.gitignore で除外されているため、Git にコミットされません。
スクリプト
~/.claude/skills/x-article-publisher/scripts/ にあります。
publish_article.py(メインスクリプト — ワンクリック公開)
推奨 — 公開に必要なすべての手順を自動で実行します。
# 基本用法(默认显示浏览器)
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.py
Markdown を解析し、構造化データを抽出します。
python parse_markdown.py <markdown_file> [--output json|html] [--html-only]
title、cover_image、content_images(配置位置を示す block_index を含む)、html、total_blocks を含む JSON を返します。
copy_to_clipboard.py
画像または HTML をシステムのクリップボードにコピーします。
# 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
スクリプトは以下を自動で実行します。
- ✅ 認証状態を確認します
- 📄 Markdown ファイルを解析します
- 🌐 認証済みのブラウザーを起動します
- 📍 X Articles エディターに移動します
- 🔘 create ボタンをクリックします
- 🖼️ カバー画像をアップロードします(ある場合)
- 📝 タイトルを入力します
- 📋 HTML コンテンツを貼り付けます
- ✅ 下書きを保存します(自動公開はしません)
手動ワークフロー(上級ユーザー向け)
より細かく制御するには、手順ごとに実行してください。
- Markdown を解析します:
python parse_markdown.py article.md - ブラウザーを手動で操作して公開します
🧠 スマート機能
タイトルの自動生成
記事に H1 タイトルがない場合、parse_markdown.py は needs_title_generation: true を返します。
Claude は次の処理を自動で行います。
- 記事を読み、中心となる主張を理解します
- クリックしたくなるタイトルを生成します(15〜25 字が目安です)
--title "生成したタイトル"パラメーターを指定して公開します
良いタイトルの特徴:
- 数字や具体的な詳細を含む(「3 つの方法」、「90%の人が知らない」)
- 好奇心をかき立てる(「なぜ……」、「……する方法」、「……の真実」)
- 読者にとって身近な内容である
- 釣りタイトルは避けつつ、魅力的である
例:
# 解析文章
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 は次の処理を自動で行います。
- 記事を読み、中心となる概念を抽出します(キーワード 1〜3 個)
gemini-image-generatorまたはjimeng-image-generatorスキルを呼び出してカバー画像を生成します- カバー画像のスタイルに関する提案:
- シンプルで洗練されたデザインにし、細部を複雑にしない
- 抽象的な概念を視覚化する
- または、中心となるキーワードを含む文字ポスターにする
- 生成した画像のパスを、カバー画像として記事の冒頭に挿入します
カバー画像生成プロンプトのテンプレート:
为一篇关于「{文章主题}」的文章生成封面图。
风格:简洁、现代、科技感
元素:{1-3个核心视觉元素}
文字:可选,如果加文字只放{1-3个关键词}
尺寸:16:9 横版
ワークフローの例:
# 1. 解析文章
python parse_markdown.py article.md
# 输出: needs_cover_generation: true
# 2. Claude 调用生图 skill 生成封面(假设保存到 /tmp/cover.png)
# 3. 将封面图插入文章开头,或手动上传
注意:現時点では、カバー画像のアップロードはブラウザーで手動操作する必要があります。スクリプトはエディターを開いた後、ユーザーの操作を待ちます。
技術的な詳細
parse_markdown.py の出力形式
{
"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@@@マーカーをすべて削除します - H1 タイトルの扱い — H1 はタイトルとしてのみ使用し、本文には含めません
対応する書式
- H2 見出し(## )
- 引用(> )
- コードブロック(引用に変換)
- 太字(**)
- ハイパーリンク(テキスト)
- 順序付きリスト/順序なしリスト
- 段落
例
ユーザー:「/path/to/article.md を X に公開して」
cd ~/.claude/skills/x-article-publisher/scripts
python publish_article.py --file /path/to/article.md
出力:
📄 解析文件:/path/to/article.md
📝 标题:文章标题
🖼️ 封面图:/path/to/cover.jpg
📷 内容图:2 张
🌐 启动浏览器...
📍 导航到 X Articles...
🔘 点击 create 按钮...
📝 填写标题...
📋 粘贴内容...
✅ 草稿已创建!
💡 请在浏览器中检查并手动发布
🖥️ 浏览器保持打开,请检查草稿并手动发布
⏎ 完成后按回车键关闭浏览器...
技術的な参考情報:ブラウザー自動化のデバッグのコツについては、skill-development-guide を参照してください。