search_google_videos
Search for videos on Google using specific queries, filters, and location parameters. Retrieve video results tailored to language, country, device, and time preferences.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cr | No | 国家限制 | |
| device | No | 设备类型 | desktop |
| filter | No | 过滤结果 | 1 |
| gl | No | 地理位置 | us |
| google_domain | No | Google域名 | google.com |
| hl | No | 语言 | en |
| location | No | 位置 | |
| lr | No | 语言限制 | |
| nfpr | No | 不进行拼写检查 | 0 |
| num | No | 结果数量 | 10 |
| page | No | 页码 | 1 |
| q | Yes | 搜索查询 | |
| safe | No | 安全搜索 | off |
| time_period | No | 时间段 | |
| time_period_max | No | 最大时间段 | |
| time_period_min | No | 最小时间段 | |
| uule | No | 位置编码 |
Implementation Reference
- src/index.js:644-667 (handler)The core handler function for the 'search_google_videos' tool. It constructs search parameters using the 'google_videos' engine from searchapi.io, incorporates optional filters passed as arguments, invokes the shared makeSearchapiRequest helper to fetch results, and formats the response as JSON text content for MCP.async (args) => { const params = { engine: 'google_videos', q: args.q }; // 添加可选参数 const optionalParams = [ 'device', 'location', 'uule', 'google_domain', 'gl', 'hl', 'lr', 'cr', 'nfpr', 'filter', 'safe', 'time_period', 'time_period_min', 'time_period_max', 'num', 'page' ]; for (const key of optionalParams) { if (args[key] !== undefined) { params[key] = args[key]; } } const result = await makeSearchapiRequest(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; }
- src/index.js:625-643 (schema)Zod input schema for the 'search_google_videos' tool, defining the required 'q' query parameter and numerous optional parameters for customizing Google video searches such as device, location, language, time filters, and pagination.{ q: z.string().describe('搜索查询'), device: z.string().default('desktop').describe('设备类型'), location: z.string().optional().describe('位置'), uule: z.string().optional().describe('位置编码'), google_domain: z.string().default('google.com').describe('Google域名'), gl: z.string().default('us').describe('地理位置'), hl: z.string().default('en').describe('语言'), lr: z.string().optional().describe('语言限制'), cr: z.string().optional().describe('国家限制'), nfpr: z.string().default('0').describe('不进行拼写检查'), filter: z.string().default('1').describe('过滤结果'), safe: z.string().default('off').describe('安全搜索'), time_period: z.string().optional().describe('时间段'), time_period_min: z.string().optional().describe('最小时间段'), time_period_max: z.string().optional().describe('最大时间段'), num: z.string().default('10').describe('结果数量'), page: z.string().default('1').describe('页码') },
- src/index.js:623-668 (registration)The MCP server.tool registration block for 'search_google_videos', which includes the tool name, inline Zod input schema, and inline handler function. This is where the tool is defined and registered with the MCP server.server.tool( 'search_google_videos', { q: z.string().describe('搜索查询'), device: z.string().default('desktop').describe('设备类型'), location: z.string().optional().describe('位置'), uule: z.string().optional().describe('位置编码'), google_domain: z.string().default('google.com').describe('Google域名'), gl: z.string().default('us').describe('地理位置'), hl: z.string().default('en').describe('语言'), lr: z.string().optional().describe('语言限制'), cr: z.string().optional().describe('国家限制'), nfpr: z.string().default('0').describe('不进行拼写检查'), filter: z.string().default('1').describe('过滤结果'), safe: z.string().default('off').describe('安全搜索'), time_period: z.string().optional().describe('时间段'), time_period_min: z.string().optional().describe('最小时间段'), time_period_max: z.string().optional().describe('最大时间段'), num: z.string().default('10').describe('结果数量'), page: z.string().default('1').describe('页码') }, async (args) => { const params = { engine: 'google_videos', q: args.q }; // 添加可选参数 const optionalParams = [ 'device', 'location', 'uule', 'google_domain', 'gl', 'hl', 'lr', 'cr', 'nfpr', 'filter', 'safe', 'time_period', 'time_period_min', 'time_period_max', 'num', 'page' ]; for (const key of optionalParams) { if (args[key] !== undefined) { params[key] = args[key]; } } const result = await makeSearchapiRequest(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } );
- src/index.js:29-57 (helper)Shared utility helper function used by the search_google_videos handler (and other tools) to send HTTP GET requests to the searchapi.io API endpoint, automatically appending the API key, handling timeouts, and providing detailed error responses.async function makeSearchapiRequest(params) { // 确保API Key被添加到参数中 params.api_key = SEARCHAPI_API_KEY; try { const response = await axios.get(SEARCHAPI_URL, { params, timeout: 30000 // 30秒超时 }); return response.data; } catch (error) { let errorDetail = null; if (error.response) { try { errorDetail = error.response.data; } catch (e) { errorDetail = error.response.statusText; } } const errorMessage = `调用searchapi.io时出错: ${error.message}`; if (errorDetail) { return { error: `${errorMessage}, 详情: ${JSON.stringify(errorDetail)}` }; } return { error: errorMessage }; } }