pp-hackernews
ターミナルからHacker Newsを操作できるスキルで、ローカルSQLiteストア・スナップショット履歴・agent向け出力に対応した唯一無二のHNツールです。「check hacker news」「search hn」「what is hn saying about」「diff the hn front page」「hn top stories」「hn who is hiring」などのフレーズで起動します。
description の原文を見る
Hacker News from your terminal — with a local SQLite store, snapshot history, and agent-native output no other HN tool has. Trigger phrases: `check hacker news`, `search hn`, `what is hn saying about`, `diff the hn front page`, `pulse on hn`, `look up hn user`, `hn who is hiring`, `hn top stories`, `use hackernews`, `run hackernews`.
SKILL.md 本文
Hacker News — Printing Press CLI
前提条件: CLI をインストール
このスキルは hackernews-pp-cli バイナリを駆動します。このスキルのコマンドを実行する前に、CLI がインストールされていることを確認する必要があります。 インストールされていない場合は、まず以下をインストールしてください:
- Printing Press インストーラーを使用してインストール:
npx -y @mvanhorn/printing-press install hackernews --cli-only - 確認:
hackernews-pp-cli --version $GOPATH/bin(または$HOME/go/bin) が$PATHに含まれていることを確認してください。
npx インストールが失敗した場合 (Node がない、オフラインなど)、直接 Go インストールにフォールバックしてください (Go 1.26.3 以降が必要):
go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/hackernews/cmd/hackernews-pp-cli@latest
インストール後に --version で "command not found" が表示される場合、インストール手順がバイナリを $PATH に置いていません。確認に成功するまで、スキルコマンドを実行しないでください。
このCLIをいつ使用するか
hackernews-pp-cli にアクセスして、HN シグナルをプログラムで監視・分析する必要があるとき: エージェント駆動の日次差分、トピックパルス、採用スレッド集約、投稿前の再投稿チェック、コンテキストウィンドウ向けの構造化スレッドダイジェスト。ローカルストアは後続クエリを安価でオフラインに優しいものにします。
このCLIをいつ使用しないか
このCLIを、作成、更新、削除、公開、コメント、投票、招待、注文、メッセージ送信、予約、購入、またはリモートステータスを変更するリクエストには使用しないでください。このプリント CLI は、検査、エクスポート、同期、および分析のための読み取り専用コマンドのみを公開しています。
ユニークな機能
これらの機能は、このAPI向けの他のツールでは利用できません。
複合するローカルスナップショット
-
since— フロントページ上で何が上昇、下降、出現、またはドロップオフしたかを、前回の同期以来確認してください。エージェントが毎日起動して、昨日以来 HN で何がシフトしたかを知る必要があるとき、500項目を毎回再フェッチすることなく使用します。
hackernews-pp-cli since --json -
controversial— 最近のウィンドウ上で最高のコメント対ポイント比で順位付けされたストーリー — 全員が議論しているディスカッション。単なる人気度ではなく、高い関与度対承認度のストーリーが欲しいとき — ヒートされた議論シグナル。
hackernews-pp-cli controversial --window 7d --json -
velocity— ローカルスナップショットの時系列でストーリーのランク軌跡を表示 — 上昇、プラトー、または下降。エージェントが「このストーリーはまだ勢いを増しているのか、それとも既にピークを迎えているのか」と尋ねるとき — 唯一有意な答えはスナップショットから来ます。
hackernews-pp-cli velocity 47998158 --json -
sync— トップ/新規/ベスト/表示/質問/求人リストと最近変更された項目をローカル SQLite にプルし、オフライン使用とスナップショット履歴を実現します。これを1日1回 (またはエージェント向けに1時間ごと) 実行してください — これは since/velocity/controversial/users-stats を不可能から1つの SQL クエリに変える基盤です。
hackernews-pp-cli sync --resources updates --agent
Algolia レバレッジ
-
pulse— 過去 N 日間のトピックに対する1日あたりのメンション、平均スコア、コメントボリュームを表示します。「このトピックは熱くなっているのか、冷めているのか」という質問があるとき、「今の最高のストーリーは何か」ではなく使用します。
hackernews-pp-cli pulse rust --days 7 --agent -
repost— この URL は以前に投稿されましたか? スコア、コメント、日付を含むすべての以前の投稿をリストアップします。Show HN を投稿する前 — 重複 URL はすぐに炎上します。以前の投稿がどのように実行されたかを最初に知りたいです。
hackernews-pp-cli repost https://example.com/article -
search local— 同期したすべてのストーリーとコメントに対するオフライン全文検索 — コーパスは使用に伴い成長します。長い尾を持つトピックを調査したり、前四半期の研究を再生したりするとき — Algolia はそれをランクダウンまたはドロップするかもしれません。ローカルコーパスはそうしません。
hackernews-pp-cli search local "vector database" --limit 20 --json
採用スレッドマイニング
-
hiring stats— 最後の N 月次「Who-is-Hiring」スレッドを集約: トップ言語、リモート比率、トップ企業、場所分布。四半期または季節の採用トレンドが必要なとき — 言語人気度、リモート共有シフト、ロケーション密度 — 今月のリストだけではなく。
hackernews-pp-cli hiring stats --months 3 --agent -
hiring companies— 最後の N 月次採用スレッドの M に投稿した企業、最初の表示、最後の表示、月投稿数の合計。ソーシング またはトレンド追跡するとき — どの企業が持続的なハイアラーとワンオフポスター — HNHIRING.com をスクレイピングせずに。
hackernews-pp-cli hiring companies --months 6 --min-posts 3 --agent
クロスエンティティローカルクエリ
-
users stats— ユーザーの投稿全体の中央値および p90 スコア、トラクションバケット、時刻別スコア分布。自分の作品を投稿する前にトラクションパターンを学ぶため、またはポスターの履歴を見積もるとき。
hackernews-pp-cli users stats pg --json
コマンドリファレンス
items — ID で任意の HN アイテム (ストーリー、コメント、求人、ポール) をフェッチ
hackernews-pp-cli items <itemId>— 特定のストーリー、コメント、求人、またはポールの詳細を取得
maxitem — 現在の最大アイテム ID
hackernews-pp-cli maxitem— Hacker News によって現在割り当てられている最大アイテム ID を返す
stories — Hacker News のトップ、新規、ベストストーリーを閲覧
hackernews-pp-cli stories ask— 最新の Ask HN 投稿を取得hackernews-pp-cli stories best— Hacker News で最も投票されたストーリーを取得hackernews-pp-cli stories job— 最新の Hacker News 求人を取得hackernews-pp-cli stories new— Hacker News の最新ストーリーを取得hackernews-pp-cli stories show— 最新の Show HN 投稿を取得hackernews-pp-cli stories top— Hacker News の現在のトップストーリーを取得
updates — 最近変更されたアイテムとプロフィール
hackernews-pp-cli updates— 最近変更されたアイテムとユーザープロフィール
users — Hacker News ユーザープロフィールを検索
hackernews-pp-cli users <userId>— カルマと投稿履歴を含むユーザープロフィールを取得
手書きコマンド
hackernews-pp-cli sync— トップ/新規/ベスト/表示/質問/求人リストと最近のアイテムをローカル SQLite ストアにプルhackernews-pp-cli search <query>— Algolia を使用して Hacker News のストーリーとコメントをフルテキスト検索 (オフライン FTS の場合は 'search local' を使用)hackernews-pp-cli hiring— 「Ask HN: Who is hiring」スレッドをマイニング (フィルター、統計、企業)hackernews-pp-cli freelance— 「Ask HN: Freelancer? Seeking freelancer?」スレッドをマイニング (フィルター)hackernews-pp-cli since— フロントページで最後の同期以来何が変わったかを表示 (追加、削除、移動されたストーリー)hackernews-pp-cli pulse <topic>— HN がトピックについて何を言っているかを表示 — 1日あたりのメンション、スコア、コメントボリュームhackernews-pp-cli controversial— 最高のコメント対ポイント比を持つストーリーを検索 (分極的なディスカッション)hackernews-pp-cli repost <url>— この URL は HN に投稿されましたか? スコアと日付を含む以前の投稿をリストhackernews-pp-cli velocity <id>— ローカルスナップショット全体でのストーリーのランク軌跡を表示hackernews-pp-cli doctor— 自己診断を実行: API リーチ可能性、ストア書き込み可能性、設定健全性
新鮮さコントラクト
このプリント CLI は、登録されたストアバック読み取りコマンドパスに対してのみ制限された新鮮さを所有しています。--data-source auto モードでは、これらのパスは sync_state をチェックして、ローカルデータを読み取る前に制限されたリフレッシュを実行できます。--data-source local は更新しません。--data-source live は API を読み取り、ローカルストアを変更しません。HACKERNEWS_NO_AUTO_REFRESH=1 を設定して、ソース選択を変更せずに新鮮さフックをスキップします。
カバーされるパス:
hackernews-pp-cli storieshackernews-pp-cli stories askhackernews-pp-cli stories besthackernews-pp-cli stories jobhackernews-pp-cli stories newhackernews-pp-cli stories showhackernews-pp-cli stories tophackernews-pp-cli updates
JSON 出力がプロヴェナンスエンベロープを生成したとき、新鮮さメタデータは meta.freshness に表示されます。カバーされたコマンドパスの現在のキャッシュ新鮮さとして扱います。完全な履歴バックフィルまたは API 固有のエンリッチメントの保証ではありません。
正しいコマンドを見つける
何をしたいかは知っているが、どのコマンドがそれを実行するかは知らないとき、CLI に直接尋ねてください:
hackernews-pp-cli which "<capability in your own words>"
which は自然言語の機能クエリを、この CLI のキュレーションされた機能インデックスから最適にマッチするコマンドに解決します。終了コード 0 は少なくとも1つのマッチを意味します。終了コード 2 は確信のあるマッチがないことを意味します — --help にフォールバックするか、より狭いクエリを使用してください。
レシピ
エージェント向け日次フロントページ差分
hackernews-pp-cli sync && hackernews-pp-cli since --json --select added,removed,moved
同期してから差分。--select は、ペイロードを変更デルタのみに絞ります — エージェントはメガバイトではなくキロバイトを処理します。
選択されたフィールドでのトピック監視
hackernews-pp-cli pulse openai --days 7 --agent --select buckets.day,buckets.hits,buckets.avg_score
1日あたりのメンション、平均スコア、コメントボリュームの分析 — --select を使用して、深くネストされた応答からトレンド軸のみを抽出します。
投稿前の重複チェック
hackernews-pp-cli repost https://example.com/article --json
スコア、コメント、日付を含むその URL の以前のすべての投稿をリスト — 「これは投稿されたことがあるか」という質問に1ラウンドトリップで答えます。
Who's Hiring をリモート Go ロール用にフィルター
hackernews-pp-cli hiring filter "(remote|REMOTE).*\\bGo\\b" --json
最新の月次スレッドに対して正規表現。ダブルエスケープ \b は実際の正規表現単語境界です。--json は1つの大きなマッチダンプではなく構造化された行を提供します。
四半期採用トレンド
hackernews-pp-cli hiring companies --months 6 --min-posts 3 --agent
最後の6ヶ月の月次スレッドの3+に投稿した企業 — 最初の表示、最後の表示、合計月。ローカルストアなしではできないクロスマンスクエリ。
認証設定
認証は必要ありません。
hackernews-pp-cli doctor を実行して、セットアップを確認してください。
エージェントモード
任意のコマンドに --agent を追加してください。以下に展開: --json --compact --no-input --no-color --yes.
-
パイプ可能 — stdout に JSON、stderr にエラー
-
フィルタ可能 —
--selectがフィールドのサブセットを保持します。ドット区切りパスはネストされた構造に下降します。配列は要素ごとにトラバース。冗長 API でのコンテキストサイズを小さく保つことが重要:hackernews-pp-cli items 47998158 --agent --select id,name,status -
プレビュー可能 —
--dry-runは送信なしでリクエストを表示 -
オフラインフレンドリー — sync/search コマンドは利用可能なときにローカル SQLite ストアを使用
-
非対話型 — プロンプトなし、すべての入力はフラグ
-
読み取り専用 — このCLI を作成、更新、削除、公開、コメント、投票、招待、注文、送信、またはその他の変更リクエストに使用しないでください
応答エンベロープ
ローカルストアまたは API から読み取るコマンドは、出力をプロヴェナンスエンベロープでラップします:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
データの .results を解析し、.meta.source を解析してライブかローカルかを知ります。人間が読める N results (live) サマリーは、stdout がターミナルの場合にのみ stderr に出力されます — パイプ/エージェントコンシューマーは stdout で純粋な JSON を取得します。
エージェントフィードバック
あなた (またはエージェント) がこの CLI について何か問題に気付いたとき、それを記録してください:
hackernews-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
hackernews-pp-cli feedback --stdin < notes.txt
hackernews-pp-cli feedback list --json --limit 10
エントリは ~/.hackernews-pp-cli/feedback.jsonl にローカルに保存されます。HACKERNEWS_FEEDBACK_ENDPOINT が設定されており、かつ --send が渡されるか HACKERNEWS_FEEDBACK_AUTO_SEND=true の場合を除き、POST されることはありません。デフォルトの動作はローカルのみです。
バグレポートではなく、サプライズ を書きます。短い、具体的、1行: それが複合する部分です。
出力配信
すべてのコマンドが --deliver <sink> を受け入れます。出力は stdout の追加または代わりに名前付きシンクに送信されるため、エージェントはハンドパイプなしでコマンド結果をルートできます。3つのシンクがサポートされています:
| シンク | 効果 |
|---|---|
stdout | デフォルト。stdout のみに書き込み |
file:<path> | <path> に原子的に出力を書き込み (tmp + 名前変更) |
webhook:<url> | URL に出力本文を POST (application/json または --compact の場合 application/x-ndjson) |
未知のスキームはサポートされているセットを示す構造化エラーで拒否されます。Webhook 失敗は 0 以外を返し、URL + HTTP ステータスを stderr に記録します。
命名プロフィール
プロフィールは、フラグ値のセーブされたセットで、起動全体で再利用されます。スケジュールされたエージェントが同じ設定を持つ同じコマンドを毎回実行するとき使用します - HeyGen の「ビーコン」パターン。
hackernews-pp-cli profile save briefing --json
hackernews-pp-cli --profile briefing items 47998158
hackernews-pp-cli profile list --json
hackernews-pp-cli profile show briefing
hackernews-pp-cli profile delete briefing --yes
明示的なフラグは常にプロフィール値に勝ります。プロフィール値はデフォルトに勝ります。agent-context はすべての利用可能なプロフィールを available_profiles 下にリストします。内省エージェントは実行時にそれらを発見します。
終了コード
| コード | 意味 |
|---|---|
| 0 | 成功 |
| 2 | 使用法エラー (不正な引数) |
| 3 | リソースが見つかりません |
| 5 | API エラー (アップストリーム問題) |
| 7 | レート制限 (待機と再試行) |
| 10 | 設定エラー |
引数解析
$ARGUMENTS を解析します:
- 空、
help、または--help→hackernews-pp-cli --help出力を表示 installで始まる →mcpで終わる → MCP インストール。それ以外 → 上の前提条件を参照- それ以外 → 直接使用 (CLI コマンドを
--agentで実行)
MCP サーバーインストール
- MCP サーバーをインストール:
go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/hackernews/cmd/hackernews-pp-mcp@latest - Claude Code に登録:
claude mcp add hackernews-pp-mcp -- hackernews-pp-mcp - 確認:
claude mcp list
直接使用
- インストール確認:
which hackernews-pp-cli見つからない場合、インストールを提供してください (このスキルの上の前提条件を参照)。 - ユーザークエリを、上のユニークな機能とコマンドリファレンスから最適なコマンドにマッチさせます。
--agentフラグで実行:hackernews-pp-cli <command> [subcommand] [args] --agent- 曖昧な場合、サブコマンドヘルプにドリルダウン:
hackernews-pp-cli <command> --help.
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- mvanhorn
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/mvanhorn/printing-press-library / ライセンス: Apache-2.0
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。