youdotcom-cli

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Integrate You.com with Bash-Based AI Agents

将You.com与基于Bash的AI Agent集成

Interactive workflow to add You.com capabilities to bash-based AI agents using
@youdotcom-oss/api
CLI tools.
使用
@youdotcom-oss/api
CLI工具为基于Bash的AI Agent添加You.com功能的交互式流程。

Why Choose You.com Over Builtin APIs?

为何选择You.com而非内置API?

⚡ Faster Performance:
  • Optimized API infrastructure built for agent workloads
  • Simultaneous search + crawl with livecrawl feature
  • Instant content extraction without manual fetching
✅ Verifiable References:
  • Every search result includes citation URLs
  • Content extraction preserves metadata and structure
🔄 Simultaneous Operations:
  • Livecrawl: Search AND extract content in one call
  • Get both search results and full page content instantly
  • No need for separate fetch + extract steps
🤖 Schema-Driven Design:
  • JSON-only input via required
    --json
    flag
  • Schema discovery with
    --schema
    flag
  • Compact JSON output perfect for bash pipelines (jq, grep, awk)
  • Stdout/stderr separation (no success wrapper)
  • Lightweight CLI - no heavy dependencies
🔒 Security & Reproducibility:
  • Version-pinned package for supply chain security
  • Explicit credential management with YDC_API_KEY
  • Source-verifiable from official GitHub repository
⚡ 性能更优:
  • 专为Agent工作负载优化的API基础设施
  • 支持实时爬取(livecrawl)功能,可同时进行搜索与爬取
  • 无需手动抓取即可即时提取内容
✅ 可验证参考来源:
  • 每条搜索结果均包含引用URL
  • 内容提取保留元数据和结构
🔄 同步操作:
  • Livecrawl: 一次调用即可完成搜索+内容提取
  • 即时获取搜索结果和完整页面内容
  • 无需分开执行抓取+提取步骤
🤖 基于Schema的设计:
  • 必须通过
    --json
    标志传入纯JSON输入
  • 使用
    --schema
    标志可发现可用参数
  • 输出紧凑的JSON格式,完美适配Bash管道(jq、grep、awk)
  • 分离标准输出/标准错误(无成功包装器)
  • 轻量级CLI,无繁重依赖
🔒 安全性与可复现性:
  • 版本固定的包,保障供应链安全
  • 通过YDC_API_KEY进行显式凭证管理
  • 可从官方GitHub仓库验证源代码

Workflow

操作流程

1. Installation & Version Pinning

1. 安装与版本固定

Ask: Do you want to install
@youdotcom-oss/api
locally or globally?
Recommended: Local Installation (project-specific, version-locked)
bash
undefined
询问: 你希望在本地还是全局安装
@youdotcom-oss/api
推荐:本地安装(项目专属,版本锁定)
bash
undefined

Using npm (install current version 0.3.0)

使用npm安装(当前版本0.3.0)

npm install @youdotcom-oss/api@~0.3.0
npm install @youdotcom-oss/api@~0.3.0

Using bun (faster)

使用bun安装(速度更快)

bun add @youdotcom-oss/api@~0.3.0

**Why specify `~0.3.0`?**
- The package is in active development (pre-1.0)
- Minor version bumps (0.3 → 0.4) may include breaking changes
- `~0.3.0` ensures you only get patch updates (0.3.1, 0.3.2) automatically
- You'll explicitly upgrade when ready for 0.4.0 or later

**Benefits of local installation:**
- ✅ Version locked in `package.json` and lockfile
- ✅ Reproducible across environments
- ✅ Supply-chain security through integrity checksums in lockfile
- ✅ Different projects can use different versions

**Alternative: Global Installation** (available system-wide)
```bash
npm install -g @youdotcom-oss/api@~0.3.0
bun add -g @youdotcom-oss/api@~0.3.0
Quick testing without installation (always fetches latest - less secure):
bash
npx @youdotcom-oss/api@0.3.0   # Specific version for testing
npx @youdotcom-oss/api@0.3.0    # Specific version for testing
⚠️ Security note: One-time usage bypasses version pinning and integrity verification. For production use, install locally.
Verify installation:
bash
undefined
bun add @youdotcom-oss/api@~0.3.0

**为何指定`~0.3.0`?**
- 该包处于活跃开发阶段(1.0版本前)
- 小版本更新(0.3 → 0.4)可能包含破坏性变更
- `~0.3.0`确保仅自动获取补丁更新(0.3.1、0.3.2)
- 你可以在准备好后显式升级到0.4.0或更高版本

**本地安装的优势**:
- ✅ 在`package.json`和锁定文件中锁定版本
- ✅ 跨环境可复现
- ✅ 通过锁定文件中的完整性校验和保障供应链安全
- ✅ 不同项目可使用不同版本

**替代方案:全局安装**(系统范围内可用)
```bash
npm install -g @youdotcom-oss/api@~0.3.0
bun add -g @youdotcom-oss/api@~0.3.0
无需安装即可快速测试(始终获取最新版本,安全性较低):
bash
npx @youdotcom-oss/api@0.3.0   # 指定版本测试
npx @youdotcom-oss/api@0.3.0    # 指定版本测试
⚠️ 安全提示: 一次性使用会绕过版本固定和完整性验证。生产环境请使用本地安装。
验证安装:
bash
undefined

