安装
npx skills add https://github.com/vm0-ai/vm0-skills --skill hackernews
- Hacker News API
- Use the official Hacker News API via direct
- curl
- calls to
- fetch stories, comments, and user data
- .
- Official docs:
- https://github.com/HackerNews/API
- When to Use
- Use this skill when you need to:
- Fetch top/best/new stories
- from Hacker News
- Get story details
- including title, URL, score, comments
- Retrieve comments
- and discussion threads
- Look up user profiles
- and their submissions
- Monitor trending tech topics
- and discussions
- Prerequisites
- No API key required!
- The Hacker News API is completely free and open.
- Base URL:
- https://hacker-news.firebaseio.com/v0
- Important:
- When using
- $VAR
- in a command that pipes to another command, wrap the command containing
- $VAR
- in
- bash -c '...'
- . Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.
- bash
- -c
- 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"'
- How to Use
- 1. Get Top Stories
- Fetch IDs of the current top 500 stories:
- bash
- -c
- 'curl -s "https://hacker-news.firebaseio.com/v0/topstories.json"'
- |
- jq
- '.[:10]'
- 2. Get Best Stories
- Fetch the best stories (highest voted over time):
- bash
- -c
- 'curl -s "https://hacker-news.firebaseio.com/v0/beststories.json"'
- |
- jq
- '.[:10]'
- 3. Get New Stories
- Fetch the newest stories:
- bash
- -c
- 'curl -s "https://hacker-news.firebaseio.com/v0/newstories.json"'
- |
- jq
- '.[:10]'
- 4. Get Ask HN Stories
- Fetch "Ask HN" posts:
- bash
- -c
- 'curl -s "https://hacker-news.firebaseio.com/v0/askstories.json"'
- |
- jq
- '.[:10]'
- 5. Get Show HN Stories
- Fetch "Show HN" posts:
- bash
- -c
- 'curl -s "https://hacker-news.firebaseio.com/v0/showstories.json"'
- |
- jq
- '.[:10]'
- 6. Get Job Stories
- Fetch job postings:
- bash
- -c
- '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
- with the actual item ID:
- curl
- -s
- "https://hacker-news.firebaseio.com/v0/item/.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
- with the actual item ID:
- bash
- -c
- '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
- with the actual story ID:
- curl
- -s
- "https://hacker-news.firebaseio.com/v0/item/.json"
- |
- jq
- '{title, score, descendants, kids}'
- Then for each comment ID in the
- kids
- array, replace
- with the actual comment ID:
- curl
- -s
- "https://hacker-news.firebaseio.com/v0/item/.json"
- |
- jq
- '{by, text, score}'
- User Data
- 10. Get User Profile
- Fetch user details. Replace
- with the actual username:
- curl
- -s
- "https://hacker-news.firebaseio.com/v0/user/.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
- with the actual username:
- curl
- -s
- "https://hacker-news.firebaseio.com/v0/user/.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
- bash
- -c
- '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)
- bash
- -c
- '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
- bash
- -c
- '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.,
- url
- for Ask HN)
- Unix timestamps
- All times are Unix timestamps, convert as needed
← 返回排行榜