第 29 期:综合项目 — 自动化内容生产线

Updated on 4/6/2026

[Translation Pending]\n\n## 内容生产线架构

graph TB
    subgraph "输入源"
        RSS[RSS 订阅]
        Upload[手动上传]
        API_In[API 推送]
    end
    
    subgraph "Dify Workflow - 内容工厂"
        Ingest[内容接收] --> Extract[提取正文]
        Extract --> Parallel[并行处理]
        
        Parallel --> Summary[LLM: 生成摘要]
        Parallel --> Translate[LLM: 多语言翻译]
        Parallel --> SEO[LLM: SEO 优化]
        Parallel --> Tags[LLM: 自动标签]
        
        Summary --> Merge[汇总]
        Translate --> Merge
        SEO --> Merge
        Tags --> Merge
        
        Merge --> Format[Code: 格式化输出]
        Format --> QA[LLM: 质量审核]
        QA --> Publish[HTTP: 发布到 CMS]
    end
    
    subgraph "输出渠道"
        CMS[WordPress / Ghost]
        WeChat[微信公众号]
        Newsletter[邮件通讯]
    end
    
    RSS --> Ingest
    Upload --> Ingest
    API_In --> Ingest
    Publish --> CMS
    Publish --> WeChat
    Publish --> Newsletter

Workflow 核心节点

正文提取 (Code Node)

import re

def main(raw_html: str) -> dict:
    """从 HTML 中提取纯文本正文"""
    # 移除 script/style 标签
    clean = re.sub(r'<(script|style)[^>]*>.*?</\1>', '', raw_html, flags=re.DOTALL)
    # 移除 HTML 标签
    text = re.sub(r'<[^>]+>', '', clean)
    # 清理空白
    text = re.sub(r'\s+', ' ', text).strip()
    
    return {
        "content": text,
        "word_count": len(text),
        "language": detect_language(text)
    }

def detect_language(text: str) -> str:
    chinese_chars = len(re.findall(r'[\u4e00-\u9fff]', text))
    return "zh" if chinese_chars > len(text) * 0.3 else "en"

多语言翻译 (LLM Node)

System Prompt:
你是一个专业的多语言翻译专家。

将以下{{#code_1.language#}}文章翻译为{{#start.target_languages#}}。

翻译要求:
1. 保持原文的语气和风格
2. 技术术语保留英文原文并加括号注释
3. 标题也要翻译
4. 输出 JSON 格式: {"zh": "...", "en": "...", "ja": "..."}

原文:
{{#code_1.content#}}

SEO 优化 (LLM Node)

System Prompt:
你是一个 SEO 优化专家。基于以下文章内容,生成:

1. SEO 标题 (50-60 字符)
2. Meta Description (120-160 字符)  
3. 5 个关键词
4. Open Graph 描述
5. URL 友好的 slug

输出 JSON 格式:
{
  "seo_title": "...",
  "meta_description": "...",
  "keywords": ["k1", "k2", ...],
  "og_description": "...",
  "slug": "..."
}

质量审核 (LLM Node)

System Prompt:
你是一个内容质量审核专家。检查以下内容并打分:

评分维度 (每项1-10分):
1. 准确性 - 信息是否准确
2. 可读性 - 结构和表达是否清晰
3. SEO 友好 - 是否包含合适的关键词
4. 完整性 - 内容是否完整

如果总分 < 28,标记为 "needs_revision"。

输出 JSON:
{
  "scores": {"accuracy": 9, "readability": 8, ...},
  "total": 35,
  "status": "approved" | "needs_revision",
  "feedback": "修改建议..."
}

发布到 CMS (HTTP Node)

# Code 节点:构建发布请求
def main(content: dict, seo: dict, translations: dict) -> dict:
    return {
        "publish_payload": {
            "title": seo["seo_title"],
            "slug": seo["slug"],
            "content": content["formatted_content"],
            "excerpt": seo["meta_description"],
            "tags": seo["keywords"],
            "status": "draft",  # 先发到草稿
            "translations": translations,
            "meta": {
                "og_description": seo["og_description"]
            }
        }
    }