Files
zhuiguang-ai/scripts/lib/topic-diversity.mjs
T

84 lines
3.7 KiB
JavaScript

// =============================================================================
// 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;
}