上一篇 下一篇 分享链接 返回 返回顶部

从零搭一个自动写稿流程:AI 工作流实战与源码分享

发布人:慈云数据-客服中心 发布时间:6小时前 阅读量:2

AI工具 工作流自动化教程|附源码

在过去几年里,AI 工具已经从“聊天问答”逐渐走向“工作流自动化”。很多人最初使用 AI,只是让它写文案、改邮件、总结文章;但真正能提升效率的方式,是把 AI 嵌入到日常流程中,让它自动完成信息收集、内容整理、数据分析、任务分发、结果通知等一系列工作。

本文将以一个完整案例为主线,带你搭建一个「AI 工作流自动化系统」:
用户输入一个主题,系统自动完成资料整理、生成文章大纲、撰写正文、保存结果,并发送通知。

文章会包含完整思路、技术选型、代码结构和可运行源码示例,适合想要入门 AI 自动化工作流的开发者、运营人员、产品经理以及效率工具爱好者。


一、什么是 AI 工作流自动化?

所谓 AI 工作流自动化,并不是简单地调用一次 AI 接口,而是将多个任务节点串联起来,让 AI 参与其中某些环节,从而形成一条可重复运行的自动化流程。

例如,一个内容创作工作流可能包括:

  1. 输入选题;
  2. 自动搜索或整理资料;
  3. AI 生成标题;
  4. AI 生成大纲;
  5. AI 撰写正文;
  6. 自动检查错别字和格式;
  7. 保存到 Markdown 文件;
  8. 推送到飞书、企业微信或邮箱;
  9. 后续自动发布到公众号、博客或知识库。

传统方式下,这些步骤需要人工逐个执行;而通过 AI 工作流,我们可以让程序自动完成大部分重复性操作。


二、适合自动化的 AI 工作流场景

AI 自动化并不只适合写文章,还可以应用到很多业务场景中。

1. 内容生产

常见场景包括:

  • 公众号文章生成;
  • 小红书笔记生成;
  • 短视频脚本生成;
  • SEO 文章生成;
  • 产品介绍文案生成;
  • 邮件营销内容生成。

例如,运营同学每天需要根据产品关键词写 5 篇推广文案,如果手动写可能需要 3 小时,而使用 AI 工作流可以压缩到 20 分钟以内。

2. 数据整理

AI 可以帮助我们处理非结构化信息,例如:

  • 将会议纪要整理成待办事项;
  • 从客户反馈中提取问题类型;
  • 将长文本总结为核心观点;
  • 将网页内容转为表格;
  • 从客服聊天记录中提取用户需求。

3. 办公自动化

在日常办公中,AI 工作流也非常实用:

  • 自动生成日报、周报;
  • 自动整理项目进展;
  • 自动生成会议纪要;
  • 自动起草邮件;
  • 自动生成 PPT 大纲;
  • 自动翻译和润色文档。

4. 客服与销售辅助

销售和客服人员每天要处理大量重复问题,AI 可以帮助他们:

  • 自动识别客户意图;
  • 自动推荐回复话术;
  • 自动生成客户跟进记录;
  • 自动归类客户问题;
  • 自动生成销售总结。

三、本文要实现的自动化工作流

本文案例目标是实现一个简单但完整的 AI 自动化写作工作流。

用户只需要输入一个主题,例如:

AI工具如何提升个人工作效率

程序会自动完成:

  1. 生成文章标题建议;
  2. 生成文章大纲;
  3. 根据大纲生成完整正文;
  4. 对正文进行润色;
  5. 保存为 Markdown 文件;
  6. 在控制台输出执行结果。

为了便于理解和部署,本文采用 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.pyrun 方法最后添加:

from notifier import EmailNotifier

notifier = EmailNotifier()
notifier.send(
    subject=f"AI文章生成完成:{topic}",
    content=f"文章已生成,文件路径:{file_path}"
)

这样,文章生成完成后,你就能收到邮件提醒。


十五、常见问题与解决方案

问题一:模型输出不稳定怎么办?

可以从三方面优化:

  1. 降低 temperature
  2. 让提示词更具体;
  3. 要求模型按照固定格式输出。

例如不要只写:

帮我写一个大纲

而应该写:

请围绕主题生成文章大纲,要求使用 Markdown 格式,包含 6 个二级标题,每个标题下面写一句说明。

问题二:生成内容太短怎么办?

可以在提示词中明确字数要求,并分章节生成。

例如:

请先生成第一章,字数不少于 800 字。

对于长文,建议不要一次性生成全部内容,而是:

生成大纲
  ↓
逐章节生成正文
  ↓
合并全文
  ↓
统一润色

这样质量通常更好。

问题三:AI 会编造信息怎么办?

这是 AI 应用中非常重要的问题。解决方式包括:

  • 接入可靠资料源;
  • 要求模型只基于给定资料回答;
  • 增加引用来源;
  • 对关键数据进行人工审核;
  • 使用检索增强生成,也就是 RAG。

对于严肃内容,例如医疗、法律、金融建议,一定要加入人工审核。

问题四:API 调用成本太高怎么办?

可以采用以下策略:

  1. 简单任务使用低成本模型;
  2. 对重复请求做缓存;
  3. 控制提示词长度;
  4. 分步骤复用中间结果;
  5. 减少不必要的润色和重写。

十六、进阶:将工作流改造成可配置模式

当工作流越来越复杂时,不建议把所有逻辑都写死在代码中。可以使用 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 在合适的位置发挥作用。只要流程设计合理,即使是很简单的自动化脚本,也能带来显著的效率提升。

目录结构
全文