xiaohongshu
xiaohongshu
ai-sdk-integration
Integrate Vercel AI SDK applications with You.com tools (web search, AI agent, content extraction). Use when developer mentions AI SDK, Vercel AI SDK, generateText, streamText, or You.com integration with AI SDK.
Full skill instructions
Interactive workflow to add You.com tools to your Vercel AI SDK application using @youdotcom-oss/ai-sdk-plugin.
Ask: Package Manager
npm install @youdotcom-oss/ai-sdk-plugin
# or bun add @youdotcom-oss/ai-sdk-plugin
# or yarn add @youdotcom-oss/ai-sdk-plugin
# or pnpm add @youdotcom-oss/ai-sdk-plugin
Ask: Environment Variable Name
YDC_API_KEY?Ask: Which AI SDK Functions?
generateText()?streamText()?Ask: Existing Files or New Files?
For Each File, Ask:
youSearch (web search)youExpress (AI agent)youContents (content extraction)generateText() or streamText() in this file?Reference Templates
Templates are available in the skill assets directory:
assets/generate-text.ts - Template for generateText() usageassets/streaming-text.ts - Template for streamText() usageUpdate/Create Files
For each file:
YDC_API_KEY: youSearch()youSearch({ apiKey: process.env.CUSTOM_NAME })Based on env var name from step 2:
Standard YDC_API_KEY:
import { youSearch } from '@youdotcom-oss/ai-sdk-plugin';
tools: {
search: youSearch(),
}
Custom env var:
import { youSearch } from '@youdotcom-oss/ai-sdk-plugin';
const apiKey = process.env.THEIR_CUSTOM_NAME;
tools: {
search: youSearch({ apiKey }),
}
Multiple tools with standard env var:
import { youSearch, youExpress, youContents } from '@youdotcom-oss/ai-sdk-plugin';
tools: {
search: youSearch(),
agent: youExpress(),
extract: youContents(),
}
Multiple tools with custom env var:
import { youSearch, youExpress, youContents } from '@youdotcom-oss/ai-sdk-plugin';
const apiKey = process.env.THEIR_CUSTOM_NAME;
tools: {
search: youSearch({ apiKey }),
agent: youExpress({ apiKey }),
extract: youContents({ apiKey }),
}
Web and news search - model determines parameters (query, count, country, etc.)
AI agent with web context - model determines parameters (input, tools)
Web page content extraction - model determines parameters (urls, format)
Templates show:
For each file being updated/created:
toolName()toolName({ apiKey })const { textStream } = ...stopWhen: stepCountIs(3)Global checklist:
Issue: "Cannot find module @youdotcom-oss/ai-sdk-plugin" Fix: Install with their package manager
Issue: "YDC_API_KEY (or custom name) environment variable is required" Fix: Set in their environment (get key: https://you.com/platform/api-keys)
Issue: "Tool execution fails with 401" Fix: Verify API key is valid
Issue: "Incomplete or missing response" Fix: If using streamText, increase the step count. Start with 3 and iterate up as needed (see README troubleshooting)
Issue: "textStream is not iterable"
Fix: Destructure: const { textStream } = streamText(...)
Issue: "Custom env var not working"
Fix: Pass to each tool: youSearch({ apiKey })
For developers creating custom AI SDK tools or contributing to @youdotcom-oss/ai-sdk-plugin:
Each tool function follows this pattern:
export const youToolName = (config: YouToolsConfig = {}) => {
const apiKey = config.apiKey ?? process.env.YDC_API_KEY;
return tool({
description: 'Tool description for AI model',
inputSchema: ZodSchema,
execute: async (params) => {
if (!apiKey) {
throw new Error('YDC_API_KEY is required');
}
const response = await callApiUtility({
params,
YDC_API_KEY: apiKey,
getUserAgent,
});
// Return raw API response for maximum flexibility
return response;
},
});
};
Always use schemas from @youdotcom-oss/mcp:
// ✅ Import from @youdotcom-oss/mcp
import { SearchQuerySchema } from '@youdotcom-oss/mcp';
export const youSearch = (config: YouToolsConfig = {}) => {
return tool({
description: '...',
inputSchema: SearchQuerySchema, // Enables AI to use all search parameters
execute: async (params) => { ... },
});
};
// ❌ Don't duplicate or simplify schemas
const MySearchSchema = z.object({ query: z.string() }); // Missing filters!
Why this matters:
Always provide environment variable fallback and validate before API calls:
// ✅ Automatic environment variable fallback
const apiKey = config.apiKey ?? process.env.YDC_API_KEY;
// ✅ Check API key in execute function
execute: async (params) => {
if (!apiKey) {
throw new Error('YDC_API_KEY is required');
}
const response = await callApi(...);
}
Always return raw API response for maximum flexibility:
// ✅ Return raw API response
execute: async (params) => {
const response = await fetchSearchResults({
searchQuery: params,
YDC_API_KEY: apiKey,
getUserAgent,
});
return response; // Raw response for maximum flexibility
}
// ❌ Don't format or transform responses
return {
text: formatResponse(response),
data: response,
};
Why raw responses?
Write descriptions that guide AI behavior:
// ✅ Clear guidance for AI model
description: 'Search the web for current information, news, articles, and content using You.com. Returns web results with snippets and news articles. Use this when you need up-to-date information or facts from the internet.'
// ❌ Too brief
description: 'Search the web'
xiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience