feat: 重构项目结构并添加平台同步基础架构

- 重构项目目录结构,将功能模块移至 modules/ 目录
- 创建平台同步基础架构,包括发布器基类和 GitHub 发布器
- 新增 UI 状态管理模块 (modules/ui/state.py) 统一管理会话状态
- 更新依赖配置,添加平台同步所需依赖 (httpx, pyperclip)
- 整理文档结构,将所有文档分类移至 docs/ 目录
- 添加 .cursorrules 文件定义项目开发规范
- 清理根目录重复文件,保持项目结构整洁
This commit is contained in:
刘国栋
2026-01-30 10:21:29 +08:00
parent 77d5ec70f8
commit 8f7f082c3d
102 changed files with 33742 additions and 1526 deletions
+365
View File
@@ -0,0 +1,365 @@
# 🚀 GEO 工具高级功能建议
## 📋 功能分类
### 🧠 一、智能化增强(AI 驱动)
#### 1. **智能内容质量评分系统** ⭐⭐⭐⭐⭐
**价值**:自动评估内容是否符合 GEO 原则,提供改进建议
**功能点**
- 自动分析生成内容的结构化程度(标题、清单、FAQ 等)
- 品牌提及位置和频率评分
- 内容权威性评估(数据支撑、案例引用)
- 给出具体的优化建议(如"建议在开头增加结论摘要")
- 内容 GEO 分数(0-100分)
**实现思路**
- 使用 LLM 分析内容,输出结构化评分
- 建立评分标准(结构化、品牌提及、权威性、可引用性)
- 在内容生成后自动评分,并提供改进建议
**预期效果**:用户无需手动判断内容质量,系统自动优化
---
#### 2. **智能关键词挖掘与趋势分析** ⭐⭐⭐⭐⭐
**价值**:发现新的高价值关键词,预测关键词趋势
**功能点**
- 基于行业热点自动挖掘新关键词
- 分析关键词竞争度(在 AI 中的提及频率)
- 预测关键词趋势(上升/下降)
- 推荐高价值低竞争关键词
- 关键词组合建议(长尾词挖掘)
**实现思路**
- 使用 LLM 分析行业趋势和用户搜索意图
- 结合历史验证数据,分析关键词效果
- 提供关键词价值矩阵(高价值/低价值 × 高竞争/低竞争)
**预期效果**:帮助用户发现蓝海关键词,提升 ROI
---
#### 3. **A/B 测试与内容对比** ⭐⭐⭐⭐
**价值**:对比不同版本内容的效果,数据驱动优化
**功能点**
- 为同一关键词生成多个版本内容(不同风格、结构)
- 同时验证多个版本,对比提及率
- 自动推荐最优版本
- 记录 A/B 测试历史,建立最佳实践库
**实现思路**
- 在内容生成时支持"生成多个版本"
- 批量验证不同版本
- 对比分析提及率、位置等指标
- 建立内容模板库(基于效果最好的版本)
**预期效果**:通过数据找到最佳内容策略
---
### 📊 二、数据洞察增强
#### 4. **ROI 分析与成本优化** ⭐⭐⭐⭐⭐
**价值**:量化 GEO 投入产出比,优化成本结构
**功能点**
- 计算每次验证的 API 成本
- 统计内容生成成本(按平台、按关键词)
- 分析提及率提升带来的价值(估算)
- 成本效益分析(哪些关键词/平台 ROI 最高)
- 预算管理和成本预警
**实现思路**
- 记录每次 API 调用的成本(基于各平台定价)
- 计算总投入成本
- 分析提及率提升幅度,估算品牌曝光价值
- 提供 ROI 报表和优化建议
**预期效果**:让用户清楚知道投入产出,优化预算分配
---
#### 5. **竞品监控与预警** ⭐⭐⭐⭐
**价值**:自动监控竞品在 AI 中的表现,及时调整策略
**功能点**
- 定期自动验证竞品提及率
- 竞品提及率变化趋势
- 竞品内容策略分析(哪些关键词/平台效果好)
- 竞品超越预警(当竞品提及率超过自己时)
- 竞品对比报告(自动生成)
**实现思路**
- 定时任务自动验证竞品
- 对比分析竞品和自身的数据
- 识别竞品的优势策略
- 提供应对建议
**预期效果**:保持竞争优势,及时应对市场变化
---
#### 6. **内容效果预测模型** ⭐⭐⭐⭐
**价值**:预测内容发布后的效果,优化内容策略
**功能点**
- 基于历史数据训练预测模型
- 预测新内容的提及率
- 预测不同平台的效果差异
- 推荐最优发布策略(平台组合、发布时间等)
**实现思路**
- 收集历史数据(内容特征、平台、提及率)
- 使用机器学习模型预测效果
- 提供预测置信度
- 持续优化模型准确性
**预期效果**:在发布前就知道效果,避免无效投入
---
### 🔄 三、自动化增强
#### 7. **智能工作流自动化** ⭐⭐⭐⭐⭐
**价值**:一键完成从关键词到验证的完整流程
**功能点**
- 自定义工作流(关键词生成 → 内容创作 → 自动验证)
- 定时任务(每天/每周自动验证)
- 条件触发(当提及率低于阈值时自动优化)
- 批量处理(一次性处理多个关键词)
- 工作流模板(保存常用工作流)
**实现思路**
- 创建工作流配置界面
- 支持条件判断和循环
- 集成定时任务(使用 APScheduler
- 提供工作流执行日志
**预期效果**:大幅减少重复工作,提升效率
---
#### 8. **内容模板库与最佳实践** ⭐⭐⭐⭐
**价值**:积累成功经验,复用最佳内容模板
**功能点**
- 自动保存高效果内容为模板
- 模板分类(按平台、按行业、按效果)
- 模板搜索和推荐
- 基于模板快速生成内容
- 模板效果统计(使用次数、平均提及率)
**实现思路**
- 识别高效果内容(提及率 > 阈值)
- 提取内容结构作为模板
- 模板参数化(品牌、优势等可替换)
- 提供模板管理界面
**预期效果**:复用成功经验,提升内容质量
---
#### 9. **智能内容去重与相似度检测** ⭐⭐⭐
**价值**:避免重复内容,确保内容多样性
**功能点**
- 检测新生成内容与历史内容的相似度
- 自动去重(相似度 > 阈值时提示)
- 内容多样性分析(确保覆盖不同角度)
- 推荐内容角度(基于已有内容分析)
**实现思路**
- 使用文本相似度算法(如余弦相似度)
- 对比新内容与历史内容
- 提供相似度评分和建议
**预期效果**:确保内容多样性,避免重复投入
---
### 🌐 四、平台与集成增强
#### 10. **多语言支持** ⭐⭐⭐⭐
**价值**:扩展国际市场,提升品牌全球影响力
**功能点**
- 支持英文、日文等多语言内容生成
- 多语言关键词挖掘
- 多语言平台支持(Medium、Dev.to、Reddit 等)
- 多语言验证(使用海外 AI 平台)
**实现思路**
- 扩展 Prompt 模板支持多语言
- 添加多语言平台列表
- 集成海外 AI 平台(Claude、Gemini 等)
**预期效果**:拓展国际市场,提升全球品牌影响力
---
#### 11. **API 接口与集成** ⭐⭐⭐⭐
**价值**:与其他系统集成,支持自动化流程
**功能点**
- RESTful API 接口
- Webhook 支持(内容生成完成时通知)
- 与 CMS 系统集成
- 与营销自动化工具集成
- API 文档和示例代码
**实现思路**
- 使用 FastAPI 创建 API 服务
- 提供认证和限流
- 支持异步任务
- 提供 SDKPython/JavaScript
**预期效果**:支持企业级集成,提升工具价值
---
#### 12. **团队协作与权限管理** ⭐⭐⭐
**价值**:支持团队使用,提升协作效率
**功能点**
- 多用户支持(注册/登录)
- 角色权限管理(管理员、编辑、查看者)
- 内容审核流程
- 团队数据共享
- 操作日志和审计
**实现思路**
- 集成用户认证系统(如 Streamlit-Authenticator
- 数据库添加用户和权限表
- 实现基于角色的访问控制
**预期效果**:支持团队协作,适合企业使用
---
### 🎯 五、内容质量提升
#### 13. **内容个性化与定制** ⭐⭐⭐⭐
**价值**:根据目标受众定制内容风格和角度
**功能点**
- 目标受众画像(技术专家、业务人员、决策者等)
- 内容风格选择(专业、通俗、故事化等)
- 内容角度选择(功能对比、使用教程、案例分析等)
- 个性化内容生成
**实现思路**
- 在 Prompt 中加入受众和风格参数
- 提供预设的受众模板
- 根据受众调整内容深度和语言风格
**预期效果**:提升内容针对性和效果
---
#### 14. **内容结构化增强** ⭐⭐⭐
**价值**:确保内容符合 GEO 最佳实践
**功能点**
- 自动检查内容结构完整性(标题、摘要、清单、FAQ 等)
- 结构化建议(缺失部分自动补充)
- 内容层次优化(确保逻辑清晰)
- Markdown/HTML 格式优化
**实现思路**
- 使用 LLM 分析内容结构
- 识别缺失的结构元素
- 自动生成补充内容
**预期效果**:确保所有内容都符合 GEO 原则
---
### 📈 六、高级分析功能
#### 15. **预测性分析与趋势预测** ⭐⭐⭐⭐
**价值**:预测未来趋势,提前布局
**功能点**
- 提及率趋势预测(未来 30 天)
- 关键词热度预测
- 竞品趋势预测
- 最佳行动时机推荐
**实现思路**
- 使用时间序列分析(ARIMA、LSTM 等)
- 分析历史趋势
- 预测未来变化
- 提供置信区间
**预期效果**:提前布局,抢占先机
---
#### 16. **内容关联分析** ⭐⭐⭐
**价值**:发现内容之间的关联,优化内容策略
**功能点**
- 关键词关联分析(哪些关键词经常一起被提及)
- 平台关联分析(哪些平台组合效果好)
- 内容主题聚类
- 内容网络图可视化
**实现思路**
- 使用关联规则挖掘(Apriori 算法)
- 构建内容关联图
- 可视化展示
**预期效果**:发现隐藏的内容策略规律
---
## 🎯 推荐优先级(综合价值与实现难度)
### 🔥 第一优先级(高价值 + 中等难度)
1. **智能内容质量评分系统** - 直接提升内容质量
2. **ROI 分析与成本优化** - 量化价值,优化投入
3. **智能工作流自动化** - 大幅提升效率
4. **智能关键词挖掘** - 发现新机会
### 🟡 第二优先级(高价值 + 较高难度)
5. **A/B 测试与内容对比** - 数据驱动优化
6. **竞品监控与预警** - 保持竞争优势
7. **内容效果预测模型** - 提前优化策略
### 🟢 第三优先级(中等价值)
8. **内容模板库** - 复用最佳实践
9. **多语言支持** - 扩展市场
10. **API 接口** - 企业级集成
---
## 💡 实施建议
1. **分阶段实施**:先实现第一优先级功能,验证价值后再扩展
2. **数据积累**:先运行一段时间,积累足够数据后再做预测和分析
3. **用户反馈**:根据实际使用情况调整功能优先级
4. **技术选型**:考虑使用现有开源库(如 scikit-learn 用于预测模型)
---
## 🚀 快速开始建议
**第一步**:实现"智能内容质量评分系统"
- 价值高,实现相对简单
- 可以立即提升用户体验
- 为后续功能打下基础
**第二步**:实现"ROI 分析与成本优化"
- 帮助用户量化价值
- 提升工具的商业价值
- 为定价策略提供依据
**第三步**:实现"智能工作流自动化"
- 大幅提升效率
- 增强用户粘性
- 差异化竞争优势
@@ -0,0 +1,427 @@
# GEO 工具完整功能列表
## 📋 说明
本文档列出 GEO 智能内容优化平台的所有已实现功能,包括功能位置、简要说明和相关文档链接。
**最后更新**2025-01-27
**功能总数**50+ 个功能模块
---
## 📊 功能概览
### 核心功能模块
- **关键词管理**:AI生成、托词工具、语义扩展、话题集群
- **内容创作**:20个平台模板、批量生成、质量评分
- **内容优化**:E-E-A-T强化、事实密度、结构化优化
- **效果验证**:多模型验证、负面监控、数据报表
- **平台同步**:GitHub发布、一键复制(12个平台)
### 高级功能模块
- **数据分析**:ROI分析、内容指标、趋势预测
- **工作流自动化**:自定义工作流、批量处理
- **技术配置**robots.txt、sitemap.xml、JSON-LD Schema
- **资源推荐**:GEO工具、代理、论文、社区
---
## 🗂️ 按Tab分类的功能列表
### Tab1:关键词蒸馏
#### 1. AI关键词生成 ✅
- **位置**Tab1 - AI生成模式
- **功能**:使用LLM自动生成关键词
- **文档**:无独立文档(基础功能)
#### 2. 托词工具(AI蒸馏词)✅
- **位置**Tab1 - 托词工具模式
- **功能**:词库管理、组合算法、LLM润色
- **特点**:支持10种组合模式、自动去重
- **文档**:无独立文档(基础功能)
#### 3. 混合模式 ✅
- **位置**Tab1 - 混合模式
- **功能**:AI生成 + 托词工具组合
- **文档**:无独立文档(基础功能)
#### 4. 语义扩展 ✅
- **位置**Tab1 - 语义扩展功能
- **功能**:从单一关键词扩展到8-15个关联词
- **模块**`modules/semantic_expander.py`
- **文档**`docs/features/docs/features/SEMANTIC_EXPANSION_FEATURE.md`
#### 5. 话题集群生成 ✅
- **位置**Tab1 - 话题集群功能
- **功能**:语义聚类、话题命名、内容规划建议
- **模块**`modules/topic_cluster.py`
- **文档**`docs/features/docs/features/TOPIC_CLUSTER_FEATURE.md`
#### 6. 关键词挖掘 ✅
- **位置**:Tab1 - 智能关键词挖掘与趋势分析
- **功能**
- 🌐 行业热点挖掘
- 📊 竞争度分析
- 📈 趋势预测
- 💎 价值矩阵分析
- **模块**`modules/keyword_mining.py`
- **文档**`docs/features/docs/features/KEYWORD_MINING_FEATURE.md`
---
### Tab2:自动创作
#### 7. 内容生成(20个平台)✅
- **位置**Tab2 - 内容生成
- **功能**:为20个平台生成定制化内容
- **平台列表**:见 `README.md`
- **文档**:无独立文档(基础功能)
#### 8. 批量生成 ✅
- **位置**Tab2 - 批量生成模式
- **功能**:一次性为多个关键词和平台生成内容
- **文档**:无独立文档(基础功能)
#### 9. 内容质量评分 ✅
- **位置**:Tab2 - 内容生成后自动评分
- **功能**:多维度评分(结构化、品牌提及、权威性、可引用性)
- **模块**`modules/content_scorer.py`
- **文档**`docs/features/docs/features/CONTENT_SCORER_FEATURE.md`
#### 10. JSON-LD Schema.org 生成 ✅
- **位置**Tab2 - JSON-LD Schema.org 结构化数据生成
- **功能**:生成5种Schema类型(Organization、SoftwareApplication、Product、Service、组合)
- **模块**`modules/schema_generator.py`
- **文档**`docs/features/docs/features/JSON_LD_SCHEMA_FEATURE.md`
#### 11. 技术配置生成 ✅
- **位置**Tab2 - 技术配置生成
- **功能**
- 🤖 robots.txt 生成
- 🗺️ sitemap.xml 生成
- **模块**`modules/technical_config_generator.py`
- **文档**`docs/features/docs/features/TECHNICAL_CONFIG_FEATURE.md`
#### 12. 多模态提示生成 ✅
- **位置**:Tab2 - 生成配图/视频描述
- **功能**:为内容生成配图描述和视频脚本
- **模块**`modules/multimodal_prompt.py`
- **文档**`docs/features/docs/features/MULTIMODAL_FEATURE.md`
#### 13. E-E-A-T 评估与强化 ✅
- **位置**Tab2 - E-E-A-T 评估/强化按钮
- **功能**:评估和强化内容的专业性、经验性、权威性、可信度
- **模块**`modules/eeat_enhancer.py`
- **文档**`docs/features/docs/features/EEAT_FEATURE.md`
#### 14. 优化技巧选择 ✅
- **位置**:Tab2 - 优化技巧选择器
- **功能**:8种优化技巧(证据驱动、对话式、故事化等)
- **模块**`modules/optimization_techniques.py`
- **文档**`docs/features/docs/features/OPTIMIZATION_TECHNIQUES_FEATURE.md`
---
### Tab3:文章优化
#### 15. 文章优化 ✅
- **位置**Tab3 - 文章优化
- **功能**:优化现有文章内容
- **文档**:无独立文档(基础功能)
#### 16. E-E-A-T 强化 ✅
- **位置**Tab3 - E-E-A-T 评估/强化
- **功能**:同Tab2的E-E-A-T功能
- **模块**`modules/eeat_enhancer.py`
- **文档**`docs/features/docs/features/EEAT_FEATURE.md`
#### 17. 事实密度增强 ✅
- **位置**Tab3 - 事实密度增强
- **功能**:自动添加数据点,提升内容可信度
- **模块**`modules/fact_density_enhancer.py`
- **文档**`docs/features/docs/features/FACT_DENSITY_FEATURE.md`
#### 18. 结构化块优化 ✅
- **位置**Tab3 - 结构化块优化
- **功能**:优化内容结构,添加标题、列表、FAQ等
- **文档**:无独立文档(基础功能)
#### 19. 优化技巧应用 ✅
- **位置**Tab3 - 优化技巧选择
- **功能**:应用8种优化技巧
- **模块**`modules/optimization_techniques.py`
- **文档**`docs/features/docs/features/OPTIMIZATION_TECHNIQUES_FEATURE.md`
---
### Tab4:多模型验证
#### 20. 多模型验证 ✅
- **位置**Tab4 - 多模型验证
- **功能**:使用7个LLM平台验证品牌提及率
- **支持平台**DeepSeek、OpenAI、通义千问、Groq、Moonshot、豆包、文心一言
- **文档**:无独立文档(基础功能)
#### 21. 竞品对比分析 ✅
- **位置**Tab4 - 竞品对比
- **功能**:对比品牌与竞品的提及率
- **文档**:无独立文档(基础功能)
#### 22. 负面监控 ✅
- **位置**Tab4 - 负面监控开关
- **功能**:负面提及检测、风险评分、澄清模板生成
- **模块**`modules/negative_monitor.py`
- **文档**`docs/features/docs/features/NEGATIVE_MONITOR_FEATURE.md`
---
### Tab5:历史记录
#### 23. 历史记录查看 ✅
- **位置**Tab5 - 历史记录
- **功能**:查看关键词、文章、优化记录、验证结果
- **数据源**SQLite数据库
- **文档**`docs/implementation/INTEGRATION_NOTES.md``docs/guides/STORAGE_GUIDE.md`
---
### Tab6AI 数据报表
#### 24. 自动验证任务 ✅
- **位置**Tab6 - 自动验证任务
- **功能**:使用历史关键词自动验证
- **文档**:无独立文档(基础功能)
#### 25. 提及率趋势图 ✅
- **位置**Tab6 - 提及率趋势图
- **功能**:按日期展示提及率变化趋势
- **文档**:无独立文档(基础功能)
#### 26. 平台贡献度分析 ✅
- **位置**:Tab6 - 平台贡献度分析
- **功能**:分析各平台的文章分布和贡献度
- **文档**:无独立文档(基础功能)
#### 27. 关键词效果排名 ✅
- **位置**:Tab6 - 关键词效果排名
- **功能**:Top 20 关键词效果排名
- **文档**:无独立文档(基础功能)
#### 28. 竞品对比分析 ✅
- **位置**Tab6 - 竞品对比分析
- **功能**:多维度竞品对比
- **文档**:无独立文档(基础功能)
#### 29. ROI分析与成本优化 ✅
- **位置**Tab6 - ROI分析与成本优化
- **功能**:API成本统计、ROI计算、成本优化建议
- **模块**`modules/roi_analyzer.py`
- **文档**`docs/features/docs/features/ROI_ANALYSIS_FEATURE.md`
#### 30. 内容质量指标分析 ✅
- **位置**:Tab6 - 内容质量指标分析
- **功能**
- Trust Density(信任密度)
- Citation Share(引用比例)
- Authority Score(权威性得分)
- Engagement Potential(参与度潜力)
- **模块**`modules/content_metrics.py`
- **文档**`docs/features/docs/features/CONTENT_METRICS_FEATURE.md`
#### 31. 话题集群分析 ✅
- **位置**Tab6 - 话题集群分析
- **功能**:基于历史关键词生成话题集群分析
- **模块**`modules/topic_cluster.py`
- **文档**`docs/features/docs/features/TOPIC_CLUSTER_FEATURE.md`
#### 32. 数据导出 ✅
- **位置**Tab6 - 数据导出
- **功能**:导出CSV格式数据
- **文档**:无独立文档(基础功能)
---
### Tab7:工作流自动化
#### 33. 工作流管理 ✅
- **位置**Tab7 - 工作流列表
- **功能**:查看、创建、执行工作流
- **模块**`modules/workflow_automation.py`
- **文档**`docs/features/docs/features/WORKFLOW_AUTOMATION_FEATURE.md`
#### 34. 工作流创建 ✅
- **位置**Tab7 - 创建工作流
- **功能**:自定义工作流步骤(关键词生成、内容创作、验证等)
- **模块**`modules/workflow_automation.py`
- **文档**`docs/features/docs/features/WORKFLOW_AUTOMATION_FEATURE.md`
#### 35. 工作流执行历史 ✅
- **位置**Tab7 - 执行历史
- **功能**:查看工作流执行记录和结果
- **模块**`modules/workflow_automation.py`
- **文档**`docs/features/docs/features/WORKFLOW_AUTOMATION_FEATURE.md`
---
### Tab8GEO 资源库
#### 36. GEO 代理推荐 ✅
- **位置**Tab8 - GEO 代理
- **功能**:推荐专业的GEO代理服务
- **模块**`modules/resource_recommender.py`
- **文档**`docs/features/docs/features/RESOURCE_RECOMMENDER_FEATURE.md`
#### 37. 工具推荐 ✅
- **位置**Tab8 - 工具推荐
- **功能**:推荐GEO相关工具和服务
- **模块**`modules/resource_recommender.py`
- **文档**`docs/features/docs/features/RESOURCE_RECOMMENDER_FEATURE.md`
#### 38. 论文/指南链接 ✅
- **位置**Tab8 - 论文/指南
- **功能**:提供GEO相关的论文、指南、文档链接
- **模块**`modules/resource_recommender.py`
- **文档**`docs/features/docs/features/RESOURCE_RECOMMENDER_FEATURE.md`
#### 39. 社区资源 ✅
- **位置**Tab8 - 社区资源
- **功能**:推荐GEO相关社区和论坛
- **模块**`modules/resource_recommender.py`
- **文档**`docs/features/docs/features/RESOURCE_RECOMMENDER_FEATURE.md`
---
### Tab9:平台同步
#### 40. GitHub API 发布 ✅
- **位置**Tab9 - GitHub发布
- **功能**:通过GitHub API自动发布文章
- **模块**`platform_sync/github_publisher.py`
- **文档**`docs/implementation/IMPLEMENTATION_SUMMARY.md``docs/implementation/PLATFORM_SYNC_IMPLEMENTATION.md`
#### 41. 一键复制功能 ✅
- **位置**Tab9 - 一键复制平台
- **功能**:为12个平台格式化内容并复制到剪贴板
- **支持平台**:见 `docs/implementation/IMPLEMENTATION_SUMMARY.md`
- **模块**`platform_sync/copy_manager.py`
- **文档**`docs/implementation/IMPLEMENTATION_SUMMARY.md`
#### 42. 发布记录查看 ✅
- **位置**Tab9 - 发布记录
- **功能**:查看所有发布记录
- **文档**:无独立文档(基础功能)
---
## 🔧 数据持久化功能
#### 43. SQLite 数据存储 ✅
- **位置**:所有Tab(自动保存)
- **功能**
- 关键词保存
- 文章保存
- 优化记录保存
- 验证结果保存
- 平台账号保存
- 发布记录保存
- **模块**`modules/data_storage.py`
- **文档**`docs/implementation/INTEGRATION_NOTES.md``docs/guides/STORAGE_GUIDE.md`
---
## 📊 功能统计
### 按Tab统计
- **Tab1(关键词蒸馏)**:6个功能
- **Tab2(自动创作)**:8个功能
- **Tab3(文章优化)**:5个功能
- **Tab4(多模型验证)**:3个功能
- **Tab5(历史记录)**:1个功能
- **Tab6AI 数据报表)**9个功能
- **Tab7(工作流自动化)**:3个功能
- **Tab8GEO 资源库)**4个功能
- **Tab9(平台同步)**:3个功能
- **数据持久化**1个功能
**总计**43个主要功能模块
### 按功能类型统计
- **核心功能**20个
- **高级功能**15个
- **辅助功能**8个
### 文档覆盖情况
- **有独立文档的功能**15个(*FEATURE.md
- **基础功能(无独立文档)**:28个
- **文档覆盖率**:约35%(主要功能都有文档)
---
## 🔗 相关文档索引
### 功能文档(*FEATURE.md
1. `docs/features/docs/features/EEAT_FEATURE.md` - E-E-A-T 评估与强化
2. `docs/features/docs/features/SEMANTIC_EXPANSION_FEATURE.md` - 语义扩展
3. `docs/features/docs/features/TOPIC_CLUSTER_FEATURE.md` - 话题集群生成
4. `docs/features/docs/features/JSON_LD_SCHEMA_FEATURE.md` - JSON-LD Schema.org 生成
5. `docs/features/docs/features/CONTENT_SCORER_FEATURE.md` - 内容质量评分
6. `docs/features/docs/features/FACT_DENSITY_FEATURE.md` - 事实密度增强
7. `docs/features/docs/features/MULTIMODAL_FEATURE.md` - 多模态提示生成
8. `docs/features/docs/features/OPTIMIZATION_TECHNIQUES_FEATURE.md` - 优化技巧
9. `docs/features/docs/features/KEYWORD_MINING_FEATURE.md` - 关键词挖掘
10. `docs/features/docs/features/WORKFLOW_AUTOMATION_FEATURE.md` - 工作流自动化
11. `docs/features/docs/features/ROI_ANALYSIS_FEATURE.md` - ROI分析
12. `docs/features/docs/features/CONTENT_METRICS_FEATURE.md` - 内容质量指标
13. `docs/features/docs/features/NEGATIVE_MONITOR_FEATURE.md` - 负面监控
14. `docs/features/docs/features/TECHNICAL_CONFIG_FEATURE.md` - 技术配置生成
15. `docs/features/docs/features/RESOURCE_RECOMMENDER_FEATURE.md` - 资源推荐
### 分析报告
- `docs/analysis/CODE_DOCUMENTATION_ANALYSIS.md` - 代码与文档对比分析
- `docs/analysis/FUNCTION_VERIFICATION_REPORT.md` - 功能验证报告
- `docs/analysis/ANALYSIS_ACCURACY_REPORT.md` - 分析准确性报告
- `docs/analysis/FEATURE_ANALYSIS.md` - 功能重要性分析
- `docs/analysis/FEATURE_PRIORITY_ANALYSIS.md` - 功能优先级分析
### 实现文档
- `docs/implementation/IMPLEMENTATION_SUMMARY.md` - 平台同步功能实现总结
- `docs/implementation/PLATFORM_SYNC_IMPLEMENTATION.md` - 平台同步实现指南
- `docs/implementation/PLATFORM_SYNC_TEST.md` - 平台同步测试指南
### 指南文档
- `README.md` - 项目主文档
- `docs/guides/QUICK_START_GUIDE.md` - 快速开始指南
- `docs/guides/STORAGE_GUIDE.md` - 数据存储指南
- `docs/guides/PLATFORM_SETUP.md` - 平台设置指南
- `docs/implementation/INTEGRATION_NOTES.md` - 集成说明
---
## 📝 功能状态说明
### ✅ 已完全实现
所有列出的功能都已完全实现并可用。
### ⏳ 部分实现
- **批量发布功能**:有发布记录,但无批量发布UI和队列管理
- **定时任务**:工作流支持执行,但不支持定时任务
### ❌ 未实现
- **更多平台API发布**:除GitHub外,其他7个平台的API发布器未实现
- **企业图库**:图片管理和自动匹配功能未实现
---
## 🎯 使用建议
1. **新用户**:从 Tab1 开始,按流程使用(关键词 → 内容 → 优化 → 验证)
2. **高级用户**:使用 Tab7 工作流自动化,批量处理任务
3. **数据分析**:使用 Tab6 查看详细的数据报表和分析
4. **内容发布**:使用 Tab9 发布到GitHub或一键复制到其他平台
---
**文档版本**1.0.0
**最后更新**2025-01-27
**维护者**GEO工具开发团队
@@ -0,0 +1,200 @@
# 平台同步功能实现总结
## ✅ 已完成功能
### 第一阶段:基础架构 + GitHub发布(已完成)
#### 1. 数据库扩展 ✅
-`platform_accounts` 表(平台账号配置)
-`publish_records` 表(发布记录)
-`articles` 表扩展(发布状态字段)
#### 2. GitHub发布器 ✅
-`platform_sync/github_publisher.py`
- ✅ 支持创建/更新文件
- ✅ 账号验证功能
- ✅ 错误处理和超时控制
#### 3. DataStorage扩展 ✅
-`save_platform_account()` - 保存平台账号
-`get_platform_account()` - 获取平台账号
-`list_platform_accounts()` - 列出所有账号
-`save_publish_record()` - 保存发布记录
-`get_publish_records()` - 获取发布记录
-`get_article_by_id()` - 根据ID获取文章
#### 4. UI界面 ✅
- ✅ Tab 9:平台同步
- ✅ GitHub账号配置界面
- ✅ 文章发布界面
- ✅ 发布记录查看界面
#### 5. 新增平台内容生成 ✅
- ✅ 新浪博客(博客)
- ✅ 新浪新闻(资讯)
- ✅ 搜狐号(资讯)
- ✅ QQ空间(社交)
- ✅ 邦阅网(外贸)
- ✅ 一点号(资讯)
- ✅ 东方财富(财经)
- ✅ 原创力文档(文档)
#### 6. 一键复制功能 ✅
-`platform_sync/copy_manager.py`
- ✅ 支持12个无API平台的内容格式化
- ✅ 平台特定的格式模板
- ✅ 发布指南生成
- ✅ 剪贴板复制功能
- ✅ UI集成(Tab 9
---
## 📊 当前支持情况
### API发布平台(1个)
- ✅ GitHub
### 一键复制平台(12个)
**完整平台列表**
1. 头条号(资讯软文)
2. 小红书(生活种草)
3. 抖音图文(短内容)
4. 简书(文艺)
5. QQ空间(社交)
6. 新浪博客(博客)
7. 新浪新闻(资讯)
8. 搜狐号(资讯)
9. 一点号(资讯)
10. 东方财富(财经)
11. 邦阅网(外贸)
12. 原创力文档(文档)
**说明**:这些平台目前不支持 API 发布,使用一键复制功能,内容会自动格式化并复制到剪贴板。
### 内容生成平台(20个)
**完整平台列表**
1. 知乎(专业问答)
2. 小红书(生活种草)
3. CSDN(技术博客)
4. B站(视频脚本)
5. 头条号(资讯软文)
6. GitHubREADME/文档)
7. 微信公众号(长文)
8. 抖音图文(短内容)
9. 百家号(资讯)
10. 网易号(资讯)
11. 企鹅号(资讯)
12. 简书(文艺)
13. 新浪博客(博客)
14. 新浪新闻(资讯)
15. 搜狐号(资讯)
16. QQ空间(社交)
17. 邦阅网(外贸)
18. 一点号(资讯)
19. 东方财富(财经)
20. 原创力文档(文档)
**说明**
- ✅ 原有12个平台(1-12
- ✅ 新增8个平台(13-20
---
## 🎯 功能特性
### GitHub发布
- ✅ 自动创建/更新文件
- ✅ 账号验证
- ✅ 发布状态跟踪
- ✅ 错误处理和重试
### 一键复制
- ✅ 内容格式化(移除Markdown,适配平台)
- ✅ 自动复制到剪贴板
- ✅ 发布指南显示
- ✅ 内容下载功能
- ✅ 发布记录标记
---
## 📁 文件结构
```
geo_tool/
├── platform_sync/
│ ├── __init__.py
│ ├── base_publisher.py ✅ 发布器基类
│ ├── github_publisher.py ✅ GitHub发布器
│ └── copy_manager.py ✅ 一键复制管理器
├── modules/data_storage.py ✅ 已扩展
├── geo_tool.py ✅ 已添加Tab 9 + 8个新平台
├── requirements.txt ✅ 已更新
├── PLATFORM_SYNC_TEST.md ✅ 测试指南
└── IMPLEMENTATION_SUMMARY.md ✅ 实现总结
```
---
## 🚀 使用方法
### GitHub发布
1. 进入 Tab 9:平台同步
2. 配置GitHub账号(Token、仓库所有者、仓库名称)
3. 选择文章和平台(GitHub
4. 点击"发布到GitHub"
5. 查看发布结果
### 一键复制
1. 进入 Tab 9:平台同步
2. 选择文章和平台(12个一键复制平台之一)
3. 查看格式化后的内容(已自动复制)
4. 按照发布指南,粘贴到对应平台
5. 点击"复制到剪贴板"可重新复制
---
## 📝 下一步计划
### 待实现API平台(7个)
1. ⏳ 微信公众号
2. ⏳ B站
3. ⏳ 知乎
4. ⏳ CSDN
5. ⏳ 百家号
6. ⏳ 企鹅号
7. ⏳ 网易号
### 待实现功能
- ⏳ 批量发布功能
- ⏳ 发布队列管理
- ⏳ 定时发布
- ⏳ 发布数据分析
---
## ⚠️ 注意事项
1. **GitHub Token**:需要 `repo` 权限
2. **一键复制**:需要手动粘贴到平台,无法自动发布
3. **内容格式**:一键复制会自动清理Markdown格式,适配平台要求
4. **发布记录**:所有发布操作都会记录,包括一键复制
---
## 🎉 完成度
- **基础架构**100% ✅
- **GitHub发布**100% ✅
- **新增平台内容生成**:100% ✅
- **一键复制功能**100% ✅
- **其他API平台**0% ⏳
- **批量发布**0% ⏳
**总体完成度**:约 40%(基础功能已完成,可投入使用)
---
**实现日期**2025-01-26
**状态**MVP版本已完成,可开始测试使用
+78
View File
@@ -0,0 +1,78 @@
# SQLite 持久化集成说明
## ✅ 已完成的功能
### 1. 数据自动保存
-**关键词生成**:自动保存到数据库
-**内容生成**:每生成一篇文章自动保存
-**文章优化**:优化记录自动保存
-**验证结果**:验证结果自动保存
### 2. 历史记录查看(新增 Tab5)
- ✅ 统计数据总览(关键词、文章、优化、验证数量)
- ✅ 历史文章列表和详情查看
- ✅ 历史优化记录和详情查看
- ✅ 历史验证结果和可视化
## 📁 数据库文件
- **位置**`geo_data.db`(项目根目录)
- **格式**SQLite 单文件数据库
- **已添加到**`.gitignore`(不会提交到版本控制)
## 🚀 使用方法
### 正常使用
所有数据会自动保存,无需额外操作。只需正常使用各个功能模块即可。
### 查看历史记录
1. 点击 **"5 历史记录"** Tab
2. 查看统计数据
3. 浏览历史文章、优化记录、验证结果
4. 点击选择框查看详情
## 🔧 技术细节
### 错误处理
- 所有数据库操作都包含 try-except 错误处理
- 即使数据库保存失败,也不会影响主要功能
- 会显示警告提示,但不会中断流程
### 数据存储结构
- **keywords 表**:关键词列表
- **articles 表**:生成的文章内容
- **optimizations 表**:优化记录
- **verify_results 表**:验证结果
## 📊 性能
- SQLite 是轻量级数据库,性能优秀
- 单文件存储,易于备份和迁移
- 支持复杂查询和统计分析
## 🔄 数据迁移
如果需要迁移数据:
1. 复制 `geo_data.db` 文件即可
2. 或使用 SQLite 工具导出/导入
## ⚠️ 注意事项
1. **首次运行**:会自动创建数据库文件
2. **数据持久化**:关闭应用后数据不会丢失
3. **多品牌支持**:数据按品牌分类存储
4. **清空功能**:侧边栏的"重置全部结果"只清空 Session State**不会删除数据库记录**
## 🐛 故障排除
如果遇到数据库相关错误:
1. 检查是否有写入权限
2. 检查 `geo_data.db` 文件是否被其他程序占用
3. 可以删除 `geo_data.db` 文件重新创建(会丢失所有历史数据)
## 📝 后续扩展建议
1. **数据导出**:可以添加导出功能,将数据导出为 CSV/Excel
2. **数据搜索**:可以添加搜索功能,按关键词搜索历史记录
3. **数据统计**:可以添加更详细的统计分析
4. **数据备份**:可以添加定期备份功能
@@ -0,0 +1,752 @@
# 自媒体平台文章同步功能分析报告(最终版)
> **更新说明**:保留原有12个平台,新增8个平台,总计20个平台需要支持文章同步功能
## 📋 项目现状分析
### 当前功能
1. **内容生成**:已支持12个自媒体平台的内容生成
- **原有平台**
1. 知乎(专业问答)
2. 小红书(生活种草)
3. CSDN(技术博客)
4. B站(视频脚本)
5. 头条号(资讯软文)
6. GitHubREADME/文档)
7. 微信公众号(长文)
8. 抖音图文(短内容)
9. 百家号(资讯)
10. 网易号(资讯)
11. 企鹅号(资讯)
12. 简书(文艺)
2. **数据存储**:已实现SQLite数据持久化
- 文章内容、关键词、平台信息都已保存
- 支持历史记录查看和导出
3. **内容格式**
- 支持Markdown格式输出
- 平台特定的Prompt模板
- 内容质量评分
### 缺失功能
-**文章发布/同步**:目前只生成内容,需要手动复制发布
-**发布状态跟踪**:无法追踪文章是否已发布
-**平台账号管理**:没有平台账号认证和配置
---
## 🎯 功能需求分析
### 核心需求
**自媒体账号平台的文章同步功能**,需要覆盖:
- **原有12个平台**(保留,需添加发布功能)
- **新增8个平台**(需要添加内容生成 + 发布功能)
### 新增平台列表
1. **新浪博客**(新增)
2. **新浪新闻**(新增)
3. **搜狐号**(新增)
4. **QQ空间**(新增)
5. **邦阅网**(新增)
6. **一点号**(新增)
7. **东方财富**(新增)
8. **原创力文档**(新增)
### 总计平台数量
**20个平台**需要支持文章同步功能
**功能要求**
1. 将生成的文章自动发布到对应平台
2. 支持批量发布
3. 发布状态跟踪和记录
4. 发布失败重试机制
5. 新增平台需要同时支持内容生成和发布
---
## 🔍 技术可行性分析(20个平台详细评估)
### 📊 **平台分类总览**
#### 原有12个平台(已有内容生成,需添加发布功能)
1. 知乎(专业问答)
2. 小红书(生活种草)
3. CSDN(技术博客)
4. B站(视频脚本)
5. 头条号(资讯软文)
6. GitHubREADME/文档)
7. 微信公众号(长文)
8. 抖音图文(短内容)
9. 百家号(资讯)
10. 网易号(资讯)
11. 企鹅号(资讯)
12. 简书(文艺)
#### 新增8个平台(需添加内容生成 + 发布功能)
13. 新浪博客(新增)
14. 新浪新闻(新增)
15. 搜狐号(新增)
16. QQ空间(新增)
17. 邦阅网(新增)
18. 一点号(新增)
19. 东方财富(新增)
20. 原创力文档(新增)
---
### ✅ **有官方API支持(可直接实现发布)**
#### 原有平台(5个)
1. **B站(哔哩哔哩)** ⭐⭐⭐⭐
- **API完善度**:高
- **官方文档**https://bilibili.apifox.cn/
- **核心接口**:专栏稿件管理 `/x/article/create`
- **认证方式**OAuth2.0
- **实现难度**:中等
- **优先级**:⭐⭐⭐⭐(高)
2. **知乎** ⭐⭐⭐⭐
- **API完善度**:中高
- **官方文档**https://www.zhihu.com/open
- **核心接口**:内容发布接口
- **认证方式**OAuth2.0
- **实现难度**:中等
- **优先级**:⭐⭐⭐⭐(高)
3. **CSDN** ⭐⭐⭐
- **API完善度**:中等
- **官方文档**:有开放平台
- **认证方式**OAuth2.0
- **实现难度**:中等
- **优先级**:⭐⭐⭐(中)
4. **百家号** ⭐⭐⭐
- **API完善度**:中等
- **官方文档**:有开放平台
- **认证方式**OAuth2.0
- **实现难度**:中等
- **限制**:需要企业认证
- **优先级**:⭐⭐⭐(中)
5. **企鹅号** ⭐⭐⭐
- **API完善度**:中等
- **官方文档**https://open.om.qq.com/
- **认证方式**OAuth2.0
- **实现难度**:中等
- **限制**:第三方服务平台功能"暂停维护中"
- **优先级**:⭐⭐⭐(中)
#### 新增平台(0个)
- 新增的8个平台均无API支持
---
### ⚠️ **API支持有限(需要特殊处理)**
#### 原有平台(7个)
6. **GitHub** ⭐⭐⭐⭐⭐
- **API完善度**:非常高
- **官方文档**https://docs.github.com/en/rest
- **核心接口**:创建文件、创建Issue
- **认证方式**Personal Access Token
- **实现难度**:低
- **优先级**:⭐⭐⭐⭐⭐(最高)
7. **微信公众号** ⭐⭐⭐⭐⭐
- **API完善度**:高
- **官方文档**https://developers.weixin.qq.com/doc/offiaccount/Publish/Publish.html
- **核心接口**:上传图文、发布草稿
- **认证方式**OAuth2.0,需要企业认证
- **实现难度**:中等
- **优先级**:⭐⭐⭐⭐(高)
8. **头条号** ⭐⭐
- **API完善度**:低
- **官方文档**https://developer.open-douyin.com/
- **核心接口**:无直接内容发布API
- **实现方式**:主要通过小程序挂载
- **实现难度**:高
- **替代方案**:一键复制
- **优先级**:⭐⭐(低)
9. **网易号** ⭐⭐⭐
- **API完善度**:中等
- **官方文档**:有OAuth认证等账号体系接口
- **实现难度**:中等-高
- **限制**:内容发布API需要进一步确认
- **优先级**:⭐⭐⭐(中)
10. **小红书** ⭐⭐
- **API完善度**:低
- **官方文档**:无公开API
- **实现难度**:高
- **替代方案**:一键复制
- **优先级**:⭐⭐(低)
11. **抖音** ⭐⭐
- **API完善度**:低
- **官方文档**:主要面向视频,图文支持有限
- **实现难度**:高
- **替代方案**:一键复制
- **优先级**:⭐⭐(低)
12. **简书** ⭐⭐
- **API完善度**:低
- **官方文档**:无公开API
- **实现难度**:高
- **替代方案**:一键复制
- **优先级**:⭐⭐(低)
#### 新增平台(8个)
13. **QQ空间** ⭐⭐
- **API完善度**:低
- **官方文档**https://open.qq.com/
- **核心接口**:主要是分享功能(`shareToQzone`
- **实现难度**:高
- **替代方案**:一键复制
- **优先级**:⭐⭐(低)
14. **新浪博客** ⭐⭐
- **API完善度**:低
- **官方文档**:新浪微博有开放平台,但博客API不明确
- **实现难度**:高
- **替代方案**:一键复制
- **优先级**:⭐⭐(低)
15. **新浪新闻** ⭐⭐
- **API完善度**:低
- **官方文档**:无明确公开API
- **实现难度**:高
- **替代方案**:一键复制
- **优先级**:⭐⭐(低)
16. **搜狐号** ⭐⭐
- **API完善度**:低
- **官方文档**:无明确公开API
- **实现难度**:高
- **替代方案**:一键复制
- **优先级**:⭐⭐(低)
17. **一点号** ⭐⭐
- **API完善度**:低
- **官方文档**:无明确公开API
- **实现难度**:高
- **替代方案**:一键复制
- **优先级**:⭐⭐(低)
18. **东方财富** ⭐⭐
- **API完善度**:低
- **官方文档**:无明确公开API
- **实现难度**:高
- **替代方案**:一键复制
- **优先级**:⭐⭐(低)
19. **邦阅网** ⭐⭐
- **API完善度**:低
- **官方文档**:无明确公开API
- **实现难度**:高
- **替代方案**:一键复制
- **优先级**:⭐⭐(低)
20. **原创力文档** ⭐⭐
- **API完善度**:低
- **官方文档**:无明确公开API
- **实现难度**:高
- **替代方案**:一键复制
- **优先级**:⭐⭐(低)
---
### 📊 **平台分类汇总表**
| 平台 | 类型 | API支持 | 实现难度 | 优先级 | 推荐方案 |
|------|------|---------|---------|--------|----------|
| **原有平台(12个)** |
| GitHub | 原有 | ✅ 非常高 | 低 | ⭐⭐⭐⭐⭐ | 直接API集成 |
| 微信公众号 | 原有 | ✅ 高 | 中等 | ⭐⭐⭐⭐ | 直接API集成 |
| B站 | 原有 | ✅ 高 | 中等 | ⭐⭐⭐⭐ | 直接API集成 |
| 知乎 | 原有 | ✅ 中高 | 中等 | ⭐⭐⭐⭐ | 直接API集成 |
| CSDN | 原有 | ✅ 中等 | 中等 | ⭐⭐⭐ | 直接API集成 |
| 百家号 | 原有 | ✅ 中等 | 中等 | ⭐⭐⭐ | 直接API集成 |
| 企鹅号 | 原有 | ✅ 中等 | 中等 | ⭐⭐⭐ | 直接API集成 |
| 网易号 | 原有 | ✅ 中等 | 中等-高 | ⭐⭐⭐ | 直接API集成(需确认) |
| 头条号 | 原有 | ⚠️ 低 | 高 | ⭐⭐ | 一键复制 |
| 小红书 | 原有 | ❌ 无 | 高 | ⭐⭐ | 一键复制 |
| 抖音 | 原有 | ❌ 无 | 高 | ⭐⭐ | 一键复制 |
| 简书 | 原有 | ❌ 无 | 高 | ⭐⭐ | 一键复制 |
| **新增平台(8个)** |
| QQ空间 | 新增 | ⚠️ 低 | 高 | ⭐⭐ | 一键复制 |
| 新浪博客 | 新增 | ⚠️ 低 | 高 | ⭐⭐ | 一键复制 |
| 新浪新闻 | 新增 | ❌ 无 | 高 | ⭐⭐ | 一键复制 |
| 搜狐号 | 新增 | ❌ 无 | 高 | ⭐⭐ | 一键复制 |
| 一点号 | 新增 | ❌ 无 | 高 | ⭐⭐ | 一键复制 |
| 东方财富 | 新增 | ❌ 无 | 高 | ⭐⭐ | 一键复制 |
| 邦阅网 | 新增 | ❌ 无 | 高 | ⭐⭐ | 一键复制 |
| 原创力文档 | 新增 | ❌ 无 | 高 | ⭐⭐ | 一键复制 |
**统计**
- **API直接集成**:8个平台(GitHub、微信公众号、B站、知乎、CSDN、百家号、企鹅号、网易号)
- **一键复制功能**:12个平台(头条号、小红书、抖音、简书 + 8个新增平台)
- **总计**20个平台
---
## 💡 实现复杂度评估(20个平台)
### 总体评估:**高** ⭐⭐⭐⭐
**原因**
- 20个平台中,只有8个平台有较好的API支持
- 12个平台API支持有限或没有API
- 需要混合方案:API集成 + 一键复制功能
- 新增8个平台需要同时实现内容生成和发布功能
### 复杂度分解
#### 1. **基础架构** ⭐⭐⭐
- **数据模型扩展**
- 新增`platform_accounts`表(存储20个平台的账号信息)
- 新增`publish_records`表(存储发布记录)
- 扩展`articles`表(添加发布状态字段)
- 新增`platform_configs`表(存储平台配置和规则)
- **实现难度**:低-中等
- **工作量**3-4天
#### 2. **平台API集成** ⭐⭐⭐⭐⭐
- **需要实现**
- OAuth2.0认证流程(8个平台)
- Token管理和刷新机制
- 各平台API调用封装(8个平台)
- 错误处理和重试机制
- 平台特定规则处理
- **实现难度**:高
- **工作量**
- GitHub1-2天(最简单)
- 微信公众号:3-4天
- B站:3-4天
- 知乎:3-4天
- CSDN3-4天
- 百家号:4-5天(需企业认证)
- 企鹅号:4-5天(API状态需确认)
- 网易号:4-5天(需确认发布API)
- **总计**25-33天(8个平台)
#### 3. **新增平台内容生成** ⭐⭐⭐
- **需要实现**
- 8个新增平台的Prompt模板
- 平台特定的内容格式要求
- 内容生成功能集成
- **实现难度**:中等
- **工作量**:5-7天(8个平台)
#### 4. **一键复制功能** ⭐⭐⭐
- **需要实现**
- 12个无API平台的内容格式化
- 平台特定的格式模板(标题、正文、标签等)
- 剪贴板复制功能
- 发布指南生成
- **实现难度**:中等
- **工作量**7-10天(12个平台)
#### 5. **内容格式转换** ⭐⭐⭐⭐
- **需要实现**
- Markdown → HTML(部分平台)
- Markdown → 纯文本(部分平台)
- 图片上传和处理(有API的平台)
- 平台特定格式适配(20个平台)
- 字数限制处理
- 标签/分类处理
- **实现难度**:中等-高
- **工作量**10-14天(20个平台)
#### 6. **发布流程管理** ⭐⭐⭐⭐
- **需要实现**
- 批量发布队列(支持API发布和复制提示)
- 发布状态跟踪(API发布 + 手动发布标记)
- 失败重试机制(仅API发布)
- 发布日志记录
- 发布间隔控制(避免频率限制)
- **实现难度**:中等-高
- **工作量**5-7天
#### 7. **用户界面** ⭐⭐⭐
- **需要实现**
- 平台账号配置界面(20个平台)
- 发布任务管理界面
- 发布状态展示(区分API发布和手动发布)
- 一键复制按钮和提示
- 发布指南展示
- **实现难度**:中等
- **工作量**5-7天
### 总工作量估算
| 模块 | 工作量 | 难度 |
|------|--------|------|
| 基础架构 | 3-4天 | ⭐⭐⭐ |
| API集成(8个平台) | 25-33天 | ⭐⭐⭐⭐⭐ |
| 新增平台内容生成(8个) | 5-7天 | ⭐⭐⭐ |
| 一键复制(12个平台) | 7-10天 | ⭐⭐⭐ |
| 内容格式转换(20个平台) | 10-14天 | ⭐⭐⭐⭐ |
| 发布流程管理 | 5-7天 | ⭐⭐⭐⭐ |
| 用户界面(20个平台) | 5-7天 | ⭐⭐⭐ |
| **总计** | **60-82天** | **高** |
---
## 📊 实现方案建议(针对20个平台)
### 方案一:混合方案(强烈推荐)⭐⭐⭐⭐⭐
**核心策略**:API集成 + 新增平台内容生成 + 一键复制 + 发布指南
#### 阶段一:MVP版本(4-5周)
**目标**:支持8个有API的平台 + 新增平台内容生成 + 基础一键复制功能
**API集成平台**(优先级排序):
1.**GitHub**1-2天)- 最简单,验证架构
2.**微信公众号**3-4天)- 用户量大,API完善
3.**B站**3-4天)- API完善,用户量大
4.**知乎**(3-4天)- API相对完善,用户量大
5.**CSDN**3-4天)- 技术平台,API支持
6.**百家号**(4-5天)- 百度生态,需要企业认证
7.**企鹅号**(4-5天)- 腾讯生态,需确认API状态
8.**网易号**4-5天)- 需确认发布API
**新增平台内容生成**8个平台):
- 新浪博客、新浪新闻、搜狐号、QQ空间、邦阅网、一点号、东方财富、原创力文档
- 为每个平台创建Prompt模板
- 集成到内容生成流程
**基础功能**
- 平台账号管理(20个平台)
- 单篇API发布(8个平台)
- 一键复制功能(12个平台)
- 发布状态记录
#### 阶段二:完善版本(2-3周)
**目标**:优化体验 + 扩展功能
**功能扩展**
- 批量发布功能
- 发布失败重试机制
- 发布间隔控制
- 发布指南生成(9个无API平台)
- 内容格式优化
#### 阶段三:高级功能(1-2周)
**目标**:提升效率
**高级功能**
- 发布队列管理
- 定时发布
- 发布数据分析
- 平台效果对比
### 方案二:全API集成(不推荐)❌
**问题**
- 9个平台没有API或API支持有限
- 无法满足"覆盖14个平台"的需求
- 开发周期长,风险高
### 方案三:第三方服务集成(备选)
**使用第三方服务**
- 如:新榜、微小宝、壹伴等第三方发布工具
- **优点**:快速实现,支持平台多
- **缺点**
- 需要付费(100-500元/月/平台)
- 数据安全性问题
- 功能受限
- 可能不支持所有14个平台
### 推荐实施路径(详细)
#### 第1-2周:基础架构 + GitHub + 微信公众号
- 数据模型设计(3-4天)
- 基础架构搭建(2-3天)
- GitHub API集成(1-2天,验证架构)
- 微信公众号API集成(3-4天)
- 测试和优化(2-3天)
#### 第3-4周:B站 + 知乎 + CSDN
- B站API集成(3-4天)
- 知乎API集成(3-4天)
- CSDN API集成(3-4天)
- 新增平台内容生成开发(3-4天,8个平台)
- 测试和优化(2-3天)
#### 第5-6周:百家号 + 企鹅号 + 网易号
- 百家号API集成(4-5天)
- 企鹅号API集成(4-5天)
- 网易号API集成(4-5天)
- 新增平台内容生成完善(2-3天)
- 测试和优化(2-3天)
#### 第7-8周:一键复制功能(12个平台)
- 原有平台一键复制(4个平台:头条号、小红书、抖音、简书)
- 新增平台一键复制(8个平台)
- 平台格式模板开发
- 发布指南生成
- 测试和优化(2-3天)
#### 第9-10周:批量发布 + 优化
- 批量发布功能(3-4天)
- 发布流程管理(3-4天)
- 用户界面优化(3-4天,20个平台)
- 全面测试(3-4天)
**总计**10周(2.5个月)
---
## ⚠️ 主要挑战和风险
### 1. **平台API限制**
- **问题**:部分平台需要企业认证才能使用API
- **影响**:个人用户无法使用自动发布
- **解决方案**:提供手动发布指南,或仅支持有开放API的平台
### 2. **认证复杂度**
- **问题**:OAuth2.0流程复杂,需要用户授权
- **影响**:用户体验可能不够流畅
- **解决方案**:提供详细的授权指南,简化授权流程
### 3. **内容格式差异**
- **问题**:各平台对内容格式要求不同
- **影响**:需要大量格式转换工作
- **解决方案**:建立平台格式转换模板库
### 4. **API稳定性**
- **问题**:平台API可能变更或限制
- **影响**:需要持续维护
- **解决方案**:建立API监控和错误处理机制
### 5. **合规风险**
- **问题**:自动发布可能违反平台规则
- **影响**:账号可能被封禁
- **解决方案**
- 遵守平台发布频率限制
- 提供发布间隔设置
- 明确告知用户风险
---
## 💰 成本估算(20个平台)
### 开发成本
- **MVP版本**(8个API平台 + 新增平台内容生成 + 基础一键复制):4-5周(1个开发者)
- **完整版本**(20个平台全覆盖):10周(1个开发者)
- **维护成本**:每月3-4天(API变更适配 + 平台规则更新 + 新增平台维护)
### 运营成本
- **API调用费用**
- 哔哩哔哩:免费
- 知乎:免费(可能有调用限制)
- 百家号:免费(需企业认证)
- 企鹅号:免费(需确认)
- 网易号:免费(需确认)
- **第三方服务**:如使用第三方工具,可能需要付费(100-500元/月/平台)
- **企业认证费用**
- 百家号:可能需要企业认证(费用视情况而定)
- 企鹅号:可能需要企业认证
### 总成本估算
- **开发成本**:8周 × 1开发者 = 约2个月
- **一次性成本**:企业认证费用(如需要)
- **月度运营成本**:0-500元(取决于是否使用第三方服务)
---
## ✅ 实施建议(20个平台)
### 推荐实施路径(按优先级)
#### 第一步:基础架构 + GitHub + 微信公众号(验证可行性)
- **工作量**8-10天
- **风险**:低
- **价值**:验证技术可行性,GitHub最简单,微信公众号用户量大
- **产出**2个平台完整发布功能
#### 第二步:B站 + 知乎 + CSDN(扩大覆盖)
- **工作量**8-10天
- **风险**:低-中等
- **价值**:高(三个重要平台)
- **产出**5个平台完整发布功能
#### 第三步:百家号 + 企鹅号 + 网易号(完善API平台)
- **工作量**10-15天
- **风险**:中等(需确认API状态,百家号需要企业认证)
- **价值**:中高(扩大API平台覆盖)
- **产出**8个平台完整发布功能
#### 第四步:新增平台内容生成(8个平台)
- **工作量**5-7天
- **风险**:低
- **价值**:高(新增平台支持内容生成)
- **产出**:8个新增平台内容生成功能
#### 第五步:一键复制功能(覆盖12个无API平台)
- **工作量**7-10天
- **风险**:低
- **价值**:高(覆盖剩余12个平台)
- **产出**20个平台全覆盖
#### 第六步:批量发布 + 优化(提升效率)
- **工作量**7-10天
- **风险**:低
- **价值**:高(提升用户体验)
- **产出**:完整的发布管理系统
### 技术选型建议
1. **认证管理**
- 使用`requests-oauthlib`处理OAuth2.0
- Token存储在加密的数据库字段中
2. **API调用**
- 使用`httpx``requests`进行HTTP请求
- 实现统一的API客户端基类
3. **任务队列**
- 使用`celery`或简单的后台任务(Streamlit支持)
- 或使用`asyncio`实现异步发布
4. **错误处理**
- 实现重试机制(exponential backoff
- 详细的错误日志记录
---
## 📝 总结(20个平台)
### 可行性结论
**可以实现,但需要混合方案:API集成 + 新增平台内容生成 + 一键复制**
### 复杂度评估
- **总体复杂度**:⭐⭐⭐⭐(高)
- **技术难度**:中等-高
- **工作量**:10周(完整版本,20个平台全覆盖)
### 平台覆盖情况
- **API直接集成**:8个平台(GitHub、微信公众号、B站、知乎、CSDN、百家号、企鹅号、网易号)
- **一键复制功能**:12个平台(头条号、小红书、抖音、简书 + 8个新增平台)
- **新增平台内容生成**:8个平台(新浪博客、新浪新闻、搜狐号、QQ空间、邦阅网、一点号、东方财富、原创力文档)
- **覆盖率**100%20/20
### 推荐方案
1. **优先实现**:GitHub、微信公众号、B站、知乎、CSDN(5个平台,API相对完善)
2. **第二阶段**:百家号、企鹅号、网易号(3个平台,需确认API状态)
3. **第三阶段**:新增平台内容生成(8个平台)
4. **第四阶段**:一键复制功能(12个无API平台)
5. **第五阶段**:批量发布、优化体验
### 关键成功因素
1.**混合方案**:API集成 + 新增平台内容生成 + 一键复制,确保20个平台全覆盖
2.**清晰的平台API文档**8个API平台需要详细文档
3.**完善的错误处理和重试机制**API发布需要
4.**用户友好的账号配置界面**20个平台配置管理
5.**详细的发布状态反馈**:区分API发布和手动发布
6.**遵守平台规则和限制**:避免账号被封禁
7.**新增平台内容生成**:8个新增平台需要Prompt模板和格式适配
8.**一键复制功能优化**:提供平台特定的格式模板和发布指南
### 风险提示
1. ⚠️ **API状态不确定**:企鹅号、网易号的API状态需要进一步确认
2. ⚠️ **企业认证要求**:百家号等平台可能需要企业认证
3. ⚠️ **平台规则变化**:各平台可能调整API或规则
4. ⚠️ **开发周期**10周开发周期,需要合理安排资源
5. ⚠️ **新增平台调研**:8个新增平台的格式要求和发布规则需要详细调研
---
## 🔗 相关资源(14个平台)
### API平台文档
- [哔哩哔哩开放平台](https://bilibili.apifox.cn/)
- [知乎开放平台](https://www.zhihu.com/open)
- [企鹅号开放平台](https://open.om.qq.com/)
- [网易开放平台](https://reg.163.com/)
- [百家号开放平台](https://openapi.baidu.com/)
### 其他平台
- [今日头条开放平台](https://developer.open-douyin.com/)(主要是小程序)
- [QQ空间开放平台](https://open.qq.com/)
- [新浪微博开放平台](https://open.weibo.com/)
### 需要进一步调研的平台
- 搜狐号
- 一点号
- 东方财富
- 邦阅网
- 原创力文档
---
## 📋 实施检查清单
### 阶段一:基础架构 + 哔哩哔哩
- [ ] 数据库表设计(platform_accounts, publish_records等)
- [ ] 基础架构代码框架
- [ ] 哔哩哔哩API集成
- [ ] OAuth2.0认证流程
- [ ] 内容格式转换(Markdown → B站格式)
- [ ] 发布功能测试
### 阶段二:B站 + 知乎 + CSDN + 新增平台内容生成
- [ ] B站API集成
- [ ] 知乎API集成
- [ ] CSDN API集成
- [ ] 新增平台内容生成开发(8个平台)
- [ ] 新增平台Prompt模板创建
- [ ] 发布状态跟踪
### 阶段三:百家号 + 企鹅号 + 网易号
- [ ] 百家号API集成(需企业认证)
- [ ] 企鹅号API集成(需确认API状态)
- [ ] 网易号API集成(需确认发布API)
- [ ] 企业认证流程(如需要)
### 阶段四:一键复制功能(12个平台)
- [ ] 原有平台一键复制(4个平台:头条号、小红书、抖音、简书)
- [ ] 新增平台一键复制(8个平台)
- [ ] 平台格式模板(标题、正文、标签等)
- [ ] 发布指南生成
### 阶段四:批量发布 + 优化
- [ ] 批量发布功能
- [ ] 发布队列管理
- [ ] 发布间隔控制
- [ ] 发布数据分析
- [ ] 用户界面优化
- [ ] 全面测试
---
**报告生成时间**2025-01-26
**更新说明**:保留原有12个平台,新增8个平台,总计20个平台需要支持文章同步功能
**分析基于**:项目代码分析 + 平台API调研 + 最新平台政策
---
## 📌 重要说明
### 原有平台(12个)
- 已有内容生成功能
- 需要添加发布功能
- 部分平台已有API支持
### 新增平台(8个)
- 需要同时实现内容生成和发布功能
- 均无API支持,需使用一键复制方案
- 需要创建Prompt模板和格式适配
### 总计
- **20个平台**需要支持文章同步功能
- **8个平台**支持API直接发布
- **12个平台**使用一键复制功能
@@ -0,0 +1,835 @@
# 平台文章同步功能实现指南
> 实现20个平台的文章同步功能:8个API平台 + 12个一键复制平台
## 📋 目录
1. [技术架构设计](#技术架构设计)
2. [数据库设计](#数据库设计)
3. [模块划分](#模块划分)
4. [核心代码实现](#核心代码实现)
5. [实施步骤](#实施步骤)
6. [测试方案](#测试方案)
---
## 🏗️ 技术架构设计
### 整体架构
```
┌─────────────────────────────────────────────────────────┐
│ Streamlit UI Layer │
│ (平台配置、发布管理、状态展示、一键复制) │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Platform Sync Manager │
│ (统一发布接口、任务队列、状态管理) │
└─────────────────────────────────────────────────────────┘
┌───────────────────┴───────────────────┐
│ │
┌───────────────────┐ ┌──────────────────────┐
│ API Publishers │ │ Copy-to-Clipboard │
│ (8个平台) │ │ (12个平台) │
│ │ │ │
│ - GitHub │ │ - 头条号 │
│ - 微信公众号 │ │ - 小红书 │
│ - B站 │ │ - 抖音 │
│ - 知乎 │ │ - 简书 │
│ - CSDN │ │ - QQ空间 │
│ - 百家号 │ │ - 新浪博客/新闻 │
│ - 企鹅号 │ │ - 搜狐号 │
│ - 网易号 │ │ - 一点号 │
│ │ │ - 东方财富 │
│ │ │ - 邦阅网 │
│ │ │ - 原创力文档 │
└───────────────────┘ └──────────────────────┘
│ │
└───────────────────┬───────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Data Storage Layer (SQLite) │
│ (平台账号、发布记录、文章状态) │
└─────────────────────────────────────────────────────────┘
```
### 技术栈
- **后端框架**Streamlit(已有)
- **数据库**SQLite(已有)
- **HTTP客户端**`httpx``requests`
- **OAuth2.0**`requests-oauthlib`
- **任务队列**`asyncio`(异步发布)
- **内容转换**`markdown``html2text``Pillow`(图片处理)
---
## 💾 数据库设计
### 新增表结构
#### 1. platform_accounts(平台账号表)
```sql
CREATE TABLE IF NOT EXISTS platform_accounts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
platform TEXT NOT NULL, -- 平台名称
account_type TEXT NOT NULL, -- 'api' 或 'manual'
account_name TEXT, -- 账号名称/标识
access_token TEXT, -- OAuth token(加密存储)
refresh_token TEXT, -- 刷新token(加密存储)
token_expires_at TIMESTAMP, -- token过期时间
api_key TEXT, -- API Key(如GitHub
api_secret TEXT, -- API Secret
config_json TEXT, -- 平台特定配置(JSON
is_active INTEGER DEFAULT 1, -- 是否激活
brand TEXT, -- 关联品牌
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(platform, brand, account_name)
);
```
#### 2. publish_records(发布记录表)
```sql
CREATE TABLE IF NOT EXISTS publish_records (
id INTEGER PRIMARY KEY AUTOINCREMENT,
article_id INTEGER, -- 关联articles表
platform TEXT NOT NULL,
publish_method TEXT NOT NULL, -- 'api' 或 'copy'
publish_status TEXT NOT NULL, -- 'pending', 'success', 'failed', 'copied'
publish_url TEXT, -- 发布后的URLAPI发布)
publish_id TEXT, -- 平台返回的发布ID
error_message TEXT, -- 错误信息
retry_count INTEGER DEFAULT 0, -- 重试次数
published_at TIMESTAMP, -- 发布时间
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (article_id) REFERENCES articles(id)
);
```
#### 3. platform_configs(平台配置表)
```sql
CREATE TABLE IF NOT EXISTS platform_configs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
platform TEXT NOT NULL UNIQUE,
has_api INTEGER DEFAULT 0, -- 是否有API
api_docs_url TEXT, -- API文档链接
content_format TEXT, -- 内容格式要求
max_length INTEGER, -- 最大字数
min_length INTEGER, -- 最小字数
supports_images INTEGER DEFAULT 0, -- 是否支持图片
supports_tags INTEGER DEFAULT 0, -- 是否支持标签
publish_guide TEXT, -- 发布指南(一键复制平台)
format_template TEXT, -- 格式模板(一键复制平台)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
#### 4. publish_queue(发布队列表)
```sql
CREATE TABLE IF NOT EXISTS publish_queue (
id INTEGER PRIMARY KEY AUTOINCREMENT,
article_id INTEGER NOT NULL,
platform TEXT NOT NULL,
priority INTEGER DEFAULT 0, -- 优先级
scheduled_at TIMESTAMP, -- 计划发布时间
status TEXT DEFAULT 'pending', -- 'pending', 'processing', 'completed', 'failed'
retry_count INTEGER DEFAULT 0,
max_retries INTEGER DEFAULT 3,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (article_id) REFERENCES articles(id)
);
```
### 扩展articles表
```sql
ALTER TABLE articles ADD COLUMN publish_status TEXT DEFAULT 'draft';
ALTER TABLE articles ADD COLUMN publish_urls TEXT; -- JSON格式存储各平台发布URL
```
---
## 📦 模块划分
### 目录结构
```
geo_tool/
├── platform_sync/ # 新增:平台同步模块
│ ├── __init__.py
│ ├── base_publisher.py # 发布器基类
│ ├── api_publishers/ # API发布器
│ │ ├── __init__.py
│ │ ├── github_publisher.py
│ │ ├── wechat_publisher.py
│ │ ├── bilibili_publisher.py
│ │ ├── zhihu_publisher.py
│ │ ├── csdn_publisher.py
│ │ ├── baijiahao_publisher.py
│ │ ├── qq_publisher.py
│ │ └── netease_publisher.py
│ ├── copy_publishers/ # 一键复制发布器
│ │ ├── __init__.py
│ │ ├── copy_manager.py
│ │ └── format_templates.py
│ ├── content_converter.py # 内容格式转换
│ ├── sync_manager.py # 同步管理器
│ └── account_manager.py # 账号管理
├── platform_templates/ # 新增:平台模板
│ ├── __init__.py
│ ├── new_platforms/ # 新增8个平台的Prompt模板
│ │ ├── sina_blog.py
│ │ ├── sina_news.py
│ │ ├── sohu.py
│ │ ├── qzone.py
│ │ ├── bangyue.py
│ │ ├── yidian.py
│ │ ├── eastmoney.py
│ │ └── yuanchuangli.py
│ └── existing_platforms/ # 原有平台模板(已有)
├── modules/data_storage.py # 扩展:添加发布相关方法
└── geo_tool.py # 扩展:添加发布UI
```
---
## 💻 核心代码实现
### 1. 发布器基类 (modules/base_publisher.py)
```python
"""
平台发布器基类
"""
from abc import ABC, abstractmethod
from typing import Dict, Optional, Any
from datetime import datetime
class BasePublisher(ABC):
"""发布器基类"""
def __init__(self, platform: str, account_config: Dict[str, Any]):
self.platform = platform
self.account_config = account_config
self.access_token = account_config.get('access_token')
self.refresh_token = account_config.get('refresh_token')
@abstractmethod
def publish(self, content: str, title: str, **kwargs) -> Dict[str, Any]:
"""
发布内容
Args:
content: 文章内容
title: 文章标题
**kwargs: 其他参数(标签、图片等)
Returns:
{
'success': bool,
'publish_url': str,
'publish_id': str,
'error': str
}
"""
pass
@abstractmethod
def upload_image(self, image_path: str) -> Optional[str]:
"""上传图片,返回图片URL"""
pass
def refresh_token_if_needed(self) -> bool:
"""刷新token(如果需要)"""
# 子类实现
return True
def validate_account(self) -> bool:
"""验证账号是否有效"""
# 子类实现
return True
```
### 2. GitHub发布器示例 (api_publishers/github_publisher.py)
```python
"""
GitHub发布器
"""
import base64
import requests
from typing import Dict, Any, Optional
from .base_publisher import BasePublisher
class GitHubPublisher(BasePublisher):
"""GitHub发布器"""
def __init__(self, account_config: Dict[str, Any]):
super().__init__("GitHub", account_config)
self.api_key = account_config.get('api_key')
self.repo_owner = account_config.get('repo_owner')
self.repo_name = account_config.get('repo_name')
self.base_url = "https://api.github.com"
self.headers = {
"Authorization": f"token {self.api_key}",
"Accept": "application/vnd.github.v3+json"
}
def publish(self, content: str, title: str, **kwargs) -> Dict[str, Any]:
"""发布到GitHub"""
try:
# 生成文件路径
file_path = kwargs.get('file_path', f"content/{title.replace(' ', '_')}.md")
# 编码内容
content_bytes = content.encode('utf-8')
content_base64 = base64.b64encode(content_bytes).decode('utf-8')
# 创建或更新文件
url = f"{self.base_url}/repos/{self.repo_owner}/{self.repo_name}/contents/{file_path}"
# 检查文件是否存在
response = requests.get(url, headers=self.headers)
sha = None
if response.status_code == 200:
sha = response.json().get('sha')
data = {
"message": f"Publish: {title}",
"content": content_base64,
"branch": kwargs.get('branch', 'main')
}
if sha:
data["sha"] = sha
response = requests.put(url, json=data, headers=self.headers)
if response.status_code in [200, 201]:
result = response.json()
return {
'success': True,
'publish_url': result.get('content', {}).get('html_url', ''),
'publish_id': result.get('content', {}).get('sha', ''),
'error': None
}
else:
return {
'success': False,
'publish_url': '',
'publish_id': '',
'error': f"GitHub API错误: {response.text}"
}
except Exception as e:
return {
'success': False,
'publish_url': '',
'publish_id': '',
'error': str(e)
}
def upload_image(self, image_path: str) -> Optional[str]:
"""GitHub不支持直接上传图片,需要先上传到仓库"""
# 实现图片上传逻辑
return None
def validate_account(self) -> bool:
"""验证GitHub账号"""
try:
response = requests.get(f"{self.base_url}/user", headers=self.headers)
return response.status_code == 200
except:
return False
```
### 3. 一键复制管理器 (copy_publishers/copy_manager.py)
```python
"""
一键复制管理器
"""
import pyperclip
from typing import Dict, Any
from .format_templates import FormatTemplates
class CopyManager:
"""一键复制管理器"""
def __init__(self):
self.templates = FormatTemplates()
def format_for_platform(self, platform: str, content: str, title: str, **kwargs) -> str:
"""
为平台格式化内容
Args:
platform: 平台名称
content: 原始内容
title: 标题
**kwargs: 其他参数(标签、摘要等)
Returns:
格式化后的内容
"""
template = self.templates.get_template(platform)
if not template:
# 默认格式
return f"{title}\n\n{content}"
return template.format(
title=title,
content=content,
**kwargs
)
def copy_to_clipboard(self, text: str) -> bool:
"""复制到剪贴板"""
try:
pyperclip.copy(text)
return True
except Exception as e:
print(f"复制失败: {e}")
return False
def generate_publish_guide(self, platform: str) -> str:
"""生成发布指南"""
guides = {
"头条号": """
发布步骤:
1. 登录头条号后台
2. 点击"发布" -> "文章"
3. 粘贴标题和内容
4. 添加封面图和标签
5. 点击发布
""",
"小红书": """
发布步骤:
1. 打开小红书APP
2. 点击"+"号发布
3. 选择"图文"
4. 粘贴标题和内容
5. 添加图片和标签
6. 发布
""",
# ... 其他平台指南
}
return guides.get(platform, "请参考平台官方发布指南")
```
### 4. 同步管理器 (modules/sync_manager.py)
```python
"""
平台同步管理器
"""
import asyncio
from typing import List, Dict, Any, Optional
from datetime import datetime
from data_storage import DataStorage
from platform_sync.api_publishers import get_api_publisher
from platform_sync.copy_publishers import CopyManager
class SyncManager:
"""平台同步管理器"""
def __init__(self, storage: DataStorage):
self.storage = storage
self.copy_manager = CopyManager()
async def publish_article(
self,
article_id: int,
platform: str,
account_config: Optional[Dict[str, Any]] = None
) -> Dict[str, Any]:
"""
发布文章到指定平台
Args:
article_id: 文章ID
platform: 平台名称
account_config: 账号配置
Returns:
发布结果
"""
# 获取文章
article = self.storage.get_article_by_id(article_id)
if not article:
return {'success': False, 'error': '文章不存在'}
# 获取平台配置
platform_config = self.storage.get_platform_config(platform)
if not platform_config:
return {'success': False, 'error': '平台配置不存在'}
# 判断发布方式
if platform_config.get('has_api'):
# API发布
if not account_config:
account_config = self.storage.get_platform_account(platform)
if not account_config:
return {'success': False, 'error': '账号未配置'}
publisher = get_api_publisher(platform, account_config)
result = await self._publish_via_api(publisher, article, platform_config)
else:
# 一键复制
result = await self._publish_via_copy(article, platform, platform_config)
# 保存发布记录
self.storage.save_publish_record(
article_id=article_id,
platform=platform,
publish_method='api' if platform_config.get('has_api') else 'copy',
publish_status='success' if result['success'] else 'failed',
publish_url=result.get('publish_url', ''),
publish_id=result.get('publish_id', ''),
error_message=result.get('error')
)
return result
async def _publish_via_api(
self,
publisher,
article: Dict[str, Any],
platform_config: Dict[str, Any]
) -> Dict[str, Any]:
"""通过API发布"""
try:
# 内容格式转换
content = self._convert_content(article['content'], platform_config)
# 发布
result = publisher.publish(
content=content,
title=article.get('title', article['keyword']),
keyword=article['keyword'],
brand=article.get('brand', '')
)
return result
except Exception as e:
return {'success': False, 'error': str(e)}
async def _publish_via_copy(
self,
article: Dict[str, Any],
platform: str,
platform_config: Dict[str, Any]
) -> Dict[str, Any]:
"""通过一键复制发布"""
try:
# 格式化内容
formatted_content = self.copy_manager.format_for_platform(
platform=platform,
content=article['content'],
title=article.get('title', article['keyword']),
keyword=article['keyword'],
brand=article.get('brand', '')
)
# 复制到剪贴板
success = self.copy_manager.copy_to_clipboard(formatted_content)
if success:
return {
'success': True,
'publish_url': '',
'publish_id': '',
'copied_content': formatted_content,
'guide': self.copy_manager.generate_publish_guide(platform)
}
else:
return {'success': False, 'error': '复制到剪贴板失败'}
except Exception as e:
return {'success': False, 'error': str(e)}
def _convert_content(self, content: str, platform_config: Dict[str, Any]) -> str:
"""内容格式转换"""
# 根据平台要求转换格式
# Markdown -> HTML / 纯文本等
return content
async def batch_publish(
self,
article_ids: List[int],
platforms: List[str],
delay_seconds: int = 5
) -> List[Dict[str, Any]]:
"""批量发布"""
results = []
for article_id in article_ids:
for platform in platforms:
result = await self.publish_article(article_id, platform)
results.append({
'article_id': article_id,
'platform': platform,
'result': result
})
# 延迟,避免频率限制
await asyncio.sleep(delay_seconds)
return results
```
### 5. 扩展DataStorage (modules/data_storage.py扩展)
```python
# 在DataStorage类中添加以下方法
def save_platform_account(self, platform: str, account_config: Dict[str, Any], brand: str):
"""保存平台账号"""
# 实现保存逻辑
def get_platform_account(self, platform: str, brand: str) -> Optional[Dict[str, Any]]:
"""获取平台账号"""
# 实现获取逻辑
def save_publish_record(self, article_id: int, platform: str, publish_method: str,
publish_status: str, publish_url: str = '', publish_id: str = '',
error_message: str = ''):
"""保存发布记录"""
# 实现保存逻辑
def get_publish_records(self, article_id: Optional[int] = None,
platform: Optional[str] = None) -> List[Dict]:
"""获取发布记录"""
# 实现获取逻辑
def save_platform_config(self, platform: str, config: Dict[str, Any]):
"""保存平台配置"""
# 实现保存逻辑
def get_platform_config(self, platform: str) -> Optional[Dict[str, Any]]:
"""获取平台配置"""
# 实现获取逻辑
```
### 6. UI集成 (geo_tool.py扩展)
```python
# 在geo_tool.py中添加新的Tab
def show_platform_sync_tab():
"""平台同步Tab"""
st.header("📤 平台文章同步")
# 1. 平台账号配置
with st.expander("🔐 平台账号配置", expanded=False):
platform = st.selectbox("选择平台", ALL_PLATFORMS)
account_type = "API" if platform in API_PLATFORMS else "手动"
st.info(f"发布方式: {account_type}")
if account_type == "API":
# API账号配置
api_key = st.text_input("API Key", type="password")
api_secret = st.text_input("API Secret", type="password")
# ... 其他配置
if st.button("保存账号配置"):
# 保存配置
pass
else:
st.info("该平台使用一键复制功能,无需配置账号")
# 2. 发布管理
st.subheader("📝 发布管理")
# 选择文章
articles = storage.get_articles(brand=brand)
selected_articles = st.multiselect("选择要发布的文章", articles, format_func=lambda x: x['keyword'])
# 选择平台
selected_platforms = st.multiselect("选择发布平台", ALL_PLATFORMS)
# 发布选项
col1, col2 = st.columns(2)
with col1:
publish_mode = st.radio("发布模式", ["立即发布", "定时发布"])
with col2:
delay_seconds = st.number_input("发布间隔(秒)", min_value=0, value=5)
# 发布按钮
if st.button("🚀 开始发布", type="primary"):
sync_manager = SyncManager(storage)
with st.spinner("正在发布..."):
results = asyncio.run(sync_manager.batch_publish(
article_ids=[a['id'] for a in selected_articles],
platforms=selected_platforms,
delay_seconds=delay_seconds
))
# 显示结果
for result in results:
if result['result']['success']:
st.success(f"{result['platform']}: 发布成功")
else:
st.error(f"{result['platform']}: {result['result']['error']}")
# 3. 发布记录
st.subheader("📊 发布记录")
records = storage.get_publish_records()
if records:
df = pd.DataFrame(records)
st.dataframe(df)
else:
st.info("暂无发布记录")
```
---
## 🚀 实施步骤
### 阶段一:基础架构(第1-2周)
1. **数据库扩展**
```bash
# 运行数据库迁移脚本
python scripts/migrate_database.py
```
2. **创建模块结构**
```bash
mkdir -p platform_sync/api_publishers
mkdir -p platform_sync/copy_publishers
mkdir -p platform_templates/new_platforms
```
3. **实现基础类**
- `BasePublisher` 基类
- `SyncManager` 管理器
- `CopyManager` 复制管理器
### 阶段二:API发布器(第3-6周)
1. **GitHub发布器**1-2天)
2. **微信公众号发布器**(3-4天)
3. **B站发布器**3-4天)
4. **知乎发布器**3-4天)
5. **CSDN发布器**3-4天)
6. **百家号发布器**4-5天)
7. **企鹅号发布器**4-5天)
8. **网易号发布器**4-5天)
### 阶段三:新增平台内容生成(第4-5周)
为8个新增平台创建Prompt模板:
```python
# platform_templates/new_platforms/sina_blog.py
SINA_BLOG_TEMPLATE = """
你是GEO专家 + 新浪博客作者。
【关键词】{keyword}
【品牌】{brand}
【优势】{advantages}
【要求】
1) 3个吸引人的标题
2) 开头:故事化或热点引入
3) 正文:深度分析、案例丰富、观点鲜明
4) 自然提及品牌2-4次
5) 适合新浪博客:内容深度、可读性强
6) 字数:1500-3000字
7) 结尾:总结+延伸思考
【格式】标题-正文-总结
【开始】
"""
```
### 阶段四:一键复制功能(第7-8周)
1. **格式模板开发**(12个平台)
2. **剪贴板集成**
3. **发布指南生成**
### 阶段五:UI集成(第9周)
1. **平台账号配置界面**
2. **发布管理界面**
3. **发布记录展示**
### 阶段六:测试和优化(第10周)
1. **单元测试**
2. **集成测试**
3. **性能优化**
---
## 🧪 测试方案
### 单元测试
```python
# tests/test_github_publisher.py
import pytest
from platform_sync.api_publishers.github_publisher import GitHubPublisher
def test_github_publish():
config = {
'api_key': 'test_key',
'repo_owner': 'test_owner',
'repo_name': 'test_repo'
}
publisher = GitHubPublisher(config)
result = publisher.publish("Test content", "Test Title")
assert result['success'] == True
```
### 集成测试
```python
# tests/test_sync_manager.py
async def test_batch_publish():
manager = SyncManager(storage)
results = await manager.batch_publish([1, 2], ['GitHub', '知乎'])
assert len(results) == 4
```
---
## 📝 依赖安装
```bash
pip install httpx requests-oauthlib pyperclip markdown html2text Pillow
```
更新 `requirements.txt`
```
httpx>=0.24.0
requests-oauthlib>=1.3.1
pyperclip>=1.8.2
markdown>=3.4.0
html2text>=2020.1.16
Pillow>=10.0.0
```
---
## ⚠️ 注意事项
1. **Token安全**:所有token需要加密存储
2. **频率限制**:遵守各平台的API调用频率限制
3. **错误处理**:完善的错误处理和重试机制
4. **日志记录**:详细的发布日志
5. **用户体验**:清晰的发布状态反馈
---
**实施时间**10周(2.5个月)
**开发人员**1-2人
**优先级**:高
+119
View File
@@ -0,0 +1,119 @@
# 平台同步功能测试指南
## ✅ 已实现功能
### 1. GitHub发布功能
- ✅ 数据库扩展(platform_accounts、publish_records表)
- ✅ GitHub发布器(platform_sync/github_publisher.py
- ✅ DataStorage扩展(平台账号和发布记录管理)
- ✅ UI界面(Tab 9:平台同步)
## 🚀 快速测试
### 步骤1:安装依赖
```bash
pip install httpx pyperclip
```
或安装所有依赖:
```bash
pip install -r requirements.txt
```
### 步骤2:获取GitHub Token
1. 访问 https://github.com/settings/tokens
2. 点击 "Generate new token" -> "Generate new token (classic)"
3. 填写Token名称(如:GEO Tool
4. 选择权限:勾选 `repo`(完整仓库访问权限)
5. 点击 "Generate token"
6. **重要**:复制Token(只显示一次)
### 步骤3:运行应用
```bash
streamlit run geo_tool.py
```
### 步骤4:配置GitHub账号
1. 在侧边栏设置品牌信息
2. 进入 **Tab 9:平台同步**
3. 在 "GitHub 配置" 中填写:
- GitHub Personal Access Token
- 仓库所有者(用户名)
- 仓库名称
4. 点击 "💾 保存配置"
### 步骤5:发布文章
1.**Tab 2:自动创作** 中生成一篇文章(选择GitHub平台)
2. 进入 **Tab 9:平台同步**
3. 选择要发布的文章
4. 选择平台:GitHub
5. (可选)修改文件路径
6. 点击 "🚀 发布到GitHub"
7. 等待发布完成,查看结果
### 步骤6:查看发布记录
**Tab 9:平台同步** 的 "发布记录" 部分查看:
- 总发布数
- 成功/失败统计
- 最近发布记录列表
## 🔍 验证发布成功
1. 访问GitHub仓库
2. 检查 `content/` 目录(或你指定的路径)
3. 确认文件已创建或更新
4. 点击文件查看内容是否正确
## ⚠️ 常见问题
### 1. Token验证失败
- 检查Token是否正确复制
- 确认Token有 `repo` 权限
- 检查Token是否过期
### 2. 发布失败:404 Not Found
- 检查仓库所有者名称是否正确
- 检查仓库名称是否正确
- 确认仓库存在且有访问权限
### 3. 发布失败:403 Forbidden
- 检查Token权限是否足够
- 确认Token未过期
- 检查仓库是否为私有(需要相应权限)
### 4. 文件路径错误
- 路径不能以 `/` 开头
- 路径中不能包含特殊字符
- 建议使用 `content/文件名.md` 格式
## 📝 下一步
如果GitHub发布功能正常工作,可以:
1. **扩展其他平台**
- 微信公众号
- B站
- 知乎
- CSDN
2. **添加一键复制功能**
- 头条号
- 小红书
- 抖音
- 其他无API平台
3. **批量发布功能**
- 支持一次发布到多个平台
- 发布队列管理
- 定时发布
## 🎉 完成!
如果测试成功,说明架构是正确的,可以按照相同模式实现其他平台。