一个AI写手,一天能写多少篇文章?手动操作,撑死5-8篇。但把选题、写作、排版交给程序辅助完成呢?效率可以提升数倍。本文分享我搭建的AI内容矩阵自动化系统的完整架构设计。


一、为什么需要内容矩阵自动化?

做自媒体,最大的瓶颈不是写不好,而是写不够

平台的推荐算法偏爱高频更新的创作者。一天发一篇和一周发一篇,数据差距可能是10倍。但人的精力有限,怎么办?

答案很简单:让AI帮你写,让程序帮你准备好内容。

我搭建的系统实现了一个闭环:

热搜监控 → AI选题 → AI写作 → 自动排版 → 内容管理 → 数据追踪
     ↑                                              ↓
     └──────── 反馈优化(根据数据调整策略)──────────┘

接下来,我逐个模块拆解整个架构。


二、系统整体架构

┌─────────────────────────────────────────────┐
│              content_bot 主控               │
├──────────┬──────────┬──────────┬────────────┤
│ fetcher  │ rewriter │ formatter│ publisher  │
│  选题采集 │ AI改写   │ 自动排版  │ 发布辅助   │
└──────────┴──────────┴──────────┴────────────┘
      ↓          ↓          ↓          ↓
   热搜API    AI模型API   Markdown    平台API
  今日头条     DeepSeek    模板引擎    知乎/CSDN
  IT之家      GLM备用      YAML配置   清单导出
  B站热门                            Markdown文件

核心模块只有4个,每个都可以独立运行和测试。


三、模块1:选题采集(fetcher)

设计思路

好内容从好选题开始。手动找选题太慢,用程序自动监控多个信息源。

数据源

来源 类型 采集方式 日均量
今日头条热榜 JSON API urllib直接请求 50条
IT之家 RSS Feed feedparser解析 20条
B站热门 JSON API urllib直接请求 50条

核心代码结构

# fetcher.py - 选题采集模块

import urllib.request
import json
import feedparser

def fetch_all_sources(config) -> list[dict]:
    """采集所有配置的源,返回去重后的选题列表"""
    all_items = []
    
    # JSON热榜API
    for name, cfg in config["sources"]["hot_apis"].items():
        items = fetch_hot_api(name, cfg)
        all_items.extend(items)
    
    # RSS源
    for feed_url in config["sources"]["rss_feeds"]:
        items = fetch_rss(feed_url)
        all_items.extend(items)
    
    # 去重(按标题相似度)
    return deduplicate(all_items)

def fetch_hot_api(name: str, cfg: dict) -> list[dict]:
    """请求JSON热榜API"""
    req = urllib.request.Request(
        cfg["url"],
        headers={"User-Agent": "Mozilla/5.0"}
    )
    with urllib.request.urlopen(req, timeout=10) as resp:
        data = json.loads(resp.read())
    
    # 根据不同源调用不同解析器
    parsers = {
        "toutiao": _parse_toutiao,
        "bilibili": _parse_bilibili,
    }
    parser = parsers.get(name, _parse_generic)
    return parser(data, cfg.get("max_items", 15))

已验证可用源

  • 今日头条热榜:稳定可用,50条/次
  • IT之家RSS:稳定可用,20条/次
  • B站热门:可用但娱乐内容偏多,需过滤

四、模块2:AI改写(ai_rewriter)

设计思路

采集到的选题只是标题和链接,需要AI将其改写为完整文章。

多模型容灾

这是我花时间最多的设计点——AI API不稳定,必须有备用方案:

class ContentRewriter:
    def __init__(self, config):
        self.primary = config["ai"]["primary"]
        self.backups = config["ai"].get("backups", [])
    
    def rewrite(self, title: str, source_text: str) -> str:
        """带容灾的AI改写"""
        messages = [
            {"role": "system", "content": SYSTEM_PROMPT},
            {"role": "user", "content": f"标题:{title}\n\n原文:{source_text}"}
        ]
        return self._call_with_fallback(messages)
    
    def _call_with_fallback(self, messages):
        """主模型失败则依次尝试备用模型"""
        # 尝试主模型
        try:
            return self._call_api(self.primary, messages)
        except Exception:
            pass
        
        # 依次尝试备用模型
        for backup in self.backups:
            try:
                return self._call_backup_api(backup, messages)
            except Exception:
                continue
        
        raise RuntimeError("所有AI模型均不可用")

Prompt设计

改写质量的关键在于prompt:

SYSTEM_PROMPT = """你是一个专业的中文科技自媒体写手。
请根据提供的标题和原始素材,改写为一篇高质量的文章。

要求:
1. 标题要吸引人,包含数字或痛点词
2. 文章1500-2500字
3. 结构清晰,有小标题
4. 有数据和案例支撑
5. 口语化但不失专业
6. 结尾引导关注和互动

输出格式:直接输出Markdown格式的文章。"""

五、模块3:自动排版(formatter)

AI输出的Markdown需要统一格式,加入SEO元素:

def format_article(raw_md: str, metadata: dict) -> str:
    """统一排版,加入SEO元素"""
    
    # 1. 确保标题层级正确
    article = ensure_heading_hierarchy(raw_md)
    
    # 2. 自动提取标签
    tags = extract_tags(article, max_tags=5)
    
    # 3. 生成摘要
    summary = generate_summary(article, max_length=150)
    
    # 4. 添加标准尾部
    footer = f"""
---
*关注我,获取更多AI实战内容。*
*标签:{', '.join(tags)}*"""
    
    return article + footer

