categorizing-bsky-accounts

Analyze and categorize Bluesky accounts by topic using keyword extraction. Use when users mention Bluesky account analysis, following/follower lists, topic discovery, account curation, or network analysis.

16 stars

Best use case

categorizing-bsky-accounts is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Analyze and categorize Bluesky accounts by topic using keyword extraction. Use when users mention Bluesky account analysis, following/follower lists, topic discovery, account curation, or network analysis.

Teams using categorizing-bsky-accounts should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/categorizing-bsky-accounts/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/product/categorizing-bsky-accounts/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/categorizing-bsky-accounts/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How categorizing-bsky-accounts Compares

Feature / Agentcategorizing-bsky-accountsStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Analyze and categorize Bluesky accounts by topic using keyword extraction. Use when users mention Bluesky account analysis, following/follower lists, topic discovery, account curation, or network analysis.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Categorizing Bluesky Accounts

Fetch Bluesky account data and extract keywords for Claude to categorize by topic. The script compresses account context (bio + posts) into bio + keywords, then Claude performs intelligent categorization.

## Prerequisites

**Requires:** extracting-keywords skill (provides YAKE venv + domain stopwords)

The analyzer delegates keyword extraction to the extracting-keywords skill, which provides:
- Optimized YAKE installation with minimal dependencies
- Domain-specific stopwords: English (574), AI/ML (1357), Life Sciences (1293)
- Support for 34 languages

## Core Workflow

When users request Bluesky account analysis:

1. **Ensure keyword extraction is set up** - Invoke the extracting-keywords skill using the Skill tool to ensure YAKE venv exists (skip if already invoked in this session)

2. **Determine input mode** based on user's request:
   - Following list → use `--following handle`
   - Followers → use `--followers handle`
   - List of handles → use `--handles "h1,h2,h3"`
   - File provided → use `--file accounts.txt`

3. **Configure parameters:**
   - `--accounts N` - Number to analyze (default: 100, max: 100)
   - `--posts N` - Posts per account (default: 20, max: 100)
   - `--stopwords [en|ai|ls]` - Choose domain-specific stopwords:
     - `en`: English (general purpose)
     - `ai`: AI/ML domain (recommended for tech accounts)
     - `ls`: Life Sciences (for biomedical/research accounts)
   - `--exclude "pattern1,pattern2"` - Skip spam/bot accounts

4. **Run script** - Outputs simple text format to 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. **Categorize accounts** - Claude analyzes bio + keywords to categorize by topic

## Quick Start

**Analyze following list with AI/ML stopwords:**
```bash
python scripts/bluesky_analyzer.py --following austegard.com --stopwords ai
```

**Analyze followers:**
```bash
python scripts/bluesky_analyzer.py --followers austegard.com
```

**Analyze specific handles:**
```bash
python scripts/bluesky_analyzer.py --handles "user1.bsky.social,user2.bsky.social,user3.bsky.social"
```

**From file:**
```bash
python scripts/bluesky_analyzer.py --file accounts.txt --stopwords ai
```

**Filter out bot accounts:**
```bash
python scripts/bluesky_analyzer.py --following handle --exclude "bot,spam,promo" --stopwords ai
```

## Parameters

### Input Modes (choose one)

**--handles "h1,h2,h3"**
Comma-separated list of Bluesky handles

**--following HANDLE**
Analyze accounts followed by HANDLE

**--followers HANDLE**
Analyze accounts following HANDLE

**--file PATH**
Read handles from file (one per line)

### Analysis Options

**--accounts N**
Number of accounts to analyze (1-100, default: 100)

**--posts N**
Posts to fetch per account (1-100, default: 20)

**--stopwords [en|ai|ls]**
Stopwords to use for keyword extraction (default: en)
- `en`: English stopwords (574 terms) - general purpose
- `ai`: AI/ML domain stopwords (1357 terms) - tech-focused accounts
- `ls`: Life Sciences stopwords (1293 terms) - biomedical/research accounts

**--exclude "word1,word2"**
Skip accounts with these keywords in bio/posts

## Output Format

The script outputs simple text format for Claude to process:

```
@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 then categorizes accounts based on bio + keywords without hardcoded rules.

## Common Workflows

### Audit Your Following List

```bash
python scripts/bluesky_analyzer.py --following your-handle.bsky.social --stopwords ai
```

Claude will categorize accounts by topic and identify patterns in who you follow.

### Find Experts in a Topic

```bash
python scripts/bluesky_analyzer.py --following alice.bsky.social --stopwords ai
```

Ask Claude: "Which of these accounts are ML researchers?" or "Who focuses on climate tech?"

### Analyze a Curated List

```bash
cat > accounts.txt << 'EOF'
expert1.bsky.social
expert2.bsky.social
expert3.bsky.social
EOF

