Skip to content

/hn-summarize

Fetch and summarize Hacker News / hckrnews.com top stories, articles, and their comment threads. Use when asked to summarize HN front-page stories, a specific HN story plus its discussion, or "the top N from hckrnews".

From plugin
dx
10k9 skills

Claude Code

$ npx -y skills add ykdojo/claude-code-tips --skill hn-summarize --agent claude-code

SKILL.md

hn-summarize.SKILL.md
name: hn-summarize
description: Fetch and summarize Hacker News / hckrnews.com top stories, articles, and their comment threads. Use when asked to summarize HN front-page stories, a specific HN story plus its discussion, or "the top N from hckrnews".

HN Summarize

`hckrnews.com` is a JavaScript-rendered front end - curling it returns an empty shell, so **do not scrape it**. Instead use the official Hacker News APIs (Firebase + Algolia), which give the same stories with points, comment counts, and full comment trees. These APIs return plain JSON, so plain `curl` works fine.

1. Current top stories (the "top 10")

`topstories.json` returns 500 story IDs in front-page rank order. Take the first N and look up each item.

curl -sL 'https://hacker-news.firebaseio.com/v0/topstories.json' -o /tmp/top.json
python3 -c "
import json,urllib.request
ids=json.load(open('/tmp/top.json'))[:10]
for i,sid in enumerate(ids,1):
    d=json.load(urllib.request.urlopen(f'https://hacker-news.firebaseio.com/v0/item/{sid}.json'))
    print(f\"{i}. {d.get('title')} | {d.get('score')} pts | {d.get('descendants',0)} comments | id {sid}\")
    print(f\"   {d.get('url','(text post)')}\")
"

2. Find a specific story by topic (Algolia search)

curl -sL 'https://hn.algolia.com/api/v1/search?query=YOUR+QUERY&tags=story' -o /tmp/s.json
python3 -c "
import json
for h in json.load(open('/tmp/s.json'))['hits'][:8]:
    print(h['objectID'], '|', h.get('points'), 'pts |', h.get('num_comments'), 'comments |', h['title'])
    print('   ', h.get('url'))
"
  • Add `&numericFilters=created_at_i>UNIXTS` to restrict to recent stories (avoids matching an old duplicate of the same headline).
  • `search` ranks by relevance; `search_by_date` ranks by recency.
  • Pick the `objectID` with the highest points/comments - that's the live front-page discussion.

3. Fetch a story + its comment tree

curl -sL 'https://hn.algolia.com/api/v1/items/OBJECT_ID' -o /tmp/hn.json

The response is a nested tree: top-level `children` are root comments, each with their own `children`. Flatten and print root comments in thread order (HN's default ranking ≈ this order):

python3 -c "
import json,re
d=json.load(open('/tmp/hn.json'))
def clean(t):
    t=re.sub('<[^>]+>',' ',t)
    for a,b in [('&#x27;',chr(39)),('&gt;','>'),('&lt;','<'),('&amp;','&'),('&quot;','\"')]:
        t=t.replace(a,b)
    return re.sub(' +',' ',t).strip()
for c in d.get('children',[])[:15]:
    if c.get('text'):
        print(f\"{c.get('author')}: {clean(c['text'])[:550]}\")
        print('---')
"

Note: Algolia's per-comment `points` field is now always `null`, so sort by thread order (already roughly HN's ranking) rather than by points. For deeper threads, recurse into `children` and track depth.

4. Fetch the linked article

Fetch the story's article with `curl -sL <url>`, then strip tags with `sed 's/<[^>]*>//g'` to extract readable text, or grep for the key sentences. If the page is JS-heavy or paywalled, try a Wayback Machine snapshot:

curl -sL 'http://archive.org/wayback/available?url=ARTICLE_URL' -o /tmp/wb.json
python3 -c "import json;print(json.load(open('/tmp/wb.json'))['archived_snapshots'].get('closest',{}).get('url'))"

Then fetch the snapshot URL the same way. If the host blocks outbound `curl` requests, fetch through a container or proxy you have available.

Summary format

For each story give: title, points, comment count, source, a few sentences on what the article says, then **comment themes** - group the discussion into 3-6 recurring threads (agreement, rebuttals, tangents) rather than listing comments one by one. Note when the top thread is a critical/contrarian take, since that's common on HN.

Read more
@ykdojo
Ships withdx

Here are my tips for getting the most out of Claude Code, including a custom status line script and Claude Code running itself in a container. Also includes the dx plugin: skills for everyday dev workflows.

Stars on GitHub

Momentum

stars in total
10.3k
Star history of ykdojo/claude-code-tips on GitHub, a chart by star-history.com

Other skills on dx.

gha
Auto-invoked

gha

Analyze GitHub Actions failures and identify root causes

@ykdojo@ykdojoInstall Skill
half-clone
Auto-invoked

half-clone

Clone the later half of the current conversation, discarding earlier context to reduce token usage while preserving recent work.

@ykdojo@ykdojoInstall Skill
handoff
Auto-invoked

handoff

Write or update a handoff document so the next agent with fresh context can continue this work.

@ykdojo@ykdojoInstall Skill
private-github-search
Auto-invoked

private-github-search

Full-text search across all of the user's GitHub repos (including private ones) using a local mirror and ripgrep. Use for "where…

@ykdojo@ykdojoInstall Skill
quarter-clone
Auto-invoked

quarter-clone

Clone the last quarter of the current conversation, discarding earlier context to reduce token usage while preserving recent work.

@ykdojo@ykdojoInstall Skill
reddit-fetch
Auto-invoked

reddit-fetch

Fetch content from Reddit via its JSON API using a browser session (DuckDuckGo-hop unlock). Use when accessing Reddit URLs,…

@ykdojo@ykdojoInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc11d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about hn-summarize.

Which coding agents can use hn-summarize?
hn-summarize installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.