Search public Bluesky posts and read public account feeds through the no-login Bluesky AppView API, tuned for New Zealand situational awareness: keyword and phrase search with recency sort, author feeds for official NZ accounts, and machine-readable post output. Use when the task involves scanning public social media for emerging NZ events, weather or hazard impacts, community reports, or monitoring a public Bluesky account. Read-only; no authentication required.
Installs into .claude/skills of the current project.
Are you the author of Bluesky Nz?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/thecolab-ai-bluesky-nz)
---
name: bluesky-nz
description: "Search public Bluesky posts and read public account feeds through the no-login Bluesky AppView API, tuned for New Zealand situational awareness: keyword and phrase search with recency sort, author feeds for official NZ accounts, and machine-readable post output. Use when the task involves scanning public social media for emerging NZ events, weather or hazard impacts, community reports, or monitoring a public Bluesky account. Read-only; no authentication required."
license: MIT
compatibility: "Requires Python 3.10+ and network access for live data"
metadata:
thecolab.category: "emergency"
thecolab.source_owner: "Bluesky Social (public AppView)"
thecolab.source_type: "community"
thecolab.auth: "none"
thecolab.access_mode: "public-api"
thecolab.data_class: "public"
thecolab.writes: "false"
thecolab.browser: "false"
thecolab.risk: "low"
thecolab.cache_ttl: "24h"
thecolab.schema_version: "1"
thecolab.skill_type: "public-api"
thecolab.pack: "nz-public-data"
thecolab.source_url: "https://api.bsky.app/xrpc/app.bsky.feed.searchPosts"
thecolab.allowed_domains: "api.bsky.app,bsky.app"
thecolab.last_verified: "2026-07-22"
thecolab.health: "healthy"
thecolab.maintainer: "@adam91holt"
---
# Bluesky NZ
## Goal
Search public Bluesky posts and read public account feeds through the keyless
AppView API — a public social signal channel for detecting emerging NZ events
(weather impacts, outages, community reports) and monitoring official accounts.
## Use this when
- A task needs to scan public social media for emerging NZ incident reports
- A task needs recent public posts from a specific Bluesky account
- A workflow needs machine-readable public post data with engagement counts
## Do not use this for
- Posting, liking, following, DMs, or anything requiring a session
- Private/protected content (only public posts are visible)
- Treating crowd posts as verified fact — corroborate against official sources
## Commands
```bash
python3 skills/bluesky-nz/scripts/cli.py search "wellington south coast waves" --limit 20 --json
python3 skills/bluesky-nz/scripts/cli.py search "state of emergency" --since 2026-07-21 --lang en
python3 skills/bluesky-nz/scripts/cli.py feed metservice.com --limit 10
python3 skills/bluesky-nz/scripts/cli.py profile some-account.bsky.social
```
- `search QUERY [--sort latest|top] [--since ISO] [--lang CODE] [--limit N] [--json]` — public post search
- `feed HANDLE [--limit N] [--json]` — recent public posts from one account (replies excluded)
- `profile HANDLE [--json]` — public profile summary
## Notes
- **Craft NZ-specific queries.** Generic terms collide with overseas places —
"wellington weather" surfaces Wellington, Ohio. Add NZ anchors: suburb names,
"NZ", "Aotearoa", agency names.
- **Verify handles before trusting an account.** Handles are self-registered:
`metservice.bsky.social` is a band, not the weather service. Run `profile`
and check the description/domain handle. A handle on the organisation's own
domain, such as `metservice.com`, is domain-verified.
- Crowd posts are unverified by definition; the JSON output carries this warning.
- Timestamps are UTC as published. Post URLs link to the public web app.
## Resources
- CLI entrypoint: `scripts/cli.py`
- Contract test: `scripts/test_contract.py`; smoke test: `scripts/smoke_test.py`
- Endpoint behaviour and rate-limit notes: `references/source-notes.md`