파트너십

n8n과 TwelveLabs로 비디오 분석 및 시맨틱 검색 자동화하기

조던 우즈(Jordan Woods), 브라이스 펜벤(Brice Penven), 제임스 러(James Le)

개발자는 n8n과 TwelveLabs를 활용하여 별도의 맞춤형 통합 코드 없이도 즉시 상용화 가능한 비디오 AI 워크플로우를 구축할 수 있습니다. 여기에는 S3 인제스천 파이프라인을 통한 컴플라이언스 비디오 검수, 요약, 챕터 생성 및 하이라이트 분석(Airtable 저장) 병렬 처리 과정과, 브랜드 맞춤형 결과 페이지를 제공하는 시맨틱 비디오 검색 인터페이스가 포함됩니다.

개발자는 n8n과 TwelveLabs를 활용하여 별도의 맞춤형 통합 코드 없이도 즉시 상용화 가능한 비디오 AI 워크플로우를 구축할 수 있습니다. 여기에는 S3 인제스천 파이프라인을 통한 컴플라이언스 비디오 검수, 요약, 챕터 생성 및 하이라이트 분석(Airtable 저장) 병렬 처리 과정과, 브랜드 맞춤형 결과 페이지를 제공하는 시맨틱 비디오 검색 인터페이스가 포함됩니다.

목차

No headings found on page

뉴스레터 구독하기

뉴스레터 구독하기

영상 이해 분야의 최신 기술 업데이트, 튜토리얼 및 인사이트를 받아보세요.

영상 이해 분야의 최신 기술 업데이트, 튜토리얼 및 인사이트를 받아보세요.

AI로 영상을 검색하고, 분석하고, 탐색하세요.

2026. 2. 17.

25분

링크 복사하기

1 - 개요


1.1 - n8n 개요: 기술 팀을 위해 구축된 자동화

n8n은 시각적인 노드 기반 인터페이스를 통해 애플리케이션, API, 서비스를 연결하는 오픈 소스 워크플로우 자동화 플랫폼입니다. 기존의 여러 자동화 도구와 달리, n8n은 개발자와 기술 팀에게 데이터와 로직에 대한 완전한 제어권을 부여하며, 자체 호스팅(Self-hosting) 또는 클라우드 실행 모두를 지원하는 유연성을 제공합니다.

이 플랫폼은 AI 서비스와 기존 비즈니스 시스템 간의 격차를 메워주기 때문에 AI 기반 유스케이스에서 강력한 트랙션을 얻고 있습니다. 400개 이상의 사전 빌드된 통합 기능과 커스텀 코드 지원을 통해 n8n은 팀이 인프라를 처음부터 구축하고 유지 관리할 필요 없이 복잡한 AI 워크플로우를 오케스트레이션할 수 있도록 지원합니다.

특히 비디오 AI 분야에서 n8n은 복잡하지만 필수적인 워크플로우 단계를 처리하는 데 최적화되어 있습니다. 스토리지 시스템 간의 미디어 이동, 분석 작업 트리거, 재시도 및 실패 처리, 모델 출력 파싱, 그리고 결과를 MAM(미디어 자산 관리)이나 데이터베이스 같은 운영 도구로 다시 라우팅하는 작업 등을 매끄럽게 수행합니다.

AI 구현에서 n8n을 진정으로 강력하게 만드는 것은 여러 단계를 함께 체이닝하고, 오류 복구를 관리하며, 다양한 포맷 간에 데이터를 변환하는 기능입니다. 기술 팀은 요구사항이 진화함에 따라 이 모든 과정을 시각적 인터페이스를 통해 신속하게 반복하고 적응시킬 수 있습니다.


1.2 - TwelveLabs + n8n을 선택해야 하는 이유: 비디오 AI의 프로덕션 도입 가속화

TwelveLabs는 API를 통해 최첨단 멀티모달 비디오 이해 기능을 제공하지만, 단순히 API를 호출하는 것은 첫 단계에 불과합니다. 실제 비디오 워크플로우는 복잡합니다. 콘텐츠는 MAM에 흩어져 있고, 분석 결과는 데이터베이스에 기록되어야 하며, 컴플라이언스 팀은 그들만의 도구를 사용하고, 검색 기능은 기존 애플리케이션 내부에서 작동해야 합니다.

n8n은 TwelveLabs와 귀사의 시스템 간의 연결을 체계적으로 조율하여 이 문제를 해결합니다. 각 플랫폼에 맞는 커스텀 통합 코드를 작성하는 대신, n8n이 제공하는 사전 빌드된 커넥터와 유연한 로직을 활용해 비디오 URL을 TwelveLabs로 전송하고, 반환된 데이터를 처리하여 결과가 필요한 곳으로 정확히 라우팅할 수 있습니다.

이를 통해 프로덕션 출시 기간을 획기적으로 단축할 수 있습니다. TwelveLabs 고객은 미디어 라이브러리에 메타데이터를 풍부하게 채우거나, 컴플라이언스 검토를 자동화하거나, 내부 앱에 시맨틱 검색을 추가하는 작업 등 비디오 AI를 실제 워크플로우에 몇 달이 아닌 단 몇 일 만에 연결할 수 있습니다.


1.3 - 대상 독자

이 튜토리얼은 대규모 비디오를 다루며 기존 도구와 원활하게 통합되는 실용적인 자동화가 필요한 기술 팀을 위해 작성되었습니다.

  • 미디어 및 엔터테인먼트 전문가 (제작, 포스트 프로덕션, 방송): 대규모 라이브러리 전체에서 비디오 분석, 콘텐츠 모더레이션, 메타데이터 보강 작업을 자동화하고자 하는 분.

  • 내부 비디오를 관리하는 엔터프라이즈 팀 (사내 커뮤니케이션, 마케팅, 교육): 더 나은 검색, 정리 및 컴플라이언스 워크플로우를 추가하고자 하는 분.

  • 비디오 애플리케이션을 구축하는 플랫폼 및 엔지니어링 팀: AI 인프라를 직접 관리하지 않고도 시맨틱 검색, 추천 또는 자동 분석 기능을 임베딩하고자 하는 분.

  • 시스템 통합(SI) 업체 및 솔루션 아키텍트: 다양한 클라이언트 환경에서 비디오 AI 프로젝트를 효율적으로 완수하고자 하는 분.

  • API 및 워크플로우 실무자 (시각적 또는 코드 기반): 프로덕션 수준의 비디오 AI를 필요한 유연성에 맞게 스택에 연결하고자 하는 분.


2 - 주요 작업 (Key Operations)

TwelveLabs n8n 커뮤니티 노드는 인덱스 생성 및 비디오 업로드부터 분석 및 인사이트 생성에 이르기까지 전체 비디오 AI 워크플로우를 처리하는 세 가지 핵심 리소스 그룹을 제공합니다. 각 리소스에는 프로덕션 비디오 워크플로우의 일반적인 작업에 매핑되는 특정 기능들이 포함되어 있습니다.


2.1 - 인덱스(Index) 리소스: 검색 가능한 비디오 인덱스 관리

인덱스 리소스를 사용하면 비디오가 저장되고 처리되는 기본 컨테이너를 생성하고 관리할 수 있습니다.

  • 인덱스 생성(Create Index) – AI 모델을 사용해 검색 가능한 새 인덱스를 설정합니다. 인덱스를 구동할 모델(Pegasus Plus 또는 Marengo Plus)을 선택하고, 모델 전용 옵션을 구성하고, 유스케이스에 필요한 에드온을 활성화할 수 있습니다.

  • 인덱스 목록 조회(List Indexes) – 계정 내의 모든 인덱스를 검색하여 이미 생성된 인덱스를 확인하고 여러 프로젝트나 환경을 관리할 수 있습니다.

  • 이름으로 인덱스 검색(Search Index by Name) – 특정 비디오 컬렉션이나 프로젝트를 대상으로 워크플로우를 구축할 때 유용하게 특정 인덱스를 이름으로 신속하게 찾습니다.


2.2 - 비디오(Video) 리소스: 인덱스 내 비디오 업로드 및 관리

비디오 리소스는 콘텐츠를 인덱스에 입력하고 상태를 추적하는 실무적인 작업을 처리합니다.

  • 비디오 업로드(Upload Video) – 유연한 입력 옵션으로 인덱스에 비디오를 추가합니다. 비디오 파일을 직접 업로드하거나 비디오 URL을 제공할 수 있습니다(S3와 같은 클라우드 스토리지에 콘텐츠가 이미 있는 경우 권장). 업로드된 비디오는 자동으로 처리되어 인덱싱됩니다.

  • 비디오 목록 조회(List Videos) – 특정 인덱스에 저장된 모든 비디오를 조회합니다. 이 작업은 비디오 메타데이터와 처리 상태를 반환하므로, 비디오가 분석 동작을 수행할 준비가 되었는지 확인하고 수집 진행 상황을 추적할 수 있습니다.


2.3 - 분석(Analysis) 리소스: 비디오에서 AI 기반 인사이트 확보

분석 리소스는 인덱싱된 비디오 콘텐츠에서 즉시 활용 가능한 인텔리전스를 도출해냅니다.

  • 요약 생성(Generate Summary) – 맞춤형 요약 유형과 조정 가능한 프롬프트 템플릿을 사용하여 비디오 콘텐츠의 간결한 요약을 생성합니다. 긴 비디오를 신속하게 파악하거나 메타데이터용 설명글을 작성할 때 유용합니다.

  • 챕터 생성(Generate Chapters) – 스마트 챕터 감지 기능을 사용해 비디오를 여러 챕터로 자동 분할합니다. 결과에 타임스탬프가 지정된 세그먼트가 포함되어 있어 긴 콘텐츠를 편리하게 탐색하거나 구조화된 개요를 구성할 수 있습니다.

  • 하이라이트 생성(Generate Highlights) – 중요한 장면을 식별하여 비디오에서 핵심 순간을 추출합니다. 이를 통해 하이라이트 영상이나 클립 모음집을 만들거나 미디어 라이브러리에서 가장 관련성 높은 부분을 표면화할 수 있습니다.


3 - 기본 워크플로우 데모: S3에서 메타데이터까지


3.1 - 워크플로우 개요

이 워크플로우는 S3에서 비디오를 가져와 TwelveLabs로 분석하고, 보강된 메타데이터를 Airtable에 저장하는 엔드투엔드(End-to-End) 비디오 AI 자동화를 보여줍니다.


사전 준비 단계

시작하기 전에 다음 사항이 구비되어 있는지 확인하세요:

  • n8n 계정 (클라우드 또는 자체 호스팅)

  • S3 접근 권한이 있는 AWS 계정

  • TwelveLabs 계정 및 API 키

  • Airtable 계정


파이프라인 아키텍처

워크플로우는 크게 세 단계로 구성됩니다.

1. TwelveLabs로 인덱싱

  • S3 버킷에서 비디오 파일 가져오기

  • Lambda를 통해 pre-signed URL(사전 서명된 URL) 생성

  • 중복 URL 제거

  • TwelveLabs에서 비디오 인덱싱

2. TwelveLabs로 비디오 분석

  • 4가지 분석 영역을 병렬로 실행:

    • 컴플라이언스(Compliance): 플랫폼 정책(YouTube ABCD 프레임워크)에 유해한 콘텐츠 검출

    • 요약(Summary): 핵심 주제 및 개요 추출

    • 챕터(Chapters): 타임스탬프가 할당된 세그먼트 생성

    • 하이라이트(Highlights): 주요 명장면 추출

  • 결과 머지 및 컴플라이언스 상태 파싱

  • 데이터베이스 저장에 적합한 데이터 구조화

3. 결과 저장

  • 태그 및 메타데이터를 포함하여 Airtable에 Upsert(업데이트 또는 삽입)

  • 실제 작동 환경(Production)에서 결과는 대개 MAM, SQL/NoSQL 데이터베이스 또는 클라우드 데이터 플랫폼으로 전송됩니다.


핵심 기술 패턴
  • Pre-signed URL - AWS 자격 증명을 외부에 노출하지 않고 TwelveLabs와 비공개 S3 파일을 안전하게 공유할 수 있습니다.

  • 병렬 처리 - 4개의 분석 작업을 동시에 실행한 뒤 결과를 하나로 머지합니다.

  • Upsert 로직 - Airtable 레코드를 지능적으로 생성하거나 정정하여 대상을 업데이트합니다(재실행 시 중복 방지).

  • 상태 파싱 - AI가 생성한 텍스트에서 구조화된 컴플라이언스 상태를 정확히 추출합니다.


3.2 - 설정: 트리거 및 S3 연동


1단계: 수동 트리거(Manual Trigger) 생성

  1. n8n을 열고 "New Workflow"를 클릭합니다.

  2. "+" 버튼을 클릭하여 첫 노드를 추가합니다.

  3. "Manual Trigger"를 검색하고 선택합니다.

수동 트리거는 워크플로우를 시작하는 "시작" 버튼 역할을 수행합니다. n8n에서 "Execute Workflow"를 클릭하면, 이 노드가 활성화되어 하위 노드들을 실행합니다.

💡 프로덕션 팁: 정상적으로 동작하는 것을 확인한 뒤에는 Schedule Trigger(지정 주기 실행), Webhook Trigger(타사 연동 실행), 혹은 S3 Trigger(새 파일 업로드 시 실행) 같은 자동화 트리거로 전환하세요.


2단계: S3에서 비디오 가져오기

  1. Manual Trigger 노드에서 "+" 버튼을 클릭합니다.

  2. "AWS S3"를 검색하고 선택합니다.

  3. 노드를 설정합니다:

    • Operation: "Get Many" 선택

    • Bucket Name: 귀사의 버킷 이름 입력 (예: my-video-bucket)

    • Return All: 토글 스위치 켬 (ON)

  4. "Credentials"를 클릭하고 AWS 인증 정보를 입력합니다:

    • AWS Access Key ID 입력

    • AWS Secret Access Key 입력

    • 해당 리전 선택

이 과정은 S3 버킷에 있는 모든 파일의 메타데이터(키/경로, 크기, 최종 수정 타임스탬프)를 수집합니다. 실제 비디오 데이터를 다운로드하는 방식이 아니므로(인프라 비용 단축 및 속도 개선) 안전하며, 접근 링크 생성에 필요한 정보만을 조회합니다.

⚠️ 권한 확인: 사용하는 AWS 계정이 s3:ListBucket 및 s3:GetObject 권한을 보유하고 있는지 확인하세요. "Access Denied" 발생 시 IAM 정책을 검토해야 합니다.


3단계: 안전한 보안 접근 링크 생성

TwelveLabs가 비디오를 수집하려면 접근 권한이 필요하지만, S3 버킷은 비공개(Private) 상태여야 안전합니다. 이때 임시 보안 링크 역할을 하는 pre-signed URL(1시간 동안 유효)을 사용하면 별도의 AWS 자격 증명 공유 없이 해결할 수 있습니다.

  1. S3 노드에서 "+" 버튼을 클릭합니다.

  2. "AWS Lambda"를 검색하고 선택합니다.

  3. 노드를 설정합니다:

    • Function: 귀사의 Lambda 함수 ARN 선택 또는 직접 붙여넣기

    • Payload: "Add Expression"을 클릭하고 다음 내용을 입력합니다:

{{ JSON.stringify({ 
  bucketName: "your-bucket-name", 
  files: $input.all().map(item => item.json), 
  expiresIn: 3600 
}) }}

구현한 Lambda 함수는 각 파일에 대해 루프를 돌며 AWS SDK를 사용하고 pre-signed URL을 생성하여 n8n에 전체 URL 리스트를 반환하게 됩니다.

💡 Lambda를 사용하는 이유: n8n은 직접 자격증명을 실행하여 pre-signed URL을 생성하기 어려우므로 서버사이드 상의 AWS SDK를 기동할 수 있는 Lambda가 이 과정을 안전하게 대신 수행합니다.


4단계: URL 데이터 분석 및 정제

  1. Lambda 노드에서 "+" 버튼을 클릭합니다.

  2. "Code" 노드를 검색하고 선택합니다.

  3. 다음 코드를 붙여넣습니다:

// Parse Lambda response and remove duplicates
const seenKeys = new Set();
const results = [];

for (const item of $input.all()) {
  const response = JSON.parse(item.json.result.body);
  
  for (const file of response.files) {
    if (!seenKeys.has(file.Key)) {
      seenKeys.add(file.Key);
      results.push({
        json: {
          Key: file.Key,
          presignedUrl: file.presignedUrl,
          Size: file.Size,
          LastModified: file.LastModified,
          expiresIn: file.expiresIn
        }
      });
    }
  }
}

return results;

이 코드는 Lambda 응답(문자열 형태)을 분석하고 중복된 오브젝트를 Set 구조를 활용해 제거하여, 비디오 파일별로 정제된 n8n 아이템을 하나씩 반환합니다.


3.3 - TwelveLabs에서 비디오 인덱싱

이제 각 비디오를 AI 분석 처리를 위해 TwelveLabs 인덱스에 실시간 업로드합니다.

  1. Code 노드에서 "+" 버튼을 클릭합니다.

  2. "TwelveLabs"를 검색하고 선택합니다.

  3. 노드를 설정합니다:

    • Operation: "Upload URL" 선택

    • Index ID: 귀사의 TwelveLabs 인덱스 ID 입력 (TwelveLabs 대시보드에서 파악 가능)

    • Video URL: "Add Expression"을 누른 뒤 {{ $json.presignedUrl }}을 입력합니다.

  4. TwelveLabs API 인증 자격 증명을 추가합니다.


인덱스 대상 정보

TwelveLabs는 업로드된 각 영상을 다음 분석을 위해 가공합니다:

  • 시각적 요소 분석 - 오브젝트, 인물, 액션, 장면 구성, 색상, 배치 등

  • 오디오 받아쓰기 - 음성 화자 대화, 문맥 분석 및 나레이션

  • 화면 텍스트 검출 - 매 프레임별 글자를 분석하는 OCR 기법 동작

  • 임베딩 벡터화 - 인공지능 시맨틱 검색을 활용하기 위한 고차원 표현 데이터 가공

이 단계를 거치면 후속 분석에 사용하기 위한 고유 키인 videoId가 반환됩니다.

⏱️ 시간 소요 안내: 인덱싱 과정은 비디오 분량에 밀접한 상관관계가 있습니다(평균적으로 1분 분량 영상당 1~3분 내외 소요). n8n 노드는 처리가 끝날 때까지 대기합니다.


3.4 - 병렬 분석 프로세스 구성

효율성을 극대화하기 위해 순차적으로 기다리지 않고 4가지 갈래의 분석 작업을 동시에 조율해보겠습니다.



병렬 브랜치 수립

TwelveLabs 인덱싱 노드 출력에서 시작하여 각각 서로 다른 옵션을 가진 네 개의 분석 노드로 브랜치를 가닥 지어 연동합니다.

  1. "Index to TwelveLabs" 노드의 아웃풋에서 드래그하여 선을 연결합니다.

  2. 첫 번째 TwelveLabs Analysis 노드를 인스턴스화합니다.

  3. 세 번 더 실행하여 총 4개의 병격 가동 노드를 완성합니다.


사용 분석 유형 비교

각 분석 노드는 기본 뼈대는 일치하지만 전달할 세부 프롬프트가 다릅니다.

1 - 컴플라이언스 분석(Compliance Analysis)

  • 활용처: YouTube 기준 ABCD 프레임워크 기준을 맞춰 정책 필터링 수행

  • 반환 포맷: 상태 정보 (통과/검토필요/탈락) 및 원인이 된 구간 타임스탬프 상세 목록

컴플라이언스 분석 프롬프트 (Compliance Analysis Prompt):

Analyze this video for content compliance using YouTube's ABCD framework:

**A - Adult Content:**
- Nudity or sexual content
- Sexually suggestive content
- Adult themes

**B - Brand Safety:**
- Inflammatory or demeaning content
- Hateful content targeting protected groups
- Harmful or dangerous acts
- Shocking or graphic content
- Profanity and crude language

**C - Copyright:**
- Copyrighted music, video, or images
- Unlicensed third-party content

**D - Dangerous/Harmful:**
- Violence or graphic content
- Drugs, dangerous products, or substances
- Firearms and weapons
- Misinformation (health, elections, etc.)

For each flagged issue, provide:
1. **Timestamp**: When it appears
2. **Category**: A, B, C, or D
3. **Issue**: Brief description
4. **Action**: Allow, Restrict (age-gate), Monetization off, or Remove

**Output:**


2 - 요약 분석(Summary Analysis)

  • 활용처: 주요 중심 스토리와 전개 분석

  • 반환 포맷: 3~4개의 간결한 단락 구성 요약본

