post-to-x
1
总安装量
1
周安装量
#51440
全站排名
安装命令
npx skills add https://github.com/aehyok/blog --skill post-to-x
Agent 安装分布
mcpjam
1
openhands
1
replit
1
junie
1
zencoder
1
Skill 文档
åå¸å° X (Twitter)
使ç¨çå®ç Chrome æµè§å¨åå¸å 容ãå¾çåé¿ç¯æç« å° Xï¼ç»è¿åæºå¨äººæ£æµï¼ã
åè½
- æ®éæ¨æ: ææ¬ + æå¤ 4 å¼ å¾ç
- X Articles: åå¸å¸¦æä¸°å¯æ ¼å¼åå¾çç Markdown æä»¶ï¼éè¦ X Premiumï¼
ç¨æ³
# ä»
å叿æ¬
/post-to-x "Your post content here"
# åå¸å¸¦å¾ççæ¨æ
/post-to-x "Your post content" --image /path/to/image.png
# åå¸å¸¦å¤å¼ å¾ççæ¨æ (æå¤ 4 å¼ )
/post-to-x "Your post content" --image img1.png --image img2.png
# å®é
æäº¤åå¸
/post-to-x "Your post content" --submit
å 峿¡ä»¶
- å·²å®è£ Google Chrome æ Chromium
- å·²å®è£
bun(ç¨äºè¿è¡èæ¬) - 馿¬¡è¿è¡ï¼å¨æå¼çæµè§å¨çªå£ä¸ç»å½ X
å¿«éå¼å§ (æ¨è)
ç´æ¥ä½¿ç¨ x-browser.ts èæ¬ï¼
# é¢è§æ¨¡å¼ (ä¸åå¸)
npx -y bun ./scripts/x-browser.ts "Hello from Claude!" --image ./screenshot.png
# å®é
åå¸
npx -y bun ./scripts/x-browser.ts "Hello!" --image ./photo.png --submit
èæ¬æµç¨ï¼
- å¯å¨ç¦ç¨äºåæ£æµåè½ççå® Chrome
- ä½¿ç¨æä¹ åé ç½®æä»¶ï¼åªéç»å½ä¸æ¬¡ï¼
- éè¿ CDP è¾å ¥ææ¬å¹¶ç²è´´å¾ç
- çå¾
30 ç§è¿è¡é¢è§ï¼æä½¿ç¨
--submitç«å³åå¸ï¼
æå¨å·¥ä½æµ
å¦ææ¨æ´å欢éè¿åæ¥æ§å¶ï¼
æ¥éª¤ 1: å¤å¶å¾çå°åªè´´æ¿
npx -y bun ./scripts/copy-to-clipboard.ts image /path/to/image.png
æ¥éª¤ 2: ä½¿ç¨ Playwright MCP (妿 Chrome ä¼è¯å¯ç¨)
# 导èª
mcp__playwright__browser_navigate url="https://x.com/compose/post"
# è·åå
ç´ å¼ç¨
mcp__playwright__browser_snapshot
# è¾å
¥ææ¬
mcp__playwright__browser_click element="editor" ref="<ref>"
mcp__playwright__browser_type element="editor" ref="<ref>" text="Your content"
# ç²è´´å¾ç (å¤å¶å°åªè´´æ¿å)
mcp__playwright__browser_press_key key="Meta+v" # macOS
# æ
mcp__playwright__browser_press_key key="Control+v" # Windows/Linux
# æªå¾ä»¥éªè¯
mcp__playwright__browser_take_screenshot filename="preview.png"
åæ°
| åæ° | æè¿° |
|---|---|
<text> |
åå¸å 容 (ä½ç½®åæ°) |
--image <path> |
å¾çæä»¶è·¯å¾ (å¯éå¤ï¼æå¤ 4 å¼ ) |
--submit |
å®é åå¸ (é»è®¤: ä» é¢è§) |
--profile <dir> |
èªå®ä¹ Chrome é ç½®æä»¶ç®å½ |
å¾çæ¯æ
- æ ¼å¼: PNG, JPEG, GIF, WebP
- æ¯æ¡æ¨ææå¤ 4 å¼ å¾ç
- å¾ç被å¤å¶å°ç³»ç»åªè´´æ¿ï¼ç¶åéè¿å¿«æ·é®ç²è´´
示ä¾ä¼è¯
User: /post-to-x "Hello from Claude!" --image ./screenshot.png
Claude:
1. Runs: npx -y bun ./scripts/x-browser.ts "Hello from Claude!" --image ./screenshot.png
2. Chrome opens with X compose page
3. Text is typed into editor
4. Image is copied to clipboard and pasted
5. Browser stays open 30s for preview
6. Reports: "Post composed. Use --submit to post."
æ éæé¤
- Chrome not found: 设置
X_BROWSER_CHROME_PATHç¯å¢åé - Not logged in: 馿¬¡è¿è¡ä¼æå¼ Chrome – æå¨ç»å½ï¼Cookies ä¼è¢«ä¿å
- Image paste fails: éªè¯åªè´´æ¿èæ¬:
npx -y bun ./scripts/copy-to-clipboard.ts image <path> - Rate limited: çå¾ å åéåéè¯
å·¥ä½åç
x-browser.ts èæ¬ä½¿ç¨ Chrome DevTools Protocol (CDP) æ¥ï¼
- å¯å¨çå®ç Chrome (é Playwright)ï¼å¸¦åæ°
--disable-blink-features=AutomationControlled - ä½¿ç¨æä¹ åé ç½®æä»¶ç®å½æ¥ä¿åç»å½ä¼è¯
- éè¿ CDP å½ä»¤ä¸ X äº¤äº (Runtime.evaluate, Input.dispatchKeyEvent)
- ä»ç³»ç»åªè´´æ¿ç²è´´å¾ç
è¿ç§æ¹æ³ç»è¿äº X 黿¢ Playwright/Puppeteer çåèªå¨åæ£æµã
注æäºé¡¹
- 馿¬¡è¿è¡éè¦æå¨ç»å½ (ä¼è¯ä¼è¢«ä¿å)
- 使ç¨
--submitå请å¡å¿ é¢è§ - æä½å®æåæµè§å¨ä¼èªå¨å ³é
- æ¯æ macOS, Linux, å Windows
X Articles (é¿æåå¸)
åå¸ Markdown æç« å° X Articles ç¼è¾å¨ï¼æ¯æå¯ææ¬æ ¼å¼åå¾çã
X Article ç¨æ³
# åå¸ Markdown æç« (é¢è§æ¨¡å¼)
/post-to-x article /path/to/article.md
# 带èªå®ä¹å°é¢å¾ç
/post-to-x article article.md --cover ./hero.png
# 带èªå®ä¹æ é¢
/post-to-x article article.md --title "My Custom Title"
# å®é
åå¸ (ä¸ä»
ä»
æ¯è稿)
/post-to-x article article.md --submit
Articles å 峿¡ä»¶
- X Premium 订é (Articles åè½å¿ é)
- å·²å®è£ Google Chrome
- å·²å®è£
bun
Article èæ¬
ç´æ¥ä½¿ç¨ x-article.ts:
npx -y bun ./scripts/x-article.ts article.md
npx -y bun ./scripts/x-article.ts article.md --cover ./cover.jpg
npx -y bun ./scripts/x-article.ts article.md --submit
Markdown æ ¼å¼
---
title: My Article Title
cover_image: /path/to/cover.jpg
---
# Title (becomes article title)
Regular paragraph text with **bold** and *italic*.
## Section Header
More content here.

