Research Reporter
Overview
Automate the process of researching topics through web search and authoritative sources, then synthesize findings into well-structured reports saved to user-specified locations.
When to Use This Skill
Use this skill when the user requests:
- Research on a topic with results saved to a file
- Web searches combined with report generation
- Information compilation from multiple sources
- Trend analysis or competitive research saved as documents
- Any "search and save" or "research and write" workflow
Example trigger phrases:
- "Research TypeScript trends and save to a file"
- "Search for information about X and compile it into a report"
- "Find the latest news on Y and save the summary"
- "Investigate Z and create a document with your findings"
Research & Report Workflow
Follow this sequential workflow to execute research and reporting tasks effectively.
Step 1: Identify Research Parameters
Extract the following from the user request:
- Topic: What to research (e.g., "TypeScript trends 2025")
- Output Path: Where to save the report (e.g.,
/Users/user/Desktop/report.txt) - Scope: How comprehensive the research should be (default: 5-10 sources)
- Format: Report structure preference (default: structured markdown)
Step 2: Execute Web Search
Use the web_search tool from mcp_server_search to gather initial information.
Search strategy:
- Craft a comprehensive search query including:
- Main topic keywords
- Time qualifiers if relevant ("2024", "2025", "latest")
- Specificity terms ("trends", "new features", "best practices")
- Request 5-10 results for breadth
- Review search results for relevant sources
Code pattern:
import asyncio
from extensions.wrapped_mcp.mcp_server_search import web_search
async def main():
search_results = await web_search({
"query": "topic keywords with time qualifiers",
"num_results": 5
})
print(search_results)
asyncio.run(main())
Step 3: Fetch Authoritative Sources
Use the fetch tool from mcp_server_fetch to retrieve content from official or authoritative sources.
Fetching strategy:
- Identify 1-3 authoritative URLs (official sites, documentation, reputable publishers)
- Fetch each with appropriate
max_length(5000-10000 characters) - Handle errors gracefully with try-except blocks
Code pattern:
from extensions.wrapped_mcp.mcp_server_fetch import fetch
async def fetch_official_info():
try:
result = await fetch({
"url": "https://official-source.com",
"max_length": 10000
})
return result
except Exception as e:
print(f"Error fetching: {e}")
return None
Step 4: Synthesize Information
Combine search results and fetched content into a structured report.
Report structure:
# [Topic] Research Report
Date: [YYYY-MM-DD HH:MM:SS]
## 🔍 Web Search Results
[Search results with numbered sources, titles, descriptions, and URLs]
## 📚 Authoritative Sources
[Content from official sites and primary sources]
## 💡 Key Insights
[Synthesized summary of main findings, trends, or patterns]
Best practices:
- Include timestamps for time-sensitive research
- Organize sources clearly with titles and URLs
- Provide a synthesized summary beyond raw data
- Use clear section headers and formatting
Step 5: Save Report to File
Write the compiled report to the user-specified file path.
File operations:
from datetime import datetime
# Create report content
report = f"""# {topic} Research Report
Date: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
## 🔍 Web Search Results
{search_results}
## 📚 Authoritative Sources
{fetched_content}
## 💡 Key Insights
{synthesized_summary}
"""
# Save to file
with open(output_path, "w", encoding="utf-8") as f:
f.write(report)
print(f"✅ Report saved to {output_path}")
print(f"📊 File size: {len(report)} characters")
Step 6: Confirm Completion
Provide clear feedback about:
- Successful completion
- File location (full path)
- Number of sources consulted
- File size or content summary
Complete Implementation Script
The scripts/research_and_report.py script provides a complete, reusable implementation of this workflow that can be executed directly or customized as needed.
Usage:
python scripts/research_and_report.py
Then modify the script parameters:
topic: Research topicoutput_path: Where to save the reportnum_search_results: How many search results to gatherofficial_urls: List of authoritative sources to fetch
Error Handling
Handle common errors gracefully:
Network errors:
try:
result = await fetch({"url": url})
except Exception as e:
print(f"⚠️ Could not fetch {url}: {e}")
# Continue with available data
File path errors:
import os
# Ensure directory exists
os.makedirs(os.path.dirname(output_path), exist_ok=True)
# Write with proper encoding
with open(output_path, "w", encoding="utf-8") as f:
f.write(report)
Tips for Effective Research
- Search query optimization: Include time qualifiers, specific terms, and context
- Source diversity: Mix web search results with official documentation
- Content limits: Use appropriate
max_lengthvalues (5000-10000 for most pages) - Structured output: Use clear headers, emojis, and formatting for readability
- Synthesis: Don't just concatenate sources—provide insights and summaries
微信扫一扫