mcpField
X
x-publish

x-publish

github.com/kangarooking营销与增长34287 次安装36 周前更新
代码仓库

关于 x-publish

x-publish 是一项通过 Playwright 浏览器自动化准备 X 单条推文和串文并保存为草稿的技能。它要求用户已登录 X,并在保存前核对内容;不会自动发布。

主要功能

  1. 01保存单条推文草稿
  2. 02保存 3–10 条串文草稿
  3. 03将推文文本复制到剪贴板
  4. 04检查文本是否超过 280 字符
  5. 05在 X 中核验草稿

适用场景

  1. 01准备待审核的推文
  2. 02将多条串文保存为草稿
  3. 03在填入编辑器前检查推文

MCP 相关

该技能通过 Playwright MCP 执行浏览器自动化,与 X 的发帖编辑器交互并保存草稿。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/kangarooking/x-skills --skill x-publish

安装后在 Claude Code 中输入/x-publish确认已加载。

附带文件scripts/copy_to_clipboard.py

详细介绍

X Publish

通过 Playwright 浏览器自动化将推文和推文串发布到 X 草稿。

前置条件

  • 用于浏览器自动化的 Playwright MCP
  • 用户已登录 X(Twitter)
  • Python 3.9+ 及依赖项:
    • macOS:pip install Pillow pyobjc-framework-Cocoa
    • Windows:pip install Pillow pywin32

关键规则

  1. 绝不自动发布——只保存到草稿
  2. 用户必须已登录——如未登录,提示用户登录
  3. 保存前核对内容——仔细检查推文文本

内容类型

短推文

单条推文,≤280 个字符

推文串

多条相连的推文(3-10 条)

脚本

copy_to_clipboard.py

将文本复制到系统剪贴板,以便粘贴:

# Copy text to clipboard
python scripts/copy_to_clipboard.py text "Tweet content here"

# Copy from file
python scripts/copy_to_clipboard.py text --file /tmp/tweet.txt

工作流

短推文

步骤 1:准备内容

# Save tweet to temp file
echo "Tweet content" > /tmp/tweet.txt

# Copy to clipboard
python scripts/copy_to_clipboard.py text --file /tmp/tweet.txt

步骤 2:打开编辑框

browser_navigate: https://x.com/compose/post

步骤 3:粘贴内容

browser_snapshot → Find tweet textbox
browser_click: textbox
browser_press_key: Meta+v

步骤 4:保存草稿

browser_click: X (close button)
browser_click: "Save" or "保存" in dialog

步骤 5:核对

Report: "Draft saved. Please review at https://x.com/compose/drafts"
推文串

步骤 1:准备内容 将推文串解析为单条推文:

### 1/5
First tweet content...

### 2/5
Second tweet content...

步骤 2:打开编辑框

browser_navigate: https://x.com/compose/post

步骤 3:添加第一条推文

python scripts/copy_to_clipboard.py text "First tweet content"
browser_click: textbox
browser_press_key: Meta+v

步骤 4:添加更多推文 对于每条后续推文:

browser_click: "Add another post" / "添加" button
browser_press_key: Meta+v (after copying next tweet)

步骤 5:保存草稿

browser_click: X (close button)
browser_click: "Save" in dialog

步骤 6:核对

Report: "Thread draft saved ({n} tweets). Review at https://x.com/compose/drafts"

效率指南

避免不必要的等待
❌ browser_snapshot after every action
✅ Use action return values for next step
并行准备
✅ Prepare all tweet content before browser operations
✅ Copy to clipboard while navigating
顺序执行
Navigate → Paste first tweet → Add tweet → Paste → ... → Save

元素引用

X 编辑框中的常见元素:

元素描述常见引用模式
推文文本框主输入区域文本框,包含“What's happening”
添加推文按钮“+”或“添加”编辑区域附近的按钮
关闭按钮X 图标左上角的按钮
保存草稿关闭对话框中“Save” / “保存”按钮
草稿链接查看已保存的草稿指向 /compose/drafts 的链接

示例流程

短推文示例

用户:/x-publish "Claude 4.5发布了,extended thinking是真正的游戏规则改变者。"

# 1. Copy to clipboard
python scripts/copy_to_clipboard.py text "Claude 4.5发布了,extended thinking是真正的游戏规则改变者。"
# 2. Navigate and paste
browser_navigate: https://x.com/compose/post
browser_snapshot → find textbox
browser_click: textbox
browser_press_key: Meta+v

# 3. Close and save
browser_click: close button (X)
browser_click: "Save" button

# 4. Report
"Draft saved! Review at: https://x.com/compose/drafts"
推文串示例

用户:/x-publish(附带来自 x-create 的推文串内容)

Thread:
### 1/3
First point about AI...

### 2/3
Second point...

### 3/3
Conclusion...

执行:

# Prepare all tweets
tweet1="First point about AI..."
tweet2="Second point..."
tweet3="Conclusion..."
# Navigate
browser_navigate: https://x.com/compose/post

# Tweet 1
python copy_to_clipboard.py text "$tweet1"
browser_click: textbox
browser_press_key: Meta+v

# Tweet 2
python copy_to_clipboard.py text "$tweet2"
browser_click: "Add another post" button
browser_press_key: Meta+v

# Tweet 3
python copy_to_clipboard.py text "$tweet3"
browser_click: "Add another post" button
browser_press_key: Meta+v

# Save
browser_click: close button
browser_click: "Save"

# Report
"Thread draft saved (3 tweets). Review at: https://x.com/compose/drafts"

错误处理

未登录
If login page detected:
→ "Please log in to X first, then run /x-publish again"
字符数限制
If tweet > 280 chars:
→ Split into thread or truncate with warning
网络错误
If page fails to load:
→ Retry once, then report error

集成

发布后:

推文已保存到草稿箱!

- 类型: {short/thread}
- 条数: {n}
- 草稿链接: https://x.com/compose/drafts

请手动审核后发布。

附加一个供钩子/状态摄取使用的机器可读区块:

PUBLISH_JSON
{
  "schema_version": "x_skills.publish.v1",
  "timestamp": "{timestamp}",
  "draft_saved": true,
  "post_type": "short|thread",
  "count": 1,
  "draft_url": "https://x.com/compose/drafts"
}

(可选)附加反馈循环事件:

python ~/.claude/skills/x-create/scripts/x_state.py event --event publish.saved_to_draft --payload-json '{"post_type":"short","count":1,"draft_saved":true}'

评论

支持 Markdown