- List item 1
- List item 2
1. Numbered item
2. Another item
> Blockquote text
[Link text](https://example.com)
\`\`\`
Code blocks become blockquotes (X doesn't support code)
\`\`\`
Frontmatter åæ®µ
| åæ®µ | æè¿° |
|---|---|
title |
æç« æ é¢ (æä½¿ç¨ç¬¬ä¸ä¸ª H1) |
cover_image |
å°é¢å¾çè·¯å¾æ URL |
cover |
cover_image çå«å |
image |
cover_image çå«å |
å¾çå¤ç
- å°é¢å¾ç: 第ä¸å¼ å¾çæ Frontmatter ä¸ç
cover_image - è¿ç¨å¾ç: èªå¨ä¸è½½å°ä¸´æ¶ç®å½
- å ä½ç¬¦: å
容ä¸çå¾ç使ç¨
[[IMAGE_PLACEHOLDER_N]]æ ¼å¼ - æå ¥: æ¾å°å ä½ç¬¦ï¼éä¸ï¼å¹¶å°å ¶æ¿æ¢ä¸ºå®é å¾ç
Markdown 转 HTML èæ¬
è½¬æ¢ Markdown å¹¶æ£æ¥ç»æï¼
# è·åå
嫿æå
æ°æ®ç JSON
npx -y bun ./scripts/md-to-html.ts article.md
# ä»
è¾åº HTML
npx -y bun ./scripts/md-to-html.ts article.md --html-only
# ä¿å HTML å°æä»¶
npx -y bun ./scripts/md-to-html.ts article.md --save-html /tmp/article.html
JSON è¾åº:
{
"title": "Article Title",
"coverImage": "/path/to/cover.jpg",
"contentImages": [
{
"placeholder": "[[IMAGE_PLACEHOLDER_1]]",
"localPath": "/tmp/x-article-images/img.png",
"blockIndex": 5
}
],
"html": "<p>Content...</p>",
"totalBlocks": 20
}
æ¯æçæ ¼å¼
| Markdown | HTML è¾åº |
|---|---|
# H1 |
ä» æ é¢ (ä¸å¨æ£æä¸) |
## H2 – ###### H6 |
<h2> |
**bold** |
<strong> |
*italic* |
<em> |
[text](url) |
<a href> |
> quote |
<a> |
`code` |
<code> |
``` |
<blockquote> (X éå¶) |
- item |
<ul><li> |
1. item |
<ol><li> |
 |
Image placeholder |
Article 工使µ
- è§£æ Markdown: æåæ é¢ãå°é¢ãå 容å¾çï¼çæ HTML
- å¯å¨ Chrome: 带æ CDP çç宿µè§å¨ï¼æä¹ åç»å½
- 导èª: æå¼
x.com/compose/articles - å建æç« : 妿å¨å表页ï¼ç¹å»å建æé®
- ä¸ä¼ å°é¢: ä½¿ç¨æä»¶è¾å ¥ä¸ä¼ å°é¢å¾ç
- å¡«åæ é¢: å°æ é¢è¾å ¥å°æ é¢å段
- ç²è´´å 容: å° HTML å¤å¶å°åªè´´æ¿ï¼ç²è´´å°ç¼è¾å¨
- æå
¥å¾ç: å¯¹äºæ¯ä¸ªå ä½ç¬¦ (ååº):
- å¨ç¼è¾å¨ä¸æ¾å°å ä½ç¬¦ææ¬
- éä¸å ä½ç¬¦
- å°å¾çå¤å¶å°åªè´´æ¿
- ç²è´´ä»¥æ¿æ¢éä¸å 容
- é¢è§: æµè§å¨ä¿ææå¼ 60 ç§ä»¥ä¾é¢è§
- åå¸: ä»
å¨ä½¿ç¨
--submitæ å¿æ¶åå¸
Article 示ä¾ä¼è¯
User: /post-to-x article ./blog/my-post.md --cover ./thumbnail.png
Claude:
1. Parses markdown: title="My Post", 3 content images
2. Launches Chrome with CDP
3. Navigates to x.com/compose/articles
4. Clicks create button
5. Uploads thumbnail.png as cover
6. Fills title "My Post"
7. Pastes HTML content
8. Inserts 3 images at placeholder positions
9. Reports: "Article composed. Review and use --submit to publish."
Article æ éæé¤
- No create button: ç¡®ä¿ X Premium 订é å¤äºæ´»å¨ç¶æ
- Cover upload fails: æ£æ¥æä»¶è·¯å¾åæ ¼å¼ (PNG, JPEG)
- Images not inserting: éªè¯ç²è´´çå 容䏿¯å¦åå¨å ä½ç¬¦
- Content not pasting: æ£æ¥ HTML åªè´´æ¿:
npx -y bun ./scripts/copy-to-clipboard.ts html --file /tmp/test.html
Article åå¸å·¥ä½åç
-
md-to-html.tså° Markdown 转æ¢ä¸º HTML:- æå Frontmatter (æ é¢, å°é¢)
- å° Markdown 转æ¢ä¸º HTML
- ç¨å¯ä¸çå ä½ç¬¦æ¿æ¢å¾ç
- å°è¿ç¨å¾çä¸è½½å°æ¬å°
- è¿åç»æå JSON
-
x-article.tséè¿ CDP åå¸:- å¯å¨çå® Chrome (ç»è¿æ£æµ)
- ä½¿ç¨æä¹ åé ç½®æä»¶ (å·²ä¿åçç»å½)
- éè¿ DOM æä½å¯¼èªåå¡«å ç¼è¾å¨
- ä»ç³»ç»åªè´´æ¿ç²è´´ HTML
- æ¥æ¾/éæ©/æ¿æ¢æ¯ä¸ªå¾çå ä½ç¬¦
èæ¬åè
| èæ¬ | ç¨é |
|---|---|
x-browser.ts |
æ®éæ¨æ (ææ¬ + å¾ç) |
x-article.ts |
Article åå¸ (Markdown) |
md-to-html.ts |
Markdown â HTML è½¬æ¢ |
copy-to-clipboard.ts |
å¤å¶å¾ç/HTML å°åªè´´æ¿ |