n8n을 사용한 구글 슬라이드 제목 자동 작성

소개

시도하고자 했던 것과 그 이유를 알려주세요.

저는 강의나 발표를 위해 논문이나 다른 데서 그림으로 된 자료를 슬라이드로 만듭니다. 그러다 보면 수백 장의 슬라이드가 그림만 포함되어 있어 각 슬라이드에 제목을 일일이 작성하는 작업이 번거로웠습니다. 일부 슬라이드에는 이미 제목이 있거나 단순히 출처 정보만 있어, 수작업으로 처리하기가 매우 비효율적이었습니다. 이를 자동화하여 작업의 효율성을 높이고자 했습니다.

진행 방법

어떤 도구를 사용했고, 어떻게 활용하셨나요?

도구: n8n (워크플로우 자동화 플랫폼), Google Slides API, Google Drive API, OpenAI GPT-4o API

핵심 추가 단계: 원본 파일 보호를 위한 복사본 생성 및 페이지마다 썸네일(전체 슬라이드 이미지)을 받아 제목 생성에 활용

  1. Form Trigger를 통해 워크플로우를 시작

    • 사용자가 Google Slides 링크나 파일 ID를 입력할 수 있는 웹 폼 제공

  2. Extract File ID Function 노드에서 입력값 파싱

    • 전체 URL 또는 파일 ID만 입력해도 정상 처리

  3. Get Original Info로 원본 프레젠테이션 정보 가져오기

  4. Create Working Copy (HTTP Request 노드)

    • Google Drive API를 통해 원본의 복사본 생성

    • 원본 파일은 전혀 수정하지 않음

    • 파일명: "원본제목 - 제목 추가 완료 (날짜)"

  5. Get Slides 노드로 복사본의 전체 슬라이드 데이터를 가져옴

  6. Split Slides Function 노드로 개별 슬라이드 단위로 분리

    • 각 슬라이드에 인덱스, 전체 수, 마지막 슬라이드 여부 등 메타데이터 추가

  7. Split In Batches 노드(batch size=1)로 슬라이드를 하나씩 순차 처리

  8. Check Title Function 노드로 제목 존재 여부 확인

    • 텍스트가 없거나 10단어 이하인 경우

    • "출처" 또는 "source"만 있는 경우

    • 위 조건에 해당하면 제목 생성 필요로 판단

  9. If No Title 조건 분기

    • 제목이 필요한 경우만 Vision API 처리

    • 이미 제목이 있으면 건너뛰기

  10. Get Slide Thumbnail (HTTP Request 노드)

    • Google Slides API의 썸네일 엔드포인트 호출

    • URL: https://slides.googleapis.com/v1/presentations/{{presentationId}}/pages/{{slideId}}/thumbnail

    • Parameters: thumbnailProperties.thumbnailSize=LARGE

    • OAuth2 인증으로 접근 권한 확보

  11. Analyze image (OpenAI LangChain 노드)

    • GPT-4 Vision API 호출

    • 썸네일 이미지 URL(contentUrl) 전달

    • 프롬프트: "슬라이드 이미지를 읽고 한줄 제목으로 만들어 줘. 제목만 적고 ** 같은 기호 적지마."

  12. Prepare Update Function 노드

    • Google Slides batchUpdate API 요청 준비

    • 텍스트 박스 생성, 제목 삽입, 스타일 적용 명령 구성

  13. Insert Title HTTP Request 노드

    • Google Slides API batchUpdate 엔드포인트 호출

    • 준비된 요청으로 제목 삽입

  14. Merge Results 노드

    • 제목 추가된 슬라이드와 건너뛴 슬라이드 결과 병합

  15. Check If Last Slide IF 노드

    • isLastSlide == true 조건 확인

    • True: 완료 처리

    • False: Split In Batches로 루프하여 다음 슬라이드 처리

  16. Respond to Form

    • 처리 완료 메시지와 함께 새 파일 링크 제공

프롬프트 전문

슬라이드 이미지를 읽고 한줄 제목으로 만들어 줘. 제목만 적고 ** 같은 기호 삭제해 줘.

Tip:

  • 썸네일 API를 활용하여 전체 슬라이드 이미지를 확보함으로써 더 정확한 제목 생성 가능

  • 원본 파일 보호를 위해 복사본에서 작업하는 것이 안전

  • Form Trigger를 사용하면 비개발자도 쉽게 사용 가능

결과와 배운 점(수백번 반복한 점).

이 워크플로우를 통해 지루하고 반복적인 슬라이드 제목 작성 작업을 완전히 자동화했습니다. n8n과 GPT-4 Vision API를 결합한 자동화 방식은 작업 효율성을 크게 향상시켜 주었습니다. 작업 중 얻은 중요한 교훈은 다음과 같습니다:

  • 구글 노드와 api: n8n의 구글 노드는 내가 원하는 기능은 절대 제공하지 않았습니다. 결국 api 보고 클로드에게 던져주며 하소연해서 겨우 만들었습니다.

  • 원본 파일 보호: 실수를 방지하기 위해 항상 복사본에서 작업하는 것이 중요했습니다.

  • 반복과 조건부 처리: batch, If 노드를 활용하는 방법을 몰라 꽤나 고생했습니다. 지금도 돌아만 가는 수준인데 이거 좀 깔끔하게 구현하는 방법을 알고 싶네요.

  • 인증 처리: Google OAuth2와 openAI 인증은 원없이 써봤네요.

  • 더 하고 싶은 부분: Form Trigger와 Respond to Webhook을 활용하면 웹 인터페이스를 통해 누구나 쉽게 사용할 수 있는 도구로 만들 수 있을 것 같은데 아직 못했습니다..

본 사례가 유사한 자동화 작업을 고려하는 분들께 도움이 되었으면 좋겠습니다.

P.S. 내일 강의인데.. 여기서 시간과 에너지 다 썼네요. 이제 진짜 강의록 만들어야 겠습니다.

👉 이 게시글도 읽어보세요