AgentSkillsCN

hackernews

通过 curl 调用 Hacker News API。利用此技能,轻松获取 Hacker News 的头条新闻、新发布文章、评论以及用户个人资料。

SKILL.md
--- frontmatter
name: hackernews
description: Hacker News API via curl. Use this skill to fetch top stories, new posts, comments, and user profiles from Hacker News.

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

输出格式

当向用户展示 Hacker News 内容时,必须将英文标题翻译成中文(不显示英文原标题)。

格式要求(Telegram 移动端优化):

code
📅 YYYY-MM-DD HN 热榜

1️⃣ [中文标题](URL)
   xxx 分 · xxx 评

2️⃣ [中文标题](URL)
   xxx 分 · xxx 评

示例

code
📅 2026-02-05 HN 热榜

1️⃣ [谷歌发布新一代 AI 模型 Gemini 2.0](https://blog.google/...)
   892 分 · 423 评

2️⃣ [OpenAI 推出新版 API 定价策略](https://openai.com/...)
   756 分 · 312 评

格式规范

项目规范
日期标题📅 YYYY-MM-DD HN 热榜,置于顶部
序号使用 emoji 序号 1️⃣2️⃣3️⃣...
标题Markdown 超链接 [标题](URL),不暴露 URL
标题长度≤ 35 字符,超长截断加 ...
数据行{分数} 分 · {评论数} 评,无 emoji
条目间隔每条之间空 1 行
条目数默认 10 条

翻译注意:准确传达原意,技术术语保留英文(如 API、GPU、LLM),专有名词保持原样(如 OpenAI、Claude)。


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
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
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
bash -c 'curl -s "https://hacker-news.firebaseio.com/v0/beststories.json"' | jq '.[:10]'

3. Get New Stories

Fetch the newest stories:

bash
bash -c 'curl -s "https://hacker-news.firebaseio.com/v0/newstories.json"' | jq '.[:10]'

4. Get Ask HN Stories

Fetch "Ask HN" posts:

bash
bash -c 'curl -s "https://hacker-news.firebaseio.com/v0/askstories.json"' | jq '.[:10]'

5. Get Show HN Stories

Fetch "Show HN" posts:

bash
bash -c 'curl -s "https://hacker-news.firebaseio.com/v0/showstories.json"' | jq '.[:10]'

6. Get Job Stories

Fetch job postings:

bash
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 <item-id> with the actual item ID:

bash
curl -s "https://hacker-news.firebaseio.com/v0/item/<item-id>.json"

Response fields:

FieldDescription
idUnique item ID
typestory, comment, job, poll, pollopt
byUsername of author
timeUnix timestamp
titleStory title (stories only)
urlStory URL (if external link)
textContent text (Ask HN, comments)
scoreUpvote count
descendantsTotal comment count
kidsArray 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:

bash
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 <story-id> with the actual story ID:

bash
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:

bash
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:

bash
curl -s "https://hacker-news.firebaseio.com/v0/user/<username>.json"

Response fields:

FieldDescription
idUsername
createdAccount creation timestamp
karmaUser's karma score
aboutUser bio (HTML)
submittedArray of item IDs submitted

11. Get User's Recent Submissions

Fetch a user's recent submissions. Replace <username> with the actual username:

bash
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):

bash
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):

bash
curl -s "https://hacker-news.firebaseio.com/v0/updates.json"

Practical Examples

Fetch Today's Top 10 with Scores

bash
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
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
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

EndpointDescription
/v0/topstories.jsonTop 500 stories
/v0/beststories.jsonBest stories
/v0/newstories.jsonNewest 500 stories
/v0/askstories.jsonAsk HN stories
/v0/showstories.jsonShow HN stories
/v0/jobstories.jsonJob postings
/v0/item/{id}.jsonItem details
/v0/user/{id}.jsonUser profile
/v0/maxitem.jsonCurrent max item ID
/v0/updates.jsonChanged items/profiles

Guidelines

  1. No rate limits documented: But be respectful, add delays for bulk fetching
  2. Use jq for filtering: Filter JSON responses to extract needed data
  3. Cache results: Stories don't change frequently, cache when possible
  4. Batch requests carefully: Each item requires a separate API call
  5. Handle nulls: Some fields may be null or missing (e.g., url for Ask HN)
  6. Unix timestamps: All times are Unix timestamps, convert as needed