一个程序员的内容自动化:Claude Code + MinerU + ip-publisher 组合拳

0 阅读5分钟

一句话:Claude Code 作为大脑,MinerU(opendatalab/MinerU,60k+ stars)作为文档理解层,ip-publisher 作为内容生产与发布层——三者组合,构建一个真正可以无人值守运行的内容 Agent。

背景:为什么"AI 写作"还是很费人力?

大多数人用 AI 做内容的现实:

  1. 手动找资料
  2. 手动粘贴进 ChatGPT
  3. AI 生成 → 手动润色
  4. 手动复制到各平台
  5. 手动调格式、上传图片
  6. 手动发布

→ 省了 30% 的时间,但还是很累

真正的自动化应该是这样的:

  1. 触发词 / 定时任务
  2. Agent 自动找今天热点
  3. Agent 调用 MinerU 解析相关文档
  4. Agent 基于你的人设生成文章
  5. Agent 自动发布到小红书 / 知乎 / 公众号
  6. 完成,不需要人在

一、三层架构拆解

层级

工具

职责

核心能力

大脑层

Claude Code

理解意图、编排工具调用

上下文理解、工具链编排、质量判断

知识层

MinerU

文档 → 结构化知识

84语言OCR、公式/表格/多栏完美还原

发布层

ip-publisher

生成 → 适配 → 发布

热点抓取、人设改写、多平台发布


二、搭建步骤(完整可复现)

Step 1:安装三个工具

# MinerU(文档解析)
pip install mineru
mineru --version
# > MinerU 2.5-Pro

# ip-publisher(内容生产与发布)
git clone https://github.com/veeicwgy/ip-publisher
cd ip-publisher && pip install -e .
ip-publisher init
# 生成 ~/.ip-publisher/profile.yaml

Step 2:配置个人人设

# ~/.ip-publisher/profile.yaml
profile:
  name: "你的名字"
  occupation: "AI 工程师 / 开源开发者"
  writing_style: "技术深度 + 人话表达,不装逼,有干货"
  domains:
    - "AI工具"
    - "开源项目"
    - "LLM应用"
    - "文档处理"

platforms:
  zhihu:
    enabled: true
    style: "分析型长文,有数据支撑,结构清晰"
  xiaohongshu:
    enabled: true
    style: "情绪化,有冲击感的数字,适合种草"
  csdn:
    enabled: true
    style: "代码为主,技术深度优先"

# 关键:指向 MinerU 解析的知识库
knowledge_base:
  path: "~/.ip-publisher/knowledge/"
  auto_inject: true

Step 3:配置 Claude Code MCP

{
  "mcpServers": {
    "mineru": {
      "command": "uvx",
      "args": ["mineru-mcp"],
      "env": {
        "MINERU_TOKEN": "your_mineru_api_token"
      }
    },
    "ip-publisher": {
      "command": "python",
      "args": ["-m", "ip_publisher.mcp_server"],
      "env": {
        "PROFILE_PATH": "~/.ip-publisher/profile.yaml"
      }
    }
  }
}

Step 4:运行完整工作流

# 方式一:手动触发(指定文档)
claude "读取 ./reports/mineru_paper.pdf,结合今天 AI 领域热点,
按我的人设写一篇知乎深度文章并发布"

# 方式二:定时任务(全自动,每天 9 点)
# crontab -e
0 9 * * * claude "抓取今日热点,从知识库选最相关内容,生成并发布三平台文章"

三、关键代码:MinerU 解析结果如何注入文章生成

3.1 知识提取器

# knowledge_extractor.py
import subprocess
import json
from pathlib import Path
from anthropic import Anthropic

