Skip to content

marckwei/ai-tracer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI Tracer

从 X (Twitter) 抓取 AI 领域最新动态,经 AI 筛选和内容生成,自动渲染为小红书风格的图片卡片日报。同时提供热点雷达功能,每 30 分钟扫描一次,发现高潜力内容实时推送到企业微信。

工作流程

日报 Pipeline(每天 9:00)

bird CLI 抓取推文(timeline + lists) → 过滤/去噪 → AI 筛选(跨天去重) → AI 生成结构化日报 → 渲染 PNG 卡片 → 企业微信推送

热点雷达(每 30 分钟)

bird CLI 抓取推文(timeline + lists) → 增量过滤(只看新推文) → AI 打分(1-10) → score ≥ 8 推送企业微信

前置依赖

依赖 版本 说明
Node.js >= 18 运行环境
bird >= 0.8.0 Twitter 数据抓取 CLI
claude CLI - AI 内容生成(通过 claude 命令行调用)

安装依赖工具

# bird CLI(全局安装)
npm install -g @steipete/bird

# claude CLI(参考 https://docs.anthropic.com/en/docs/claude-code)

安装

git clone <repo_url> ai-tracer
cd ai-tracer
npm install

配置

# 初始化项目(创建 .env 和必要目录)
npm run dev -- init

编辑 .env 文件:

# [必填] Twitter 认证信息(从浏览器 Cookie 中获取)
# 登录 X → 开发者工具 → Application → Cookies → 找 auth_token 和 ct0
TWITTER_AUTH_TOKEN=your_auth_token_here
TWITTER_CT0=your_ct0_here

# [可选] X Lists ID(逗号分隔,用于扩展信息源)
X_LISTS=1234567890,0987654321

# [可选] 企业微信群机器人 Webhook
WECOM_WEBHOOK_URL=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your_key_here

字体(卡片渲染需要)

项目使用 Hiragino Sans GB 字体渲染中文卡片,字体文件需放在 fonts/ 目录:

fonts/
  Hiragino Sans GB.ttc

Linux 服务器通常没有这个字体,需要从 macOS 拷贝或自行获取。

使用

一键执行日报(推荐)

npm run dev -- run

自动完成:抓取 timeline + lists → 筛选 → 生成 → 渲染 → 推送。

热点雷达

npm run dev -- monitor

自动完成:抓取最新推文 → 增量过滤 → AI 评分 → 高分热点推送企业微信。

分步执行

# 1. 抓取推文
npm run dev -- fetch

# 2. 生成图片卡片
npm run dev -- generate

常用参数

# 抓取指定数量
npm run dev -- run -n 200

# 只抓最近 12 小时的推文
npm run dev -- run -h 12

# 抓取指定用户
npm run dev -- fetch -m user -u elonmusk

# 搜索关键词
npm run dev -- fetch -m search -q "GPT-5"

# 抓取 X List
npm run dev -- fetch -l 1234567890

# 跳过已处理的推文
npm run dev -- generate --skip-processed

# 指定输入文件
npm run dev -- generate -i data/raw/2026-02-27.json

定时任务 (Cron)

# 编辑 crontab
crontab -e

添加以下内容(注意替换路径和 Node.js 版本路径):

# 每天 9:00:完整日报 pipeline
0 9 * * * cd /path/to/ai-tracer && PATH=/path/to/node/bin:$PATH npm run dev -- run >> cron.log 2>&1

# 每 30 分钟:热点雷达
*/30 * * * * cd /path/to/ai-tracer && PATH=/path/to/node/bin:$PATH npm run dev -- monitor >> cron_monitor.log 2>&1

输出

每次运行后在 output/ 目录生成:

output/
  2026-02-27_cards/       # PNG 卡片图片
    card_01.png           # 封面
    card_02.png           # 内容卡片
    ...
    card_09.png           # 结尾
  2026-02-27_report.json  # 结构化数据备份
  2026-02-27_ai_daily.md  # Markdown 文本日报

数据文件

data/
  raw/                    # 每天的原始推文(按日期分文件)
    2026-03-01.json
    2026-03-02.json
  processed.json          # 已生成过卡片的推文 ID(日报去重用)
  reported_events.json    # 已报道过的事件摘要(跨天去重用)
  monitor_state.json      # 热点雷达扫描状态(增量扫描用)

项目结构

src/
  index.ts          # CLI 入口(init/fetch/generate/run/monitor)
  fetcher.ts        # 推文抓取(调用 bird CLI)
  generator.ts      # 核心编排(AI 筛选 + AI 生成 + 渲染调度)
  card-renderer.ts  # Canvas 卡片渲染器(1242×1660 PNG)
  monitor.ts        # 热点雷达(抓取 + AI 评分 + 推送)
  ai-client.ts      # AI 调用封装(claude CLI)
  notifier.ts       # 企业微信推送(文本 + 图片)
  config.ts         # 配置加载(.env)
  types.ts          # 类型定义
  utils.ts          # 工具函数

prompts/
  filter.md         # AI 筛选 prompt(控制保留/排除标准)
  xiaohongshu.md    # AI 内容生成 prompt(小红书风格日报)
  monitor.md        # 热点雷达 prompt(爆款潜力评分)

fonts/
  Hiragino Sans GB.ttc  # 中文渲染字体

Prompt 自定义

文件 作用
prompts/filter.md 控制 AI 筛选标准(保留什么、排除什么)
prompts/xiaohongshu.md 控制日报内容生成风格(封面、正文、标签、字数约束)
prompts/monitor.md 控制热点评分标准(什么算爆款、评分维度)

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors