원클릭으로
exa-websets-monitor
Use when setting up monitors - periodic searches to add new items or refresh existing items in a webset automatically.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when setting up monitors - periodic searches to add new items or refresh existing items in a webset automatically.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Generate answers to questions with structured output using AI search and synthesis. Use when you need factual answers with citations from web sources, or when you want to extract specific structured information in response to a query.
Get code context from repositories with examples and documentation. Use when you need code snippets, implementation examples, API usage patterns, or technical documentation for programming concepts, frameworks, or libraries.
Find web content similar to a given URL using AI-powered similarity matching. Use when you have an example page and want to discover related articles, papers, or websites with similar content, style, or topic.
Retrieve and extract content from URLs with AI-powered summarization and structured data extraction. Use for scraping web pages, extracting specific information, summarizing articles, or crawling websites with subpages.
Search the web for content matching a query with AI-powered semantic search. Use for finding relevant web pages, research papers, news articles, code repositories, or any web content by meaning rather than just keywords.
Use when the user mentions Exa research OR when the workflow benefits from complex, multi-step research and other exa-ai approaches are not yielding satisfactory results.
| name | exa-websets-monitor |
| description | Use when setting up monitors - periodic searches to add new items or refresh existing items in a webset automatically. |
Automate webset updates on a schedule using monitors.
Use --help to see available commands and verify usage before running:
exa-ai <command> --help
When using the Bash tool with complex shell syntax, follow these best practices for reliability:
jq to parse output in a follow-up command if needed$(...) can be fragile; break into sequential stepsExample:
# Less reliable: nested command substitution
monitor_id=$(exa-ai monitor-create ws_abc123 --cron "0 9 * * *" --behavior-type search | jq -r '.monitor_id')
# More reliable: run directly, then parse
exa-ai monitor-create ws_abc123 --cron "0 9 * * *" --behavior-type search
# Then in a follow-up command if needed:
monitor_id=$(cat output.json | jq -r '.monitor_id')
MUST follow these rules when using monitors:
All exa-ai monitor commands support output formats:
jq to extract specific fields (e.g., | jq -r '.monitor_id')# Daily search for new items
exa-ai monitor-create ws_abc123 \
--cron "0 9 * * *" \
--timezone "America/New_York" \
--behavior-type search \
--query "new AI startups" \
--count 5
# Nightly refresh of existing items
exa-ai monitor-create ws_abc123 \
--cron "0 2 * * *" \
--timezone "America/New_York" \
--behavior-type refresh
"0 0 * * *" # Daily at midnight
"0 9 * * 1" # Weekly on Monday at 9 AM
"0 */6 * * *" # Every 6 hours
"0 0 1 * *" # Monthly on the 1st at midnight
"0 12 * * 1-5" # Weekdays at noon
# List all monitors
exa-ai monitor-list
# Get monitor details
exa-ai monitor-get mon_xyz789
# View execution history
exa-ai monitor-runs-list mon_xyz789
# 1. Create webset
webset_id=$(exa-ai webset-create \
--search '{"query":"AI startups","count":50}' | jq -r '.webset_id')
# 2. Set up daily search monitor
monitor_id=$(exa-ai monitor-create $webset_id \
--cron "0 9 * * *" \
--timezone "America/New_York" \
--behavior-type search \
--query "new AI startups" \
--behavior-mode append \
--count 10 | jq -r '.monitor_id')
# 3. Set up nightly refresh
exa-ai monitor-create $webset_id \
--cron "0 2 * * *" \
--timezone "America/New_York" \
--behavior-type refresh
# 4. Check execution history
exa-ai monitor-runs-list $monitor_id
For complete options, examples, and cron patterns, consult REFERENCE.md.
Applies to: answer, search, find-similar, get-contents
When using schema parameters (--output-schema or --summary-schema), always wrap properties in an object:
{"type":"object","properties":{"field_name":{"type":"string"}}}
DO NOT use bare properties without the object wrapper:
{"properties":{"field_name":{"type":"string"}}} // ❌ Missing "type":"object"
Why: The Exa API requires a valid JSON Schema with an object type at the root level. Omitting this causes validation errors.
Examples:
# ✅ CORRECT - object wrapper included
exa-ai search "AI news" \
--summary-schema '{"type":"object","properties":{"headline":{"type":"string"}}}'
# ❌ WRONG - missing object wrapper
exa-ai search "AI news" \
--summary-schema '{"properties":{"headline":{"type":"string"}}}'
Applies to: answer, context, search, find-similar, get-contents
toon format produces YAML-like output, not JSON. DO NOT pipe toon output to jq for parsing:
# ❌ WRONG - toon is not JSON
exa-ai search "query" --output-format toon | jq -r '.results'
# ✅ CORRECT - use JSON (default) with jq
exa-ai search "query" | jq -r '.results[].title'
# ✅ CORRECT - use toon for direct reading only
exa-ai search "query" --output-format toon
Why: jq expects valid JSON input. toon format is designed for human readability and produces YAML-like output that jq cannot parse.
Applies to: answer, context, search, find-similar, get-contents
Pick one strategy and stick with it throughout your workflow:
Approach 1: toon only - Compact YAML-like output for direct reading
exa-ai search "query" --output-format toonApproach 2: JSON + jq - Extract specific fields programmatically
exa-ai search "query" | jq -r '.results[].title'Approach 3: Schemas + jq - Structured data extraction with validation
exa-ai search "query" --summary-schema '{...}' | jq -r '.results[].summary | fromjson'Why: Mixing approaches increases complexity and token usage. Choosing one approach optimizes for your use case.
Applies to: monitor, search (websets), research, and all skills using complex commands
When using the Bash tool with complex shell syntax, run commands directly and parse output in separate steps:
# ❌ WRONG - nested command substitution
webset_id=$(exa-ai webset-create --search '{"query":"..."}' | jq -r '.webset_id')
# ✅ CORRECT - run directly, then parse
exa-ai webset-create --search '{"query":"..."}'
# Then in a follow-up command:
webset_id=$(cat output.json | jq -r '.webset_id')
Why: Complex nested $(...) command substitutions can fail unpredictably in shell environments. Running commands directly and parsing separately improves reliability and makes debugging easier.
Applies to: All skills when using complex multi-step operations
Avoid nesting multiple levels of command substitution:
# ❌ WRONG - deeply nested
result=$(exa-ai search "$(cat query.txt | tr '\n' ' ')" --num-results $(cat config.json | jq -r '.count'))
# ✅ CORRECT - sequential steps
query=$(cat query.txt | tr '\n' ' ')
count=$(cat config.json | jq -r '.count')
exa-ai search "$query" --num-results $count
Why: Nested command substitutions are fragile and hard to debug when they fail. Sequential steps make each operation explicit and easier to troubleshoot.
Applies to: All skills when working with multi-step workflows
For readability and reliability, break complex operations into clear sequential steps:
# ❌ Less maintainable - everything in one line
exa-ai webset-create --search '{"query":"startups","count":1}' | jq -r '.webset_id' | xargs -I {} exa-ai webset-search-create {} --query "AI" --behavior override
# ✅ More maintainable - clear steps
exa-ai webset-create --search '{"query":"startups","count":1}'
webset_id=$(jq -r '.webset_id' < output.json)
exa-ai webset-search-create $webset_id --query "AI" --behavior override
Why: Sequential steps are easier to understand, debug, and modify. Each step can be verified independently.