YouTube Shorts 자동화

자동 설명 — description 생성과 CI 트리거

이번 스프린트에서는 두 가지 작업을 병행했다. YouTube 설명문 자동 생성 구조 개선, 그리고 CI 배포 트리거 임시 비활성화.

description 필드 추가

기존에는 업로드 워커(uploader.ts)에서 AI 공시 텍스트를 하드코딩해서 설명문에 붙이고 있었다. 관리 포인트가 분산되는 구조였는데, ScriptOutput 타입에 description 필드를 아예 추가해서 스크립트 생성 단계에서 설명문까지 만들도록 책임을 옮겼다.

// packages/shared/src/types.ts
export interface ScriptOutput {
  title: string;
  script: string;
  description: string; // 3~5문단 뉴스 보도 문체, 면책 공지 포함
  hashtags: string[];
  // ...
}

script-generator.ts에서 생성된 description은 {description}\n\n{hashtags} 형식으로 그대로 YouTube에 올라간다. 기존에 있던 affiliate_cta 필드는 ScriptContent 인터페이스와 관련 문서 전체에서 제거했다. 쓰이지 않는 필드가 인터페이스에 남아 있으면 혼란만 생긴다.

이 변경과 함께 docs/ 하위 18개 파일을 일괄 동기화했다. 코드는 바뀌었는데 문서가 예전 구조를 설명하고 있으면, 나중에 온보딩할 때 더 헷갈리기 때문이다.

CI 자동 트리거 비활성화

deploy-api.yml, deploy-web.yml 두 워크플로우에서 push: branches: [main] 트리거를 제거했다. 인프라가 아직 준비되지 않은 상태에서 main에 머지할 때마다 배포가 돌아가는 건 불필요한 리스크다.

on:
  workflow_dispatch: # 수동 실행만 허용
  # push 트리거 제거 — 인프라 준비 완료 후 복구 예정

workflow_dispatch만 남겨서 필요할 때 수동으로만 실행할 수 있게 했다. 인프라 셋업이 완료되면 다시 push 트리거를 복구할 예정이다.