본문으로 이동
DLDevelopment Lab책을 읽고, 직접 만드는 실험실
19AI가 내 유튜브 댓글을 읽고 답글을 준비합니다20허용한 댓글에만 자동으로 답하게 합니다21내 주식서비스의 챗봇을 기획합니다22기획한 챗봇을 내 주식서비스에 구현합니다
PART 6 · 만든 서비스에 AI를 붙이고, 반복 업무를 맡깁니다20장

허용한 댓글에만 자동으로 답하게 합니다

승인한 영상·종류·시간 범위에서 자동답글을 보내고, 중복·결과 미확인·중지를 실제로 확인합니다.

이어갈 프로젝트 · ai-media-works

19장의 로컬 조회·분류·초안·두 검사가 준비돼 있고 댓글 사용이 가능한 내 영상 한 편이 있습니다.

커맨드준비막혔을 때완료 확인소스·검증
이번 장의 준비와 서비스

필요한 도구 · Node.js · 기존 Next.js 서버 · DB의 원자적 상태 관리 · Supabase Cron·Vault

이미 준비한 계정과 기능은 그대로 이어갑니다.

youtube 준비 안내 →google-cloud 준비 안내 →gemini 준비 안내 →supabase 준비 안내 →vercel 준비 안내 →

Google Chat·원격 Worker·경영 보고·영상 자동 제작·소개 댓글·댓글 삭제·차단·전체 채널 운영·공개 관리 UI를 추가하지 않습니다.

순서대로 입력하는 커맨드

현재 단계와 입력 위치를 확인한 뒤 하나씩 복사하세요.

01시작 전 확인

Claude Code·Codex에 입력튜터 요청

현재 장을 시작하거나 다시 이어갈 때

먼저 확인 · 현재 장과 실제 프로젝트를 확인. 기존에 확인한 맥락은 재사용.

20장 시작해.

02읽기 승인과 쓰기 승인을 구분합니다

Claude Code·Codex에 입력실습

실제 답글 권한 확인

먼저 확인 · 19장 대상 영상·계정과 현재 Token Scope 확인.

시험 영상의 댓글에 답글을 쓰는 데 필요한 현재 YouTube API 권한을 확인해줘.
실제 Token이 이미 youtube.force-ssl을 허용하면 다시 승인받지 마.
부족하면 18~19장의 OAuth 앱과 인증 흐름을 보존하면서 필요한 승인을 준비해줘.
동의 화면에서는 내가 계정·채널·권한을 직접 확인하게 해줘.

기존 업로드용 Token을 지우거나 다른 프로젝트의 설정을 바꾸지 마.
권한을 받았다는 이유로 자동답글을 켜지 마.
댓글 삭제·수정·차단, 영상 업로드·공개 변경 기능은 이번 도구에 연결하지 마.
실제 비밀값은 화면과 로그에 출력하지 마.

03실행할 서버와 처리 기록을 준비합니다

Claude Code·Codex에 입력실습

Vercel·Supabase 준비

먼저 확인 · 기존 계정·요금·별도 댓글 저장 공간 확인. 새 프로젝트·비용 선택은 독자 판단, 필요한 값은 안전한 위치에 직접 입력.

ai-media-works를 Vercel에서 실행하고 Supabase에 최소 처리 기록을 남길 준비를 해줘.
먼저 기존 계정·프로젝트·요금 조건을 확인해줘. 주식서비스의 DB와 설정은 바꾸지 마.
내 승인이 필요한 새 프로젝트 생성이나 비용 선택이 있으면 이유와 범위를 알려줘.

서버가 읽는 YouTube OAuth·Gemini·DB 연결·예약 호출 인증값의 이름과 입력 위치를 표로 만들어줘.
실제 값은 내가 입력하거나 기존 안전한 저장 위치에서 전송하게 해줘. 값은 대화·명령줄·Git·로그에 남기지 마.
배포 환경에서 적용될 이름을 실제 코드와 대조하고 새 배포 후 값의 노출 없이 연결만 검사해줘.

19장의 댓글 원문·초안 미리보기와 설정 입력 화면은 로컬 전용으로 남기고 Production에서는 차단해줘.
서버의 실행·상태 조회는 인증 없는 요청을 거부하고, 브라우저 코드에 운영용 비밀값을 넣지 마.
자동답글과 예약은 꺼진 상태로 준비해줘. 아직 댓글을 보내지 마.

04대상을 먼저 준비하고 기준 시각을 남깁니다

Claude Code·Codex에 입력실습

대상·기준 시각·기록 구현

먼저 확인 · 승인한 채널·영상과 DB 연결 확인.

