generate_post_ideas
Generate creative social media post ideas for art supply products based on themes, seasons, or specific items to help with content planning and marketing strategy.
Instructions
Generate creative post ideas based on products, themes, or seasons. Perfect for content planning.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of ideas to generate (default: 5) | |
| products | Yes | Comma-separated product names to feature | |
| theme | Yes | Theme or season: fall, winter, spring, summer, sale, new_arrival, etc. |
Implementation Reference
- src/social-media.ts:357-407 (handler)Core handler function that generates creative social media post ideas based on provided theme and products list. Uses templates for seasonal and product-focused content.generatePostIdeas(theme: string, products: string[]): string[] { const ideas: string[] = []; // Seasonal/theme-based ideas const seasonalTemplates = { 'fall': [ `🍂 Fall into creativity! Our ${products[0]} are perfect for capturing autumn's warm colors. What's your favorite season to paint?`, `Cozy up with some art this fall! ✨ Check out our ${products[0]} - perfect for your next masterpiece.`, `Fall art vibes 🎨 Featuring: ${products.join(', ')}. Come visit us and get inspired!` ], 'winter': [ `❄️ Winter creativity is in the air! Stay warm and paint with our ${products[0]}.`, `Snowy days call for indoor art projects! ☃️ We've got everything you need including ${products.join(' and ')}.` ], 'spring': [ `🌸 Spring into art! Fresh new ${products[0]} just arrived. Perfect for capturing the season's vibrant colors!`, `Bloom where you're planted 🌷 Create something beautiful with our ${products.join(', ')}.` ], 'summer': [ `☀️ Summer art fun! Beat the heat with a creative project using our ${products[0]}.`, `Sunshine and art supplies ☀️ The perfect summer combo! Featuring ${products.join(' and ')}.` ] }; // Product-focused ideas const productTemplates = [ `✨ New arrival alert! ${products[0]} now in stock. Limited quantities available!`, `Artist spotlight: ${products[0]} 🎨 Perfect for ${this.getProductUseCase(products[0])}. In store now!`, `Did you know? Our ${products[0]} are customer favorites! ⭐ Stop by and see why everyone loves them.`, `Weekend project idea: Try ${products[0]} for your next creation! 🖌️ Tag us in your finished work!`, `Behind the counter: We love our ${products[0]}! 💙 What's your go-to art supply?` ]; // Engagement ideas const engagementTemplates = [ `💭 Question for our creative community: What's your favorite medium to work with? (We love ${products[0]}!)`, `🎨 Share your progress! Drop a photo of what you're working on in the comments. Need supplies? We've got ${products.join(', ')} and more!`, `⭐ Customer appreciation post! Thank you for supporting our small business. Come see what's new - ${products[0]} just restocked!` ]; // Select appropriate ideas based on theme const themeKey = theme.toLowerCase(); if (themeKey in seasonalTemplates) { ideas.push(...(seasonalTemplates as any)[themeKey]); } else { ideas.push(...productTemplates.slice(0, 3)); } ideas.push(...engagementTemplates.slice(0, 2)); return ideas.slice(0, 5);
- src/index.ts:377-388 (schema)Tool schema definition including input schema with parameters theme (string, required), products (string, required), and optional count (number).name: 'generate_post_ideas', description: 'Generate creative post ideas based on products, themes, or seasons. Perfect for content planning.', inputSchema: { type: 'object', properties: { theme: { type: 'string', description: 'Theme or season: fall, winter, spring, summer, sale, new_arrival, etc.' }, products: { type: 'string', description: 'Comma-separated product names to feature' }, count: { type: 'number', description: 'Number of ideas to generate (default: 5)' }, }, required: ['theme', 'products'], }, },
- src/index.ts:1141-1157 (registration)Registration and execution handler in the MCP server's CallToolRequestSchema switch statement. Parses arguments, calls the socialMediaManager.generatePostIdeas, formats and returns the result as MCP content.case 'generate_post_ideas': { const theme = String(args?.theme || ''); const productsArg = String(args?.products || ''); const count = Number(args?.count || 5); const products = productsArg.split(',').map(p => p.trim()); const ideas = socialMediaManager.generatePostIdeas(theme, products); return { content: [{ type: 'text', text: `💡 Post Ideas - ${theme}\n\n${ideas.slice(0, count).map((idea, i) => `${i + 1}. ${idea}` ).join('\n\n')}\n\n✨ Pro tip: Customize these ideas with your store's personality and current promotions!` }] }; }
- src/social-media.ts:450-470 (helper)Private helper method used by generatePostIdeas to map product names to descriptive use cases for more engaging post copy.private getProductUseCase(product: string): string { const useCases: { [key: string]: string } = { 'paint': 'both beginners and professionals', 'brush': 'detailed work and bold strokes', 'canvas': 'your next masterpiece', 'pencil': 'sketching and drawing', 'watercolor': 'beautiful transparent effects', 'acrylic': 'vibrant, versatile painting', 'oil': 'rich, blendable colors', 'easel': 'studio or plein air painting' }; const lowerProduct = product.toLowerCase(); for (const [key, useCase] of Object.entries(useCases)) { if (lowerProduct.includes(key)) { return useCase; } } return 'all your creative projects'; }