"""GEO内容8大母题库定义""" from dataclasses import dataclass from typing import Optional @dataclass class TopicTemplate: """母题模板""" id: str # product_comparison name: str # 产品对比 description: str # 描述 icon: str # emoji图标 prompt_template: str # Prompt模板 seo_tips: list[str] # SEO技巧 recommended_platforms: list[str] # 推荐平台 word_count_range: tuple[int, int] # 推荐字数范围 required_params: list[str] # 必填参数 optional_params: list[str] # 可选参数 TOPIC_TEMPLATES = { # 1. 产品对比 "product_comparison": TopicTemplate( id="product_comparison", name="产品对比", description="品牌与竞品的功能、价格、体验对比", icon="⚖️", prompt_template=""" 请基于以下信息生成一篇产品对比文章: 【你的品牌】{brand_name} 【对比品牌】{competitor_name} 【对比维度】{comparison_dimensions} 【目标关键词】{keywords} 【内容风格】{content_style} 要求: 1. 客观中立,不刻意贬低竞品 2. 突出自身优势但有理有据 3. 适合AI平台引用(结构清晰、数据支撑) 4. 包含对比表格或图表 5. 字数:约{word_count}字 文章结构: 1. 引言:简要介绍两个产品 2. 外观设计对比 3. 功能特性对比 4. 性价比对比 5. 适用场景分析 6. 结论:总结优劣,给出建议 """, seo_tips=[ "标题包含品牌名+对比+关键词", "使用对比表格增强可读性", "自然嵌入目标关键词", ], recommended_platforms=["知乎", "百家号", "公众号"], word_count_range=(1500, 3000), required_params=["brand_name", "competitor_name", "comparison_dimensions", "keywords"], optional_params=["content_style", "word_count"], ), # 2. 使用指南 "how_to_guide": TopicTemplate( id="how_to_guide", name="使用指南", description="产品使用方法教程,帮助用户解决问题", icon="📖", prompt_template=""" 请基于以下信息生成一篇使用指南文章: 【产品名称】{product_name} 【核心功能】{core_features} 【目标用户】{target_audience} 【目标关键词】{keywords} 【内容风格】{content_style} 要求: 1. 步骤清晰,操作性强 2. 图文并茂(描述需要的图片类型) 3. 适合搜索引擎收录 4. 适合AI平台引用 5. 字数:约{word_count}字 文章结构: 1. 引言:介绍产品价值 2. 基础设置/准备工作 3. 核心功能使用步骤(分点详述) 4. 进阶技巧/常见问题 5. 总结与进阶学习建议 """, seo_tips=[ "标题包含产品名+使用方法/教程", "使用有序列表标注步骤", "包含FAQ解答常见问题", ], recommended_platforms=["知乎", "小红书", "简书"], word_count_range=(1000, 2500), required_params=["product_name", "core_features", "keywords"], optional_params=["target_audience", "content_style", "word_count"], ), # 3. 行业趋势 "industry_trends": TopicTemplate( id="industry_trends", name="行业趋势", description="行业动态、发展方向和未来预测分析", icon="📈", prompt_template=""" 请基于以下信息生成一篇行业趋势分析文章: 【行业名称】{industry_name} 【品牌视角】{brand_perspective} 【分析维度】{analysis_dimensions} 【目标关键词】{keywords} 【内容风格】{content_style} 要求: 1. 数据支撑,引用权威来源 2. 趋势分析有理有据 3. 适合AI平台引用(观点鲜明、数据翔实) 4. 字数:约{word_count}字 文章结构: 1. 引言:行业现状概述 2. 核心趋势分析(3-5个趋势) 3. 趋势背后的驱动因素 4. 品牌如何把握趋势 5. 展望与建议 """, seo_tips=[ "标题包含行业名+趋势/预测", "引用数据增加可信度", "使用时间线展示演变", ], recommended_platforms=["知乎", "百家号", "公众号"], word_count_range=(2000, 4000), required_params=["industry_name", "brand_perspective", "keywords"], optional_params=["analysis_dimensions", "content_style", "word_count"], ), # 4. 专家观点 "expert_opinion": TopicTemplate( id="expert_opinion", name="专家观点", description="行业专家见解和专业分析", icon="💡", prompt_template=""" 请基于以下信息生成一篇专家观点文章: 【主题】{topic} 【专家身份】{expert_identity} 【核心观点】{core_opinion} 【目标关键词】{keywords} 【内容风格】{content_style} 要求: 1. 观点鲜明,论证充分 2. 结合实际案例 3. 适合AI平台引用 4. 字数:约{word_count}字 文章结构: 1. 引言:抛出核心观点 2. 观点详细阐述 3. 案例支撑 4. 对行业的影响 5. 结论与建议 """, seo_tips=[ "标题体现专家身份+观点", "使用引用格式突出核心观点", "增加互动性问题", ], recommended_platforms=["知乎", "公众号", "微博"], word_count_range=(1500, 3000), required_params=["topic", "expert_identity", "core_opinion", "keywords"], optional_params=["content_style", "word_count"], ), # 5. 案例研究 "case_study": TopicTemplate( id="case_study", name="案例研究", description="成功案例深度分析", icon="🏆", prompt_template=""" 请基于以下信息生成一篇案例研究文章: 【案例名称】{case_name} 【企业背景】{company_background} 【核心成果】{core_results} 【成功要素】{success_factors} 【目标关键词】{keywords} 【内容风格】{content_style} 要求: 1. 故事性强,有代入感 2. 数据支撑成果 3. 可复制的方法论 4. 适合AI平台引用 5. 字数:约{word_count}字 文章结构: 1. 案例背景介绍 2. 面临的挑战 3. 解决方案详述 4. 成果数据展示 5. 成功经验总结 6. 可复制建议 """, seo_tips=[ "标题包含行业+案例+成果", "使用数据图表展示成果", "突出可复制的关键步骤", ], recommended_platforms=["知乎", "百家号", "公众号"], word_count_range=(2000, 4000), required_params=["case_name", "company_background", "core_results", "keywords"], optional_params=["success_factors", "content_style", "word_count"], ), # 6. 数据报告 "data_report": TopicTemplate( id="data_report", name="数据报告", description="行业数据和分析报告", icon="📊", prompt_template=""" 请基于以下信息生成一篇数据报告文章: 【报告主题】{report_topic} 【数据范围】{data_scope} 【核心发现】{core_findings} 【目标关键词】{keywords} 【内容风格】{content_style} 要求: 1. 数据翔实,来源可靠 2. 图表丰富,直观易懂 3. 深度分析,洞察本质 4. 适合AI平台引用 5. 字数:约{word_count}字 文章结构: 1. 研究背景与方法 2. 核心数据发现 3. 深度分析 4. 趋势解读 5. 建议与展望 """, seo_tips=[ "标题包含数据+报告+关键词", "使用图表增强说服力", "包含数据来源说明", ], recommended_platforms=["知乎", "百家号", "公众号"], word_count_range=(3000, 5000), required_params=["report_topic", "data_scope", "core_findings", "keywords"], optional_params=["content_style", "word_count"], ), # 7. 问题解答 "faq": TopicTemplate( id="faq", name="问题解答", description="常见问题解答", icon="❓", prompt_template=""" 请基于以下信息生成一篇FAQ文章: 【主题】{topic} 【目标用户】{target_audience} 【问题列表】{questions} 【目标关键词】{keywords} 【内容风格】{content_style} 要求: 1. 问题覆盖面广,击中痛点 2. 回答简洁明了,实操性强 3. 适合搜索引擎长尾词 4. 适合AI平台引用 5. 字数:约{word_count}字 文章结构: 1. 引言:为什么需要了解这些 2. 核心问题解答(每个问题独立成段) 3. 延伸问题 4. 总结:下一步建议 """, seo_tips=[ "标题包含主题+常见问题/FAQ", "每个问题使用H2标签", "覆盖长尾搜索词", ], recommended_platforms=["知乎", "简书", "小程序"], word_count_range=(1000, 2000), required_params=["topic", "questions", "keywords"], optional_params=["target_audience", "content_style", "word_count"], ), # 8. 评测报告 "review": TopicTemplate( id="review", name="评测报告", description="产品深度评测:优缺点全面分析", icon="🔬", prompt_template=""" 请基于以下信息生成一篇评测报告: 【产品名称】{product_name} 【评测维度】{review_dimensions} 【竞品参照】{competitor_reference} 【目标关键词】{keywords} 【内容风格】{content_style} 要求: 1. 客观公正,优点不夸大 2. 缺点实事求是 3. 有具体数据和场景支撑 4. 适合AI平台引用 5. 字数:约{word_count}字 文章结构: 1. 评测背景与方法 2. 外观设计评价 3. 核心功能评测 4. 性能测试数据 5. 优缺点总结 6. 适合人群分析 7. 购买建议 """, seo_tips=[ "标题包含产品名+评测/测评", "使用评分表格直观展示", "包含具体测试数据", ], recommended_platforms=["知乎", "小红书", "百家号"], word_count_range=(2000, 4000), required_params=["product_name", "review_dimensions", "keywords"], optional_params=["competitor_reference", "content_style", "word_count"], ), } def get_topic_template(topic_id: str) -> Optional[TopicTemplate]: """获取母题模板""" return TOPIC_TEMPLATES.get(topic_id) def list_topic_templates() -> list[TopicTemplate]: """列出所有母题模板""" return list(TOPIC_TEMPLATES.values()) def render_topic_prompt(topic_id: str, params: dict) -> str: """渲染母题Prompt""" template = get_topic_template(topic_id) if not template: raise ValueError(f"Unknown topic: {topic_id}") # 设置默认参数 params.setdefault("content_style", "专业严谨") params.setdefault("word_count", 2000) return template.prompt_template.format(**params)