Skip to content

EasyWriter 是一个面向多平台内容创作场景的智能写作代理系统。基于 LangGraph 构建的多 Agent 协作架构,只需输入简单的自然语言描述,即可自主完成写作规划、信息研究、内容生成、配图生成与多平台适配,输出可直接用于分发的高质量文章内容。

License

Notifications You must be signed in to change notification settings

Decade-qiu/EasyWriter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EasyWriter Agent

AI 驱动的多平台智能写作代理系统

Python LangGraph LangChain Typer License

简体中文 | English


📖 项目简介

EasyWriter 是一个面向多平台内容创作场景的智能写作代理系统。基于 LangGraph 构建的多 Agent 协作架构,只需输入简单的自然语言描述,即可自主完成写作规划、信息研究、内容生成、配图生成与多平台适配,输出可直接用于分发的高质量文章内容。

核心亮点:

  • 🎯 极简输入:无需复杂 Prompt,一句话描述即可生成完整文章
  • 🧠 智能规划:先规划后执行,结构清晰可控
  • 🔍 研究增强:自动搜索补充事实和案例(基于 Tavily)
  • 🖼️ AI 配图:自动生成文章封面配图(支持 DALL-E / ModelScope)
  • 📱 多平台适配:一次生成,自动适配微信公众号、知乎、小红书、Twitter
  • 💬 交互编辑:支持大纲审核与文章对话式修改
  • 👁️ 透明可控:执行过程可追踪,支持实时进度显示
  • 🔧 模块化架构:结构化 XML Prompt,回调系统可扩展

✨ 核心功能

1. 智能意图分析

  • 自然语言理解用户写作需求
  • 自动提取主题、内容类型、目标受众
  • 智能判断是否需要资料研究

2. 智能内容规划

  • 根据参考文章结构生成专业大纲
  • 包含核心信息、开篇钩子、章节规划、结论要点
  • 自动估算各章节字数

3. 研究增强写作

  • 参考研究:搜索同主题优质文章,借鉴结构和写法
  • 事实研究:为各章节补充数据、案例、引用
  • 多级深度:支持 none/light/normal/deep 四级研究深度
  • 基于 Tavily Search API 的高质量搜索

4. 高质量内容生成

  • 支持并行/串行章节写作
  • 保持上下文连贯性
  • 自动整合研究资料到正文

5. AI 配图生成

  • 自动根据文章内容生成封面配图
  • 支持 OpenAI DALL-E 和 ModelScope 双后端
  • 智能下载并保存到本地

6. 交互式编辑

  • 大纲审核:生成大纲后暂停,支持用户审核和修改
  • 大纲重生成:根据用户反馈重新生成大纲
  • 对话式修改:文章完成后进入对话模式,支持自然语言修改请求
  • 实时保存:每次修改后自动保存最新版本

7. 多平台内容适配

  • 微信公众号:适配排版规范,生成引导关注话术
  • 知乎:优化为问答式标题,添加专业话题标签
  • 小红书:改写为种草风格,生成吸睛标题和 emoji
  • Twitter/X:压缩为精炼推文,生成话题标签

8. 模块化架构设计

  • 结构化 XML Prompt:使用 XML 格式组织 Prompt 模板,易于维护和扩展
  • 回调系统:工作流回调抽象,支持自定义阶段处理逻辑
  • 交互式工作流:独立的交互模块管理大纲审核和文章修改
  • CLI 回调机制:解耦命令行逻辑与业务逻辑

🏗️ 技术架构

工作流程

