hackernews
vm0-ai/vm0-skills
Access Hacker News stories, comments, and user data via the official API.
What is hackernews?
The Hacker News skill provides direct access to the Hacker News API for fetching stories, comments, job postings, and user profiles. Use it when users ask about tech news, specific HN stories, or want to search and filter content from the platform.
- Fetch top, best, newest, Ask HN, Show HN, and job stories
- Retrieve full item details including title, score, URL, and comment counts
- Access story comments and build comment threads by ID
- Look up user profiles and their submission history
- Get real-time updates via max item ID and changed items endpoint
- Filter stories by score, keywords, or category using jq
How to install hackernews
npx skills add https://github.com/vm0-ai/vm0-skills --skill hackernewsHow to use hackernews
- 1.Use curl to call the Hacker News API endpoints (e.g., topstories.json, beststories.json)
- 2.Parse the returned JSON array of item IDs using jq
- 3.Fetch full item details by calling /v0/item/{id}.json for each ID
- 4.For comments, extract the kids array from a story and fetch each comment ID separately
- 5.For user data, call /v0/user/{username}.json and inspect submitted array
- 6.Add delays between bulk requests and cache results when possible
Use cases
- Find today's top 10 tech stories with scores and URLs
- Search for AI/ML-related stories across recent posts
- Retrieve a specific user's recent submissions and karma score
- Build a real-time feed by polling the updates endpoint
- Extract high-scoring stories (100+ points) for curation
- Developers building HN integrations or dashboards
- Researchers analyzing tech news trends
- Content curators filtering stories by topic
- Anyone tracking specific HN users or discussions
hackernews FAQ
No rate limits are documented, but you should be respectful and add delays when fetching multiple items in bulk.
Fetch the story by ID, extract the kids array (which contains comment IDs), then fetch each comment ID separately using /v0/item/{comment-id}.json.
Some fields like url are null for Ask HN posts, and not all items have all fields. Always handle missing data gracefully.
Fetch stories from topstories.json or newstories.json, then filter using jq with regex patterns like select(.title | test("keyword"; "i")).
Call /v0/maxitem.json to get the current max item ID, then poll /v0/updates.json for recently changed items and profiles.
Full instructions (SKILL.md)
Source of truth, from vm0-ai/vm0-skills.
name: hackernews description: Hacker News API for stories and comments. Use when user mentions "Hacker News", "HN", "Y Combinator", or asks about tech news.
How to Use
1. Get Top Stories
Fetch IDs of the current top 500 stories:
curl -s "https://hacker-news.firebaseio.com/v0/topstories.json" | jq '.[:10]'
2. Get Best Stories
Fetch the best stories (highest voted over time):
curl -s "https://hacker-news.firebaseio.com/v0/beststories.json" | jq '.[:10]'
3. Get New Stories
Fetch the newest stories:
curl -s "https://hacker-news.firebaseio.com/v0/newstories.json" | jq '.[:10]'
4. Get Ask HN Stories
Fetch "Ask HN" posts:
curl -s "https://hacker-news.firebaseio.com/v0/askstories.json" | jq '.[:10]'
5. Get Show HN Stories
Fetch "Show HN" posts:
curl -s "https://hacker-news.firebaseio.com/v0/showstories.json" | jq '.[:10]'
6. Get Job Stories
Fetch job postings:
curl -s "https://hacker-news.firebaseio.com/v0/jobstories.json" | jq '.[:10]'
Item Details
7. Get Story/Comment/Job Details
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 |
8. Get Multiple Stories with Details
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
9. Get Story with Comments
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}'
User Data
10. Get User Profile
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 |
11. Get User's Recent Submissions
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]'
Real-time Updates
12. Get Max Item ID
Get the current largest item ID (useful for polling new items):
curl -s "https://hacker-news.firebaseio.com/v0/maxitem.json"
13. Get Changed Items and Profiles
Get recently changed items and profiles (for real-time updates):
curl -s "https://hacker-news.firebaseio.com/v0/updates.json"
Practical Examples
Fetch Today's Top 10 with Scores
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
Find High-Scoring Stories (100+ points)
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
Get Latest AI/ML Related Stories
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
API Endpoints Summary
| 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 |
Guidelines
- No rate limits documented: But be respectful, add delays for bulk fetching
- Use jq for filtering: Filter JSON responses to extract needed data
- Cache results: Stories don't change frequently, cache when possible
- Batch requests carefully: Each item requires a separate API call
- Handle nulls: Some fields may be null or missing (e.g.,
urlfor Ask HN) - Unix timestamps: All times are Unix timestamps, convert as needed
Related skills
More from vm0-ai/vm0-skills and the wider catalog.

cloudflare-tunnel
Cloudflare Tunnel API for secure tunnels. Use when user mentions "Cloudflare

google-sheets
Google Sheets API for spreadsheets. Use when user mentions "Google Sheets",

openviking
Activate when the user asks about any repository listed in the system prompt under 'OpenViking — Indexed Code Repositories', or when they ask about an external library, framework, or project that may have been indexed. Also activate when the user wants to add, remove, or manage repos. Always search the local codebase first before using this skill.

create-adaptable-composable
Create library-grade Vue composables that accept plain values, refs, or getters for maximum reusability.

vue-best-practices
Vue 3 best practices guide: Composition API, TypeScript, and component architecture patterns.

vue-debug-guides
Vue 3 debugging guides for runtime errors, warnings, async failures, and hydration issues.