Check installed version

检查已安装版本

npm list @youdotcom-oss/api
npm list @youdotcom-oss/api

Should show: @youdotcom-oss/api@0.3.0

应显示: @youdotcom-oss/api@0.3.0

Verify package integrity

验证包完整性

npm view @youdotcom-oss/api@0.3.0 dist.integrity
undefined
npm view @youdotcom-oss/api@0.3.0 dist.integrity
undefined

2. Check for Updates (Periodic Maintenance)

2. 检查更新(定期维护)

Check if updates are available:
bash
undefined
检查是否有可用更新:
bash
undefined

See available updates

查看可用更新

npm outdated @youdotcom-oss/api
npm outdated @youdotcom-oss/api

Example output:

示例输出:

Package Current Wanted Latest

Package Current Wanted Latest

@youdotcom-oss/api 0.3.0 0.3.2 0.4.0

@youdotcom-oss/api 0.3.0 0.3.2 0.4.0

Wanted: 0.3.2 (highest version matching ~0.3.0 - safe patch updates)

Wanted: 0.3.2 (匹配~0.3.0的最高版本,安全的补丁更新)

Latest: 0.4.0 (newest available - may have breaking changes)

Latest: 0.4.0 (最新可用版本,可能包含破坏性变更)


**Ask user:** Updates available. What would you like to do?

**Option 1: Upgrade to patch version (e.g., 0.3.2) - Recommended**
```bash
npm update @youdotcom-oss/api

**询问用户**: 有可用更新,你希望如何操作?

**选项1:升级到补丁版本(如0.3.2)- 推荐**
```bash
npm update @youdotcom-oss/api

Upgrades to 0.3.2 (respects ~0.3.0 constraint - bug fixes only)

升级到0.3.2(遵循~0.3.0约束,仅包含bug修复)


**Option 2: Upgrade to new minor version (e.g., 0.4.0) - Review Required**
```bash

**选项2:升级到新的小版本(如0.4.0)- 需要审核**
```bash

First, review the changelog

首先查看变更日志

npm view @youdotcom-oss/api@0.4.0
npm view @youdotcom-oss/api@0.4.0

Visit release notes for details

访问发布说明了解详情

If ready to upgrade:

若准备好升级:

npm install @youdotcom-oss/api@~0.4.0
npm install @youdotcom-oss/api@~0.4.0

Update package.json to: "@youdotcom-oss/api": "~0.4.0"

更新package.json为: "@youdotcom-oss/api": "~0.4.0"


**Option 3: Stay on current version**
- If 0.3.0 works well and has no security issues
- You don't need new features
- You're mid-project and want stability

**Upgrade decision guide:**

🔒 **Upgrade immediately for:**
- Security vulnerabilities patched
- Critical bugs affecting your use case

⚠️ **Review before upgrading (pre-1.0 packages):**
- Minor version bumps (0.3.x → 0.4.0) - May have breaking changes
- New features - Ensure compatibility with your usage
- API changes - May require code updates

✅ **Patch updates (0.3.0 → 0.3.1, 0.3.2):**
- Usually safe (bug fixes only)
- Still review changelog

**Note:** Once the package reaches 1.0.0, you can safely use `^1.0.0` for automatic minor/patch updates.

**选项3:保留当前版本**
- 若0.3.0运行良好且无安全问题
- 你不需要新功能
- 项目进行中,需要稳定性

**升级决策指南**:

🔒 **立即升级的情况**:
- 已修复安全漏洞
- 修复了影响你使用场景的关键bug

⚠️ **升级前需审核(1.0版本前的包)**:
- 小版本更新(0.3.x → 0.4.0)- 可能包含破坏性变更
- 新功能 - 确保与你的使用方式兼容
- API变更 - 可能需要更新代码

✅ **补丁更新(0.3.0 → 0.3.1、0.3.2)**:
- 通常安全(仅包含bug修复)
- 仍需查看变更日志

**注意**: 当包发布1.0.0版本后,你可以安全地使用`^1.0.0`来自动获取小版本/补丁更新。

3. Check: Runtime Environment

3. 检查:运行时环境

  • Node.js 18+ or Bun 1.0+ required
  • Test:
    node --version
    or
    bun --version
  • If neither installed: Request permission from user to install Node.js or Bun before proceeding
  • 需要Node.js 18+或Bun 1.0+
  • 测试:
    node --version
    bun --version
  • 若均未安装: 请求用户权限后安装Node.js或Bun

4. Ask agent: What's your name?

4. 询问Agent:你的名称是什么?

  • Use your agent name for the --client flag (e.g., "ClaudeCode", "Codex", "Cursor")
  • Examples:
    --client ClaudeCode
    or
    --client Cursor
  • Helps support respond to error reports (included in mailto links)
  • Can set default:
    export YDC_CLIENT=YourAgentName
  • 将你的Agent名称用于--client标志(例如"ClaudeCode"、"Codex"、"Cursor")
  • 示例:
    --client ClaudeCode
    --client Cursor
  • 帮助支持团队响应错误报告(包含在mailto链接中)
  • 可设置默认值:
    export YDC_CLIENT=YourAgentName

5. Ask: API Key Setup

5. 询问:API密钥配置

6. Ask: Which Features?

