hn-search

Search and monitor Hacker News stories, comments, and users via the free Algolia API. Use when the user asks about HN discussions, wants to find posts about a topic, or monitor HN for mentions. No API key required.

176 stars

Best use case

hn-search is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Search and monitor Hacker News stories, comments, and users via the free Algolia API. Use when the user asks about HN discussions, wants to find posts about a topic, or monitor HN for mentions. No API key required.

Teams using hn-search should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/hn-search/SKILL.md --create-dirs "https://raw.githubusercontent.com/dylanfeltus/skills/main/hn-search/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/hn-search/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How hn-search Compares

Feature / Agenthn-searchStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Search and monitor Hacker News stories, comments, and users via the free Algolia API. Use when the user asks about HN discussions, wants to find posts about a topic, or monitor HN for mentions. No API key required.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Hacker News Search

Search and monitor Hacker News stories, comments, and users via the Algolia HN Search API. No API key required.

## When to Use

- User asks about Hacker News discussions on a topic
- User wants to find HN posts about a company, product, or technology
- User wants to monitor HN for mentions of something
- User asks "what's trending on HN" or "what did HN think about X"
- User wants to find Show HN / Ask HN / Launch HN posts

## API Overview

**Base URL:** `https://hn.algolia.com/api/v1`

Two search endpoints:
- `/search` — Relevance-sorted (best for finding specific topics)
- `/search_by_date` — Date-sorted (best for monitoring / recent activity)

**Rate Limits:** 10,000 requests/hour (generous, no auth needed)

## How to Search

### Step 1: Build the URL

```
https://hn.algolia.com/api/v1/search?query=QUERY&tags=TAG&hitsPerPage=N&numericFilters=FILTERS
```

### Step 2: Fetch with `web_fetch`

Use `web_fetch` to call the API. Response is JSON.

### Parameters

| Parameter | Description | Example |
|-----------|-------------|---------|
| `query` | Search terms (URL-encoded) | `query=openai+gpt` |
| `tags` | Filter by type (see below) | `tags=story` |
| `hitsPerPage` | Results per page (max 1000) | `hitsPerPage=20` |
| `page` | Page number (0-indexed) | `page=0` |
| `numericFilters` | Numeric filters (see below) | `numericFilters=points>100` |

### Tag Filters

Use `tags` to filter by content type:

| Tag | Description |
|-----|-------------|
| `story` | Stories only |
| `comment` | Comments only |
| `show_hn` | Show HN posts |
| `ask_hn` | Ask HN posts |
| `front_page` | Currently on front page |
| `author_USERNAME` | Posts by a specific user |
| `story_ID` | Comments on a specific story |

**Combine tags** with commas (AND) or parentheses with commas (OR):
- `tags=story,show_hn` → Show HN stories (AND)
- `tags=(story,comment)` → Stories OR comments

### Numeric Filters

| Filter | Description |
|--------|-------------|
| `points>N` | Minimum points/upvotes |
| `num_comments>N` | Minimum comments |
| `created_at_i>TIMESTAMP` | After Unix timestamp |
| `created_at_i<TIMESTAMP` | Before Unix timestamp |

Combine with commas: `numericFilters=points>100,num_comments>50`

### Date Ranges

To search within a time window, use Unix timestamps with `created_at_i`:

Calculate the current Unix timestamp first (e.g., via `exec: date +%s`), then subtract:

| Window | Subtract from now |
|--------|------------------|
| Last 24 hours | `- 86400` |
| Last 7 days | `- 604800` |
| Last 30 days | `- 2592000` |

Example: if now is `1705312200`, last 7 days = `numericFilters=created_at_i>1704707400`

## Response Format

Each hit contains:

```json
{
  "objectID": "12345",
  "title": "Story Title",
  "url": "https://example.com/article",
  "author": "username",
  "points": 150,
  "num_comments": 42,
  "created_at": "2024-01-15T10:30:00Z",
  "created_at_i": 1705312200,
  "story_text": "Text for Ask HN / Show HN (HTML)",
  "_tags": ["story", "author_username", "story_12345"]
}
```

For comments, hits also include:
```json
{
  "comment_text": "The comment body (HTML)",
  "story_id": 12345,
  "story_title": "Parent Story Title",
  "story_url": "https://example.com",
  "parent_id": 12344
}
```

The response wrapper includes:
```json
{
  "hits": [...],
  "nbHits": 1000,
  "page": 0,
  "nbPages": 50,
  "hitsPerPage": 20
}
```

## Constructing HN Links

- **Story:** `https://news.ycombinator.com/item?id={objectID}`
- **Comment:** `https://news.ycombinator.com/item?id={objectID}`
- **User:** `https://news.ycombinator.com/user?id={author}`

## Step-by-Step Instructions

### Searching for Stories on a Topic

1. URL-encode the query
2. Fetch: `https://hn.algolia.com/api/v1/search?query=YOUR_QUERY&tags=story&hitsPerPage=10`
3. Parse the JSON response
4. For each hit, present: title, points, num_comments, author, date, HN link, and original URL

### Finding Recent/Trending Discussions

1. Calculate Unix timestamp for your time window (e.g., 7 days ago)
2. Fetch: `https://hn.algolia.com/api/v1/search?query=YOUR_QUERY&tags=story&numericFilters=points>50,created_at_i>TIMESTAMP&hitsPerPage=10`
3. Sort results by points or comments for "trending"

### Getting Comments on a Story

1. Get the story's objectID from a search
2. Fetch: `https://hn.algolia.com/api/v1/search?tags=comment,story_STORYID&hitsPerPage=20`
3. Present comment_text, author, points for each

### Monitoring a Topic (Show Recent Mentions)

1. Use `/search_by_date` instead of `/search`
2. Fetch: `https://hn.algolia.com/api/v1/search_by_date?query=YOUR_QUERY&tags=(story,comment)&hitsPerPage=20`
3. Results are newest-first — useful for "what's new about X on HN"

### Finding a User's Posts

1. Fetch: `https://hn.algolia.com/api/v1/search?tags=author_USERNAME,story&hitsPerPage=20`
2. For their comments: `tags=author_USERNAME,comment`

## Output Format

Present results as a clean list:

```
### HN Results for "query" (N total)

1. **Story Title** (150 pts, 42 comments)
   By username · Jan 15, 2024
   🔗 https://example.com/article
   💬 https://news.ycombinator.com/item?id=12345

2. ...
```

For comments:
```
### HN Comments on "Story Title"

1. **username** (12 pts) · Jan 15, 2024
   > First ~200 chars of the comment text...
   💬 https://news.ycombinator.com/item?id=12345
```

## Error Handling

- **Empty results:** Tell the user no results were found. Suggest broadening the query or removing filters.
- **API error / timeout:** Retry once. If still failing, inform the user the HN search API may be temporarily down.
- **Rate limited (429):** Unlikely at 10k/hr, but if hit, wait 60 seconds and retry.
- **Malformed response:** Check the URL construction — common issues are unencoded special characters in the query.

## Examples

### Example 1: "What's HN saying about Rust?"

```
Fetch: https://hn.algolia.com/api/v1/search?query=rust+programming&tags=story&hitsPerPage=5&numericFilters=points>50
```

### Example 2: "Find Show HN posts about AI agents from the last month"

```
# Calculate timestamp for 30 days ago, then:
Fetch: https://hn.algolia.com/api/v1/search_by_date?query=ai+agents&tags=show_hn&numericFilters=created_at_i>TIMESTAMP&hitsPerPage=10
```

### Example 3: "What has pg posted recently?"

```
Fetch: https://hn.algolia.com/api/v1/search_by_date?tags=author_pg&hitsPerPage=10
```

## Data Source

[Algolia HN Search API](https://hn.algolia.com/api) — Free, no authentication required.
Indexes all public Hacker News content in near real-time.

Related Skills

trademark-search

176
from dylanfeltus/skills

Search the USPTO trademark database to check name availability and get registration details. Use when the user wants to check if a name is trademarked, research trademark availability, or look up registration status. No API key required.

visual-qa

176
from dylanfeltus/skills

Use vision models to self-review screenshots against design intent. Catches spacing issues, alignment problems, color inconsistencies, responsive bugs, and accessibility gaps. Use when reviewing designs, comparing implementations to mockups, or doing pre-ship QA.

recursive-improvement

176
from dylanfeltus/skills

A pattern for generating higher-quality output by iterating against explicit scoring criteria. Use for headlines, CTAs, landing page copy, social content, ad copy — anything where quality matters. Generate → Evaluate → Diagnose → Improve → Repeat.

producthunt

176
from dylanfeltus/skills

Search Product Hunt launches, products, and makers via the GraphQL V2 API. Use when the user asks about Product Hunt launches, trending products, or wants to research a product's reception. Requires a free developer token (~2 min setup).

privacy-cards

176
from dylanfeltus/skills

Create and manage Privacy.com virtual cards for agent spending. Use when an agent needs to make a purchase, buy a domain, pay for a service, or needs a disposable card with a spending limit. Requires a Privacy.com account and API key.

motion-design-patterns

176
from dylanfeltus/skills

Framer Motion (Motion) animation patterns for React — springs, staggers, layout animations, micro-interactions, scroll effects, and page transitions. Use when building or improving UI animations, adding polish, or making interfaces feel premium.

design-tokens

176
from dylanfeltus/skills

Generate type scales, color palettes, spacing systems, WCAG contrast checks, and dark mode derivations with math. Use when setting up a design system, creating tokens, or building a Tailwind/CSS theme. Outputs CSS custom properties, Tailwind config, or JSON tokens.

creative-direction

176
from dylanfeltus/skills

Image prompt templates, model selection guidance, and anti-generic patterns for generating visual assets. Use when the user needs AI-generated images for landing pages, marketing, or products. Covers hero images, feature illustrations, OG cards, icons, and backgrounds.

appstore-intel

176
from dylanfeltus/skills

Look up app details, ratings, reviews, and search the iOS App Store, Mac App Store, and Google Play. Use when the user asks about app ratings, wants to compare apps, or research a competitor's app store presence. No API key required.

search-first

144923
from affaan-m/everything-claude-code

Research-before-coding workflow. Search for existing tools, libraries, and patterns before writing custom code. Systematizes the "search for existing solutions before implementing" approach. Use when starting new features or adding functionality.

DevelopmentClaude

market-research

144923
from affaan-m/everything-claude-code

Conduct market research, competitive analysis, investor due diligence, and industry intelligence with source attribution and decision-oriented summaries. Use when the user wants market sizing, competitor comparisons, fund research, technology scans, or research that informs business decisions.

Business Intelligence & AnalyticsClaude

exa-search

144923
from affaan-m/everything-claude-code

Neural search via Exa MCP for web, code, and company research. Use when the user needs web search, code examples, company intel, people lookup, or AI-powered deep research with Exa's neural search engine.

ResearchClaude