feat(config): align content strategy with brand direction

initial_data: field descriptions humanized, collector search queries include long-tail keywords, platform formats updated collector.py: DEFAULT_CHINA_PAINS expanded with specific pain questions (e.g. '35岁学AI来得及吗') topic_selector.py: domain mapping 11->18 entries (Prompt/AI编程/AI写作/数据隐私/AI教育/一人企业)

Ultraworked with Sisyphus

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
yuzhiran
2026-06-23 13:25:11 +08:00
parent 45ad5443c1
commit 9fba863ce7
3 changed files with 63 additions and 56 deletions
+28 -23
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
"""
内容采集:趋势抓取 → 选题生成 → 存入选题库
收集热点趋势信息,经LLM分析后生成选题建议并存入数据库
内容采集管道:趋势抓取 → 分析 → 选题生成 → 存入选题库
聚焦AI与科技人文领域,从RSS搜索和Web搜索采集信息,经LLM分析后生成选题
"""
import os
@@ -42,14 +42,11 @@ logging.basicConfig(
)
logger = logging.getLogger(__name__)
DEFAULT_CHINA_PAINS = {
"循环消费": "以旧换新流程繁琐、二手商品信任缺失、租赁市场不规范",
"低碳出行": "新能源车充电设施不足、城市规划不支持骑行、通勤距离长",
"干净饮食": "有机食品价格高、真伪难辨、外卖为主的生活方式难以改变",
"零浪费生活": "环保产品溢价高、可持续选择不便、漂绿营销难以分辨",
"绿色家电与节能": "绿色家电初期投入高、节能效果难量化、老旧小区改造难",
"碳普惠": "碳账户普及率低、减排量兑换吸引力不足、公众认知有限",
"环保科技产品": "绿色产品溢价68%难以承受、缺乏统一认证标准、担心漂绿",
"AI与效率": "AI工具选择困难、数据隐私担忧、学习成本高、实际效果难验证"
"AI工具实测": "AI工具选择困难、免费版功能太受限、ChatGPT不如国产好用、学习曲线陡峭、不知道哪些AI工具真正值得付费、看了测评还是不知道怎么用",
"AI前沿资讯": "AI更新太快跟不上、论文太多看不完、不知道哪些是真突破、被营销号带偏、每天刷AI新闻但感觉什么都没学到",
"未来工作方式": "AI裁员焦虑加剧、远程协作效率打折、职业方向看不清、技能更新压力大、35岁学AI来得及吗、转行AI需要什么技能",
"科技人文反思": "AI伦理边界模糊、数据隐私被侵蚀、数字依赖越来越重、人机关系困惑、孩子该不该用AI写作业、AI生成的内容能信吗",
"AI职场应用": "AI替代担心、岗位技能要求变了、职场竞争加剧、缺乏AI实操指导、怎么用AI写周报、怎么用AI做数据分析、AI提示词怎么写才有效",
}
_cached_china_pains = None
@@ -87,22 +84,22 @@ def _get_china_pain(category: str) -> str:
@dataclass
class SustainabilitySource:
"""可持续性信息"""
"""内容采集"""
name: str
type: str # rss, web_search, web, api, local
url: Optional[str] = None # RSS URL 或通用链接
update_frequency: str = "daily"
credibility: str = "medium"
focus: str = "可持续性"
focus: str = "AI与科技"
keywords: Optional[List[str]] = None # 源特定关键词
query: Optional[str] = None # 搜索查询词(w eb_search类型用)
@dataclass
class SustainabilityCase:
"""可持续性案例"""
"""内容案例"""
id: str
country: str
category: str # 子领域:零浪费生活、循环消费
category: str # 类别:AI前沿资讯、AI工具实测
title: str
core_idea: str
data_facts: str
@@ -118,7 +115,7 @@ class SustainabilityCase:
@dataclass
class SustainabilityTopic:
"""可持续性选题"""
"""AI与科技选题"""
id: str
title: str
cases: List[str] # 关联的案例ID列表
@@ -128,7 +125,7 @@ class SustainabilityTopic:
mvp_actions: str
estimated_length: int
priority_score: float
field: str = "可持续生活系统" # 内容领域
field: str = "AI与效率" # 内容领域
format: str = "趋势洞察 + 实操指南" # 内容形式
core_concept: str = "" # 核心理念
audience_pain: str = "" # 受众痛点
@@ -150,7 +147,7 @@ class SustainabilityTopic:
self.platform_urls = {}
class SustainabilityCollector:
"""可持续性内容集器"""
"""AI与科技内容集器"""
def __init__(self):
self.load_config()
@@ -191,7 +188,7 @@ class SustainabilityCollector:
url=s.url or '',
query=s.query or '',
credibility=s.credibility or 'medium',
focus=s.focus or '可持续性',
focus=s.focus or 'AI与科技',
))
logger.info(f"从DB加载 {len(cats)} 个类别, {len(self.sources)} 个信息源")
db.close()
@@ -209,7 +206,7 @@ class SustainabilityCollector:
if 'base_url' in source_info and 'url' not in source_info:
source_info['url'] = source_info.pop('base_url')
source_info.setdefault('update_frequency', 'daily')
source_info.setdefault('focus', '可持续性')
source_info.setdefault('focus', 'AI与科技')
source_info.setdefault('keywords', None)
allowed_keys = {'name', 'type', 'url', 'update_frequency', 'credibility', 'focus', 'keywords', 'query'}
filtered_info = {k: v for k, v in source_info.items() if k in allowed_keys}
@@ -379,7 +376,7 @@ class SustainabilityCollector:
'source_name': source.name
})
logger.info(f"{source.name} 获取到 {len(articles)}可持续性文章")
logger.info(f"{source.name} 获取到 {len(articles)} 篇文章")
return articles
except Exception as e:
@@ -720,8 +717,16 @@ class SustainabilityCollector:
return topic
def map_category_to_field(self, category: str) -> str:
"""案例类别映射到内容领域的字段"""
return "可持续生活系统"
"""采集类别映射到内容领域"""
mapping = {
"AI前沿资讯": "AI与效率",
"AI工具实测": "AI与效率",
"AI趋势分析": "AI与效率",
"AI职场应用": "未来工作方式",
"科技人文反思": "科技人文",
"未来工作方式": "未来工作方式",
}
return mapping.get(category, "AI与效率")
def save_results(self):
"""保存收集结果"""
@@ -851,7 +856,7 @@ class SustainabilityCollector:
def run(self):
"""主运行流程"""
logger.info("开始可持续性内容收集")
logger.info("开始AI与科技内容收集")
existing_titles = self._get_existing_titles()
+16 -9
View File
@@ -24,18 +24,25 @@ TODAY = __import__('datetime').datetime.now().strftime("%Y-%m-%d")
logger = logging.getLogger(__name__)
DEFAULT_TREND_DOMAIN_MAP = {
"远程工作": "未来工作方式",
"AI工具": "AI与效率",
"可持续生活": "可持续生活系统",
"知识管理": "个人知识工厂",
"数字生活": "科技人文交叉",
"科技人文": "科技人文交叉",
"个人成长": "个人成长",
"副业": "个人成长",
"AI创作": "AI与效率",
"未来工作": "未来工作方式",
"AI职场": "AI与效率",
"效率工具": "AI与效率",
"家庭教育": "科技人文交叉",
"Prompt": "AI与效率",
"提示词": "AI与效率",
"AI编程": "AI与效率",
"AI写作": "AI与效率",
"未来工作": "未来工作方式",
"远程工作": "未来工作方式",
"AI就业": "未来工作方式",
"一人企业": "未来工作方式",
"副业": "未来工作方式",
"科技人文": "科技人文",
"数字生活": "科技人文",
"AI伦理": "科技人文",
"AI情感": "科技人文",
"数据隐私": "科技人文",
"AI教育": "科技人文",
}
_cached_trend_domain_map = None