{"id":48618234,"url":"https://github.com/hideack/ladder","last_synced_at":"2026-04-09T02:30:52.816Z","repository":{"id":344523205,"uuid":"1181488583","full_name":"hideack/ladder","owner":"hideack","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-29T12:25:13.000Z","size":181,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-29T12:42:51.221Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hideack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-14T07:49:57.000Z","updated_at":"2026-03-25T22:52:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hideack/ladder","commit_stats":null,"previous_names":["hideack/ladder"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hideack/ladder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hideack%2Fladder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hideack%2Fladder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hideack%2Fladder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hideack%2Fladder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hideack","download_url":"https://codeload.github.com/hideack/ladder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hideack%2Fladder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31582526,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"online","status_checked_at":"2026-04-09T02:00:06.848Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-09T02:30:52.132Z","updated_at":"2026-04-09T02:30:52.810Z","avatar_url":"https://github.com/hideack.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ladder\n\nCLI で動く RSS/Atom フィードリーダー。[fastladder](https://github.com/fastladder/fastladder) へのオマージュ。\n\n- ターミナル上の 3 ペイン TUI で記事を読む\n- SQLite にローカル保存（`~/.config/ladder/ladder.db`）\n- MCP サーバーモードで AI エージェントからも参照可能\n\n## 必要環境\n\n- Node.js 20 以上\n\n## インストール\n\n```bash\ngit clone https://github.com/your/ladder.git\ncd ladder\nnpm install\nnpm run build          # esbuild でバンドル → bin/ladder.js 生成\n```\n\n開発時は `npx tsx bin/ladder.ts` で直接実行できます。\n\n## 使い方\n\n### フィードを追加する\n\n```bash\nladder add https://example.com/feed.xml\n```\n\n### 記事を取得する\n\n```bash\nladder fetch              # 全フィードを取得\nladder fetch --feed 3     # フィード ID 3 のみ取得\n```\n\ncron での定期実行例（30 分ごと）:\n\n```bash\n*/30 * * * * /usr/local/bin/ladder fetch \u003e\u003e ~/.config/ladder/fetch.log 2\u003e\u00261\n```\n\n### TUI を起動する\n\n```bash\nladder ui\n```\n\n### OPML\n\n```bash\nladder opml import subscriptions.opml   # インポート\nladder opml export                      # stdout へエクスポート\nladder opml export out.opml             # ファイルへエクスポート\n```\n\n### カテゴリ管理\n\n```bash\nladder category add \"Tech\"\nladder category add \"Tech/Frontend\"     # スラッシュでネスト（1 段階）\nladder category list\nladder category rename \"Tech\" \"Technology\"\n```\n\n### フィード操作\n\n```bash\nladder feed move 3 \"Tech\"              # フィード ID 3 をカテゴリへ移動\nladder feed move 3 --uncategorize      # カテゴリ解除\n```\n\n### Podcast エピソードをダウンロードする\n\n```bash\nladder podcast download --days 7       # 直近 7 日分をダウンロード\nladder podcast download --count 10     # 最新 10 話をダウンロード\nladder podcast download --feed 3       # フィード ID 3 のみ\nladder podcast download --feed 3 --days 30 --dir ~/Downloads/podcasts\n```\n\n保存先のデフォルトは `~/.config/ladder/podcasts/`。既にダウンロード済みのファイルはスキップされます（冪等）。\n\nTUI から個別にダウンロードするには、エントリーを選択して `Shift+D` を押します。`enclosure_url` が未取得の場合はフィードを自動再フェッチしてからダウンロードします。\n\n### 古い記事を削除する\n\n```bash\nladder purge              # 既読記事を 90 日以上前のものを削除（デフォルト）\nladder purge --days 30\n```\n\n## TUI キーバインド\n\n### 全ペイン共通\n\n| キー | 動作 |\n|---|---|\n| `j` / `k` | フォーカス依存: Feeds ペイン→フィード移動 / それ以外→エントリー移動（自動既読） |\n| `J` / `K` | 同上・ページ単位移動 |\n| `n` | フィードカーソルを次へ（どのペインからでも） |\n| `p` | ピン留めトグル |\n| `Space` | 未読記事を順に読む（スクロール → 次エントリー → 次フィード） |\n| `b` | 逆方向ページ送り |\n| `v` | 選択中の記事をブラウザで開く |\n| `e` | 記事全文をサイトからフェッチして表示（再押しで元に戻す） |\n| `E` | AI 要約 / 日本語翻訳（再押しで元に戻す） |\n| `Shift+D` | Podcast MP3 をダウンロード（`enclosure_url` 未取得時は自動フェッチ） |\n| `/` | タイトル・本文を全文検索 |\n| `r` | 選択フィードをリロード |\n| `R` | 全フィードをリロード |\n| `Tab` / `Shift+Tab` | ペインのフォーカスを切り替え |\n| `?` | ヘルプを表示 |\n| `q` | 終了 |\n\n### Feeds ペイン\n\n| キー | 動作 |\n|---|---|\n| `↓` / `↑` | フィード・カテゴリを移動 |\n| `Enter` | フィード選択 / カテゴリ折りたたみ |\n| `s` | ソート切替（未読数順 ↔ 最新記事順） |\n| `H` | フィルター切替（active → unread → all） |\n| `a` | カテゴリ割り当て |\n| `C` | カテゴリマネージャーを開く |\n| `d` | フィード購読解除（確認あり） |\n\n### Entries ペイン\n\n| キー | 動作 |\n|---|---|\n| `↓` / `↑` | 記事を移動（自動既読） |\n| `u` | 未読 / 既読トグル |\n| `m` | フィード全件を既読にする |\n| `v` | ブラウザで開く |\n\n## MCP サーバー\n\nClaude Desktop や Claude Code から ladder のフィード・記事を参照できます。\n\n```bash\nladder mcp   # stdio transport で起動\n```\n\n設定例（`~/.config/claude/claude_desktop_config.json`）:\n\n```json\n{\n  \"mcpServers\": {\n    \"ladder\": {\n      \"command\": \"ladder\",\n      \"args\": [\"mcp\"]\n    }\n  }\n}\n```\n\n利用可能なツール:\n\n| ツール | 概要 |\n|---|---|\n| `list_feeds` | 購読中フィード一覧 |\n| `list_entries` | 記事一覧（フィード・未読・ピン絞り込み対応） |\n| `get_entry` | 記事詳細（本文を含む） |\n| `search_entries` | 全文検索（SQLite FTS5） |\n| `get_pinned_entries` | ピン済み記事一覧 |\n| `mark_as_read` | 記事 / フィードを既読にする |\n| `fetch_now` | 即時クロール |\n\n## 技術スタック\n\n| 項目 | 採用 |\n|---|---|\n| 言語 | TypeScript (Node.js 20+) |\n| TUI | neo-blessed |\n| DB | SQLite (better-sqlite3、WAL モード、FTS5) |\n| CLI | commander |\n| RSS パーサー | rss-parser |\n| MCP | @modelcontextprotocol/sdk |\n\n## ライセンス\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhideack%2Fladder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhideack%2Fladder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhideack%2Fladder/lists"}