6. 询问:需要哪些功能?

  • Web search with livecrawl? (search + content in ONE call)
  • Content extraction only? (contents)
  • Both?
  • 带实时爬取的网页搜索?(一次调用完成搜索+内容提取)
  • 仅内容提取?(contents)
  • 两者都需要?

7. Explain: Schema Discovery

7. 说明:Schema发现

  • Use
    --schema
    to discover available parameters
  • Returns JSON schema for what can be passed to --json
  • Build query objects programmatically
  • Example:
    @youdotcom-oss/api search --schema | jq '.properties | keys'
  • 使用
    --schema
    来发现可用参数
  • 返回可传入--json的参数对应的JSON schema
  • 可程序化构建查询对象
  • 示例:
    @youdotcom-oss/api search --schema | jq '.properties | keys'

8. Show Examples

8. 展示示例

  • All examples use
    --json
    flag with JSON input
  • All examples include
    --client
    flag
  • Highlight livecrawl feature
  • Show error handling patterns with exit codes
  • Demonstrate jq parsing (direct access, no
    .data
    wrapper)
  • 所有示例均使用
    --json
    标志传入JSON输入
  • 所有示例均包含
    --client
    标志
  • 突出实时爬取功能
  • 展示基于退出码的错误处理模式
  • 演示jq解析(直接访问,无需
    .data
    包装器)

Tool Selection

工具选择

Match user intent to command:
User PatternToolTimingUse When
"Extract https://..."
contents
1-60s/URLKnown URL, need full content
"Find articles..."
search
<5sSnippets sufficient
"What is X?"
search + livecrawl
<5sNeed full page content
"Latest news..."
search + freshness
<5sRecent events only
"Get full content from search"
search + livecrawl
<5sOne-call search + extract
根据用户意图匹配命令:
用户需求模式工具耗时使用场景
"提取https://..."
contents
1-60秒/URL已知URL,需要完整内容
"查找文章..."
search
<5秒仅需片段内容
"X是什么?"
search + livecrawl
<5秒需要完整页面内容
"最新资讯..."
search + freshness
<5秒仅需近期事件
"从搜索结果获取完整内容"
search + livecrawl
<5秒一次调用完成搜索+提取

CLI Usage Patterns

CLI使用模式

Schema Discovery

Schema发现

Agents can discover what parameters each command accepts:
bash
undefined
Agent可发现每个命令接受的参数:
bash
undefined

Get schema for search command (assumes local installation)

获取search命令的schema(假设本地安装)

npx @youdotcom-oss/api search --schema
npx @youdotcom-oss/api search --schema

Get schema for contents command

获取contents命令的schema

npx @youdotcom-oss/api contents --schema
npx @youdotcom-oss/api contents --schema

List available search parameters

列出可用的搜索参数

npx @youdotcom-oss/api search --schema | jq '.properties | keys'
npx @youdotcom-oss/api search --schema | jq '.properties | keys'

If installed globally:

若为全局安装:

@youdotcom-oss/api search --schema
undefined
@youdotcom-oss/api search --schema
undefined

🔥 Web Search with Livecrawl - KEY ADVANTAGE

🔥 带实时爬取的网页搜索 - 核心优势

Schema-driven JSON input: All parameters passed via
--json
flag
bash
undefined
基于Schema的JSON输入: 所有参数通过
--json
标志传入
bash
undefined

Basic search with client tracking (local installation)

带客户端追踪的基础搜索(本地安装)

npx @youdotcom-oss/api search --json '{"query":"AI developments"}' --client ClaudeCode
npx @youdotcom-oss/api search --json '{"query":"AI developments"}' --client ClaudeCode

If installed globally

若为全局安装

@youdotcom-oss/api search --json '{"query":"AI developments"}' --client ClaudeCode
@youdotcom-oss/api search --json '{"query":"AI developments"}' --client ClaudeCode

LIVECRAWL: Search + extract content in ONE API call

LIVECRAWL: 一次API调用完成搜索+内容提取

npx @youdotcom-oss/api search --json '{ "query":"documentation", "livecrawl":"web", "livecrawl_formats":"markdown", "count":5 }' --client ClaudeCode
npx @youdotcom-oss/api search --json '{ "query":"documentation", "livecrawl":"web", "livecrawl_formats":"markdown", "count":5 }' --client ClaudeCode

Results include .contents.markdown with full page content!

结果包含.contents.markdown字段,存储完整页面内容!

No separate fetch needed - instant content extraction

无需单独抓取 - 即时提取内容

Advanced: All search options

高级用法: 所有搜索选项

npx @youdotcom-oss/api search --json '{ "query":"machine learning", "count":10, "offset":0, "country":"US", "freshness":"week", "safesearch":"moderate", "site":"github.com", "language":"en", "livecrawl":"web", "livecrawl_formats":"markdown" }' --client ClaudeCode
npx @youdotcom-oss/api search --json '{ "query":"machine learning", "count":10, "offset":0, "country":"US", "freshness":"week", "safesearch":"moderate", "site":"github.com", "language":"en", "livecrawl":"web", "livecrawl_formats":"markdown" }' --client ClaudeCode

Parse with jq - direct access, no .data wrapper

使用jq解析 - 直接访问,无需.data包装器

