$npx -y skills add AlexAI-MCP/hermes-CCC --skill blogwatcherMonitor and summarize blog posts, RSS feeds, and web content for research and staying current with topics.
| 1 | # Blogwatcher |
| 2 | |
| 3 | ## Purpose |
| 4 | |
| 5 | - Use this skill to monitor RSS feeds and blog-style content for ongoing research. |
| 6 | - It is useful for staying current on AI, ML, engineering, and product ecosystems. |
| 7 | - Prefer RSS when you want structured updates without scraping full websites every time. |
| 8 | |
| 9 | ## Install |
| 10 | |
| 11 | ```bash |
| 12 | pip install feedparser |
| 13 | ``` |
| 14 | |
| 15 | ## Parse a Feed |
| 16 | |
| 17 | ```python |
| 18 | import feedparser |
| 19 | |
| 20 | feed = feedparser.parse("https://example.com/rss") |
| 21 | print(feed.feed.title) |
| 22 | print(feed.entries[0].title) |
| 23 | ``` |
| 24 | |
| 25 | - `feedparser` handles RSS and Atom feeds. |
| 26 | - The parsed object exposes feed metadata and a list of entries. |
| 27 | |
| 28 | ## Access Entry Fields |
| 29 | |
| 30 | ```python |
| 31 | entry = feed.entries[0] |
| 32 | print(entry.title) |
| 33 | print(entry.summary) |
| 34 | print(entry.link) |
| 35 | print(entry.published) |
| 36 | ``` |
| 37 | |
| 38 | - The most commonly useful fields are `.title`, `.summary`, `.link`, and `.published`. |
| 39 | - Not every feed includes every field, so code defensively. |
| 40 | |
| 41 | ## Batch Fetch Multiple Feeds |
| 42 | |
| 43 | ```python |
| 44 | import feedparser |
| 45 | |
| 46 | feeds = [ |
| 47 | "https://example.com/rss", |
| 48 | "https://another.example/feed.xml", |
| 49 | ] |
| 50 | |
| 51 | all_entries = [] |
| 52 | for url in feeds: |
| 53 | parsed = feedparser.parse(url) |
| 54 | for entry in parsed.entries: |
| 55 | all_entries.append( |
| 56 | { |
| 57 | "source": parsed.feed.get("title", url), |
| 58 | "title": entry.get("title", ""), |
| 59 | "summary": entry.get("summary", ""), |
| 60 | "link": entry.get("link", ""), |
| 61 | "published": entry.get("published", ""), |
| 62 | } |
| 63 | ) |
| 64 | ``` |
| 65 | |
| 66 | - Batch fetches are the standard pattern for topic monitoring. |
| 67 | - Normalize fields early so downstream summarization stays simple. |
| 68 | |
| 69 | ## Filter by Date or Keyword |
| 70 | |
| 71 | - Filter by date when you only care about the most recent week or month. |
| 72 | - Filter by keyword when watching narrow topics like `agents`, `evals`, or `multimodal`. |
| 73 | - Keep the filter stage simple and deterministic. |
| 74 | |
| 75 | Example: |
| 76 | |
| 77 | ```python |
| 78 | keywords = ["llm", "agents", "retrieval"] |
| 79 | filtered = [ |
| 80 | e for e in all_entries |
| 81 | if any(k.lower() in (e["title"] + " " + e["summary"]).lower() for k in keywords) |
| 82 | ] |
| 83 | ``` |
| 84 | |
| 85 | ## Summarize With Claude |
| 86 | |
| 87 | - Extract the title and summary from each entry. |
| 88 | - Feed the collected set into Claude and ask for synthesis by theme, signal, and novelty. |
| 89 | - This works better than summarizing one feed item at a time when you are tracking a field. |
| 90 | |
| 91 | Example prompt shape: |
| 92 | |
| 93 | ```text |
| 94 | Summarize these AI research updates. Group them into model releases, tooling, benchmarks, and policy. Highlight what appears genuinely new. |
| 95 | ``` |
| 96 | |
| 97 | - Keep the raw title, summary, link, and publication date in the source material. |
| 98 | - Ask for a synthesis, not a rewrite. |
| 99 | |
| 100 | ## Save Results to a File |
| 101 | |
| 102 | ```python |
| 103 | import json |
| 104 | |
| 105 | with open("feed_digest.json", "w", encoding="utf-8") as f: |
| 106 | json.dump(filtered, f, ensure_ascii=False, indent=2) |
| 107 | ``` |
| 108 | |
| 109 | - Save structured digests for later comparison. |
| 110 | - JSON is the easiest format for later reprocessing. |
| 111 | - Markdown is convenient if the output is intended for direct reading. |
| 112 | |
| 113 | ## Common AI and ML Blogs To Monitor |
| 114 | |
| 115 | - arXiv Sanity |
| 116 | - Hugging Face Blog |
| 117 | - OpenAI |
| 118 | - Anthropic |
| 119 | - engineering blogs from inference providers, vector DB vendors, and cloud platforms |
| 120 | |
| 121 | - Some sources are better via RSS. |
| 122 | - Others may require periodic scraping or newsletter ingestion. |
| 123 | |
| 124 | ## Combine With `/arxiv` |
| 125 | |
| 126 | - Use this skill for blog and announcement monitoring. |
| 127 | - Combine it with `/arxiv` for paper discovery and academic monitoring. |
| 128 | - The combination gives better coverage across research papers, product launches, and engineering writeups. |
| 129 | |
| 130 | ## Good Monitoring Workflow |
| 131 | |
| 132 | 1. Define a small set of feeds by topic. |
| 133 | 2. Fetch them on a schedule. |
| 134 | 3. Normalize fields into one list. |
| 135 | 4. Filter by keyword and freshness. |
| 136 | 5. Ask Claude to synthesize the daily or weekly signal. |
| 137 | 6. Save the resulting digest for later reference. |
| 138 | |
| 139 | ## Practical Notes |
| 140 | |
| 141 | - RSS coverage varies widely by site. |
| 142 | - Feed summaries are often enough for triage but not enough for deep analysis. |
| 143 | - Follow links for the few items that survive filtering. |
| 144 | - Save source links alongside the synthesis so claims remain traceable. |
| 145 | |
| 146 | ## Summary |
| 147 | |
| 148 | - Install RSS parsing support with `pip install feedparser`. |
| 149 | - Parse feeds with `feedparser.parse("https://example.com/rss")`. |
| 150 | - Access fields like `feed.entries[0].title`, `.summary`, `.link`, and `.published`. |
| 151 | - Batch fetch multiple feeds, then filter by date or keyword. |
| 152 | - Summarize title and summary pairs with Claude for cross-source synthesis. |
| 153 | - Save digests to a file and combine this workflow with `/arxiv` for broader research monitoring. |