Web Researcher

Automate web research with parallel execution and knowledge integration.

<!-- AUTO-GENERATED from SKILL.md.tmpl — do not edit directly. Run: node scripts/gen-skill-docs.mjs -->

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:

  1. 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.

  2. Check OMC state for active work:

    state_get_status()
    

    If conflicting active tasks exist, warn the user before proceeding.

  3. Detect current branch (for git-related skills):

    git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "not-a-git-repo"
    
  4. 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.

  5. 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

  1. Log completion to daily log:

    memory_daily_log(type: "done", entry: "{skill-name}: {brief result summary}")
    
  2. 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}
    )
    
  3. Link to related memories (if applicable):

    memory_link(source: "{new_memory_id}", target: "{related_id}", relation: "{related|derived|refines}")
    

Category Routing

Content TypeCategorySubcategory
Bug fix / debuggingknowledgedebugging
Code review resultsprojects{project-name}
Design decisionsprojects{project-name}
Research findingsknowledge{topic}
Release / deployprojects{project-name}
Person-related infopeople
Task / action itemtasks
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

EventPlatformPriority
Task/pipeline completedtelegramNormal
Verification failedtelegramHigh
Long-running task done (10+ min)telegramNormal
Critical error or blockertelegramHigh
PR created / release shippedallNormal
Importance ≥ 8 memory createdtelegramNormal

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

  1. Multiple sources — Never rely on a single source. Cross-reference
  2. Recency matters — Prefer sources from the last 6 months
  3. Source attribution — Always cite where information came from
  4. Acknowledge uncertainty — Flag conflicting or unverifiable claims
  5. Build on existing — Check memory first, add incrementally
  6. Bilingual coverage — For Korean-context topics, search both Korean and English