# Yichen Unified Search

统一编排关键词驱动的公共网页、AI 最新动态（含用户点名 AI HOT 的精选、日报与分类条目）、垂直领域和社交平台搜索，返回标准化候选；支持有界 X...

- Repository: https://github.com/mcncarl/yichen-skills (5140 stars)
- Category: Writing
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add mcncarl/yichen-skills --skill yichen-unified-search -g -a claude-code -y`
Codex: `npx skills add mcncarl/yichen-skills --skill yichen-unified-search -g -a codex -y`
Cursor: `npx skills add mcncarl/yichen-skills --skill yichen-unified-search -g -a cursor -y`
Gemini CLI: `npx skills add mcncarl/yichen-skills --skill yichen-unified-search -g -a gemini-cli -y`

## Description

统一编排关键词驱动的公共网页、AI 最新动态（含用户点名 AI HOT 的精选、日报与分类条目）、垂直领域和社交平台搜索，返回标准化候选；支持有界 X Research、显式站点 Map，以及本次搜索所得候选的轻量核验。不用于读取或下载用户直接给出的已知 URL，此类任务使用 yichen-content-archive。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 逸尘统一搜索

按“确定范围 → 离线路由 → 执行候选搜索 → 标准化与核验”处理任务。保留用户指定的平台、关键词和时间，不把候选当成已核实事实。

## 固定边界

- 只处理当轮目标所需的公开内容。不发帖、评论、点赞、关注、私信或改变账号状态；不读取、同步或搜索私人收藏、书签、个人 Feed、群组、通知、私信、草稿或后台。
- 绝对不得操控微信桌面或移动端 UI。公众号只走匿名公共搜索。
- 不下载媒体、不归档、不建长期数据库、不运行定时监控。用户给出已知 URL、URL 文件或要求读取/下载/归档已确认候选时，交给 `$yichen-content-archive`，传递动作、范围和输出位置；用户当轮已明确授权且范围未变时不重复询问，搜索候选只有经用户当轮点名才算已确认；搜索不授予下载、私域、登录态或费用权限。
- 不绕过验证码、登录墙或风控。以下明确列出的只读登录态路线以外，不升级账号访问。后端失败与零结果分开报告；未知字段保留 `null`。
- 查询和候选 URL 会发送给计划指定的服务。不得包含密码、Cookie、个人数据、商业秘密或其他敏感内容；凭证处理与各服务的数据流见 [访问与凭证边界](references/access-boundaries.md)。

## 离线路由

下文 `SKILL_DIR` 指本 Skill 的安装目录，`YICHEN_SKILLS_ROOT` 指同级 Skills 根目录；使用前按实际安装位置设置并导出这两个变量。

```bash
python3 "${SKILL_DIR}/scripts/route_search.py" \
  --query "检索词" --platform auto --mode search --limit 10
```

路由器不联网。执行前检查 `status`、`authorization`、`steps` 和 `limitations`。`invalid_request` 无可执行步骤，CLI 退出码为 2（参数解析错误同样输出带 reason 的 JSON）；依据提示在已授权范围内调整参数，不把它当成零结果。每个步骤的 `argv` 按数组逐元素执行，禁止拼接成 shell 字符串；所有脚本都支持 `python3 -I` 调用。范围清楚时直接执行，不要求用户逐项重复确认。

| 目标 | 路线与使用方式 |
|---|---|
| 普通网页、概念/教程、批量关键词 | AnySearch；`anysearch_adapter.py` 输出统一 envelope |
| 垂直领域 | AnySearch 垂直域须先用路由器生成的 `anysearch_adapter.py sub-domains --domain <name>` 发现子域与全部必填参数（`--domain` 只能配 `--platform web`，名称须匹配 `^[a-z][a-z0-9_]{0,40}$`；原生平台带 `--domain`/`--hybrid` 一律 `invalid_request`）；只有 `status=completed` 才可直接使用，partial/failed 时读 `directory_text` 再判断 |
| AI 主题且具有新闻/最近/发布意图 | AI HOT 精选；明确“日报”才用日报，明确“全部”才用全量；严格时间仍需核对原文 |
| 指定平台站内搜索 | 平台意图优先于 AI HOT；使用计划中的平台适配器 |
| 多平台或多个关键词 | 每个原始查询必须有执行或拆分记录，不能丢弃；不同平台意图返回 `query_routes`，按平台拆分并显式传 `--platform` |
| 公开站点链接枚举 | 仅显式 `--mode site-map`，Firecrawl 最多 100 条同源且位于种子路径范围内的候选，不读正文 |
| 本次搜索所得候选核验 | 默认 AnySearch；仅显式 `--verify-backend firecrawl` 才用 Firecrawl |

The rest: https://github.com/mcncarl/yichen-skills/blob/HEAD/yichen-unified-search/SKILL.md