def extract_publishable_knowledge(pdf_path: str) -> dict:
    """
    从 PDF 提取适合发布的结构化知识

    Returns:
        headline_data: 标题级数字/结论
        key_tables: 对比表格
        core_conclusions: 核心结论 3-5 条
        unique_insights: 独家信息点
        code_examples: 代码示例
        citations: 可引用权威表述
    """
    output_dir = Path(f"/tmp/mineru_{Path(pdf_path).stem}")
    output_dir.mkdir(exist_ok=True)

    subprocess.run([
        "mineru", "-p", pdf_path,
        "-o", str(output_dir),
        "--mode", "precision",
        "--lang", "ch"
    ], check=True)

    md_files = list(output_dir.glob("*.md"))
    with open(md_files[0]) as f:
        content = f.read()

    client = Anthropic()
    response = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=3000,
        messages=[{
            "role": "user",
            "content": f"""从这篇文档中提取适合内容创作的知识,以 JSON 格式返回:

{{
  "headline_data": ["最震撼的数字/结论,适合做标题"],
  "key_tables": ["重要对比表格的 Markdown 格式"],
  "core_conclusions": ["核心结论1", "核心结论2", "核心结论3"],
  "unique_insights": ["只有这篇文档有、网上没有的独家信息"],
  "code_examples": ["代码片段(如有)"],
  "citations": ["可引用的权威表述(带来源)"]
}}

文档内容(前8000字):
{content[:8000]}"""
        }]
    )
    return json.loads(response.content[0].text)

3.2 与 ip-publisher 的集成适配器

# mineru_ippublisher_bridge.py
import yaml
from knowledge_extractor import extract_publishable_knowledge

def prepare_article_context(pdf_path: str, hot_topic: str, platform: str) -> str:
    """组合 MinerU 知识 + 热点 → 生成文章 prompt"""
    with open("~/.ip-publisher/profile.yaml") as f:
        profile = yaml.safe_load(f)

    knowledge = extract_publishable_knowledge(pdf_path)

    platform_styles = {
        "zhihu": "深度分析,有数据支撑,结构化观点,字数 1500-3000",
        "xiaohongshu": "情绪化表达,突出冲击感数字,口语化,加emoji,字数 300-800",
        "csdn": "代码为主,有完整可运行示例,技术术语准确,字数 2000-4000",
        "wechat": "叙事型,有故事感,引导分享,字数 1000-2000"
    }

    return f"""
你是一个{profile['profile']['occupation']},风格:{profile['profile']['writing_style']}

今日热点:{hot_topic}

从专业文档提取的知识:
- 标题级数据:{knowledge['headline_data']}
- 核心结论:{knowledge['core_conclusions']}
- 独家信息:{knowledge['unique_insights']}
- 对比表格:{knowledge['key_tables']}

请结合热点和上述知识,写一篇{platform_styles[platform]}的文章。
所有数据必须来自上面提供的知识,不要编造。
"""

四、这套工具链能做什么,不能做什么

✅ 适合的场景

  • 每周读行业研报 → 产出知乎长文 ⭐⭐⭐⭐⭐
  • AI 论文 → 技术科普文 ⭐⭐⭐⭐⭐
  • 产品发布会 PDF → 多平台评测 ⭐⭐⭐⭐
  • 政策文件 → 解读文章 ⭐⭐⭐⭐
  • 竞品分析报告 → 对比内容 ⭐⭐⭐⭐

❌ 不适合的场景

  • 纯评论类内容(无文档来源)→ 直接用 ip-publisher 即可
  • 视频内容脚本 → ip-publisher 当前不支持视频平台
  • 需要实时数据的内容 → MinerU 处理静态文档,不适合实时行情

五、快速开始

# 三分钟跑通最小 demo
pip install mineru
git clone https://github.com/veeicwgy/ip-publisher && cd ip-publisher
pip install -e . && ip-publisher init

# 测试解析
mineru -p test.pdf -o ./output
cat ./output/*.md | head -100

# 测试发布(dry-run 模式,不实际发布)
ip-publisher generate --source ./output/*.md --platform zhihu --dry-run

相关链接

  • MinerU 开源版:github.com/opendatalab/MinerU(60k+ stars,Apache 2.0)
  • MinerU SaaS API:mineru.net(pip install mineru-open-sdk
  • ip-publisher:github.com/veeicwgy/ip-publisher(快速增长中 🚀)
  • MinerU 论文:arXiv:2604.04771