Add a new expert to the Remotion experts page
日本語の概要は準備中です。原文の説明を表示しています。
Call Exa Search (POST /search) for semantic web retrieval with ranked results, filters, freshness, highlights/text, structured output, or streaming. Use when the agent needs open-ended web search, competitor discovery, news, people, or research papers and does not already have URLs. Prefer Exa MCP web_search_exa / web_search_advanced_exa when available; otherwise raw HTTP with EXA_API_KEY. NOT for known-URL extraction (use exa-contents or firecrawl) or multi-step list-building (use company-research / lead-generation / Agent API).
インストールする前に、エージェントに与えられる指示の中身を確認できます。
brand/positioning.md, brand/competitors.md, and brand/landscape.md if present. Use them to sharpen queries and exclusions. All optional - works at zero brand context.EXA_API_KEY set (mktg doctor --json --fields integrations). If neither, stop and surface: get a key at https://dashboard.exa.ai/api-keys then export EXA_API_KEY=....firecrawl or exa-contents only when a known URL needs deeper extraction.Requires API key: Get one at https://dashboard.exa.ai/api-keys
Header:
x-api-key: $EXA_API_KEY
Use POST https://api.exa.ai/search for semantic web retrieval, ranked results, and optional result-level extraction in one raw HTTP call. Start with type: "auto" for general retrieval. Add contents only when the caller needs page text, highlights, summaries, freshness-controlled crawling, subpages, or extracted links.
curl -sS -X POST "https://api.exa.ai/search" \
-H "Content-Type: application/json" \
-H "x-api-key: $EXA_API_KEY" \
-d '{
"query": "latest developments in LLMs",
"type": "auto",
"numResults": 10
}'
curl -sS -X POST "https://api.exa.ai/search" \
-H "Content-Type: application/json" \
-H "x-api-key: $EXA_API_KEY" \
-d '{
"query": "latest developments in LLMs",
"type": "auto",
"numResults": 5,
"contents": {
"highlights": true
}
}'
curl -sS -X POST "https://api.exa.ai/search" \
-H "Content-Type: application/json" \
-H "x-api-key: $EXA_API_KEY" \
-d '{
"query": "AI regulation policy updates",
"type": "auto",
"category": "news",
"numResults": 10,
"includeDomains": ["reuters.com", "bbc.com"],
"startPublishedDate": "2025-01-01",
"contents": {
"text": {
"maxCharacters": 2000
},
"maxAgeHours": 24,
"livecrawlTimeout": 12000
}
}'
curl -sS -X POST "https://api.exa.ai/search" \
-H "Content-Type: application/json" \
-H "x-api-key: $EXA_API_KEY" \
-d '{
"query": "map the major technical and commercial tradeoffs in sodium-ion batteries for grid storage",
"type": "deep",
"numResults": 8
}'
POST https://api.exa.ai/search
Authentication: x-api-key: <API_KEY> header. Exa also accepts Authorization: Bearer <API_KEY>, but prefer x-api-key in cURL examples for consistency.
Use this endpoint when the agent needs search results. If the agent already has URLs and only needs extraction, use POST /contents instead.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | Yes | - | Natural-language search query. Long, semantically rich descriptions work well. |
type | string | No | auto | Search method: auto, fast, instant, deep-lite, deep, or deep-reasoning. |
numResults | integer | No | 10 | Number of results to return. Use small values for agent loops; maximum is 100. |
category | string | No | - | Specialized result type: company, people, research paper, news, personal site, or financial report. |
includeDomains | string[] | No | - | Only return results from these domains, paths, or wildcard patterns. Max 1200. |
excludeDomains | string[] | No | - | Exclude these domains, paths, or wildcard patterns. Max 1200. |
startPublishedDate | string | No | - | ISO 8601 lower bound for result publication date. |
endPublishedDate | string | No | - | ISO 8601 upper bound for result publication date. |
userLocation | string | No | - | Two-letter ISO country code such as US or GB. |
moderation | boolean | No | false | Filter unsafe content from results. |
additionalQueries | string[] | No | - | Extra query variants for deep-search variants. Use alongside the main query. |
systemPrompt | string | No | - | Instructions for synthesized output and deep-search planning, such as source preferences. |
outputSchema | object | No | - | JSON Schema controlling output.content. Adds synthesized output and grounding. |
stream | boolean | No | false | If true, returns SSE instead of a single JSON response. |
compliance | string | No | - | Enterprise-only compliance mode, such as hipaa, when enabled for the account. |
contentsOn /search, text, highlights, and summary must be nested under contents.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
contents.text | boolean or object | No | - | Return full page text as markdown. Object form supports maxCharacters, includeHtmlTags, verbosity, includeSections, and excludeSections. |
contents.highlights | boolean or object | No | - | Return query-relevant excerpts. Prefer true for agent workflows unless a fixed character budget is required. |
contents.summary | boolean or object | No | - | Return per-result LLM summaries. Use sparingly because each result adds synthesis work. |
contents.maxAgeHours | integer | No | - | Freshness control. 0 always live crawls; -1 uses cache only; omit for default cache-first behavior with crawl fallback. |
contents.livecrawlTimeout | integer | No | 10000 | Timeout for live crawling in milliseconds. Use 10000 to 15000 for most freshness-sensitive calls. |
contents.subpages | integer | No | 0 | Number of linked subpages to crawl per result. |
contents.subpageTarget | string or string[] | No | - | Terms used to prioritize which subpages matter, such as ["api", "pricing"]. |
contents.extras.links | integer | No | 0 | Number of links to extract from each result page. |
contents.extras.imageLinks | integer | No | 0 | Number of image URLs to extract from each result page. |
| Parameter | Type | Default | Description |
|---|---|---|---|
maxCharacters | integer | - | Character limit for returned text. Use this instead of tokensNum. |
includeHtmlTags | boolean | false | Preserve HTML tags in output. |
verbosity | string | compact | compact, standard, or full. Pair fresh section-aware extraction with contents.maxAgeHours: 0. |
includeSections | string[] | - | Only include selected sections: header, navigation, banner, body, sidebar, footer, metadata. |
excludeSections | string[] | - | Exclude selected sections from the same section list. |
Prefer contents.highlights: true for the highest-quality default. Only use object form when the agent needs a custom focus or budget.
| Parameter | Type | Default | Description |
|---|---|---|---|
query | string | - | Custom query guiding which excerpts are returned. |
maxCharacters | integer | - | Cap highlight characters per URL. Omit unless the caller has a strict budget. |
| Parameter | Type | Default | Description |
|---|---|---|---|
query | string | - | Custom query for the summary. |
schema | object | - | JSON Schema for structured per-result summaries. |
Search type controls the retrieval and synthesis mode. Pick the mode for the workflow, not just the output format. outputSchema can be used with any search type; use deeper modes when the search process itself needs more planning, synthesis, or reasoning.
| Type | Best for | Tradeoff |
|---|---|---|
auto | General default search and most new integrations | Balances speed and quality without requiring the caller to tune retrieval strategy. |
fast | Low-latency agent loops and product paths | Faster than auto; use when responsiveness matters more than maximum reasoning depth. |
instant | Real-time UI, chat, voice, and autocomplete-style paths | Lowest latency path; use for quick retrieval rather than deep synthesis. |
deep-lite | Lightweight research or synthesis | Adds more planning and synthesis than auto while staying lighter than full deep. |
deep | Multi-step research, comparisons, and synthesis-heavy retrieval | Higher latency; better when the query needs exploration across several sources. |
deep-reasoning | Hard research tasks with high ambiguity or complex tradeoffs | Highest latency and reasoning depth. |
Use auto unless latency or reasoning depth is the primary constraint. Use fast or instant for time-sensitive calls. Use deep, deep-lite, or deep-reasoning when the query needs multi-step source discovery, comparison, or synthesis.
{
"query": "recent product launches from major AI chip companies",
"type": "fast",
"numResults": 5
}
{
"query": "compare competing explanations for the recent rise in grid-scale battery deployments",
"type": "deep",
"numResults": 8
}
Use systemPrompt for behavior and outputSchema for shape.
curl -sS -X POST "https://api.exa.ai/search" \
-H "Content-Type: application/json" \
-H "x-api-key: $EXA_API_KEY" \
-d '{
"query": "compare the latest frontier AI model releases",
"type": "deep",
"systemPrompt": "Prefer official sources and avoid duplicate results.",
"outputSchema": {
"type": "object",
"properties": {
"models": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"notable_claims": {
"type": "array",
"items": { "type": "string" }
}
},
"required": ["name", "notable_claims"]
}
}
},
"required": ["models"]
},
"contents": {
"highlights": true
}
}'
Keep schemas compact and bounded. Do not add citation fields to the schema; grounding is returned separately in output.grounding.
Streaming applies to synthesized output, so include outputSchema along with -N, Accept: text/event-stream, and stream: true. Without outputSchema, the endpoint returns the normal JSON search response even when stream is true.
curl -sS -N -X POST "https://api.exa.ai/search" \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-H "x-api-key: $EXA_API_KEY" \
-d '{
"query": "recent grid-scale battery deployments",
"type": "deep",
"stream": true,
"outputSchema": {
"type": "object",
"properties": {
"summary": { "type": "string" }
},
"required": ["summary"]
},
"contents": {
"highlights": true
}
}'
Treat streaming as SSE rather than JSON. Each data: frame contains an OpenAI-compatible chat completion chunk; read partial text from choices[0].delta.content and handle completion or error frames defensively.
| Field | Type | Description |
|---|---|---|
requestId | string | Unique request identifier. |
results | array | Ranked result objects. |
results[].title | string | Page title. |
results[].url | string | Page URL. |
results[].publishedDate | string or null | Estimated publication date when available. |
results[].author | string or null | Author when available. |
results[].text | string | Returned when contents.text is requested. |
results[].highlights | string[] | Returned when contents.highlights is requested. |
results[].highlightScores | number[] | Similarity scores for highlights. |
results[].summary | string | Returned when contents.summary is requested. |
results[].subpages | array | Nested result objects from subpage crawling. |
results[].extras.links | string[] | Extracted links when requested. |
output.content | string or object | Synthesized output when outputSchema is provided. |
output.grounding | array | Citations and confidence labels for synthesized fields. |
costDollars.total | number | Total request cost when returned. |
searchTime | number | Search latency when returned. |
text, highlights, and summary inside contents on /search.text, highlights, or summary; that shape belongs to /contents.tokensNum; use contents.text.maxCharacters to cap extracted text.useAutoprompt, numSentences, or highlightsPerUrl in new requests.contents.maxAgeHours over older livecrawl examples.company, people, research paper, news, personal site, and financial report.company and people do not support startPublishedDate or endPublishedDate. company supports excludeDomains; people does not, and people only accepts LinkedIn domains in includeDomains.contents.highlights, contents.text, or contents.summary by default. Stack modes only when the caller truly needs multiple views of each page.stream: true is paired with outputSchema; otherwise /search returns its normal JSON response.Ported from exa-labs/agent-skills - adapted for mktg's drop-in contract on 2026-07-18.
Upstream commit: 390ffee2d7e1d0dce2ed8efe4994c2b3c1c0173b
Drift detection: if the upstream skill changes, re-run mktg-steal https://github.com/exa-labs/agent-skills to evaluate the diff.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Add a new expert to the Remotion experts page
日本語の概要は準備中です。原文の説明を表示しています。
Add a new sound effect to @remotion/sfx
日本語の概要は準備中です。原文の説明を表示しています。
Use when setting up a secure email inbox for any AI agent — configuring inbound email via Resend, webhooks, tunneling for local development, and implementing security measures to prevent prompt injection attacks. Also use when someone mentions 'agent email', 'bot inbox', 'receive emails for agent', 'agent webhook', 'email security for AI', 'prompt injection via email', 'inbound email for bot', or wants their AI agent to receive and respond to emails securely.
日本語の概要は準備中です。原文の説明を表示しています。
Builds, measures, and improves an Answer Engine Optimization program across ChatGPT, Perplexity, Claude, Gemini, Google AI Overviews, and Copilot. Use for AEO, GEO, LLMO, AI search visibility, AI citations, brand mentions, answer-engine monitoring, llms.txt, AI crawler audits, or questions like 'what does AI say about us?' and 'why are competitors cited instead of us?'. Produces a durable evidence report and prioritized gameplan, not a one-shot content checklist.
日本語の概要は準備中です。原文の説明を表示しています。
Generate Apple App Store screenshot pages as a Next.js app with html-to-image export at required resolutions. Screenshots are advertisements, not documentation — every screenshot sells one idea. Use when building App Store screenshots, generating exportable marketing screenshots for iOS apps, or creating programmatic screenshot generators. Triggers on 'app store screenshots', 'App Store', 'screenshot generator', 'iOS screenshots', 'marketing screenshots', 'phone mockup', 'ASO screenshots', 'app store assets', 'app listing', 'app store page', or 'app preview images'. Also use when someone is about to submit an app and needs store assets, or when they say 'make my app store page look good'. Includes iPhone and iPad mockup components with pre-measured dimensions.
日本語の概要は準備中です。原文の説明を表示しています。
Build detailed buyer personas and audience profiles from research. Use this skill whenever the user mentions audience, buyer persona, ideal customer, target market, ICP, watering holes, 'who am I selling to', customer research, or audience profile. Also use when content feels unfocused or generic (that's an audience problem), when conversion is low because messaging doesn't resonate, when starting any new project (audience should be first), or when any downstream skill needs audience.md but it doesn't exist yet. Even if the user doesn't explicitly ask for audience research, trigger this if they're writing copy or building a landing page without a clear audience defined. Three approaches: Quick Profile, Persona Build, Community Mining.
日本語の概要は準備中です。原文の説明を表示しています。