关于 TwitterAPIs
TwitterAPIs 是供开发者和 Agent 获取 Twitter/X 数据及执行账号操作的 MCP 服务。它通过 TwitterAPIs REST API 提供大量读写工具,使用 API 密钥而非 X 开发者账号。
主要功能
- 01搜索推文和用户账号
- 02读取个人资料、时间线、串文和列表
- 03管理帖子及账号互动
- 04通过已关联会话读取私信和账号专属数据
- 05筛选返回字段并分页读取
适用场景
- 01研究公开推文和账号动态
- 02查看用户时间线或对话串文
- 03通过已关联的 X 账号发帖或回复
- 04读取账号专属书签或私信
MCP 相关
该服务将 Twitter/X 的读取和写入操作作为 MCP 工具提供,每个工具对应一个 TwitterAPIs REST 端点。公开读取使用 API 密钥;账号专属读取和大多数写入操作需要已关联的 X 会话或单次调用凭据。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://api.twitterapis.com/mcpclaude mcp add --transport http twitterapis-twitterapis https://api.twitterapis.com/mcp{"mcpServers":{"twitterapis-twitterapis":{"type":"http","url":"https://api.twitterapis.com/mcp"}}}在 Cursor 中打开{"servers":{"twitterapis-twitterapis":{"type":"http","url":"https://api.twitterapis.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"twitterapis-twitterapis":{"type":"http","url":"https://api.twitterapis.com/mcp"}}}{"mcpServers":{"twitterapis-twitterapis":{"serverUrl":"https://api.twitterapis.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
@twitterapis/mcp
@twitterapis/mcp 是 TwitterAPIs 的官方 MCP 服务,专为需要在 Claude、Cursor、Windsurf、VS Code 或任何 MCP 客户端中使用 Twitter / X 数据的开发者和 AI Agent 打造,无需 X 开发者账号。你的 Agent 可以搜索推文、查看个人资料、时间线、关注者、帖子串和列表,还可以通过你关联的 X 账号发布、回复、点赞、转推或关注。大多数读取操作每次收费 $0.0008;由于每次调用会返回约 20 条推文,每 1,000 条推文约需 $0.04;发布推文的费用为 $0.0016。新账号可获得 $0.50 免费额度,无需绑定银行卡。每个工具都对应 api.twitterapis.com 上的一个 REST 端点,且服务端不保存任何状态。
安装:使用来自 https://www.twitterapis.com/signup 的 TWITTERAPIS_KEY 运行 npx -y @twitterapis/mcp@latest
托管版,无需粘贴密钥即可登录(Claude Code):claude mcp add --transport http twitterapis https://api.twitterapis.com/mcp
网站:https://www.twitterapis.com/mcp
快速开始
无需安装,使用 npx 运行。你只需要一样东西:一个 API 密钥(可免费获得 $0.50 额度,无需绑定银行卡):twitterapis.com/signup。
设置
Claude Desktop
编辑 claude_desktop_config.json(Settings → Developer → Edit Config):
{
"mcpServers": {
"twitterapis": {
"command": "npx",
"args": ["-y", "@twitterapis/mcp@latest"],
"env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
}
}
}
重启 Claude Desktop。工具选择器中会显示 twitter_* 工具。
Cursor
~/.cursor/mcp.json(或 Settings → MCP → Add New Server):
{
"mcpServers": {
"twitterapis": {
"command": "npx",
"args": ["-y", "@twitterapis/mcp@latest"],
"env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"twitterapis": {
"command": "npx",
"args": ["-y", "@twitterapis/mcp@latest"],
"env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
}
}
}
VS Code(Copilot / Agent 模式)
在工作区的 .vscode/mcp.json 中配置,或在用户级 MCP 设置中配置:
{
"servers": {
"twitterapis": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@twitterapis/mcp@latest"],
"env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
}
}
}
配置
| 环境变量 | 必填 | 默认值 | 用途 |
|---|---|---|---|
TWITTERAPIS_KEY | 是 | (无) | 来自控制面板的 API 密钥 |
TWITTERAPIS_BASE_URL | 否 | https://api.twitterapis.com | 覆盖 API 主机 |
TWITTERAPIS_TIMEOUT_MS | 否 | 30000 | 每次请求的超时时间,单位为毫秒 |
工具
共 116 个工具:70 个读取工具和 46 个写入操作。大多数用户端点接受 username(不带 @ 的用户名)或 user_id(twitter_user_likes 和 twitter_user_tweets_complete 必须使用 user_id);推文端点接受 id 或 url;支持分页的端点会返回 cursor,传回该值即可获取下一页。每次数据读取(twitter_audience_summary 除外,该工具始终返回完整摘要)也接受 fields(以逗号分隔的点分路径,用于保留指定字段,例如 id,text,author.username;分页和信封键始终保留)和 compact("1" 表示使用内置预设,仅保留 ID、文本、计数和作者基本信息),因此按 token 付费的模型可以精简页面,只保留会读取的内容。4 个读取工具是免费的账户查询(twitter_account_me、twitter_account_payments、twitter_feedback_get、twitter_feedback_list);14 个监控工具和 twitter_feedback_send 也免费(属于账户管理,不计入读取用量)。
公开读取(搜索、个人资料、推文、关注者、点赞)只需 API 密钥即可使用。仅限账户的读取(书签、私信、主页时间线、已知关注者)和大多数写入操作会以已认证的 X 账户身份执行,因此需要先将会话关联到密钥(在此之前会返回 HTTP 409)。可通过注册 x.com Cookie(twitter_customer_session)或使用用户名/密码登录(twitter_user_login)来关联会话。或者,在这些工具的任意一次调用中传入单次调用内联凭据(auth_token + ct0,可选 proxy_url / user_agent),即可在无需预先注册会话的情况下,以该账户身份执行单次调用,让一个 API 密钥可以代表多个账户执行操作。对于写入操作,请将 proxy_url 设置为住宅代理,因为 X 会软封锁从数据中心 IP 发出的写入请求。每个写入工具都标注为 readOnlyHint: false;用于撤销操作的工具(删除、取消关注、取消点赞、取消转推、取消收藏、删除监控/Webhook)都标注为 destructiveHint: true,这样 MCP 客户端可以在运行前提示用户。监控和反馈工具(见下文)是例外:它们管理的是你的 twitterapis.com 账户,而不是 X 会话,因此只需 API 密钥,无需关联会话,也无需内联凭据。
读取工具
| 工具 | 功能 |
|---|---|
twitter_advanced_search | 使用 X 运算符(from:、min_faves:、since:、filter:links 等)搜索推文 |
twitter_user_search | 按姓名或关键词查找用户账号 |
twitter_user_info | 按用户名获取完整个人资料(简介、计数、认证状态、位置) |
twitter_user_info_by_id | 按数字用户 ID 获取完整个人资料 |
twitter_user_status | 查看账号是否正常、已暂停或已删除 |
twitter_user_about | 用户的结构化 About 对象(类别、专业/商务标签、认证及身份验证标记、加入日期,以及 X 的“关于此账号”透明度面板) |
twitter_user_about_batch | 一次调用获取最多 100 个账号的相同 About 对象(用户名或 user_ids),按已返回资料的账号数计费;适用于按国家或账号历史审核名单 |
twitter_audience_summary | 了解受众构成:对最多 100 名关注者或转发者的样本,提供国家分布直方图和可能为机器人的占比 |
twitter_user_affiliates | 与某组织资料关联的账号 |
twitter_check_follow_relationship | 按 ID 或用户名查询两个账号之间的关注关系(谁关注了谁) |
twitter_check_follow_relationship_batch | 一次调用查询某个账号与最多 100 个其他账号的关注关系,可指定任一方向(这些账号中哪些关注了该品牌) |
twitter_user_tweets | 用户最近发布的原创推文(不包括回复) |
twitter_user_tweets_and_replies | 用户的完整时间线(推文和回复) |
twitter_user_tweets_complete | 每次调用批量获取用户的大量推文历史(参见 分页说明) |
twitter_user_media | 用户发布的图片和视频 |
twitter_user_mentions | 最近提及某用户的公开推文 |
twitter_user_likes | 用户点过赞的推文(公开的“喜欢”选项卡) |
twitter_user_followers | 关注某用户的账号 |
twitter_user_following | 某用户关注的账号 |
twitter_user_followers_v2 | 采用 v2 响应结构的关注者(字段更丰富,游标分页更深入) |
twitter_user_following_v2 | 采用 v2 响应结构的关注列表(字段更丰富,游标分页更深入) |
twitter_user_verified_followers | 仅返回用户的已认证关注者 |
twitter_followers_you_know | 目标用户的关注者中,你的已认证账号也关注的账号 |
twitter_tweet_detail | 单条推文:文本、作者、指标、媒体、引用/回复上下文 |
twitter_tweet_replies | 对某条推文的回复 |
twitter_tweet_replies_complete | 一次调用获取某条推文下的所有回复,并返回 is_complete 标记和用于继续获取的游标 |
twitter_tweet_thread | 作者的完整串文(同一作者发布、相互关联的推文链) |
twitter_tweet_retweeters | 转发某条推文的账号 |
twitter_tweet_quotes | 引用某条推文的推文及其文本。基于搜索,因此 count 表示搜索返回的数量,而非该推文实际的 quote_count |
twitter_list_members | Twitter/X 列表的成员 |
twitter_list_followers | 关注公开列表的账号(与列表成员并非同一群体) |
twitter_list_tweets | 列表成员发布的帖子,基于搜索:可按 since/until 日期、include_replies 和 product(Latest/Top)筛选,不含转发 |
twitter_list_timeline | 列表的原生 X 信息流:包含转发并采用 X 自身的排序方式;不支持筛选,仅支持分页 |
twitter_home_timeline | 你的已认证账号的主页时间线 (会话) |
twitter_bookmarks | 你的已认证账号的书签 (会话) |
twitter_blocking | 你的已认证账号屏蔽的账号(仅限你自己的列表)(会话) |
twitter_muting | 你的已认证账号隐藏的账号(仅限你自己的列表)(会话) |
twitter_bookmark_search | 在你的书签中进行全文搜索 (会话) |
twitter_bookmark_folders | 你的已认证账号的书签文件夹 (会话) |
twitter_bookmark_folder_timeline | 根据 folder_id 获取你的某个书签文件夹中的推文 (会话) |
twitter_dm_list | 你的私信对话(收件箱),只读 (会话) |
twitter_dm_conversation | 某个私信对话中的消息,只读;向前翻页时,将上一页的 min_entry_id 作为 max_id 传入 (会话) |
twitter_spaces_info | 获取一个 X Space 的元数据和参与者名单,可查询正在进行或已结束的 Space(按 Space id) |
twitter_community_search | 按关键词查找 X 社区;此发现步骤会生成社区系列其他工具所需的数字 ID |
twitter_community_info | 按数字 ID 获取一个 X 社区的信息:名称、计数、加入政策、规则、主题、横幅和管理员 |
twitter_community_about | 获取某个社区的版主和成员预览;每项均以完整用户资料返回,而非 _members/_moderators 返回的精简行 |
twitter_community_members | 社区成员名单,每行都包含该成员的 Admin/Moderator/Member 角色 |
twitter_community_moderators | 通过社区自身的上游操作获取版主和管理员(并非从成员名单筛选而来) |
twitter_community_tweets | 社区帖子时间线,置顶帖子会作为独立的 pinned 字段返回 |
twitter_community_memberships | 反向查询:获取某个数字 user_id 所属的所有社区 |
twitter_creator_commentary_video | 查询谁发布了关于某个主题的原生视频:获取一页搜索结果,按作者分组并按视频帖子数排序,然后提供播放量中位数和总播放量,以及每位创作者最多三个热门帖子 ID |
twitter_grok_chat | 向 X 自带的 Grok 提问;答案基于实时 X 数据,并附上引用的来源 |
twitter_grok_config | 查询已认证账号是否能使用 Grok,以及可选择的模型 |
twitter_trends | 获取某个位置的当前热门趋势(按 country 或 woeid)、某个 X Explore 选项卡的趋势(按 category),或仅获取 X 标记为“商业与金融”的趋势(category=business_and_finance) |
twitter_trends_locations | 获取 X 提供趋势数据的所有位置及其 WOEID |
twitter_account_me | 你的 twitterapis.com 账号:额度、用量、邮箱(免费) |
twitter_account_payments | 你的 twitterapis.com 付款历史(免费) |
twitter_media_status | 查看已上传 media_id 的处理状态;附加视频或 GIF 前,轮询直至状态为 succeeded (会话) |
twitter_article_get | 通过公告推文 ID/URL 读取已发布文章的完整内容(公开,无需会话) |
twitter_article_list | 列出你自己的文章,并按 lifecycle(draft 或 published)筛选 (会话) |
写入操作 (需要关联 X 会话)
| 工具 | 功能 |
|---|---|
twitter_create_tweet | 发布一条推文;设置 reply_to 以回复,或设置 quote 以引用推文 |
twitter_delete_tweet | 删除你发布的一条推文(不可撤销) |
twitter_favorite_tweet / twitter_unfavorite_tweet | 喜欢 / 取消喜欢一条推文 |
twitter_retweet / twitter_unretweet | 转发 / 撤销转发 |
twitter_bookmark_tweet / twitter_unbookmark_tweet | 添加书签 / 移除书签 |
twitter_follow_user / twitter_unfollow_user | 通过 user_id 或 username 关注 / 取消关注用户(必须且只能提供其中一个) |
twitter_dm_send | 通过用户的数字型 recipient_id 向其发送私信 |
twitter_list_create | 创建由你的会话拥有的 Twitter/X 列表(name,可选的 description / is_private) |
twitter_list_add_member / twitter_list_remove_member | 在你拥有的列表中添加 / 移除一个账号;返回的 member_count 可证明写入已生效 |
twitter_community_join / twitter_community_leave | 通过数字型 community_id 加入 / 离开 X 社区。需要版主批准的社区会返回 409 join_requires_approval,且不会提交任何申请;拒绝操作不会计费 |
twitter_media_upload | 上传 base64 图片,返回供 twitter_create_tweet 使用的 media_id |
twitter_update_profile | 更改你自己的姓名、简介、所在地或链接。这是部分更新:省略的字段保留原值,空字符串会清除相应字段 |
twitter_update_avatar | 更换你自己的头像。通过 image 接收 base64 图片字节,而非 URL 或 media_id。无法撤销,且 X 不保留历史记录 |
twitter_update_banner | 更换你自己的页眉图片。通过 banner 接收 base64 图片字节,而非 URL 或 media_id。无法撤销,且 X 不保留历史记录 |
草稿和定时发布 (需要关联 X 会话)
草稿是私密的,绝不会发布。定时发布的帖子会在 execute_at 指定的时间公开发布,除非你先取消。两个列表都只读取你自己的账号。
| 工具 | 功能 |
|---|---|
twitter_draft_create | 在你的账号上保存私密草稿;不会发布任何内容 |
twitter_draft_edit | 通过 id 替换一条草稿的内容;你发送的字段将成为草稿内容 |
twitter_draft_delete | 通过 id 删除草稿;它从未公开,因此不会撤回任何内容 |
twitter_draft_list | 列出你的草稿,每条都包含 text 和 thread_truncated |
twitter_scheduled_create | 为未来的 execute_at 安排帖子;时间单位为 epoch 秒,不是毫秒 |
twitter_scheduled_delete | 在待发布帖子发送前取消它 |
twitter_scheduled_list | 列出你的待发布队列;返回的 execute_at 使用 epoch 秒 |
两个列表工具都可能返回 partial: true,表示已读取 X 的响应,但未能完全解析。它不等同于列表为空:读取正常时会完全省略此标志,因此,如果返回空数组且没有 partial,就表示你的队列或草稿确实为空。
文章 (X 的长文“Notes”功能;写入操作需要关联 X 会话)
| 工具 | 功能 |
|---|---|
twitter_article_create | 开始撰写一篇新文章草稿,并返回其 id |
twitter_article_update_title | 设置草稿或已发布文章的标题 |
twitter_article_update_cover_media | 将已上传的图片设为文章封面(使用来自 twitter_media_upload 的 media_id) |
twitter_article_update_content | 替换草稿或已发布文章的正文(由你构建的 Draft.js content_state) |
twitter_article_publish | 发布草稿,并发布一条真实的公开公告推文(无法完全撤销) |
twitter_article_unpublish | 将已发布文章恢复为草稿(公告推文仍会保留) |
twitter_article_delete | 删除文章(草稿:彻底删除;已发布:取消发布并删除公告推文),不可撤销 |
另请参阅上文的 twitter_article_get 和 twitter_article_list。
监控 (通过 webhook 推送新帖子;免费,不计量)
监控 X 账号的新帖子,并将帖子通过 HMAC 签名推送到你自己的 HTTPS 端点,无需轮询。请先注册 webhook,再创建监控;被监控账号发布的每条新帖子都会发送到你账户下所有启用的 webhook(也可以通过 webhook_ids 限定为其中一部分)。监控和 webhook 的增删改查属于账户管理,不属于计量的 Twitter 读取,因此以下所有工具均免费。
| 工具 | 功能 |
|---|---|
twitter_monitor_create | 开始监控 X 账号(handle)的新帖子 |
twitter_monitor_list | 列出你账户下的所有监控 |
twitter_monitor_update | 暂停/恢复监控,或更改其 webhook_ids 限制 |
twitter_monitor_delete | 停止并移除监控(不可撤销) |
twitter_monitor_health | 查看单个监控的状态、降级标记、轮询间隔和游标位置 |
twitter_monitor_account_health | 一次调用汇总账户整体情况:服务状态、启用/暂停的监控数量、过去 24 小时的投递结果数量 |
twitter_monitor_deliveries | 查看所有监控的近期投递事件,以及检测和投递延迟 |
twitter_x_user_stream_add_user | 使用 x_user_stream 格式的信封,兼容式替代 twitter_monitor_create |
twitter_x_user_stream_remove_user | 使用 x_user_stream 格式的信封,兼容式替代 twitter_monitor_delete |
twitter_x_user_stream_list_users | 使用 x_user_stream 格式的信封,兼容式替代 twitter_monitor_list |
twitter_monitor_webhook_create | 注册 HTTPS 投递 URL;HMAC 签名密钥仅返回一次 |
twitter_monitor_webhook_list | 列出你账户下注册的所有 webhook |
twitter_monitor_webhook_delete | 按 ID 软删除 webhook(调用方无法撤销) |
twitter_monitor_webhook_test | 立即同步向 webhook 发送一条带签名的测试事件 |
twitter_monitor_webhook_redrive | 按时间从早到晚重放端点不可用期间进入死信队列的投递 |
反馈 (无需离开当前会话,即可向 twitterapis.com 团队报告错误或功能缺失;免费)
设计参考了 Claude Code 自带的反馈工具。当调用失败并且问题并非由你的密钥、额度、会话或速率限制导致时,当你请求的功能没有任何工具支持时,或者结果明显有误时,模型可以将报告起草到本地队列(~/.twitterapis/feedback-queue.json,最多保存 10 份草稿;可通过 TWITTERAPIS_FEEDBACK_DIR 更改目录)。在你要求查看队列并指定要发送的草稿之前,不会发送任何内容。每份报告都会包含最近一次失败调用的端点、状态和请求 ID、你的客户端名称以及此软件包的版本,团队无需后续跟进即可处理。使用 twitter_feedback_get 和返回的服务器 ID,可以查看报告是否已分流处理、已发布或已拒绝。
| 工具 | 功能 |
|---|---|
twitter_feedback_send | action: "draft"(默认)会将报告加入本地队列,不会发送任何内容;"list" 显示队列;"send" 只会将你指定的草稿发送到 POST /feedback;"discard" 会将其删除 |
twitter_feedback_get | 查看已发送报告的状态(new、triaged、shipped、declined)及团队回复 |
twitter_feedback_list | 按时间从新到旧列出此账户已发送的报告,并支持 status/type 筛选及使用 cursor 翻页 |
会话设置
将一个 X 账号关联到你的密钥一次,这样仅限账号的读取和写入操作就会以该账号身份执行(也可以改为每次调用时传入 auth_token/ct0)。
| 工具 | 功能 |
|---|---|
twitter_customer_session | 将你的 x.com 会话 Cookie(auth_token + ct0)注册到你的密钥 |
twitter_customer_session_status | 读取已注册的会话,不做任何更改:解析出的账号、有效/失效状态、时间戳,以及写入操作将使用的出口层级。绝不返回 Cookie。免费 |
twitter_customer_session_delete | 撤销已存储的会话,从服务中删除你的 auth_token + ct0。幂等且免费 |
twitter_user_login | 使用 username + password 登录(双重身份验证需提供 totp_secret);将会话存储到你的密钥。返回确认信息,绝不返回 Cookie |
操作手册与来源信息
除了工具,该服务还会公开 MCP 资源。客户端通过 resources/list 列出资源,并使用 resources/read 获取资源,因此只有在被请求时,这些内容才会占用上下文,也不会消耗积分。
操作手册
Agent 使用上述工具执行的简短操作指南。
| URI | 内容 |
|---|---|
playbook://launch-day-monitor | 实时监控产品发布:发布前设置监控和 Webhook,发布期间获取真实计数和传播者,发布后查看传播者资料 |
playbook://competitor-follower-outreach | 将其他账号的关注者整理成符合条件的名单,然后通过你关联的账号联系他们 |
playbook://account-audit | 对单个账号进行可复现的读取:身份、内容组合、覆盖范围、互动情况,以及哪些数据使用了相同的观测时间窗口 |
playbook://link-x-account | 关联流程:读取当前状态、选择路径、登录时限、需要在 x.com 上处理的结果,以及会话可解锁的功能 |
playbook://residential-egress | 出站地址控制:代理 URL 的三个配置位置、URL 必须满足的要求,以及如何读取当前生效的来源 |
来源信息
provenance://tool/{tool_name} 以 JSON 格式返回你已持有的某条数据的来源:其背后的 REST 端点和方法、读取或写入操作、调用时使用的是你关联的 X 账号还是仅使用 API 密钥、单次调用价格,以及文档 URL。
provenance://tool/twitter_advanced_search
{
"tool": "twitter_advanced_search",
"endpoint": "GET /twitter/tweet/advanced_search",
"kind": "read",
"destructive": false,
"served_by": "the API key alone (a public read, no linked account)",
"cost": "$0.0008 per call",
"docs": "https://docs.twitterapis.com/docs/reference/search/tweet-advanced-search"
}
逐行级别的上游来源信息(服务从 X 读取数据时,上游缓存是否返回了结果、由哪个账号读取)不包含在此软件包收到的任何响应中,因此会留空,而不是凭空推测。
被阻止的调用会返回后续步骤
如果调用因缺少密钥、密钥被拒绝、余额不足或缺少 X 会话而被阻止,就会返回结构化载荷(位于 structuredContent 中,并附加在文本后),其中包含按顺序排列的 steps 列表、解决问题后可解锁的内容,以及在会话相关情况下的操作手册 URI 和重试无法解决的问题。
使用示例
搜索热门 AI 推文
“查找本周发布的关于 AI Agent 的热门推文”
Agent 调用 twitter_advanced_search,并传入:
query: "AI agents min_faves:200 since:2024-01-01"
product: "Top"
count: 20
获取用户的近期帖子
“获取 @sama 最近发布的 10 条推文”
Agent 调用 twitter_user_tweets,并传入:
username: "sama"
count: 10
阅读完整帖子串
“获取这条推文的完整帖子串:https://x.com/karpathy/status/1849.....”
Agent 调用 twitter_tweet_thread,并传入:
url: "https://x.com/karpathy/status/1849....."
分页获取关注者
“列出 @openai 的前 100 位关注者,再列出接下来的 100 位”
第一次调用 twitter_user_followers:{ username: "openai", count: 100 }
第二次调用时,传回第一次响应中的 cursor:{ username: "openai", count: 100, cursor: "<cursor from response>" }
翻页获取 twitter_user_tweets_complete
“获取 @elonmusk 的完整推文历史记录”
twitter_user_tweets_complete 会在服务端自动翻页,并在每次调用时返回大量数据,但无法保证一次调用就能获取完整历史记录。请按以下方式解读结果:
next_cursor才是是否完成的信号,而不是count。 值不为 null 表示历史记录不完整,还有更多内容。值为 null 表示确实已获取全部内容。响应还会返回has_more,这是同一信号的布尔值。max是最低目标值,而不是上限。 页面以完整批次返回,因此响应可能比请求值多出最多一页(<=100)内容。实际表现:max=10返回 20 条,max=50返回 60 条,max=150返回 161 条,不指定max(服务端默认值为 200)则返回 201 条。切勿假设count === max。- 每次调用还有服务端墙钟时间限制,因此即使返回的推文数少于请求值,响应也可能不完整。这也是不能通过
count判断是否已获取完毕的原因。 - 每次调用按固定费用 $0.0024 计费,与返回的推文数量无关,因此少量大批次调用比多次小批次调用更省钱。
如需继续获取,请将 next_cursor 原样作为 cursor 传入,并重复调用,直到其值变为 null:
首次调用 twitter_user_tweets_complete:{ user_id: "44196397", max: 800 }
随后,只要 next_cursor 不为 null,就调用:{ user_id: "44196397", max: 800, cursor: "<上一响应中的 next_cursor>" }
监控品牌提及
“显示近期提及 @twitterapis 的推文”
Agent 会调用 twitter_user_mentions,并传入:
username: "twitterapis"
count: 50
故障排除
HTTP 401 (invalid or missing API key) 检查 MCP 客户端配置中的 TWITTERAPIS_KEY 是否设置正确,并确认其与控制面板中显示的密钥一致。
HTTP 402 (insufficient credits) 前往 twitterapis.com/dashboard 充值。注册后首个 $0.50 免费。
HTTP 403 (access forbidden) 该账户或推文可能为私密/受保护状态,或者你的套餐不包含此端点。
HTTP 404 (not found) 用户、推文或列表可能已被删除或停用,也可能是 ID/用户名错误。
HTTP 429 (rate limited) 等待几秒后重试。如果频繁遇到此问题,请在环境配置中添加 "TWITTERAPIS_TIMEOUT_MS": "60000",并错开批量请求的发送时间。
Request failed: timed out after 30000ms 默认超时时间为 30 s。获取大量分页数据时,请将 TWITTERAPIS_TIMEOUT_MS 设置为更高的值(例如 60000)。
Claude / Cursor 中未显示工具 确保 npx 位于 PATH 中,并已安装 Node.js 18+(node --version)。检查 MCP 客户端日志中是否有启动错误。
定价
调用费用计入你的 twitterapis.com 账户,价格以每个工具的描述为准。标准费率为每次调用 $0.0008:几乎所有读取操作(搜索、个人资料、时间线、关注者、喜欢、列表、书签、文章)以及简单的写入操作(喜欢、转推、书签、关注、列表成员管理及其撤销操作、删除)均按此费率计费。按此费率计算,每 1,000 条推文约需 $0.04,因为每次调用会返回约 20 条推文。账户、反馈和监控工具免费;使用你自己的 Cookie 注册、检查或撤销会话也免费。以下工具的价格不同于标准费率:
| 价格 | 工具 |
|---|---|
| 每个计费项目 $0.0008 | twitter_user_about_batch(按返回结果的账户数量计费,因此一次查询 100 个账户的调用最多收费 $0.08)、twitter_check_follow_relationship_batch(按返回结果的关系对数量计费)、twitter_audience_summary(按采样页数及返回结果的采样账户数量计费) |
| 每次调用 $0.0016 | 发帖:twitter_create_tweet、twitter_list_create。私信:twitter_dm_send、twitter_dm_list、twitter_dm_conversation。个人资料:twitter_update_profile、twitter_update_avatar、twitter_update_banner。草稿和定时帖子,以及两项列表读取工具:twitter_draft_create、twitter_draft_edit、twitter_draft_list、twitter_scheduled_create、twitter_scheduled_list。文章编辑:twitter_article_create、twitter_article_update_title、twitter_article_update_cover_media、twitter_article_update_content、twitter_article_publish、twitter_article_unpublish |
| 每次调用 $0.0024 | twitter_user_tweets_complete、twitter_tweet_replies_complete(按次调用收取固定费用,无论返回多少条推文或页面) |
| 每次调用 $0.004 | twitter_tweet_thread、twitter_grok_chat |
| 每次调用 $0.01 | twitter_user_login(使用用户名和密码登录) |
删除草稿或定时帖子,以及读取、列出或删除文章,仍按标准费率每次调用 $0.0008 计费。首 $0.50 免费。请参阅 twitterapis.com/pricing。
链接
- 文档:docs.twitterapis.com
- 控制面板 / API 密钥:twitterapis.com/dashboard
- 定价:twitterapis.com/pricing
- REST API 基础 URL(可直接调用,无需 MCP):
https://api.twitterapis.com
常见问题
我需要 X 开发者账户吗? 不需要。一个 TwitterAPIs 密钥即可使用所有工具。
1,000 条推文的费用是多少? 约 $0.04。标准读取操作每次调用收费 $0.0008,每次调用会返回约 20 条推文。
我的 Agent 可以发帖或发送私信吗? 可以,前提是使用与你的密钥关联的 X 账户。删除和取消关注等撤销操作会标记为破坏性操作,因此客户端可以在执行前征求确认。
它是只读的吗? 不是。只需 API 密钥即可使用 70 种读取工具;46 种写入操作(发帖、保存或定时发布帖子、喜欢、转推、关注、私信、上传媒体、更新个人资料名称/简介/头像/横幅、创建列表/添加成员/移除成员、加入/退出社群、创建/编辑/发布/删除文章、创建/更新/删除监控或 Webhook、发送反馈)会以关联的 X 账户或每次调用时提供的内联凭据执行;但监控或 Webhook 的增删改查以及反馈属于账户管理,只需 API 密钥即可。
支持哪些客户端? Claude Desktop、Cursor、Windsurf 和 VS Code(Copilot Agent 模式),或任何 Model Context Protocol 客户端。
如何计费? 按请求计费。新密钥会附带 $0.50 免费额度,无需绑定银行卡。请参阅定价。
它会存储我的密钥或数据吗? 不会。服务端不保留状态,并会在每次调用时转发你的 API 密钥。
维护者
src/tools.js 是生成的文件。请勿编辑。工具目录在构建时由两个已提交的输入文件生成:
test/openapi.snapshot.json,是已发布 OpenAPI 规范的随附副本,用于提供结构信息:有哪些端点、每个端点接受哪些参数、参数是否必填及其类型。scripts/tools.overrides.mjs,由人工编写,用于提供规范无法表达的所有内容:模型用来决定如何调用工具的工具和参数说明、跨字段规则(“提供username或user_id中的一个,且只能提供一个”)、作为x-*标头传递的单次调用凭据参数,以及写入/破坏性操作/JSON 请求体标志。每条说明中的Cost:句子和Docs:链接均源自规范。
说明只陈述产品事实:工具返回什么、接受什么以及费用是多少。说明绝不提及其他工具,也绝不向模型发出指令;关于何时使用哪个工具、如何将一个工具的输出传给另一个工具,以及何时起草反馈的指导,均位于服务端指令中(src/server.js 中的 INSTRUCTIONS)。test/description-compliance.mjs 会在每次测试中检查客户端可见的所有工具和参数说明,涵盖 stdio 和托管模式。
此处有意随附该规范。安装时或服务启动时都不会获取任何内容,因此发布的程序包是固定产物,不会依赖某个主机名仍能正常响应。
npm run openapi:refresh # re-vendor the spec, prints the route diff
npm run build # regenerate src/tools.js
npm test # gates, incl. "src/tools.js matches the generator"
如果 src/tools.js 是手动编辑的或已过时、工具目录与实时规范不一致、工具列表与此 README 不一致,或者说明包含模型指令、其他工具名称或隐藏文本(npm run check:description-compliance),则 npm test 会失败。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。