자동답글의 설정과 처리 기록을 만들어줘.
대상은 승인한 채널·영상 한 편으로 고정하고, 처음 대상을 준비할 때는 기준 시각만 저장하고 예약은 꺼둬.
그 실행에서는 댓글을 보내지 마.
그 뒤에는 시작 시각 이후이면서 최근 7일 안의 공개된 최상위 댓글만 후보로 삼아줘.
중지·재시작·재배포를 해도 시작 시각과 처리 기록은 유지해줘.

한 실행에서 최대 20건만 분류해줘. 조회 페이지가 더 있으면 남은 범위를 표시하고 다음 실행에서 이어가줘.
20건 또는 첫 페이지를 봤다는 이유로 전체 확인을 완료 처리하거나 뒤의 댓글을 건너뛰지 마.
페이지 표지가 만료되면 시간 범위를 겹쳐 다시 읽고 기존 처리 기록으로 중복을 제거해줘.
7일보다 오래된 미처리 댓글은 자동답글 대상에서 제외했다고 구분해줘.

05같은 댓글에 두 번 답하지 않게 합니다

Claude Code·Codex에 입력실습

중복·결과 미확인 처리 구현

먼저 확인 · 기준 시각·기록 구조·19장 두 검사 확인.

채널·영상·원래 댓글 ID를 묶어 같은 댓글을 두 실행이 동시에 보내지 못하게 해줘.
전송을 맡은 상태를 DB에 먼저 기록하고, 실제 전송 성공 뒤 YouTube가 준 답글 ID를 기록해줘.
예약 전송 직전에는 예약이 켜져 있는지, 수동 전송은 화면에서 새로 승인한 문장인지 확인해줘.
두 경우 모두 결과 미확인으로 중단된 상태가 아닌지와 후보·검사 결과가 유효한지 다시 확인해줘.

전송 요청 뒤 응답을 못 받거나, 성공 뒤 기록 저장에 실패하면 결과 미확인으로 남기고 자동화를 멈춰줘.
전송 중 기록의 잠금 시간이 지났다는 이유만으로 다시 보내지 마.
먼저 해당 원래 댓글의 답글을 실제로 조회해 내 채널의 답글이 있는지 확인해줘.
댓글 목록에 함께 온 답글은 일부일 수 있으니, 그것만 보고 답글이 없다고 결론 내리지 마.
원래 댓글의 답글 목록을 마지막 페이지까지 확인해줘.
확인할 수 없으면 미확인으로 남겨. 자동 재전송하지 마.
해당 댓글에 내 채널의 답글이 이미 있으면 추가로 보내지 마. 그것이 이번 전송인지
확정할 수 없으면 성공으로 바꾸지 않고, 중복 방지를 위해 사람 확인 상태를 유지해.

댓글 원문·작성자·답글 전문은 저장하지 말고 실행에 필요한 ID·상태·시각·이유 코드만 비공개로 보관해줘.
30일이 지난 처리 기록은 삭제하고, 이미 후보 기간인 7일을 벗어난 댓글은 다시 처리하지 마.
권한 철회나 삭제 요청이 있으면 적용 정책을 확인해 더 이르게 정리할 수 있게 해줘.

06시험 댓글 한 건을 승인해 실제로 보냅니다

Claude Code·Codex에 입력실습

수동 시험 Preview

먼저 확인 · 예약 꺼짐과 기준 시각 확인. 그 뒤 독자가 실제 시험 댓글을 작성할 차례를 안내. 작성 전 이미 남겼다고 가정하지 않음.

예약은 켜지 말고 실제 전송을 위한 기준 시각만 한 번 준비해줘.
이후 내가 남긴 시험 댓글 한 건을 읽어 19장의 분류와 두 검사를 거친 Preview를 보여줘.
영상·원래 댓글·최종 답글·사용 계정이 무엇인지 확인할 수 있게 해줘.
내가 작성한 시험 댓글은 이번 수동 확인 대상으로만 허용하고 자동 대상에는 넣지 마.
내 승인 전에는 보내지 마.

07시험 댓글 한 건을 승인해 실제로 보냅니다

Claude Code·Codex에 입력실습

시험 댓글 한 건 전송 승인

먼저 확인 · 독자가 직전 Preview의 실제 계정·영상·댓글·문장을 확인했고 그 한 건 전송을 요청하는지 확인. 이전 전송·미확인 기록이 있으면 실제 상태부터 확인.

방금 확인한 Preview의 시험 댓글 한 건에, 확인한 답글 그대로 한 번만 보내줘.
보내기 직전에 채널·영상·원래 댓글과 내용이 바뀌지 않았는지 다시 확인해줘.
달라졌으면 보내지 말고 새 Preview를 보여줘.
다른 댓글은 처리하지 말고 예약도 켜지 마.
전송 결과와 실제 YouTube의 답글, 저장한 답글 ID가 같은지 확인해줘.

08시험 댓글 한 건을 승인해 실제로 보냅니다

Claude Code·Codex에 입력실습

