mcpbeat Sign in

Sampling Bluesky Zeitgeist Skill for Claude

DEPRECATED - Use browsing-bluesky skill instead. Sample and analyze Bluesky firehose to identify trending topics and content clusters. Use when user asks about "what's happening on Bluesky", "Bluesky trends", "zeitgeist", "firehose analysis", or wants to see real-time topic clusters from the network.

7k tokens
context cost
the whole folder, loaded on every use
5
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
137
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/oaustegard/claude-skills --skill sampling-bluesky-zeitgeist

The instruction itself

16 sections, as written by the author

Sampling Bluesky Zeitgeist

⚠️ DEPRECATED: This skill has been consolidated into the browsing-bluesky skill.

Use browsing-bluesky for firehose sampling via the sample_firehose() function.


Legacy Documentation

Capture and analyze multiple windows of Bluesky firehose data, identify content clusters, and present results showing both individual sample windows and aggregate trends.

Workflow

1. Setup

Install dependencies:

cd /home/claude && npm install ws https-proxy-agent 2>/dev/null

2. Run Sample Windows

Execute 3 consecutive 10-second samples:

node /mnt/skills/user/sampling-bluesky-zeitgeist/scripts/zeitgeist-sample.js --duration 10 > /home/claude/sample1.json 2>/dev/null
node /mnt/skills/user/sampling-bluesky-zeitgeist/scripts/zeitgeist-sample.js --duration 10 > /home/claude/sample2.json 2>/dev/null
node /mnt/skills/user/sampling-bluesky-zeitgeist/scripts/zeitgeist-sample.js --duration 10 > /home/claude/sample3.json 2>/dev/null

3. Analyze & Build DATA Object

Parse each JSON file and aggregate:

  • Sum totalPosts, calculate avgPostsPerSecond
  • Merge topWords, topPhrases, entities across windows
  • Calculate per-minute rates: (count / totalDurationSec) * 60
  • Detect trends by comparing window counts

4. Identify Content Clusters

Group related terms into thematic clusters. For each cluster:

  • name: Descriptive label
  • emoji: Visual identifier
  • terms: Keywords that belong to this cluster
  • searchQuery: OR-joined terms for Bsky search (e.g., "trump OR republican OR congress")
  • totalMentions: Sum across all windows
  • mentionsPerMin: (totalMentions / totalDurationSec) * 60
  • trend: "up" if last window > first by 30%, "down" if <30%, else "stable"
  • samples: 2-3 example posts matching cluster

5. Create Artifact via Template

Copy template and inject DATA:

cp /mnt/skills/user/sampling-bluesky-zeitgeist/assets/zeitgeist-template.html /mnt/user-data/outputs/zeitgeist.html

Then use str_replace to inject the DATA object:

old_str: const DATA = {"aggregate":{"totalPosts":0,"totalDurationSec":30,"avgPostsPerSecond":0,"timestamp":""},"windows":[],"clusters":[],"entities":[],"phrases":[],"languages":{}};
new_str: const DATA = {YOUR_ACTUAL_DATA_OBJECT};

See references/artifact-template.md for the complete DATA schema.

Output Format

Present the artifact link, then provide a brief prose summary:

  • What's dominating the conversation (top 1-2 clusters)
  • Any notable velocity spikes
  • Interesting patterns (e.g., "Japanese-language posts spiking around [topic]")

Keep summary to 2-3 sentences. The artifact is the main deliverable.

Refresh Workflow

When user asks to refresh/update/sample again:

  • Run new sample windows (same 3x10s pattern)
  • Update the DATA object with new results
  • Use str_replace to swap the DATA line in the existing artifact
  • Report what changed: "Trump mentions up 20% from last sample, M23 discussion fading"

For comparison, track previous aggregate totals and show delta:

Previous: trump 50/min → Current: trump 62/min (+24%)

Topic Monitoring Workflow

When user specifies a topic to monitor (e.g., "track the Lakers game", "what's happening with the drone sightings"):

Option A: Filtered Sampling

Run samples with the --filter flag to capture only matching posts:

node zeitgeist-sample.js --duration 15 --filter "lakers" > /home/claude/topic1.json 2>/dev/null

This gives deeper analysis of a specific topic but misses broader context.

Run general samples, then:

  • Calculate topic-specific velocity from the results
  • Add a dedicated "Monitored Topic" cluster at the top
  • Include sample posts matching the topic

In the DATA object, add a monitoredTopic field:

{
  "monitoredTopic": {
    "query": "lakers",
    "totalMentions": 45,
    "mentionsPerMin": 90.0,
    "trend": "up",
    "windowCounts": [12, 15, 18],
    "samples": ["Lakers up by 10 in the 4th!", "LeBron with another triple double"]
  }
}

Responding to Topic Requests

At start of conversation:

  • "What's happening with the drone sightings?" → Run general sample, highlight drone-related content as monitored topic
  • "Track mentions of Claude AI" → Same approach, focus on that term

Mid-conversation:

  • "Can you focus on the M23 conflict?" → Re-run samples, add M23 as monitored topic
  • "What about Japanese content specifically?" → Filter for lang:ja or highlight existing Japanese cluster

Follow-up pattern:

User: "refresh but focus on the game"

→ Run new samples, keep monitored topic, update all data

Error Handling

If WebSocket connection fails:

  • Check that *.bsky.network is in allowed domains
  • Retry once with shorter duration (5s)
  • If still failing, report the error and suggest user check network settings

If sample returns zero posts:

  • Likely network/proxy issue
  • Report and do not create artifact

Customization Options

User may request:

  • Longer samples: Increase duration per window or add more windows
  • Topic focus: After initial sample, run filtered samples for specific clusters
  • Comparison: Run samples at different times and compare

Other skills for the same job

different authors, same section of the catalogue
Skill Creator
by anthropics
vendor ×10

Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.

56k tokens scripts
Skill Creator
by vercel-labs
vendor ×10

Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.

12k tokens scripts
Skill Creator
by JayZeeDesign
×9

Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.

10k tokens scripts
Template Skill
by JayZeeDesign
×7

Replace with description of the skill and when Claude should use it.

35 tokens
Dispatching Parallel Agents
by ZhanlinCui
×5

Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies

2k tokens
Skill Development
by anthropics
vendor ×4

This skill should be used when the user wants to "create a skill", "add a skill to plugin", "write a new skill", "improve skill description", "organize skill content", or needs guidance on skill structure, progressive disclosure, or skill development best practices for Claude Code plugins.

9k tokens
Find Skills
by sanity-io
vendor ×4

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

1k tokens
Writing Skills
by ZhanlinCui
×4

Use when creating new skills, editing existing skills, or verifying skills work before deployment

26k tokens scripts

How to use it

Copy the folder

Take oaustegard/sampling-bluesky-zeitgeist from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference npm. Without those the skill loads but fails at the first command.