Back to MCP directory
publicPublicdnsLocal runtime

generate-image-and-post-mcp

一个基于Model Context Protocol的Twitter/X发推服务器,支持文本、图片发布及AI图像生成功能,通过OAuth认证实现安全访问。

article

README

🚀 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开发者账户

  1. 访问 Twitter开发者门户
  2. 使用你的Twitter账户登录。
  3. 申请开发者账户(如果你还没有)。
  4. 创建一个新项目和应用。

步骤2:配置你的应用

  1. 开发者门户 中访问你的应用设置。
  2. 导航到 "用户认证设置"
  3. 点击 "设置"
  4. 配置以下内容:
    • 应用权限:选择 "读取和写入"。
    • 应用类型:选择 "Web应用、自动化应用或机器人"。
    • 回调URI / 重定向URL:输入 http://localhost:8085/callback
    • 网站URL:输入任何有效URL(例如 https://example.com)。

步骤3:获取OAuth 2.0凭证

  1. 在你的应用设置中,转到 "密钥和令牌" 标签。
  2. "OAuth 2.0客户端ID和客户端密钥" 下,你会找到:
    • 客户端ID(以随机字符串开头)。
    • 客户端密钥(如有需要,点击 "重新生成")。
  3. 保存这些用于OAuth 2.0设置。

步骤4:获取OAuth 1.0a凭证

  1. 在同一个 "密钥和令牌" 标签中。
  2. "认证令牌" 下,你会找到:
    • API密钥(也称为消费者密钥)。
    • API密钥密钥(也称为消费者密钥)。
    • 访问令牌
    • 访问令牌密钥
  3. 如果你没有看到访问令牌/密钥,点击 "生成"
  4. 保存这些用于OAuth 1.0a设置。

设置

1. 设置OAuth 2.0(发布推文必需)

运行OAuth 2.0设置向导:

npm run setup-oauth2

你将被提示:

  1. 输入你的 客户端ID
  2. 输入你的 客户端密钥
  3. 在浏览器中授权应用。
  4. 完成认证流程。 这将把你的凭证保存到~/.twitter_cli/config.json~/.twitter_cli/tokens.json

2. 设置OAuth 1.0a(图像上传必需)

运行OAuth 1.0a设置向导:

npm run setup-oauth1

你将被提示:

  1. 输入你的 API密钥(消费者密钥)。
  2. 输入你的 API密钥密钥(消费者密钥)。
  3. 输入你的 访问令牌
  4. 输入你的 访问令牌密钥。 这将把你的凭证保存到~/.twitter_cli/oauth1_tokens.json

3. 设置Google Gemini API(可选 - 用于图像生成)

运行Gemini API设置向导:

npm run setup-gemini

你将被提示:

  1. 输入你的 Gemini API密钥(从https://aistudio.google.com/apikey获取)。
  2. 配置 图像存储目录(默认:~/.twitter_cli/generated_images)。 这将把你的配置保存到~/.twitter_cli/gemini.json

4. 快速设置(所有服务)

按顺序运行所有设置向导:

# 仅Twitter
npm run setup

# Twitter + Gemini(包含所有内容)
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"
}

配置: 图像存储目录可以通过以下三种方式配置(优先级顺序):

  1. 环境变量export TWITTER_MCP_IMAGE_DIR="/your/custom/path"
  2. 配置文件:在~/.twitter_cli/gemini.json中添加 "image_storage_dir": "/your/custom/path"
  3. 默认~/.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许可证。

贡献

欢迎贡献!请随时提交问题或拉取请求。

支持

如有问题和疑问:

致谢

本项目使用了以下工具构建:

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client