SuperAPI AI 工具集

x-scraper

数据与分析

查看项目

更新于 10-15 08:13

技能介绍

用途

x-scraper 用于抓取 X.com(Twitter)用户的公开帖子。它能够提取帖子的文本内容、发布时间、互动指标(浏览量、点赞、转推、回复),并生成帖子的直接链接。该技能适合在用户提出“整理 @某人 最近的发言”“看看某人在 X 上说了什么”“抓取 @username 的 X.com 帖子”“获取用户最新推文”“分析 X 用户近期帖子”等请求时触发。

主要能力

  • 抓取指定 X 用户的近期帖子(含回复)。
  • 提取字段包括:序号、用户名、帖子 ID、发布时间(ISO 8601 格式)、帖子链接、文本内容、浏览量、点赞数、转推数、回复数。
  • 互动指标以缩写形式呈现(如 K、M)。
  • 输出为 JSON 文件,默认路径为 /tmp/x_{username}_posts.json。
  • 提供 Cookie 转换脚本,可将 Cookie-Editor 导出的 JSON 转换为 Playwright 格式。

使用方式

基本命令:

cd .opencode/skills/x-scraper/scripts
python3 scraper.py <username> [count]

示例:

python3 scraper.py example_user 15

输出:/tmp/x_{username}_posts.json

使用前需确认环境要求:

  • Python 3.11+:使用 python3 --version 检查。
  • Playwright:使用 python3 -c "import playwright" 检查。
  • Cookie 文件:使用 ls /tmp/x_cookies_pw.json 检查。

若缺少任一前置条件,可参考 references/setup.md 获取详细安装与配置指南。

常用工作流:

  • 首次设置:参见 references/setup.md 完成环境配置。
  • 日常抓取:python3 scraper.py <username> [count]
  • 自定义 Cookie 文件:python3 scraper.py <username> [count] --cookie-file /path/to/cookies.json

可用脚本:

  • scraper.py:主抓取脚本。命令为 python3 scraper.py <username> [count] [--cookie-file <path>]。抓取用户时间线(含回复),默认抓取 10 条帖子,默认 Cookie 文件为 /tmp/x_cookies_pw.json。
  • convert_cookies.py:Cookie 转换脚本。命令为 python3 convert_cookies.py <input-file> [output-file]。将 Cookie-Editor JSON 转换为 Playwright 格式,首次抓取前必须执行。

参考文档:

  • setup.md:完整环境设置指南(Python、Playwright、Cookie)。
  • troubleshooting.md:错误诊断与解决方案。
  • usage.md:详细使用示例与高级选项。

输出格式示例:

{
  "index": 1,
  "username": "example_user",
  "postId": "1234567890123456789",
  "publishTime": "2025-12-03T18:28:32.000Z",
  "postLink": "https://x.com/example_user/status/1234567890123456789",
  "textContent": "Post text content...",
  "views": "471K",
  "likes": "1.1K",
  "retweets": "153",
  "replies": "44"
}

关键字段:

  • postLink:帖子直接 URL。
  • publishTime:ISO 8601 时间戳。
  • views/likes/retweets/replies:缩写形式的互动指标(K、M)。

适用场景

  • 整理某位 X 用户近期的发言内容。
  • 查看某人在 X 上发布的内容。
  • 抓取指定用户名的 X.com 帖子。
  • 获取用户最新推文。
  • 分析 X 用户近期帖子。

限制

  • 需要 X.com 认证 Cookie。
  • Cookie 会过期(约 7 天),需要重新导出。
  • 可能受到速率限制。
  • 无法访问私密/受保护账号。