categorizing-bsky-accounts — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited categorizing-bsky-accounts (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
Requires: extracting-keywords skill (provides YAKE venv + domain stopwords)
The analyzer delegates keyword extraction to the extracting-keywords skill, which provides:
When users request Bluesky account analysis:
--following handle--followers handle--handles "h1,h2,h3"--file accounts.txt--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 @handle1.bsky.social (Display Name)
Bio text here
Keywords: keyword1, keyword2, keyword3
@handle2.bsky.social (Another Name)
Bio text here
Keywords: keyword4, keyword5, keyword6Analyze following list with AI/ML stopwords:
python scripts/bluesky_analyzer.py --following austegard.com --stopwords aiAnalyze followers:
python scripts/bluesky_analyzer.py --followers austegard.comAnalyze specific handles:
python scripts/bluesky_analyzer.py --handles "user1.bsky.social,user2.bsky.social,user3.bsky.social"From file:
python scripts/bluesky_analyzer.py --file accounts.txt --stopwords aiFilter out bot accounts:
python scripts/bluesky_analyzer.py --following handle --exclude "bot,spam,promo" --stopwords ai--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)
--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 purposeai: AI/ML domain stopwords (1357 terms) - tech-focused accountsls: Life Sciences stopwords (1293 terms) - biomedical/research accounts--exclude "word1,word2" Skip accounts with these keywords in bio/posts
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 trialsClaude then categorizes accounts based on bio + keywords without hardcoded rules.
python scripts/bluesky_analyzer.py --following your-handle.bsky.social --stopwords aiClaude will categorize accounts by topic and identify patterns in who you follow.
python scripts/bluesky_analyzer.py --following alice.bsky.social --stopwords aiAsk Claude: "Which of these accounts are ML researchers?" or "Who focuses on climate tech?"
cat > accounts.txt << 'EOF'
expert1.bsky.social
expert2.bsky.social
expert3.bsky.social
EOF
python scripts/bluesky_analyzer.py --file accounts.txt --stopwords lspython scripts/bluesky_analyzer.py --following handle --exclude "bot,spam,promo,follow back" --stopwords aiDelegates to extracting-keywords skill using YAKE venv:
en: English (574 terms) - general purposeai: AI/ML domain (1357 terms) - filters technical noise, ML boilerplatels: Life Sciences (1293 terms) - filters research methodology, clinical termsBluesky API limits:
The analyzer respects these limits with built-in delays.
Script's role:
Claude's role:
This agentic pattern is more flexible than hardcoded keyword matching.
"No accounts to analyze"
"Insufficient content for keyword extraction"
--posts parameterRate limit errors
--accounts parameterImport errors
/home/claude/yake-venv/bin/python -c "import yake"python3 --versionBuilt-in integration:
User: "Can you analyze the accounts I follow on Bluesky and tell me what topics they focus on?"
Claude:
python scripts/bluesky_analyzer.py --following user-handle.bsky.social --stopwords aiBased on the output, I can see you follow:
User: "Find ML researchers in @alice's network"
Claude:
python scripts/bluesky_analyzer.py --following alice.bsky.social --stopwords aiI found 23 ML researchers in Alice's network:
User: "Here's a list of 30 accounts, categorize them"
Claude:
python scripts/bluesky_analyzer.py --file accounts.txt --stopwords aiCategorized into:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.