Web Researcher
Automate web research with parallel execution and knowledge integration.
name: web-researcher description: > Web research with OMC team parallel execution. Triggers on "웹에서 찾아", "최신 정보", "리서치해", "동향", "web research", "find online", "latest info", "look up", "search the web", "trend analysis" and similar. v3: Spawns research-agent in parallel for multi-angle search. Deduplicates via memory_similar. Builds knowledge graph connections. For comprehensive research use /deep-research instead.
Web Researcher — Automated Web Research & Knowledge Integration
Preamble
Before executing this skill:
-
Load context from memory:
memory_search(query: "{skill-relevant-query}", associative: true, limit: 5) memory_search(tag: "{skill-name}", limit: 3)Review returned memories for relevant past context, decisions, and patterns.
-
Check OMC state for active work:
state_get_status()If conflicting active tasks exist, warn the user before proceeding.
-
Detect current branch (for git-related skills):
git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "not-a-git-repo" -
Check proactive mode:
state_read("occ-proactive")If
"false": do NOT proactively suggest other OpenClaw-CC skills during this session. Only run skills the user explicitly invokes. -
Log skill activation:
memory_daily_log(type: "note", entry: "Skill activated: /{skill-name}")
Role
Perform systematic web research using multiple queries and angles. Collect, verify, structure, and persist findings in memory. Link new knowledge to existing related memories for a connected knowledge graph.
Workflow
Step 1 — Check Existing Knowledge
Memory Context Loading
Before starting work, load relevant context from the 3-layer memory system:
# Search for related past work
memory_search(query: "{task description}", associative: true, limit: 5)
# Search by relevant tags
memory_search(tag: "{relevant-tag}", limit: 3)
# Check for recent related daily logs
memory_search_date(start: "{7 days ago}", end: "{today}", category: "daily-logs", limit: 5)
Use retrieved context to:
- Avoid repeating past mistakes
- Build on previous decisions
- Maintain consistency with established patterns
- Reference related knowledge graph nodes
If critical related memories exist, summarize them before proceeding:
Found {N} related memories:
- {memory_1 title}: {brief relevance}
- {memory_2 title}: {brief relevance}
memory_search(query: "{research topic}")
memory_search(tag: "{topic tag}")
Identify what is already known to avoid redundant research.
Step 2 — Multi-Query Search Strategy
Generate at least 3 search queries from different angles:
web_search("{topic} overview 2026") → General landscape
web_search("{topic} latest developments") → Recent news
web_search("{topic} {specific_aspect}") → Targeted depth
For bilingual topics (Korean context):
web_search("{Korean query}") → Korean sources
web_search("{English query}") → English sources
Step 3 — Content Collection
Fetch top 3-5 URLs from search results:
web_fetch(url_1) → Extract key information
web_fetch(url_2) → Extract key information
web_fetch(url_3) → Extract key information
For each source, extract:
- Key facts and data points
- Dates and recency
- Source credibility assessment
- Relevant quotes or statistics
Step 4 — Synthesis & Structuring
Organize findings into a structured report:
## Research: {Topic}
### Key Findings
1. {Finding with source attribution}
2. {Finding with source attribution}
3. {Finding with source attribution}
### Data Points
| Metric | Value | Source | Date |
|--------|-------|--------|------|
| {metric} | {value} | {source} | {date} |
### Source Assessment
| Source | Credibility | Recency | Notes |
|--------|------------|---------|-------|
| {url} | High/Medium/Low | {date} | {notes} |
### Analysis
{Synthesized analysis combining multiple sources}
### Gaps & Uncertainties
- {What couldn't be confirmed}
- {Conflicting information found}
Step 5 — Memory Persistence
Memory Persistence
After completing the workflow, persist results to the 3-layer memory system:
Required Actions
-
Log completion to daily log:
memory_daily_log(type: "done", entry: "{skill-name}: {brief result summary}") -
Store significant findings (importance ≥ 6):
memory_store( category: "{appropriate category}", title: "{descriptive title}", content: "{structured result content}", tags: ["{skill-name}", "{project}", "{relevant-tags}"], importance: {6-10 based on significance} ) -
Link to related memories (if applicable):
memory_link(source: "{new_memory_id}", target: "{related_id}", relation: "{related|derived|refines}")
Category Routing
| Content Type | Category | Subcategory |
|---|---|---|
| Bug fix / debugging | knowledge | debugging |
| Code review results | projects | {project-name} |
| Design decisions | projects | {project-name} |
| Research findings | knowledge | {topic} |
| Release / deploy | projects | {project-name} |
| Person-related info | people | — |
| Task / action item | tasks | — |
memory_store:
category: "knowledge"
subcategory: "{topic-area}"
title: "Research: {Topic} ({date})"
content: {structured report}
tags: ["research", "{topic}", "{subtopic}"]
importance: 6
summary: "{one-line key finding}"
Step 6 — Knowledge Graph Integration
Link new findings to existing related memories:
memory_search(query: "{related topic}") → Find related memories
memory_link(source_id: new_id, target_id: related_id, relation: "related")
Step 7 — Report Delivery
## Research Complete: {Topic}
**Sources consulted**: {N} web pages across {M} domains
**Key finding**: {one-line summary}
**Stored as**: memory #{id}
**Linked to**: {N} related existing memories
{Full structured report}
Messenger Notification
Send notifications for significant events via messenger:
When to Notify
| Event | Platform | Priority |
|---|---|---|
| Task/pipeline completed | telegram | Normal |
| Verification failed | telegram | High |
| Long-running task done (10+ min) | telegram | Normal |
| Critical error or blocker | telegram | High |
| PR created / release shipped | all | Normal |
| Importance ≥ 8 memory created | telegram | Normal |
Notification Format
messenger_send(
platform: "telegram",
message: "[{skill-name}] {status_emoji} {brief description}\n\n{details if relevant}"
)
Status Emojis:
- Completed successfully: ✅
- Completed with warnings: ⚠️
- Failed / blocked: ❌
- Needs attention: 🔔
Do NOT Notify
- Routine memory operations
- Intermediate progress steps
- Read-only operations (search, list, status)
messenger_send(platform: "telegram",
message: "Research complete: {topic}. Key finding: {summary}")
Research Principles
- Multiple sources — Never rely on a single source. Cross-reference
- Recency matters — Prefer sources from the last 6 months
- Source attribution — Always cite where information came from
- Acknowledge uncertainty — Flag conflicting or unverifiable claims
- Build on existing — Check memory first, add incrementally
- Bilingual coverage — For Korean-context topics, search both Korean and English