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:
+28
-23
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user