요약 분석 프롬프트 (Summary Analysis Prompt):



3 - 챕터 분할 분석(Chapters Analysis)

  • 활용처: 내용 분기점 검색에 기반한 타임라인 구분

  • 반환 포맷: 소주제별 시작 시간표 구조 및 챕터별 세부 요약

챕터 분석 프롬프트 (Chapters Analysis Prompt):



4 - 하이라이트 분석(Highlights Analysis)

  • 활용처: 시선 집중도가 높은 주목도 높은 구간 발굴

  • 반환 포맷: 하이라이트 지점 및 선정 배경 사유

하이라이트 분석 프롬프트 (Highlights Analysis Prompt):



기초 공통 사양 디자인

4개 개별 분석 컴포넌트에 적용하는 필수 설정 파라미터입니다:

  • Operation: "Generate" 또는 "Analysis" 적용

  • Index ID: {{ $json.indexId }}

  • Video ID: {{ $json.videoId }}

  • Temperature(온도): 0.2 권장 (값이 낮을수록 무작위성을 줄여 높은 정합성과 정형화된 추세의 답안 도출)


3.5 - 결과 병합 및 구조화


나누어졌던 병렬 구간 하나로 머지하기

  1. "+"를 누르고 "Merge"를 입력해 추가합니다.

  2. 노드를 세팅합니다:

    • Number of Inputs: 4로 변경 변경

  3. 인스턴스 분할 분석 아웃풋을 Merge 노드 인풋 위치에 알맞게 매칭시킵니다:

    • 컴플라이언스 (Compliance) → Input 1

    • 요약 (Summary) → Input 2

    • 챕터 (Chapters) → Input 3

    • 하이라이트 (Highlights) → Input 4

Merge 모듈은 일종의 배리어 통제소 역할을 맡아, 네 영역 모두의 AI 처리가 끝날 때까지 멈추고 기다렸다가 한 번에 흘려보냄으로써 불완전한 데이터 전송 현상을 미연에 예방합니다.


데이터 파이프라인 형태 빌딩

  1. Merge 완료 아웃풋 옆에 "+"을 눌러 Code 노드를 장착시킵니다.

  2. 코드를 가입시킵니다:

// Extract and organize all analysis results
const allItems = $input.all();
const videoId = allItems[0]?.json?.videoId || '';
const complianceResponse = allItems[0]?.json?.response || '';

// Parse compliance status from AI response
let complianceStatus = 'NEEDS REVIEW'; // Default

if (complianceResponse.includes('Overall Status: Suitable')) {
  complianceStatus = 'PASS';
} else if (complianceResponse.includes('Overall Status: Not Suitable')) {
  complianceStatus = 'FAILED';
} else if (complianceResponse.includes('Overall Status: Needs Review')) {
  complianceStatus = 'NEEDS REVIEW';
}

// Create structured output
const result = {
  videoID: videoId,
  'Compliance Status': complianceStatus,
  'Compliance report': complianceResponse,
  'Summary': allItems[1]?.json?.response || '',
  'Chapters': allItems[2]?.json?.response || '',
  'Highlights': allItems[3]?.json?.response || ''
};

return [{ json: result }];

이 코드의 역할은 다음과 같습니다:

  1. 정리가 쉽도록 video ID를 타겟 추출합니다.

  2. AI의 답변 문구를 검증하여 알맞은 컴플라이언스 기준 상태 판단 값을 계산해냅니다.

  3. Airtable의 Select 타입에 알맞은 규격화된 상태 값(PASS/FAILED/NEEDS REVIEW) 형식으로 규격화합니다.

  4. 4개 영역 결과를 평탄화(Flat Object) 작업을 해서 간명하고 깔끔하게 묶어냅니다.


3.6 - Airtable로 최종 마이그레이션 저장


저장소 데이터베이스(Base) 배치하기

  1. 사용하고 계시는 Airtable을 엽니다.

  2. 해당 칼럼 목록 필드를 선언합니다:

    • videoID (Single line text)

    • Compliance (Single select 구조 옵션 리스트: PASS, FAILED, NEEDS REVIEW 지정)

    • Compliance report (Long text)

    • Summary (Long text)

    • Chapters (Long text)

    • Highlights (Long text)


Airtable 매핑 노드 결합하기

  1. 코드 노드 다음 자리에 "+"를 누르고 "Airtable"을 검색해 붙입니다.

  2. 설치를 시작합니다:

    • Operation: "Upsert"로 선택 지정합니다. (신규는 주입하고 이미 존재하는 건 값을 업데이트 보정)

    • Base: 타겟 설정 Base 적용

    • Table: 매칭시킬 테이블 지정

  3. 변수 데이터를 필드로 매칭(Mapping)시킵니다:

    • videoID{{ $json.videoID }}

    • Compliance{{ $json["Compliance Status"] }}

    • Compliance report{{ $json["Compliance report"] }}

    • Summary{{ $json.Summary }}

    • Chapters{{ $json.Chapters }}

    • Highlights{{ $json.Highlights }}

  4. 실제 Matching Column(정합성 기준 컬럼 식별값) 항목에 videoID를 직접 지정해 줍니다.

Upsert 가동 알고리즘은 실용적 자원 관리를 보장합니다:

  • videoID 키가 DB에 존재하지 않은 경우 → 새 로우 행(Row)으로 입력

  • videoID 기준 키 속성이 확인된 기존 행 대상인 경우 → 중복 등록 없이 내용 필드 갱신

이 장치가 확보되었기에 매번 같은 영상을 테스트하며 발생 가능한 레코드 중복 난립을 완벽 차단할 수 있습니다.


3.7 - 파이프라인 실제 구동 테스트


최종 발송 전 점검 가이드라인

정상 테스트 진행을 위해 체크리스트를 점검하십시오:

  • [ ] 전체 블라인드 맵이 빠짐없이 차례로 연쇄 연결 구조를 띠고 있는지 여부

  • [ ] AWS 접근 권한 및 TwelveLabs의 인증 자격 증명이 유효한지 확인

  • [ ] 타겟 지향 ID 코드가 TwelveLabs 대시보드 구조의 목표 ID와 완전 동일한지 여부

  • [ ] TwelveLabs에서 비디오 인덱싱 작업이 완료되었는지 확인

  • [ ] Airtable의 테이블 필드 및 Base 규격 일지 확인

  • [ ] 전체 워크플로우에 대한 중간 내용 저장 완료 여부


워크플로우 가동 및 피드백 모니터링

  1. 우측 맨 끝 상단에 비치되어 있는 "Inactive" 상태 바를 토글하여 활성화 시킵니다.

  2. 핵심 "Execute Workflow" 작동단 버튼을 압축 전달합니다.

  3. 전체 흐름 진행 상황을 연계 그래프를 통해 직접 지켜봅니다.

  4. 모든 노드 우상단에 초록 체크마크 배지가 온전히 수두룩하게 뜨면 모든 절차 통과 완료를 의미합니다.


출력 기대 형태 설명

S3 노드: 파일 상세 속성의 세부 명세 데이터를 리스트 구조로 안전하게 리턴

Lambda 노드: 임시 공유 인가 pre-signed URL을 정상 파싱해 확보

Code 필터 노드: 중복 항목을 차단 소거하고 완전히 1건씩 정밀 가공해 통과시킴

TwelveLabs Index 노드: 업로드한 고유 대상 식별 번호 videoId 값 취득

4채널 개별 분석 액션 노드: 정해진 분석 질의 결과를 JSON 결과로 정조준 획득

Merge 노드: 동시 전송 시점 정렬 완료 후 안정적으로 통합해 반환

Code 최종 정리 노드: DB 칼럼 규격화 정의 파일로 데이터 전처리 작업 마무리

Airtable 보장 노드: 삽입 완료 확인 수신에 입각한 가맹 처리 확보


Airtable 데이터 삽입 적합도 확인

  1. 작동 완료 안내를 받고 Airtable을 엽니다.

  2. 지정한 데이터베이스 내역을 육안 전수 확인합니다:

    • 유일 식별값 (Video IDs)

    • 정밀 기계 판별 등급 (PASS / FAILED / NEEDS REVIEW 표시)

    • 타겟 필드별로 매칭 확인된 요약, 챕터 세부 리포트 텍스트 묶음


문제 발생 원인 및 장애 진단 가이드라인

현상

원인 분석

대응 방안

S3 노드 에러 정지

AWS 자격 증명 권한 미달

귀사의 IAM 정책 내에 s3:ListBuckets3:GetObject 권한이 탑재되어 있는지 재조율하세요.

Lambda 리턴 단 에러

AWS 상의 대상 정보 매치 불일치

AWS 콘솔에서 Lambda ARN 경로명이 정확히 타겟팅되어 있는지 대조 확인하세요.

TwelveLabs 업로드 가동 실패

지원하지 않는 Index ID 지정

TwelveLabs 콘솔에 접속해 계정 대시보드 지점의 ID 실체와 단순 복사값이 맞는지 일일이 맞추어 냅니다.

분석 데이터 유실

영상의 인덱스화 작업 대기 초과

가동 소요 시간이 정상 진행을 거치고 있는지 관리 영역(TwelveLabs)에서 상태 값을 체킹해 기다립니다.

Airtable 최종 기입 거절

필드 레이아웃 오차 발견

DB에 배치한 컬럼 영문명 알파벳의 대소문자가 정확히 한 자도 틀림없이 동일한 기입 상태인지 점검하세요.

Compliance status 겉돌거나 표기 미흡

필드 속성 사전 생성 누락

Airtable 필드 선택 생성자 옵션에 PASS, FAILED, NEEDS REVIEW를 대문자로 설정 구비해 둡니다.


작업 오류 분석 추적툴 이용 가이드

장애 구간 발굴 시 대처법:

  1. n8n 좌측에 배치된 "Executions" 로그를 호출해 열어봅니다.

  2. 최신 구동 이력 중 빨간 불이 뜬 장애 리스트를 체크 타겟팅합니다.

  3. 해당 노드 창을 확대해 분석 데이터를 직접 확인합니다:

    • 문제 부서에 전달된 상위 아웃풋 데이터 실적

    • 시스템이 뱉어낸 에러 상세 디버그 스택 트레이스 문장

    • 성능 소모 타임아웃 여부 등

💡 디버깅 꿀팁: 의심 지점에 일시적인 코드 정리 노드(Set / Code)를 꽂아두고 console.log(JSON.stringify($input.all(), null, 2))를 입력해 임시 출력되는 속성들을 직렬화 확인하여 문제를 한 걸음 더 빠르게 파악하세요.

축하합니다! S3에서 Airtable로 이어지는 비디오 AI 메타데이터 보강 워크플로우를 완벽하게 구비하였습니다. 처리된 데이터는 관리 부서의 유용한 챕터 검수 및 사내 아카이브로 온전히 기능하게 될 것입니다.


4 - n8n 및 TwelveLabs를 아우르는 영상 시맨틱 검색 전용 UI 웹 인터페이스 제작


4.1 - 워크플로우 개요

이 워크플로우는 TwelveLabs의 멀티모달 AI를 활용하고 전용 브랜드 컬러를 입힌 영상 시맨틱 검색 지원 전용 웹 인터페이스 환경을 구축합니다.


구축될 검색 엔진 파이프라인 아키텍처


구현되는 시맨틱 검색 파이프라인은 단 4개의 핵심 모듈로 압축 구성됩니다:

  1. Form Trigger - 사용자로부터 직접 검색 제어 질문 키워드를 수집하는 UI 창 제공

  2. TwelveLabs Search - 축적된 비디오 컬렉션 전체에서 질문 의미에 부합하는 구간을 파인딩하는 시맨틱 연산 구동

  3. Code - 복잡한 원천 JSON 아웃풋을 유려하고 보기 편한 HTML 그리드 뷰 화면으로 대조 변환

  4. Form Completion - 예브게 렌더링된 연산 결과물이 수록된 HTML 문서를 최종 브라우저 창에 출력


제작하는 최종 가치와 특징

  • 자유로운 문맥 언어 기반으로 입력 가능한 범용 퍼블릭 검색 웹 폼 UI를 확보할 수 있습니다.

  • 시각 내용물, 오디오 내레이션 음성 구술 내용, 화면 속 OCR 자막 내용 전체 영역 일괄 정밀 스캔 검색을 지원합니다.

  • 최적으로 정밀 선별된 Top 10 검색 영상의 타임라인 구간 정보, 썸네일 정보, 주변 보강 자막을 한 화면에 조율 렌더링 지원합니다.

  • 브랜드 디자인에 맞춤화된 자유도 높은 임베디드 CSS 스타일링 커스터마이징을 지원합니다.


테스트 환경 구비 내역

출발 전 유효 계정 보유 실태 점검:

  • n8n 서비스 계정 (클라우드 환경 또는 자체 인프라 설치 환경)

  • TwelveLabs 정규 개발용 API Key

  • 최소 1개 이상의 영상물이 온전히 인덱싱되어 준비를 끝마친 타겟 인덱스 확보

  • 가용한 타겟 비디오 처리가 올바르게 마무리되었는지 TwelveLabs 대시보드로 확인 필


4.2 - 인풋용 입력 Search Form 페이지 개설

사용자가 활용할 검색창을 구축하고 타겟 맞춤 스타일 디자인 요소를 결합하는 단계입니다.


Form Trigger 설정 설계

  1. n8n 환경에서 신규 빈 워크플로우를 소환합니다.

  2. 검색창에 "+"를 치고 첫 단계 모듈로 장착시킵니다.

  3. 설정 도구에서 "Form Trigger"를 타겟팅 지정합니다.

  4. 타겟 노드 디스플레이 레이블 선언:

    • Form Title: "TwelveLabs 시맨틱 비디오 검색 서비스" (프로젝트명 맞춤 정의 가능)

    • Form Description: 사용자를 위한 부가적인 입력 안내말을 작성합니다.

  5. 사용 질문 수집용 입력 자원 컴포넌트를 설계합니다:

    • "Add Field"를 눌러 영역 확보

    • Field Label: "검색어를 입력해 주세요"

    • Field Type: Text 데이터 속성 배정

    • Required(필수입력): 토글 온(ON) 지정


커스텀 브랜드 CSS 스타일 접목하기

  1. 정밀 Form Trigger 노드 구성 하단부로 드래그 연장해 "Options"로 진입합니다.

  2. "Add Option""Custom CSS" 순으로 추가합니다.

  3. 어두운 밤하늘 톤의 보라색 포인트 효과가 반영된 아래 CSS 값을 삽입합니다:

:root {
    /* Colors - Change these to match your brand */
    --color-background: #0A0B0D;
    --color-card-bg: #141518;
    --color-accent: #8B5CF6;
    --color-text: #FFFFFF;
    --color-text-secondary: #9CA3AF;

    /* Apply colors to form elements */
    --color-header: var(--color-text);
    --color-label: #E5E7EB;
    --color-submit-btn-bg: var(--color-accent);
    --color-submit-btn-text: var(--color-text);
    --color-focus-border: var(--color-accent);

    /* Styling */
    --font-family: 'Inter', 'Open Sans', sans-serif;
    --border-radius-card: 12px;
    --border-radius-input: 8px;
    --container-width: 520px;
}

body {
    background: linear-gradient(135deg, #0A0B0D 0%, #1A1B1F 100%);
    min-height: 100vh;
}

button[type="submit"]:hover {
    background: #7C3AED;
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(139, 92, 246, 0.4);
    transition: all 0.2s ease;
}
input:focus, textarea:focus {
    box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.2);
    transition: box-shadow 0.2s ease;
}


Form Trigger는 구동 즉시 외부에서 직접 입력 가능한 고유 웹 URL 채널 편성을 자율 배분 지원해 줍니다. 최종 저장 및 가동이 실행되면 내부 환경 경로 명칭(테스트 편람용 Test URL 및 전개 수립 배포용 Production URL)이 산출될 것입니다.