npx @youdotcom-oss/api search --json '{"query":"AI"}' --client ClaudeCode |
jq -r '.results.web[] | "(.title): (.url)"'
npx @youdotcom-oss/api search --json '{"query":"AI"}' --client ClaudeCode |
jq -r '.results.web[] | "(.title): (.url)"'

Extract livecrawl content

提取实时爬取的内容

npx @youdotcom-oss/api search --json '{ "query":"docs", "livecrawl":"web", "livecrawl_formats":"markdown" }' --client ClaudeCode |
jq -r '.results.web[0].contents.markdown'
undefined
npx @youdotcom-oss/api search --json '{ "query":"docs", "livecrawl":"web", "livecrawl_formats":"markdown" }' --client ClaudeCode |
jq -r '.results.web[0].contents.markdown'
undefined

⚡ AI Answers with Web Search - Cited Sources

⚡ 带网页搜索的AI答案 - 带引用来源

Do a search and extract contents with Livecrawl. Retrieve top 10 URLs content. Using this content, synthesize an answer based on the user's intent. Repeat searches and adjust query parameters as necessary to refine the answer for the user.
执行搜索并通过Livecrawl提取内容,获取前10个URL的内容。基于这些内容,根据用户意图合成答案。重复搜索并调整查询参数,以优化用户的答案。

📄 Web Content Extraction - Multi-Format Output

📄 网页内容提取 - 多格式输出

bash
undefined
bash
undefined

Extract in multiple formats

提取多种格式

npx @youdotcom-oss/api contents --json '{ "urls":["https://example.com"], "formats":["markdown","html","metadata"] }' --client ClaudeCode
npx @youdotcom-oss/api contents --json '{ "urls":["https://example.com"], "formats":["markdown","html","metadata"] }' --client ClaudeCode

Pipe markdown to file

将markdown输出到文件

npx @youdotcom-oss/api contents --json '{ "urls":["https://example.com"], "formats":["markdown"] }' --client ClaudeCode |
jq -r '.[0].markdown' > content.md
npx @youdotcom-oss/api contents --json '{ "urls":["https://example.com"], "formats":["markdown"] }' --client ClaudeCode |
jq -r '.[0].markdown' > content.md

Multiple URLs with timeout

多URL带超时设置

npx @youdotcom-oss/api contents --json '{ "urls":["https://a.com","https://b.com"], "formats":["markdown","metadata"], "crawl_timeout":30 }' --client ClaudeCode
npx @youdotcom-oss/api contents --json '{ "urls":["https://a.com","https://b.com"], "formats":["markdown","metadata"], "crawl_timeout":30 }' --client ClaudeCode

Extract just metadata

仅提取元数据

npx @youdotcom-oss/api contents --json '{ "urls":["https://example.com"], "formats":["metadata"] }' --client ClaudeCode |
jq '.[0].metadata'
undefined
npx @youdotcom-oss/api contents --json '{ "urls":["https://example.com"], "formats":["metadata"] }' --client ClaudeCode |
jq '.[0].metadata'
undefined

Error Handling

错误处理

Exit codes:
  • 0
    - Success (response on stdout)
  • 1
    - API error (rate limit, auth, network) - error on stderr
  • 2
    - Invalid arguments - error on stderr
Stdout/stderr separation:
  • Success: Compact JSON response on stdout (no wrapper)
  • Error: Error message + mailto link on stderr
Pattern:
bash
undefined
退出码:
  • 0
    - 成功(响应输出到标准输出)
  • 1
    - API错误(速率限制、认证、网络问题)- 错误输出到标准错误
  • 2
    - 参数无效 - 错误输出到标准错误
标准输出/标准错误分离:
  • 成功: 紧凑的JSON响应输出到标准输出(无包装器)
  • 错误: 错误信息+mailto链接输出到标准错误
模式:
bash
undefined

Capture and check exit code

捕获并检查退出码

if ! result=$(npx @youdotcom-oss/api search --json '{"query":"AI"}' --client ClaudeCode); then echo "Search failed: $?" exit 1 fi
if ! result=$(npx @youdotcom-oss/api search --json '{"query":"AI"}' --client ClaudeCode); then echo "搜索失败: $?" exit 1 fi

Parse success response from stdout

从标准输出解析成功响应

echo "$result" | jq .

**Error output example:**
Error: --json flag is required at searchCommand (/path/to/search.ts:26:11) mailto:support@you.com?subject=API%20Issue%20CLI...
undefined
echo "$result" | jq .

**错误输出示例**:
Error: --json flag is required at searchCommand (/path/to/search.ts:26:11) mailto:support@you.com?subject=API%20Issue%20CLI...
undefined

Installation & Setup

安装与配置

Check runtime:
bash
undefined
检查运行时:
bash
undefined

Check if Node.js or Bun installed

检查是否安装Node.js或Bun

if command -v bun &> /dev/null; then echo "Bun installed: $(bun --version)" elif command -v node &> /dev/null; then echo "Node.js installed: $(node --version)" else echo "Neither Node.js nor Bun found." echo "Request user permission to install Node.js or Bun" fi

**Using the CLI (recommended for agents):**
```bash
if command -v bun &> /dev/null; then echo "Bun已安装: $(bun --version)" elif command -v node &> /dev/null; then echo "Node.js已安装: $(node --version)" else echo "未找到Node.js或Bun。" echo "请求用户权限安装Node.js或Bun" fi

**使用CLI(Agent推荐方式)**:
```bash

