seo_keyword_ideas
Generate targeted keyword ideas for SEO optimization using ReviewWeb.site API. Specify a keyword, country, and search engine to refine results and enhance content strategy.
Instructions
Get keyword ideas for a keyword using ReviewWeb.site API.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Your ReviewWebsite API key | |
| country | No | Country code (default: us) | |
| keyword | Yes | The keyword to get ideas for | |
| searchEngine | No | Search engine to use (default: Google) |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"api_key": {
"description": "Your ReviewWebsite API key",
"type": "string"
},
"country": {
"description": "Country code (default: us)",
"type": "string"
},
"keyword": {
"description": "The keyword to get ideas for",
"type": "string"
},
"searchEngine": {
"description": "Search engine to use (default: Google)",
"type": "string"
}
},
"required": [
"keyword"
],
"type": "object"
}
Implementation Reference
- src/tools/reviewwebsite.tool.ts:544-578 (handler)MCP handler function that executes the seo_keyword_ideas tool logic by calling the controller and formatting the MCP response.async function handleGetKeywordIdeas(args: SeoKeywordIdeasToolArgsType) { const methodLogger = Logger.forContext( 'tools/reviewwebsite.tool.ts', 'handleGetKeywordIdeas', ); methodLogger.debug(`Getting keyword ideas:`, { ...args, api_key: args.api_key ? '[REDACTED]' : undefined, }); try { const result = await reviewWebsiteController.getKeywordIdeas( args.keyword, { country: args.country, searchEngine: args.searchEngine, }, { api_key: args.api_key, }, ); return { content: [ { type: 'text' as const, text: result.content, }, ], }; } catch (error) { methodLogger.error(`Error getting keyword ideas`, error); return formatErrorForMcpTool(error); } }
- src/tools/reviewwebsite.tool.ts:797-802 (registration)Registration of the seo_keyword_ideas tool with the MCP server, specifying name, description, input schema, and handler.server.tool( 'seo_keyword_ideas', `Get keyword ideas for a keyword using ReviewWeb.site API.`, SeoKeywordIdeasToolArgs.shape, handleGetKeywordIdeas, );
- Zod schema defining input arguments for the seo_keyword_ideas tool.export const SeoKeywordIdeasToolArgs = z.object({ keyword: z.string().describe('The keyword to get ideas for'), country: z.string().optional().describe('Country code (default: us)'), searchEngine: z .string() .optional() .describe('Search engine to use (default: Google)'), api_key: z.string().optional().describe('Your ReviewWebsite API key'), });
- Service function that performs the actual HTTP POST request to the ReviewWeb.site API endpoint for generating SEO keyword ideas.async function getKeywordIdeas( keyword: string, options?: SeoKeywordIdeasOptions, apiKey?: string, ): Promise<any> { const methodLogger = Logger.forContext( 'services/vendor.reviewwebsite.service.ts', 'getKeywordIdeas', ); try { methodLogger.debug('Getting keyword ideas', { keyword, options }); const response = await axios.post( `${API_BASE}/seo-insights/keyword-ideas`, { keyword, country: options?.country, searchEngine: options?.searchEngine, }, { headers: getHeaders(apiKey), }, ); methodLogger.debug('Successfully got keyword ideas'); return response.data; } catch (error) { return handleApiError(error, 'getKeywordIdeas'); } }