一键导入
topic-patrol
Proactively explore the web for topics matching the user's interests and share findings conversationally. Designed for cron execution with Flash model.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Proactively explore the web for topics matching the user's interests and share findings conversationally. Designed for cron execution with Flash model.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction.
Translate a web page while preserving its original DOM structure, CSS, and images. Generates a self-contained bilingual preview HTML with toggle controls. Use this skill whenever the user shares a URL and asks for translation, translated preview, bilingual view, or when the channel topic instructs to use translate-preview. Do NOT write your own translation scripts — always use this skill's reference files.
Job scheduling. Manage recurring tasks using MCP tools.
Generate a prioritized daily briefing with calendar, email, tasks, and yesterday's activity. Designed for cron execution. Trigger with "morning briefing", "daily brief", "start my day".
Self-management via geminiclaw_admin MCP tool. Config, skills, upgrade, sessions.
Read before planning, declare scope before implementing. Prohibit out-of-scope changes and full rewrites.
基于 SOC 职业分类
| name | topic-patrol |
| description | Proactively explore the web for topics matching the user's interests and share findings conversationally. Designed for cron execution with Flash model. |
| enabled | true |
Explore the web based on the user's interests and share discoveries like a curious friend — not a news bot.
1. Read → USER.md (Interests + Work Context + sources) + prior state
2. Explore → Route to the right source tool per topic
3. Filter → "Would I tell a friend about this?"
4. Share → Conversational message to home channel (or stay silent)
5. Record → Update state + findings log
gemini-2.5-flash)When triggered manually, reply directly in the conversation instead of posting to home channel.
USER.md:
sources: line (see Source Routing below).patrol/state.json (default: { "lastRun": null, "rotationIndex": 0 } if missing)patrol/findings.md (default: empty if missing) — for dedupdeferred from a previous quiet-hours run. If still relevant, share them first before exploring new topics.Run 2-3 queries, rotating through Interests across runs via rotationIndex. Wrap around to 0 when it exceeds the number of Interest topics.
Each Interest topic in USER.md may have an optional sources: line. Route queries to the appropriate tool based on source type:
| Source prefix | Tool | Example query |
|---|---|---|
| (no sources specified) | web_search + web_fetch | {interest} latest news 2026 |
HN | web_search with site:news.ycombinator.com | site:news.ycombinator.com {interest} |
Reddit/{subreddit} | web_search with site:reddit.com/r/{subreddit} | site:reddit.com/r/LocalLLaMA {interest} |
github:{owner}/{repo} | github skill tools (releases, issues) | Check latest releases / recent issues |
@{handle} | Twitter/X MCP tools if available, else web_search | from:{handle} {interest} or web_search fallback |
rss:{url} | RSS MCP tools if available, else skip | Fetch and filter feed entries |
URL (e.g. https://blog.nodejs.org) | web_fetch directly | Read the page and look for new content |
Fallback rule: if the specified source tool is not available, fall back to web_search with a site: filter or topic keywords. Never error on a missing tool — degrade gracefully.
| Category | What to search | Example |
|---|---|---|
| Interest-driven | A topic from the Interests section, using its sources | site:news.ycombinator.com AI agents |
| Work-adjacent | Something near the user's current work | {technology} best practices tips |
| Serendipity (occasional) | Cross-topic or tangential discovery | {work_context_tool} alternative approaches |
For promising results, read the actual page with web_fetch to get substance beyond snippets. Do not curate based on search snippets alone.
Not every run needs a Serendipity query. Rotate it in roughly 1 in 3 runs.
For each finding, consider:
patrol/findings.mdUse your judgment. If nothing clears the bar, share nothing — silence is better than noise.
Check the current time via geminiclaw_status. Respect quiet hours (23:00–08:00) — defer delivery until morning.
Post to home channel via geminiclaw_post_message. Limit to 1-2 topics per message.
Tone: natural, conversational. Explain WHY it's interesting, not just WHAT it is. Connect it to the user's current work. End with a question or action prompt.
Good:
Hey — spotted something relevant to your {work_context} work.
{1-2 sentence summary of the finding and why it matters}.
Source: {URL}
Want me to dig into this further?
Bad (do NOT do this):
📰 Topic Patrol Report
1. {topic}: {summary}
2. {topic}: {summary}
3. {topic}: {summary}
Append to patrol/findings.md (whether shared or not):
## YYYY-MM-DD
- {topic}: {one-line summary} — shared / skipped ({reason}) / deferred (quiet hours)
Prune entries older than 14 days to keep the file small. Use geminiclaw_status for the current date.
Update patrol/state.json:
{ "lastRun": "2026-03-10T14:00:00+09:00", "rotationIndex": 2 }
If nothing was found, still update lastRun and increment rotationIndex.
Schedule: { "type": "every", "intervalMin": 360 }
Timezone: [user's timezone from config]
Prompt: "Run the topic-patrol skill."
Model: flash
| Condition | Behavior |
|---|---|
| USER.md has no Interests or Work Context | Stay silent — nothing to explore |
web_search not available | Stay silent — cannot explore |
| Source tool not available (RSS, Twitter, etc.) | Fall back to web_search with site: filter |
patrol/state.json missing | Start fresh with defaults |
patrol/findings.md missing | Treat as empty (no dedup history) |
| Quiet hours (23:00–08:00) | Skip delivery, record findings for next run |
patrol/findings.md