octen-team/octen-skills

octen-search

USE FOR web search.

Quelltext ansehen

Verwendung

  1. Installationsbefehl kopieren und das Quellpaket vor der Installation in der eigenen Agentenumgebung prüfen.
  2. Benötigte Werkzeuge, Zugangsdaten und Hosts im Original prüfen.
  3. Eingabe und gewünschtes Ergebnis beschreiben und die Ausgabe mit den Quellen abgleichen.
npx skills add https://github.com/octen-team/octen-skills --skill octen-search

Vor dem Start

  • Die Installation umfasst weder Modellabo noch API-Kontingent oder Dateizugriffsrechte.
  • Sterne und Installationen zeigen Aktivität, keine unabhängige Qualitäts- oder Sicherheitsprüfung.
Originales Skill-Dokument

Aus dem Quell-Repository gerendert; Überschriften, Beispiele, Code, Tabellen, Links und Bilder bleiben erhalten.

Octen Search

Octen's search skill. It provides real-time web search plus broad (multi-query) search (see Broad Search below). Image and video search live in the separate octen-image-search and octen-video-search skills.

Requires API Key: Get one at https://octen.ai Set it: export OCTEN_API_KEY=your-api-key

API Key Setup

Before searching, ensure `OCTEN_API_KEY` is set. If it is missing — or any call returns `401` — stop and do not retry blindly: tell the user a key is required, point them to https://octen.ai to get one, help them configure it for their agent (below), then continue once it's set.

Configure the key for the relevant agent/runtime:

  • Claude Code — add { "env": { "OCTEN_API_KEY": "your-key" } } to ~/.claude/settings.json (a transient shell export will not persist)
  • Cursor / Hermes / generic shell — export OCTEN_API_KEY="your-key" in ~/.zshrc or ~/.bashrc
  • Codex — ~/.codex/config.toml → [shell_environment_policy], set = { OCTEN_API_KEY = "your-key" }
  • OpenClaw — add OCTEN_API_KEY=your-key to ~/.openclaw/.env

See the README for full per-agent instructions.

Quick Start (cURL)

Basic Search

bash
curl -s -X POST "https://api.octen.ai/search" \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: ${OCTEN_API_KEY}" \
  -d '{"query": "latest AI research 2026", "count": 5}'

With Highlight and Time Filtering

bash
curl -s -X POST "https://api.octen.ai/search" \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: ${OCTEN_API_KEY}" \
  -d '{
    "query": "summary judgment",
    "count": 10,
    "time_basis": "published",
    "start_time": "2025-01-01T00:00:00Z",
    "end_time": "2026-01-01T00:00:00Z",
    "highlight": {"enable": true, "max_tokens": 300}
  }'

With Domain Filtering

bash
curl -s -X POST "https://api.octen.ai/search" \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: ${OCTEN_API_KEY}" \
  -d '{
    "query": "climate change policy",
    "count": 5,
    "include_domains": ["nature.com", "science.org"],
    "exclude_domains": ["spam.com"]
  }'

With Language Filtering

bash
curl -s -X POST "https://api.octen.ai/search" \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: ${OCTEN_API_KEY}" \
  -d '{
    "query": "climate change 2026",
    "count": 5,
    "language": ["ja", "zh"]
  }'

With Full Content

bash
curl -s -X POST "https://api.octen.ai/search" \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: ${OCTEN_API_KEY}" \
  -d '{
    "query": "latest WHO guidance on influenza vaccination",
    "count": 5,
    "full_content": {"enable": true, "max_tokens": 1000}
  }'

Endpoint

http
POST https://api.octen.ai/search

Authentication: X-Api-Key: <API_KEY> header

Content-Type: application/json

Parameters

| Parameter | Type | Required | Default | Description | |--|--|--|--|--| | query | string | Yes | - | Search query (max 500 chars) | | topic | string | No | general | Search vertical: general or news | | count | integer | No | 5 | Number of results (1–100) | | include_domains | string[] | No | - | Only include results from these domains (max 1200 domains, each max 60 chars) | | exclude_domains | string[] | No | - | Exclude results from these domains (max 1200 domains, each max 60 chars) | | include_text | string[] | No | - | Strings that must appear in result page text (max 5 items, each max 30 chars) | | exclude_text | string[] | No | - | Strings that must not appear in result page text (max 5 items, each max 30 chars) | | language | string[] | No | [] | Filter results to these languages, as ISO 639-1 codes (e.g. ["en", "ja"]). Supported: ar, de, en, es, fr, hi, id, it, ja, ko, nl, pl, pt, ru, th, tr, vi, zh. Empty = no language filter. See https://localizely.com/iso-639-1-list/ | | time_basis | string | No | auto | Time field used for filtering: auto, published, crawled | | start_time | string | No | - | Start time filter, ISO 8601 (e.g. 2025-01-01T00:00:00Z) | | end_time | string | No | - | End time filter, ISO 8601 (must be after start_time) | | highlight | object | No | {"enable": true} | Highlight options (see below) | | format | string | No | text | Output format for highlights: text or markdown | | safesearch | string | No | strict | Adult content filter: off or strict | | full_content | object | No | {"enable": false} | Full content options (see below) | | include_images | boolean | No | false | Return the page's cover image and in-body images per result (see Response Fields). For searching for images, use the octen-image-search skill instead |

Highlight Options

