노드 유형

TongFlow의 노드는 여섯 그룹으로 나뉩니다. AddModality 노드는 캔버스 위에서 자료를 담아 두는 노드이고, 나머지는 그 자료를 다루는 노드입니다.

공식 목록은 tongflow 저장소config/tongflow.abi.json에 있으며, 이 페이지는 그 현재 상태를 반영합니다.

Add (노드 7개)

Add 노드는 새 자료를 캔버스에 올립니다. 생성 모드에서 스마트 아일랜드의 추가 툴바로 선택합니다:

노드아이콘하는 일
addTextNodeType노드 본문에 텍스트를 직접 입력
addImageNodeImage파일 업로드, 카메라 촬영, 스케치 그리기 — 이미지 하나를 출력
addAudioNodeMusic오디오 파일 업로드 또는 마이크 녹음
addVideoNodeVideo영상 파일 업로드 또는 카메라 녹화
addFileNodeFileText문서 업로드(PDF / DOCX / TXT / MD)
addLinkNodeLinkURL 붙여넣기 — 페이지 내용을 텍스트로 가져옴
addModelNodeBox3D 모델 파일 업로드(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프리셋 음성으로 TTSQwen3
text-gen-speech-clone참조 음성으로 TTS(음성 복제)Qwen3
text-gen-speech-instruct스타일 지시가 있는 TTSQwen3
text-audio-gen-speech텍스트와 참조 오디오를 함께 쓰는 TTSQwen3
transcribe, transcribe-timestamp오디오 / 영상 → 텍스트(타임스탬프 선택 가능)Qwen3
denoise_audio노이즈 제거백엔드
separate_speaker화자 분리백엔드
separate_audio_track, separate-video-audio영상에서 오디오 분리로컬 (FFmpeg)
convert_voice음성 / 음색 교체Qwen3

크로스모달 브리지

노드 슬롯설명
parse-document문서 → 텍스트
linkURL → 텍스트
이미지 → 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.mddocs/plugins.md를 참고하세요. 순서는 다음과 같습니다:

  1. config/tongflow.abi.json에 슬롯 정의를 추가합니다.
  2. 타입을 재생성합니다: pnpm gen:abi.
  3. @node_slot 데코레이터와 그에 맞는 Pydantic 모델로 plugins/ 아래에 플러그인을 구현합니다.
  4. Python SDK 핀을 올리고, 게시하고, Modal에 재배포합니다.

관련 문서