Agent Skillssediman-agent/OpenSkynet › search_orchestration

search_orchestration

GitHub

指导Agent使用SearchSDK执行复杂的多步搜索研究任务,支持并行检索、确定性过滤及结构化数据提取,适用于大规模数据采集与跨源交叉验证场景。

skills/search_orchestration/SKILL.md sediman-agent/OpenSkynet

Trigger Scenarios

需要跨多个来源进行深度研究 执行并行搜索以提高效率 从搜索结果中提取结构化数据

Install

npx skills add sediman-agent/OpenSkynet --skill search_orchestration -g -y
More Options

Use without installing

npx skills use sediman-agent/OpenSkynet@search_orchestration

指定 Agent (Claude Code)

npx skills add sediman-agent/OpenSkynet --skill search_orchestration -a claude-code -g -y

安装 repo 全部 skill

npx skills add sediman-agent/OpenSkynet --all -g -y

预览 repo 内 skill

npx skills add sediman-agent/OpenSkynet --list

SKILL.md

Frontmatter
{
    "name": "search_orchestration",
    "version": 1,
    "description": "Expert at using SearchSDK for complex research tasks"
}

You are an expert at using the SearchSDK to orchestrate complex, multi-step search research tasks.

When to Use SearchSDK

Use search_orchestrate for:

  • Multi-source research (across vendors, years, domains)
  • Parallel search execution (instead of serial web_search calls)
  • Structured data extraction (CVE details, pricing, product features)
  • Cross-referencing information across sources
  • Large-scale data collection (10+ queries)
  • Deterministic filtering (exact domain/regex patterns)
  • State persistence across turns (save intermediate results)

Use web_search for:

  • Simple single queries ("what is X", "latest version of Y")
  • Quick fact lookups
  • Casual browsing tasks

SearchSDK API

Initialization

sdk = SearchSDK()

Subsystems

1. Retrieve - Fetch Search Results

Single query:

hits = await sdk.retrieve.web("python async", provider="google", limit=10)

Parallel multi-query:

queries = ["python async", "golang routines", "rust async"]
all_hits = await sdk.retrieve.web_many(queries, concurrency=3)
# Returns: list of lists, one per query

2. Filter - Deterministic Filtering

Remove duplicates:

unique = sdk.filter.dedupe(hits, key="url")

Filter by domain:

# Only official sources
official = sdk.filter.by_domain(hits, include=["google.com", "chromium.org"])

# Exclude low-quality sources
clean = sdk.filter.by_domain(hits, exclude=["ads.com", "spam.com"])

Filter by regex:

# Only CVEs
cves = sdk.filter.by_regex(hits, field="snippet", pattern=r"CVE-\d{4}-\d+")

Filter by keywords:

# Include security-related
security = sdk.filter.by_keyword(hits, words=["security", "vulnerability"], mode="include")

# Exclude ads
clean = sdk.filter.by_keyword(hits, words=["sponsored", "ad"], mode="exclude")

3. Extract - Structured Data Extraction

Extract from multiple hits:

results = await sdk.extract.extract_many(
    hits,
    schema={"cve": str, "fix_version": str, "severity": str},
    instruction="Extract CVE information"
)

Extract from single hit:

result = await sdk.extract.extract_one(
    hit,
    schema={"title": str, "author": str, "date": str}
)

4. State - Persist Intermediate Results

Save state:

sdk.state.save("cve_results", results)

Load state:

previous = sdk.state.load("cve_results")

List all states:

states = sdk.state.list()

Common Patterns

Pattern 1: Parallel Search + Filter + Extract

# Research CVEs across multiple years
queries = [
    f'site:chromereleases.googleblog.com "CVE-{{year}}"'
    for year in [2023, 2024, 2025]
]
hits = await sdk.retrieve.web_many(queries, concurrency=4)
filtered = sdk.filter.by_domain(hits, exclude=["mitre.org", "nvd.nist.gov"])
results = await sdk.extract.extract_many(
    filtered,
    schema={"cve": str, "fix_version": str, "severity": str, "summary": str}
)
return results

Pattern 2: Cross-Reference Multiple Sources

# Cross-reference pricing across vendors
queries = ["product X price", "product X cost", "product X pricing"]
hits = await sdk.retrieve.web_many(queries, concurrency=3)
all_prices = await sdk.extract.extract_many(
    hits,
    schema={"vendor": str, "price": str, "currency": str},
    instruction="Extract product pricing information"
)
sdk.state.save("price_comparison", all_prices)
return all_prices

Pattern 3: State Persistence for Multi-Turn Tasks

# Turn 1: Collect data
queries = ["topic A", "topic B", "topic C"]
hits = await sdk.retrieve.web_many(queries, concurrency=3)
sdk.state.save("research_hits", hits)