| Field | Type | Default | Description | |--|--|--|--| | enable | boolean | true | Return query-relevant highlights in each result | | max_tokens | integer | 512 | Max tokens per highlight (100–20000) |

Full Content Options

| Field | Type | Default | Description | |--|--|--|--| | enable | boolean | false | Return full raw page content for each result | | max_tokens | integer | 2048 | Max tokens per result (100–100000) |

Response Format

Response Fields

| Field | Type | Description | |--|--|--| | code | integer | Status code. 0 = success | | msg | string | Human-readable status message | | request_id | string | Unique request identifier | | data.query | string | The original query | | data.results[] | array | List of search results | | data.results[].title | string | Page title | | data.results[].url | string | Page URL | | data.results[].highlight | string? | Query-relevant snippets (when highlight.enable is true) | | data.results[].full_content | string? | Full page content (when full_content.enable is true) | | data.results[].authors | string? | Website name or author | | data.results[].time_published | string? | Publish time, ISO 8601 | | data.results[].time_last_crawled | string? | Last crawl time, ISO 8601 | | data.results[].favicon | string? | Favicon URL of the result site | | data.results[].cover_image | object? | Page cover image {url, description} (when include_images is true and the page has one) | | data.results[].images[] | array? | In-body images of the page as {url, description}, in order of appearance (when include_images is true) | | meta.usage.num_search_queries | integer | Number of search queries executed | | meta.usage.full_content_tokens | integer | Total tokens returned in full_content | | meta.latency | number | Response time in milliseconds | | meta.warning | string? | Warning message, if any |

JSON Example

json
{
  "code": 0,
  "msg": "success",
  "request_id": "req_abc123def456",
  "data": {
    "query": "latest WHO guidance on influenza vaccination",
    "results": [
      {
        "title": "Influenza (Seasonal) - World Health Organization (WHO)",
        "url": "https://www.who.int/news-room/fact-sheets/detail/influenza-(seasonal)",
        "highlight": "WHO recommends annual vaccination for high-risk groups\n\n...\n\nSeasonal influenza vaccination policies vary by region...",
        "authors": "World Health Organization",
        "time_published": "2024-10-15T00:00:00Z",
        "time_last_crawled": "2026-01-20T02:12:34Z"
      }
    ]
  },
  "meta": {
    "usage": {
      "num_search_queries": 1,
      "full_content_tokens": 0
    },
    "latency": 237,
    "warning": null
  }
}

Broad Search

Broad Search expands your query into several related sub-queries from different angles, searches them concurrently, and returns results grouped per sub-query (not deduplicated across groups) — ready to ground a complete answer.

Use it when a single /search only reaches a few of the relevant subtopics:

  • Comparisons across many sources (pricing, products, vendors)
  • Surveys / deeper research
  • Multi-angle questions that have more than one facet

For a single focused lookup, use plain /search instead.

Pass the original query as-is — Octen generates the sub-queries for you, so do not rewrite or pre-split the question into multiple calls; to widen coverage, raise max_queries (default 5; up to 30 for surveys/research, lower for a tighter search).

Endpoint

http
POST https://api.octen.ai/broad-search

Example

bash
curl -s -X POST "https://api.octen.ai/broad-search" \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: ${OCTEN_API_KEY}" \
  -d '{
    "query": "compare cloud GPU pricing across major providers",
    "max_queries": 5,
    "search_options": {"count": 10, "highlight": {"enable": true}}
  }'

Parameters

| Parameter | Type | Required | Default | Description | |--|--|--|--|--| | query | string | Yes | - | Original search query (max 500 chars) | | max_queries | integer | No | 5 | Upper bound on the number of sub-queries generated (1–30); raise toward 30 for surveys/research, lower for a tighter search | | search_options | object | No | - | Options applied to each sub-query — same fields and defaults as the Parameters table above (topic, count, include_domains, language, time filters, highlight, full_content, include_images, …) |

Response

Same envelope (code, msg, request_id, meta) as Search. data contains:

| Field | Type | Description | |--|--|--| | data.query | string | The original query | | data.queries[] | string[] | The generated sub-queries | | data.search_results[] | array | One result group per sub-query | | data.search_results[].query | string | The sub-query for this group | | data.search_results[].results[] | array | Results for that sub-query (same shape as Search data.results[]) | | data.search_results[].latency | integer | Latency for that sub-query, in milliseconds |

Error Codes

| HTTP Status | Description | |--|--| | 400 | Missing or invalid parameter | | 401 | Invalid or missing API key | | 403 | Insufficient balance | | 429 | Rate limited | | 500 | Internal server error |

Security

  • API key is sent only to the hardcoded endpoint https://api.octen.ai/search via HTTPS
  • Authentication uses the standard X-Api-Key header
  • No environment variables are sent to any other endpoints or external services

Notes

  • Highlight is enabled by default — set "highlight": {"enable": false} to disable
  • Full content is disabled by default — enable it to get raw page text for RAG/grounding
  • Use include_domains / exclude_domains to scope results to trusted sources
  • Use language (ISO 639-1 codes, e.g. ["ja", "zh"]) to filter results by language — on Broad Search set it inside `search_options`, not top-level
  • Use start_time / end_time with time_basis to filter by publish or crawl time
  • format: "markdown" returns highlights in markdown; format: "text" returns plain text

Verwandte Aufgaben

aus demselben Repository

Weitere Skills

Alle Skills