같은 시험 댓글의 무전송 재실행

먼저 확인 · 방금 보낸 동일 댓글과 실제 답글·기록 확보. 새 댓글을 만들어 대체하지 않음.

방금 전송한 동일 댓글을 같은 처리 경로에 다시 넣어 중복 방지를 확인해줘.
기존 처리 기록과 YouTube의 실제 답글을 대조하고, 새 답글이 추가되지 않아야 해.
시험용 외부 응답으로 동시에 실행한 경우와 전송 뒤 응답이 끊긴 경우도 검사해줘.
그 실패 시험 때문에 실제 YouTube에 새 댓글을 보내지는 마.
정상 전송, 재실행 무전송, 결과 미확인 시 중지를 각각 구분해 보고해줘.

09작은 범위로 예약 실행을 켭니다

Claude Code·Codex에 입력실습

예약 준비와 중지 시험

먼저 확인 · 실제 한 건 전송·중복 방지와 배포 연결 확인.

현재 프로젝트에서 예약 실행에 사용하는 Vercel 주소와 인증 방식을 먼저 확인해줘.
Supabase에서 그 주소를 10분마다 부르는 예약 하나를 준비해줘.
주소와 인증값은 안전한 저장소에서 읽고, 인증값을 URL·예약 SQL·로그에 직접 넣지 마.
예약 등록 결과와 서버가 실제 작업을 마친 결과는 별도로 기록해줘.

승인한 영상 한 편에서만, 시작 시각 이후이면서 최근 7일 안의 댓글을 처리하게 해줘.
일반 반응·후속 요청 중 두 검사를 통과한 후보를 순서대로 처리해줘. 회당·하루 전송 개수 제한은 두지 마.
전송 결과가 미확인이면 기록과 중단 상태를 유지하고 자동 재전송하지 마.
영상 소유 채널이 작성한 최상위 댓글은 내용과 관계없이 자동답글과 수동 승인 대상에서 모두 제외해줘.
댓글 작성 채널 ID를 확인할 수 없을 때도 보내지 말고 검토 대상으로 남겨.
후보를 고를 때와 초안을 만들 때, 실제 전송 직전에 영상 소유 채널 ID와 댓글 작성 채널 ID를 다시 대조해줘.
답글·이미 처리한 댓글도 자동 대상에서 제외해줘.
조회·Gemini의 호출량과 전체 실행 시간을 제한하고, API 한도나 인증 오류에서 반복 호출하지 마. 여러 건을 보내다 중지·오류가 나면 멈추고 이미 보낸 건수를 정확히 기록해줘.
같은 감사 문장을 짧은 시간에 여러 댓글에 반복 게시하려는 경우 전송하지 않고 검토 대상으로 남겨.
검사를 피하려고 같은 문장의 표현만 무작위로 바꾸는 기능은 만들지 마.

먼저 시험 실행과 중지 방법까지 확인해줘. 아직 예약과 자동전송은 활성화하지 마.

10작은 범위로 예약 실행을 켭니다

Claude Code·Codex에 입력실습

확인한 범위의 예약 자동답글 승인

먼저 확인 · 독자가 대상·처리 조건·비용·중지 방법을 확인하고 실제 활성화를 요청하는지 확인. 미확인 전송 중지 상태면 해제하지 않음.

지금 확인한 대상 영상 한 편과 제한으로 예약 자동답글을 켜줘.
일반 반응·후속 요청 중 검사를 통과한 후보만 자동 전송하도록 승인할게.
확신이 낮거나 질문·사실 지적이 있으면 사람 확인으로 남기고, 광고에는 답하지 마.
승인 범위 안의 매 답글마다 다시 묻지는 않아도 돼. 대상이나 자동응답 조건을 바꿀 때는 확인해줘.

내가 누르지 않은 다음 예약 실행이 실제로 끝난 기록을 확인해줘.
후보가 없으면 0건 실행으로 표시하고, 답글 전송 성공까지 확인한 것으로 적지 마.

11자동화에는 멈추는 방법도 있어야 합니다

Claude Code·Codex에 입력실습

자동화 중지 요청 또는 실습 마무리

먼저 확인 · 현재 예약·전송 허용·진행 중 작업 확인.

자동답글을 멈춰줘.
서버의 예약 전송 허용 상태를 먼저 끄고 예약 호출도 비활성화해줘.
이미 전송을 시작한 작업이 있는지 확인하고, 결과가 불분명하면 미확인으로 알려줘.
이미 올라간 답글은 삭제하지 마. 시작 시각과 처리 기록도 지우지 마.
멈춘 뒤 새 예약 전송이 시작되지 않는지 확인하고, 다시 켤 때 무엇을 확인할지 알려줘.

12이 장을 마쳤는지 확인합니다

Claude Code·Codex에 입력튜터 요청

