version: 0.4.0
vars: {}
graph:
  id: spring_text_image
  description: 'Launch-driven Spring Festival content factory: plan -> parallel gen -> edit -> human review -> revise (gpt-4o).'
  is_majority_voting: false
  start:
    - Planner
  nodes:
    - id: Planner
      type: agent
      config:
        name: gpt-4o
        provider: openai
        role: |
          你是春节新媒体策划。
          用户在 Launch 时输入的内容，就是本次任务的唯一要求。
          请输出创作 Brief（Markdown），必须包含：
          ## 受众
          ## 核心传播点（3条）
          ## 风格与禁忌
          ## 必须出现的元素
          ## 可选创意梗（2条）
          ## 写作任务总结（一句话）
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params:
          temperature: 0.6
        tooling: []
        thinking: null
        memories: []
        retry: null
      description: ''
      context_window: 0
      log_output: true
    - id: Copywriter
      type: agent
      config:
        name: gpt-4o
        provider: openai
        role: |
          你是官号文案作者。根据 Brief 输出一篇可直接发布的春节推文（Markdown）。
          要求：
          - 标题 1 个（吸睛但不标题党）
          - 正文 4-6 段（段落短，节奏快）
          - 至少 3 个可传播金句（加粗）
          - 结尾 2 条互动引导（评论区话题/投票/分享）
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params:
          temperature: 0.7
        tooling: []
        thinking: null
        memories: []
        retry: null
      description: ''
      context_window: 0
      log_output: true
    - id: Blessing
      type: agent
      config:
        name: gpt-4o
        provider: openai
        role: |
          你是春节祝福语写手。根据 Brief 输出 12 条短祝福（Markdown 列表）：
          - 温情 4 条 / 幽默 4 条 / 国风 4 条
          - 每条不超过 18 字
          - 不要重复表达
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params:
          temperature: 0.85
        tooling: []
        thinking: null
        memories: []
        retry: null
      description: ''
      context_window: 0
      log_output: true
    - id: Storyteller
      type: agent
      config:
        name: gpt-4o
        provider: openai
        role: |
          你是短故事写手。根据 Brief 写一个 300-500 字春节小故事（Markdown）。
          要求：有一个记忆点（反转/细节/一句金句）；结尾落到团圆/祝福/新开始。
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params:
          temperature: 0.85
        tooling: []
        thinking: null
        memories: []
        retry: null
      description: ''
      context_window: 0
      log_output: true
    - id: PosterPrompt
      type: agent
      config:
        name: gpt-4o
        provider: openai
        role: |
          根据“最终发布包”，生成海报用的图像生成提示词（prompt pack），要求：
          - 3 个风格方向（国风/现代极简/手绘插画）
          - 每个方向给：正向提示词、负向提示词、画幅比例建议、主标题/副标题排版建议
          输出 Markdown。
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params:
          temperature: 0.6
        tooling: []
        thinking: null
        memories: []
        retry: null
      description: ''
      context_window: 0
      log_output: true
    - id: Editor1
      type: agent
      config:
        name: gpt-4o
        provider: openai
        role: |
          你是总编辑。你会收到：Brief + 推文 + 祝福语 + 小故事。
          请整合为一个“官号发布包（初稿）”（Markdown），结构固定为：
          # 标题候选（3个）
          # 正文终稿（1篇）
          # 海报短句（从祝福语精选 6 条）
          # 配图/排版建议（5条）
          # 评论区话题（3条）
          语言风格统一，内容可直接复制发布。
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params:
          temperature: 0.5
        tooling: []
        thinking: null
        memories: []
        retry: null
      description: ''
      context_window: 10
      log_output: true
    - id: HumanReview
      type: human
      config:
        description: |
          请审核“官号发布包（初稿）”：
          - 若满意请输入：ACCEPT（流程结束）
          - 否则请输入修改意见（越具体越好）
      description: ''
      context_window: 10
      log_output: true
    - id: Editor2
      type: agent
      config:
        name: gpt-4o
        provider: openai
        role: |
          你是二次润色编辑。你会收到“发布包初稿 + 人工修改意见”。
          请输出修改后的最终发布包（Markdown），要求：
          - 完整保留发布包的结构（标题候选/正文终稿/海报短句/配图建议/评论区话题）
          - 修改意见逐条落实
          - 语言风格统一、可直接发布
          - 若发现初稿结构缺失或不一致，需要补齐并修正
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params:
          temperature: 0.45
        tooling: []
        thinking: null
        memories: []
        retry: null
      description: ''
      context_window: 10
      log_output: true
    - id: ImageGen
      type: agent
      config:
        name: gemini-2.5-flash-image-preview
        provider: openai
        role: |
          根据输入的“海报提示词方案”，对于每一个方案生成 1 张春节主题海报图。
          注意海报中如果涉及文字，务必保证文字准确性，否则不要使用文字。
          若支持比例参数，请优先按建议画幅生成；否则生成 1:1。
          输出直接给出生成结果（按系统返回格式）。
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        params: {}
        tooling: []
        thinking: null
        memories: []
        retry: null
        input_mode: messages
      description: ''
      context_window: 0
      log_output: true
  edges:
    - from: Planner
      to: Copywriter
    - from: Planner
      to: Blessing
    - from: Planner
      to: Storyteller
    - from: Planner
      to: Editor1
    - from: Copywriter
      to: Editor1
    - from: Blessing
      to: Editor1
    - from: Storyteller
      to: Editor1
    - from: Editor2
      to: PosterPrompt
    - from: PosterPrompt
      to: ImageGen
    - from: HumanReview
      to: Editor2
      trigger: true
      condition:
        type: keyword
        config:
          any: []
          none:
            - ACCEPT
          regex: []
          case_sensitive: true
      carry_data: true
      keep_message: true
      clear_context: true
      clear_kept_context: false
      process: null
      dynamic: null
    - from: Editor1
      to: HumanReview
      trigger: true
      condition: null
      carry_data: true
      keep_message: true
      clear_context: true
      clear_kept_context: false
      process: null
      dynamic: null
