Search Skill (Content Search Primitive)
Search for and synthesize content from Twitter and News using kaito_advanced_search.
Parameters
- - entity (required): What to search for. One of:
-
tokens: Ticker symbol (e.g.
HYPE,
SOL,
ETH) — exact Kaito entity match
-
keyword: Project name or free-text (e.g.
HYPERLIQUID,
liquid staking) — broader match
-
topics: Kaito-indexed topic (e.g.
DeFi,
AI,
L2) — built-in query expansion
-
usernames: Twitter handle(s) to search posts from (e.g.
HyperliquidX)
- - timehorizon (required): Time window (e.g. 24h, 48h, 7d, 30d). Sets
min_created_at / max_created_at. - sources (optional):
Twitter, News, or both (default: both) - sortby (optional): Ranking method (default:
relevance)
When called standalone, confirm parameters with the user first. When called by a workflow skill, parameters are passed directly.
Critical: Kaito Search Behavior (AND Logic + Exact Match)
Kaito's search uses AND across all fields and exact string matching (not semantic). This means:
- - If you set
tokens: HYPE and keyword: liquid staking, a result must contain both — drastically reducing matches. - The more fields you fill, the fewer results you get. Adding parameters narrows, never broadens.
- There is no fuzzy/semantic matching —
liquid staking won't match "staked liquidity" or "LST".
Strategy: Use ONE entity field per call. Never combine tokens + keyword + topics in a single request.
Default query strategy: AND-narrow with boolean expansion.
The optimal query pattern is: pick ONE entity term and ONE topic/context term, AND them together, and OR-expand each with spelling variants, plurals, and handles.
CODEBLOCK0
Spaces between OR-groups act as AND. This is the (A OR A') AND (B OR B') pattern.
Step-by-step:
- 1. Identify the most distinctive proper noun — prefer unique names over common ones (e.g. "Wyoming" > "Kraken" when searching for Kraken's Fed master account, because "Kraken" matches many unrelated posts).
- AND-narrow with a topic term — combine entity + distinctive topic/context term in the keyword field (e.g.
"Hyperliquid" "buyback"). This filters down to relevant content. - OR-expand each AND-group with:
-
Plurals:
"agent" OR "agents",
"buyback" OR "buybacks"
-
Spelling variants:
"memecoin" OR "memecoins" OR "meme coin" OR "meme coins",
"crypto" OR "cryptocurrency"
-
Handles:
"SUI" OR "@SuiNetwork",
"Kraken" OR "@krakenfx" — Twitter handles are powerful OR-variants that improve recall
-
Ticker variants:
"hyperliquid" OR "$HYPE" OR "HYPE" OR "@HyperliquidX"
- 4. If a ticker exists and differs from the keyword, make a parallel
tokens call and merge results. This provides redundancy — some content is only findable via ticker, some only via name. - Do NOT use
tokens alone for major tickers (BTC, ETH, SOL) — the result set is too broad to surface specific content. Always pair with a keyword call. - Do NOT use
topics for targeted search — topics return category-level firehose results. Only use for broad discovery/scanning. usernames param — use for searching posts from official project accounts or known authors (e.g. usernames: jespow). Also add handles as OR-variants in keyword searches for better recall.
Proximity Matching (automatic ~15 slop)
Simple keywords — those without AND, OR, -, or quoted phrases — automatically get proximity matching with slop 15. This means the words just need to appear within 15 tokens of each other in the document, not adjacent. For example, liquid staking (unquoted) matches text where "liquid" and "staking" appear near each other, even with other words in between. To require an exact adjacent phrase, wrap in quotes: "liquid staking".
Text Field Modifiers (#...# and [...])
The keyword field supports special syntax to target different text analyzers:
- -
#keyword# → case-sensitive match (field: text.case_sensitive). Useful for ambiguous tickers: #SOL# avoids matching "solution", #AI# avoids matching "said". [keyword] → English-stemmed match (field: text.english_analyzed). Matches morphological variants: [staking] matches "staked", "stakes", "staking".- Default (no modifier) → standard analyzer (field:
text.standard). Balanced tokenization without stemming.
These can be combined with boolean operators: #SOL# "liquid staking" means case-sensitive SOL AND exact phrase "liquid staking".
Keyword Search Syntax (Boolean Operators)
The keyword field supports boolean operators. Understanding precedence is critical:
- - Exact phrase: Wrap in quotes —
"liquid staking" matches the exact phrase only. - OR operator: Use capitalized
OR between terms — "liquid staking" OR "LST" matches either phrase. - AND (implicit): Spaces between OR-groups act as AND —
"A" OR "B" "C" OR "D" means (A OR B) AND (C OR D).
Precedence: AND binds tighter than OR. The query "Lighter" "Hyperliquid" OR "perp DEX" parses as ("Lighter" AND "Hyperliquid") OR "perp DEX", flooding results with generic perp DEX content. To get the intended meaning, structure OR-groups carefully.
OR must only broaden variants of the same concept — never mix in a different concept.
- - Good:
"Hyperliquid" OR "$HYPE" OR "@HyperliquidX" — same entity, different representations. - Good:
"buyback" OR "buybacks" — same concept, plural variant. - Bad:
"Hyperliquid" OR "perp DEX" — different concepts; floods results with unrelated content.
Use the simplest, most natural term — don't guess at multi-word phrases.
- - Good:
"Lighter" — how people actually refer to the project. - Bad:
"Lighter DEX" OR "Lighter exchange" OR "Lighter protocol" — nobody writes these; returns very few results.
Comparison queries: use multiple quoted terms in a single keyword field.
- - To find posts comparing two projects, put both names as separate quoted terms:
"Hyperliquid" "Lighter". Kaito ANDs them, surfacing only posts that mention both — exactly what you want for comparisons.
Beware common-word project names (e.g. "Lighter", "Drift", "Pump").
- - These match as English adjectives/nouns in the
keyword field (e.g. "lighter volume" = lower volume). For common-word projects, prefer the tokens param (e.g. tokens: LIT) — Kaito pre-runs entity linking (mapping various keywords, Twitter handles, and ticker variants to the canonical token) and relevance tagging, so results are already disambiguated. Only fall back to keyword with a disambiguating term (e.g. "Lighter" "perps") if the token isn't indexed.
Kaito-Indexed Topics (prefer topics param — built-in query expansion)
AI, Robotics, DeFi, Stablecoin, Prediction Markets, Perp DEX, NFT, Gaming, L2, ZK, RWA, Restaking, Liquid Staking, DEX, Lending, Yield, Bridge, Privacy, Wallet, Infrastructure
If the topic isn't indexed, use the keyword parameter instead and note that query expansion won't apply.
Workflow
Step 1 — Call kaito_advanced_search (with pagination)
Retrieve multiple pages of results to ensure broad coverage.
Scale pagination to query specificity:
| Query type | Example | Twitter pages | Rationale |
|---|
| Broad single-entity | INLINECODE78 | 10 (200 results) | Large result set; need depth |
| Moderate / themed |
keyword: "liquid staking" | 5–7 (100–140 results) | Medium result set |
| Narrow comparison |
"Hyperliquid" "Lighter" | 2–3 (40–60 results) | AND of two names is inherently narrow; pages 3+ are mostly SE ≤ 2 tangential mentions |
For each Twitter page, call kaito_advanced_search with:
- - The appropriate entity parameter (
tokens, keyword, topics, or usernames) - sources: Twitter
- mincreatedat: INLINECODE86
- maxcreatedat:
<window_end> (if applicable) - size: 20
- sort_by: relevance
- from: INLINECODE88
For News (always 1 page → 20 results):
Call kaito_advanced_search with:
- - The appropriate entity parameter
- sources: News
- mincreatedat: INLINECODE90
- maxcreatedat:
<window_end> (if applicable) - size: 20
News is high-efficiency: one call typically returns all relevant long-form articles.
Make all calls in parallel (Twitter pages + News page) when both sources are requested.
Step 2 — Synthesize Results
Merge paginated results, deduplicate, then categorize content into:
- - Positive — bullish narratives, partnerships, product launches, KOL endorsements
- Negative — FUD, exploits, regulatory risks, criticism
- Neutral/Notable — major events worth knowing regardless of sentiment
For each item include:
- - Author and their
smart_engagement score - 1-2 sentence summary
- Source link (tweet URL or news URL)
Highlight any post with smart_engagement > 50 as high-signal.
Output Format
When used standalone:
CODEBLOCK1
When called by a workflow skill, return the structured results for the workflow to integrate into its own output format.
Key Rules
- - Default to
sort_by: relevance unless the user explicitly requests a different ranking. Relevance ranking surfaces the most topically relevant content. Use smart_engagement only when specifically requested. - Scale pagination to query specificity — broad single-entity searches warrant 10 pages; narrow comparison queries (AND of two names) only need 2–3 pages since pages 3+ are mostly low-SE tangential mentions. Always fetch 1 page for News.
- Never combine multiple entity fields in one call — Kaito ANDs all fields together, so combining
tokens + keyword narrows results severely. Use separate calls and merge. - AND-narrow + boolean expansion is the default strategy — always combine entity + topic term in keyword, then OR-expand each group with plurals, spelling variants, and handles. Pattern:
"EntityA" OR "@EntityHandle" "topic" OR "topics". This achieves highest recall while keeping results relevant. - Prefer
keyword over tokens as the primary search — keyword has 3.5x higher recall than token-only searches. Major tickers (BTC, ETH, SOL) return firehose results where specific content drowns. - If a ticker exists, run a parallel
tokens call as supplementary — merge with keyword results. Some content is only findable via one or the other. - If
tokens returns empty, the token may not be indexed. Fall back to keyword immediately. - OR-expand aggressively within each AND-group — always include plurals (
"agent" OR "agents"), common abbreviations, handles ("SUI" OR "@SuiNetwork"), and ticker variants ("HYPE" OR "$HYPE"). OR across variants of the same concept improves recall without diluting relevance. - Pick the most distinctive proper noun for AND-narrowing — when multiple terms could identify a topic, use the rarest one. Example: for "Kraken's Fed master account", use
"Wyoming" not "Kraken" as the primary entity, since Wyoming is more distinctive for this specific topic. smart_engagement is an integer (e.g. 124) representing how many smart accounts engaged — do NOT confuse with sentiment_score (a volume-weighted float indicating tone × volume).- Indexed topics use the
topics parameter; unindexed topics use keyword — using topics for indexed terms gives Kaito's built-in query expansion. Using it for unindexed terms returns empty results. - Make separate calls for Twitter and News — they are different source types and the separation makes synthesis cleaner.
- NEVER fabricate or embellish details beyond what the API returns — only include claims, quotes, figures, wallet addresses, and engagement numbers that appear verbatim in the search results. If the retrieved data is thin, say so honestly rather than filling gaps with plausible-sounding specifics. Attribute every factual claim to a specific search result with its URL. If you cannot link a claim to a retrieved result, do not include it.
- Always show smartengagement counts in output — every cited tweet or article MUST include its
smart_engagement integer from the API response (displayed as SE: N). This is critical for transparency and for demonstrating that results were ranked by smartengagement. - For comparison queries, use dual-quoted terms in keyword — e.g.
"Hyperliquid" "Lighter" forces AND between the two names, surfacing only posts that discuss both. This is the most effective strategy for "X vs Y" searches. Supplement with a tokens-based search for each entity separately if one-sided context is also needed. - Use the simplest natural term, not guessed multi-word phrases — people write "Lighter" not "Lighter DEX" or "Lighter protocol". Overly specific exact phrases return very few results because they don't match how people actually talk.
- Beware common-word project names — names like "Lighter", "Drift", "Pump" match as English words in the
keyword field. Prefer tokens param (e.g. tokens: LIT) — Kaito pre-runs entity linking and relevance tagging, so results are already disambiguated. Only fall back to keyword with a disambiguating term if the token isn't indexed.
搜索技能(内容搜索原语)
使用 kaitoadvancedsearch 搜索并综合来自 Twitter 和新闻的内容。
参数
- tokens: 股票代码(例如 HYPE、SOL、ETH)— 精确的 Kaito 实体匹配
- keyword: 项目名称或自由文本(例如 HYPERLIQUID、liquid staking)— 更广泛的匹配
- topics: Kaito 索引的主题(例如 DeFi、AI、L2)— 内置查询扩展
- usernames: 要搜索帖子的 Twitter 用户名(例如 HyperliquidX)
- - timehorizon (必填): 时间窗口(例如 24h、48h、7d、30d)。设置 mincreatedat / maxcreatedat。
- sources (可选): Twitter、News,或两者(默认:两者)
- sortby (可选): 排序方式(默认:relevance)
当独立调用时,先与用户确认参数。当由工作流技能调用时,参数直接传递。
关键:Kaito 搜索行为(AND 逻辑 + 精确匹配)
Kaito 的搜索在所有字段中使用 AND 和 精确字符串匹配(非语义)。这意味着:
- - 如果你设置 tokens: HYPE 且 keyword: liquid staking,结果必须同时包含 两者 — 大幅减少匹配结果。
- 你填写的字段越多,获得的 结果越少。添加参数只会缩小范围,不会扩大。
- 没有模糊/语义匹配 — liquid staking 不会匹配 staked liquidity 或 LST。
策略:每次调用只使用一个实体字段。切勿在单个请求中组合 tokens + keyword + topics。
默认查询策略:AND 缩小 + 布尔扩展。
最佳查询模式是:选择一个实体词和一个主题/上下文词,将它们 AND 在一起,并用拼写变体、复数形式和用户名进行 OR 扩展。
keyword: EntityA OR EntityAvariant TopicB OR TopicBvariant
OR 组之间的空格充当 AND。这是 (A OR A) AND (B OR B) 模式。
逐步操作:
- 1. 识别最具区分度的专有名词 — 优先选择独特名称而非常见名称(例如,搜索 Kraken 的联邦主账户时用 Wyoming 而非 Kraken,因为 Kraken 会匹配许多不相关的帖子)。
- 用主题词进行 AND 缩小 — 在关键字字段中组合实体 + 区分度高的主题/上下文词(例如 Hyperliquid buyback)。这可以筛选出相关内容。
- 对每个 AND 组进行 OR 扩展,包括:
-
复数形式:agent OR agents、buyback OR buybacks
-
拼写变体:memecoin OR memecoins OR meme coin OR meme coins、crypto OR cryptocurrency
-
用户名:SUI OR @SuiNetwork、Kraken OR @krakenfx — Twitter 用户名是强大的 OR 变体,可提高召回率
-
股票代码变体:hyperliquid OR $HYPE OR HYPE OR @HyperliquidX
- 4. 如果存在股票代码且与关键字不同,则进行 并行 tokens 调用并合并结果。这提供了冗余 — 有些内容只能通过股票代码找到,有些只能通过名称找到。
- 不要对主要股票代码(BTC、ETH、SOL)单独使用 tokens — 结果集过于宽泛,无法定位特定内容。始终与关键字调用配对使用。
- 不要对定向搜索使用 topics — 主题返回类别级别的海量结果。仅用于广泛的发现/扫描。
- usernames 参数 — 用于搜索来自官方项目账户或已知作者的帖子(例如 usernames: jespow)。同时在关键字搜索中添加用户名作为 OR 变体,以提高召回率。
邻近匹配(自动 ~15 容差)
简单的关键字 — 那些没有 AND、OR、- 或引号短语的 — 会自动获得 容差为 15 的邻近匹配。这意味着这些词只需在文档中彼此相距 15 个词元内出现,而不必相邻。例如,liquid staking(未加引号)会匹配 liquid 和 staking 彼此靠近出现的文本,即使中间有其他词。要要求 精确的相邻短语,请用引号括起来:liquid staking。
文本字段修饰符(#...# 和 [...])
关键字字段支持特殊语法以针对不同的文本分析器:
- - #keyword# → 区分大小写匹配(字段:text.casesensitive)。对于有歧义的股票代码很有用:#SOL# 避免匹配 solution,#AI# 避免匹配 said。
- [keyword] → 英语词干匹配(字段:text.englishanalyzed)。匹配形态变体:[staking] 匹配 staked、stakes、staking。
- 默认(无修饰符) → 标准分析器(字段:text.standard)。无词干提取的平衡分词。
这些可以与布尔运算符结合使用:#SOL# liquid staking 表示区分大小写的 SOL AND 精确短语 liquid staking。
关键字搜索语法(布尔运算符)
keyword 字段支持布尔运算符。理解优先级至关重要:
- - 精确短语:用引号括起来 — liquid staking 仅匹配精确短语。
- OR 运算符:在术语之间使用大写的 OR — liquid staking OR LST 匹配任一短语。
- AND(隐式):OR 组之间的空格充当 AND — A OR B C OR D 表示 (A OR B) AND (C OR D)。
优先级:AND 比 OR 绑定更紧密。 查询 Lighter Hyperliquid OR perp DEX 解析为 (Lighter AND Hyperliquid) OR perp DEX,导致结果被通用的 perp DEX 内容淹没。要获得预期的含义,请仔细构造 OR 组。
OR 只能扩展同一概念的不同变体 — 切勿混入不同的概念。
- - 正确:Hyperliquid OR $HYPE OR @HyperliquidX — 同一实体,不同表示形式。
- 正确:buyback OR buybacks — 同一概念,复数变体。
- 错误:Hyperliquid OR perp DEX — 不同概念;结果被不相关内容淹没。
使用最简单、最自然的术语 — 不要猜测多词短语。
- - 正确:Lighter — 人们实际提及该项目的方式。
- 错误:Lighter DEX OR Lighter exchange OR Lighter protocol — 没人这样写;返回的结果非常少。
比较查询:在单个关键字字段中使用多个带引号的术语。
- - 要查找比较两个项目的帖子,将两个名称作为单独的带引号术语:Hyperliquid Lighter。Kaito 对它们进行 AND 操作,仅显示同时提及两者的帖子 — 这正是比较查询所需要的。
注意常见词项目名称(例如 Lighter、Drift、Pump)。
- - 这些在 keyword 字段中会匹配为英语形容词/名词(例如 lighter volume = 较低的交易量)。对于常见词项目,优先使用 tokens 参数(例如 tokens: LIT)— Kaito 预先运行实体链接(将各种关键字、Twitter 用户名和股票代码变体映射到规范代币)和相关性标记,因此结果已经消除歧义。仅当代币未被索引时,才回退到使用消歧术语的 keyword(例如 Lighter perps)。
Kaito 索引主题(优先使用 topics 参数 — 内置查询扩展)
AI、Robotics、DeFi、Stablecoin、Prediction Markets、Perp DEX、NFT、Gaming、L2、ZK、RWA、Restaking、Liquid Staking、DEX、Lending、Yield、Bridge、Privacy、Wallet、Infrastructure
如果主题