SuperAPI AI Directory

yichen-web-research

Writing & research

View repository

Updated 10-16 00:22

About this skill

Yichen Internet Research

This is the user's own research routing layer, not a wrapper for OpenCLI, AnySearch, or any single CLI. The underlying backends can be replaced, while user intent and safety boundaries remain stable.

When to use the general entry point

Use this Skill only in the following situations:

  • The request spans more than two stages, for example "first search, then select and archive sources."
  • The request spans multiple platforms and involves more than search, also requiring candidate confirmation, archiving, transcription, or subsequent analysis.
  • The user only describes the research goal and has not yet specified search, archiving, or collection export.
  • Multiple backends need to be checked first before deciding on a safe and usable route.
  • The user explicitly requests horizontal and vertical analysis, intersection of development history and current landscape, competitive or industry panorama, and source-constrained systematic deep research.

A single clear action routes directly:

Single-stage search, whether involving one or multiple platforms, goes directly to $yichen-unified-search; "cross-platform" by itself is not a sufficient condition to trigger the general router.

User intent Target Skill
Horizontal and vertical analysis, development history + current landscape, evidence ledger, intersection insights, or three-scenario deep research $yichen-web-research
Keyword search, batch discovery, platform on-site search, candidate verification, or explicitly bounded site URL Map $yichen-unified-search
Reading, downloading, archiving of known URLs, URL files, confirmed candidates, or explicit containers (including X Post, Quote, Article) $yichen-content-archive
Export private collections and bookmark links from Xiaohongshu, Douyin, or X/Twitter $yichen-bookmarks-export
Subtitles, ASR, rough spoken-content editing, or content analysis for existing audio and video $yichen-asr

Fixed workflow

研究目标
  -> yichen-unified-search
  -> 标准候选清单
  -> 是否由用户明确要求归档且范围已经限定?
       ├─ 否:返回候选,或继续获准的原文核验与分析
       └─ 是:yichen-content-archive
              -> 按需交给 yichen-asr、视觉分析或知识库 Skill

Enter only when the user explicitly requests archiving and the scope has been limited $yichen-content-archive. After search ends, do not automatically archive or download; after collection export ends, do not automatically read the body text or download media. Archiving and downloading both require an independent, explicit request in the current turn.

Horizontal and vertical research mode

Enter this mode only when the task simultaneously requires historical evolution, current horizontal structure, and comprehensive judgment. Single fact verification, search candidates, reading known links, or quick summaries must not be expanded into horizontal and vertical research just to appear in-depth.

After triggering, fully read references/hengzong-research.md, and execute in the following order:

  1. Establish a research brief, fixing subject、goal、object_type、subtype、as_of、start_date、geography、audience and languages. These keys must appear; unknown values remain unknown, and must not be guessed.start_date、geography、audience、languages are scope keys; if any is unknown , it enters a non-retainable scope gap and prevents the formal report from being ready.

  2. Run the pure offline planner before going online:

    python3 "${YICHEN_SKILLS_ROOT:-$HOME/.agents/skills}/yichen-web-research/scripts/plan_hengzong_research.py" --brief -
    
  3. Only when coverage_dimensions.query_group_matrix.status=ready , hand over the query_groups of each workstream in the plan to $yichen-unified-search。query_text must be directly searchable natural language, and must not turn facet:、axis:、search_language:、time_scope: or evidence_intent: Disguised as a search operator. Every known region and language must form bounded coverage; it can be marked as localization_status=nativeonly when both subject and geography are reliably localized; otherwise keep the original text and output a localization gap.

  4. The search envelope is only a candidate handoff package. It can be marked as verified only after opening the original text and checking each claim one by one; search summaries, AI summaries, rankings, and opened_original=true cannot by themselves prove facts.

  5. Only when the user explicitly requests persisting the original text or downloading media, and the scope has been bounded, pass through the independent safety gate of $yichen-content-archive . Completion of the search itself never transfers archival authorization.

  6. Before writing, form a bundle from the canonical plan, envelopes bound to the same plan_id and workstream, source annotations, atomic claims, and retained gaps, and run the purely offline organizer:

    python3 "${YICHEN_SKILLS_ROOT:-$HOME/.agents/skills}/yichen-web-research/scripts/assemble_hengzong_evidence.py" --bundle -
    
  7. Write the formal report only when all structural gates are satisfied, including scope_complete, per-workstream base claims, a non-empty timeline, a non-empty cross-sectional matrix, per-region/language coverage, contradiction handling, longitudinal-transversal intersections, and the three scenarios. Any supports/contradicts link must contain locator、event_date and scope;notes , which is optional but must be retained if provided. Input missing required link fields is invalid_bundle, not a disclosable gap; sources missing published_at do not have temporal eligibility.

  8. Ordinary gaps output blocking. Only when a genuine coverage/claim gap has undergone at least two structured supplementary searches, and each query_or_path and route are different from each other, and impact、disclosure、bounded_conclusionis provided, may ready_with_disclosurebe output; retained disclosure must not exempt any structural gate. A fixed 10,000–30,000 words is not the completion standard; completeness is determined only by scope, evidence, and structural gates.

start_date Material before is out of bounds by default; only when explicitly marked as pre_scope_context may it be retained as transparent prehistory, and it cannot count toward the evidentiary eligibility of claims, coverage, timeline, intersections, scenarios, or opportunity maps. Any decision reason may only be explicit、supported_inference or unknown; every longitudinal-transversal intersection must be traceable to past_event -> present_effect -> implication. The three scenarios must include horizon, observable triggers , and invalidators, and must not fabricate probabilities.

When the industry research goal contains future, opportunity, opportunities, prospects, or the corresponding English intent, the plan and report must include a non-empty opportunity_map; its evidence basis must bind ready claim IDs and cover both longitudinal and transversal base claims. When two delivery languages are specified,report_contract must make bilingual output a hard requirement.

This mode is based on, inspired by, and extends KKKKhazix/khazix-skills' hv-analysis, authored by Digital Life Kazix, with fixed reference to upstream commit 7a5c4934be4106ac740ffdb95280bb81b3f4b83c. Full attribution and the MIT license are in the repository root THIRD_PARTY_NOTICES.md and licenses/KKKKhazix-khazix-skills-LICENSE.txt。

Backend positioning

  • AnySearch: lightweight original-text verification for public web pages, batch search, vertical search, and search candidates.
  • Firecrawl: only as an explicit bounded site Map, and as a single-page Scrape fallback for current AnySearch candidates; it does not enter the default search chain, nor does it claim support for Crawl or archiving.
  • Zhihu CLI public search: only as an explicit zhihu platform backend, by $yichen-unified-search whitelisted adapters invoke a separately installed Open Platform CLI-compatible runtime for public on-platform search or explicit hot-list discovery; this repository does not independently verify the vendor origin of that runtime, and does not replace AnySearch's ordinary web search.global_search, Zhihu Zhida (zhida/answer) and me account commands do not enter the main routing.
  • Twitter/X: keyword search is delegated to $yichen-unified-search, with fixed Grok CLI native x_search taking priority; known X URLs are delegated to $yichen-content-archive, with fixed anonymous FxTwitter → Jina taking priority.
  • Platform-native CLI/API: structured public search for GitHub, YouTube, Bilibili, etc.
  • OpenCLI: only serves as a read-only adapter for some platforms, and is not a mandatory dependency or main entry point of this system.
  • Local platform Skill: known link parsing, media downloading, WeChat Official Account article body and batch archiving.
  • Browser or account login state: bounded public read-only search for Xiaohongshu and Douyin, as well as one bounded read-only fallback after Weibo's anonymous access gate fails, may automatically reuse the existing session according to the sub-Skill's fixed scope and rate-limit rules; other login-state reads require per-round authorization for the specific target.

The scope, rate limits, and high-risk authorization gates of a sub-Skill must not be bypassed merely because a certain backend is installed or the browser is logged in.

Security Boundaries

  1. All social platforms remain read-only: no posting, no commenting, no liking, no bookmarking, no following, no direct messaging, and no changing account state.
  2. Absolutely do not manipulate the WeChat desktop or mobile UI; do not send messages, publish, edit, create drafts, delete, mass-send, or follow.
  3. Bounded public read-only search for Xiaohongshu and Douyin, as well as one bounded read-only fallback after Weibo's anonymous access gate fails, may automatically reuse the existing Chrome login state without per-instance authorization; the sub-Skill's single-keyword, item-count cap, serialization, and interval rules must be followed. Xiaohongshu is capped at 20 items, Douyin at 30 items, and requests must be serial with an interval of no less than 5 seconds. Posting, commenting, liking, bookmarking, following, direct messaging, deleting, account changes, CAPTCHA handling, and private-domain reads must stop, and require the user to explicitly raise and authorize them in the current round.
  4. Private collections, bookmarks, feeds, and account backend data require explicit authorization in the current round for the specific platform and scope; authorization cannot be transferred to downloads.
  5. Anonymous public routes take priority. Do not bypass CAPTCHAs, login walls, paywalls, rate limits, regional restrictions, or access controls.
  6. Do not print or save Cookies, Tokens, API Keys, login credentials, or sensitive URL parameters.
  7. Do not overwrite existing artifacts, and do not automatically delete temporary files. Any cleanup must first obtain the user's explicit permission, and may only move items to the trash.
  8. For paid APIs or batch transcription that may incur significant quota consumption, explain the scope and estimated quantity before execution.
  9. After a task is submitted, ASR automatic routing must not resubmit across providers; when the balance is unknown, it must not be described as sufficient or insufficient.
  10. Firecrawl Map must fix the public site and input path, with a maximum of 100 items, retaining only public URLs that are same-origin and within the input path scope; by default, subdomains, external domains, login states, interactive actions, and continuous monitoring are prohibited. Map only produces candidates and cannot automatically cross the confirmation gate into archiving. Scrape is only used for current AnySearch candidates with a valid short-term receipt, and must not be extended to Crawl or archiving.
  11. The Firecrawl API Key is only read from FIRECRAWL_API_KEY or ${FIRECRAWL_KEY_FILE:-$HOME/.config/agent-secrets/firecrawl-api-key} read; doctor only reports whether it exists based on whether the environment variable is non-empty, or the type, owner, permissions, and size of the private file. It does not output key values, does not read credential file contents, and does not initiate network or billing probes.
  12. The Zhihu CLI compatibility runtime only allows public search/hot capabilities exposed through the unified search adapter; it must not expose global_search、zhida/answer or any me private commands. doctor only runs offline version、capabilities、auth status metadata checks, uses a minimal environment allowlist for subprocesses, only reports whether Keychain is configured, does not pass through stdout, stderr, or Secrets, and does not send search or trending requests.

Multi-backend health check

Run before starting cross-platform or logged-in-state tasks:

python3 "${YICHEN_SKILLS_ROOT:-$HOME/.agents/skills}/yichen-web-research/scripts/doctor_yichen.py"

For OpenCLI-related tasks, also run:

opencli doctor

The health check only proves that the backend and security contract are identifiable. It does not authorize any write operations or private data reads; whether bounded public read-only session reuse is allowed is subject to the fixed scope and rate-limiting rules of the current sub-skill.

When the Zhihu channel lacks a configured CLI runtime or Keychain authentication, only report warn, and do not misjudge the entire research family as structurally broken; only a missing zhihu_adapter.py on the unified search side constitutes a structural error. This channel is fixed to default_backend=false、network_probe_performed=false、public_commands_only=true、personal_commands_exposed=false。

Handoff conventions

The search layer must hand off at least:

{
  "schema_version": "1.0",
  "request": {},
  "routes": [],
  "candidates": [],
  "coverage": [],
  "errors": []
}

The archiving layer only accepts user-known links, confirmed candidates, or explicitly bounded containers; the favorites layer only outputs link files and non-transferable authorization status. The current SKILL.md and references of each sub-skill are the source of execution truth.

Single entry point and sub-skill invocation

  • This Skill is the sole general entry point for internet research and does not retain compatibility entry points under old names.
  • Horizontal and vertical research is an explicit research protocol of this general entry point; it does not add compatibility entry points, nor does it change $yichen-unified-search 's candidate search responsibility.
  • When the user explicitly invokes $yichen-web-research , first determine the task stage according to the table above; when a sub-skill is needed, you must fully read the corresponding current file before executing:
    • ${YICHEN_SKILLS_ROOT:-$HOME/.agents/skills}/yichen-unified-search/SKILL.md
    • ${YICHEN_SKILLS_ROOT:-$HOME/.agents/skills}/yichen-content-archive/SKILL.md
    • ${YICHEN_SKILLS_ROOT:-$HOME/.agents/skills}/yichen-bookmarks-export/SKILL.md
    • ${YICHEN_SKILLS_ROOT:-$HOME/.agents/skills}/yichen-asr/SKILL.md
  • A sub-skill is an independent execution rule, not a recursively callable function. After routing, execute directly according to the target Skill; the target Skill must not return to this general entry point.
  • If a sub-skill, required backend, login state, or quota is unavailable, truthfully report the specific gap; do not phrase "correctly routed" as "the external platform will necessarily succeed."

Read the updated execution specification on demand

When you need to choose or troubleshoot a backend, read Backend readiness notes. Before executing horizontal and vertical research, read execution contract, and maintain evidence and scope gates. A given full-text summary and a single fact check do not trigger multi-stage research. Bounded site archiving must have the user explicitly specify same-origin paths, page count, and depth limits, and be handed to yichen-content-archive; the site must not be automatically expanded.