# Turn 2: Process saved data
saved_hits = sdk.state.load("research_hits")
results = await sdk.extract.extract_many(
    saved_hits,
    schema={"topic": str, "summary": str}
)
return results

Best Practices

  1. Always use parallel search for multiple queries - it's much faster
  2. Filter deterministically before extraction - saves tokens and LLM calls
  3. Use state persistence for multi-turn tasks to survive context compression
  4. Include error handling - wrap extraction in try/except when processing many hits
  5. Limit output size - truncate large results before returning

Example Tasks

CVE Research:

queries = [f'site:chromereleases.googleblog.com "CVE-{{y}}"' for y in [2023, 2024, 2025]]
hits = await sdk.retrieve.web_many(queries, concurrency=4)
filtered = sdk.filter.by_domain(hits, exclude=["mitre.org", "nvd.nist.gov"])
results = await sdk.extract.extract_many(
    filtered,
    schema={"cve": str, "fix_version": str, "severity": str}
)
return results

Competitor Analysis:

vendors = ["competitor A", "competitor B", "competitor C"]
queries = [f"{{v}} pricing features" for v in vendors]
hits = await sdk.retrieve.web_many(queries, concurrency=3)
results = await sdk.extract.extract_many(
    hits,
    schema={"vendor": str, "pricing_model": str, "starting_price": str}
)
return results

Topic Survey:

queries = ["python async tutorial", "golang async guide", "rust async book"]
hits = await sdk.retrieve.web_many(queries, concurrency=3)
tutorials = sdk.filter.by_regex(hits, field="title", pattern="(tutorial|guide)")
results = await sdk.extract.extract_many(
    tutorials[:5],  # Limit to top 5
    schema={"language": str, "topic": str, "url": str}
)
return results

Remember: SearchSDK is for complex, multi-step research. For simple queries, just use web_search directly.

Version History

  • c9d8953 Current 2026-07-05 20:04

Same Skill Collection

skills/anthropics_skills/algorithmic-art/SKILL.md
skills/anthropics_skills/brand-guidelines/SKILL.md
skills/anthropics_skills/canvas-design/SKILL.md
skills/anthropics_skills/doc-coauthoring/SKILL.md
skills/anthropics_skills/frontend-design/SKILL.md
skills/anthropics_skills/internal-comms/SKILL.md
skills/anthropics_skills/mcp-builder/SKILL.md
skills/anthropics_skills/pdf/SKILL.md
skills/anthropics_skills/skill-creator/SKILL.md
skills/anthropics_skills/slack-gif-creator/SKILL.md
skills/anthropics_skills/theme-factory/SKILL.md
skills/anthropics_skills/web-artifacts-builder/SKILL.md
skills/anthropics_skills/webapp-testing/SKILL.md
skills/browser-use_browser-use/browser-use/SKILL.md
skills/browser-use_browser-use/remote-browser/SKILL.md
skills/browser-use_video-use/manim-video/SKILL.md
skills/browser-use_video-use/video-use/SKILL.md
skills/cloudflare_skills/agents-sdk/SKILL.md
skills/cloudflare_skills/cloudflare/SKILL.md
skills/cloudflare_skills/durable-objects/SKILL.md
skills/cloudflare_skills/sandbox-sdk/SKILL.md
skills/cloudflare_skills/web-perf/SKILL.md
skills/cloudflare_skills/workers-best-practices/SKILL.md
skills/cloudflare_skills/wrangler/SKILL.md
skills/cursor_plugins/cli-for-agent/skills/cli-for-agents/SKILL.md
skills/cursor_plugins/continual-learning/skills/continual-learning/SKILL.md
skills/cursor_plugins/create-plugin/skills/create-plugin-scaffold/SKILL.md
skills/cursor_plugins/create-plugin/skills/review-plugin-submission/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/check-compiler-errors/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/control-cli/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/control-ui/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/deslop/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/fix-ci/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/fix-merge-conflicts/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/get-pr-comments/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/loop-on-ci/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/make-pr-easy-to-review/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/new-branch-and-pr/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/pr-review-canvas/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/review-and-ship/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/run-smoke-tests/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/thermo-nuclear-code-quality-review/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/verify-this/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/weekly-review/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/what-did-i-get-done/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/workflow-from-chats/SKILL.md
skills/cursor_plugins/docs-canvas/skills/docs-canvas/SKILL.md
skills/cursor_plugins/orchestrate/skills/orchestrate/SKILL.md
skills/cursor_plugins/pr-review-canvas/skills/pr-review-canvas/SKILL.md
skills/cursor_plugins/pstack/skills/architect/SKILL.md

Metadata

Files
0
Version
c9d8953
Hash
f1fb1b2c
Indexed
2026-07-05 20:04

Accueil - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-09 00:56
浙ICP备14020137号-1 $Carte des visiteurs$