🎨 자유 구성 테마 제안: 브랜드 고유 로고 아이덴티티가 강조되는 전용 칼라 코드가 확보되어 있다면 핵스(#) 영역 색값을 직접 고쳐서 적용해보시기 바랍니다.


4.3 - 시맨틱 검색 쿼리 매칭 기획 및 데이터 정렬 수립


TwelveLabs 검색 엔진 통합

  1. Form Trigger 모듈 아웃풋 가동단 우측에 "+"를 조인합니다.

  2. "TwelveLabs"를 타겟 검출해 매칭 꽂기를 장착시킵니다.

  3. 세부 값을 배치 설계합니다:

    • Operation: "Search" 모드 전환 지점 선언

    • Index ID: 사용할 Index ID 고유 기입

    • Query Text: "Add Expression" 데이터 자동 연동 장치를 확보해 {{ $json["Search Query"] }}를 링크시킵니다.

  4. 보안 API 연결이 제대로 완성되었는지 연계 계정의 정상 구동 상태를 대조 선언해 완비해 줍니다.


TwelveLabs 멀티모달 시맨틱 핵심 구동 개괄

TwelveLabs는 3가지 고차원 분석 레이어를 동시에 탐색 활용합니다:

  • 시각적 물체 및 연출 행동 검색 - 등장 생명체, 주요 물건, 배경 환경 지각, 색상 패턴, 비디오 및 이미지 캔버스 위 글자(OCR)

  • 오디오 다각 추적 검색 - 등장 화자 독백, 스피치 어휘, 화제 의미 변곡점, 배경 오디오 톤, 음향 임베딩 효과성 검토

  • 지능융합 대화식 시맨틱 검색 - 시각 데이터와 사운드 정보가 복합 유기적으로 연관된 맥락 수준의 완전한 문맥 검출

검출된 시점에 따른 고유 정렬 데이터 아웃풋 양식:

  • video_id - 매칭된 부모 영상 분류 고유 키

  • start / end - 매칭 검색 지점의 초 단위 세부 구간 (정확한 시작 지점 지시 제어)

  • rank - 계산된 결과 밀집 추천성 정보 가중치 순서 (1등이 가장 일치도 우위)

  • confidence - 인공지능이 계산한 일치 확률 분류 등급 값 (High/Medium/Low 지향)

  • thumbnail_url - 해당 재생 구간의 실시간 생성 썸네일 이미지 CDN 주소

  • transcription - 연계 시점에 발음 기획된 대사 보조 텍스트 출력 데이터

TwelveLabs로부터 반환되는 표준 응답 JSON 결과 스키마 예시입니다:

{
  "data": [
    {
      "video_id": "6579a2c1d4b5e8f9a0123456",
      "start": 45.2,
      "end": 52.8,
      "rank": 1,
      "confidence": "high",
      "thumbnail_url": "https://thumbnails.twelvelabs.io/...",
      "transcription": "So let me explain how machine learning works..."
    },
    {
      "video_id": "6579a2c1d4b5e8f9a0789012",
      "start": 120.5,
      "end": 135.0,
      "rank": 2,
      "confidence": "medium",
      "thumbnail_url": "https://thumbnails.twelvelabs.io/...",
      "transcription": "Neural networks are inspired by the human brain..."
    }
  ]
}


정렬 raw JSON 결과 데이터를 예쁜 HTML 서식으로 조율하기

  1. TwelveLabs 모듈 아웃풋 옆에 신규 우측 "+"를 조인합니다.

  2. 웹 구조체 제작을 담당해 줄 n8n의 "Code" 컴포넌트를 소환 생성합니다.

  3. 다음 아래 수록된 렌더링용 자바스크립트 소스 전체를 교체해 기입해 줍니다:

const searchData = $input.first().json.data;
const top10 = searchData.filter(result => result.rank <= 10);

let resultsHTML = `
<table style="width: 100%; border-collapse: separate; border-spacing: 20px; margin: 20px 0;">
  <tr>
    <td colspan="4" style="text-align: center; padding-bottom: 20px;">
      <h2 style="color: #8B5CF6; font-size: 28px; margin: 0;">
        검색 결과 (가장 밀접한 후보 추천군 ${top10.length}개)
      </h2>
    </td>
  </tr>
`;

// Create 4-column grid
for (let i = 0; i < top10.length; i += 4) {
  resultsHTML += '<tr>';
  
  for (let j = 0; j < 4; j++) {
    if (i + j < top10.length) {
      const r = top10[i + j];
      resultsHTML += `
        <td style="width: 25%; vertical-align: top;">
          <div style="background: #141518;
                      border: 1px solid #2A2B30;
                      border-radius: 12px;
                      padding: 16px;
                      box-shadow: 0px 4px 12px rgba(139, 92, 246, 0.1);">
            
            <div style="position: relative; margin-bottom: 12px;">
              <span style="position: absolute;
                          top: 8px;
                          left: 8px;
                          background: #8B5CF6;
                          color: #FFFFFF;
                          padding: 6px 10px;
                          border-radius: 6px;
                          font-size: 14px;
                          font-weight: 600;
                          z-index: 10;">
                순위 #${r.rank}
              </span>
              
              <img src="${r.thumbnail_url}"
                   alt="Result ${r.rank}"
                   style="width: 100%;
                          height: 140px;
                          object-fit: cover;
                          border-radius: 8px;
                          display: block;"/>
            </div>
            
            <div style="color: #FFFFFF; font-size: 13px; margin-bottom: 6px;">
              <strong style="color: #FFFFFF;">동영상 식별 번호 (Video ID):</strong><br/>
              ${r.video_id.substring(0, 12)}...
            </div>
            
            <div style="color: #E5E7EB; font-size: 12px; margin-bottom: 6px;">
              <strong style="color: #FFFFFF;">구간 타임라인:</strong>
              ${r.start}초 - ${r.end}초
            </div>
            
            ${r.transcription ? `
              <div style="color: #D1D5DB;
                          font-size: 11px;
                          font-style: italic;
                          padding: 8px;
                          background: #1A1B1F;
                          border-radius: 6px;
                          margin-top: 8px;">
                "${r.transcription}"
              </div>
            ` : ''}
            
          </div>
        </td>
      `;
    } else {
      resultsHTML += '<td style="width: 25%;"></td>';
    }
  }
  
  resultsHTML += '</tr>';
}

resultsHTML += '</table>';
return [{ json: { html: resultsHTML } }];

이 자바스크립트는 수신된 검색 목록에서 최고 유사도 Top 10을 분류 후, 썸네일 이미지 및 비디오 고유 메타데이터가 알맞게 정비된 4열 격자 가로 배치 형태의 반응형 HTML 테이블을 실시간 생성합니다.


사용자 브라우저에 최종 결과 디스플레이 전송하기

  1. Code 구성부 우측 "+"를 조인합니다.

  2. "Form" 모듈을 선택하되, 이번에는 Form Trigger가 아닌 일반 "Form (Completion)" 액션을 지정해 마운트합니다.

  3. 하위 설정을 완비합니다:

    • Operation: "Completion" 타겟 지정

    • Completion Title: "매칭 분석 결과 확인"

    • Completion Message: "Expression" 기동 아이콘을 누르고 구조 변수 {{ $json.html }}를 연결 맵핑해 기입합니다.


결과 제공 화면 맞춤 디자인 설정

완성된 결과 리포팅 페이지가 검색창 홈 페이지와 완벽하게 조화되는 어두운 보라색 톤을 지탱하도록 같은 브랜드 CSS 양식을 탑재합니다:

  1. 마지막 모듈 화면 하단에 위치한 "Options"로 드래그 다운합니다.

  2. "Add Option""Custom CSS" 순으로 배치 장착합니다.

  3. 아래 CSS 소스를 넣어 줍니다:

:root {
    /* Colors */
    --color-background: #0A0B0D;
    --color-card-bg: #141518;
    --color-accent: #8B5CF6;
    --color-text: #FFFFFF;
    --color-html-text: #FFFFFF;

    /* Make the container full-width for better results display */
    --container-width: 100% !important;

    /* Typography */
    --font-family: 'Inter', 'Open Sans', sans-serif;
    --font-size-header: 24px;

    /* Borders */
    --border-radius-card: 12px;
}

body {
    background: linear-gradient(135deg, #0A0B0D 0%, #1A1B1F 100%);
    min-height: 100vh;
    color: #FFFFFF;
}

/* Force container to full width for grid layout */
.container, .form-container, .completion-container {
    max-width: 100% !important;
    width: 100% !important;
}

/* Ensure all text is visible on dark background */
div, p, span, strong, h1, h2, h3 {
    color: inherit !important;
}

검색 처리가 활발히 마무리되면 해당 Form Completion 모듈이 HTML 결과물 명세를 브라우저에 실시간 리다이렉트 렌더링 배포할 책임 장치를 지탱해 주게 됩니다. URL은 검색 폼 형태와 한 가닥으로 일관 연결됩니다.


4.4 - 테스트 절차 및 최종 자율 자가 검증


테스트 전 무장 결합 목록

테스트를 실행하기 전 다음 항목들이 준비되었는지 다시 한번 면밀히 체크하세요:

  • [ ] 전체 4개 노드가 일정한 직렬 라인 구조를 순서대로 확실히 이행하고 있는지 확인: Form Trigger → TwelveLabs → Code (Format HTML) → Form (Completion)

  • [ ] TwelveLabs 연동 인가 자격 토큰 연결 적합성 완료 여부

  • [ ] 사용 Index ID 코드가 TwelveLabs 개발 포탈 실체와 완벽하게 1:1 대응 일치하는지 여부

  • [ ] 타겟 영상이 정상 인덱싱되어 확보된 상태인지 검증 (인덱싱 미등록 영상은 검색에 포착되지 않습니다)

  • [ ] 워크플로우에 대한 최종 저장이 안전하게 달성되었는지 여부


구동 기점 확보 및 실시간 가동

  1. 우측 최상단에 마킹된 "Inactive" 스위치를 직접 눌러 "Active" 온 시켜 활성 상태를 선포해 줍니다.

  2. 제일 처음에 배치된 Form Trigger 구동단을 눌러 타겟 URL 라인을 조회합니다:

    • Test URL - 기능 검증 및 디버깅 시나리오 활용 용도

    • Production URL - 사내 배포 및 공유 업무 기동 활용 용도

  3. 해당 Test URL 문자 전단 주소를 복사해 빈 웹 브라우저 주소창에 기입하고 호출해 엽니다.

  4. 준비된 비디오 자료와 닿아 있는 자유도 높은 검색어를 가볍게 입력합니다. (예: "person explaining concepts" 등)

  5. 제출 버튼(Submit)을 전송한 뒤 화면 응답을 대기합니다 (안정 연산 3~5초 이내 달성 소요 예정).


정상 작동 흐름 보장 기준 상태 리스트

✅ 맞춤 브랜드 CSS를 탑재한 수려한 검색 인터페이스가 정상적으로 화면에 로딩되어 나타납니다.

✅ Submit 단추를 송원 전송한 직후, 매끄러운 수집 로딩 대기 알림창이 표출됩니다.

✅ 연동 추적이 가볍게 종료되면 영상 썸네일 구조를 반영한 최종 HTML 그리드가 전개됩니다.

✅ 후보 군마다 상세 지각 순위 랭킹 번호, 재생 위치 링크 구간, 번역 대사문이 균형 잡힌 배열로 완비되어 노출됩니다.


고장 요인 분석 및 해결 팁 일치 대조표

현상

확인 사항

처리 프로세스 권고

검색 웹 인터페이스 접속 불가

워크플로우 비활성 대기 중

n8n 우상단에 위치한 Active 버튼 스위치를 반드시 초록 불이 들어오게 켬(ON)으로 세팅하세요.

인터페이스 디자인 틀어짐

브라우저 캐시 침전

새로고침을 시행하거나 캐시 간섭을 피하기 위해 인코그니토(시크릿) 테스트창을 호출해 접근해 봅니다.

매칭 분석 타겟 없음 출력

미가용 Index ID 세팅

TwelveLabs 포털의 원본 식별 ID 표기와 모듈에 타이핑되어 있는 ID 문자열 구조가 맞는지 1:1 대조 보정하세요.

매칭 분석 타겟 없음 출력

대기 중이거나 아직 인덱싱 안 됨

TwelveLabs 계정 사이트에 들어가 해당 비디오 작업 현황 수치가 완연한 "Ready" 상태 값을 유지하고 있는지 조회하십시오.

매칭 분석 타겟 없음 출력

너무 가혹하고 복잡한 질의 단어 구성

영상이 실제로 담고 있을 보편성 위주의 직관적인 영문 단어 조합부터 가용 범위를 시도해 봅니다.

결과물이 raw JSON으로 투박하게 출력

동적 바인딩 스위치를 일반형 유지

Form Completion 모듈 환경의 입력값 우측에 마킹된 작은 "Expression" 제어 단추가 기동되어 활성화되었는지 체크하세요.

결과물이 {{ $json.html }} 코드로 출력

텍스트 입력 장치 상태 오작동

반드시 무지 막대 텍스트 형태(Plain)를 피하고 동적 구조 연동을 전담하는 Expression 상태로 변경 구사해야 합니다.

디자인 폰트 혹은 간격 파열 발견

옵션 누락

반드시 Form Trigger 노드와 Form Completion 노드 양쪽 모두의 CSS 옵션 창에 빠짐없이 CSS 코드가 삽입되어 있는지 재조율하세요.

결과는 뜨는데 썸네일이 정상 디스플레이 안 됨

토큰 유실 및 썸네일 주소 노화 거절

TwelveLabs 가동 측 API 응답 코드가 유효한지 확인하고, 해당 썸네일 주소를 복사해 별도로 띄워 세부 보안 문제를 확인하세요.

엉뚱한 쿼리 처리 현상 발생

잘못 설계된 변수 링크 매칭

TwelveLabs 노드의 Query Text 입력 부품에 연동 기재한 문장이 정확하게 {{ $json["Search Query"] }} 와 매치해 있는지 체크 배정하세요.


구축 파이프라인 버그 패널 활용 진단법

정상 작동 장애 지점 식별 가이드:

  1. n8n 좌측에 표기된 "Executions" 로그 판독판을 직접 호출해 봅니다.

  2. 방금 오차가 기록된 실행 번역(날짜 및 타임스탬프 이력 포함)을 표적 더블 클릭합니다.

  3. 발생 이상 지점 내부를 디버프 탐색해 봅니다:

    • 매칭 부품 입출구에 기록된 입 출력 데이터 속성 상태 점검

    • 컴포저가 보고해 준 구체적인 에러 안내 문구 해독

    • 모듈별 처리 시간 한계치 초과 기록 유무 파악

시스템에 문제 발생 시 즉각 어디가 고장을 일으켰는지에 관련 빨간색 신호를 직접 발굴 기동할 수 있어 수동 교정이 용이해집니다.

💡 고급 디버그 기법: TwelveLabs 와 HTML Code 블록 중간 갈망 영역에 일시 간섭 목적의 임시 Code 노드를 장착한 후 console.log(JSON.stringify($input.all(), null, 2)); return $input.all();를 탑재해 인가 시 처리되는 원자 데이터 전문의 온전한 형태를 즉각 추적해 내세요.


테스트 시도해 볼 만한 비디오 쿼리 샘플 제안 목록

영상이 가지고 있는 개성을 바탕으로 아래 쿼리들을 다양하게 시도해 보세요:

비디오 데이터에 수록된 내용물이...

쿼리에 다음과 같이 입력해 보세요

성공할 수 있는 탐색 이유 개관

사람이 말하거나 스피치 전개

"person speaking to camera"

영상 내 시각 거동과 발화 음성의 복합 판단

소개 지침 브리핑 및 제품 소개 데모

"showing how to use"

영상 속 사물 행동 조작 패턴과 맥락 스피치 교정 감지

자연경관 야외 드론 샷

"outdoor nature scene"

시스템이 지닌 환경 시나리오 분류기 매칭

프레젠테이션 프리포맷 슬라이드

"slides with charts"

차트 그래픽 지각 연산 장치 기능 및 OCR 분석 가맹

다자간 인터뷰 다큐멘터리

"two people conversation"

화면 내 인물 개수 인식 구조와 구술 질의 교차 파악

튜토리얼 안내

"step by step tutorial"

전체 기승전결 맥락 인지 가용 도출

브랜드 상징 로고 형상 노출

"logo on screen"

오브젝트 특정화 형상 지각 장치 연산 및 OCR


완성 파이프라인 흐름 도식 요약

함께 빌드해 낸 시맨틱 웹 서비스의 전체적인 흐름 구조는 다음과 같습니다:


시맨틱 비디오 검색 전용 웹 인터페이스의 핵심 빌딩 가이드를 마칩니다. 이제 사용자는 복잡한 전문 기술 용어 대신 보편적인 문장이나 정황 설명 형태의 자연어 질의를 입력하는 것만으로 원하는 아카이브 속 장면 구간 정보를 안전하고 직관적인 전용 웹 폼을 통해 시각 필터링하여 감상하고 관리할 수 있게 됩니다.


5 - 마치며

복잡한 코드 통합 구조를 한 줄도 짜지 않고 즉시 적용이 가능한 두 가지 완결된 상용 프로덕션 레벨 비디오 AI 워크플로우를 성공적으로 조율하셨습니다. S3 데이터 관리 및 4대 영역 AI 동시 분석 결과물을 Airtable에 깔끔하게 이식시킨 워크플로우와 편리하게 비동기적으로 구동을 도와주는 유저 친화적 브랜드 테마 탑재 시맨틱 서치 인터페이스를 구축해 보았습니다. n8n과 TwelveLabs의 상호 협력 구조를 통해 통념적으로 복잡한 비디오 AI 영역의 인프라 난제를 해소해 낼 수 있음을 적극 확인해 보았습니다.

TwelveLabs n8n 커뮤니티 전용 노드를 이용함과 동시에 고차원 비디오 이해 도구인 비주얼 판독, 음성 지각, OCR 텍스트 캡처 장치와 시맨틱 탐색 기술을 n8n 상에서 다이렉트로 자유롭게 이용해 낼 수 있습니다. 긴 개발 문서 분석 피로도나 번잡한 네트워크 라이브러리 탑재, 연동 재조율 로직이 더 이상 장애물이 되지 않습니다. 평소 자사 업무에 기용되던 비지니스 도구들(S3, Airtable, 사내 전산 DB, 솔루션 연동 Webhook 채널 목록들)을 맞춤으로 조립하여 비디오 자동화 구조 기반을 단 몇 시간 내로 완성해 보세요.

응용 가능성 제안: 이 패턴은 다양한 유스케이스로 유연하게 확장될 수 있습니다. 예컨대 소셜 미디어 배포를 겨냥한 자동 비디오 자막 클립 제작, 미디어 콘텐츠 모더레이션 자율 정제, 메타데이터 보강을 곁들인 보관서 이관 마이그레이션 자동화나 전용 지능형 개인 추천서 엔진 수집 설계가 용이해집니다. TwelveLabs 공식 문서를 살펴 고급 API 기능(임베딩 추출, 커스텀 프롬프트 구현)을 연구하고, n8n 커뮤니티 허브 포럼에서 다른 글로벌 고급 엔지니어들의 영리한 연동 패턴 노하우들을 이식해 보세요. 시스템 빌딩 시 문제 봉착이나 기술 조율 문의 사항은 TwelveLabs 공식 Discord 소통창에 찾아와 말씀해 주시거나 jordan@twelvelabs.io 혹은 brice@twelvelabs.io 메일 주소로 편안하게 질의 창을 노크해 주시기 바랍니다.

1 - 개요


1.1 - n8n 개요: 기술 팀을 위해 구축된 자동화

n8n은 시각적인 노드 기반 인터페이스를 통해 애플리케이션, API, 서비스를 연결하는 오픈 소스 워크플로우 자동화 플랫폼입니다. 기존의 여러 자동화 도구와 달리, n8n은 개발자와 기술 팀에게 데이터와 로직에 대한 완전한 제어권을 부여하며, 자체 호스팅(Self-hosting) 또는 클라우드 실행 모두를 지원하는 유연성을 제공합니다.

이 플랫폼은 AI 서비스와 기존 비즈니스 시스템 간의 격차를 메워주기 때문에 AI 기반 유스케이스에서 강력한 트랙션을 얻고 있습니다. 400개 이상의 사전 빌드된 통합 기능과 커스텀 코드 지원을 통해 n8n은 팀이 인프라를 처음부터 구축하고 유지 관리할 필요 없이 복잡한 AI 워크플로우를 오케스트레이션할 수 있도록 지원합니다.

특히 비디오 AI 분야에서 n8n은 복잡하지만 필수적인 워크플로우 단계를 처리하는 데 최적화되어 있습니다. 스토리지 시스템 간의 미디어 이동, 분석 작업 트리거, 재시도 및 실패 처리, 모델 출력 파싱, 그리고 결과를 MAM(미디어 자산 관리)이나 데이터베이스 같은 운영 도구로 다시 라우팅하는 작업 등을 매끄럽게 수행합니다.

AI 구현에서 n8n을 진정으로 강력하게 만드는 것은 여러 단계를 함께 체이닝하고, 오류 복구를 관리하며, 다양한 포맷 간에 데이터를 변환하는 기능입니다. 기술 팀은 요구사항이 진화함에 따라 이 모든 과정을 시각적 인터페이스를 통해 신속하게 반복하고 적응시킬 수 있습니다.


1.2 - TwelveLabs + n8n을 선택해야 하는 이유: 비디오 AI의 프로덕션 도입 가속화

TwelveLabs는 API를 통해 최첨단 멀티모달 비디오 이해 기능을 제공하지만, 단순히 API를 호출하는 것은 첫 단계에 불과합니다. 실제 비디오 워크플로우는 복잡합니다. 콘텐츠는 MAM에 흩어져 있고, 분석 결과는 데이터베이스에 기록되어야 하며, 컴플라이언스 팀은 그들만의 도구를 사용하고, 검색 기능은 기존 애플리케이션 내부에서 작동해야 합니다.

n8n은 TwelveLabs와 귀사의 시스템 간의 연결을 체계적으로 조율하여 이 문제를 해결합니다. 각 플랫폼에 맞는 커스텀 통합 코드를 작성하는 대신, n8n이 제공하는 사전 빌드된 커넥터와 유연한 로직을 활용해 비디오 URL을 TwelveLabs로 전송하고, 반환된 데이터를 처리하여 결과가 필요한 곳으로 정확히 라우팅할 수 있습니다.

이를 통해 프로덕션 출시 기간을 획기적으로 단축할 수 있습니다. TwelveLabs 고객은 미디어 라이브러리에 메타데이터를 풍부하게 채우거나, 컴플라이언스 검토를 자동화하거나, 내부 앱에 시맨틱 검색을 추가하는 작업 등 비디오 AI를 실제 워크플로우에 몇 달이 아닌 단 몇 일 만에 연결할 수 있습니다.


1.3 - 대상 독자

이 튜토리얼은 대규모 비디오를 다루며 기존 도구와 원활하게 통합되는 실용적인 자동화가 필요한 기술 팀을 위해 작성되었습니다.

  • 미디어 및 엔터테인먼트 전문가 (제작, 포스트 프로덕션, 방송): 대규모 라이브러리 전체에서 비디오 분석, 콘텐츠 모더레이션, 메타데이터 보강 작업을 자동화하고자 하는 분.

  • 내부 비디오를 관리하는 엔터프라이즈 팀 (사내 커뮤니케이션, 마케팅, 교육): 더 나은 검색, 정리 및 컴플라이언스 워크플로우를 추가하고자 하는 분.

  • 비디오 애플리케이션을 구축하는 플랫폼 및 엔지니어링 팀: AI 인프라를 직접 관리하지 않고도 시맨틱 검색, 추천 또는 자동 분석 기능을 임베딩하고자 하는 분.

  • 시스템 통합(SI) 업체 및 솔루션 아키텍트: 다양한 클라이언트 환경에서 비디오 AI 프로젝트를 효율적으로 완수하고자 하는 분.

  • API 및 워크플로우 실무자 (시각적 또는 코드 기반): 프로덕션 수준의 비디오 AI를 필요한 유연성에 맞게 스택에 연결하고자 하는 분.


2 - 주요 작업 (Key Operations)

TwelveLabs n8n 커뮤니티 노드는 인덱스 생성 및 비디오 업로드부터 분석 및 인사이트 생성에 이르기까지 전체 비디오 AI 워크플로우를 처리하는 세 가지 핵심 리소스 그룹을 제공합니다. 각 리소스에는 프로덕션 비디오 워크플로우의 일반적인 작업에 매핑되는 특정 기능들이 포함되어 있습니다.


2.1 - 인덱스(Index) 리소스: 검색 가능한 비디오 인덱스 관리

인덱스 리소스를 사용하면 비디오가 저장되고 처리되는 기본 컨테이너를 생성하고 관리할 수 있습니다.

  • 인덱스 생성(Create Index) – AI 모델을 사용해 검색 가능한 새 인덱스를 설정합니다. 인덱스를 구동할 모델(Pegasus Plus 또는 Marengo Plus)을 선택하고, 모델 전용 옵션을 구성하고, 유스케이스에 필요한 에드온을 활성화할 수 있습니다.

  • 인덱스 목록 조회(List Indexes) – 계정 내의 모든 인덱스를 검색하여 이미 생성된 인덱스를 확인하고 여러 프로젝트나 환경을 관리할 수 있습니다.

  • 이름으로 인덱스 검색(Search Index by Name) – 특정 비디오 컬렉션이나 프로젝트를 대상으로 워크플로우를 구축할 때 유용하게 특정 인덱스를 이름으로 신속하게 찾습니다.


2.2 - 비디오(Video) 리소스: 인덱스 내 비디오 업로드 및 관리

비디오 리소스는 콘텐츠를 인덱스에 입력하고 상태를 추적하는 실무적인 작업을 처리합니다.

  • 비디오 업로드(Upload Video) – 유연한 입력 옵션으로 인덱스에 비디오를 추가합니다. 비디오 파일을 직접 업로드하거나 비디오 URL을 제공할 수 있습니다(S3와 같은 클라우드 스토리지에 콘텐츠가 이미 있는 경우 권장). 업로드된 비디오는 자동으로 처리되어 인덱싱됩니다.

  • 비디오 목록 조회(List Videos) – 특정 인덱스에 저장된 모든 비디오를 조회합니다. 이 작업은 비디오 메타데이터와 처리 상태를 반환하므로, 비디오가 분석 동작을 수행할 준비가 되었는지 확인하고 수집 진행 상황을 추적할 수 있습니다.


2.3 - 분석(Analysis) 리소스: 비디오에서 AI 기반 인사이트 확보

분석 리소스는 인덱싱된 비디오 콘텐츠에서 즉시 활용 가능한 인텔리전스를 도출해냅니다.

  • 요약 생성(Generate Summary) – 맞춤형 요약 유형과 조정 가능한 프롬프트 템플릿을 사용하여 비디오 콘텐츠의 간결한 요약을 생성합니다. 긴 비디오를 신속하게 파악하거나 메타데이터용 설명글을 작성할 때 유용합니다.

  • 챕터 생성(Generate Chapters) – 스마트 챕터 감지 기능을 사용해 비디오를 여러 챕터로 자동 분할합니다. 결과에 타임스탬프가 지정된 세그먼트가 포함되어 있어 긴 콘텐츠를 편리하게 탐색하거나 구조화된 개요를 구성할 수 있습니다.

  • 하이라이트 생성(Generate Highlights) – 중요한 장면을 식별하여 비디오에서 핵심 순간을 추출합니다. 이를 통해 하이라이트 영상이나 클립 모음집을 만들거나 미디어 라이브러리에서 가장 관련성 높은 부분을 표면화할 수 있습니다.


3 - 기본 워크플로우 데모: S3에서 메타데이터까지


3.1 - 워크플로우 개요

이 워크플로우는 S3에서 비디오를 가져와 TwelveLabs로 분석하고, 보강된 메타데이터를 Airtable에 저장하는 엔드투엔드(End-to-End) 비디오 AI 자동화를 보여줍니다.


사전 준비 단계

시작하기 전에 다음 사항이 구비되어 있는지 확인하세요:

  • n8n 계정 (클라우드 또는 자체 호스팅)

  • S3 접근 권한이 있는 AWS 계정

  • TwelveLabs 계정 및 API 키

  • Airtable 계정


파이프라인 아키텍처

워크플로우는 크게 세 단계로 구성됩니다.

1. TwelveLabs로 인덱싱

  • S3 버킷에서 비디오 파일 가져오기

  • Lambda를 통해 pre-signed URL(사전 서명된 URL) 생성

  • 중복 URL 제거

  • TwelveLabs에서 비디오 인덱싱

2. TwelveLabs로 비디오 분석

  • 4가지 분석 영역을 병렬로 실행:

    • 컴플라이언스(Compliance): 플랫폼 정책(YouTube ABCD 프레임워크)에 유해한 콘텐츠 검출

    • 요약(Summary): 핵심 주제 및 개요 추출

    • 챕터(Chapters): 타임스탬프가 할당된 세그먼트 생성

    • 하이라이트(Highlights): 주요 명장면 추출

  • 결과 머지 및 컴플라이언스 상태 파싱

  • 데이터베이스 저장에 적합한 데이터 구조화

3. 결과 저장

  • 태그 및 메타데이터를 포함하여 Airtable에 Upsert(업데이트 또는 삽입)

  • 실제 작동 환경(Production)에서 결과는 대개 MAM, SQL/NoSQL 데이터베이스 또는 클라우드 데이터 플랫폼으로 전송됩니다.


핵심 기술 패턴
  • Pre-signed URL - AWS 자격 증명을 외부에 노출하지 않고 TwelveLabs와 비공개 S3 파일을 안전하게 공유할 수 있습니다.

  • 병렬 처리 - 4개의 분석 작업을 동시에 실행한 뒤 결과를 하나로 머지합니다.

  • Upsert 로직 - Airtable 레코드를 지능적으로 생성하거나 정정하여 대상을 업데이트합니다(재실행 시 중복 방지).

  • 상태 파싱 - AI가 생성한 텍스트에서 구조화된 컴플라이언스 상태를 정확히 추출합니다.


3.2 - 설정: 트리거 및 S3 연동


1단계: 수동 트리거(Manual Trigger) 생성

  1. n8n을 열고 "New Workflow"를 클릭합니다.

  2. "+" 버튼을 클릭하여 첫 노드를 추가합니다.

  3. "Manual Trigger"를 검색하고 선택합니다.

수동 트리거는 워크플로우를 시작하는 "시작" 버튼 역할을 수행합니다. n8n에서 "Execute Workflow"를 클릭하면, 이 노드가 활성화되어 하위 노드들을 실행합니다.

💡 프로덕션 팁: 정상적으로 동작하는 것을 확인한 뒤에는 Schedule Trigger(지정 주기 실행), Webhook Trigger(타사 연동 실행), 혹은 S3 Trigger(새 파일 업로드 시 실행) 같은 자동화 트리거로 전환하세요.


2단계: S3에서 비디오 가져오기

  1. Manual Trigger 노드에서 "+" 버튼을 클릭합니다.

  2. "AWS S3"를 검색하고 선택합니다.

  3. 노드를 설정합니다:

    • Operation: "Get Many" 선택

    • Bucket Name: 귀사의 버킷 이름 입력 (예: my-video-bucket)

    • Return All: 토글 스위치 켬 (ON)

  4. "Credentials"를 클릭하고 AWS 인증 정보를 입력합니다:

    • AWS Access Key ID 입력

    • AWS Secret Access Key 입력

    • 해당 리전 선택

이 과정은 S3 버킷에 있는 모든 파일의 메타데이터(키/경로, 크기, 최종 수정 타임스탬프)를 수집합니다. 실제 비디오 데이터를 다운로드하는 방식이 아니므로(인프라 비용 단축 및 속도 개선) 안전하며, 접근 링크 생성에 필요한 정보만을 조회합니다.

⚠️ 권한 확인: 사용하는 AWS 계정이 s3:ListBucket 및 s3:GetObject 권한을 보유하고 있는지 확인하세요. "Access Denied" 발생 시 IAM 정책을 검토해야 합니다.


3단계: 안전한 보안 접근 링크 생성

TwelveLabs가 비디오를 수집하려면 접근 권한이 필요하지만, S3 버킷은 비공개(Private) 상태여야 안전합니다. 이때 임시 보안 링크 역할을 하는 pre-signed URL(1시간 동안 유효)을 사용하면 별도의 AWS 자격 증명 공유 없이 해결할 수 있습니다.

  1. S3 노드에서 "+" 버튼을 클릭합니다.

  2. "AWS Lambda"를 검색하고 선택합니다.

  3. 노드를 설정합니다:

    • Function: 귀사의 Lambda 함수 ARN 선택 또는 직접 붙여넣기

    • Payload: "Add Expression"을 클릭하고 다음 내용을 입력합니다:

{{ JSON.stringify({ 
  bucketName: "your-bucket-name", 
  files: $input.all().map(item => item.json), 
  expiresIn: 3600 
}) }}

구현한 Lambda 함수는 각 파일에 대해 루프를 돌며 AWS SDK를 사용하고 pre-signed URL을 생성하여 n8n에 전체 URL 리스트를 반환하게 됩니다.

💡 Lambda를 사용하는 이유: n8n은 직접 자격증명을 실행하여 pre-signed URL을 생성하기 어려우므로 서버사이드 상의 AWS SDK를 기동할 수 있는 Lambda가 이 과정을 안전하게 대신 수행합니다.


4단계: URL 데이터 분석 및 정제

  1. Lambda 노드에서 "+" 버튼을 클릭합니다.

  2. "Code" 노드를 검색하고 선택합니다.

  3. 다음 코드를 붙여넣습니다:

// Parse Lambda response and remove duplicates
const seenKeys = new Set();
const results = [];

for (const item of $input.all()) {
  const response = JSON.parse(item.json.result.body);
  
  for (const file of response.files) {
    if (!seenKeys.has(file.Key)) {
      seenKeys.add(file.Key);
      results.push({
        json: {
          Key: file.Key,
          presignedUrl: file.presignedUrl,
          Size: file.Size,
          LastModified: file.LastModified,
          expiresIn: file.expiresIn
        }
      });
    }
  }
}

return results;

이 코드는 Lambda 응답(문자열 형태)을 분석하고 중복된 오브젝트를 Set 구조를 활용해 제거하여, 비디오 파일별로 정제된 n8n 아이템을 하나씩 반환합니다.


3.3 - TwelveLabs에서 비디오 인덱싱

이제 각 비디오를 AI 분석 처리를 위해 TwelveLabs 인덱스에 실시간 업로드합니다.

  1. Code 노드에서 "+" 버튼을 클릭합니다.

  2. "TwelveLabs"를 검색하고 선택합니다.

  3. 노드를 설정합니다:

    • Operation: "Upload URL" 선택

    • Index ID: 귀사의 TwelveLabs 인덱스 ID 입력 (TwelveLabs 대시보드에서 파악 가능)

    • Video URL: "Add Expression"을 누른 뒤 {{ $json.presignedUrl }}을 입력합니다.

  4. TwelveLabs API 인증 자격 증명을 추가합니다.


인덱스 대상 정보

TwelveLabs는 업로드된 각 영상을 다음 분석을 위해 가공합니다:

  • 시각적 요소 분석 - 오브젝트, 인물, 액션, 장면 구성, 색상, 배치 등

  • 오디오 받아쓰기 - 음성 화자 대화, 문맥 분석 및 나레이션

  • 화면 텍스트 검출 - 매 프레임별 글자를 분석하는 OCR 기법 동작

  • 임베딩 벡터화 - 인공지능 시맨틱 검색을 활용하기 위한 고차원 표현 데이터 가공

이 단계를 거치면 후속 분석에 사용하기 위한 고유 키인 videoId가 반환됩니다.

⏱️ 시간 소요 안내: 인덱싱 과정은 비디오 분량에 밀접한 상관관계가 있습니다(평균적으로 1분 분량 영상당 1~3분 내외 소요). n8n 노드는 처리가 끝날 때까지 대기합니다.


3.4 - 병렬 분석 프로세스 구성

효율성을 극대화하기 위해 순차적으로 기다리지 않고 4가지 갈래의 분석 작업을 동시에 조율해보겠습니다.



병렬 브랜치 수립

TwelveLabs 인덱싱 노드 출력에서 시작하여 각각 서로 다른 옵션을 가진 네 개의 분석 노드로 브랜치를 가닥 지어 연동합니다.

  1. "Index to TwelveLabs" 노드의 아웃풋에서 드래그하여 선을 연결합니다.

  2. 첫 번째 TwelveLabs Analysis 노드를 인스턴스화합니다.

  3. 세 번 더 실행하여 총 4개의 병격 가동 노드를 완성합니다.


사용 분석 유형 비교

각 분석 노드는 기본 뼈대는 일치하지만 전달할 세부 프롬프트가 다릅니다.

1 - 컴플라이언스 분석(Compliance Analysis)

  • 활용처: YouTube 기준 ABCD 프레임워크 기준을 맞춰 정책 필터링 수행

  • 반환 포맷: 상태 정보 (통과/검토필요/탈락) 및 원인이 된 구간 타임스탬프 상세 목록

컴플라이언스 분석 프롬프트 (Compliance Analysis Prompt):

Analyze this video for content compliance using YouTube's ABCD framework:

**A - Adult Content:**
- Nudity or sexual content
- Sexually suggestive content
- Adult themes

**B - Brand Safety:**
- Inflammatory or demeaning content
- Hateful content targeting protected groups
- Harmful or dangerous acts
- Shocking or graphic content
- Profanity and crude language

**C - Copyright:**
- Copyrighted music, video, or images
- Unlicensed third-party content

**D - Dangerous/Harmful:**
- Violence or graphic content
- Drugs, dangerous products, or substances
- Firearms and weapons
- Misinformation (health, elections, etc.)

For each flagged issue, provide:
1. **Timestamp**: When it appears
2. **Category**: A, B, C, or D
3. **Issue**: Brief description
4. **Action**: Allow, Restrict (age-gate), Monetization off, or Remove

**Output:**


2 - 요약 분석(Summary Analysis)

  • 활용처: 주요 중심 스토리와 전개 분석

  • 반환 포맷: 3~4개의 간결한 단락 구성 요약본

요약 분석 프롬프트 (Summary Analysis Prompt):



3 - 챕터 분할 분석(Chapters Analysis)

  • 활용처: 내용 분기점 검색에 기반한 타임라인 구분

  • 반환 포맷: 소주제별 시작 시간표 구조 및 챕터별 세부 요약

챕터 분석 프롬프트 (Chapters Analysis Prompt):



4 - 하이라이트 분석(Highlights Analysis)

  • 활용처: 시선 집중도가 높은 주목도 높은 구간 발굴

  • 반환 포맷: 하이라이트 지점 및 선정 배경 사유

하이라이트 분석 프롬프트 (Highlights Analysis Prompt):



기초 공통 사양 디자인

4개 개별 분석 컴포넌트에 적용하는 필수 설정 파라미터입니다:

  • Operation: "Generate" 또는 "Analysis" 적용

  • Index ID: {{ $json.indexId }}

  • Video ID: {{ $json.videoId }}

  • Temperature(온도): 0.2 권장 (값이 낮을수록 무작위성을 줄여 높은 정합성과 정형화된 추세의 답안 도출)


3.5 - 결과 병합 및 구조화


나누어졌던 병렬 구간 하나로 머지하기

  1. "+"를 누르고 "Merge"를 입력해 추가합니다.

  2. 노드를 세팅합니다:

    • Number of Inputs: 4로 변경 변경

  3. 인스턴스 분할 분석 아웃풋을 Merge 노드 인풋 위치에 알맞게 매칭시킵니다:

    • 컴플라이언스 (Compliance) → Input 1

    • 요약 (Summary) → Input 2

    • 챕터 (Chapters) → Input 3

    • 하이라이트 (Highlights) → Input 4

Merge 모듈은 일종의 배리어 통제소 역할을 맡아, 네 영역 모두의 AI 처리가 끝날 때까지 멈추고 기다렸다가 한 번에 흘려보냄으로써 불완전한 데이터 전송 현상을 미연에 예방합니다.


데이터 파이프라인 형태 빌딩

  1. Merge 완료 아웃풋 옆에 "+"을 눌러 Code 노드를 장착시킵니다.

  2. 코드를 가입시킵니다:

// Extract and organize all analysis results
const allItems = $input.all();
const videoId = allItems[0]?.json?.videoId || '';
const complianceResponse = allItems[0]?.json?.response || '';

// Parse compliance status from AI response
let complianceStatus = 'NEEDS REVIEW'; // Default

if (complianceResponse.includes('Overall Status: Suitable')) {
  complianceStatus = 'PASS';
} else if (complianceResponse.includes('Overall Status: Not Suitable')) {
  complianceStatus = 'FAILED';
} else if (complianceResponse.includes('Overall Status: Needs Review')) {
  complianceStatus = 'NEEDS REVIEW';
}

// Create structured output
const result = {
  videoID: videoId,
  'Compliance Status': complianceStatus,
  'Compliance report': complianceResponse,
  'Summary': allItems[1]?.json?.response || '',
  'Chapters': allItems[2]?.json?.response || '',
  'Highlights': allItems[3]?.json?.response || ''
};

return [{ json: result }];

이 코드의 역할은 다음과 같습니다:

  1. 정리가 쉽도록 video ID를 타겟 추출합니다.

  2. AI의 답변 문구를 검증하여 알맞은 컴플라이언스 기준 상태 판단 값을 계산해냅니다.

  3. Airtable의 Select 타입에 알맞은 규격화된 상태 값(PASS/FAILED/NEEDS REVIEW) 형식으로 규격화합니다.

  4. 4개 영역 결과를 평탄화(Flat Object) 작업을 해서 간명하고 깔끔하게 묶어냅니다.


3.6 - Airtable로 최종 마이그레이션 저장


저장소 데이터베이스(Base) 배치하기

  1. 사용하고 계시는 Airtable을 엽니다.

  2. 해당 칼럼 목록 필드를 선언합니다:

    • videoID (Single line text)

    • Compliance (Single select 구조 옵션 리스트: PASS, FAILED, NEEDS REVIEW 지정)

    • Compliance report (Long text)

    • Summary (Long text)

    • Chapters (Long text)

    • Highlights (Long text)


Airtable 매핑 노드 결합하기

  1. 코드 노드 다음 자리에 "+"를 누르고 "Airtable"을 검색해 붙입니다.

  2. 설치를 시작합니다:

    • Operation: "Upsert"로 선택 지정합니다. (신규는 주입하고 이미 존재하는 건 값을 업데이트 보정)

    • Base: 타겟 설정 Base 적용

    • Table: 매칭시킬 테이블 지정

  3. 변수 데이터를 필드로 매칭(Mapping)시킵니다:

    • videoID{{ $json.videoID }}

    • Compliance{{ $json["Compliance Status"] }}

    • Compliance report{{ $json["Compliance report"] }}

    • Summary{{ $json.Summary }}

    • Chapters{{ $json.Chapters }}

    • Highlights{{ $json.Highlights }}

  4. 실제 Matching Column(정합성 기준 컬럼 식별값) 항목에 videoID를 직접 지정해 줍니다.

Upsert 가동 알고리즘은 실용적 자원 관리를 보장합니다:

  • videoID 키가 DB에 존재하지 않은 경우 → 새 로우 행(Row)으로 입력

  • videoID 기준 키 속성이 확인된 기존 행 대상인 경우 → 중복 등록 없이 내용 필드 갱신

이 장치가 확보되었기에 매번 같은 영상을 테스트하며 발생 가능한 레코드 중복 난립을 완벽 차단할 수 있습니다.


3.7 - 파이프라인 실제 구동 테스트


최종 발송 전 점검 가이드라인

정상 테스트 진행을 위해 체크리스트를 점검하십시오:

  • [ ] 전체 블라인드 맵이 빠짐없이 차례로 연쇄 연결 구조를 띠고 있는지 여부

  • [ ] AWS 접근 권한 및 TwelveLabs의 인증 자격 증명이 유효한지 확인

  • [ ] 타겟 지향 ID 코드가 TwelveLabs 대시보드 구조의 목표 ID와 완전 동일한지 여부

  • [ ] TwelveLabs에서 비디오 인덱싱 작업이 완료되었는지 확인

  • [ ] Airtable의 테이블 필드 및 Base 규격 일지 확인

  • [ ] 전체 워크플로우에 대한 중간 내용 저장 완료 여부


워크플로우 가동 및 피드백 모니터링

  1. 우측 맨 끝 상단에 비치되어 있는 "Inactive" 상태 바를 토글하여 활성화 시킵니다.

  2. 핵심 "Execute Workflow" 작동단 버튼을 압축 전달합니다.

  3. 전체 흐름 진행 상황을 연계 그래프를 통해 직접 지켜봅니다.

  4. 모든 노드 우상단에 초록 체크마크 배지가 온전히 수두룩하게 뜨면 모든 절차 통과 완료를 의미합니다.


출력 기대 형태 설명

S3 노드: 파일 상세 속성의 세부 명세 데이터를 리스트 구조로 안전하게 리턴

Lambda 노드: 임시 공유 인가 pre-signed URL을 정상 파싱해 확보

Code 필터 노드: 중복 항목을 차단 소거하고 완전히 1건씩 정밀 가공해 통과시킴

TwelveLabs Index 노드: 업로드한 고유 대상 식별 번호 videoId 값 취득

4채널 개별 분석 액션 노드: 정해진 분석 질의 결과를 JSON 결과로 정조준 획득

Merge 노드: 동시 전송 시점 정렬 완료 후 안정적으로 통합해 반환

Code 최종 정리 노드: DB 칼럼 규격화 정의 파일로 데이터 전처리 작업 마무리

Airtable 보장 노드: 삽입 완료 확인 수신에 입각한 가맹 처리 확보


Airtable 데이터 삽입 적합도 확인

  1. 작동 완료 안내를 받고 Airtable을 엽니다.

  2. 지정한 데이터베이스 내역을 육안 전수 확인합니다:

    • 유일 식별값 (Video IDs)

    • 정밀 기계 판별 등급 (PASS / FAILED / NEEDS REVIEW 표시)

    • 타겟 필드별로 매칭 확인된 요약, 챕터 세부 리포트 텍스트 묶음


문제 발생 원인 및 장애 진단 가이드라인

현상

원인 분석

대응 방안

S3 노드 에러 정지

AWS 자격 증명 권한 미달

귀사의 IAM 정책 내에 s3:ListBuckets3:GetObject 권한이 탑재되어 있는지 재조율하세요.

Lambda 리턴 단 에러

AWS 상의 대상 정보 매치 불일치

AWS 콘솔에서 Lambda ARN 경로명이 정확히 타겟팅되어 있는지 대조 확인하세요.

TwelveLabs 업로드 가동 실패

지원하지 않는 Index ID 지정

TwelveLabs 콘솔에 접속해 계정 대시보드 지점의 ID 실체와 단순 복사값이 맞는지 일일이 맞추어 냅니다.

분석 데이터 유실

영상의 인덱스화 작업 대기 초과

가동 소요 시간이 정상 진행을 거치고 있는지 관리 영역(TwelveLabs)에서 상태 값을 체킹해 기다립니다.

Airtable 최종 기입 거절

필드 레이아웃 오차 발견

DB에 배치한 컬럼 영문명 알파벳의 대소문자가 정확히 한 자도 틀림없이 동일한 기입 상태인지 점검하세요.

Compliance status 겉돌거나 표기 미흡

필드 속성 사전 생성 누락

Airtable 필드 선택 생성자 옵션에 PASS, FAILED, NEEDS REVIEW를 대문자로 설정 구비해 둡니다.


작업 오류 분석 추적툴 이용 가이드

장애 구간 발굴 시 대처법:

  1. n8n 좌측에 배치된 "Executions" 로그를 호출해 열어봅니다.

  2. 최신 구동 이력 중 빨간 불이 뜬 장애 리스트를 체크 타겟팅합니다.

  3. 해당 노드 창을 확대해 분석 데이터를 직접 확인합니다:

    • 문제 부서에 전달된 상위 아웃풋 데이터 실적

    • 시스템이 뱉어낸 에러 상세 디버그 스택 트레이스 문장

    • 성능 소모 타임아웃 여부 등

💡 디버깅 꿀팁: 의심 지점에 일시적인 코드 정리 노드(Set / Code)를 꽂아두고 console.log(JSON.stringify($input.all(), null, 2))를 입력해 임시 출력되는 속성들을 직렬화 확인하여 문제를 한 걸음 더 빠르게 파악하세요.

축하합니다! S3에서 Airtable로 이어지는 비디오 AI 메타데이터 보강 워크플로우를 완벽하게 구비하였습니다. 처리된 데이터는 관리 부서의 유용한 챕터 검수 및 사내 아카이브로 온전히 기능하게 될 것입니다.


4 - n8n 및 TwelveLabs를 아우르는 영상 시맨틱 검색 전용 UI 웹 인터페이스 제작


4.1 - 워크플로우 개요

이 워크플로우는 TwelveLabs의 멀티모달 AI를 활용하고 전용 브랜드 컬러를 입힌 영상 시맨틱 검색 지원 전용 웹 인터페이스 환경을 구축합니다.


구축될 검색 엔진 파이프라인 아키텍처


구현되는 시맨틱 검색 파이프라인은 단 4개의 핵심 모듈로 압축 구성됩니다:

  1. Form Trigger - 사용자로부터 직접 검색 제어 질문 키워드를 수집하는 UI 창 제공

  2. TwelveLabs Search - 축적된 비디오 컬렉션 전체에서 질문 의미에 부합하는 구간을 파인딩하는 시맨틱 연산 구동

  3. Code - 복잡한 원천 JSON 아웃풋을 유려하고 보기 편한 HTML 그리드 뷰 화면으로 대조 변환

  4. Form Completion - 예브게 렌더링된 연산 결과물이 수록된 HTML 문서를 최종 브라우저 창에 출력


제작하는 최종 가치와 특징

  • 자유로운 문맥 언어 기반으로 입력 가능한 범용 퍼블릭 검색 웹 폼 UI를 확보할 수 있습니다.

  • 시각 내용물, 오디오 내레이션 음성 구술 내용, 화면 속 OCR 자막 내용 전체 영역 일괄 정밀 스캔 검색을 지원합니다.

  • 최적으로 정밀 선별된 Top 10 검색 영상의 타임라인 구간 정보, 썸네일 정보, 주변 보강 자막을 한 화면에 조율 렌더링 지원합니다.

  • 브랜드 디자인에 맞춤화된 자유도 높은 임베디드 CSS 스타일링 커스터마이징을 지원합니다.


테스트 환경 구비 내역

출발 전 유효 계정 보유 실태 점검:

  • n8n 서비스 계정 (클라우드 환경 또는 자체 인프라 설치 환경)

  • TwelveLabs 정규 개발용 API Key

  • 최소 1개 이상의 영상물이 온전히 인덱싱되어 준비를 끝마친 타겟 인덱스 확보

  • 가용한 타겟 비디오 처리가 올바르게 마무리되었는지 TwelveLabs 대시보드로 확인 필


4.2 - 인풋용 입력 Search Form 페이지 개설

사용자가 활용할 검색창을 구축하고 타겟 맞춤 스타일 디자인 요소를 결합하는 단계입니다.


Form Trigger 설정 설계

  1. n8n 환경에서 신규 빈 워크플로우를 소환합니다.

  2. 검색창에 "+"를 치고 첫 단계 모듈로 장착시킵니다.

  3. 설정 도구에서 "Form Trigger"를 타겟팅 지정합니다.

  4. 타겟 노드 디스플레이 레이블 선언:

    • Form Title: "TwelveLabs 시맨틱 비디오 검색 서비스" (프로젝트명 맞춤 정의 가능)

    • Form Description: 사용자를 위한 부가적인 입력 안내말을 작성합니다.

  5. 사용 질문 수집용 입력 자원 컴포넌트를 설계합니다:

    • "Add Field"를 눌러 영역 확보

    • Field Label: "검색어를 입력해 주세요"

    • Field Type: Text 데이터 속성 배정

    • Required(필수입력): 토글 온(ON) 지정


커스텀 브랜드 CSS 스타일 접목하기

  1. 정밀 Form Trigger 노드 구성 하단부로 드래그 연장해 "Options"로 진입합니다.

  2. "Add Option""Custom CSS" 순으로 추가합니다.

  3. 어두운 밤하늘 톤의 보라색 포인트 효과가 반영된 아래 CSS 값을 삽입합니다:

:root {
    /* Colors - Change these to match your brand */
    --color-background: #0A0B0D;
    --color-card-bg: #141518;
    --color-accent: #8B5CF6;
    --color-text: #FFFFFF;
    --color-text-secondary: #9CA3AF;

    /* Apply colors to form elements */
    --color-header: var(--color-text);
    --color-label: #E5E7EB;
    --color-submit-btn-bg: var(--color-accent);
    --color-submit-btn-text: var(--color-text);
    --color-focus-border: var(--color-accent);

    /* Styling */
    --font-family: 'Inter', 'Open Sans', sans-serif;
    --border-radius-card: 12px;
    --border-radius-input: 8px;
    --container-width: 520px;
}

body {
    background: linear-gradient(135deg, #0A0B0D 0%, #1A1B1F 100%);
    min-height: 100vh;
}

button[type="submit"]:hover {
    background: #7C3AED;
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(139, 92, 246, 0.4);
    transition: all 0.2s ease;
}
input:focus, textarea:focus {
    box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.2);
    transition: box-shadow 0.2s ease;
}


Form Trigger는 구동 즉시 외부에서 직접 입력 가능한 고유 웹 URL 채널 편성을 자율 배분 지원해 줍니다. 최종 저장 및 가동이 실행되면 내부 환경 경로 명칭(테스트 편람용 Test URL 및 전개 수립 배포용 Production URL)이 산출될 것입니다.

🎨 자유 구성 테마 제안: 브랜드 고유 로고 아이덴티티가 강조되는 전용 칼라 코드가 확보되어 있다면 핵스(#) 영역 색값을 직접 고쳐서 적용해보시기 바랍니다.


4.3 - 시맨틱 검색 쿼리 매칭 기획 및 데이터 정렬 수립


TwelveLabs 검색 엔진 통합

  1. Form Trigger 모듈 아웃풋 가동단 우측에 "+"를 조인합니다.

  2. "TwelveLabs"를 타겟 검출해 매칭 꽂기를 장착시킵니다.

  3. 세부 값을 배치 설계합니다:

    • Operation: "Search" 모드 전환 지점 선언

    • Index ID: 사용할 Index ID 고유 기입

    • Query Text: "Add Expression" 데이터 자동 연동 장치를 확보해 {{ $json["Search Query"] }}를 링크시킵니다.

  4. 보안 API 연결이 제대로 완성되었는지 연계 계정의 정상 구동 상태를 대조 선언해 완비해 줍니다.


TwelveLabs 멀티모달 시맨틱 핵심 구동 개괄

TwelveLabs는 3가지 고차원 분석 레이어를 동시에 탐색 활용합니다:

  • 시각적 물체 및 연출 행동 검색 - 등장 생명체, 주요 물건, 배경 환경 지각, 색상 패턴, 비디오 및 이미지 캔버스 위 글자(OCR)

  • 오디오 다각 추적 검색 - 등장 화자 독백, 스피치 어휘, 화제 의미 변곡점, 배경 오디오 톤, 음향 임베딩 효과성 검토

  • 지능융합 대화식 시맨틱 검색 - 시각 데이터와 사운드 정보가 복합 유기적으로 연관된 맥락 수준의 완전한 문맥 검출

검출된 시점에 따른 고유 정렬 데이터 아웃풋 양식:

  • video_id - 매칭된 부모 영상 분류 고유 키

  • start / end - 매칭 검색 지점의 초 단위 세부 구간 (정확한 시작 지점 지시 제어)

  • rank - 계산된 결과 밀집 추천성 정보 가중치 순서 (1등이 가장 일치도 우위)

  • confidence - 인공지능이 계산한 일치 확률 분류 등급 값 (High/Medium/Low 지향)

  • thumbnail_url - 해당 재생 구간의 실시간 생성 썸네일 이미지 CDN 주소

  • transcription - 연계 시점에 발음 기획된 대사 보조 텍스트 출력 데이터

TwelveLabs로부터 반환되는 표준 응답 JSON 결과 스키마 예시입니다:

{
  "data": [
    {
      "video_id": "6579a2c1d4b5e8f9a0123456",
      "start": 45.2,
      "end": 52.8,
      "rank": 1,
      "confidence": "high",
      "thumbnail_url": "https://thumbnails.twelvelabs.io/...",
      "transcription": "So let me explain how machine learning works..."
    },
    {
      "video_id": "6579a2c1d4b5e8f9a0789012",
      "start": 120.5,
      "end": 135.0,
      "rank": 2,
      "confidence": "medium",
      "thumbnail_url": "https://thumbnails.twelvelabs.io/...",
      "transcription": "Neural networks are inspired by the human brain..."
    }
  ]
}


정렬 raw JSON 결과 데이터를 예쁜 HTML 서식으로 조율하기

  1. TwelveLabs 모듈 아웃풋 옆에 신규 우측 "+"를 조인합니다.

  2. 웹 구조체 제작을 담당해 줄 n8n의 "Code" 컴포넌트를 소환 생성합니다.

  3. 다음 아래 수록된 렌더링용 자바스크립트 소스 전체를 교체해 기입해 줍니다:

const searchData = $input.first().json.data;
const top10 = searchData.filter(result => result.rank <= 10);

let resultsHTML = `
<table style="width: 100%; border-collapse: separate; border-spacing: 20px; margin: 20px 0;">
  <tr>
    <td colspan="4" style="text-align: center; padding-bottom: 20px;">
      <h2 style="color: #8B5CF6; font-size: 28px; margin: 0;">
        검색 결과 (가장 밀접한 후보 추천군 ${top10.length}개)
      </h2>
    </td>
  </tr>
`;

// Create 4-column grid
for (let i = 0; i < top10.length; i += 4) {
  resultsHTML += '<tr>';
  
  for (let j = 0; j < 4; j++) {
    if (i + j < top10.length) {
      const r = top10[i + j];
      resultsHTML += `
        <td style="width: 25%; vertical-align: top;">
          <div style="background: #141518;
                      border: 1px solid #2A2B30;
                      border-radius: 12px;
                      padding: 16px;
                      box-shadow: 0px 4px 12px rgba(139, 92, 246, 0.1);">
            
            <div style="position: relative; margin-bottom: 12px;">
              <span style="position: absolute;
                          top: 8px;
                          left: 8px;
                          background: #8B5CF6;
                          color: #FFFFFF;
                          padding: 6px 10px;
                          border-radius: 6px;
                          font-size: 14px;
                          font-weight: 600;
                          z-index: 10;">
                순위 #${r.rank}
              </span>
              
              <img src="${r.thumbnail_url}"
                   alt="Result ${r.rank}"
                   style="width: 100%;
                          height: 140px;
                          object-fit: cover;
                          border-radius: 8px;
                          display: block;"/>
            </div>
            
            <div style="color: #FFFFFF; font-size: 13px; margin-bottom: 6px;">
              <strong style="color: #FFFFFF;">동영상 식별 번호 (Video ID):</strong><br/>
              ${r.video_id.substring(0, 12)}...
            </div>
            
            <div style="color: #E5E7EB; font-size: 12px; margin-bottom: 6px;">
              <strong style="color: #FFFFFF;">구간 타임라인:</strong>
              ${r.start}초 - ${r.end}초
            </div>
            
            ${r.transcription ? `
              <div style="color: #D1D5DB;
                          font-size: 11px;
                          font-style: italic;
                          padding: 8px;
                          background: #1A1B1F;
                          border-radius: 6px;
                          margin-top: 8px;">
                "${r.transcription}"
              </div>
            ` : ''}
            
          </div>
        </td>
      `;
    } else {
      resultsHTML += '<td style="width: 25%;"></td>';
    }
  }
  
  resultsHTML += '</tr>';
}

resultsHTML += '</table>';
return [{ json: { html: resultsHTML } }];

이 자바스크립트는 수신된 검색 목록에서 최고 유사도 Top 10을 분류 후, 썸네일 이미지 및 비디오 고유 메타데이터가 알맞게 정비된 4열 격자 가로 배치 형태의 반응형 HTML 테이블을 실시간 생성합니다.


사용자 브라우저에 최종 결과 디스플레이 전송하기

  1. Code 구성부 우측 "+"를 조인합니다.

  2. "Form" 모듈을 선택하되, 이번에는 Form Trigger가 아닌 일반 "Form (Completion)" 액션을 지정해 마운트합니다.

  3. 하위 설정을 완비합니다:

    • Operation: "Completion" 타겟 지정

    • Completion Title: "매칭 분석 결과 확인"

    • Completion Message: "Expression" 기동 아이콘을 누르고 구조 변수 {{ $json.html }}를 연결 맵핑해 기입합니다.


결과 제공 화면 맞춤 디자인 설정

완성된 결과 리포팅 페이지가 검색창 홈 페이지와 완벽하게 조화되는 어두운 보라색 톤을 지탱하도록 같은 브랜드 CSS 양식을 탑재합니다:

  1. 마지막 모듈 화면 하단에 위치한 "Options"로 드래그 다운합니다.

  2. "Add Option""Custom CSS" 순으로 배치 장착합니다.

  3. 아래 CSS 소스를 넣어 줍니다:

:root {
    /* Colors */
    --color-background: #0A0B0D;
    --color-card-bg: #141518;
    --color-accent: #8B5CF6;
    --color-text: #FFFFFF;
    --color-html-text: #FFFFFF;

    /* Make the container full-width for better results display */
    --container-width: 100% !important;

    /* Typography */
    --font-family: 'Inter', 'Open Sans', sans-serif;
    --font-size-header: 24px;

    /* Borders */
    --border-radius-card: 12px;
}

body {
    background: linear-gradient(135deg, #0A0B0D 0%, #1A1B1F 100%);
    min-height: 100vh;
    color: #FFFFFF;
}

/* Force container to full width for grid layout */
.container, .form-container, .completion-container {
    max-width: 100% !important;
    width: 100% !important;
}

/* Ensure all text is visible on dark background */
div, p, span, strong, h1, h2, h3 {
    color: inherit !important;
}

검색 처리가 활발히 마무리되면 해당 Form Completion 모듈이 HTML 결과물 명세를 브라우저에 실시간 리다이렉트 렌더링 배포할 책임 장치를 지탱해 주게 됩니다. URL은 검색 폼 형태와 한 가닥으로 일관 연결됩니다.


4.4 - 테스트 절차 및 최종 자율 자가 검증


테스트 전 무장 결합 목록

테스트를 실행하기 전 다음 항목들이 준비되었는지 다시 한번 면밀히 체크하세요:

  • [ ] 전체 4개 노드가 일정한 직렬 라인 구조를 순서대로 확실히 이행하고 있는지 확인: Form Trigger → TwelveLabs → Code (Format HTML) → Form (Completion)

  • [ ] TwelveLabs 연동 인가 자격 토큰 연결 적합성 완료 여부

  • [ ] 사용 Index ID 코드가 TwelveLabs 개발 포탈 실체와 완벽하게 1:1 대응 일치하는지 여부

  • [ ] 타겟 영상이 정상 인덱싱되어 확보된 상태인지 검증 (인덱싱 미등록 영상은 검색에 포착되지 않습니다)

  • [ ] 워크플로우에 대한 최종 저장이 안전하게 달성되었는지 여부


구동 기점 확보 및 실시간 가동

  1. 우측 최상단에 마킹된 "Inactive" 스위치를 직접 눌러 "Active" 온 시켜 활성 상태를 선포해 줍니다.

  2. 제일 처음에 배치된 Form Trigger 구동단을 눌러 타겟 URL 라인을 조회합니다:

    • Test URL - 기능 검증 및 디버깅 시나리오 활용 용도

    • Production URL - 사내 배포 및 공유 업무 기동 활용 용도

  3. 해당 Test URL 문자 전단 주소를 복사해 빈 웹 브라우저 주소창에 기입하고 호출해 엽니다.

  4. 준비된 비디오 자료와 닿아 있는 자유도 높은 검색어를 가볍게 입력합니다. (예: "person explaining concepts" 등)

  5. 제출 버튼(Submit)을 전송한 뒤 화면 응답을 대기합니다 (안정 연산 3~5초 이내 달성 소요 예정).


정상 작동 흐름 보장 기준 상태 리스트

✅ 맞춤 브랜드 CSS를 탑재한 수려한 검색 인터페이스가 정상적으로 화면에 로딩되어 나타납니다.

✅ Submit 단추를 송원 전송한 직후, 매끄러운 수집 로딩 대기 알림창이 표출됩니다.

✅ 연동 추적이 가볍게 종료되면 영상 썸네일 구조를 반영한 최종 HTML 그리드가 전개됩니다.

✅ 후보 군마다 상세 지각 순위 랭킹 번호, 재생 위치 링크 구간, 번역 대사문이 균형 잡힌 배열로 완비되어 노출됩니다.


고장 요인 분석 및 해결 팁 일치 대조표

현상

확인 사항

처리 프로세스 권고

검색 웹 인터페이스 접속 불가

워크플로우 비활성 대기 중

n8n 우상단에 위치한 Active 버튼 스위치를 반드시 초록 불이 들어오게 켬(ON)으로 세팅하세요.

인터페이스 디자인 틀어짐

브라우저 캐시 침전

새로고침을 시행하거나 캐시 간섭을 피하기 위해 인코그니토(시크릿) 테스트창을 호출해 접근해 봅니다.

매칭 분석 타겟 없음 출력

미가용 Index ID 세팅

TwelveLabs 포털의 원본 식별 ID 표기와 모듈에 타이핑되어 있는 ID 문자열 구조가 맞는지 1:1 대조 보정하세요.

매칭 분석 타겟 없음 출력

대기 중이거나 아직 인덱싱 안 됨

TwelveLabs 계정 사이트에 들어가 해당 비디오 작업 현황 수치가 완연한 "Ready" 상태 값을 유지하고 있는지 조회하십시오.

매칭 분석 타겟 없음 출력

너무 가혹하고 복잡한 질의 단어 구성

영상이 실제로 담고 있을 보편성 위주의 직관적인 영문 단어 조합부터 가용 범위를 시도해 봅니다.

결과물이 raw JSON으로 투박하게 출력

동적 바인딩 스위치를 일반형 유지

Form Completion 모듈 환경의 입력값 우측에 마킹된 작은 "Expression" 제어 단추가 기동되어 활성화되었는지 체크하세요.

결과물이 {{ $json.html }} 코드로 출력

텍스트 입력 장치 상태 오작동

반드시 무지 막대 텍스트 형태(Plain)를 피하고 동적 구조 연동을 전담하는 Expression 상태로 변경 구사해야 합니다.

디자인 폰트 혹은 간격 파열 발견

옵션 누락

반드시 Form Trigger 노드와 Form Completion 노드 양쪽 모두의 CSS 옵션 창에 빠짐없이 CSS 코드가 삽입되어 있는지 재조율하세요.

결과는 뜨는데 썸네일이 정상 디스플레이 안 됨

토큰 유실 및 썸네일 주소 노화 거절

TwelveLabs 가동 측 API 응답 코드가 유효한지 확인하고, 해당 썸네일 주소를 복사해 별도로 띄워 세부 보안 문제를 확인하세요.

엉뚱한 쿼리 처리 현상 발생

잘못 설계된 변수 링크 매칭

TwelveLabs 노드의 Query Text 입력 부품에 연동 기재한 문장이 정확하게 {{ $json["Search Query"] }} 와 매치해 있는지 체크 배정하세요.


구축 파이프라인 버그 패널 활용 진단법

정상 작동 장애 지점 식별 가이드:

  1. n8n 좌측에 표기된 "Executions" 로그 판독판을 직접 호출해 봅니다.

  2. 방금 오차가 기록된 실행 번역(날짜 및 타임스탬프 이력 포함)을 표적 더블 클릭합니다.

  3. 발생 이상 지점 내부를 디버프 탐색해 봅니다:

    • 매칭 부품 입출구에 기록된 입 출력 데이터 속성 상태 점검

    • 컴포저가 보고해 준 구체적인 에러 안내 문구 해독

    • 모듈별 처리 시간 한계치 초과 기록 유무 파악

시스템에 문제 발생 시 즉각 어디가 고장을 일으켰는지에 관련 빨간색 신호를 직접 발굴 기동할 수 있어 수동 교정이 용이해집니다.

💡 고급 디버그 기법: TwelveLabs 와 HTML Code 블록 중간 갈망 영역에 일시 간섭 목적의 임시 Code 노드를 장착한 후 console.log(JSON.stringify($input.all(), null, 2)); return $input.all();를 탑재해 인가 시 처리되는 원자 데이터 전문의 온전한 형태를 즉각 추적해 내세요.


테스트 시도해 볼 만한 비디오 쿼리 샘플 제안 목록

영상이 가지고 있는 개성을 바탕으로 아래 쿼리들을 다양하게 시도해 보세요:

비디오 데이터에 수록된 내용물이...

쿼리에 다음과 같이 입력해 보세요

성공할 수 있는 탐색 이유 개관

사람이 말하거나 스피치 전개

"person speaking to camera"

영상 내 시각 거동과 발화 음성의 복합 판단

소개 지침 브리핑 및 제품 소개 데모

"showing how to use"

영상 속 사물 행동 조작 패턴과 맥락 스피치 교정 감지

자연경관 야외 드론 샷

"outdoor nature scene"

시스템이 지닌 환경 시나리오 분류기 매칭

프레젠테이션 프리포맷 슬라이드

"slides with charts"

차트 그래픽 지각 연산 장치 기능 및 OCR 분석 가맹

다자간 인터뷰 다큐멘터리

"two people conversation"

화면 내 인물 개수 인식 구조와 구술 질의 교차 파악

튜토리얼 안내

"step by step tutorial"

전체 기승전결 맥락 인지 가용 도출

브랜드 상징 로고 형상 노출

"logo on screen"

오브젝트 특정화 형상 지각 장치 연산 및 OCR


완성 파이프라인 흐름 도식 요약

함께 빌드해 낸 시맨틱 웹 서비스의 전체적인 흐름 구조는 다음과 같습니다:


시맨틱 비디오 검색 전용 웹 인터페이스의 핵심 빌딩 가이드를 마칩니다. 이제 사용자는 복잡한 전문 기술 용어 대신 보편적인 문장이나 정황 설명 형태의 자연어 질의를 입력하는 것만으로 원하는 아카이브 속 장면 구간 정보를 안전하고 직관적인 전용 웹 폼을 통해 시각 필터링하여 감상하고 관리할 수 있게 됩니다.


5 - 마치며

복잡한 코드 통합 구조를 한 줄도 짜지 않고 즉시 적용이 가능한 두 가지 완결된 상용 프로덕션 레벨 비디오 AI 워크플로우를 성공적으로 조율하셨습니다. S3 데이터 관리 및 4대 영역 AI 동시 분석 결과물을 Airtable에 깔끔하게 이식시킨 워크플로우와 편리하게 비동기적으로 구동을 도와주는 유저 친화적 브랜드 테마 탑재 시맨틱 서치 인터페이스를 구축해 보았습니다. n8n과 TwelveLabs의 상호 협력 구조를 통해 통념적으로 복잡한 비디오 AI 영역의 인프라 난제를 해소해 낼 수 있음을 적극 확인해 보았습니다.

TwelveLabs n8n 커뮤니티 전용 노드를 이용함과 동시에 고차원 비디오 이해 도구인 비주얼 판독, 음성 지각, OCR 텍스트 캡처 장치와 시맨틱 탐색 기술을 n8n 상에서 다이렉트로 자유롭게 이용해 낼 수 있습니다. 긴 개발 문서 분석 피로도나 번잡한 네트워크 라이브러리 탑재, 연동 재조율 로직이 더 이상 장애물이 되지 않습니다. 평소 자사 업무에 기용되던 비지니스 도구들(S3, Airtable, 사내 전산 DB, 솔루션 연동 Webhook 채널 목록들)을 맞춤으로 조립하여 비디오 자동화 구조 기반을 단 몇 시간 내로 완성해 보세요.

응용 가능성 제안: 이 패턴은 다양한 유스케이스로 유연하게 확장될 수 있습니다. 예컨대 소셜 미디어 배포를 겨냥한 자동 비디오 자막 클립 제작, 미디어 콘텐츠 모더레이션 자율 정제, 메타데이터 보강을 곁들인 보관서 이관 마이그레이션 자동화나 전용 지능형 개인 추천서 엔진 수집 설계가 용이해집니다. TwelveLabs 공식 문서를 살펴 고급 API 기능(임베딩 추출, 커스텀 프롬프트 구현)을 연구하고, n8n 커뮤니티 허브 포럼에서 다른 글로벌 고급 엔지니어들의 영리한 연동 패턴 노하우들을 이식해 보세요. 시스템 빌딩 시 문제 봉착이나 기술 조율 문의 사항은 TwelveLabs 공식 Discord 소통창에 찾아와 말씀해 주시거나 jordan@twelvelabs.io 혹은 brice@twelvelabs.io 메일 주소로 편안하게 질의 창을 노크해 주시기 바랍니다.

1 - 개요


1.1 - n8n 개요: 기술 팀을 위해 구축된 자동화

n8n은 시각적인 노드 기반 인터페이스를 통해 애플리케이션, API, 서비스를 연결하는 오픈 소스 워크플로우 자동화 플랫폼입니다. 기존의 여러 자동화 도구와 달리, n8n은 개발자와 기술 팀에게 데이터와 로직에 대한 완전한 제어권을 부여하며, 자체 호스팅(Self-hosting) 또는 클라우드 실행 모두를 지원하는 유연성을 제공합니다.

이 플랫폼은 AI 서비스와 기존 비즈니스 시스템 간의 격차를 메워주기 때문에 AI 기반 유스케이스에서 강력한 트랙션을 얻고 있습니다. 400개 이상의 사전 빌드된 통합 기능과 커스텀 코드 지원을 통해 n8n은 팀이 인프라를 처음부터 구축하고 유지 관리할 필요 없이 복잡한 AI 워크플로우를 오케스트레이션할 수 있도록 지원합니다.

특히 비디오 AI 분야에서 n8n은 복잡하지만 필수적인 워크플로우 단계를 처리하는 데 최적화되어 있습니다. 스토리지 시스템 간의 미디어 이동, 분석 작업 트리거, 재시도 및 실패 처리, 모델 출력 파싱, 그리고 결과를 MAM(미디어 자산 관리)이나 데이터베이스 같은 운영 도구로 다시 라우팅하는 작업 등을 매끄럽게 수행합니다.

AI 구현에서 n8n을 진정으로 강력하게 만드는 것은 여러 단계를 함께 체이닝하고, 오류 복구를 관리하며, 다양한 포맷 간에 데이터를 변환하는 기능입니다. 기술 팀은 요구사항이 진화함에 따라 이 모든 과정을 시각적 인터페이스를 통해 신속하게 반복하고 적응시킬 수 있습니다.


1.2 - TwelveLabs + n8n을 선택해야 하는 이유: 비디오 AI의 프로덕션 도입 가속화

TwelveLabs는 API를 통해 최첨단 멀티모달 비디오 이해 기능을 제공하지만, 단순히 API를 호출하는 것은 첫 단계에 불과합니다. 실제 비디오 워크플로우는 복잡합니다. 콘텐츠는 MAM에 흩어져 있고, 분석 결과는 데이터베이스에 기록되어야 하며, 컴플라이언스 팀은 그들만의 도구를 사용하고, 검색 기능은 기존 애플리케이션 내부에서 작동해야 합니다.

n8n은 TwelveLabs와 귀사의 시스템 간의 연결을 체계적으로 조율하여 이 문제를 해결합니다. 각 플랫폼에 맞는 커스텀 통합 코드를 작성하는 대신, n8n이 제공하는 사전 빌드된 커넥터와 유연한 로직을 활용해 비디오 URL을 TwelveLabs로 전송하고, 반환된 데이터를 처리하여 결과가 필요한 곳으로 정확히 라우팅할 수 있습니다.

이를 통해 프로덕션 출시 기간을 획기적으로 단축할 수 있습니다. TwelveLabs 고객은 미디어 라이브러리에 메타데이터를 풍부하게 채우거나, 컴플라이언스 검토를 자동화하거나, 내부 앱에 시맨틱 검색을 추가하는 작업 등 비디오 AI를 실제 워크플로우에 몇 달이 아닌 단 몇 일 만에 연결할 수 있습니다.


1.3 - 대상 독자

이 튜토리얼은 대규모 비디오를 다루며 기존 도구와 원활하게 통합되는 실용적인 자동화가 필요한 기술 팀을 위해 작성되었습니다.

  • 미디어 및 엔터테인먼트 전문가 (제작, 포스트 프로덕션, 방송): 대규모 라이브러리 전체에서 비디오 분석, 콘텐츠 모더레이션, 메타데이터 보강 작업을 자동화하고자 하는 분.

  • 내부 비디오를 관리하는 엔터프라이즈 팀 (사내 커뮤니케이션, 마케팅, 교육): 더 나은 검색, 정리 및 컴플라이언스 워크플로우를 추가하고자 하는 분.

  • 비디오 애플리케이션을 구축하는 플랫폼 및 엔지니어링 팀: AI 인프라를 직접 관리하지 않고도 시맨틱 검색, 추천 또는 자동 분석 기능을 임베딩하고자 하는 분.

  • 시스템 통합(SI) 업체 및 솔루션 아키텍트: 다양한 클라이언트 환경에서 비디오 AI 프로젝트를 효율적으로 완수하고자 하는 분.

  • API 및 워크플로우 실무자 (시각적 또는 코드 기반): 프로덕션 수준의 비디오 AI를 필요한 유연성에 맞게 스택에 연결하고자 하는 분.


2 - 주요 작업 (Key Operations)

TwelveLabs n8n 커뮤니티 노드는 인덱스 생성 및 비디오 업로드부터 분석 및 인사이트 생성에 이르기까지 전체 비디오 AI 워크플로우를 처리하는 세 가지 핵심 리소스 그룹을 제공합니다. 각 리소스에는 프로덕션 비디오 워크플로우의 일반적인 작업에 매핑되는 특정 기능들이 포함되어 있습니다.


2.1 - 인덱스(Index) 리소스: 검색 가능한 비디오 인덱스 관리

인덱스 리소스를 사용하면 비디오가 저장되고 처리되는 기본 컨테이너를 생성하고 관리할 수 있습니다.

  • 인덱스 생성(Create Index) – AI 모델을 사용해 검색 가능한 새 인덱스를 설정합니다. 인덱스를 구동할 모델(Pegasus Plus 또는 Marengo Plus)을 선택하고, 모델 전용 옵션을 구성하고, 유스케이스에 필요한 에드온을 활성화할 수 있습니다.

  • 인덱스 목록 조회(List Indexes) – 계정 내의 모든 인덱스를 검색하여 이미 생성된 인덱스를 확인하고 여러 프로젝트나 환경을 관리할 수 있습니다.

  • 이름으로 인덱스 검색(Search Index by Name) – 특정 비디오 컬렉션이나 프로젝트를 대상으로 워크플로우를 구축할 때 유용하게 특정 인덱스를 이름으로 신속하게 찾습니다.


2.2 - 비디오(Video) 리소스: 인덱스 내 비디오 업로드 및 관리

비디오 리소스는 콘텐츠를 인덱스에 입력하고 상태를 추적하는 실무적인 작업을 처리합니다.

  • 비디오 업로드(Upload Video) – 유연한 입력 옵션으로 인덱스에 비디오를 추가합니다. 비디오 파일을 직접 업로드하거나 비디오 URL을 제공할 수 있습니다(S3와 같은 클라우드 스토리지에 콘텐츠가 이미 있는 경우 권장). 업로드된 비디오는 자동으로 처리되어 인덱싱됩니다.

  • 비디오 목록 조회(List Videos) – 특정 인덱스에 저장된 모든 비디오를 조회합니다. 이 작업은 비디오 메타데이터와 처리 상태를 반환하므로, 비디오가 분석 동작을 수행할 준비가 되었는지 확인하고 수집 진행 상황을 추적할 수 있습니다.


2.3 - 분석(Analysis) 리소스: 비디오에서 AI 기반 인사이트 확보

분석 리소스는 인덱싱된 비디오 콘텐츠에서 즉시 활용 가능한 인텔리전스를 도출해냅니다.

  • 요약 생성(Generate Summary) – 맞춤형 요약 유형과 조정 가능한 프롬프트 템플릿을 사용하여 비디오 콘텐츠의 간결한 요약을 생성합니다. 긴 비디오를 신속하게 파악하거나 메타데이터용 설명글을 작성할 때 유용합니다.

  • 챕터 생성(Generate Chapters) – 스마트 챕터 감지 기능을 사용해 비디오를 여러 챕터로 자동 분할합니다. 결과에 타임스탬프가 지정된 세그먼트가 포함되어 있어 긴 콘텐츠를 편리하게 탐색하거나 구조화된 개요를 구성할 수 있습니다.

  • 하이라이트 생성(Generate Highlights) – 중요한 장면을 식별하여 비디오에서 핵심 순간을 추출합니다. 이를 통해 하이라이트 영상이나 클립 모음집을 만들거나 미디어 라이브러리에서 가장 관련성 높은 부분을 표면화할 수 있습니다.


3 - 기본 워크플로우 데모: S3에서 메타데이터까지


3.1 - 워크플로우 개요

이 워크플로우는 S3에서 비디오를 가져와 TwelveLabs로 분석하고, 보강된 메타데이터를 Airtable에 저장하는 엔드투엔드(End-to-End) 비디오 AI 자동화를 보여줍니다.


사전 준비 단계

시작하기 전에 다음 사항이 구비되어 있는지 확인하세요:

  • n8n 계정 (클라우드 또는 자체 호스팅)

  • S3 접근 권한이 있는 AWS 계정

  • TwelveLabs 계정 및 API 키

  • Airtable 계정


파이프라인 아키텍처

워크플로우는 크게 세 단계로 구성됩니다.

1. TwelveLabs로 인덱싱

  • S3 버킷에서 비디오 파일 가져오기

  • Lambda를 통해 pre-signed URL(사전 서명된 URL) 생성

  • 중복 URL 제거

  • TwelveLabs에서 비디오 인덱싱

2. TwelveLabs로 비디오 분석

  • 4가지 분석 영역을 병렬로 실행:

    • 컴플라이언스(Compliance): 플랫폼 정책(YouTube ABCD 프레임워크)에 유해한 콘텐츠 검출

    • 요약(Summary): 핵심 주제 및 개요 추출

    • 챕터(Chapters): 타임스탬프가 할당된 세그먼트 생성

    • 하이라이트(Highlights): 주요 명장면 추출

  • 결과 머지 및 컴플라이언스 상태 파싱

  • 데이터베이스 저장에 적합한 데이터 구조화

3. 결과 저장

  • 태그 및 메타데이터를 포함하여 Airtable에 Upsert(업데이트 또는 삽입)

  • 실제 작동 환경(Production)에서 결과는 대개 MAM, SQL/NoSQL 데이터베이스 또는 클라우드 데이터 플랫폼으로 전송됩니다.


핵심 기술 패턴
  • Pre-signed URL - AWS 자격 증명을 외부에 노출하지 않고 TwelveLabs와 비공개 S3 파일을 안전하게 공유할 수 있습니다.

  • 병렬 처리 - 4개의 분석 작업을 동시에 실행한 뒤 결과를 하나로 머지합니다.

  • Upsert 로직 - Airtable 레코드를 지능적으로 생성하거나 정정하여 대상을 업데이트합니다(재실행 시 중복 방지).

  • 상태 파싱 - AI가 생성한 텍스트에서 구조화된 컴플라이언스 상태를 정확히 추출합니다.


3.2 - 설정: 트리거 및 S3 연동


1단계: 수동 트리거(Manual Trigger) 생성

  1. n8n을 열고 "New Workflow"를 클릭합니다.

  2. "+" 버튼을 클릭하여 첫 노드를 추가합니다.

  3. "Manual Trigger"를 검색하고 선택합니다.

수동 트리거는 워크플로우를 시작하는 "시작" 버튼 역할을 수행합니다. n8n에서 "Execute Workflow"를 클릭하면, 이 노드가 활성화되어 하위 노드들을 실행합니다.

💡 프로덕션 팁: 정상적으로 동작하는 것을 확인한 뒤에는 Schedule Trigger(지정 주기 실행), Webhook Trigger(타사 연동 실행), 혹은 S3 Trigger(새 파일 업로드 시 실행) 같은 자동화 트리거로 전환하세요.


2단계: S3에서 비디오 가져오기

  1. Manual Trigger 노드에서 "+" 버튼을 클릭합니다.

  2. "AWS S3"를 검색하고 선택합니다.

  3. 노드를 설정합니다:

    • Operation: "Get Many" 선택

    • Bucket Name: 귀사의 버킷 이름 입력 (예: my-video-bucket)

    • Return All: 토글 스위치 켬 (ON)

  4. "Credentials"를 클릭하고 AWS 인증 정보를 입력합니다:

    • AWS Access Key ID 입력

    • AWS Secret Access Key 입력

    • 해당 리전 선택

이 과정은 S3 버킷에 있는 모든 파일의 메타데이터(키/경로, 크기, 최종 수정 타임스탬프)를 수집합니다. 실제 비디오 데이터를 다운로드하는 방식이 아니므로(인프라 비용 단축 및 속도 개선) 안전하며, 접근 링크 생성에 필요한 정보만을 조회합니다.

⚠️ 권한 확인: 사용하는 AWS 계정이 s3:ListBucket 및 s3:GetObject 권한을 보유하고 있는지 확인하세요. "Access Denied" 발생 시 IAM 정책을 검토해야 합니다.


3단계: 안전한 보안 접근 링크 생성

TwelveLabs가 비디오를 수집하려면 접근 권한이 필요하지만, S3 버킷은 비공개(Private) 상태여야 안전합니다. 이때 임시 보안 링크 역할을 하는 pre-signed URL(1시간 동안 유효)을 사용하면 별도의 AWS 자격 증명 공유 없이 해결할 수 있습니다.

  1. S3 노드에서 "+" 버튼을 클릭합니다.

  2. "AWS Lambda"를 검색하고 선택합니다.

  3. 노드를 설정합니다:

    • Function: 귀사의 Lambda 함수 ARN 선택 또는 직접 붙여넣기

    • Payload: "Add Expression"을 클릭하고 다음 내용을 입력합니다:

{{ JSON.stringify({ 
  bucketName: "your-bucket-name", 
  files: $input.all().map(item => item.json), 
  expiresIn: 3600 
}) }}

구현한 Lambda 함수는 각 파일에 대해 루프를 돌며 AWS SDK를 사용하고 pre-signed URL을 생성하여 n8n에 전체 URL 리스트를 반환하게 됩니다.

💡 Lambda를 사용하는 이유: n8n은 직접 자격증명을 실행하여 pre-signed URL을 생성하기 어려우므로 서버사이드 상의 AWS SDK를 기동할 수 있는 Lambda가 이 과정을 안전하게 대신 수행합니다.


4단계: URL 데이터 분석 및 정제

  1. Lambda 노드에서 "+" 버튼을 클릭합니다.

  2. "Code" 노드를 검색하고 선택합니다.

  3. 다음 코드를 붙여넣습니다:

// Parse Lambda response and remove duplicates
const seenKeys = new Set();
const results = [];

for (const item of $input.all()) {
  const response = JSON.parse(item.json.result.body);
  
  for (const file of response.files) {
    if (!seenKeys.has(file.Key)) {
      seenKeys.add(file.Key);
      results.push({
        json: {
          Key: file.Key,
          presignedUrl: file.presignedUrl,
          Size: file.Size,
          LastModified: file.LastModified,
          expiresIn: file.expiresIn
        }
      });
    }
  }
}

return results;

이 코드는 Lambda 응답(문자열 형태)을 분석하고 중복된 오브젝트를 Set 구조를 활용해 제거하여, 비디오 파일별로 정제된 n8n 아이템을 하나씩 반환합니다.


3.3 - TwelveLabs에서 비디오 인덱싱

이제 각 비디오를 AI 분석 처리를 위해 TwelveLabs 인덱스에 실시간 업로드합니다.

  1. Code 노드에서 "+" 버튼을 클릭합니다.

  2. "TwelveLabs"를 검색하고 선택합니다.

  3. 노드를 설정합니다:

    • Operation: "Upload URL" 선택

    • Index ID: 귀사의 TwelveLabs 인덱스 ID 입력 (TwelveLabs 대시보드에서 파악 가능)

    • Video URL: "Add Expression"을 누른 뒤 {{ $json.presignedUrl }}을 입력합니다.

  4. TwelveLabs API 인증 자격 증명을 추가합니다.


인덱스 대상 정보

TwelveLabs는 업로드된 각 영상을 다음 분석을 위해 가공합니다:

  • 시각적 요소 분석 - 오브젝트, 인물, 액션, 장면 구성, 색상, 배치 등

  • 오디오 받아쓰기 - 음성 화자 대화, 문맥 분석 및 나레이션

  • 화면 텍스트 검출 - 매 프레임별 글자를 분석하는 OCR 기법 동작

  • 임베딩 벡터화 - 인공지능 시맨틱 검색을 활용하기 위한 고차원 표현 데이터 가공

이 단계를 거치면 후속 분석에 사용하기 위한 고유 키인 videoId가 반환됩니다.

⏱️ 시간 소요 안내: 인덱싱 과정은 비디오 분량에 밀접한 상관관계가 있습니다(평균적으로 1분 분량 영상당 1~3분 내외 소요). n8n 노드는 처리가 끝날 때까지 대기합니다.


3.4 - 병렬 분석 프로세스 구성

효율성을 극대화하기 위해 순차적으로 기다리지 않고 4가지 갈래의 분석 작업을 동시에 조율해보겠습니다.



병렬 브랜치 수립

TwelveLabs 인덱싱 노드 출력에서 시작하여 각각 서로 다른 옵션을 가진 네 개의 분석 노드로 브랜치를 가닥 지어 연동합니다.

  1. "Index to TwelveLabs" 노드의 아웃풋에서 드래그하여 선을 연결합니다.

  2. 첫 번째 TwelveLabs Analysis 노드를 인스턴스화합니다.

  3. 세 번 더 실행하여 총 4개의 병격 가동 노드를 완성합니다.


사용 분석 유형 비교

각 분석 노드는 기본 뼈대는 일치하지만 전달할 세부 프롬프트가 다릅니다.

1 - 컴플라이언스 분석(Compliance Analysis)

  • 활용처: YouTube 기준 ABCD 프레임워크 기준을 맞춰 정책 필터링 수행

  • 반환 포맷: 상태 정보 (통과/검토필요/탈락) 및 원인이 된 구간 타임스탬프 상세 목록

컴플라이언스 분석 프롬프트 (Compliance Analysis Prompt):

Analyze this video for content compliance using YouTube's ABCD framework:

**A - Adult Content:**
- Nudity or sexual content
- Sexually suggestive content
- Adult themes

**B - Brand Safety:**
- Inflammatory or demeaning content
- Hateful content targeting protected groups
- Harmful or dangerous acts
- Shocking or graphic content
- Profanity and crude language

**C - Copyright:**
- Copyrighted music, video, or images
- Unlicensed third-party content

**D - Dangerous/Harmful:**
- Violence or graphic content
- Drugs, dangerous products, or substances
- Firearms and weapons
- Misinformation (health, elections, etc.)

For each flagged issue, provide:
1. **Timestamp**: When it appears
2. **Category**: A, B, C, or D
3. **Issue**: Brief description
4. **Action**: Allow, Restrict (age-gate), Monetization off, or Remove

**Output:**


2 - 요약 분석(Summary Analysis)

  • 활용처: 주요 중심 스토리와 전개 분석

  • 반환 포맷: 3~4개의 간결한 단락 구성 요약본

요약 분석 프롬프트 (Summary Analysis Prompt):



3 - 챕터 분할 분석(Chapters Analysis)

  • 활용처: 내용 분기점 검색에 기반한 타임라인 구분

  • 반환 포맷: 소주제별 시작 시간표 구조 및 챕터별 세부 요약

챕터 분석 프롬프트 (Chapters Analysis Prompt):



4 - 하이라이트 분석(Highlights Analysis)

  • 활용처: 시선 집중도가 높은 주목도 높은 구간 발굴

  • 반환 포맷: 하이라이트 지점 및 선정 배경 사유

하이라이트 분석 프롬프트 (Highlights Analysis Prompt):



기초 공통 사양 디자인

4개 개별 분석 컴포넌트에 적용하는 필수 설정 파라미터입니다:

  • Operation: "Generate" 또는 "Analysis" 적용

  • Index ID: {{ $json.indexId }}

  • Video ID: {{ $json.videoId }}

  • Temperature(온도): 0.2 권장 (값이 낮을수록 무작위성을 줄여 높은 정합성과 정형화된 추세의 답안 도출)


3.5 - 결과 병합 및 구조화


나누어졌던 병렬 구간 하나로 머지하기

  1. "+"를 누르고 "Merge"를 입력해 추가합니다.

  2. 노드를 세팅합니다:

    • Number of Inputs: 4로 변경 변경

  3. 인스턴스 분할 분석 아웃풋을 Merge 노드 인풋 위치에 알맞게 매칭시킵니다:

    • 컴플라이언스 (Compliance) → Input 1

    • 요약 (Summary) → Input 2

    • 챕터 (Chapters) → Input 3

    • 하이라이트 (Highlights) → Input 4

Merge 모듈은 일종의 배리어 통제소 역할을 맡아, 네 영역 모두의 AI 처리가 끝날 때까지 멈추고 기다렸다가 한 번에 흘려보냄으로써 불완전한 데이터 전송 현상을 미연에 예방합니다.


데이터 파이프라인 형태 빌딩

  1. Merge 완료 아웃풋 옆에 "+"을 눌러 Code 노드를 장착시킵니다.

  2. 코드를 가입시킵니다:

// Extract and organize all analysis results
const allItems = $input.all();
const videoId = allItems[0]?.json?.videoId || '';
const complianceResponse = allItems[0]?.json?.response || '';

// Parse compliance status from AI response
let complianceStatus = 'NEEDS REVIEW'; // Default

if (complianceResponse.includes('Overall Status: Suitable')) {
  complianceStatus = 'PASS';
} else if (complianceResponse.includes('Overall Status: Not Suitable')) {
  complianceStatus = 'FAILED';
} else if (complianceResponse.includes('Overall Status: Needs Review')) {
  complianceStatus = 'NEEDS REVIEW';
}

// Create structured output
const result = {
  videoID: videoId,
  'Compliance Status': complianceStatus,
  'Compliance report': complianceResponse,
  'Summary': allItems[1]?.json?.response || '',
  'Chapters': allItems[2]?.json?.response || '',
  'Highlights': allItems[3]?.json?.response || ''
};

return [{ json: result }];

이 코드의 역할은 다음과 같습니다:

  1. 정리가 쉽도록 video ID를 타겟 추출합니다.

  2. AI의 답변 문구를 검증하여 알맞은 컴플라이언스 기준 상태 판단 값을 계산해냅니다.

  3. Airtable의 Select 타입에 알맞은 규격화된 상태 값(PASS/FAILED/NEEDS REVIEW) 형식으로 규격화합니다.

  4. 4개 영역 결과를 평탄화(Flat Object) 작업을 해서 간명하고 깔끔하게 묶어냅니다.


3.6 - Airtable로 최종 마이그레이션 저장


저장소 데이터베이스(Base) 배치하기

  1. 사용하고 계시는 Airtable을 엽니다.

  2. 해당 칼럼 목록 필드를 선언합니다:

    • videoID (Single line text)

    • Compliance (Single select 구조 옵션 리스트: PASS, FAILED, NEEDS REVIEW 지정)

    • Compliance report (Long text)

    • Summary (Long text)

    • Chapters (Long text)

    • Highlights (Long text)


Airtable 매핑 노드 결합하기

  1. 코드 노드 다음 자리에 "+"를 누르고 "Airtable"을 검색해 붙입니다.

  2. 설치를 시작합니다:

    • Operation: "Upsert"로 선택 지정합니다. (신규는 주입하고 이미 존재하는 건 값을 업데이트 보정)

    • Base: 타겟 설정 Base 적용

    • Table: 매칭시킬 테이블 지정

  3. 변수 데이터를 필드로 매칭(Mapping)시킵니다:

    • videoID{{ $json.videoID }}

    • Compliance{{ $json["Compliance Status"] }}

    • Compliance report{{ $json["Compliance report"] }}

    • Summary{{ $json.Summary }}

    • Chapters{{ $json.Chapters }}

    • Highlights{{ $json.Highlights }}

  4. 실제 Matching Column(정합성 기준 컬럼 식별값) 항목에 videoID를 직접 지정해 줍니다.

Upsert 가동 알고리즘은 실용적 자원 관리를 보장합니다:

  • videoID 키가 DB에 존재하지 않은 경우 → 새 로우 행(Row)으로 입력

  • videoID 기준 키 속성이 확인된 기존 행 대상인 경우 → 중복 등록 없이 내용 필드 갱신

이 장치가 확보되었기에 매번 같은 영상을 테스트하며 발생 가능한 레코드 중복 난립을 완벽 차단할 수 있습니다.


3.7 - 파이프라인 실제 구동 테스트


최종 발송 전 점검 가이드라인

정상 테스트 진행을 위해 체크리스트를 점검하십시오:

  • [ ] 전체 블라인드 맵이 빠짐없이 차례로 연쇄 연결 구조를 띠고 있는지 여부

  • [ ] AWS 접근 권한 및 TwelveLabs의 인증 자격 증명이 유효한지 확인

  • [ ] 타겟 지향 ID 코드가 TwelveLabs 대시보드 구조의 목표 ID와 완전 동일한지 여부

  • [ ] TwelveLabs에서 비디오 인덱싱 작업이 완료되었는지 확인

  • [ ] Airtable의 테이블 필드 및 Base 규격 일지 확인

  • [ ] 전체 워크플로우에 대한 중간 내용 저장 완료 여부


워크플로우 가동 및 피드백 모니터링

  1. 우측 맨 끝 상단에 비치되어 있는 "Inactive" 상태 바를 토글하여 활성화 시킵니다.

  2. 핵심 "Execute Workflow" 작동단 버튼을 압축 전달합니다.

  3. 전체 흐름 진행 상황을 연계 그래프를 통해 직접 지켜봅니다.

  4. 모든 노드 우상단에 초록 체크마크 배지가 온전히 수두룩하게 뜨면 모든 절차 통과 완료를 의미합니다.


출력 기대 형태 설명

S3 노드: 파일 상세 속성의 세부 명세 데이터를 리스트 구조로 안전하게 리턴

Lambda 노드: 임시 공유 인가 pre-signed URL을 정상 파싱해 확보

Code 필터 노드: 중복 항목을 차단 소거하고 완전히 1건씩 정밀 가공해 통과시킴

TwelveLabs Index 노드: 업로드한 고유 대상 식별 번호 videoId 값 취득

4채널 개별 분석 액션 노드: 정해진 분석 질의 결과를 JSON 결과로 정조준 획득

Merge 노드: 동시 전송 시점 정렬 완료 후 안정적으로 통합해 반환

Code 최종 정리 노드: DB 칼럼 규격화 정의 파일로 데이터 전처리 작업 마무리

Airtable 보장 노드: 삽입 완료 확인 수신에 입각한 가맹 처리 확보


Airtable 데이터 삽입 적합도 확인

  1. 작동 완료 안내를 받고 Airtable을 엽니다.

  2. 지정한 데이터베이스 내역을 육안 전수 확인합니다:

    • 유일 식별값 (Video IDs)

    • 정밀 기계 판별 등급 (PASS / FAILED / NEEDS REVIEW 표시)

    • 타겟 필드별로 매칭 확인된 요약, 챕터 세부 리포트 텍스트 묶음


문제 발생 원인 및 장애 진단 가이드라인

현상

원인 분석

대응 방안

S3 노드 에러 정지

AWS 자격 증명 권한 미달

귀사의 IAM 정책 내에 s3:ListBuckets3:GetObject 권한이 탑재되어 있는지 재조율하세요.

Lambda 리턴 단 에러

AWS 상의 대상 정보 매치 불일치

AWS 콘솔에서 Lambda ARN 경로명이 정확히 타겟팅되어 있는지 대조 확인하세요.

TwelveLabs 업로드 가동 실패

지원하지 않는 Index ID 지정

TwelveLabs 콘솔에 접속해 계정 대시보드 지점의 ID 실체와 단순 복사값이 맞는지 일일이 맞추어 냅니다.

분석 데이터 유실

영상의 인덱스화 작업 대기 초과

가동 소요 시간이 정상 진행을 거치고 있는지 관리 영역(TwelveLabs)에서 상태 값을 체킹해 기다립니다.

Airtable 최종 기입 거절

필드 레이아웃 오차 발견

DB에 배치한 컬럼 영문명 알파벳의 대소문자가 정확히 한 자도 틀림없이 동일한 기입 상태인지 점검하세요.

Compliance status 겉돌거나 표기 미흡

필드 속성 사전 생성 누락

Airtable 필드 선택 생성자 옵션에 PASS, FAILED, NEEDS REVIEW를 대문자로 설정 구비해 둡니다.


작업 오류 분석 추적툴 이용 가이드

장애 구간 발굴 시 대처법:

  1. n8n 좌측에 배치된 "Executions" 로그를 호출해 열어봅니다.

  2. 최신 구동 이력 중 빨간 불이 뜬 장애 리스트를 체크 타겟팅합니다.

  3. 해당 노드 창을 확대해 분석 데이터를 직접 확인합니다:

    • 문제 부서에 전달된 상위 아웃풋 데이터 실적

    • 시스템이 뱉어낸 에러 상세 디버그 스택 트레이스 문장

    • 성능 소모 타임아웃 여부 등

💡 디버깅 꿀팁: 의심 지점에 일시적인 코드 정리 노드(Set / Code)를 꽂아두고 console.log(JSON.stringify($input.all(), null, 2))를 입력해 임시 출력되는 속성들을 직렬화 확인하여 문제를 한 걸음 더 빠르게 파악하세요.

축하합니다! S3에서 Airtable로 이어지는 비디오 AI 메타데이터 보강 워크플로우를 완벽하게 구비하였습니다. 처리된 데이터는 관리 부서의 유용한 챕터 검수 및 사내 아카이브로 온전히 기능하게 될 것입니다.


4 - n8n 및 TwelveLabs를 아우르는 영상 시맨틱 검색 전용 UI 웹 인터페이스 제작


4.1 - 워크플로우 개요

이 워크플로우는 TwelveLabs의 멀티모달 AI를 활용하고 전용 브랜드 컬러를 입힌 영상 시맨틱 검색 지원 전용 웹 인터페이스 환경을 구축합니다.


구축될 검색 엔진 파이프라인 아키텍처


구현되는 시맨틱 검색 파이프라인은 단 4개의 핵심 모듈로 압축 구성됩니다:

  1. Form Trigger - 사용자로부터 직접 검색 제어 질문 키워드를 수집하는 UI 창 제공

  2. TwelveLabs Search - 축적된 비디오 컬렉션 전체에서 질문 의미에 부합하는 구간을 파인딩하는 시맨틱 연산 구동

  3. Code - 복잡한 원천 JSON 아웃풋을 유려하고 보기 편한 HTML 그리드 뷰 화면으로 대조 변환

  4. Form Completion - 예브게 렌더링된 연산 결과물이 수록된 HTML 문서를 최종 브라우저 창에 출력


제작하는 최종 가치와 특징

  • 자유로운 문맥 언어 기반으로 입력 가능한 범용 퍼블릭 검색 웹 폼 UI를 확보할 수 있습니다.

  • 시각 내용물, 오디오 내레이션 음성 구술 내용, 화면 속 OCR 자막 내용 전체 영역 일괄 정밀 스캔 검색을 지원합니다.

  • 최적으로 정밀 선별된 Top 10 검색 영상의 타임라인 구간 정보, 썸네일 정보, 주변 보강 자막을 한 화면에 조율 렌더링 지원합니다.

  • 브랜드 디자인에 맞춤화된 자유도 높은 임베디드 CSS 스타일링 커스터마이징을 지원합니다.


테스트 환경 구비 내역

출발 전 유효 계정 보유 실태 점검:

  • n8n 서비스 계정 (클라우드 환경 또는 자체 인프라 설치 환경)

  • TwelveLabs 정규 개발용 API Key

  • 최소 1개 이상의 영상물이 온전히 인덱싱되어 준비를 끝마친 타겟 인덱스 확보

  • 가용한 타겟 비디오 처리가 올바르게 마무리되었는지 TwelveLabs 대시보드로 확인 필


4.2 - 인풋용 입력 Search Form 페이지 개설

사용자가 활용할 검색창을 구축하고 타겟 맞춤 스타일 디자인 요소를 결합하는 단계입니다.


Form Trigger 설정 설계

  1. n8n 환경에서 신규 빈 워크플로우를 소환합니다.

  2. 검색창에 "+"를 치고 첫 단계 모듈로 장착시킵니다.

  3. 설정 도구에서 "Form Trigger"를 타겟팅 지정합니다.

  4. 타겟 노드 디스플레이 레이블 선언:

    • Form Title: "TwelveLabs 시맨틱 비디오 검색 서비스" (프로젝트명 맞춤 정의 가능)

    • Form Description: 사용자를 위한 부가적인 입력 안내말을 작성합니다.

  5. 사용 질문 수집용 입력 자원 컴포넌트를 설계합니다:

    • "Add Field"를 눌러 영역 확보

    • Field Label: "검색어를 입력해 주세요"

    • Field Type: Text 데이터 속성 배정

    • Required(필수입력): 토글 온(ON) 지정


커스텀 브랜드 CSS 스타일 접목하기

  1. 정밀 Form Trigger 노드 구성 하단부로 드래그 연장해 "Options"로 진입합니다.

  2. "Add Option""Custom CSS" 순으로 추가합니다.

  3. 어두운 밤하늘 톤의 보라색 포인트 효과가 반영된 아래 CSS 값을 삽입합니다:

:root {
    /* Colors - Change these to match your brand */
    --color-background: #0A0B0D;
    --color-card-bg: #141518;
    --color-accent: #8B5CF6;
    --color-text: #FFFFFF;
    --color-text-secondary: #9CA3AF;

    /* Apply colors to form elements */
    --color-header: var(--color-text);
    --color-label: #E5E7EB;
    --color-submit-btn-bg: var(--color-accent);
    --color-submit-btn-text: var(--color-text);
    --color-focus-border: var(--color-accent);

    /* Styling */
    --font-family: 'Inter', 'Open Sans', sans-serif;
    --border-radius-card: 12px;
    --border-radius-input: 8px;
    --container-width: 520px;
}

body {
    background: linear-gradient(135deg, #0A0B0D 0%, #1A1B1F 100%);
    min-height: 100vh;
}

button[type="submit"]:hover {
    background: #7C3AED;
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(139, 92, 246, 0.4);
    transition: all 0.2s ease;
}
input:focus, textarea:focus {
    box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.2);
    transition: box-shadow 0.2s ease;
}


Form Trigger는 구동 즉시 외부에서 직접 입력 가능한 고유 웹 URL 채널 편성을 자율 배분 지원해 줍니다. 최종 저장 및 가동이 실행되면 내부 환경 경로 명칭(테스트 편람용 Test URL 및 전개 수립 배포용 Production URL)이 산출될 것입니다.

🎨 자유 구성 테마 제안: 브랜드 고유 로고 아이덴티티가 강조되는 전용 칼라 코드가 확보되어 있다면 핵스(#) 영역 색값을 직접 고쳐서 적용해보시기 바랍니다.


4.3 - 시맨틱 검색 쿼리 매칭 기획 및 데이터 정렬 수립


TwelveLabs 검색 엔진 통합

  1. Form Trigger 모듈 아웃풋 가동단 우측에 "+"를 조인합니다.

  2. "TwelveLabs"를 타겟 검출해 매칭 꽂기를 장착시킵니다.

  3. 세부 값을 배치 설계합니다:

    • Operation: "Search" 모드 전환 지점 선언

    • Index ID: 사용할 Index ID 고유 기입

    • Query Text: "Add Expression" 데이터 자동 연동 장치를 확보해 {{ $json["Search Query"] }}를 링크시킵니다.

  4. 보안 API 연결이 제대로 완성되었는지 연계 계정의 정상 구동 상태를 대조 선언해 완비해 줍니다.


TwelveLabs 멀티모달 시맨틱 핵심 구동 개괄

TwelveLabs는 3가지 고차원 분석 레이어를 동시에 탐색 활용합니다:

  • 시각적 물체 및 연출 행동 검색 - 등장 생명체, 주요 물건, 배경 환경 지각, 색상 패턴, 비디오 및 이미지 캔버스 위 글자(OCR)

  • 오디오 다각 추적 검색 - 등장 화자 독백, 스피치 어휘, 화제 의미 변곡점, 배경 오디오 톤, 음향 임베딩 효과성 검토

  • 지능융합 대화식 시맨틱 검색 - 시각 데이터와 사운드 정보가 복합 유기적으로 연관된 맥락 수준의 완전한 문맥 검출

검출된 시점에 따른 고유 정렬 데이터 아웃풋 양식:

  • video_id - 매칭된 부모 영상 분류 고유 키

  • start / end - 매칭 검색 지점의 초 단위 세부 구간 (정확한 시작 지점 지시 제어)

  • rank - 계산된 결과 밀집 추천성 정보 가중치 순서 (1등이 가장 일치도 우위)

  • confidence - 인공지능이 계산한 일치 확률 분류 등급 값 (High/Medium/Low 지향)

  • thumbnail_url - 해당 재생 구간의 실시간 생성 썸네일 이미지 CDN 주소

  • transcription - 연계 시점에 발음 기획된 대사 보조 텍스트 출력 데이터

TwelveLabs로부터 반환되는 표준 응답 JSON 결과 스키마 예시입니다:

{
  "data": [
    {
      "video_id": "6579a2c1d4b5e8f9a0123456",
      "start": 45.2,
      "end": 52.8,
      "rank": 1,
      "confidence": "high",
      "thumbnail_url": "https://thumbnails.twelvelabs.io/...",
      "transcription": "So let me explain how machine learning works..."
    },
    {
      "video_id": "6579a2c1d4b5e8f9a0789012",
      "start": 120.5,
      "end": 135.0,
      "rank": 2,
      "confidence": "medium",
      "thumbnail_url": "https://thumbnails.twelvelabs.io/...",
      "transcription": "Neural networks are inspired by the human brain..."
    }
  ]
}


정렬 raw JSON 결과 데이터를 예쁜 HTML 서식으로 조율하기

  1. TwelveLabs 모듈 아웃풋 옆에 신규 우측 "+"를 조인합니다.

  2. 웹 구조체 제작을 담당해 줄 n8n의 "Code" 컴포넌트를 소환 생성합니다.

  3. 다음 아래 수록된 렌더링용 자바스크립트 소스 전체를 교체해 기입해 줍니다:

const searchData = $input.first().json.data;
const top10 = searchData.filter(result => result.rank <= 10);

let resultsHTML = `
<table style="width: 100%; border-collapse: separate; border-spacing: 20px; margin: 20px 0;">
  <tr>
    <td colspan="4" style="text-align: center; padding-bottom: 20px;">
      <h2 style="color: #8B5CF6; font-size: 28px; margin: 0;">
        검색 결과 (가장 밀접한 후보 추천군 ${top10.length}개)
      </h2>
    </td>
  </tr>
`;

// Create 4-column grid
for (let i = 0; i < top10.length; i += 4) {
  resultsHTML += '<tr>';
  
  for (let j = 0; j < 4; j++) {
    if (i + j < top10.length) {
      const r = top10[i + j];
      resultsHTML += `
        <td style="width: 25%; vertical-align: top;">
          <div style="background: #141518;
                      border: 1px solid #2A2B30;
                      border-radius: 12px;
                      padding: 16px;
                      box-shadow: 0px 4px 12px rgba(139, 92, 246, 0.1);">
            
            <div style="position: relative; margin-bottom: 12px;">
              <span style="position: absolute;
                          top: 8px;
                          left: 8px;
                          background: #8B5CF6;
                          color: #FFFFFF;
                          padding: 6px 10px;
                          border-radius: 6px;
                          font-size: 14px;
                          font-weight: 600;
                          z-index: 10;">
                순위 #${r.rank}
              </span>
              
              <img src="${r.thumbnail_url}"
                   alt="Result ${r.rank}"
                   style="width: 100%;
                          height: 140px;
                          object-fit: cover;
                          border-radius: 8px;
                          display: block;"/>
            </div>
            
            <div style="color: #FFFFFF; font-size: 13px; margin-bottom: 6px;">
              <strong style="color: #FFFFFF;">동영상 식별 번호 (Video ID):</strong><br/>
              ${r.video_id.substring(0, 12)}...
            </div>
            
            <div style="color: #E5E7EB; font-size: 12px; margin-bottom: 6px;">
              <strong style="color: #FFFFFF;">구간 타임라인:</strong>
              ${r.start}초 - ${r.end}초
            </div>
            
            ${r.transcription ? `
              <div style="color: #D1D5DB;
                          font-size: 11px;
                          font-style: italic;
                          padding: 8px;
                          background: #1A1B1F;
                          border-radius: 6px;
                          margin-top: 8px;">
                "${r.transcription}"
              </div>
            ` : ''}
            
          </div>
        </td>
      `;
    } else {
      resultsHTML += '<td style="width: 25%;"></td>';
    }
  }
  
  resultsHTML += '</tr>';
}

resultsHTML += '</table>';
return [{ json: { html: resultsHTML } }];

이 자바스크립트는 수신된 검색 목록에서 최고 유사도 Top 10을 분류 후, 썸네일 이미지 및 비디오 고유 메타데이터가 알맞게 정비된 4열 격자 가로 배치 형태의 반응형 HTML 테이블을 실시간 생성합니다.


사용자 브라우저에 최종 결과 디스플레이 전송하기

  1. Code 구성부 우측 "+"를 조인합니다.

  2. "Form" 모듈을 선택하되, 이번에는 Form Trigger가 아닌 일반 "Form (Completion)" 액션을 지정해 마운트합니다.

  3. 하위 설정을 완비합니다:

    • Operation: "Completion" 타겟 지정

    • Completion Title: "매칭 분석 결과 확인"

    • Completion Message: "Expression" 기동 아이콘을 누르고 구조 변수 {{ $json.html }}를 연결 맵핑해 기입합니다.


결과 제공 화면 맞춤 디자인 설정

완성된 결과 리포팅 페이지가 검색창 홈 페이지와 완벽하게 조화되는 어두운 보라색 톤을 지탱하도록 같은 브랜드 CSS 양식을 탑재합니다:

  1. 마지막 모듈 화면 하단에 위치한 "Options"로 드래그 다운합니다.

  2. "Add Option""Custom CSS" 순으로 배치 장착합니다.

  3. 아래 CSS 소스를 넣어 줍니다:

:root {
    /* Colors */
    --color-background: #0A0B0D;
    --color-card-bg: #141518;
    --color-accent: #8B5CF6;
    --color-text: #FFFFFF;
    --color-html-text: #FFFFFF;

    /* Make the container full-width for better results display */
    --container-width: 100% !important;

    /* Typography */
    --font-family: 'Inter', 'Open Sans', sans-serif;
    --font-size-header: 24px;

    /* Borders */
    --border-radius-card: 12px;
}

body {
    background: linear-gradient(135deg, #0A0B0D 0%, #1A1B1F 100%);
    min-height: 100vh;
    color: #FFFFFF;
}

/* Force container to full width for grid layout */
.container, .form-container, .completion-container {
    max-width: 100% !important;
    width: 100% !important;
}

/* Ensure all text is visible on dark background */
div, p, span, strong, h1, h2, h3 {
    color: inherit !important;
}

검색 처리가 활발히 마무리되면 해당 Form Completion 모듈이 HTML 결과물 명세를 브라우저에 실시간 리다이렉트 렌더링 배포할 책임 장치를 지탱해 주게 됩니다. URL은 검색 폼 형태와 한 가닥으로 일관 연결됩니다.


4.4 - 테스트 절차 및 최종 자율 자가 검증


테스트 전 무장 결합 목록

테스트를 실행하기 전 다음 항목들이 준비되었는지 다시 한번 면밀히 체크하세요:

  • [ ] 전체 4개 노드가 일정한 직렬 라인 구조를 순서대로 확실히 이행하고 있는지 확인: Form Trigger → TwelveLabs → Code (Format HTML) → Form (Completion)

  • [ ] TwelveLabs 연동 인가 자격 토큰 연결 적합성 완료 여부

  • [ ] 사용 Index ID 코드가 TwelveLabs 개발 포탈 실체와 완벽하게 1:1 대응 일치하는지 여부

  • [ ] 타겟 영상이 정상 인덱싱되어 확보된 상태인지 검증 (인덱싱 미등록 영상은 검색에 포착되지 않습니다)

  • [ ] 워크플로우에 대한 최종 저장이 안전하게 달성되었는지 여부


구동 기점 확보 및 실시간 가동

  1. 우측 최상단에 마킹된 "Inactive" 스위치를 직접 눌러 "Active" 온 시켜 활성 상태를 선포해 줍니다.

  2. 제일 처음에 배치된 Form Trigger 구동단을 눌러 타겟 URL 라인을 조회합니다:

    • Test URL - 기능 검증 및 디버깅 시나리오 활용 용도

    • Production URL - 사내 배포 및 공유 업무 기동 활용 용도

  3. 해당 Test URL 문자 전단 주소를 복사해 빈 웹 브라우저 주소창에 기입하고 호출해 엽니다.

  4. 준비된 비디오 자료와 닿아 있는 자유도 높은 검색어를 가볍게 입력합니다. (예: "person explaining concepts" 등)

  5. 제출 버튼(Submit)을 전송한 뒤 화면 응답을 대기합니다 (안정 연산 3~5초 이내 달성 소요 예정).


정상 작동 흐름 보장 기준 상태 리스트

✅ 맞춤 브랜드 CSS를 탑재한 수려한 검색 인터페이스가 정상적으로 화면에 로딩되어 나타납니다.

✅ Submit 단추를 송원 전송한 직후, 매끄러운 수집 로딩 대기 알림창이 표출됩니다.

✅ 연동 추적이 가볍게 종료되면 영상 썸네일 구조를 반영한 최종 HTML 그리드가 전개됩니다.

✅ 후보 군마다 상세 지각 순위 랭킹 번호, 재생 위치 링크 구간, 번역 대사문이 균형 잡힌 배열로 완비되어 노출됩니다.


고장 요인 분석 및 해결 팁 일치 대조표

현상

확인 사항

처리 프로세스 권고

검색 웹 인터페이스 접속 불가

워크플로우 비활성 대기 중

n8n 우상단에 위치한 Active 버튼 스위치를 반드시 초록 불이 들어오게 켬(ON)으로 세팅하세요.

인터페이스 디자인 틀어짐

브라우저 캐시 침전

새로고침을 시행하거나 캐시 간섭을 피하기 위해 인코그니토(시크릿) 테스트창을 호출해 접근해 봅니다.

매칭 분석 타겟 없음 출력

미가용 Index ID 세팅

TwelveLabs 포털의 원본 식별 ID 표기와 모듈에 타이핑되어 있는 ID 문자열 구조가 맞는지 1:1 대조 보정하세요.

매칭 분석 타겟 없음 출력

대기 중이거나 아직 인덱싱 안 됨

TwelveLabs 계정 사이트에 들어가 해당 비디오 작업 현황 수치가 완연한 "Ready" 상태 값을 유지하고 있는지 조회하십시오.

매칭 분석 타겟 없음 출력

너무 가혹하고 복잡한 질의 단어 구성

영상이 실제로 담고 있을 보편성 위주의 직관적인 영문 단어 조합부터 가용 범위를 시도해 봅니다.

결과물이 raw JSON으로 투박하게 출력

동적 바인딩 스위치를 일반형 유지

Form Completion 모듈 환경의 입력값 우측에 마킹된 작은 "Expression" 제어 단추가 기동되어 활성화되었는지 체크하세요.

결과물이 {{ $json.html }} 코드로 출력

텍스트 입력 장치 상태 오작동

반드시 무지 막대 텍스트 형태(Plain)를 피하고 동적 구조 연동을 전담하는 Expression 상태로 변경 구사해야 합니다.

디자인 폰트 혹은 간격 파열 발견

옵션 누락

반드시 Form Trigger 노드와 Form Completion 노드 양쪽 모두의 CSS 옵션 창에 빠짐없이 CSS 코드가 삽입되어 있는지 재조율하세요.

결과는 뜨는데 썸네일이 정상 디스플레이 안 됨

토큰 유실 및 썸네일 주소 노화 거절

TwelveLabs 가동 측 API 응답 코드가 유효한지 확인하고, 해당 썸네일 주소를 복사해 별도로 띄워 세부 보안 문제를 확인하세요.

엉뚱한 쿼리 처리 현상 발생

잘못 설계된 변수 링크 매칭

TwelveLabs 노드의 Query Text 입력 부품에 연동 기재한 문장이 정확하게 {{ $json["Search Query"] }} 와 매치해 있는지 체크 배정하세요.


구축 파이프라인 버그 패널 활용 진단법

정상 작동 장애 지점 식별 가이드:

  1. n8n 좌측에 표기된 "Executions" 로그 판독판을 직접 호출해 봅니다.

  2. 방금 오차가 기록된 실행 번역(날짜 및 타임스탬프 이력 포함)을 표적 더블 클릭합니다.

  3. 발생 이상 지점 내부를 디버프 탐색해 봅니다:

    • 매칭 부품 입출구에 기록된 입 출력 데이터 속성 상태 점검

    • 컴포저가 보고해 준 구체적인 에러 안내 문구 해독

    • 모듈별 처리 시간 한계치 초과 기록 유무 파악

시스템에 문제 발생 시 즉각 어디가 고장을 일으켰는지에 관련 빨간색 신호를 직접 발굴 기동할 수 있어 수동 교정이 용이해집니다.

💡 고급 디버그 기법: TwelveLabs 와 HTML Code 블록 중간 갈망 영역에 일시 간섭 목적의 임시 Code 노드를 장착한 후 console.log(JSON.stringify($input.all(), null, 2)); return $input.all();를 탑재해 인가 시 처리되는 원자 데이터 전문의 온전한 형태를 즉각 추적해 내세요.


테스트 시도해 볼 만한 비디오 쿼리 샘플 제안 목록

영상이 가지고 있는 개성을 바탕으로 아래 쿼리들을 다양하게 시도해 보세요:

비디오 데이터에 수록된 내용물이...

쿼리에 다음과 같이 입력해 보세요

성공할 수 있는 탐색 이유 개관

사람이 말하거나 스피치 전개

"person speaking to camera"

영상 내 시각 거동과 발화 음성의 복합 판단

소개 지침 브리핑 및 제품 소개 데모

"showing how to use"

영상 속 사물 행동 조작 패턴과 맥락 스피치 교정 감지

자연경관 야외 드론 샷

"outdoor nature scene"

시스템이 지닌 환경 시나리오 분류기 매칭

프레젠테이션 프리포맷 슬라이드

"slides with charts"

차트 그래픽 지각 연산 장치 기능 및 OCR 분석 가맹

다자간 인터뷰 다큐멘터리

"two people conversation"

화면 내 인물 개수 인식 구조와 구술 질의 교차 파악

튜토리얼 안내

"step by step tutorial"

전체 기승전결 맥락 인지 가용 도출

브랜드 상징 로고 형상 노출

"logo on screen"

오브젝트 특정화 형상 지각 장치 연산 및 OCR


완성 파이프라인 흐름 도식 요약

함께 빌드해 낸 시맨틱 웹 서비스의 전체적인 흐름 구조는 다음과 같습니다:


시맨틱 비디오 검색 전용 웹 인터페이스의 핵심 빌딩 가이드를 마칩니다. 이제 사용자는 복잡한 전문 기술 용어 대신 보편적인 문장이나 정황 설명 형태의 자연어 질의를 입력하는 것만으로 원하는 아카이브 속 장면 구간 정보를 안전하고 직관적인 전용 웹 폼을 통해 시각 필터링하여 감상하고 관리할 수 있게 됩니다.


5 - 마치며

복잡한 코드 통합 구조를 한 줄도 짜지 않고 즉시 적용이 가능한 두 가지 완결된 상용 프로덕션 레벨 비디오 AI 워크플로우를 성공적으로 조율하셨습니다. S3 데이터 관리 및 4대 영역 AI 동시 분석 결과물을 Airtable에 깔끔하게 이식시킨 워크플로우와 편리하게 비동기적으로 구동을 도와주는 유저 친화적 브랜드 테마 탑재 시맨틱 서치 인터페이스를 구축해 보았습니다. n8n과 TwelveLabs의 상호 협력 구조를 통해 통념적으로 복잡한 비디오 AI 영역의 인프라 난제를 해소해 낼 수 있음을 적극 확인해 보았습니다.

TwelveLabs n8n 커뮤니티 전용 노드를 이용함과 동시에 고차원 비디오 이해 도구인 비주얼 판독, 음성 지각, OCR 텍스트 캡처 장치와 시맨틱 탐색 기술을 n8n 상에서 다이렉트로 자유롭게 이용해 낼 수 있습니다. 긴 개발 문서 분석 피로도나 번잡한 네트워크 라이브러리 탑재, 연동 재조율 로직이 더 이상 장애물이 되지 않습니다. 평소 자사 업무에 기용되던 비지니스 도구들(S3, Airtable, 사내 전산 DB, 솔루션 연동 Webhook 채널 목록들)을 맞춤으로 조립하여 비디오 자동화 구조 기반을 단 몇 시간 내로 완성해 보세요.

응용 가능성 제안: 이 패턴은 다양한 유스케이스로 유연하게 확장될 수 있습니다. 예컨대 소셜 미디어 배포를 겨냥한 자동 비디오 자막 클립 제작, 미디어 콘텐츠 모더레이션 자율 정제, 메타데이터 보강을 곁들인 보관서 이관 마이그레이션 자동화나 전용 지능형 개인 추천서 엔진 수집 설계가 용이해집니다. TwelveLabs 공식 문서를 살펴 고급 API 기능(임베딩 추출, 커스텀 프롬프트 구현)을 연구하고, n8n 커뮤니티 허브 포럼에서 다른 글로벌 고급 엔지니어들의 영리한 연동 패턴 노하우들을 이식해 보세요. 시스템 빌딩 시 문제 봉착이나 기술 조율 문의 사항은 TwelveLabs 공식 Discord 소통창에 찾아와 말씀해 주시거나 jordan@twelvelabs.io 혹은 brice@twelvelabs.io 메일 주소로 편안하게 질의 창을 노크해 주시기 바랍니다.