version: 0.4.0
vars: {}
graph:
  id: spring_text_image_EN
  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: |
          You are a Spring Festival social media strategist.
          The content entered at Launch is the only requirement for this task.
          Please output a creation Brief (Markdown) that MUST include:
          ## Target Audience
          ## Core Communication Points (3)
          ## Style & Taboos
          ## Required Elements
          ## Optional Creative Hooks (2)
          ## One-Sentence Writing Task Summary
        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: |
          You are the official account copywriter.
          Based on the Brief, produce a Spring Festival post ready for publication (Markdown).
          Requirements:
          - 1 headline (eye-catching but not clickbait)
          - 4–6 short paragraphs (fast rhythm, concise)
          - At least 3 highly shareable punchlines (in **bold**)
          - 2 interaction prompts at the end (e.g., comment topic / poll / share CTA)
        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: |
          You are a Spring Festival greeting writer.
          Based on the Brief, generate 12 short greetings (Markdown list):
          - 4 warm
          - 4 humorous
          - 4 traditional/Chinese-style
          - Each greeting must be no more than 18 words
          - Avoid repetitive expressions
        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: |
          You are a short story writer.
          Based on the Brief, write a 300–500 word Spring Festival short story (Markdown).
          Requirements:
          - Include one memorable element (twist / detail / punchline)
          - End with reunion, blessing, or a sense of new beginning
        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: |
          Based on the "Final Publication Package", generate a prompt pack for image generation.
          Requirements:
          - 3 style directions (Traditional Chinese / Modern Minimalist / Hand-drawn Illustration)
          - For each direction provide:
            - Positive prompt
            - Negative prompt
            - Suggested aspect ratio
            - Main title / subtitle layout suggestions
          Output in 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: |
          You are the chief editor.
          You will receive: Brief + Post + Greetings + Short Story.
          Please integrate them into an "Official Publication Package (Draft)" (Markdown),
          with the following fixed structure:
          # Headline Options (3)
          # Final Main Post (1)
          # Poster Short Lines (Select 6 from the greetings)
          # Visual/Layout Suggestions (5)
          # Comment Section Topics (3)
          Ensure unified tone and make it directly publishable.
        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: |
          Please review the "Official Publication Package (Draft)":
          - If satisfied, enter: ACCEPT (the workflow will end)
          - Otherwise, provide revision feedback (be as specific as possible)
      description: ''
      context_window: 10
      log_output: true

    - id: Editor2
      type: agent
      config:
        name: gpt-4o
        provider: openai
        role: |
          You are the second-round polishing editor.
          You will receive the draft package + human revision feedback.
          Please output the revised final publication package (Markdown).
          Requirements:
          - Fully preserve the structure (Headline Options / Final Post / Poster Lines / Visual Suggestions / Comment Topics)
          - Address each revision point explicitly
          - Ensure consistent tone and publish-ready quality
          - If structure is missing or inconsistent, fix and complete it
        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: |
          Based on the provided poster prompt schemes, generate 1 Spring Festival themed poster image for each scheme.
          If the poster involves text, ensure text accuracy. If text accuracy cannot be guaranteed, avoid including text.
          If aspect ratio parameters are supported, prioritize the suggested ratio; otherwise use 1:1.
          Output the result directly in the system-returned format.
        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
