dify의 30분 퀵스타트는 초안, 업로드 문서, 이미지, 원하는 말투를 입력받아 Twitter, LinkedIn 같은 여러 플랫폼용 게시물을 한 번에 만드는 워크플로를 구성한다. 핵심은 LLM 하나에 모든 일을 맡기는 것이 아니라 User Input, Parameter Extractor, IF/ELSE, List Operator, Doc Extractor, Iteration, Template 노드를 조합해 입력 검증·자료 통합·플랫폼별 생성·출력 포맷팅을 분리하는 데 있다.

준비 사항
먼저 Dify Cloud에 로그인하고 모델 프로바이더를 설정한다. 공식 가이드는 OpenAI 플러그인과 gpt-5.2를 예시로 사용한다. Sandbox 크레딧을 쓰면 별도 API 키 없이 시작할 수 있고, 운영 환경에서는 팀의 OpenAI, Anthropic, Gemini 등 자체 키를 연결하면 된다.
기본 모델 설정에서 System Reasoning Model을 지정해두면 워크플로 안에서 노드를 추가할 때 반복 설정을 줄일 수 있다.
워크플로 입력 설계
새 Workflow를 만든 뒤 User Input 노드에서 실행에 필요한 변수를 받는다.
| 입력 | Dify 필드 타입 | 용도 |
|---|---|---|
draft | Paragraph | 원본 초안 텍스트 |
user_file | File list | 참고 문서와 이미지 업로드 |
voice_and_tone | Paragraph | 브랜드 보이스와 말투 |
platform | Short Text | 생성 대상 플랫폼 목록 |
language | Select | 결과물 언어 |
이 단계에서 변수명을 명확히 잡아두는 것이 중요하다. 이후 노드는 User Input/draft, User Input/user_file처럼 이 변수를 참조하며 연결된다.
플랫폼 입력을 구조화한다
사용자는 x and linkedIn, twitter, linkedin, Instagram + Threads처럼 플랫폼명을 자유롭게 입력한다. Parameter Extractor 노드는 이 자연어 입력을 표준 배열로 바꾼다.
입력: "x and insta"
출력: ["Twitter", "Instagram"]추출 실패 케이스도 명시한다. 예를 들어 플랫폼을 찾지 못하면 No platforms identified. Please enter a valid platform name. 같은 고정 메시지를 출력하게 하고, 다음 IF/ELSE 노드가 이 메시지를 감지해 워크플로를 일찍 종료한다. 이렇게 하면 잘못된 입력 때문에 불필요한 LLM 호출이 이어지는 것을 막을 수 있다.
파일을 이미지와 문서로 나눈다
업로드 파일은 같은 user_file 입력으로 들어오지만 처리 방식은 다르다. 이미지는 비전 모델이 직접 읽을 수 있고, PDF·DOCX 같은 문서는 텍스트 추출이 먼저 필요하다.
이를 위해 List Operator 노드 두 개를 병렬로 둔다.
| 노드 | 필터 조건 | 다음 처리 |
|---|---|---|
| Image | 파일 타입이 Image | LLM 노드의 vision 입력으로 전달 |
| Document | 파일 타입이 Doc | Doc Extractor로 텍스트 추출 |
Doc Extractor는 문서 파일을 깨끗한 텍스트로 변환해 다음 LLM 노드가 읽을 수 있게 한다.
참고 자료를 하나의 컨텍스트로 통합한다
Integrate Info LLM 노드는 초안, 문서 텍스트, 이미지 내용을 합쳐 플랫폼별 생성에 쓸 기초 자료를 만든다. 여기서는 게시물을 바로 쓰기보다 다음 항목을 구조화해 뽑는 역할에 집중한다.
- 핵심 메시지와 목적
- 주요 사실, 수치, 인용, 기능
- 차별점과 신뢰 근거
- 참여를 유도할 질문, CTA, 논의 포인트
- 플랫폼 최적화에 쓸 수 있는 소재
이 분리 덕분에 뒤쪽 생성 노드는 원자료를 매번 다시 해석하지 않고, 이미 정리된 컨텍스트를 받아 플랫폼별로 변환하는 일에 집중한다.
플랫폼별 콘텐츠를 반복 생성한다
Iteration 노드는 추출된 플랫폼 배열을 순회한다. 각 반복 안에는 두 개의 LLM 노드를 둔다.
첫 번째 Identify Style 노드는 현재 플랫폼의 콘텐츠 가이드라인을 만든다. 적정 길이, 톤, 해시태그, CTA, 알고리즘 최적화, 기술 제약을 정리한다.
두 번째 Create Content 노드는 다음 입력을 받아 실제 게시물을 생성한다.
Platform Name: Current Iteration/item
Target Language: User Input/language
Platform Guidelines: Identify Style/text
Source Information: Integrate Info/text
Voice & Tone: User Input/voice_and_tone공식 가이드는 platform_name과 post_content를 가진 구조화 출력(JSON schema)을 켜도록 안내한다. 이렇게 하면 후속 Template 노드가 결과 배열을 안정적으로 렌더링할 수 있다. 대상 플랫폼 수를 최대 10개로 제한했다면 Iteration의 Parallel Mode도 최대 병렬성 10으로 맞춘다.
템플릿으로 최종 출력을 정리한다
Iteration 결과는 배열 형태이기 때문에 그대로 사용자에게 보여주기 어렵다. Template 노드에서 Jinja2로 결과를 보기 좋은 형태로 정리한다.
{% for item in output %}
# {{ item.platform_name }}
{{ item.post_content }}
{% endfor %}마지막 Output 노드는 Template/output을 반환한다. 워크플로를 테스트할 때는 예시 초안, 말투, 플랫폼, 언어를 입력하고 플랫폼별 게시물이 각각 생성되는지 확인한다. 노드별 문제는 Last Run 로그에서 확인하고, 중간 변수만 바꿔 재테스트할 때는 cached variables 기능을 쓰면 전체 실행을 반복하지 않아도 된다.
언제 유용한가?
- 마케팅 팀이 한 초안을 여러 채널용 문안으로 빠르게 바꿔야 할 때
- 제품 릴리스, 블로그 글, 문서, 이미지 자료를 한 번에 넣고 채널별 문안을 생성할 때
- 비개발자가 Dify의 워크플로 노드를 빠르게 익히며 실전 예제를 만들고 싶을 때
- LLM 호출, 조건 분기, 파일 처리, 반복 실행, 템플릿 출력을 한 워크플로에서 학습하고 싶을 때
참고 자료
- 30-Minute Quick Start — Dify Docs (2026-05-14)