用户输入 "帮我写一篇 AI Agent 入门文章"
                    │
                    ▼
    ┌───────────────────────────────┐
    │      Intent Analyzer          │  ← 理解写作意图
    └───────────────┬───────────────┘
                    ▼
    ┌───────────────────────────────┐
    │    Reference Research         │  ← 搜索参考文章(可选)
    └───────────────┬───────────────┘
                    ▼
    ┌───────────────────────────────┐
    │      Planner Agent            │  ← 生成内容大纲
    └───────────────┬───────────────┘
                    ▼
    ┌───────────────────────────────┐
    │      Outline Review           │  ← 用户审核大纲(交互式)
    └───────────────┬───────────────┘
                    ▼
    ┌───────────────────────────────┐
    │     Section Research          │  ← 章节事实研究(可选)
    └───────────────┬───────────────┘
                    ▼
    ┌───────────────────────────────┐
    │      Writer Agent             │  ← 撰写初稿(支持并行)
    └───────────────┬───────────────┘
                    ▼
    ┌───────────────────────────────┐
    │      Article Review           │  ← 对话式修改(交互式)
    └───────────────┬───────────────┘
                    ▼
    ┌───────────────────────────────┐
    │    Illustrator Agent          │  ← 生成配图(可选)
    └───────────────┬───────────────┘
                    ▼
    ┌───────────────────────────────┐
    │      Adapter Agent            │  ← 多平台适配(可选)
    └───────────────┬───────────────┘
                    ▼
    ┌─────────────────────────────────────────┐
    │  微信公众号版 │ 知乎版 │ 小红书版 │ ...  │
    └─────────────────────────────────────────┘

Agent 职责

Agent 输入 输出 职责
IntentAnalyzer 用户 prompt TaskContext 提取写作意图:主题、类型、风格、受众
Researcher TaskContext / Outline ResearchContext 搜索参考文章和事实资料
Planner TaskContext + 参考资料 ContentOutline 规划文章结构:核心信息、章节、要点
Writer Outline + 研究资料 DraftContent 根据大纲撰写完整初稿
Editor 用户修改请求 + 文章 修改后文章 处理对话式修改请求
Illustrator 文章内容 ArticleImage 生成文章封面配图
Adapter 原始内容 多平台版本 适配不同平台的内容规范

📂 项目结构

详见 项目结构文档


🚀 快速开始

前置要求

  • Python:>= 3.12
  • API Key:OpenAI 或兼容 API(必需)
  • Tavily API Key:用于研究功能(可选)

安装

# 克隆项目
git clone https://github.com/yourusername/easywriter.git
cd easywriter

# 创建虚拟环境
python3.12 -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# 安装依赖
pip install -r requirements.txt

# 配置环境变量
cp .env.example .env
# 编辑 .env 填入 OPENAI_API_KEY

基本使用

# 运行写作任务(默认启用交互式模式)
.venv/bin/easywriter run "帮我写一篇介绍 Python 装饰器的技术文章"

# 指定模型
.venv/bin/easywriter run "写一篇 AI Agent 入门" --model gpt-4o-mini

# 控制研究深度
.venv/bin/easywriter run "写一篇技术深度分析" --research-depth deep
.venv/bin/easywriter run "写一篇个人感想" --research-depth none

# 禁用配图
.venv/bin/easywriter run "写一篇不带配图的文章" --no-images

# 禁用交互式模式(跳过大纲审核和文章修改)
.venv/bin/easywriter run "写文章" --no-interactive

# 跳过特定交互阶段
.venv/bin/easywriter run "写文章" --skip-outline-review  # 跳过大纲审核
.venv/bin/easywriter run "写文章" --skip-article-review  # 跳过文章修改

# 启用多平台适配
.venv/bin/easywriter run "写文章" --adapt --platforms wechat,zhihu,xiaohongshu

# 指定输出目录
.venv/bin/easywriter run "写文章" --output-dir my_articles

适配已有文章

# 将已有文章适配到多个平台
.venv/bin/easywriter adapt article.md -p wechat,zhihu

# 适配到所有平台
.venv/bin/easywriter adapt article.md -p all -d ./output

检查配置

# 查看配置状态
.venv/bin/easywriter config

# 查看版本
.venv/bin/easywriter version

⚙️ 配置说明

环境变量 (.env)

创建 .env 文件(参考 .env.example):

环境变量 说明 默认值
OPENAI_API_KEY OpenAI 或兼容 API 密钥 必填
OPENAI_BASE_URL API 基础 URL https://api.openai.com/v1
DEFAULT_MODEL 默认模型 gpt-4o
TAVILY_API_KEY Tavily 搜索 API 密钥 可选(研究功能需要)
LOG_LEVEL 日志级别 INFO
MAX_RETRIES 最大重试次数 3
REQUEST_TIMEOUT 请求超时时间(秒) 30

图像生成配置

