Install in seconds
Install this skill
Copy the command and run it in your terminal. You can review the source before installing.
terminal
git clone https://github.com/vigorX777/x-ai-topic-selector

Works with Git. The repository opens in your current directory.

🎯
AutomationTypeScript

X AI Topic Selector

by vigorX777

Automatically fetches tweets from X (Twitter), scores them using engagement metrics or AI analysis, and generates structured topic recommendation reports for content creators.

55 stars11 forksAdded 2026/07/16

Documentation

README

X AI Topic Selector

智能 Twitter/X 选题助手 — 从海量推文中筛选精华,或深度分析收藏内容,给出选题意见。由公众号「懂点儿AI」开发维护。如有问题或建议,欢迎关注公众号反馈。 详细的skill 制作过程见原文➡️:https://mp.weixin.qq.com/s/k6LfX1_rVOoUlY8iXR-3YA

扫码_搜索联合传播样式-白色版

这是什么

X AI Topic Selector 是一个 Claude Agent 技能,帮内容创作者从 X (Twitter) 上高效发现优质内容、生成结构化选题报告。由「懂点儿AI」开发维护。

支持两种工作模式:

  • 扫描模式:从 Lists / Home 过滤热门推文,评分排名后生成 Top N 精选推荐
  • 书签模式:从 Bookmarks 提取全部收藏,AI 深度分析后整理为完整日报

核心功能

双模式自动路由

系统根据内容来源自动选择工作模式:

模式 触发来源 核心逻辑 输出
扫描过滤 Lists / Home 抓取 → 筛选 → 评分 → Top N 截断 精选选题推荐
书签提取 Bookmarks 抓取 → AI 深度分析 → 保留全部 完整日报
  • 扫描模式:支持关键词过滤(包含/排除)、分类过滤(6 类)、数据或 AI 评分、Top N 排名
  • 书签模式:强制 AI 分析,不做过滤和排名,目标是「理解辅助」而非质量筛选

双模式自动路由:扫描模式与书签模式对比

AI 评分维度

基于 Gemini API(默认 gemini-2.0-flash,可通过 GEMINI_MODEL 自定义)或 OpenAI 兼容 API,对每条推文进行多维分析:

  • 三维评分(各 1-5 分)+ 每维评语
    • 🎯 创新性(innovation)— 新颖度、原创性
    • 💡 实用性(practicality)— 实用价值、可操作性
    • 📈 影响力(influence)— 行业影响、传播潜力
  • 智能分类:ai-tools / industry-news / tech-breakthroughs / tutorials / controversial / other
  • 标签:自动生成话题标签(tags)
  • 中文标题 / 摘要:为英文内容生成中文标题和摘要
  • 英文翻译:英文原文的完整中文翻译(translation)
  • 关注理由:一句话说明「为什么值得关注」(reason)

AI 评分维度:三维雷达图与智能分类

数据评分

无需 API Key,基于互动数据计算热度分:

点赞 × 1 + 转发 × 3 + 评论 × 2 + 浏览量 × 0.01

分数在批次内归一化到 0-100。

智能内容展开

  • Thread 并发展开:自动检测并在独立标签页中展开 Thread,并发度 3
  • 长文本展开:被截断的推文自动导航到详情页获取完整内容
  • 去噪过滤:可配置关键词白名单 / 黑名单

AI 生成内容

书签日报模式额外生成:

  • 今日看点(highlights):AI 生成的当日亮点摘要
  • 选题思路(topicSuggestions):基于收藏内容的创作建议

输出示例

报告以 Markdown 格式输出,包含 Mermaid 图表和结构化数据。完整样本参见 docs/ 目录:

扫描模式

示例报告:docs/example-scan-report.md

报告结构:摘要统计 → 互动热度 Top 3 → 关键词词频图(Mermaid) → Top N 选题推荐(含 AI 评分、评语、标签、翻译)

书签模式

示例报告:docs/example-bookmark-digest.md

报告结构:今日看点 → 今日必读(Top 3 深度展示) → 数据概览(分类饼图、关键词 Mermaid 图、ASCII 柱状图、标签云) → 分类文章列表 → 选题思路

架构概览

架构流程:从来源 URL 到报告生成的完整流水线

来源 URL → 自动路由 → Chrome CDP 抓取 → Thread/长文展开 → 评分/过滤 → 报告生成
               │                                                    │
               ├── Lists/Home ──→ 扫描模式 ──→ 筛选+排名 ──→ 选题推荐报告
               └── Bookmarks ──→ 书签模式 ──→ AI 全量分析 ──→ 书签日报

模块职责

模块 行数 职责
x-topic-selector.ts 1020 主入口:CLI 解析、Chrome 启动、推文抓取、模式路由
ai-client.ts 139 AI 客户端抽象:AIClient 接口、Gemini/OpenAI 实现、工厂函数
ai-scorer.ts 421 AI 评分逻辑:批量评分、并发控制、亮点/选题生成
report-generator.ts 470 Markdown 报告:扫描报告 + 书签日报,图表可视化
x-utils.ts 219 CDP 连接管理、Chrome 路径检测、平台工具函数

模块依赖关系:五大模块的数据流与协作

技术栈

  • 运行时:Bun(TypeScript 直接执行,无编译)
  • 浏览器自动化:Chrome DevTools Protocol(原生 WebSocket)
  • AI 模型:Google Gemini API / OpenAI-compatible API(可配置)
  • 输出格式:Markdown + Mermaid 图表

安装

一键安装(推荐)

通过 Skills CLI 安装到 Claude:

npx skills add vigorX777/x-ai-topic-selector -g -y

安装完成后即可在 Claude 中使用 /x-ai-topic-selector 命令。

手动安装

# Clone 到 Claude skills 目录
git clone https://github.com/vigorX777/x-ai-topic-selector.git ~/.claude/skills/x-ai-topic-selector

# 安装依赖
cd ~/.claude/skills/x-ai-topic-selector
bun install

