노드 유형
TongFlow의 노드는 여섯 그룹으로 나뉩니다. Add와 Modality 노드는 캔버스 위에서 자료를 담아 두는 노드이고, 나머지는 그 자료를 다루는 노드입니다.
공식 목록은 tongflow 저장소의 config/tongflow.abi.json에 있으며, 이 페이지는 그 현재 상태를 반영합니다.
Add (노드 7개)
Add 노드는 새 자료를 캔버스에 올립니다. 생성 모드에서 스마트 아일랜드의 추가 툴바로 선택합니다:
| 노드 | 아이콘 | 하는 일 |
|---|---|---|
addTextNode | Type | 노드 본문에 텍스트를 직접 입력 |
addImageNode | Image | 파일 업로드, 카메라 촬영, 스케치 그리기 — 이미지 하나를 출력 |
addAudioNode | Music | 오디오 파일 업로드 또는 마이크 녹음 |
addVideoNode | Video | 영상 파일 업로드 또는 카메라 녹화 |
addFileNode | FileText | 문서 업로드(PDF / DOCX / TXT / MD) |
addLinkNode | Link | URL 붙여넣기 — 페이지 내용을 텍스트로 가져옴 |
addModelNode | Box | 3D 모델 파일 업로드(GLB / GLTF) |
Add 유형은 11개가 아니라 7개입니다. 예전 문서에서는 “이미지 추가”와 “이미지 촬영(카메라)“을 별개 노드로 셌지만, 둘은 같은 addImageNode 안의 모드입니다.
변환
각 변환은 입력 모달리티 하나를 받아 다른 모달리티를 만들어 냅니다. 백엔드 모델이나 외부 LLM에 연결되어 동작합니다.
텍스트 변환
| 노드 슬롯 | 설명 | 백엔드 |
|---|---|---|
gen-text | 프롬프트로 텍스트 생성 또는 다시 쓰기 | OpenRouter / Gemini / OpenAI / DeepSeek (설정 가능) |
combine-text | 여러 텍스트 입력을 하나로 병합 | 로컬 |
split-text | 긴 글을 청크로 분할 | 로컬 |
이미지 변환
| 노드 슬롯 | 설명 | 백엔드 모델 |
|---|---|---|
image-gen-text | 텍스트 → 이미지 | Z-Image |
image-gen | 이미지 → 편집된 이미지(전체 프레임) | Z-Image |
image-gen-model | 모델 조건부 이미지 생성 | 설정 가능 |
image-edit | 인페인팅 / 지시 기반 편집 | FLUX.2 Klein 9B |
image-fusion | 다중 레퍼런스 블렌딩 | FLUX.2 Klein 9B |
image-describe | 이미지 → 텍스트(캡션 / Q&A) | Gemma 4 (멀티모달) |
image-upscale | 이미지 업스케일 | SeedVR2 |
영상 변환
| 노드 슬롯 | 설명 | 백엔드 |
|---|---|---|
gen-video, text-gen-video | 텍스트 → 영상 | LTX-2 |
image-gen-video | 이미지 → 영상 | LTX-2 |
image-image-gen-video | 첫 프레임 + 마지막 프레임 → 영상(보간) | LTX-2 |
video-image-gen-video-mix, wan-animate-mix | 이미지 + 영상 → 캐릭터 교체 / 장면 믹스 영상 | WAN Animate |
video-image-gen-video-move, video-image-move-animal | 모션 전이(피사체는 한쪽에서, 모션은 다른 쪽에서) | WAN Animate (move 변형) |
audio-image-gen-video | 오디오 + 이미지 → 토킹 헤드 / 움직이는 인물 | LTX-2 / WAN |
video-describe, video-gen-text | 영상 → 텍스트(요약 / 캡션) | Gemma 4 |
video-upscale | 영상 업스케일 | SeedVR2 |
get-first-frame, get-last-frame | 프레임 하나 추출 | 로컬 (FFmpeg) |
subtitle_remove | 화면에 입혀진 자막 제거 | 백엔드 |
remove_watermark | 워터마크 제거 | 백엔드 |
오디오 변환
| 노드 슬롯 | 설명 | 백엔드 |
|---|---|---|
gen-music | 텍스트 → 음악 | ACE-Step |
text-gen-speech-preset | 프리셋 음성으로 TTS | Qwen3 |
text-gen-speech-clone | 참조 음성으로 TTS(음성 복제) | Qwen3 |
text-gen-speech-instruct | 스타일 지시가 있는 TTS | Qwen3 |
text-audio-gen-speech | 텍스트와 참조 오디오를 함께 쓰는 TTS | Qwen3 |
transcribe, transcribe-timestamp | 오디오 / 영상 → 텍스트(타임스탬프 선택 가능) | Qwen3 |
denoise_audio | 노이즈 제거 | 백엔드 |
separate_speaker | 화자 분리 | 백엔드 |
separate_audio_track, separate-video-audio | 영상에서 오디오 분리 | 로컬 (FFmpeg) |
convert_voice | 음성 / 음색 교체 | Qwen3 |
크로스모달 브리지
| 노드 슬롯 | 설명 |
|---|---|
parse-document | 문서 → 텍스트 |
link | URL → 텍스트 |
| 이미지 → 3D (준비 중) | 이미지 → 3D 모델 |
조합
조합 노드는 입력 여러 개를 받아 출력 하나를 만듭니다.
| 노드 슬롯 | 입력 | 출력 |
|---|---|---|
image-fusion | 이미지 N개 | 블렌딩된 이미지 하나 |
audio-video-lip-sync | 오디오 + 영상 | 오디오 기반 립싱크 (InfiniteTalk) |
speech-video-gen-video | 영상 + 텍스트(대상 대사) | 텍스트 기반 립 더빙 (LTX LipDub) |
| 기타 립싱크 계열 | 오디오 + 이미지 / 텍스트 / 이미지+영상 | 영상 생성 또는 합성 |
speech-image-video-gen-video | 음성 + 이미지 + 영상 | 합성 영상 |
speech-text-gen-video | 음성 + 텍스트 | 영상 |
convert_voice (조합 형태) | 텍스트 + 참조 오디오 → 음성 | 복제된 음성 |
combine-text | 텍스트 노드 N개 → 하나 |
헬퍼
| 노드 슬롯 | 설명 |
|---|---|
concat-videos | 여러 클립을 순서대로 이어 붙이기 |
merge-video-audio | 오디오 + 영상을 파일 하나로 먹싱 |
split-video | 장면 경계로 자르기(장면 감지) |
separate-video-audio | 별도 트랙으로 분리 |
extract-audio | 영상에서 오디오 트랙 추출 |
split-text | 긴 텍스트를 청크로 나누기 |
combine-text | 텍스트 조각 병합 |
drop-video | 규칙에 따라 클립 필터링 / 제거 |
arrange-group | 다운스트림 일괄 처리를 위한 클립/텍스트 그룹화·배열 |
타입 검사 방식
연결 검증은 ABI가 담당합니다. 출력 핸들을 입력 핸들로 드래그하면 시스템이 모달리티와 형태가 맞는지 확인합니다 — 텍스트를 받는 입력에 영상을 넣으려 하면 엣지가 연결되지 않습니다. src/generated/abi/index.ts에 생성되는 TypeScript 타입이 컴파일 타임에 캔버스와 워크플로 익스포터의 일관성을 지켜 줍니다.
직접 노드 추가하기
필요한 변환이 목록에 없다면 직접 연결해 넣을 수 있습니다. tongflow 저장소의 docs/feature-registry.md와 docs/plugins.md를 참고하세요. 순서는 다음과 같습니다:
config/tongflow.abi.json에 슬롯 정의를 추가합니다.- 타입을 재생성합니다:
pnpm gen:abi. @node_slot데코레이터와 그에 맞는 Pydantic 모델로plugins/아래에 플러그인을 구현합니다.- Python SDK 핀을 올리고, 게시하고, Modal에 재배포합니다.