环境变量 说明 默认值
IMAGE_PROVIDER 图像提供商(auto/openai/modelscope) auto
OPENAI_IMAGE_API_KEY OpenAI 图像 API 密钥 可选
OPENAI_IMAGE_BASE_URL OpenAI 图像 API URL https://api.openai.com/v1
OPENAI_IMAGE_MODEL 图像模型 dall-e-3
MODELSCOPE_IMAGE_API_KEY ModelScope API 密钥 可选
MODELSCOPE_IMAGE_MODEL ModelScope 图像模型 Qwen/Qwen-Image-2512

📋 CLI 命令参考

easywriter run

执行写作任务。

easywriter run <prompt> [OPTIONS]

参数:

  • prompt:写作需求描述(必需)

选项:

选项 说明 默认值
--research-depth, -r 研究深度:none/light/normal/deep normal
--images/--no-images 是否生成配图 --images
--output-dir, -d 输出根目录 output
--show-outline 是否显示大纲 True
--show-config 启动时显示配置 True
--parallel/--no-parallel 是否并行生成章节 --no-parallel
--adapt/--no-adapt 是否启用多平台适配 --no-adapt
--platforms, -p 目标平台(逗号分隔) zhihu
-i, --interactive/--no-interactive 是否启用交互式模式 --interactive
--skip-outline-review 跳过大纲审核阶段 False
--skip-article-review 跳过文章修改阶段 False

输出结构:

output/
└── {task_id}/
    ├── article.md          # 主文章
    ├── outline.md          # 内容大纲
    ├── images/             # 配图目录
    │   └── cover.png       # 封面图
    └── adapted/            # 适配版本(如启用)
        ├── wechat/
        ├── zhihu/
        ├── xiaohongshu/
        └── twitter/

easywriter adapt

适配已有内容到多个平台。

easywriter adapt <content_file> [OPTIONS]

选项:

选项 说明 默认值
--platforms, -p 目标平台(逗号分隔,支持 all) wechat,zhihu
--output-dir, -d 输出目录 adapted
--title, -t 文章标题 从文件读取

easywriter config

检查配置状态。

easywriter version

显示版本信息。


🛠️ 开发指南

运行测试

# 运行所有测试
.venv/bin/python -m pytest

# 运行单元测试
.venv/bin/python -m pytest tests/unit/ -v

# 快速自检
.venv/bin/python scripts/quick_test.py

添加新 Agent

  1. src/easywriter/agents/ 下创建新文件
  2. 继承 BaseAgent 基类
  3. 实现 run(state: WritingState) -> WritingState 方法
  4. agents/__init__.py 中导出

添加新平台适配器

  1. src/easywriter/adapters/ 下创建新文件
  2. 继承 BaseAdapter 基类
  3. 实现必需的抽象方法
  4. adapters/__init__.py 中注册

🗺️ 未来规划 (Roadmap)

  • Phase 1: 核心 MVP(规划 → 写作)
  • Phase 2: 研究能力集成(Tavily Search)
  • Phase 3: 配图生成(DALL-E / ModelScope)
  • Phase 4: 多平台适配
  • Phase 5: 交互式编辑(大纲审核 + 对话式修改)
  • Phase 6: 模块化架构重构(XML Prompt + 回调系统)
  • Phase 7: 前端开发(Web UI)
  • Phase 8: 更多 LLM 后端支持(Anthropic、本地模型)
  • Phase 9: 记忆系统和风格学习

🤝 贡献指南

欢迎贡献代码、提出问题或建议!

  1. Fork 本项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

📄 许可证

本项目基于 MIT License 许可证开源。


🙏 致谢

  • LangChain - 强大的 LLM 应用框架
  • LangGraph - 多 Agent 工作流编排
  • Tavily - 高质量 AI 搜索 API
  • Typer - 现代化的 CLI 框架
  • Rich - 优雅的终端输出

如果这个项目对您有帮助,请给一个 ⭐️ Star 支持一下!

About

EasyWriter 是一个面向多平台内容创作场景的智能写作代理系统。基于 LangGraph 构建的多 Agent 协作架构,只需输入简单的自然语言描述,即可自主完成写作规划、信息研究、内容生成、配图生成与多平台适配,输出可直接用于分发的高质量文章内容。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages