从零搭一个自动写稿流程:AI 工作流实战与源码分享
AI工具 工作流自动化教程|附源码
在过去几年里,AI 工具已经从“聊天问答”逐渐走向“工作流自动化”。很多人最初使用 AI,只是让它写文案、改邮件、总结文章;但真正能提升效率的方式,是把 AI 嵌入到日常流程中,让它自动完成信息收集、内容整理、数据分析、任务分发、结果通知等一系列工作。
本文将以一个完整案例为主线,带你搭建一个「AI 工作流自动化系统」:
用户输入一个主题,系统自动完成资料整理、生成文章大纲、撰写正文、保存结果,并发送通知。
文章会包含完整思路、技术选型、代码结构和可运行源码示例,适合想要入门 AI 自动化工作流的开发者、运营人员、产品经理以及效率工具爱好者。
一、什么是 AI 工作流自动化?
所谓 AI 工作流自动化,并不是简单地调用一次 AI 接口,而是将多个任务节点串联起来,让 AI 参与其中某些环节,从而形成一条可重复运行的自动化流程。
例如,一个内容创作工作流可能包括:
- 输入选题;
- 自动搜索或整理资料;
- AI 生成标题;
- AI 生成大纲;
- AI 撰写正文;
- 自动检查错别字和格式;
- 保存到 Markdown 文件;
- 推送到飞书、企业微信或邮箱;
- 后续自动发布到公众号、博客或知识库。
传统方式下,这些步骤需要人工逐个执行;而通过 AI 工作流,我们可以让程序自动完成大部分重复性操作。
二、适合自动化的 AI 工作流场景
AI 自动化并不只适合写文章,还可以应用到很多业务场景中。
1. 内容生产
常见场景包括:
- 公众号文章生成;
- 小红书笔记生成;
- 短视频脚本生成;
- SEO 文章生成;
- 产品介绍文案生成;
- 邮件营销内容生成。
例如,运营同学每天需要根据产品关键词写 5 篇推广文案,如果手动写可能需要 3 小时,而使用 AI 工作流可以压缩到 20 分钟以内。
2. 数据整理
AI 可以帮助我们处理非结构化信息,例如:
- 将会议纪要整理成待办事项;
- 从客户反馈中提取问题类型;
- 将长文本总结为核心观点;
- 将网页内容转为表格;
- 从客服聊天记录中提取用户需求。
3. 办公自动化
在日常办公中,AI 工作流也非常实用:
- 自动生成日报、周报;
- 自动整理项目进展;
- 自动生成会议纪要;
- 自动起草邮件;
- 自动生成 PPT 大纲;
- 自动翻译和润色文档。
4. 客服与销售辅助
销售和客服人员每天要处理大量重复问题,AI 可以帮助他们:
- 自动识别客户意图;
- 自动推荐回复话术;
- 自动生成客户跟进记录;
- 自动归类客户问题;
- 自动生成销售总结。
三、本文要实现的自动化工作流
本文案例目标是实现一个简单但完整的 AI 自动化写作工作流。
用户只需要输入一个主题,例如:
AI工具如何提升个人工作效率
程序会自动完成:
- 生成文章标题建议;
- 生成文章大纲;
- 根据大纲生成完整正文;
- 对正文进行润色;
- 保存为 Markdown 文件;
- 在控制台输出执行结果。
为了便于理解和部署,本文采用 Python 实现。
四、技术选型
本教程使用以下技术:
| 技术 | 作用 |
|---|---|
| Python | 编写自动化脚本 |
| OpenAI API 或兼容大模型接口 | 生成文本内容 |
| Markdown | 保存文章结果 |
| dotenv | 管理环境变量 |
| requests / openai SDK | 调用 AI 接口 |
| pathlib | 处理文件路径 |
如果你使用的是其他模型平台,例如通义千问、智谱清言、DeepSeek、月之暗面、豆包等,只要它们提供 OpenAI 兼容接口,都可以较容易替换。
五、项目目录结构
建议创建如下项目结构:
ai-workflow-demo/
├── main.py
├── ai_client.py
├── workflow.py
├── prompts.py
├── requirements.txt
├── .env
└── output/
各文件作用如下:
| 文件 | 说明 |
|---|---|
| main.py | 程序入口 |
| ai_client.py | AI 接口封装 |
| workflow.py | 工作流核心逻辑 |
| prompts.py | 提示词模板 |
| requirements.txt | 依赖文件 |
| .env | API 密钥配置 |
| output/ | 输出生成的 Markdown 文件 |
六、安装依赖
首先创建项目目录:
mkdir ai-workflow-demo
cd ai-workflow-demo
创建虚拟环境:
python -m venv venv
激活虚拟环境:
Windows:
venv\Scripts\activate
macOS / Linux:
source venv/bin/activate
安装依赖:
pip install openai python-dotenv
然后创建 requirements.txt:
openai>=1.0.0
python-dotenv>=1.0.0
以后可以通过以下命令一键安装:
pip install -r requirements.txt
七、配置环境变量
在项目根目录创建 .env 文件:
OPENAI_API_KEY=你的API_KEY
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o-mini
如果你使用的是兼容 OpenAI 格式的第三方大模型服务,可以修改:
OPENAI_BASE_URL=https://你的模型服务地址/v1
OPENAI_MODEL=你的模型名称
例如某些平台会提供类似:
OPENAI_BASE_URL=https://api.deepseek.com/v1
OPENAI_MODEL=deepseek-chat
注意:
不要把 .env 文件提交到公开代码仓库,否则可能导致 API Key 泄露。
八、封装 AI 客户端
创建 ai_client.py 文件。
# ai_client.py
import os
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
class AIClient:
"""
AI 客户端封装类
负责统一调用大模型接口
"""
def __init__(self):
api_key = os.getenv("OPENAI_API_KEY")
base_url = os.getenv("OPENAI_BASE_URL", "https://api.openai.com/v1")
model = os.getenv("OPENAI_MODEL", "gpt-4o-mini")
if not api_key:
raise ValueError("请在 .env 文件中配置 OPENAI_API_KEY")
self.client = OpenAI(
api_key=api_key,
base_url=base_url
)
self.model = model
def chat(self, prompt: str, system_prompt: str = None, temperature: float = 0.7) -> str:
"""
调用聊天模型并返回文本结果
:param prompt: 用户提示词
:param system_prompt: 系统提示词
:param temperature: 创造性参数,越高越发散
:return: 模型生成的文本
"""
messages = []
if system_prompt:
messages.append({
"role": "system",
"content": system_prompt
})
messages.append({
"role": "user",
"content": prompt
})
response = self.client.chat.completions.create(
model=self.model,
messages=messages,
temperature=temperature
)
return response.choices[0].message.content.strip()
这里我们将模型调用逻辑封装到了 AIClient 类中。这样做的好处是后续替换模型服务时,只需要修改这一层,而不用改动整个工作流代码。
九、编写提示词模板
创建 prompts.py 文件。
# prompts.py
TITLE_PROMPT = """
你是一名资深中文内容策划专家。
请围绕主题「{topic}」生成 5 个适合公众号、博客或知识库文章使用的中文标题。
要求:
1. 标题要清晰、有吸引力;
2. 不要夸张标题党;
3. 每个标题不超过 30 个字;
4. 使用编号列表输出。
"""
OUTLINE_PROMPT = """
你是一名经验丰富的中文技术作者。
请围绕文章主题「{topic}」生成一份结构清晰的文章大纲。
要求:
1. 使用 Markdown 格式;
2. 至少包含 5 个一级或二级小节;
3. 逻辑顺序要自然;
4. 内容适合初学者阅读;
5. 每个小节附带一句写作说明。
"""
ARTICLE_PROMPT = """
你是一名专业中文技术博主。
请根据以下主题和大纲,写一篇完整的中文文章。
文章主题:
{topic}
文章大纲:
{outline}
写作要求:
1. 使用 Markdown 格式;
2. 内容通俗易懂;
3. 结构完整,有引言和总结;
4. 尽量结合实际案例;
5. 不要空泛,要有可操作建议;
6. 正文字数不少于 1500 字。
"""
POLISH_PROMPT = """
你是一名专业中文编辑。
请对下面这篇文章进行润色和格式优化。
要求:
1. 保留原有 Markdown 结构;
2. 修正不通顺的表达;
3. 优化段落衔接;
4. 不改变文章核心观点;
5. 删除明显重复的内容;
6. 输出润色后的完整文章。
文章内容如下:
{article}
"""
提示词是 AI 工作流质量的关键。很多自动化流程效果不好,并不是模型不够强,而是提示词过于模糊。一个好的提示词通常需要包括:
- 角色设定;
- 任务目标;
- 输入信息;
- 输出格式;
- 约束条件;
- 示例或评价标准。
十、编写工作流核心逻辑
创建 workflow.py 文件。
# workflow.py
from pathlib import Path
from datetime import datetime
from ai_client import AIClient
from prompts import (
TITLE_PROMPT,
OUTLINE_PROMPT,
ARTICLE_PROMPT,
POLISH_PROMPT
)
class ArticleWorkflow:
"""
AI 自动化文章生成工作流
"""
def __init__(self):
self.ai = AIClient()
self.output_dir = Path("output")
self.output_dir.mkdir(exist_ok=True)
def generate_titles(self, topic: str) -> str:
"""
生成标题建议
"""
prompt = TITLE_PROMPT.format(topic=topic)
return self.ai.chat(
prompt=prompt,
system_prompt="你擅长中文内容选题和标题策划。",
temperature=0.8
)
def generate_outline(self, topic: str) -> str:
"""
生成文章大纲
"""
prompt = OUTLINE_PROMPT.format(topic=topic)
return self.ai.chat(
prompt=prompt,
system_prompt="你是一名严谨的中文技术写作者。",
temperature=0.6
)
def generate_article(self, topic: str, outline: str) -> str:
"""
根据大纲生成文章正文
"""
prompt = ARTICLE_PROMPT.format(
topic=topic,
outline=outline
)
return self.ai.chat(
prompt=prompt,
system_prompt="你擅长写结构清晰、可读性强的中文技术文章。",
temperature=0.7
)
def polish_article(self, article: str) -> str:
"""
润色文章
"""
prompt = POLISH_PROMPT.format(article=article)
return self.ai.chat(
prompt=prompt,
system_prompt="你是一名细致的中文编辑。",
temperature=0.4
)
def save_markdown(self, topic: str, content: str) -> Path:
"""
保存 Markdown 文件
"""
safe_topic = "".join(
c for c in topic if c.isalnum() or c in (" ", "-", "_")
).strip().replace(" ", "_")
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"{timestamp}_{safe_topic}.md"
file_path = self.output_dir / filename
file_path.write_text(content, encoding="utf-8")
return file_path
def run(self, topic: str) -> dict:
"""
执行完整工作流
"""
print("第一步:生成标题建议...")
titles = self.generate_titles(topic)
print("第二步:生成文章大纲...")
outline = self.generate_outline(topic)
print("第三步:生成文章正文...")
article = self.generate_article(topic, outline)
print("第四步:润色文章...")
polished_article = self.polish_article(article)
final_content = f"""# {topic}
## 标题建议
{titles}
---
## 文章大纲
{outline}
---
## 正文
{polished_article}
"""
print("第五步:保存 Markdown 文件...")
file_path = self.save_markdown(topic, final_content)
return {
"topic": topic,
"titles": titles,
"outline": outline,
"article": polished_article,
"file_path": str(file_path)
}
这个工作流非常清晰:
主题输入
↓
标题生成
↓
大纲生成
↓
正文生成
↓
文章润色
↓
保存文件
虽然它看起来简单,但已经具备 AI 工作流的基本形态。后续你可以在每一步中继续扩展,例如增加资料检索、关键词提取、事实校验、自动发布等节点。
十一、编写程序入口
创建 main.py 文件。
# main.py
from workflow import ArticleWorkflow
def main():
print("欢迎使用 AI 自动化文章生成工作流")
print("=" * 40)
topic = input("请输入文章主题:").strip()
if not topic:
print("文章主题不能为空")
return
workflow = ArticleWorkflow()
try:
result = workflow.run(topic)
print("\n工作流执行完成!")
print("=" * 40)
print(f"文章主题:{result['topic']}")
print(f"输出文件:{result['file_path']}")
except Exception as e:
print("工作流执行失败:")
print(str(e))
if __name__ == "__main__":
main()
运行程序:
python main.py
输入主题:
AI工具如何提升个人工作效率
执行完成后,会在 output/ 目录下生成一个 Markdown 文件。
十二、运行效果示例
控制台可能会显示:
欢迎使用 AI 自动化文章生成工作流
========================================
请输入文章主题:AI工具如何提升个人工作效率
第一步:生成标题建议...
第二步:生成文章大纲...
第三步:生成文章正文...
第四步:润色文章...
第五步:保存 Markdown 文件...
工作流执行完成!
========================================
文章主题:AI工具如何提升个人工作效率
输出文件:output/20250101_103000_AI工具如何提升个人工作效率.md
生成的 Markdown 文件大致结构如下:
# AI工具如何提升个人工作效率
## 标题建议
1. AI工具如何提升个人工作效率
2. 普通人如何用AI节省每天2小时
3. 从写作到办公:AI效率工具实践指南
4. AI时代的个人效率提升方法
5. 用AI重构你的日常工作流
---
## 文章大纲
## 一、为什么个人需要AI工具
说明 AI 工具对日常工作的价值。
## 二、AI适合处理哪些任务
说明 AI 在写作、总结、翻译、分析等方面的应用。
...
---
## 正文
这里是完整文章内容。
十三、如何继续增强这个工作流?
上面的版本是一个入门级工作流,如果想用于真实业务,可以继续扩展。
1. 增加联网资料检索
如果文章需要引用最新资料,可以增加搜索节点。
例如流程变为:
输入主题
↓
搜索相关资料
↓
总结资料
↓
生成大纲
↓
生成正文
↓
事实校验
↓
保存文章
可以接入:
- 搜索 API;
- RSS;
- 企业内部知识库;
- Notion;
- 飞书文档;
- 本地文件夹;
- 数据库。
2. 增加人工审核节点
AI 工作流不一定要完全自动化。对于重要内容,建议保留人工审核。
例如:
AI 生成初稿
↓
人工修改确认
↓
AI 润色
↓
自动发布
这种方式更适合企业内容生产,因为它兼顾效率和质量。
3. 增加多模型协作
不同模型可以负责不同任务:
| 任务 | 推荐模型特点 |
|---|---|
| 大纲设计 | 逻辑能力强 |
| 正文生成 | 中文表达好 |
| 事实检查 | 推理能力强 |
| 摘要提取 | 成本低、速度快 |
| 翻译润色 | 语言能力强 |
你可以让便宜模型处理简单任务,让高质量模型处理关键任务,从而降低成本。
4. 增加结构化输出
如果后续要接入数据库、表格或前端页面,建议让 AI 输出 JSON。
例如:
{
"title": "AI工具如何提升个人工作效率",
"summary": "本文介绍 AI 工具在个人效率提升中的应用。",
"keywords": ["AI工具", "工作效率", "自动化"],
"sections": [
{
"heading": "为什么需要AI工具",
"content": "..."
}
]
}
结构化输出的好处是方便程序继续处理,不需要再从一大段自然语言中解析内容。
十四、加入邮件通知功能
如果你希望工作流完成后自动发送邮件,可以继续增加邮件模块。
创建 notifier.py:
# notifier.py
import os
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from dotenv import load_dotenv
load_dotenv()
class EmailNotifier:
"""
邮件通知工具
"""
def __init__(self):
self.smtp_host = os.getenv("SMTP_HOST")
self.smtp_port = int(os.getenv("SMTP_PORT", "465"))
self.smtp_user = os.getenv("SMTP_USER")
self.smtp_password = os.getenv("SMTP_PASSWORD")
self.receiver = os.getenv("EMAIL_RECEIVER")
if not all([
self.smtp_host,
self.smtp_user,
self.smtp_password,
self.receiver
]):
raise ValueError("请完整配置 SMTP 邮件环境变量")
def send(self, subject: str, content: str):
message = MIMEText(content, "plain", "utf-8")
message["From"] = Header(self.smtp_user, "utf-8")
message["To"] = Header(self.receiver, "utf-8")
message["Subject"] = Header(subject, "utf-8")
with smtplib.SMTP_SSL(self.smtp_host, self.smtp_port) as server:
server.login(self.smtp_user, self.smtp_password)
server.sendmail(
self.smtp_user,
[self.receiver],
message.as_string()
)
.env 中增加:
SMTP_HOST=smtp.qq.com
SMTP_PORT=465
SMTP_USER=你的邮箱
SMTP_PASSWORD=你的邮箱授权码
EMAIL_RECEIVER=接收人邮箱
然后在 workflow.py 的 run 方法最后添加:
from notifier import EmailNotifier
notifier = EmailNotifier()
notifier.send(
subject=f"AI文章生成完成:{topic}",
content=f"文章已生成,文件路径:{file_path}"
)
这样,文章生成完成后,你就能收到邮件提醒。
十五、常见问题与解决方案
问题一:模型输出不稳定怎么办?
可以从三方面优化:
- 降低
temperature; - 让提示词更具体;
- 要求模型按照固定格式输出。
例如不要只写:
帮我写一个大纲
而应该写:
请围绕主题生成文章大纲,要求使用 Markdown 格式,包含 6 个二级标题,每个标题下面写一句说明。
问题二:生成内容太短怎么办?
可以在提示词中明确字数要求,并分章节生成。
例如:
请先生成第一章,字数不少于 800 字。
对于长文,建议不要一次性生成全部内容,而是:
生成大纲
↓
逐章节生成正文
↓
合并全文
↓
统一润色
这样质量通常更好。
问题三:AI 会编造信息怎么办?
这是 AI 应用中非常重要的问题。解决方式包括:
- 接入可靠资料源;
- 要求模型只基于给定资料回答;
- 增加引用来源;
- 对关键数据进行人工审核;
- 使用检索增强生成,也就是 RAG。
对于严肃内容,例如医疗、法律、金融建议,一定要加入人工审核。
问题四:API 调用成本太高怎么办?
可以采用以下策略:
- 简单任务使用低成本模型;
- 对重复请求做缓存;
- 控制提示词长度;
- 分步骤复用中间结果;
- 减少不必要的润色和重写。
十六、进阶:将工作流改造成可配置模式
当工作流越来越复杂时,不建议把所有逻辑都写死在代码中。可以使用 YAML 或 JSON 配置工作流。
例如 workflow_config.yaml:
name: article_generation_workflow
steps:
- name: generate_titles
prompt: title_prompt
temperature: 0.8
- name: generate_outline
prompt: outline_prompt
temperature: 0.6
- name: generate_article
prompt: article_prompt
temperature: 0.7
- name: polish_article
prompt: polish_prompt
temperature: 0.4
这样做的好处是:
- 非开发人员也能调整流程;
- 不同业务可以复用同一套执行引擎;
- 提示词和代码解耦;
- 后期更容易接入可视化工作流平台。
十七、AI 工作流设计的核心原则
1. 不要一上来追求全自动
很多人刚开始做 AI 自动化时,希望一条流程从输入到发布完全无人参与。但在真实业务中,全自动往往风险较高。更推荐先从“半自动”开始,让 AI 完成初稿和整理工作,人负责审核和决策。
2. 每个节点只做一件事
不要让一个提示词同时完成搜索、总结、写作、润色、排版、发布。任务越复杂,结果越不稳定。正确方式是拆分节点,让每个节点有清晰输入和输出。
3. 中间结果要保存
工作流中每一步的结果最好都保存下来,例如标题、大纲、初稿、润色稿。这样一旦某一步失败,可以从中间继续执行,不必从头开始。
4. 输出格式要可控
如果后续程序还要处理 AI 结果,尽量要求模型输出 Markdown、JSON 或固定模板。格式越稳定,自动化程度越高。
5. 给人工审核留接口
尤其是面向外部用户、客户或公众发布的内容,建议增加审核步骤。AI 是效率工具,不应该完全替代责任判断。
十八、完整源码汇总
下面是本项目的完整文件清单。
ai-workflow-demo/
├── main.py
├── ai_client.py
├── workflow.py
├── prompts.py
├── notifier.py
├── requirements.txt
├── .env
└── output/
如果不需要邮件通知,可以不创建 notifier.py。
十九、总结
AI 工具真正的价值,不只是帮我们“生成一段文字”,而是参与到完整工作流中,帮助我们减少重复劳动、缩短执行链路、提升产出质量。
本文通过一个自动生成文章的案例,演示了如何使用 Python 和大模型 API 搭建 AI 工作流。这个案例虽然简单,但已经包含了工作流自动化的核心思想:
- 将复杂任务拆成多个节点;
- 为每个节点设计清晰提示词;
- 使用代码串联 AI 能力;
- 保存中间和最终结果;
- 根据业务需要扩展通知、审核和发布能力。
当你掌握这种模式后,就可以把它迁移到更多场景中,例如自动写日报、生成会议纪要、整理客户反馈、分析竞品资料、生成销售邮件等。
如果你是个人用户,可以从一个小脚本开始,把每天最重复的一件事自动化;如果你是企业开发者,可以进一步结合数据库、知识库、消息系统和权限管理,构建真正可落地的 AI 自动化平台。
AI 工作流的关键不是“用了多先进的模型”,而是你是否把业务流程拆解清楚,并让 AI 在合适的位置发挥作用。只要流程设计合理,即使是很简单的自动化脚本,也能带来显著的效率提升。