Twitter自动化服务

一个通过Playwright浏览器自动化提供非官方Twitter API访问的MCP服务器,支持内容创建、抓取和社交媒体自动化。

  • by Barresider
  • TypeScript
  • 本地部署
  • 11 星标
  • 更新于
在 GitHub 查看 Barresider/x-mcp

使用说明

X/推特MCP服务器

一种模型上下文协议(MCP)服务器,通过使用Playwright的浏览器自动化提供非官方X/Twitter API访问。该服务器使AI代理和应用程序能够以编程方式与X/Twitter交互,以实现内容创建、抓取和社交媒体自动化。

🚀 特性

内容创作与互动

  • 推特和帖子:在媒体支持下发布单条推文或多条推文
  • 帖子互动:喜欢,不喜欢,转发,取消推特,书签,引用推特,回复帖子
  • 评论管理:喜欢、不喜欢、回复和编辑评论
  • 媒体支持:上传图片、视频和GIF并将其附加到推文中

内容抓取与分析

  • 时间线报废:从“For You”和“Follower”时间线中提取帖子
  • 轮廓报废:获取全面的用户资料数据和最近的帖子
  • 搜索功能:高级搜索,可过滤病毒内容、特定用户和日期范围
  • 评论删除:从特定帖子中提取评论和回复
  • 热门话题:检索当前热门话题和标签

MCP集成

  • 双重运输支持:适用于stdio和HTTP/SSE传输
  • 基于工具的界面:20多种工具可供AI代理与X/Twitter交互
  • 结构化响应:JSON格式的响应,包含全面的元数据
  • 错误处理:具有描述性错误消息的稳健错误处理

📋 先决条件

  • Node.js 18+
  • 有效的X/Twitter帐户凭据
  • Docker(可选,用于容器化部署)

快速开始

  1. 将此配置添加到您的Claude Desktop配置文件中:

视窗: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "x-mcp": {
      "command": "npx",
      "args": ["-y", "@barresider/x-mcp"],
      "env": {
        "TWITTER_USERNAME": "your_twitter_username",
        "TWITTER_PASSWORD": "your_twitter_password"
      }
    }
  }
}

使用代理(可选):

{
  "mcpServers": {
    "x-mcp": {
      "command": "npx",
      "args": ["-y", "@barresider/x-mcp"],
      "env": {
        "TWITTER_USERNAME": "your_twitter_username",
        "TWITTER_PASSWORD": "your_twitter_password",
        "PROXY_URL": "http://proxy-server:port"
      }
    }
  }
}
  1. 重新启动克劳德桌面

就是这样!Claude现在可以通过25多种强大的工具与X/Twitter进行交互,包括:

  • tweet:发布带有可选媒体的新推文
  • thread:发布多条推文
  • search_twitter:使用高级过滤器搜索推文
  • scrape_profile:获取全面的用户资料数据
  • scrape_timeline:从时间线中提取帖子
  • like_post, retweet_post, bookmark_post:与帖子互动
  • 还有更多用于全面的X/Twitter自动化

示例用法

试着问克劳德:

  • “你能发一条推特说‘克劳德你好!’吗?”
  • “你能搜索关于Claude AI的推文吗?”
  • “你能抓取埃隆·马斯克的个人资料,并向我展示他最近的5条推文吗?”
  • “你能发布一条关于人工智能好处的帖子吗?”

🛠️ 安装

本地开发安装

  1. 克隆存储库:
git clone <repository-url>
cd x-mcp
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

Docker安装

  1. 构建Docker镜像:
docker build -t x-mcp .
  1. 或者使用Docker Compose:
docker-compose --profile mcp up --build

⚙️ 配置

环境变量

创建一个 .env 项目根目录中的文件:

# Required: X/Twitter credentials
TWITTER_USERNAME=your_username
TWITTER_PASSWORD=your_password

# Optional: Proxy configuration
PROXY_URL=http://proxy-server:port          # Full proxy URL (supports http/https)
# or with authentication
PROXY_URL=http://username:password@proxy-server:port
# or separately
PROXY_URL=http://proxy-server:port
PROXY_USERNAME=proxy_username               # Optional: separate username
PROXY_PASSWORD=proxy_password               # Optional: separate password

# Optional: MCP server configuration
MCP_TRANSPORT=stdio           # Options: stdio, sse, http
MCP_PORT=3000                # Port for HTTP/SSE transport

# Optional: Directory for authentication state (default: playwright/.auth)
AUTH_DIR=playwright/.auth

身份验证设置

  1. (可选)创建身份验证目录或设置 AUTH_DIR 环境变量:
export AUTH_DIR=/path/to/auth/dir
mkdir -p "${AUTH_DIR:-playwright/.auth}"
  1. 登录X/Twitter(存储会话以供重用):
npm run cli login
# or
node dist/cli.js login

🔧 可用的MCP工具

该服务器提供25多种工具,用于全面的X/Twitter交互:

身份验证和设置

  • login -使用X/Twitter进行身份验证

内容创建

  • tweet -发布一条带有可选媒体的推文
  • thread -发布多条推文
  • reply_to_post -对特定帖子的回复
  • quote_tweet -引用带有附加文本的推文

帖子互动

  • like_post / unlike_post -喜欢/不喜欢的帖子
  • retweet_post / unretweet_post -转发/取消转发帖子
  • bookmark_post / unbookmark_post -书签管理

评论互动

  • like_comment_by_id / unlike_comment_by_id -喜欢/不喜欢评论
  • reply_to_comment_by_id -对评论的回复
  • replace_comment_by_id -编辑评论(如果支持)

内容刮擦

  • scrape_posts -从当前页面删除帖子
  • scrape_profile -获取用户资料和最近的帖子
  • scrape_comments -从帖子中提取评论
  • scrape_timeline -为你刮胡子/遵循时间表
  • scrape_trending -获取热门话题
  • search_twitter -一般搜索功能
  • search_viral -以最低参与度搜索病毒式传播的内容

📊 数据结构

推特帖子

interface TwitterPost {
  postId: string;
  author: TwitterUser;
  content: string;
  timestamp: Date;
  media: TwitterMedia[];
  metrics: PostMetrics;
  engagementRate: number;
  isRetweet?: boolean;
  retweetedFrom?: TwitterUser;
  quotedPost?: TwitterPost;
  url: string;
}

推特个人资料

interface TwitterProfile extends TwitterUser {
  bannerUrl?: string;
  bio?: string;
  location?: string;
  website?: string;
  joinedDate?: Date;
  followingCount: number;
  followersCount: number;
  postsCount: number;
  isFollowing?: boolean;
  isFollowedBy?: boolean;
  latestPosts?: TwitterPost[];
}

PostMetrics

interface PostMetrics {
  likesCount: number;
  retweetsCount: number;
  quotesCount: number;
  repliesCount: number;
  impressionsCount: number;
  bookmarksCount: number;
}

🔒 安全与最佳实践

速率限制

  • 实现请求之间的延迟,以避免速率限制
  • 对刮擦操作使用合理的限制
  • 监控速率限制响应

认证

  • 将凭据安全地存储在环境变量中
  • 会话数据存储在由指定的目录中 AUTH_DIR 环境变量(默认值 playwright/.auth/)
  • 可能需要定期重新验证

错误处理

  • 所有操作都包括全面的错误处理
  • 用于故障排除的描述性错误消息
  • 缺失元素的优雅退化

代理配置

  • 支持所有浏览器连接的HTTP/HTTPS代理
  • 通过配置 PROXY_URL 环境变量
  • 支持使用用户名/密码进行身份验证
  • 适用于:
    • 旋转IP地址以避免速率限制
    • 从受限网络访问X/Twitter
    • 添加额外的匿名层
  • 示例格式:
    • 基础: http://proxy-server:port
    • 使用auth: http://username:password@proxy-server:port
    • 单独身份验证:使用 PROXY_USERNAME 和 PROXY_PASSWORD

🐳 Docker部署

使用Docker Compose

# Start the MCP server
docker-compose --profile mcp up

# With environment variables
TWITTER_USERNAME=your_username TWITTER_PASSWORD=your_password docker-compose --profile mcp up

自定义Docker运行

docker run -d \
  --name x-mcp \
  -e TWITTER_USERNAME=your_username \
  -e TWITTER_PASSWORD=your_password \
  -e PROXY_URL=http://proxy-server:port \
  -e MCP_TRANSPORT=sse \
  -e MCP_PORT=3000 \
  -p 3000:3000 \
  x-mcp

🛠️ 发展

项目结构

src/
├── mcp.ts                    # Main MCP server implementation
├── cli.ts                    # Command line interface
├── types.ts                  # TypeScript type definitions
├── utils.ts                  # Utility functions
├── behaviors/                # User interaction behaviors
│   ├── login.ts             # Authentication logic
│   ├── interact-with-post.ts # Post interaction functions
│   ├── interact-with-comment.ts # Comment interaction functions
│   └── upload-media.ts      # Media upload functionality
└── scrapers/                # Data scraping modules
    ├── index.ts             # Scraper exports
    ├── post-scraper.ts      # Post scraping logic
    ├── profile-scraper.ts   # Profile scraping logic
    ├── comment-scraper.ts   # Comment scraping logic
    ├── search-scraper.ts    # Search functionality
    ├── timeline-scraper.ts  # Timeline scraping
    └── utils.ts             # Scraping utilities

建造和测试

# Build TypeScript
npm run build

# Run MCP server
npm run mcp

# Run CLI commands
npm run cli <command>

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 彻底测试
  5. 提交拉取请求

指南

  • 遵循TypeScript的最佳实践
  • 添加全面的错误处理
  • 更新新功能的类型定义
  • 使用真实的X/Twitter交互进行测试
  • 记录新功能

⚠️ 免责声明

  • 这是一个使用浏览器自动化的非官方工具
  • X/Twitter的服务条款适用
  • 负责任地使用并遵守费率限制
  • UI更改可能需要更新选择器
  • 不隶属于X/Twitter

📄 许可证

[此处为许可证信息]

🐛 故障排除

常见问题

身份验证失败

  • 验证中的凭据 .env 文件
  • 请尝试使用重新登录 npm run cli login
  • 检查2FA要求

找不到元素错误

  • X/Twitter可能已更新其用户界面
  • 清除浏览器缓存并重新进行身份验证
  • 检查元素选择器是否更新

速率限制

  • 降低请求频率
  • 增加操作之间的延迟
  • 使用较小的批量

集装箱问题

  • 确保环境变量正确
  • 检查端口可用性
  • 验证Docker网络配置

如需更多帮助,请在项目存储库上打开一个问题。