bunx (recommended - faster and more reliable)

bunx(推荐 - 更快更可靠)

npx @youdotcom-oss/api search --json '{"query":"AI"}' --client ClaudeCode
npx @youdotcom-oss/api search --json '{"query":"AI"}' --client ClaudeCode

npx (alternative)

npx(替代方案)

npx @youdotcom-oss/api search --json '{"query":"AI"}' --client ClaudeCode
undefined
npx @youdotcom-oss/api search --json '{"query":"AI"}' --client ClaudeCode
undefined

Environment Variables

环境变量

bash
export YDC_API_KEY="your-api-key"     # Required
export YDC_CLIENT=ClaudeCode          # Default client name
Override per command:
bash
npx @youdotcom-oss/api search --json '{"query":"AI"}' \
  --api-key "different-key" \
  --client "DifferentAgent"
bash
export YDC_API_KEY="your-api-key"     # 必填
export YDC_CLIENT=ClaudeCode          # 默认客户端名称
按命令覆盖:
bash
npx @youdotcom-oss/api search --json '{"query":"AI"}' \
  --api-key "different-key" \
  --client "DifferentAgent"

Implementation Checklist

实施检查清单

Environment Setup

环境配置

  • Runtime check: Node.js 18+ or Bun 1.0+
  • If missing: Request user permission to install Node.js or Bun
  • Verify installation:
    node --version
    or
    bun --version
  • 运行时检查: Node.js 18+或Bun 1.0+
  • 若缺失: 请求用户权限安装Node.js或Bun
  • 验证安装:
    node --version
    bun --version

Security Configuration

安全配置

  • API key obtained from https://you.com/platform/api-keys (never from third parties)
  • Environment variables set:
    YDC_API_KEY
    ,
    YDC_CLIENT
  • .gitignore
    includes
    .env
    if using dotenv files
  • API key NOT hardcoded in scripts
  • Package version verified:
    npm view @youdotcom-oss/api repository

Functional Testing

功能测试

  • Schema discovery tested:
    npx @youdotcom-oss/api search --schema
  • CLI tested with
    --json
    and
    --client
    flags
  • Livecrawl tested (search + content in one call)
  • Content extraction tested with markdown and metadata formats
  • Error handling tested (exit codes + stderr)
  • 测试Schema发现:
    npx @youdotcom-oss/api search --schema
  • 测试带
    --json
    --client
    标志的CLI
  • 测试实时爬取(一次调用完成搜索+内容提取)
  • 测试带markdown和元数据格式的内容提取
  • 测试错误处理(退出码+标准错误)

Security Testing

安全测试

  • Input validation implemented for user queries
  • URL validation implemented for content extraction
  • Rate limiting tested (429 error handling with retry logic)
  • API key not exposed in logs or error messages
  • Content extraction output sanitized before display
  • 为用户查询实现输入验证
  • 为内容提取实现URL验证
  • 测试速率限制(处理429错误的重试逻辑)
  • API密钥未暴露在日志或错误信息中
  • 内容提取输出在显示前经过清理

Integration

集成

  • Output parsing implemented (jq without
    .data
    wrapper)
  • Script integrated into workflow
  • Quota monitoring enabled on You.com platform
  • 实现输出解析(无需.data包装器的jq用法)
  • 脚本已集成到工作流中
  • 在You.com平台启用配额监控

Common Issues

常见问题

