UNPKG

winner12-copywriter-mcp

Version:

MCP tool for generating social media content for winner12 AI football prediction website

71 lines (69 loc) 2.99 kB
import { ContentTemplateGenerator, PLATFORM_CONFIGS } from '../templates/content-templates.js'; import { ContentProcessor } from '../utils/ContentProcessor.js'; export class TikTokGenerator { static async generateContent(input) { const config = PLATFORM_CONFIGS.tiktok; // 生成合规的分析内容(避免直接预测) const rawContent = this.generateTikTokAnalysis(input); // 使用内容处理器进行合规处理 const processedContent = await ContentProcessor.processContent(rawContent, 'tiktok', { enableValidation: true, strictMode: true, // TikTok使用严格模式 autoFix: true }); // 生成标签 const hashtags = ContentTemplateGenerator.generateFootballHashtags(input, 'tiktok'); // 合规的行动号召 const callToAction = '关注获取更多足球分析!⚽'; // 确保内容长度符合平台要求 const finalContent = this.truncateContent(processedContent.processed, config.maxLength); return { content: finalContent, hashtags, callToAction, meta: { platform: 'tiktok', characterCount: finalContent.length, wordCount: finalContent.split(/\s+/).length, complianceScore: processedContent.compliance.score, riskLevel: processedContent.compliance.riskLevel } }; } // 生成合规的分析内容 static generateTikTokAnalysis(input) { const { homeTeam, awayTeam, confidence, league, matchDate } = input; const emojis = ContentTemplateGenerator.getEmojis('tiktok'); const randomEmojis = emojis.slice(0, 3).join(' '); // 根据数据支持度生成不同的分析表述 let analysisText = ''; if (confidence >= 80) { analysisText = 'AI数据分析显示比赛趋势较为明显'; } else if (confidence >= 60) { analysisText = 'AI分析发现一些有趣的数据趋势'; } else { analysisText = 'AI分析显示比赛充满变数'; } return `${randomEmojis} ${homeTeam} vs ${awayTeam} 📊 ${analysisText} 🤖 Winner12 AI 为你解析比赛数据 📅 ${matchDate} | ${league} 今天和大家分享这场比赛的数据洞察!`; } static truncateContent(content, maxLength) { if (content.length <= maxLength) return content; // 智能截断,保留完整的句子 const truncated = content.substring(0, maxLength - 3); const lastSentence = truncated.lastIndexOf('!'); const lastPeriod = truncated.lastIndexOf('。'); const lastBreak = Math.max(lastSentence, lastPeriod); if (lastBreak > 0) { return truncated.substring(0, lastBreak + 1) + '...'; } return truncated + '...'; } } //# sourceMappingURL=tiktok-generator.js.map