// ============================================================================= // Topic Diversity Utilities // 共享工具:为所有 Bot 脚本提供多样化的内容生成模板和风格 // ============================================================================= // 话题模板 – 避免话题标题千篇一律 export const TOPIC_TEMPLATES = [ "【真实体验】{tool_name}试用{n}天后的真实感受", "【对比评测】{tool_a} vs {tool_b}:到底谁更好用?", "【使用技巧】{tool_name}的{n}个隐藏功能你知道吗?", "【效率提升】用了{tool_name},我的工作效率提升了{n}%", "【避坑指南】{tool_name}常见的{n}个使用误区", "【学习心得】零基础{n}天掌握{tool_name}", "【行业思考】{category}领域AI工具的进化方向", "【故事分享】我是如何用{skill_type}完成一个不可能的任务的", "【趋势预测】{year}年{category}工具的发展趋势", "【问题交流】大家用{tool_name}遇到过这个问题吗?", ]; // 回复风格类型 – 确保回复语调多样化 export const COMMENT_STYLES = [ "agree_expert", // 资深用户赞同 "question_detail", // 追问细节 "share_experience", // 分享自己经验 "constructive_critique",// 建设性批评 "appreciation", // 感谢分享 "alternative_suggest", // 推荐替代方案 ]; // 回复风格对应的中文提示(注入 prompt 指导 AI 生成特定风格) export const COMMENT_STYLE_HINTS = { agree_expert: "用资深用户的身份,赞同前面某个具体观点,并补充你自己的实战数据或行业经验来佐证", question_detail: "针对前面内容的某个具体细节,提出一个有深度的问题,引导对方或其他人进一步展开", share_experience: "分享一个你亲身经历的相关案例或故事,让讨论更接地气", constructive_critique: "提出一个不同的视角或潜在的盲点,语气要理性、建设性,不是抬杠", appreciation: "表达对前面讨论的欣赏,指出哪些观点对你有启发,然后自然地延伸一个相关话题", alternative_suggest: "推荐一个实用的替代方案或工具,说明它的优缺点和适用场景", }; // 轮转索引 – 确保话题模板不会短期内重复 let templateIndex = 0; export function getNextTemplate() { const t = TOPIC_TEMPLATES[templateIndex % TOPIC_TEMPLATES.length]; templateIndex++; return t; } // 重置轮转索引(用于测试或手动干预) export function resetTemplateIndex() { templateIndex = 0; } // 选择回复风格 – 避免与最近使用过的风格重复 export function pickCommentStyle(recentStyles = []) { const available = COMMENT_STYLES.filter(s => !recentStyles.includes(s)); if (available.length === 0) { // 所有风格都在最近使用过,随机选一个 return COMMENT_STYLES[Math.floor(Math.random() * COMMENT_STYLES.length)]; } return available[Math.floor(Math.random() * available.length)]; } // 获取风格的中文提示 export function getStyleHint(style) { return COMMENT_STYLE_HINTS[style] || COMMENT_STYLE_HINTS.share_experience; } // 话题内容类型 – 为发帖内容提供多样化结构 export const TOPIC_CONTENT_PATTERNS = [ "story_lead", // 以个人故事开头 "question_kickoff", // 以一个尖锐问题开头 "data_insight", // 以数据洞察开头 "controversial_take",// 以争议性观点开头 "trend_notice", // 以最近趋势变化开头 "personal_struggle", // 以个人困惑/难题开头 ]; let patternIndex = 0; export function getNextContentPattern() { const p = TOPIC_CONTENT_PATTERNS[patternIndex % TOPIC_CONTENT_PATTERNS.length]; patternIndex++; return p; }