Skip to main content
Glama

SEO AI Assistant

keywordController.js3.39 kB
import keywordPlannerService from '../services/keywordPlannerService.js'; /** * Generate keyword ideas based on a seed keyword * @param {Object} req - Express request object * @param {Object} res - Express response object */ export const generateKeywordIdeas = async (req, res) => { try { const { keyword, language, locations, limit } = req.query; if (!keyword) { return res.status(400).json({ error: 'Keyword is required' }); } // Parse locations if provided const parsedLocations = locations ? JSON.parse(locations) : [2250]; // Default to US const parsedLimit = limit ? parseInt(limit) : 50; const keywordIdeas = await keywordPlannerService.generateKeywordIdeas( keyword, language || 'en', parsedLocations, parsedLimit ); res.status(200).json({ success: true, data: { seedKeyword: keyword, keywordIdeas, count: keywordIdeas.length, }, }); } catch (error) { console.error('Error in generateKeywordIdeas controller:', error); res.status(500).json({ success: false, error: error.message || 'Failed to generate keyword ideas', }); } }; /** * Get keyword metrics for a list of keywords * @param {Object} req - Express request object * @param {Object} res - Express response object */ export const getKeywordMetrics = async (req, res) => { try { const { keywords, language, locations } = req.body; if (!keywords || !Array.isArray(keywords) || keywords.length === 0) { return res.status(400).json({ error: 'Valid keywords array is required' }); } // Parse locations if provided const parsedLocations = locations || [2250]; // Default to US const keywordMetrics = await keywordPlannerService.getKeywordMetrics( keywords, language || 'en', parsedLocations ); res.status(200).json({ success: true, data: { keywords, keywordMetrics, count: keywordMetrics.length, }, }); } catch (error) { console.error('Error in getKeywordMetrics controller:', error); res.status(500).json({ success: false, error: error.message || 'Failed to get keyword metrics', }); } }; /** * Get historical metrics for keywords * @param {Object} req - Express request object * @param {Object} res - Express response object */ export const getHistoricalMetrics = async (req, res) => { try { const { keywords, language, locations } = req.body; if (!keywords || !Array.isArray(keywords) || keywords.length === 0) { return res.status(400).json({ error: 'Valid keywords array is required' }); } // Parse locations if provided const parsedLocations = locations || [2250]; // Default to US const historicalMetrics = await keywordPlannerService.getHistoricalMetrics( keywords, language || 'en', parsedLocations ); res.status(200).json({ success: true, data: { keywords, historicalMetrics, }, }); } catch (error) { console.error('Error in getHistoricalMetrics controller:', error); res.status(500).json({ success: false, error: error.message || 'Failed to get historical metrics', }); } }; export default { generateKeywordIdeas, getKeywordMetrics, getHistoricalMetrics, };

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ayushsinghvi92/app-seo-ai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server