跳到正文
OC OpenClaw 案例站

数据分析

X 个人资料抓取器

定时抓取 X 账号资料、近期帖子和外链内容,形成可复盘数据集。

目录

这个案例能帮你做什么

  • 自动保存目标账号画像,避免信息丢失和手工收集。
  • 自动展开短链并补抓标题,提高线索可读性。
  • 统一导出 CSV 与按天归档,方便销售/研究使用。

你需要的 Skills(按类型)

类型 Skill 用途 来源
内置 web_fetch 抓取资料页与链接内容 OpenClaw Built-in
外部 web_search 补充关联信息 ClawHub
内置 csv 输出结构化报表 OpenClaw Built-in
内置 filesystem 按日期归档抓取结果 OpenClaw Built-in

快速体验版(先跑一轮)

先抓 3 个账号做验证:

你是我的 OpenClaw 助手。
请帮我做“X 个人资料抓取器”的预演版:
1. 读取目标账号列表中的前3个账号。
2. 抓取资料和最近10条帖子。
3. 尝试展开 t.co 链接并提取标题。
4. 输出 CSV 预览和失败项。

稳定自动版(可长期运行)

1) 目标配置 config/x-targets.json

{
  "profiles": [
    { "handle": "elonmusk", "category": "tech", "priority": "high" },
    { "handle": "sama", "category": "ai", "priority": "high" },
    { "handle": " Naval", "category": "philosophy", "priority": "medium" }
  ],
  "schedule": "daily",
  "posts_to_capture": 10,
  "follow_links": true
}

2) 抓取脚本 skills/x-scraper/index.js

const axios = require('axios');
const cheerio = require('cheerio');

async function scrapeProfile(handle) {
  const url = `https://nitter.net/${handle}`; // Or similar proxy
  const html = await web_fetch(url);
  const $ = cheerio.load(html);

  const profile = {
    handle,
    display_name: $('.profile-card-fullname').text(),
    bio: $('.profile-card-bio').text(),
    followers: parseNumber($('.followers .profile-stat-num').text()),
    following: parseNumber($('.following .profile-stat-num').text()),
    posts: []
  };

  $('.timeline-item').slice(0, 10).each((i, el) => {
    const $post = $(el);
    profile.posts.push({
      date: $post.find('.tweet-date').attr('title'),
      content: $post.find('.tweet-content').text(),
      links: $post.find('a').map((i, a) => $(a).attr('href')).get(),
      replies: parseInt($post.find('.icon-comment').next().text()) || 0,
      retweets: parseInt($post.find('.icon-retweet').next().text()) || 0,
      likes: parseInt($post.find('.icon-heart').next().text()) || 0
    });
  });

  return profile;
}

3) 短链展开逻辑

async function expandLinks(posts) {
  for (const post of posts) {
    post.expanded_links = await Promise.all(
      post.links
        .filter(l => l.includes('t.co'))
        .map(async shortUrl => {
          try {
            const full = await resolveRedirect(shortUrl);
            const content = await web_fetch(full);
            return { url: full, title: extractTitle(content) };
          } catch (e) {
            return { url: shortUrl, error: e.message };
          }
        })
    );
  }
  return posts;
}

4) OpenClaw 执行提示词(自动版)

你是我的 OpenClaw 助手,请执行“X Profile Scraper”。
请使用 Skills:web_fetch、web_search、csv、filesystem。

每天 06:00:
1. 读取 config/x-targets.json。
2. 抓取账号资料与最近10条帖子。
3. 展开 t.co 链接并抓取标题。
4. 保存到 data/x-profiles/YYYY-MM-DD/。
5. 生成 CSV 摘要。
6. 对 follower 增长 >20% 的账号标记提醒。

限速规则:
- Max 1 request per 5 seconds
- Rotate User-Agent
- Respect robots.txt

5) 调度配置

{
  "schedule": "0 6 * * *",
  "task": "x_profile_scraper",
  "concurrency": 1,
  "delay_between_requests": 5000
}

成功标准

  • 100% of target profiles captured daily
  • Link expansion success > 90%
  • Data archived for 90 days
  • Keyword alerts within 1 hour

引用来源

Search

搜索 OpenClaw 中文案例库

支持:关键词 + 分类 + 内容区域

搜索结果

先输入关键词,或先选择筛选条件。