Hacker News API via curl. Use this skill to fetch top stories, new posts, comments, and user profiles from Hacker News.
Fetch IDs of the current top 500 stories:
curl -s "https://hacker-news.firebaseio.com/v0/topstories.json" | jq '.[:10]'
Fetch the best stories (highest voted over time):
curl -s "https://hacker-news.firebaseio.com/v0/beststories.json" | jq '.[:10]'
Fetch the newest stories:
curl -s "https://hacker-news.firebaseio.com/v0/newstories.json" | jq '.[:10]'
Fetch "Ask HN" posts:
curl -s "https://hacker-news.firebaseio.com/v0/askstories.json" | jq '.[:10]'
Fetch "Show HN" posts:
curl -s "https://hacker-news.firebaseio.com/v0/showstories.json" | jq '.[:10]'
Fetch job postings:
curl -s "https://hacker-news.firebaseio.com/v0/jobstories.json" | jq '.[:10]'
Fetch full details for any item by ID. Replace <item-id> with the actual item ID:
curl -s "https://hacker-news.firebaseio.com/v0/item/<item-id>.json"
Response fields:
| Field | Description |
|-------|-------------|
| id | Unique item ID |
| type | story, comment, job, poll, pollopt |
| by | Username of author |
| time | Unix timestamp |
| title | Story title (stories only) |
| url | Story URL (if external link) |
| text | Content text (Ask HN, comments) |
| score | Upvote count |
| descendants | Total comment count |
| kids | Array of child comment IDs |
Fetch top 5 stories with full details. Replace <item-id> with the actual item ID:
curl -s "https://hacker-news.firebaseio.com/v0/topstories.json" | jq '.[:5][]' | while read id; do
curl -s "https://hacker-news.firebaseio.com/v0/item/${id}.json" | jq '{id, title, score, url, by}'
done
Fetch a story and its top-level comments. Replace <story-id> with the actual story ID:
curl -s "https://hacker-news.firebaseio.com/v0/item/<story-id>.json" | jq '{title, score, descendants, kids}'
Then for each comment ID in the kids array, replace <comment-id> with the actual comment ID:
curl -s "https://hacker-news.firebaseio.com/v0/item/<comment-id>.json" | jq '{by, text, score}'
Fetch user details. Replace <username> with the actual username:
curl -s "https://hacker-news.firebaseio.com/v0/user/<username>.json"
Response fields:
| Field | Description |
|-------|-------------|
| id | Username |
| created | Account creation timestamp |
| karma | User's karma score |
| about | User bio (HTML) |
| submitted | Array of item IDs submitted |
Fetch a user's recent submissions. Replace <username> with the actual username:
curl -s "https://hacker-news.firebaseio.com/v0/user/<username>.json" | jq '.submitted[:5]'
Get the current largest item ID (useful for polling new items):
curl -s "https://hacker-news.firebaseio.com/v0/maxitem.json"
Get recently changed items and profiles (for real-time updates):
curl -s "https://hacker-news.firebaseio.com/v0/updates.json"
curl -s "https://hacker-news.firebaseio.com/v0/topstories.json" | jq '.[:10][]' | while read id; do
curl -s "https://hacker-news.firebaseio.com/v0/item/${id}.json" | jq -r '"\(.score) points | \(.title) | \(.url // "Ask HN")"'
done
curl -s "https://hacker-news.firebaseio.com/v0/topstories.json" | jq '.[:30][]' | while read id; do
curl -s "https://hacker-news.firebaseio.com/v0/item/${id}.json" | jq -r 'select(.score >= 100) | "\(.score) | \(.title)"'
done
curl -s "https://hacker-news.firebaseio.com/v0/topstories.json" | jq '.[:50][]' | while read id; do
curl -s "https://hacker-news.firebaseio.com/v0/item/${id}.json" | jq -r 'select(.title | test("AI|GPT|LLM|Machine Learning|Neural"; "i")) | "\(.score) | \(.title)"'
done
| Endpoint | Description |
|----------|-------------|
| /v0/topstories.json | Top 500 stories |
| /v0/beststories.json | Best stories |
| /v0/newstories.json | Newest 500 stories |
| /v0/askstories.json | Ask HN stories |
| /v0/showstories.json | Show HN stories |
| /v0/jobstories.json | Job postings |
| /v0/item/{id}.json | Item details |
| /v0/user/{id}.json | User profile |
| /v0/maxitem.json | Current max item ID |
| /v0/updates.json | Changed items/profiles |
url for Ask HN)Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer