feat: 重构项目结构并添加平台同步基础架构
- 重构项目目录结构,将功能模块移至 modules/ 目录 - 创建平台同步基础架构,包括发布器基类和 GitHub 发布器 - 新增 UI 状态管理模块 (modules/ui/state.py) 统一管理会话状态 - 更新依赖配置,添加平台同步所需依赖 (httpx, pyperclip) - 整理文档结构,将所有文档分类移至 docs/ 目录 - 添加 .cursorrules 文件定义项目开发规范 - 清理根目录重复文件,保持项目结构整洁
This commit is contained in:
@@ -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 服务
|
||||
- 提供认证和限流
|
||||
- 支持异步任务
|
||||
- 提供 SDK(Python/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`
|
||||
|
||||
---
|
||||
|
||||
### Tab6:AI 数据报表
|
||||
|
||||
#### 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`
|
||||
|
||||
---
|
||||
|
||||
### Tab8:GEO 资源库
|
||||
|
||||
#### 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个功能
|
||||
- **Tab6(AI 数据报表)**:9个功能
|
||||
- **Tab7(工作流自动化)**:3个功能
|
||||
- **Tab8(GEO 资源库)**: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. GitHub(README/文档)
|
||||
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版本已完成,可开始测试使用
|
||||
@@ -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. GitHub(README/文档)
|
||||
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. GitHub(README/文档)
|
||||
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个平台)
|
||||
- 错误处理和重试机制
|
||||
- 平台特定规则处理
|
||||
- **实现难度**:高
|
||||
- **工作量**:
|
||||
- GitHub:1-2天(最简单)
|
||||
- 微信公众号:3-4天
|
||||
- B站:3-4天
|
||||
- 知乎:3-4天
|
||||
- CSDN:3-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, -- 发布后的URL(API发布)
|
||||
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人
|
||||
**优先级**:高
|
||||
@@ -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. **批量发布功能**:
|
||||
- 支持一次发布到多个平台
|
||||
- 发布队列管理
|
||||
- 定时发布
|
||||
|
||||
## 🎉 完成!
|
||||
|
||||
如果测试成功,说明架构是正确的,可以按照相同模式实现其他平台。
|
||||
Reference in New Issue
Block a user