네—거의 다 준비됐고, “프로그램(서버) 쪽”에서 아래 체크만 하면 바로 붙일 수 있어요. 필요한 것만 콕 집어 정리할게요.
지금 꼭 준비해야 할 것(필수)
-
API 서버 기동 + 엔드포인트 고정
-
/captions/processPOST로 JSON 수신하도록 동작 확인 -
로컬에서
curl로 모의 요청 테스트(200 OK 확인)
-
CORS/네트워크
-
FastAPI에 CORS 미들웨어 적용(POST/OPTIONS 허용)
-
(확장은 background에서 fetch하니 대개 문제 없지만 안전하게 켜두기)
-
인증(간단 토큰)
-
서버:
AUTH_TOKEN환경변수로 Bearer 토큰 검사 -
확장 팝업: 토큰 저장 → background에서
Authorization: Bearer …헤더 추가
-
구글 시트 쓰기
-
서비스계정 JSON 준비(환경변수
SHEETS_CREDENTIALS_JSON) -
대상 스프레드시트를 서비스계정 이메일에 공유(편집권한)
-
SHEET_ID,SHEET_NAME환경변수 설정 -
서버에서 요약행 append 로직 탑재(대본 제외)
-
오케스트레이터 연결(선택)
-
분석/새대본 자동 트리거 원하면
ORCH_URL세팅 →/captions/process에서 비동기 호출
-
로깅/관찰성
-
요청 ID/비디오ID/응답코드 로그 남기기(실패 사유 120자 프리뷰 정도)
-
예외는 잡고 200/207로 응답(시트 실패가 전체 흐름을 막지 않게)
-
요청 크기 제한
-
긴 자막 대비 서버 Request body 제한(예: 10–20MB) 명시
-
너무 큰 경우 413으로 거절 + 확장에서 경고 토스트
권장 추가 준비(있으면 안정성↑)
-
업서트 정책: 시트에 video_id 중복 시 업데이트가 필요하면 Apps Script Web App로 교체(원하시면 템플릿 드림)
-
스키마 버전 필드:
schema_version: "1.0.0"추가(향후 필드 확장 용이) -
재시도/아이덴포턴시: 서버가 같은
video_id+extracted_at반복 수신 시 Skip 처리 -
카테고리 매핑: YouTube API가 주는
categoryId→ 한글 카테고리명 맵핑 테이블(옵션) -
Cloud Run 대비:
Dockerfile,PORT=8080, 지역asia-northeast3,--max-instances/--timeout설정
최종 진행 순서(추천)
-
로컬에서 E2E: 확장(CAP) →
http://localhost:8000/captions/process→ 시트 Append 확인 -
스테이징 Cloud Run 배포: 확장 팝업 엔드포인트를 스테이징 URL로 변경 → 10~20건 실테스트
-
문제 없으면 프로덕션 Cloud Run으로 복제 배포 → 확장 엔드포인트만 prod로 교체
짧은 Go/No-Go
-
위 “필수 7개” 체크 끝났으면 바로 스테이징에 올려 테스트 하셔도 됩니다.
-
업서트/카테고리명 매핑은 나중에 붙여도 OK.
필요하시면 토큰 입력 UI(팝업) + 서버 토큰검증 코드 스니펫, Apps Script 업서트 버전도 바로 드릴게요.