Postiz
gitroomhq/postiz-agent
Postiz is a tool to schedule social media and chat posts to 28+ channels X, LinkedIn, LinkedIn Page, Reddit, Instagram, Facebook Page, Threads, YouTube, Google My Business, TikTok, Pinterest…
Analyze and categorize Bluesky accounts by topic using keyword extraction.
$ npx skills add oaustegard/claude-skills --skill categorizing-bsky-accounts -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install oaustegard/claude-skills categorizing-bsky-accounts --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/categorizing-bsky-accounts .claude/skills/categorizing-bsky-accounts && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "categorizing-bsky-accounts" agent skill from https://github.com/oaustegard/claude-skills/tree/main/categorizing-bsky-accounts into .claude/skills/categorizing-bsky-accounts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "categorizing-bsky-accounts", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/oaustegard/claude-skills/tree/main/categorizing-bsky-accountsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add oaustegard/claude-skills --skill categorizing-bsky-accounts -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install oaustegard/claude-skills categorizing-bsky-accounts --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/categorizing-bsky-accounts .agents/skills/categorizing-bsky-accounts && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "categorizing-bsky-accounts" agent skill from https://github.com/oaustegard/claude-skills/tree/main/categorizing-bsky-accounts into .agents/skills/categorizing-bsky-accounts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "categorizing-bsky-accounts", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add oaustegard/claude-skills --skill categorizing-bsky-accounts -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install oaustegard/claude-skills categorizing-bsky-accounts --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/categorizing-bsky-accounts .cursor/skills/categorizing-bsky-accounts && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "categorizing-bsky-accounts" agent skill from https://github.com/oaustegard/claude-skills/tree/main/categorizing-bsky-accounts into .cursor/skills/categorizing-bsky-accounts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "categorizing-bsky-accounts", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/oaustegard/claude-skills.git --path categorizing-bsky-accounts--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add oaustegard/claude-skills --skill categorizing-bsky-accounts -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install oaustegard/claude-skills categorizing-bsky-accounts --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/categorizing-bsky-accounts .gemini/skills/categorizing-bsky-accounts && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "categorizing-bsky-accounts" agent skill from https://github.com/oaustegard/claude-skills/tree/main/categorizing-bsky-accounts into .gemini/skills/categorizing-bsky-accounts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "categorizing-bsky-accounts", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install oaustegard/claude-skills categorizing-bsky-accountsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add oaustegard/claude-skills --skill categorizing-bsky-accounts -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/categorizing-bsky-accounts .github/skills/categorizing-bsky-accounts && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "categorizing-bsky-accounts" agent skill from https://github.com/oaustegard/claude-skills/tree/main/categorizing-bsky-accounts into .github/skills/categorizing-bsky-accounts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "categorizing-bsky-accounts", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add oaustegard/claude-skills --skill categorizing-bsky-accounts -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install oaustegard/claude-skills categorizing-bsky-accounts --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/categorizing-bsky-accounts .opencode/skills/categorizing-bsky-accounts && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "categorizing-bsky-accounts" agent skill from https://github.com/oaustegard/claude-skills/tree/main/categorizing-bsky-accounts into .opencode/skills/categorizing-bsky-accounts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "categorizing-bsky-accounts", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
categorizing-bsky-accountsAnalyze and categorize Bluesky accounts by topic using keyword extraction.
Categorizing Bsky Accounts is an agent skill from oaustegard/claude-skills. 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.
Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including scripts (for example `CHANGELOG.md`, `README.md` and `scripts/bluesky_analyzer.py`).
It sits in Writing & Content. It works with Bluesky. The repository describes itself as: My collection of Claude skills. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 90b0f1b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonpython3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Categorizing Bsky Accounts loads about 1.8k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 650 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from oaustegard/claude-skills at commit 90b0f1b, republished under its MIT licence (© oaustegard). 650 words, ~1,771 tokens.
.claude/skills/categorizing-bsky-accounts/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.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:
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)
Determine input mode based on user's request:
--following handle--followers handle--handles "h1,h2,h3"--file accounts.txtConfigure 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 accountsRun 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, keyword6Categorize accounts - Claude analyzes bio + keywords to categorize by topic
Analyze 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:
Group accounts by topic from their bio + keywords, using judgment rather than a fixed taxonomy — the categories and counts follow from what's actually in the data, not a template.
© oaustegard, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (scripts) in categorizing-bsky-accounts of oaustegard/claude-skills.
Open the folder on GitHubat commit 90b0f1b
Categorizing Bsky Accounts next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Categorizing Bsky Accounts this skilloaustegard/claude-skills | 150 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Postizgitroomhq/postiz-agent | 508 | 2 repos | ~7.9k | Automated safety check: Pass | AGPL-3.0 | |
| Typefullyfreekmurze/dotfiles | 1k | 1 repos | ~3.4k | Automated safety check: Notes | None | |
| Creating Letta Code Channelsletta-ai/skills | 149 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Outlier Post FinderScrapeCreators/social-media-research-skills | 3.4k | — | ~1.5k | Automated safety check: Notes | MIT | |
| Content Calendar Smsblacktwist/social-media-skills | 560 | — | ~2.8k | Automated safety check: Pass | MIT |
gitroomhq/postiz-agent
Postiz is a tool to schedule social media and chat posts to 28+ channels X, LinkedIn, LinkedIn Page, Reddit, Instagram, Facebook Page, Threads, YouTube, Google My Business, TikTok, Pinterest…
freekmurze/dotfiles
Create, schedule, and manage social media posts via Typefully.
letta-ai/skills
Builds and debugs Letta Code channels, including first-party channel adapters and dynamic user channel plugins under ~/.letta/channels.
ScrapeCreators/social-media-research-skills
A skill your agent uses when the user wants to find posts, videos, reels, shorts, tweets, or social content that overperformed versus a creator, brand, or competitor baseline.
blacktwist/social-media-skills
When the user wants to plan a posting schedule, create a content calendar, or organize when and what to post.
blacktwist/social-media-skills
When the user wants to turn one piece of content into multiple formats or adapt content across text-first and visual-first platforms (LinkedIn, Twitter/X, Threads, Bluesky, Facebook, Instagram…
oaustegard/claude-skills
Builds interactive Vega-Lite charts from uploaded data: analyzes the fields, picks five to ten fitting chart types, and produces a React artifact with the data embedded inline.
oaustegard/claude-skills
Builds self-contained single-file HTML pages such as reports, decks, postmortems, flowcharts and prototypes from a small spec using a bundled Python composer and templates.
oaustegard/claude-skills
Routes, triages, flags and rates a piece of text with a probability for every option: which department or queue a ticket goes to, which intent a message expresses, whether a yes/no condition holds…
oaustegard/claude-skills
Rewrites model-sounding prose into plain technical writing and checks that every claim survives, for PR text, docs, commit messages and similar drafts.
oaustegard/claude-skills
Guides building standards-based Preact apps with native-first choices, HTM syntax, import maps and vendored ESM, from single-file demos to larger builds.
oaustegard/claude-skills
Deprecated sampler that captures short windows of the Bluesky firehose, clusters trending terms and builds an HTML report; replaced by the browsing-bluesky skill.
Works with
Categories
Analyze and categorize Bluesky accounts by topic using keyword extraction. Categorizing Bsky Accounts is an agent skill from oaustegard/claude-skills. Analyze and categorize Bluesky accounts by topic using keyword extraction.
Categorizing Bsky Accounts fits situations like: users mention Bluesky account analysis; following/follower lists; topic discovery; account curation.
Run `npx skills add oaustegard/claude-skills --skill categorizing-bsky-accounts -a claude-code`. Or copy the skill folder (categorizing-bsky-accounts in oaustegard/claude-skills) into .claude/skills/categorizing-bsky-accounts in your project. Claude Code loads it when a task matches its description.
Run `npx skills add oaustegard/claude-skills --skill categorizing-bsky-accounts -a codex`. Or copy the skill folder (categorizing-bsky-accounts in oaustegard/claude-skills) into .agents/skills/categorizing-bsky-accounts in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add oaustegard/claude-skills --skill categorizing-bsky-accounts -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/categorizing-bsky-accounts, .gemini/skills/categorizing-bsky-accounts, .github/skills/categorizing-bsky-accounts and .opencode/skills/categorizing-bsky-accounts in your project.
Going by SKILL.md and its folder, Categorizing Bsky Accounts needs Python for the scripts in its folder and the command-line tools its instructions call (python and python3). Our summary lists: Python 3; Node.js.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Categorizing Bsky Accounts is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Categorizing Bsky Accounts: Postiz (gitroomhq/postiz-agent, 508 stars), Typefully (freekmurze/dotfiles, 1k stars), Creating Letta Code Channels (letta-ai/skills, 149 stars) and Outlier Post Finder (ScrapeCreators/social-media-research-skills, 3.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
oaustegard (a GitHub user) maintains it in oaustegard/claude-skills, which has 150 GitHub stars. The repository holds 67 skills in this directory. The repository was last updated on October 9, 2026.
Source: oaustegard/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.