hn-search について
hn-searchは、Algolia HN Search APIを通じてHacker Newsのストーリー、コメント、ユーザー投稿を検索・監視するスキルです。関連度順と日付順の検索に対応し、内容種別、反応、期間で絞り込めます。
主な機能
- 01ストーリー、コメント、ユーザー投稿の検索
- 02関連度順または日付順での検索
- 03内容種別と反応による絞り込み
- 04トピックの最近の言及を検索
- 05特定ストーリーのコメント取得
活用シーン
- 01トピックに関するHacker Newsの議論調査
- 02製品や企業への最近の言及の追跡
- 03Show HNやAsk HN投稿の検索
- 04特定ストーリーのコメント確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dylanfeltus/ skills --skill hn-searchインストール後、Claude Code で/hn-searchを入力して読み込まれたか確認します。
同梱ファイルREADME.md
詳細
Hacker News の検索
Algolia HN Search API を使って、Hacker News のストーリー、コメント、ユーザーを検索、モニタリングします。API キーは不要です。
使用する場面
- ユーザーが特定のトピックに関する Hacker News の議論について尋ねたとき
- ユーザーが企業、製品、技術についての HN の投稿を探したいとき
- ユーザーが何かについての HN での言及をモニタリングしたいとき
- ユーザーが「HN で今話題なのは何ですか」や「X について HN はどう考えていますか」と尋ねたとき
- ユーザーが Show HN/Ask HN/Launch HN の投稿を探したいとき
API の概要
ベース URL: https://hn.algolia.com/api/v1
検索エンドポイントは 2 種類あります。
/search— 関連度順(特定のトピックを探すのに最適)/search_by_date— 日付順(モニタリングや最近のアクティビティの確認に最適)
レート制限: 10,000 リクエスト/時間(十分な上限があり、認証不要)
検索方法
ステップ 1:URL を作成する
https://hn.algolia.com/api/v1/search?query=QUERY&tags=TAG&hitsPerPage=N&numericFilters=FILTERS
ステップ 2:web_fetch で取得する
web_fetch を使って API を呼び出します。レスポンスは JSON です。
パラメーター
| パラメーター | 説明 | 例 |
|---|---|---|
query | 検索語(URL エンコード済み) | query=openai+gpt |
tags | 種類で絞り込む(下記参照) | tags=story |
hitsPerPage | 1 ページあたりの結果数(最大 1000) | hitsPerPage=20 |
page | ページ番号(0 始まり) | page=0 |
numericFilters | 数値フィルター(下記参照) | numericFilters=points>100 |
タグフィルター
tags を使ってコンテンツの種類を絞り込みます。
| タグ | 説明 |
|---|---|
story | ストーリーのみ |
comment | コメントのみ |
show_hn | Show HN の投稿 |
ask_hn | Ask HN の投稿 |
front_page | 現在フロントページに掲載されている投稿 |
author_USERNAME | 特定のユーザーによる投稿 |
story_ID | 特定のストーリーへのコメント |
タグの組み合わせには、カンマ(AND)またはカンマを含む括弧(OR)を使います。
tags=story,show_hn→ Show HN のストーリー(AND)tags=(story,comment)→ ストーリーまたはコメント
数値フィルター
| フィルター | 説明 |
|---|---|
points>N | 最小ポイント数/アップボート数 |
num_comments>N | 最小コメント数 |
created_at_i>TIMESTAMP | Unix タイムスタンプより後 |
created_at_i<TIMESTAMP | Unix タイムスタンプより前 |
カンマで組み合わせます:numericFilters=points>100,num_comments>50
日付範囲
期間を指定して検索するには、created_at_i で Unix タイムスタンプを使います。
まず現在の Unix タイムスタンプを取得し(例:exec: date +%s)、次に以下の値を差し引きます。
| 期間 | 現在時刻から差し引く値 |
|---|---|
| 過去 24 時間 | - 86400 |
| 過去 7 日間 | - 604800 |
| 過去 30 日間 | - 2592000 |
例:現在時刻が 1705312200 の場合、過去 7 日間は numericFilters=created_at_i>1704707400 です。
レスポンス形式
各ヒットには以下が含まれます。
{
"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"]
}
コメントの場合、ヒットにはさらに以下が含まれます。
{
"comment_text": "The comment body (HTML)",
"story_id": 12345,
"story_title": "Parent Story Title",
"story_url": "https://example.com",
"parent_id": 12344
}
レスポンスのラッパーには以下が含まれます。
{
"hits": [...],
"nbHits": 1000,
"page": 0,
"nbPages": 50,
"hitsPerPage": 20
}
HN リンクの作成
- ストーリー:
https://news.ycombinator.com/item?id={objectID} - コメント:
https://news.ycombinator.com/item?id={objectID} - ユーザー:
https://news.ycombinator.com/user?id={author}
手順
トピックに関するストーリーを検索する
- クエリを URL エンコードします
- 次を取得します:
https://hn.algolia.com/api/v1/search?query=YOUR_QUERY&tags=story&hitsPerPage=10 - JSON レスポンスを解析します
- 各ヒットについて、タイトル、ポイント数、num_comments、作成者、日付、HN リンク、元の URL を提示します
最近の議論や話題の議論を探す
- 対象期間の Unix タイムスタンプを計算します(例:7 日前)
- 次を取得します:
https://hn.algolia.com/api/v1/search?query=YOUR_QUERY&tags=story&numericFilters=points>50,created_at_i>TIMESTAMP&hitsPerPage=10 - 「話題」の順にするには、結果をポイント数またはコメント数で並べ替えます
ストーリーへのコメントを取得する
- 検索結果からストーリーの objectID を取得します
- 次を取得します:
https://hn.algolia.com/api/v1/search?tags=comment,story_STORYID&hitsPerPage=20 - 各コメントについて、comment_text、作成者、ポイント数を提示します
トピックをモニタリングする(最近の言及を表示)
/searchの代わりに/search_by_dateを使用します- 次を取得します:
https://hn.algolia.com/api/v1/search_by_date?query=YOUR_QUERY&tags=(story,comment)&hitsPerPage=20 - 結果は新しい順です。「HN で X に関する新しい情報は?」といった質問に役立ちます
ユーザーの投稿を検索する
- 次を取得します:
https://hn.algolia.com/api/v1/search?tags=author_USERNAME,story&hitsPerPage=20 - コメントの場合:
tags=author_USERNAME,comment
出力形式
結果を見やすいリストで提示します:
### 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. ...
コメントの場合:
### 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
エラー処理
- 結果が空の場合: 結果が見つからなかったことをユーザーに伝えます。検索語句を広げるか、フィルターを削除するよう提案します。
- API エラー/タイムアウト: 1 回再試行します。それでも失敗する場合は、HN 検索 API が一時的に停止している可能性があることをユーザーに伝えます。
- レート制限(429): 1 時間あたり 10,000 件のため可能性は低いですが、制限された場合は 60 秒待ってから再試行します。
- 不正な形式のレスポンス: URL の組み立てを確認します。よくある原因は、検索語句内の特殊文字がエンコードされていないことです。
例
例 1:「Rust について HN では何と言っていますか?」
Fetch: https://hn.algolia.com/api/v1/search?query=rust+programming&tags=story&hitsPerPage=5&numericFilters=points>50
例 2:「過去 1 か月の AI エージェントに関する Show HN の投稿を探す」
# 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
例 3:「pg は最近何を投稿しましたか?」
Fetch: https://hn.algolia.com/api/v1/search_by_date?tags=author_pg&hitsPerPage=10
データソース
Algolia HN Search API — 無料で、認証は不要です。 公開されている Hacker News のコンテンツをほぼリアルタイムでインデックス化します。