[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M74EVC2X3FXK1GCPWR2P7VB9":3,"skill-same:01M74EVC2X3FXK1GCPWR2P7VB9":56},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":36,"commitSha":37,"skillDirectory":38,"forksCount":13,"repositoryHtmlUrl":39,"repositoryHomepageUrl":6,"ownerHtmlUrl":40,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":41,"install":42,"resources":55},"01M74EVC2X3FXK1GCPWR2P7VB9","blogwatcher",null,"Monitor blogs and RSS\u002FAtom feeds via blogwatcher-cli tool.","LyrikNilpferd71\u002FHermes-Backup","LyrikNilpferd71","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F187173780?v=4","01M727S8GPB77P0S9ECRRMZT58","01M727S8HF63B0MD53F496MK1V",0,"MIT","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-05-15T14-00-39+0200\u002Fskills\u002Fresearch\u002Fblogwatcher\u002FSKILL.md",[],[],"2026-11-11 15:11:14",false,"---\nname: blogwatcher\ndescription: \"Monitor blogs and RSS\u002FAtom feeds via blogwatcher-cli tool.\"\nversion: 2.0.0\nauthor: JulienTant (fork of Hyaxia\u002Fblogwatcher)\nlicense: MIT\nmetadata:\n  hermes:\n    tags: [RSS, Blogs, Feed-Reader, Monitoring]\n    homepage: https:\u002F\u002Fgithub.com\u002FJulienTant\u002Fblogwatcher-cli\nprerequisites:\n  commands: [blogwatcher-cli]\n---\n\n# Blogwatcher\n\nTrack blog and RSS\u002FAtom feed updates with the `blogwatcher-cli` tool. Supports automatic feed discovery, HTML scraping fallback, OPML import, and read\u002Funread article management.\n\n## Installation\n\nPick one method:\n\n- **Go:** `go install github.com\u002FJulienTant\u002Fblogwatcher-cli\u002Fcmd\u002Fblogwatcher-cli@latest`\n- **Docker:** `docker run --rm -v blogwatcher-cli:\u002Fdata ghcr.io\u002Fjulientant\u002Fblogwatcher-cli`\n- **Binary (Linux amd64):** `curl -sL https:\u002F\u002Fgithub.com\u002FJulienTant\u002Fblogwatcher-cli\u002Freleases\u002Flatest\u002Fdownload\u002Fblogwatcher-cli_linux_amd64.tar.gz | tar xz -C \u002Fusr\u002Flocal\u002Fbin blogwatcher-cli`\n- **Binary (Linux arm64):** `curl -sL https:\u002F\u002Fgithub.com\u002FJulienTant\u002Fblogwatcher-cli\u002Freleases\u002Flatest\u002Fdownload\u002Fblogwatcher-cli_linux_arm64.tar.gz | tar xz -C \u002Fusr\u002Flocal\u002Fbin blogwatcher-cli`\n- **Binary (macOS Apple Silicon):** `curl -sL https:\u002F\u002Fgithub.com\u002FJulienTant\u002Fblogwatcher-cli\u002Freleases\u002Flatest\u002Fdownload\u002Fblogwatcher-cli_darwin_arm64.tar.gz | tar xz -C \u002Fusr\u002Flocal\u002Fbin blogwatcher-cli`\n- **Binary (macOS Intel):** `curl -sL https:\u002F\u002Fgithub.com\u002FJulienTant\u002Fblogwatcher-cli\u002Freleases\u002Flatest\u002Fdownload\u002Fblogwatcher-cli_darwin_amd64.tar.gz | tar xz -C \u002Fusr\u002Flocal\u002Fbin blogwatcher-cli`\n\nAll releases: https:\u002F\u002Fgithub.com\u002FJulienTant\u002Fblogwatcher-cli\u002Freleases\n\n### Docker with persistent storage\n\nBy default the database lives at `~\u002F.blogwatcher-cli\u002Fblogwatcher-cli.db`. In Docker this is lost on container restart. Use `BLOGWATCHER_DB` or a volume mount to persist it:\n\n```bash\n# Named volume (simplest)\ndocker run --rm -v blogwatcher-cli:\u002Fdata -e BLOGWATCHER_DB=\u002Fdata\u002Fblogwatcher-cli.db ghcr.io\u002Fjulientant\u002Fblogwatcher-cli scan\n\n# Host bind mount\ndocker run --rm -v \u002Fpath\u002Fon\u002Fhost:\u002Fdata -e BLOGWATCHER_DB=\u002Fdata\u002Fblogwatcher-cli.db ghcr.io\u002Fjulientant\u002Fblogwatcher-cli scan\n```\n\n### Migrating from the original blogwatcher\n\nIf upgrading from `Hyaxia\u002Fblogwatcher`, move your database:\n\n```bash\nmv ~\u002F.blogwatcher\u002Fblogwatcher.db ~\u002F.blogwatcher-cli\u002Fblogwatcher-cli.db\n```\n\nThe binary name changed from `blogwatcher` to `blogwatcher-cli`.\n\n## Common Commands\n\n### Managing blogs\n\n- Add a blog: `blogwatcher-cli add \"My Blog\" https:\u002F\u002Fexample.com`\n- Add with explicit feed: `blogwatcher-cli add \"My Blog\" https:\u002F\u002Fexample.com --feed-url https:\u002F\u002Fexample.com\u002Ffeed.xml`\n- Add with HTML scraping: `blogwatcher-cli add \"My Blog\" https:\u002F\u002Fexample.com --scrape-selector \"article h2 a\"`\n- List tracked blogs: `blogwatcher-cli blogs`\n- Remove a blog: `blogwatcher-cli remove \"My Blog\" --yes`\n- Import from OPML: `blogwatcher-cli import subscriptions.opml`\n\n### Scanning and reading\n\n- Scan all blogs: `blogwatcher-cli scan`\n- Scan one blog: `blogwatcher-cli scan \"My Blog\"`\n- List unread articles: `blogwatcher-cli articles`\n- List all articles: `blogwatcher-cli articles --all`\n- Filter by blog: `blogwatcher-cli articles --blog \"My Blog\"`\n- Filter by category: `blogwatcher-cli articles --category \"Engineering\"`\n- Mark article read: `blogwatcher-cli read 1`\n- Mark article unread: `blogwatcher-cli unread 1`\n- Mark all read: `blogwatcher-cli read-all`\n- Mark all read for a blog: `blogwatcher-cli read-all --blog \"My Blog\" --yes`\n\n## Environment Variables\n\nAll flags can be set via environment variables with the `BLOGWATCHER_` prefix:\n\n| Variable | Description |\n|---|---|\n| `BLOGWATCHER_DB` | Path to SQLite database file |\n| `BLOGWATCHER_WORKERS` | Number of concurrent scan workers (default: 8) |\n| `BLOGWATCHER_SILENT` | Only output \"scan done\" when scanning |\n| `BLOGWATCHER_YES` | Skip confirmation prompts |\n| `BLOGWATCHER_CATEGORY` | Default filter for articles by category |\n\n## Example Output\n\n```\n$ blogwatcher-cli blogs\nTracked blogs (1):\n\n  xkcd\n    URL: https:\u002F\u002Fxkcd.com\n    Feed: https:\u002F\u002Fxkcd.com\u002Fatom.xml\n    Last scanned: 2026-04-03 10:30\n```\n\n```\n$ blogwatcher-cli scan\nScanning 1 blog(s)...\n\n  xkcd\n    Source: RSS | Found: 4 | New: 4\n\nFound 4 new article(s) total!\n```\n\n```\n$ blogwatcher-cli articles\nUnread articles (2):\n\n  [1] [new] Barrel - Part 13\n       Blog: xkcd\n       URL: https:\u002F\u002Fxkcd.com\u002F3095\u002F\n       Published: 2026-04-02\n       Categories: Comics, Science\n\n  [2] [new] Volcano Fact\n       Blog: xkcd\n       URL: https:\u002F\u002Fxkcd.com\u002F3094\u002F\n       Published: 2026-04-01\n       Categories: Comics\n```\n\n## Notes\n\n- Auto-discovers RSS\u002FAtom feeds from blog homepages when no `--feed-url` is provided.\n- Falls back to HTML scraping if RSS fails and `--scrape-selector` is configured.\n- Categories from RSS\u002FAtom feeds are stored and can be used to filter articles.\n- Import blogs in bulk from OPML files exported by Feedly, Inoreader, NewsBlur, etc.\n- Database stored at `~\u002F.blogwatcher-cli\u002Fblogwatcher-cli.db` by default (override with `--db` or `BLOGWATCHER_DB`).\n- Use `blogwatcher-cli \u003Ccommand> --help` to discover all flags and options.\n","# Blogwatcher\n\nTrack blog and RSS\u002FAtom feed updates with the `blogwatcher-cli` tool. Supports automatic feed discovery, HTML scraping fallback, OPML import, and read\u002Funread article management.\n\n## Installation\n\nPick one method:\n\n- **Go:** `go install github.com\u002FJulienTant\u002Fblogwatcher-cli\u002Fcmd\u002Fblogwatcher-cli@latest`\n- **Docker:** `docker run --rm -v blogwatcher-cli:\u002Fdata ghcr.io\u002Fjulientant\u002Fblogwatcher-cli`\n- **Binary (Linux amd64):** `curl -sL https:\u002F\u002Fgithub.com\u002FJulienTant\u002Fblogwatcher-cli\u002Freleases\u002Flatest\u002Fdownload\u002Fblogwatcher-cli_linux_amd64.tar.gz | tar xz -C \u002Fusr\u002Flocal\u002Fbin blogwatcher-cli`\n- **Binary (Linux arm64):** `curl -sL https:\u002F\u002Fgithub.com\u002FJulienTant\u002Fblogwatcher-cli\u002Freleases\u002Flatest\u002Fdownload\u002Fblogwatcher-cli_linux_arm64.tar.gz | tar xz -C \u002Fusr\u002Flocal\u002Fbin blogwatcher-cli`\n- **Binary (macOS Apple Silicon):** `curl -sL https:\u002F\u002Fgithub.com\u002FJulienTant\u002Fblogwatcher-cli\u002Freleases\u002Flatest\u002Fdownload\u002Fblogwatcher-cli_darwin_arm64.tar.gz | tar xz -C \u002Fusr\u002Flocal\u002Fbin blogwatcher-cli`\n- **Binary (macOS Intel):** `curl -sL https:\u002F\u002Fgithub.com\u002FJulienTant\u002Fblogwatcher-cli\u002Freleases\u002Flatest\u002Fdownload\u002Fblogwatcher-cli_darwin_amd64.tar.gz | tar xz -C \u002Fusr\u002Flocal\u002Fbin blogwatcher-cli`\n\nAll releases: https:\u002F\u002Fgithub.com\u002FJulienTant\u002Fblogwatcher-cli\u002Freleases\n\n### Docker with persistent storage\n\nBy default the database lives at `~\u002F.blogwatcher-cli\u002Fblogwatcher-cli.db`. In Docker this is lost on container restart. Use `BLOGWATCHER_DB` or a volume mount to persist it:\n\n```bash\n# Named volume (simplest)\ndocker run --rm -v blogwatcher-cli:\u002Fdata -e BLOGWATCHER_DB=\u002Fdata\u002Fblogwatcher-cli.db ghcr.io\u002Fjulientant\u002Fblogwatcher-cli scan\n\n# Host bind mount\ndocker run --rm -v \u002Fpath\u002Fon\u002Fhost:\u002Fdata -e BLOGWATCHER_DB=\u002Fdata\u002Fblogwatcher-cli.db ghcr.io\u002Fjulientant\u002Fblogwatcher-cli scan\n```\n\n### Migrating from the original blogwatcher\n\nIf upgrading from `Hyaxia\u002Fblogwatcher`, move your database:\n\n```bash\nmv ~\u002F.blogwatcher\u002Fblogwatcher.db ~\u002F.blogwatcher-cli\u002Fblogwatcher-cli.db\n```\n\nThe binary name changed from `blogwatcher` to `blogwatcher-cli`.\n\n## Common Commands\n\n### Managing blogs\n\n- Add a blog: `blogwatcher-cli add \"My Blog\" https:\u002F\u002Fexample.com`\n- Add with explicit feed: `blogwatcher-cli add \"My Blog\" https:\u002F\u002Fexample.com --feed-url https:\u002F\u002Fexample.com\u002Ffeed.xml`\n- Add with HTML scraping: `blogwatcher-cli add \"My Blog\" https:\u002F\u002Fexample.com --scrape-selector \"article h2 a\"`\n- List tracked blogs: `blogwatcher-cli blogs`\n- Remove a blog: `blogwatcher-cli remove \"My Blog\" --yes`\n- Import from OPML: `blogwatcher-cli import subscriptions.opml`\n\n### Scanning and reading\n\n- Scan all blogs: `blogwatcher-cli scan`\n- Scan one blog: `blogwatcher-cli scan \"My Blog\"`\n- List unread articles: `blogwatcher-cli articles`\n- List all articles: `blogwatcher-cli articles --all`\n- Filter by blog: `blogwatcher-cli articles --blog \"My Blog\"`\n- Filter by category: `blogwatcher-cli articles --category \"Engineering\"`\n- Mark article read: `blogwatcher-cli read 1`\n- Mark article unread: `blogwatcher-cli unread 1`\n- Mark all read: `blogwatcher-cli read-all`\n- Mark all read for a blog: `blogwatcher-cli read-all --blog \"My Blog\" --yes`\n\n## Environment Variables\n\nAll flags can be set via environment variables with the `BLOGWATCHER_` prefix:\n\n| Variable | Description |\n|---|---|\n| `BLOGWATCHER_DB` | Path to SQLite database file |\n| `BLOGWATCHER_WORKERS` | Number of concurrent scan workers (default: 8) |\n| `BLOGWATCHER_SILENT` | Only output \"scan done\" when scanning |\n| `BLOGWATCHER_YES` | Skip confirmation prompts |\n| `BLOGWATCHER_CATEGORY` | Default filter for articles by category |\n\n## Example Output\n\n```\n$ blogwatcher-cli blogs\nTracked blogs (1):\n\n  xkcd\n    URL: https:\u002F\u002Fxkcd.com\n    Feed: https:\u002F\u002Fxkcd.com\u002Fatom.xml\n    Last scanned: 2026-04-03 10:30\n```\n\n```\n$ blogwatcher-cli scan\nScanning 1 blog(s)...\n\n  xkcd\n    Source: RSS | Found: 4 | New: 4\n\nFound 4 new article(s) total!\n```\n\n```\n$ blogwatcher-cli articles\nUnread articles (2):\n\n  [1] [new] Barrel - Part 13\n       Blog: xkcd\n       URL: https:\u002F\u002Fxkcd.com\u002F3095\u002F\n       Published: 2026-04-02\n       Categories: Comics, Science\n\n  [2] [new] Volcano Fact\n       Blog: xkcd\n       URL: https:\u002F\u002Fxkcd.com\u002F3094\u002F\n       Published: 2026-04-01\n       Categories: Comics\n```\n\n## Notes\n\n- Auto-discovers RSS\u002FAtom feeds from blog homepages when no `--feed-url` is provided.\n- Falls back to HTML scraping if RSS fails and `--scrape-selector` is configured.\n- Categories from RSS\u002FAtom feeds are stored and can be used to filter articles.\n- Import blogs in bulk from OPML files exported by Feedly, Inoreader, NewsBlur, etc.\n- Database stored at `~\u002F.blogwatcher-cli\u002Fblogwatcher-cli.db` by default (override with `--db` or `BLOGWATCHER_DB`).\n- Use `blogwatcher-cli \u003Ccommand> --help` to discover all flags and options.\n",{"name":5,"author":23,"license":14,"version":24,"metadata":25,"description":7,"prerequisites":33},"JulienTant (fork of Hyaxia\u002Fblogwatcher)","2.0.0",{"hermes":26},{"tags":27,"homepage":32},[28,29,30,31],"RSS","Blogs","Feed-Reader","Monitoring","https:\u002F\u002Fgithub.com\u002FJulienTant\u002Fblogwatcher-cli",{"commands":34},[35],"blogwatcher-cli","main","404fd33aabef3b6bc1cc913117ba2160ade62625","snapshots\u002F2026-05-15T14-00-39+0200\u002Fskills\u002Fresearch\u002Fblogwatcher","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71","2026-11-08 20:00:57",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add LyrikNilpferd71\u002FHermes-Backup --skill blogwatcher",{"tool":48,"command":49},"bunx","bunx skills add LyrikNilpferd71\u002FHermes-Backup --skill blogwatcher",{"tool":51,"command":52},"pnpm","pnpm dlx skills add LyrikNilpferd71\u002FHermes-Backup --skill blogwatcher","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-05-15T14-00-39+0200\u002Fskills\u002Fresearch\u002Fblogwatcher\u002FSKILL.md",true,[],[57,65,72,79,86,93],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":64},"01M76BBCCNA7WQ82Q8QNZH8PBK","writing-plans","Write implementation plans: bite-sized tasks, paths, code.","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fwriting-plans\u002FSKILL.md",[],[],"2026-11-12 13:55:43",{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":64},"01M76BB8YS41CA3NKW0YMSSB88","systematic-debugging","4-phase root cause debugging: understand bugs before fixing.","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fsystematic-debugging\u002FSKILL.md",[],[],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":64},"01M76BB680FPNT998E1GM2QW10","subagent-driven-development","Execute plans via delegate_task subagents (2-stage review).","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fsubagent-driven-development\u002FSKILL.md",[],[],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":64},"01M76BB3C4ZB9S4RWPMM8MX0YB","plan","Write a markdown plan to .hermes\u002Fplans\u002F; no execution.","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fplan\u002FSKILL.md",[],[],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":64},"01M76BB0NK28KMP51YDB5R3EXA","hermes-agent-skill-authoring","Author in-repo SKILL.md files: frontmatter and structure.","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fhermes-agent-skill-authoring\u002FSKILL.md",[],[],{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":64},"01M76BAYV58H0CKNSTZE3ZH4NY","debugging-hermes-tui-commands","Debug Hermes TUI slash commands: Python, gateway, Ink UI.","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fdebugging-hermes-tui-commands\u002FSKILL.md",[],[]]