winner12-copywriter-mcp
Version:
MCP tool for generating social media content for winner12 AI football prediction website
71 lines (69 loc) • 2.99 kB
JavaScript
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