python scripts/bluesky_analyzer.py --file accounts.txt --stopwords ls
```

### Filter Out Bot Accounts

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

## Technical Details

### Keyword Extraction

Delegates to **extracting-keywords skill** using YAKE venv:
- **Stopwords options** (--stopwords):
  - `en`: English (574 terms) - general purpose
  - `ai`: AI/ML domain (1357 terms) - filters technical noise, ML boilerplate
  - `ls`: Life Sciences (1293 terms) - filters research methodology, clinical terms
- N-grams: 1-3 words
- Deduplication: 0.9 threshold
- Top keywords: 10 per account
- Performance: ~5% overhead with domain stopwords vs English

### API Rate Limits

Bluesky API limits:
- 3000 requests per 5 minutes
- 5000 requests per hour

The analyzer respects these limits with built-in delays.

### Categorization Algorithm

**Script's role:**
1. Fetch account data (bio + posts)
2. Extract keywords to compress context
3. Output bio + keywords in simple format

**Claude's role:**
1. Read bio + keywords for each account
2. Intelligently categorize by topic (no hardcoded rules)
3. Group accounts, identify patterns, answer user questions

This agentic pattern is more flexible than hardcoded keyword matching.

## Troubleshooting

**"No accounts to analyze"**
- Verify handle format (include domain: handle.bsky.social)
- Check if account exists and has public following/followers

**"Insufficient content for keyword extraction"**
- Account has few posts (<5)
- Posts are very short
- Try increasing `--posts` parameter

**Rate limit errors**
- Reduce `--accounts` parameter
- Add delays between batches
- Check Bluesky API status

**Import errors**
- Verify extracting-keywords skill is available
- Check YAKE venv exists: `/home/claude/yake-venv/bin/python -c "import yake"`
- Verify Python 3.8+: `python3 --version`

## Integration with Other Skills

**Built-in integration:**
- **extracting-keywords**: Automatically delegates keyword extraction to this skill's optimized YAKE venv with domain-specific stopwords

## Example Sessions

**User:** "Can you analyze the accounts I follow on Bluesky and tell me what topics they focus on?"

**Claude:**
```bash
python scripts/bluesky_analyzer.py --following user-handle.bsky.social --stopwords ai
```

Based on the output, I can see you follow:
- **AI/ML researchers** (15 accounts): Focus on LLM safety, alignment, interpretability
- **Software engineers** (20 accounts): Web development, React, TypeScript, DevOps
- **Writers** (8 accounts): Tech journalism, newsletters, long-form content
- **Scientists** (7 accounts): Climate science, biotech, physics

**User:** "Find ML researchers in @alice's network"

**Claude:**
```bash
python scripts/bluesky_analyzer.py --following alice.bsky.social --stopwords ai
```

I found 23 ML researchers in Alice's network:
- 8 working on LLM alignment and safety
- 6 focused on model evaluation and benchmarks
- 5 in ML infrastructure and MLOps
- 4 in computer vision and multimodal models

**User:** "Here's a list of 30 accounts, categorize them"

**Claude:**
```bash
python scripts/bluesky_analyzer.py --file accounts.txt --stopwords ai
```

Categorized into:
- Climate Tech (8 accounts)
- Biotech (6 accounts)
- Fintech (5 accounts)
- AI/ML (7 accounts)
- Other (4 accounts)

Related Skills

aztec-accounts

16
from diegosouzapw/awesome-omni-skill

Manage Aztec accounts including Schnorr account creation, deployment, and recovery from credentials. Use when creating accounts, deploying wallets, or recovering existing accounts.

plaid-accounts-expert

16
from diegosouzapw/awesome-omni-skill

Expert on Plaid accounts and account management. Covers account data retrieval, balance checking, account types, multi-account handling, and account webhooks. Invoke when user mentions Plaid accounts, account balance, account types, or account management.

Accounts Reconciler

16
from diegosouzapw/awesome-omni-skill

Automate account reconciliation by matching transactions, identifying discrepancies, and generating variance reports

accounts-payable-workflow

16
from diegosouzapw/awesome-omni-skill

Эксперт AP workflow. Используй для процессов кредиторской задолженности, invoice processing, three-way matching и payment automation.

bgo

10
from diegosouzapw/awesome-omni-skill

Automates the complete Blender build-go workflow, from building and packaging your extension/add-on to removing old versions, installing, enabling, and launching Blender for quick testing and iteration.

Coding & Development

technical-architecture

16
from diegosouzapw/awesome-omni-skill

Autonomous Staff Engineer agent that analyzes a product requirement brief, extracts non-functional requirements, and generates a comprehensive technical architecture document. Accepts an optional tech-stack-preferences.md file path. Runs end-to-end without asking questions. Use when turning product requirements into technical architecture decisions.

tdd

16
from diegosouzapw/awesome-omni-skill

Use when implementing features or fixing bugs — write the test first, watch it fail, write minimal code to pass. Ensures tests verify behavior by requiring failure first.

tag-based-search

16
from diegosouzapw/awesome-omni-skill

Code tagging system using @FEAT, @COMP, @TYPE tags for easy discovery and navigation. Use when adding documentation tags or searching for related code across the codebase.

SurveyMonkey Automation

16
from diegosouzapw/awesome-omni-skill

Automate SurveyMonkey survey creation, response collection, collector management, and survey discovery through natural language commands

strict-user-requirements-adherence

16
from diegosouzapw/awesome-omni-skill

Strictly adheres to specified user flow and game rules, making sure to follow documented features.

sre-task-refinement

16
from diegosouzapw/awesome-omni-skill

Use when you have to refine subtasks into actionable plans ensuring that all corner cases are handled and we understand all the requirements.

spec-prd-creator

16
from diegosouzapw/awesome-omni-skill

Generate a Product Requirements Document (PRD) for a new feature. Use when planning a feature, starting a new project, or when asked to create a PRD. Triggers on: create a prd, write prd for, plan this feature, requirements for, spec out.