六、模块4:内容管理与发布辅助(publisher)

这个模块负责将生成好的内容进行结构化管理,为人工发布做好准备。

设计思路

发布环节目前由人工在平台编辑器中完成,系统负责准备好所有内容并生成清单,减少人工操作步骤。

内容管理功能

  1. 按平台命名保存文件 —— 将每篇文章保存为对应平台命名的Markdown文件
  2. 生成发布清单 —— 自动生成checklist,标注每篇文章的目标平台、标题、标签
  3. 辅助人工快速发布 —— 所有内容就绪后,人工只需复制粘贴到平台编辑器即可
import json
from datetime import datetime
from pathlib import Path


def save_for_platform(article: dict, platform: str, output_dir: str = "output"):
    """将文章保存为按平台命名的文件"""
    base = Path(output_dir)
    base.mkdir(exist_ok=True)

    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    filename = f"{platform}_{article['title'][:20]}_{timestamp}.md"
    filepath = base / filename

    # 保存Markdown文件
    filepath.write_text(article["content"], encoding="utf-8")
    print(f"  已保存: {filepath}")
    return str(filepath)


def save_publish_checklist(articles: list, metadata: dict):
    """生成发布清单(checklist)"""
    checklist_path = Path("output") / "publish_checklist.md"
    lines = [f"# 发布清单 - {datetime.now().strftime('%Y-%m-%d %H:%M')}\n"]
    lines.append("发布环节请人工在平台编辑器中完成,以下内容已全部准备就绪。\n")

    for i, article in enumerate(articles, 1):
        lines.append(f"## [{i}] {article['title']}")
        for platform in metadata.get("publish_targets", []):
            status = " "
            lines.append(f"- [{status}] {platform}")
        lines.append(f"  标签: {', '.join(article.get('tags', []))}")
        lines.append(f"  文件: {article.get('filepath', 'N/A')}")
        lines.append("")

    checklist_path.write_text("\n".join(lines), encoding="utf-8")
    print(f"\n发布清单已生成: {checklist_path}")

踩坑记录

问题 原因 解决方案
文件名冲突 同标题多版本 加时间戳区分
中文路径问题 Windows编码 用pathlib统一处理
标签遗漏 手动维护易忘 从配置文件自动读取

七、主控流程

把4个模块串起来:

# main.py - 主控入口

def run_pipeline(config, max_articles=5, dry_run=False):
    """完整的内容矩阵自动化流程"""
    
    # Step 1: 采集选题
    items = fetch_all_sources(config)
    print(f"采集到 {len(items)} 条选题")
    
    # Step 2: 筛选和排序
    items = filter_by_keywords(items, config["filters"])
    items = items[:max_articles]
    print(f"筛选后 {len(items)} 条待处理")
    
    for i, item in enumerate(items):
        print(f"\n--- 处理第 {i+1} 条 ---")
        
        # Step 3: AI改写
        article = rewriter.rewrite(item["title"], item.get("summary", ""))
        
        # Step 4: 排版
        formatted = format_article(article, {"source": item["link"]})
        
        # Step 5: 保存
        save_to_output(formatted, i)
        
        # Step 6: 生成发布清单
        save_publish_checklist(formatted, metadata)
    
    print("\n全流程完成!")

命令行接口

# 试运行(只采集+改写,不发布)
python main.py --max 5 --dry-run

# 正式运行(采集+改写+保存+生成发布清单)
python main.py --max 3

# 自定义配置
python main.py --config my_config.yaml --max 5

八、实际效果

当前系统的运行数据:

指标 数值
单次采集选题数 100+
筛选后可用选题 10-20
单篇改写耗时 15-30秒
单篇排版耗时 <1秒
全流程(5篇) 约3分钟
日均产出能力 5-10篇(实际值)

九、后续优化方向

这个系统还有很多可以优化的地方:

  1. 智能选题排序:根据历史发布数据,AI预测哪些选题更容易爆
  2. 多风格改写:同一选题生成多个角度的文章,分发到不同平台
  3. 自动A/B测试:同一篇文章不同标题,看哪个数据好
  4. 数据反馈闭环:采集已发布文章的阅读/点赞/评论数据,自动调整策略
  5. 多语言扩展:自动翻译成英文,发布到Medium等海外平台

写在最后

这套系统的核心思路是:人负责策略,AI负责执行。

选题方向、内容调性、审核把关——这些需要人的判断。采集、改写、排版——这些重复劳动可以交给程序辅助完成,但发布环节建议人工审核后操作。

我目前正在持续优化这套系统,后续会逐步开源核心模块。

如果你对AI内容自动化的完整实现细节感兴趣——包括每个模块的完整代码、配置文件、部署方案、常见问题解决——可以关注我的后续内容。我会逐步分享每个模块的深度实现教程。

有问题欢迎评论区交流!觉得有用就点个赞收藏吧。


下一篇文章预告:《AI内容矩阵进阶:如何用数据反馈自动优化选题策略》。关注我,不错过更新。

声明:本文部分内容由AI辅助整理,经作者亲自验证和修改。技术方案基于真实项目实践,已脱敏处理。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