🚀 Twitter MCP 服務器
這是一個模型上下文協議(MCP)服務器,支持Claude和其他AI助手在Twitter/X上發佈推文,支持文本和圖像,並具備AI圖像生成功能。
🚀 快速開始
本項目是一個支持Claude和其他AI助手在Twitter/X上發佈推文的MCP服務器。它支持文本和圖像推文發佈,還具備AI圖像生成能力。以下是使用前的準備和操作步驟。
✨ 主要特性
- 通過OAuth 2.0發佈文本推文。
- 通過OAuth 1.0a上傳並附加圖像(每條推文最多4張)。
- 新增:使用Google Gemini進行AI圖像生成。
- 自動刷新OAuth 2.0令牌。
- 將憑證安全存儲在
~/.twitter_cli/目錄中。
- 可配置圖像存儲目錄。
- 通過交互式CLI工具輕鬆設置。
📦 安裝指南
cd twitter-package
npm install
💻 使用示例
運行MCP服務器
啟動Twitter MCP服務器:
npm start
啟動圖像生成MCP服務器:
npm run start:image
服務器將在標準輸入輸出上運行,可與Claude Desktop或其他MCP客戶端配合使用。
配置Claude Desktop
將以下內容添加到Claude Desktop配置文件中:
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"twitter": {
"command": "node",
"args": ["/absolute/path/to/twitter-package/src/mcp-server/index.js"]
},
"generate-image": {
"command": "node",
"args": ["/absolute/path/to/twitter-package/src/mcp-server/generate-image.js"]
}
}
}
將/absolute/path/to/twitter-package/替換為實際目錄路徑。
使用Claude
配置完成後,你可以要求Claude執行以下操作:
發佈推文:
Post a tweet saying "Hello from Claude! 👋"
發佈帶圖像的推文:
Post a tweet "Check out this amazing view!" with /path/to/image.jpg
生成AI圖像:
Generate an image of a futuristic cityscape at sunset
生成併發布圖像推文:
Generate an image of a cute robot, then post it to Twitter with the caption "Meet my new AI friend! 🤖"
📚 詳細文檔
獲取Twitter API憑證
步驟1:創建Twitter開發者賬戶
- 訪問 Twitter開發者門戶。
- 使用你的Twitter賬戶登錄。
- 申請開發者賬戶(如果你還沒有)。
- 創建一個新項目和應用。
步驟2:配置你的應用
- 在 開發者門戶 中訪問你的應用設置。
- 導航到 "用戶認證設置"。
- 點擊 "設置"。
- 配置以下內容:
- 應用權限:選擇 "讀取和寫入"。
- 應用類型:選擇 "Web應用、自動化應用或機器人"。
- 回調URI / 重定向URL:輸入
http://localhost:8085/callback。
- 網站URL:輸入任何有效URL(例如
https://example.com)。
步驟3:獲取OAuth 2.0憑證
- 在你的應用設置中,轉到 "密鑰和令牌" 標籤。
- 在 "OAuth 2.0客戶端ID和客戶端密鑰" 下,你會找到:
- 客戶端ID(以隨機字符串開頭)。
- 客戶端密鑰(如有需要,點擊 "重新生成")。
- 保存這些用於OAuth 2.0設置。
步驟4:獲取OAuth 1.0a憑證
- 在同一個 "密鑰和令牌" 標籤中。
- 在 "認證令牌" 下,你會找到:
- API密鑰(也稱為消費者密鑰)。
- API密鑰密鑰(也稱為消費者密鑰)。
- 訪問令牌。
- 訪問令牌密鑰。
- 如果你沒有看到訪問令牌/密鑰,點擊 "生成"。
- 保存這些用於OAuth 1.0a設置。
設置
1. 設置OAuth 2.0(發佈推文必需)
運行OAuth 2.0設置嚮導:
npm run setup-oauth2
你將被提示:
- 輸入你的 客戶端ID。
- 輸入你的 客戶端密鑰。
- 在瀏覽器中授權應用。
- 完成認證流程。
這將把你的憑證保存到
~/.twitter_cli/config.json和~/.twitter_cli/tokens.json。
2. 設置OAuth 1.0a(圖像上傳必需)
運行OAuth 1.0a設置嚮導:
npm run setup-oauth1
你將被提示:
- 輸入你的 API密鑰(消費者密鑰)。
- 輸入你的 API密鑰密鑰(消費者密鑰)。
- 輸入你的 訪問令牌。
- 輸入你的 訪問令牌密鑰。
這將把你的憑證保存到
~/.twitter_cli/oauth1_tokens.json。
3. 設置Google Gemini API(可選 - 用於圖像生成)
運行Gemini API設置嚮導:
npm run setup-gemini
你將被提示:
- 輸入你的 Gemini API密鑰(從https://aistudio.google.com/apikey獲取)。
- 配置 圖像存儲目錄(默認:
~/.twitter_cli/generated_images)。
這將把你的配置保存到~/.twitter_cli/gemini.json。
4. 快速設置(所有服務)
按順序運行所有設置嚮導:
npm run setup
npm run setup:all
MCP工具參考
post_tweet
在Twitter/X上發佈帶有可選圖像的推文。
參數:
text(字符串,必需):推文文本(最多280個字符)。
image_paths(字符串數組,可選):圖像文件路徑(最多4張圖像)。
返回:
- 包含推文URL和ID的成功消息。
示例:
{
"text": "Hello from the MCP server!",
"image_paths": ["/path/to/image1.jpg", "/path/to/image2.png"]
}
generate_image
使用Google的Gemini API根據文本提示生成AI圖像。
參數:
prompt(字符串,必需):要生成圖像的文本描述。
返回:
- 生成的圖像路徑和附帶文本。
示例:
{
"prompt": "A serene mountain landscape at sunset with a lake reflection"
}
配置:
圖像存儲目錄可以通過以下三種方式配置(優先級順序):
- 環境變量:
export TWITTER_MCP_IMAGE_DIR="/your/custom/path"
- 配置文件:在
~/.twitter_cli/gemini.json中添加 "image_storage_dir": "/your/custom/path"
- 默認:
~/.twitter_cli/generated_images
文件結構
twitter-package/
├── package.json # 包配置
├── README.md # 本文件
├── SETUP_GUIDE.md # 快速設置指南
├── src/
│ ├── mcp-server/
│ │ ├── index.js # Twitter MCP服務器
│ │ └── generate-image.js # 圖像生成MCP服務器
│ ├── auth/
│ │ ├── oauth2-setup.js # OAuth 2.0設置嚮導
│ │ ├── oauth1-setup.js # OAuth 1.0a設置嚮導
│ │ └── gemini-setup.js # Gemini API設置嚮導
│ └── lib/
│ └── config.js # 共享配置實用程序
└── ~/.twitter_cli/ # 設置期間創建
├── config.json # OAuth 2.0客戶端憑證
├── tokens.json # OAuth 2.0訪問/刷新令牌
├── oauth1_tokens.json # OAuth 1.0a憑證
├── gemini.json # Gemini API配置
└── generated_images/ # 生成圖像的存儲目錄(默認)
配置文件
所有配置文件都存儲在~/.twitter_cli/中,具有安全權限(0600)。
config.json(OAuth 2.0客戶端憑證)
{
"client_id": "your_client_id",
"client_secret": "your_client_secret"
}
tokens.json(OAuth 2.0訪問令牌)
{
"access_token": "...",
"refresh_token": "...",
"expires_at": 1234567890,
"scope": "tweet.read tweet.write users.read offline.access"
}
oauth1_tokens.json(OAuth 1.0a憑證)
{
"oauth1_api_key": "your_api_key",
"oauth1_api_secret": "your_api_secret",
"access_token": "your_access_token",
"access_token_secret": "your_access_token_secret"
}
gemini.json(Gemini API配置)
{
"gemini_api_key": "your_gemini_api_key",
"image_storage_dir": "/custom/path/to/images"
}
故障排除
認證錯誤
錯誤:"未認證。請先運行 'npm run setup-oauth2'。"
- 你需要運行OAuth 2.0設置:
npm run setup-oauth2
錯誤:"未找到OAuth 1.0a憑證。請先運行 'npm run setup-oauth1'。"
- 你需要運行OAuth 1.0a設置:
npm run setup-oauth1
錯誤:"刷新令牌失敗"
- 你的刷新令牌可能已過期。
- 重新運行OAuth 2.0設置:
npm run setup-oauth2
媒體上傳錯誤
錯誤:"上傳媒體失敗"
- 確保你已運行OAuth 1.0a設置:
npm run setup-oauth1
- 驗證你的應用在Twitter開發者門戶中具有 "讀取和寫入" 權限。
- 檢查你的圖像文件是否存在且為支持的格式(jpg、png、gif、webp)。
- 確保圖像大小不超過15MB。
權限錯誤
錯誤:"403禁止訪問"
- 你的應用可能沒有正確的權限。
- 轉到Twitter開發者門戶 → 你的應用 → 設置。
- 確保 "讀取和寫入" 權限已啟用。
- 更改權限後,你可能需要重新生成令牌。
圖像生成錯誤
錯誤:"未找到Gemini API密鑰。請先運行 'npm run setup-gemini'。"
- 你需要設置Gemini API:
npm run setup-gemini
錯誤:"生成圖像失敗"
- 驗證你的Gemini API密鑰是否有效。
- 在https://aistudio.google.com/ 檢查你的API配額。
- 確保你的提示合適並符合內容政策。
- 嘗試更簡單或更具體的提示。
錯誤:"圖像存儲目錄權限被拒絕"
- 檢查配置的存儲目錄是否可寫。
- 默認位置:
~/.twitter_cli/generated_images
- 如有需要,在
~/.twitter_cli/gemini.json中更改目錄。
安全
- 所有憑證都存儲在
~/.twitter_cli/中,具有安全文件權限(0600)。
- OAuth 2.0使用PKCE(代碼交換證明密鑰)以增強安全性。
- 訪問令牌在過期時會自動刷新。
- 切勿將
~/.twitter_cli/目錄提交到版本控制。
API限制
- 推文長度:280個字符。
- 每條推文的圖像數量:最多4張。
- 圖像大小:每張圖像15MB。
- 支持的格式:JPG、PNG、GIF、WebP。
- 速率限制:適用標準Twitter API速率限制。
📄 許可證
本項目採用MIT許可證。
貢獻
歡迎貢獻!請隨時提交問題或拉取請求。
支持
如有問題和疑問:
致謝
本項目使用了以下工具構建: