mcpField
H
hackernews

hackernews

github.com/okou-ai生産性813.2k 回インストール1 週間前に更新
リポジトリ

hackernews について

hackernewsは、Firebase APIからHacker Newsのストーリー、コメント、求人、ユーザーデータを取得するスキルです。エンドポイント例と、コマンドラインでの確認・絞り込み方法を紹介します。

主な機能

  1. 01トップ、ベスト、新着ストーリーの取得
  2. 02Ask HN、Show HN、求人の取得
  3. 03アイテムとコメント詳細の取得
  4. 04ユーザープロフィールと投稿の参照
  5. 05変更されたアイテムとプロフィールの確認

活用シーン

  1. 01Hacker Newsの最新ストーリーの確認
  2. 02ストーリーのスコアとコメントの調査
  3. 03ユーザーの最近の投稿の検索
  4. 04変更されたコンテンツのポーリング

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/okou-ai/okou-skills --skill hackernews

インストール後、Claude Code で/hackernewsを入力して読み込まれたか確認します。

詳細

使い方

1. トップストーリーを取得する

現在のトップ500件のストーリーIDを取得します:

curl -s "https://hacker-news.firebaseio.com/v0/topstories.json" | jq '.[:10]'
2. ベストストーリーを取得する

時間を通じて最も多く投票されたストーリーを取得します:

curl -s "https://hacker-news.firebaseio.com/v0/beststories.json" | jq '.[:10]'
3. 新着ストーリーを取得する

最新のストーリーを取得します:

curl -s "https://hacker-news.firebaseio.com/v0/newstories.json" | jq '.[:10]'
4. Ask HN ストーリーを取得する

「Ask HN」の投稿を取得します:

curl -s "https://hacker-news.firebaseio.com/v0/askstories.json" | jq '.[:10]'
5. Show HN ストーリーを取得する

「Show HN」の投稿を取得します:

curl -s "https://hacker-news.firebaseio.com/v0/showstories.json" | jq '.[:10]'
6. 求人ストーリーを取得する

求人情報を取得します:

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

アイテムの詳細

7. ストーリー/コメント/求人の詳細を取得する

IDを指定して、任意のアイテムの詳細を取得します。<item-id> を実際のアイテムIDに置き換えてください:

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

レスポンスフィールド:

フィールド説明
idアイテムの一意のID
typestory、comment、job、poll、pollopt
by投稿者のユーザー名
timeUnix タイムスタンプ
titleストーリーのタイトル(ストーリーのみ)
urlストーリーのURL(外部リンクがある場合)
text本文(Ask HN、コメント)
scoreアップボート数
descendantsコメントの総数
kids子コメントIDの配列
8. 詳細付きで複数のストーリーを取得する

上位5件のストーリーの詳細を取得します。<item-id> を実際のアイテムIDに置き換えてください:

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. コメント付きでストーリーを取得する

ストーリーとそのトップレベルコメントを取得します。<story-id> を実際のストーリーIDに置き換えてください:

curl -s "https://hacker-news.firebaseio.com/v0/item/<story-id>.json" | jq '{title, score, descendants, kids}'

次に、kids 配列内の各コメントIDについて、<comment-id> を実際のコメントIDに置き換えてください:

curl -s "https://hacker-news.firebaseio.com/v0/item/<comment-id>.json" | jq '{by, text, score}'

ユーザーデータ

10. ユーザープロフィールを取得する

ユーザーの詳細を取得します。<username> を実際のユーザー名に置き換えてください:

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

レスポンスフィールド:

フィールド説明
idユーザー名
createdアカウント作成時のタイムスタンプ
karmaユーザーのカルマスコア
aboutユーザーの自己紹介(HTML)
submitted投稿したアイテムIDの配列
11. ユーザーの最近の投稿を取得する

ユーザーの最近の投稿を取得します。<username> を実際のユーザー名に置き換えてください:

curl -s "https://hacker-news.firebaseio.com/v0/user/<username>.json" | jq '.submitted[:5]'

リアルタイム更新

12. 最大アイテムIDを取得する

現在の最大アイテムIDを取得します(新しいアイテムのポーリングに便利です):

curl -s "https://hacker-news.firebaseio.com/v0/maxitem.json"
13. 変更されたアイテムとプロフィールを取得する

最近変更されたアイテムとプロフィールを取得します(リアルタイム更新用):

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

実用例

今日のトップ10をスコア付きで取得する
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
高スコアのストーリーを見つける(100点以上)
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
最新の AI/ML 関連ストーリーを取得する
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 エンドポイント一覧

エンドポイント説明
/v0/topstories.jsonトップ500件のストーリー
/v0/beststories.jsonベストストーリー
/v0/newstories.json最新500件のストーリー
/v0/askstories.jsonAsk HN ストーリー
/v0/showstories.jsonShow HN ストーリー
/v0/jobstories.json求人情報
/v0/item/{id}.jsonアイテムの詳細
/v0/user/{id}.jsonユーザープロフィール
/v0/maxitem.json現在の最大アイテムID
/v0/updates.json変更されたアイテム/プロフィール

ガイドライン

  1. レート制限の記載なし:ただし、節度を守り、大量取得時は遅延を設けてください
  2. フィルタリングには jq を使用する:JSON レスポンスをフィルタリングして、必要なデータを抽出してください
  3. 結果をキャッシュする:ストーリーは頻繁に変わらないため、可能な場合はキャッシュしてください
  4. リクエストを慎重にまとめる:アイテムごとに個別の API 呼び出しが必要です
  5. null を処理する:一部のフィールドは null または欠落している場合があります(例:Ask HN の url)
  6. Unix タイムスタンプ:時刻はすべて Unix タイムスタンプです。必要に応じて変換してください

コメント