前置条件

  • Bun ≥ 1.0(curl -fsSL https://bun.sh/install | bash
  • Google Chrome 或 Chromium 浏览器
  • Gemini API Key(AI 模式 / 书签模式需要,点此获取

快速开始

Agent 模式(推荐)

/x-ai-topic-selector
# 或直接调用
/select-topics

唯一命令 /select-topics 统一处理所有来源,按提示选择:

  1. 内容来源:Lists / Home / Bookmarks
  2. 参数配置:评分方式、分类过滤、推荐数量(书签模式自动跳过)
  3. API Key:书签模式或 AI 评分模式需提供(自动保存)

下次运行可直接选「使用上次配置」,1 秒启动。

命令行模式

# 扫描列表(数据评分)
bun run scripts/x-topic-selector.ts "https://x.com/i/lists/1234567890"

# 扫描列表(AI 评分 + Top 5)
bun run scripts/x-topic-selector.ts "https://x.com/i/lists/123" --score-mode ai-only --top-n 5

# 书签日报(自动强制 AI 分析)
bun run scripts/x-topic-selector.ts "https://x.com/i/bookmarks" --max-tweets 50

# 书签日报(--digest 别名,等价写法)
bun run scripts/x-topic-selector.ts --digest --max-tweets 100 --top-n 10

# 调试模式
bun run scripts/x-topic-selector.ts 1234567890 --dry-run --max-tweets 10

# 使用 DeepSeek 作为 AI 提供商
bun run scripts/x-topic-selector.ts "https://x.com/i/lists/123" --score-mode ai-only --ai-provider openai --top-n 5

参数说明

参数 说明 默认值
<source-url> 来源 URL 或列表 ID(支持 Lists / Home / Bookmarks) 必填
--score-mode <mode> 评分模式:data-only 基于互动数据 / ai-only 基于 AI 分析(需 API Key) data-only
--ai-provider <provider> AI 服务商:auto-detect 自动检测 / gemini 使用 Gemini / openai 使用 OpenAI 兼容接口 auto-detect
--max-tweets <n> 最大抓取数量 200
--top-n <n> 推荐数量(仅扫描模式生效) 10
--topic-category <cat> 分类过滤:all / ai-tools / industry-news / tech-breakthroughs / tutorials / controversial all
--keywords <k1,k2> 包含关键词,逗号分隔 -
--exclude <e1,e2> 排除关键词,逗号分隔 -
--output <path> 报告输出路径 自动生成带时间戳的文件名
--digest 书签日报模式别名(自动设置 bookmarks 来源 + ai-only + top-n 15) false
--profile <dir> Chrome 用户配置目录 ~/.local/share/x-topic-selector-profile
--dry-run 仅打印结果到终端,不保存文件 false
--help 显示帮助信息 -

注意

  • 书签模式自动强制 AI 分析,无需手动指定 --score-mode
  • 首次使用需在 Chrome 中手动登录 X(登录状态会持久化保存)

环境配置

组件 要求 说明
运行时 Bun ≥ 1.0 或 Node.js ≥ 18
浏览器 Chrome / Chromium 自动检测系统路径(macOS / Linux / Windows)
API Key Gemini API Key 仅 AI 模式 / 书签模式需要(默认),模型为 gemini-2.0-flash
API Key OpenAI 兼容 API Key 可选替代方案,需同时设置 OPENAI_MODEL(如 DeepSeek)
# 设置 API Key — Gemini(默认 AI 提供商)
export GEMINI_API_KEY="your-api-key"
export GEMINI_MODEL="gemini-2.0-flash"                  # 可选,默认为 gemini-2.0-flash

# 或使用 OpenAI 兼容接口(如 DeepSeek)
export OPENAI_API_KEY="sk-xxxx"
export OPENAI_API_BASE="https://api.deepseek.com/v1"   # 可选,默认 https://api.openai.com/v1
export OPENAI_MODEL="deepseek-chat"                     # 必填,无默认值

# 自定义 Chrome 路径(可选,通常无需设置)
export X_BROWSER_CHROME_PATH="/path/to/chrome"
  • 获取 API Keyhttps://aistudio.google.com/apikey
  • Chrome 用户数据~/.local/share/x-topic-selector-profile(保存登录状态)
  • 配置文件~/.x-topic-selector/config.json(Agent 模式自动读写)

常见问题

1. Chrome 未找到

错误Chrome not found

解决

export X_BROWSER_CHROME_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

2. X 账号未登录

错误Please log in to X

解决

  1. 首次运行时 Chrome 会自动打开
  2. 在打开的窗口中手动登录 X 账号
  3. 登录状态会保存到 Chrome profile,下次无需重复登录

3. Gemini API Key 未设置

错误GEMINI_API_KEY not set

解决

export GEMINI_API_KEY="your-api-key"
# 或在 Agent 交互式流程中输入(自动保存到 config.json)

获取 API Key:https://aistudio.google.com/apikey

4. 未抓取到推文

可能原因:URL 格式错误、列表为私有或空、账号未登录、网络问题

解决

  1. 确认 URL 格式:https://x.com/i/lists/1234567890
  2. 在浏览器中手动打开链接检查内容是否可访问
  3. 重新登录 X(可删除 ~/.local/share/x-topic-selector-profile 后重试)

5. AI 评分失败

错误429 Too Many Requests

解决

  1. 等待 1-2 分钟后重试(Gemini API 限制 15 RPM)
  2. 检查 API Key 配额
  3. 切换到数据模式:--score-mode data-only

6. 报告内容为空

可能原因:关键词过滤过严、分类筛选过窄、Top N 设置过小

解决

  1. 检查 --keywords--exclude 是否过于严格
  2. 设置 --topic-category all
  3. 增大 --max-tweets--top-n
  4. 使用 --dry-run 在终端查看中间结果

7. 如何使用 DeepSeek / OpenAI 兼容接口?

设置以下环境变量后,使用 --ai-provider openai 即可:

export OPENAI_API_KEY="sk-xxxx"
export OPENAI_API_BASE="https://api.deepseek.com/v1"
export OPENAI_MODEL="deepseek-chat"

bun run scripts/x-topic-selector.ts "https://x.com/i/lists/123" --score-mode ai-only --ai-provider openai

注意OPENAI_MODEL 必填,无默认值。OPENAI_API_BASE 可选,默认为 https://api.openai.com/v1

也可以不指定 --ai-provider,系统会按 Gemini → OpenAI 的优先级自动检测可用的 API。

更新日志

详见 CHANGELOG.md

项目结构

x-ai-topic-selector/
├── scripts/
│   ├── x-topic-selector.ts    # 主入口:CLI、Chrome、抓取、路由 (1020 行)
│   ├── ai-client.ts           # AI 客户端抽象:Gemini/OpenAI 实现、工厂函数 (139 行)
│   ├── ai-scorer.ts           # AI 评分逻辑、亮点/选题生成 (421 行)
│   ├── report-generator.ts    # Markdown 报告生成、图表可视化 (470 行)
│   └── x-utils.ts             # Chrome CDP 连接、平台工具 (219 行)
├── docs/
│   ├── example-scan-report.md     # 扫描模式输出样本
│   └── example-bookmark-digest.md # 书签模式输出样本
├── output/                    # 报告输出目录(gitignored)
├── package.json               # 项目配置和测试脚本
├── tsconfig.json              # TypeScript 配置
├── SKILL.md                   # Agent 交互定义
├── AGENTS.md                  # 技术文档(开发规范)
├── CHANGELOG.md               # 更新日志
└── README.md                  # 本文档

关于

X AI Topic Selector 由公众号「懂点儿AI」开发维护。如有问题或建议,欢迎关注公众号反馈。

License

MIT