mcpField
C
categorizing-bsky-accounts

categorizing-bsky-accounts

github.com/oaustegard数据与数据库15745 次安装1 天前更新
代码仓库

关于 categorizing-bsky-accounts

categorizing-bsky-accounts 是一项 Claude Skill,可获取 Bluesky 账号简介和帖子、提取关键词,并为主题分类整理数据。它支持多种账号输入方式,由 Claude 灵活分类,而非使用固定规则。

主要功能

  1. 01分析关注列表、粉丝、账号或文件
  2. 02获取账号简介和帖子
  3. 03使用 YAKE 提取关键词
  4. 04选择领域专用停用词
  5. 05按匹配词排除账号
  6. 06由 Claude 进行主题分类

适用场景

  1. 01审查关注列表中的主题分布
  2. 02从关注账号中寻找专家
  3. 03为精选账号列表分类
  4. 04过滤疑似垃圾或机器人账号

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/oaustegard/claude-skills --skill categorizing-bsky-accounts

安装后在 Claude Code 中输入/categorizing-bsky-accounts确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

CHANGELOG.md
README.md
scripts/
bluesky_analyzer.py

详细介绍

对 Bluesky 账号进行分类

获取 Bluesky 账号数据,并提取关键词供 Claude 按主题分类。脚本会将账号上下文(简介 + 帖子)压缩为简介 + 关键词,然后由 Claude 进行智能分类。

前置条件

需要: extracting-keywords skill(提供 YAKE 虚拟环境 + 领域停用词)

分析器会将关键词提取工作交给 extracting-keywords skill,该 skill 提供:

  • 优化后的 YAKE 安装,依赖项精简
  • 领域专用停用词:英语(574)、AI/ML(1357)、生命科学(1293)
  • 支持 34 种语言

核心工作流

当用户请求分析 Bluesky 账号时:

  1. 确保已设置关键词提取 - 使用 Skill 工具调用 extracting-keywords skill,确保 YAKE 虚拟环境存在(如果本次会话中已调用,则跳过)

  2. 确定输入模式,根据用户的请求选择:

    • 关注列表 → 使用 --following handle
    • 粉丝 → 使用 --followers handle
    • 账号列表 → 使用 --handles "h1,h2,h3"
    • 提供了文件 → 使用 --file accounts.txt
  3. 配置参数:

    • --accounts N - 要分析的账号数(默认:100,最大:100)
    • --posts N - 每个账号的帖子数(默认:20,最大:100)
    • --stopwords [en|ai|ls] - 选择领域专用停用词:
      • en:英语(通用)
      • ai:AI/ML 领域(推荐用于科技类账号)
      • ls:生命科学(适用于生物医学/研究类账号)
    • --exclude "pattern1,pattern2" - 跳过垃圾账号/机器人账号
  4. 运行脚本 - 将简单文本格式的结果输出到 stdout:

    @handle1.bsky.social (Display Name)
    Bio text here
    Keywords: keyword1, keyword2, keyword3
    
    @handle2.bsky.social (Another Name)
    Bio text here
    Keywords: keyword4, keyword5, keyword6
    
  5. 对账号分类 - Claude 根据简介 + 关键词按主题对账号进行分类

快速开始

使用 AI/ML 停用词分析关注列表:

python scripts/bluesky_analyzer.py --following austegard.com --stopwords ai

分析粉丝:

python scripts/bluesky_analyzer.py --followers austegard.com

分析指定账号:

python scripts/bluesky_analyzer.py --handles "user1.bsky.social,user2.bsky.social,user3.bsky.social"

从文件读取:

python scripts/bluesky_analyzer.py --file accounts.txt --stopwords ai

过滤机器人账号:

python scripts/bluesky_analyzer.py --following handle --exclude "bot,spam,promo" --stopwords ai

参数

输入模式(选择一种)

--handles "h1,h2,h3" 以逗号分隔的 Bluesky 账号列表

--following HANDLE 分析 HANDLE 关注的账号

--followers HANDLE 分析关注 HANDLE 的账号

--file PATH 从文件读取账号(每行一个)

分析选项

--accounts N 要分析的账号数(1-100,默认:100)

--posts N 每个账号要获取的帖子数(1-100,默认:20)

--stopwords [en|ai|ls] 用于提取关键词的停用词(默认:en)

  • en:英语停用词(574 个词项)- 通用
  • ai:AI/ML 领域停用词(1357 个词项)- 面向科技类账号
  • ls:生命科学停用词(1293 个词项)- 面向生物医学/研究类账号

--exclude "word1,word2" 跳过简介/帖子中含有这些关键词的账号

输出格式

脚本会输出简单文本格式,供 Claude 处理:

@alice.bsky.social (Alice Smith)
AI researcher working on LLM alignment and safety
Keywords: alignment, safety research, interpretability, llm evaluation

@bob.bsky.social (Bob Johnson)
Full-stack developer building web applications
Keywords: react, typescript, node.js, api design, postgresql

@carol.bsky.social (Carol Williams)
Biotech researcher studying CRISPR applications
Keywords: crispr, gene editing, therapeutics, clinical trials

然后 Claude 会根据简介 + 关键词对账号进行分类,不使用硬编码规则。

常见工作流

检查你的关注列表
python scripts/bluesky_analyzer.py --following your-handle.bsky.social --stopwords ai

Claude 会按主题对账号进行分类,并找出你关注对象的规律。

查找某个主题的专家
python scripts/bluesky_analyzer.py --following alice.bsky.social --stopwords ai

向 Claude 提问:“这些账号中哪些是机器学习研究人员?”或“哪些人专注于气候科技?”

分析精选列表
cat > accounts.txt << 'EOF'
expert1.bsky.social
expert2.bsky.social
expert3.bsky.social
EOF

python scripts/bluesky_analyzer.py --file accounts.txt --stopwords ls
过滤机器人账号
python scripts/bluesky_analyzer.py --following handle --exclude "bot,spam,promo,follow back" --stopwords ai

技术详情

关键词提取

使用 YAKE 虚拟环境,将任务交给 extracting-keywords skill:

  • 停用词选项(--stopwords):
    • en:英语(574 个词项)- 通用
    • ai:AI/ML 领域(1357 个词项)- 过滤技术噪声和机器学习套话
    • ls:生命科学(1293 个词项)- 过滤研究方法和临床术语
  • N-gram:1-3 个词
  • 去重:阈值为 0.9
  • 关键词数量:每个账号取前 10 个
  • 性能:与英语停用词相比,使用领域停用词的额外开销约为 5%
API 速率限制

Bluesky API 限制:

  • 每 5 分钟 3000 次请求
  • 每小时 5000 次请求

分析器通过内置延迟遵守这些限制。

分类算法

脚本的作用:

  1. 获取账户数据(简介 + 帖子)
  2. 提取关键词以压缩上下文
  3. 以简单格式输出简介 + 关键词

Claude 的作用:

  1. 阅读每个账户的简介 + 关键词
  2. 根据主题智能分类(不使用硬编码规则)
  3. 对账户分组、识别模式并回答用户问题

这种 Agentic 模式比硬编码关键词匹配更加灵活。

故障排除

“没有可分析的账户”

  • 确认账号句柄格式正确(包含域名:handle.bsky.social)
  • 检查账户是否存在,以及是否有公开的关注对象/关注者

“用于提取关键词的内容不足”

  • 账户的帖子很少(少于 5 条)
  • 帖子非常短
  • 尝试增大 --posts 参数

速率限制错误

  • 减小 --accounts 参数
  • 在批次之间增加延迟
  • 检查 Bluesky API 状态

导入错误

  • 确认 extracting-keywords 技能可用
  • 检查 YAKE 虚拟环境是否存在:/home/claude/yake-venv/bin/python -c "import yake"
  • 确认 Python 版本为 3.8 或更高:python3 --version

与其他技能集成

内置集成:

  • extracting-keywords:自动将关键词提取任务委派给此技能优化过的 YAKE 虚拟环境,并使用特定领域的停用词

分类输出

根据账户的简介 + 关键词对账户进行分组,依据判断而非固定分类体系——类别和数量 取决于数据中的实际内容,而非模板。

评论

支持 Markdown