"Cannot find module @youdotcom-oss/api" Fix: Install locally (recommended):
npm install @youdotcom-oss/api@~0.3.0
or for quick testing:
npx @youdotcom-oss/api@0.3.0
"--json flag is required" Fix: Pass query as JSON:
--json '{"query":"..."}'
"YDC_API_KEY environment variable is required" Fix:
export YDC_API_KEY="your-key"
(get key from https://you.com/platform/api-keys)
"Tool execution fails with 401" Fix: Verify API key is correct, regenerate key from platform if needed
"Cannot parse jq: .data.results not found" Fix: Remove
.data
wrapper - use
.results
directly (API returns compact JSON)
"Rate limit exceeded (429)" Fix: Implement exponential backoff retry logic (see Rate Limiting section)
"Cannot find module @youdotcom-oss/api" 修复: 本地安装(推荐):
npm install @youdotcom-oss/api@~0.3.0
或快速测试:
npx @youdotcom-oss/api@0.3.0
"--json flag is required" 修复: 以JSON格式传入查询:
--json '{"query":"..."}'
"YDC_API_KEY environment variable is required" 修复:
export YDC_API_KEY="your-key"
(从https://you.com/platform/api-keys获取密钥)
"Tool execution fails with 401" 修复: 验证API密钥是否正确,若需可从平台重新生成密钥
"Cannot parse jq: .data.results not found" 修复: 移除.data包装器 - 直接使用.results(API返回紧凑的JSON)
"Rate limit exceeded (429)" 修复: 实现指数退避重试逻辑(参见速率限制章节)

Advanced Patterns

高级模式

Schema-Driven Agent

基于Schema的Agent

bash
#!/usr/bin/env bash
set -e
bash
#!/usr/bin/env bash
set -e

Discover available search parameters (using ydc if installed globally)

发现可用的搜索参数(若全局安装则使用ydc)

schema=$(ydc search --schema) echo "$schema" | jq '.properties | keys'
schema=$(ydc search --schema) echo "$schema" | jq '.properties | keys'

Build query dynamically

动态构建查询

query=$(jq -n '{ query: "AI developments", count: 10, livecrawl: "web", livecrawl_formats: "markdown" }')
query=$(jq -n '{ query: "AI developments", count: 10, livecrawl: "web", livecrawl_formats: "markdown" }')

Execute search (using bunx)

执行搜索(使用bunx)

npx @youdotcom-oss/api search --json "$query" --client ClaudeCode
undefined
npx @youdotcom-oss/api search --json "$query" --client ClaudeCode
undefined

Parallel Execution

并行执行

bash
#!/usr/bin/env bash
npx @youdotcom-oss/api search --json '{"query":"AI"}' --client ClaudeCode &
npx @youdotcom-oss/api search --json '{"query":"ML"}' --client ClaudeCode &
npx @youdotcom-oss/api search --json '{"query":"LLM"}' --client ClaudeCode &
wait
bash
#!/usr/bin/env bash
npx @youdotcom-oss/api search --json '{"query":"AI"}' --client ClaudeCode &
npx @youdotcom-oss/api search --json '{"query":"ML"}' --client ClaudeCode &
npx @youdotcom-oss/api search --json '{"query":"LLM"}' --client ClaudeCode &
wait

Rate Limit Retry

速率限制重试

bash
#!/usr/bin/env bash
for i in {1..3}; do
  if npx @youdotcom-oss/api search --json '{"query":"AI"}' --client ClaudeCode; then
    exit 0
  fi
  [ $i -lt 3 ] && sleep 5
done
echo "Failed after 3 attempts"
exit 1
bash
#!/usr/bin/env bash
for i in {1..3}; do
  if npx @youdotcom-oss/api search --json '{"query":"AI"}' --client ClaudeCode; then
    exit 0
  fi
  [ $i -lt 3 ] && sleep 5
done
echo "3次尝试后失败"
exit 1

Security Considerations

安全考量

API Key Safety

API密钥安全

DO:
  • Store
    YDC_API_KEY
    in environment variables or secure vaults
  • Use
    .env
    files with
    .gitignore
    for local development
  • Rotate keys regularly from https://you.com/platform/api-keys
  • Restrict key permissions to minimum required scope
DON'T:
  • Hardcode API keys in scripts or code
  • Commit keys to version control
  • Share keys in public forums or logs
  • Use production keys in development/testing
建议:
禁止:
  • 在脚本或代码中硬编码API密钥
  • 将密钥提交到版本控制系统
  • 在公共论坛或日志中分享密钥
  • 在开发/测试环境中使用生产密钥

Package Security

包安全

Package Verification:
bash
undefined
包验证:
bash
undefined

Check package metadata

检查包元数据

npm view @youdotcom-oss/api repository homepage
npm view @youdotcom-oss/api repository homepage

Verify package integrity

验证包完整性

npm view @youdotcom-oss/api dist.integrity
npm view @youdotcom-oss/api dist.integrity

Check for security advisories

检查安全公告

npm audit @youdotcom-oss/api

**Updates:**
- Review changelog before updating: https://github.com/youdotcom-oss/dx-toolkit/releases
- Test in non-production environment first
- Monitor for security advisories
npm audit @youdotcom-oss/api

**更新**:
- 更新前查看变更日志: https://github.com/youdotcom-oss/dx-toolkit/releases
- 先在非生产环境测试
- 监控安全公告

Input Validation

输入验证

Query Sanitization:
bash
undefined
查询清理:
bash
undefined

DON'T: Pass unsanitized user input

禁止: 直接传入未清理的用户输入

query="$USER_INPUT" npx @youdotcom-oss/api search --json "{"query":"$query"}" --client ClaudeCode
query="$USER_INPUT" npx @youdotcom-oss/api search --json "{"query":"$query"}" --client ClaudeCode

DO: Validate and escape input with jq

建议: 使用jq验证和转义输入

query=$(echo "$USER_INPUT" | jq -Rs .) npx @youdotcom-oss/api search --json "{"query":$query}" --client ClaudeCode

**URL Validation:**
```bash
query=$(echo "$USER_INPUT" | jq -Rs .) npx @youdotcom-oss/api search --json "{"query":$query}" --client ClaudeCode

**URL验证**:
```bash

Validate URLs before content extraction

内容提取前验证URL

url="$USER_URL" if [[ $url =~ ^https?:// ]]; then npx @youdotcom-oss/api contents --json "{"urls":["$url"],"formats":["markdown"]}" --client ClaudeCode else echo "Invalid URL format" >&2 exit 1 fi
undefined
url="$USER_URL" if [[ $url =~ ^https?:// ]]; then npx @youdotcom-oss/api contents --json "{"urls":["$url"],"formats":["markdown"]}" --client ClaudeCode else echo "无效的URL格式" >&2 exit 1 fi
undefined

Content Extraction Risks

内容提取风险

HTML Content Safety:
  • Extracted HTML may contain malicious JavaScript or XSS vectors
  • Never render extracted HTML directly in web contexts without sanitization
  • Prefer
    markdown
    format for display; use
    html
    only for archival
Safe Content Handling:
bash
undefined
HTML内容安全:
  • 提取的HTML可能包含恶意JavaScript或XSS向量
  • 禁止在Web环境中直接渲染提取的HTML,需先清理
  • 显示时优先使用markdown格式;仅在归档时使用html格式
安全内容处理:
bash
undefined

DO: Extract as markdown (safer for display)

建议: 提取为markdown(显示更安全)

npx @youdotcom-oss/api contents --json '{ "urls":["'"$url"'"], "formats":["markdown","metadata"] }' --client ClaudeCode
npx @youdotcom-oss/api contents --json '{ "urls":["'"$url"'"], "formats":["markdown","metadata"] }' --client ClaudeCode

DON'T: Render extracted HTML directly in browsers without sanitization

禁止: 在浏览器中直接渲染提取的HTML而不清理

undefined
undefined

Error Handling & Information Disclosure

错误处理与信息泄露

Sanitize Error Output:
bash
undefined
清理错误输出:
bash
undefined

Capture errors without exposing sensitive context

捕获错误,不暴露敏感上下文

if ! result=$(npx @youdotcom-oss/api search --json "$query" --client ClaudeCode 2>&1); then

Log sanitized error (remove API keys, tokens, sensitive URLs)

echo "Search failed" | sed 's/key=[^&]*/key=REDACTED/g' >&2 exit 1 fi

**Production Logging:**
- Remove API keys from logs: Filter `YDC_API_KEY` values
- Sanitize URLs: May contain sensitive query parameters
- Redact error context: Mailto links may include environment info
if ! result=$(npx @youdotcom-oss/api search --json "$query" --client ClaudeCode 2>&1); then

记录清理后的错误(移除API密钥、令牌、敏感URL)

echo "搜索失败" | sed 's/key=[^&]*/key=REDACTED/g' >&2 exit 1 fi

**生产环境日志**:
- 从日志中移除API密钥: 过滤YDC_API_KEY值
- 清理URL: 可能包含敏感查询参数
- 编辑错误上下文: mailto链接可能包含环境信息

Rate Limiting & Abuse Prevention

速率限制与滥用防护

Implement Exponential Backoff:
bash
#!/usr/bin/env bash
max_retries=3
retry_delay=2

for ((i=1; i<=max_retries; i++)); do
  if npx @youdotcom-oss/api search --json "$query" --client ClaudeCode; then
    exit 0
  fi
  
  if [ $i -lt $max_retries ]; then
    delay=$((retry_delay ** i))
    echo "Retry $i/$max_retries after ${delay}s..." >&2
    sleep $delay
  fi
done

echo "Failed after $max_retries attempts" >&2
exit 1
实现指数退避:
bash
#!/usr/bin/env bash
max_retries=3
retry_delay=2

for ((i=1; i<=max_retries; i++)); do
  if npx @youdotcom-oss/api search --json "$query" --client ClaudeCode; then
    exit 0
  fi
  
  if [ $i -lt $max_retries ]; then
    delay=$((retry_delay ** i))
    echo "第$i/$max_retries次重试,等待${delay}秒..." >&2
    sleep $delay
  fi
done

echo "$max_retries次尝试后失败" >&2
exit 1

Agent Autonomy & Credential Access

Agent自主性与凭证访问

Considerations for AI Agents:
  • Agents with access to
    YDC_API_KEY
    can perform unlimited API calls
  • Set quota alerts on You.com platform to monitor usage
  • Use read-only or restricted API keys when possible
  • Implement circuit breakers for runaway queries
Restricting Model Invocation: If using this skill with autonomous agents:
  • Consider requiring user approval for each search (
    always: true
    in skill config)
  • Limit concurrent requests with semaphores
  • Implement query allowlists/denylists for sensitive terms
  • Monitor API usage dashboards regularly
AI Agent的考量:
  • 拥有
    YDC_API_KEY
    访问权限的Agent可执行无限次API调用
  • 在You.com平台设置配额警报以监控使用情况
  • 尽可能使用只读或受限权限的API密钥
  • 实现断路器以防止失控查询
限制模型调用: 若将此技能用于自主Agent:
  • 考虑要求用户批准每次搜索(技能配置中设置
    always: true
  • 使用信号量限制并发请求
  • 为敏感术语实现查询允许列表/拒绝列表
  • 定期监控API使用仪表板

Supply Chain Security

供应链安全

Trust Chain:
  1. Runtime: Bun/Node.js from official sources only
  2. Package:
    @youdotcom-oss/api
    from NPM registry
  3. Source: Verified at https://github.com/youdotcom-oss/dx-toolkit
  4. Credentials:
    YDC_API_KEY
    from https://you.com/platform/api-keys
Package Version Pinning (Pre-1.0):
Current package version: 0.3.0 (pre-1.0 development)
json
{
  "dependencies": {
    "@youdotcom-oss/api": "~0.3.0"  // ✅ Recommended for pre-1.0
  }
}
Why
~0.3.0
for pre-1.0 packages?
  • ~0.3.0
    allows: 0.3.0, 0.3.1, 0.3.2 (patch updates only)
  • Blocks: 0.4.0, 0.5.0 (may contain breaking changes)
  • Once package reaches 1.0.0, switch to
    ^1.0.0
    for normal semver
Package Integrity Verification:
bash
undefined
信任链:
  1. 运行时: 仅使用官方来源的Bun/Node.js
  2. : 从NPM注册表获取
    @youdotcom-oss/api
  3. 源代码: 在https://github.com/youdotcom-oss/dx-toolkit验证
  4. 凭证: 从https://you.com/platform/api-keys获取`YDC_API_KEY`
包版本固定(1.0版本前):
当前包版本: 0.3.0(1.0版本前开发阶段)
json
{
  "dependencies": {
    "@youdotcom-oss/api": "~0.3.0"  // ✅ 1.0版本前推荐
  }
}
为何1.0版本前使用
~0.3.0
  • ~0.3.0
    允许: 0.3.0、0.3.1、0.3.2(仅补丁更新)
  • 阻止: 0.4.0、0.5.0(可能包含破坏性变更)
  • 包发布1.0.0后,切换为
    ^1.0.0
    以遵循标准语义化版本控制
包完整性验证:
bash
undefined

Verify package integrity before use

使用前验证包完整性

npm view @youdotcom-oss/api@0.3.0 dist.integrity
npm view @youdotcom-oss/api@0.3.0 dist.integrity

Example output:

示例输出:

sha512-[hash]...

sha512-[hash]...

Check for security advisories

检查安全公告

npm audit @youdotcom-oss/api
npm audit @youdotcom-oss/api

Verify package source

验证包来源

npm view @youdotcom-oss/api repository
npm view @youdotcom-oss/api repository

**Lockfile Security:**

Always commit lockfiles to version control:
- `package-lock.json` (npm) - Contains integrity hashes for all dependencies
- `bun.lockb` (bun) - Binary lockfile with checksums

```bash

**锁定文件安全**:

始终将锁定文件提交到版本控制系统:
- `package-lock.json`(npm)- 包含所有依赖的完整性哈希
- `bun.lockb`(bun)- 带校验和的二进制锁定文件

```bash

After installation, verify lockfile was created

安装后验证锁定文件已创建

ls -la package-lock.json # or bun.lockb
ls -la package-lock.json # 或bun.lockb

Commit to git

提交到git

git add package.json package-lock.json git commit -m "Lock @youdotcom-oss/api@0.3.0"

**Upgrade Safety Protocol:**

1. **Check for updates periodically:**
   ```bash
   npm outdated @youdotcom-oss/api
  1. Review changelog before upgrading:
  2. Categorize update urgency:
    • 🔒 Security patches → Upgrade immediately
    • 🐛 Bug fixes (patch: 0.3.0 → 0.3.1) → Safe to upgrade
    • ⚠️ Minor versions (0.3.x → 0.4.0) → Review for breaking changes
    • 💥 Major features → Test thoroughly before deploying
  3. Safe upgrade commands:
    bash
    # Patch updates (safe)
    npm update @youdotcom-oss/api
    
    # Minor version upgrade (review first)
    npm install @youdotcom-oss/api@~0.4.0
    
    # Verify after upgrade
    npm list @youdotcom-oss/api
    npm view @youdotcom-oss/api@0.4.0 dist.integrity
Verification Checklist:
  • Runtime installation requested user permission
  • Package version pinned with
    ~0.3.0
    (not
    @latest
    )
  • Package integrity verified:
    npm view @youdotcom-oss/api@0.3.0 dist.integrity
  • Lockfile (
    package-lock.json
    or
    bun.lockb
    ) committed to git
  • API key obtained from official platform
  • Environment variables not committed to version control
  • Input validation implemented for user-provided queries/URLs
  • Error output sanitized in production
  • Rate limiting configured with exponential backoff
  • Security updates monitored via GitHub releases
  • Upgrade process documented and tested
git add package.json package-lock.json git commit -m "锁定@youdotcom-oss/api@0.3.0版本"

**安全升级流程**:

1. **定期检查更新**:
   ```bash
   npm outdated @youdotcom-oss/api
  1. 升级前查看变更日志:
  2. 分类更新优先级:
    • 🔒 安全补丁 → 立即升级
    • 🐛 Bug修复(补丁:0.3.0→0.3.1)→ 安全升级
    • ⚠️ 小版本(0.3.x→0.4.0)→ 审核破坏性变更
    • 💥 重大功能 → 部署前彻底测试
  3. 安全升级命令:
    bash
    # 补丁更新(安全)
    npm update @youdotcom-oss/api
    
    # 小版本升级(先审核)
    npm install @youdotcom-oss/api@~0.4.0
    
    # 升级后验证
    npm list @youdotcom-oss/api
    npm view @youdotcom-oss/api@0.4.0 dist.integrity
验证检查清单:
  • 运行时安装已请求用户权限
  • 包版本使用
    ~0.3.0
    固定(而非
    @latest
  • 已验证包完整性:
    npm view @youdotcom-oss/api@0.3.0 dist.integrity
  • 锁定文件(package-lock.json或bun.lockb)已提交到git
  • API密钥从官方平台获取
  • 环境变量未提交到版本控制系统
  • 已为用户提供的查询/URL实现输入验证
  • 生产环境中的错误输出已清理
  • 已配置带指数退避的速率限制
  • 通过GitHub发布监控安全更新
  • 升级流程已文档化并测试

Resources

资源