이번 장 완료 조건을 확인할 때

먼저 확인 · 현재 장과 실제 프로젝트를 확인. 기존에 확인한 맥락은 재사용.

장 완료 확인해줘.
이 장에서 막혔을 때

20장 단계별 힌트

한 번에 한 단계만 안내합니다.

H20-ZERO · 첫 실행에 답글이 0건입니다.

힌트 1

첫 실행에서 무엇을 하기로 했는지 보세요.

힌트 2

기준 시각만 기록하는 단계라면 전송 0건이 정상입니다.

힌트 3

기준 시각 이후이면서 최근 7일, 승인 영상, 자동 대상인 댓글인지 확인합니다.

명시적으로 정답을 요청했을 때

대상 준비는 기준 시각만 저장하고 전송하지 않습니다. 그 뒤 새 시험 댓글을 작성해 재조회하고 화면의 문장을 승인합니다. 예약 켜기는 별도 단계입니다. 모든 0건을 정상이라고 추정하지 않습니다.

H20-UNKNOWN · 전송 요청 뒤 응답이 끊겼습니다.

힌트 1

재전송보다 실제로 올라갔는지 확인하는 일이 먼저입니다.

힌트 2

결과 미확인 상태와 자동 전송 중지 여부를 보세요.

힌트 3

원래 댓글 ID로 comments.list의 실제 답글 페이지를 확인합니다. thread에 붙은 일부 답글만으로 판단하지 않습니다.

명시적으로 정답을 요청했을 때

내 채널의 답글이 있으면 추가로 보내지 않습니다. 이번 시도의 결과인지 확정할 수 없으면 미확인을 유지하고 사람이 판단합니다.

H20-CRON · 예약은 성공인데 답글이 없습니다.

힌트 1

예약의 호출 성공과 작업의 성공을 나누어 보세요.

힌트 2

서버의 인증·후보·검사·실행 시간 중 어디서 멈췄는지 확인합니다.

힌트 3

최근 예약 실행 ID와 서버 처리 기록의 시간·대상·이유 코드를 대조합니다.

명시적으로 정답을 요청했을 때

작업 결과를 확인한 뒤 해당 원인만 고칩니다. 토큰 만료·권한 철회·사용 한도는 재승인 또는 대기가 필요할 수 있고 무한 재시도하지 않습니다.

디버깅 → 정상 기록 복구 → 장별 소스로 재시작 →
이번 장의 완료 체크리스트
  • 권한·배포 경계실제 youtube.force-ssl 승인과 채널, 서버 전용 비밀값, Production의 로컬 화면 차단을 확인합니다.
  • 후보 범위기준 시각·최근 7일·한 영상·최상위 댓글·페이지 재개·자기 댓글 제외를 시험합니다.
  • 중복·미확인동시 선점·여러 댓글 순차 전송·전송 후 응답 단절·저장 실패 때 재전송하지 않는지 격리 시험합니다.
  • 한 건의 전송승인한 같은 시험 댓글의 실제 답글과 기록 ID를 대조하고 재실행에서 추가 전송이 없는지 봅니다.
  • 실제 예약사전 승인한 자동 범위에서 예약이 실제 호출하고 처리한 기록을 확인합니다. 등록만으로 완료하지 않습니다.
  • 중지·보존자동 전송과 예약을 끈 뒤 실제 상태를 확인하고 시작 시각·기록이 남는지 확인합니다.
장 완료 확인해줘.

실제 프로젝트에서 튜터와 확인합니다. 사이트를 열어본 기록은 학습 완료가 아닙니다.

장별 소스와 저자 검증 기록
20장 완성 소스 ↗저자 검증 상세 기록 ↗

장별 소스는 해당 장까지의 기준 상태입니다. 정상 실습은 내 프로젝트를 이어가고, 완성 소스는 비교·복구할 때 사용합니다.

자료 판본 1c784213
이 장의 개발 용어
API
프로그램이 다른 서비스와 정해진 방식으로 요청·응답을 주고받는 연결 방법.
Production
실제 운영 배포 환경. 로컬·Preview와 설정이 다를 수 있습니다.
튜터 사용 안내실습 자료 업데이트
← 이전 장19장. AI가 내 유튜브 댓글을 읽고 답글을 준비합니다다음 장 →21장. 내 주식서비스의 챗봇을 기획합니다
Development Lab아이디어를 AI와 함께 나만의 결과물로 만듭니다.

책에서 배운 개발 원칙을 AI와 직접 만들며 확인하는 실험실입니다. 아이디어를 서비스로, 서비스를 나만의 결과물로. AI와 함께 만들고, 직접 확인하며, 내 손으로 완성합니다.

자료실튜터 안내업데이트
SAStudy AI LabILInvestment LabDLDevelopment Lab

© 2026 Study AI Lab. All rights reserved.