본문으로 이동
자료실

18장 · 저자 검증 기록

현행 Source 확인 — 2026-09-22

18장의 두 단계 Publisher 구현을 완료 브랜치 496fd4c에서 장별 Source에 반영했습니다. 비공개 업로드 뒤 같은 영상 ID의 공개 전환, 부분 실패와 재시도는 Mock 검사로 확인했습니다.

  • 공개 Source에서 python3 -m pytest tests -q: 93 통과·3 건너뜀. 건너뛴 검사는 배포하지 않는 영상 파일이 필요합니다.
  • 제품 완료 브랜치의 같은 검사는 94 통과·2 건너뜀입니다. 제공 파일 범위가 달라 수치를 구분합니다.
  • 아래 과거 실계정 기록은 현행 두 단계 경로의 실계정 성공 근거가 아닙니다. 이번 동기화에서는 영상을 새로 올리거나 공개하지 않았습니다.
  • 수정한 본문 요청을 빈 시작 상태에서 다시 수행한 독자 재현 검증은 남아 있습니다.

과거 구현의 실계정 기록 — 2026-09-06

아래 설명과 검사 수치는 당시 직접 공개 업로드 구현에 대한 기록입니다.

17장을 통과한 Roman 최종본을 명시적 공개 승인 뒤 실제 채널에 올리고 YouTube Studio에서 확인했습니다 기본 공개 범위는 비공개 · 요청한 권한은 업로드 하나 · 자동 검사 6건 전부 통과 · 최종 확인 2026-09-06

실제로 만들어봤습니다

책 18장의 요청문만으로 업로드 프로그램을 만들고, 17장에서 UPLOAD READY가 된 영상을 실제 YouTube 채널에 올렸습니다. 올리기 전에 무엇이 바뀌는지 Preview로 먼저 확인했습니다.

  • 업로드 대상과 제목·설명·공개 범위를 먼저 고정하고 파일 하나로 묶었습니다.
  • Google 권한 화면에서 업로드 권한 하나만 요청했습니다. 업로드 확인 뒤 OAuth 앱은 프로덕션으로 게시하고 소유자 계정으로 다시 승인했습니다.
  • Preview를 확인한 뒤 실제로 올렸고, YouTube Studio에서 결과를 확인했습니다.

이 장의 완료 기준은 다섯 가지입니다.

확인 항목결과
1올리기 전에 바뀔 내용이 Preview로 먼저 보인다통과
217장을 통과한 그 영상 파일이 올라간다통과
3공개 범위는 따로 말하지 않으면 비공개다통과
4요청하는 권한은 업로드 하나뿐이다통과 -- 목록 조회는 거부됨
5같은 영상이 두 번 올라가지 않는다통과

같은 인증으로 채널의 영상 목록을 조회해보니 거부됐습니다. 요청한 권한이 업로드 하나뿐이라는 것을 이 결과로 확인했습니다.

완성된 결과를 공개합니다

무엇어디
실제로 올라간 영상로마 콘크리트는 왜 2천 년을 버틸까?
18장에서 입력하는 요청문chapters/ch18/prompts.md
PART 5(16~18장)를 끝낸 완성 프로젝트chapters/ch18/source/ai-shorts-maker/
실제 구현 저장소ai-shorts-maker

업로드 도구는 공개 범위를 생략하면 비공개를 사용합니다. Roman 최종본은 전체 재생 검수 뒤 사람이 public을 분명히 승인했기 때문에 공개로 올렸습니다.

업로드 인증 파일과 Token, 업로드 결과 Receipt는 저장소에 넣지 않았습니다. 어떤 값이 필요한지는 완성 프로젝트의 prototypes/youtube-shorts/chapter-18/research.md에 이름으로 적어두었습니다.

자동 검사도 해봤습니다

업로드는 되돌리기 어려운 작업입니다. 그래서 검사도 정상 동작보다 막아야 하는 것을 실제로 막는지에 무게를 두었습니다.

무엇을 확인하는가결과
검사를 통과한 계획은 그 영상을 그대로 올린다통과
검사에서 실패한 영상은 올리지 않는다통과
검사한 뒤에 파일이 바뀌었으면 올리지 않는다통과
허용된 공개 범위 값이 아니면 올리지 않는다통과
비공개·일부 공개·공개 세 값은 모두 받는다통과
한 영상에 업로드 기록은 하나만 남는다통과

검사 6건은 전부 통과했습니다. 실행 결과와 측정 조건은 artifacts/check-result.json에 있습니다.

여러분이 직접 돌릴 수 있는 검사도 Source 안에 함께 있습니다. chapters/ch18/source/ai-shorts-maker/tests/ 폴더에서 돌아가는 검사는 모두 21건입니다. 18건은 통과했고, 완성 영상 파일이 필요한 3건은 공개 Source에 영상이 없어 건너뜁니다. 이 장의 업로드 검사 6건은 모두 통과했습니다. 이 장의 6건은 test_chapter18_upload.py에 있고, 나머지는 16장과 17장에서 만든 검사로 18장 Source에도 그대로 들어 있습니다.

책을 쓰면서 저자가 직접 돌린 것은 다음과 같습니다. 올릴 내용을 다시 Preview로 열어 파일 크기와 영상 SHA-256이 책에 적힌 값과 같은지 대조했고, 이미 올린 영상에 업로드 명령을 한 번 더 실행해 Receipt를 보고 인증 단계에 가기도 전에 멈추는 것을 확인했습니다. 위 표의 영상 주소도 다시 열어 그 영상이 채널에 그대로 있는 것을 보았습니다.

직접 확인해볼 수 있습니다

책의 18장을 그대로 따라 하시면 됩니다. 요청문은 chapters/ch18/prompts.md에 책에 나오는 순서대로 있습니다.

권한 화면에서 오류가 났을 때는 권한을 넓히기 전에 원인부터 확인합니다.

권한 화면에서 오류가 났어.
어떤 오류인지 그대로 보여주고 원인부터 확인해줘.
권한을 더 넓히거나 다른 설정을 바꾸기 전에 무엇이 잘못됐는지 먼저 찾아줘.

이런 한계가 있습니다

  • 올린 영상은 내 컴퓨터에서 파일을 지워도 사라지지 않습니다. 채널에서 직접 내려야 합니다. 그래서 공개 범위의 기본값을 비공개로 두었습니다.
  • Google Cloud와 YouTube Studio 화면의 이름과 위치는 Google이 바꿀 수 있습니다. 책의 화면과 조금 다르면 같은 뜻의 항목을 찾으면 됩니다.
  • YouTube Studio에 보이는 길이는 파일에서 측정한 값과 반올림 방식이 다를 수 있습니다. 53.081초 영상이 0:53으로 보였습니다.
  • 채널을 처음 만들면 업로드 한도와 확인 절차가 다를 수 있습니다. 같은 요청에도 채널 상태에 따라 안내가 달라질 수 있습니다.
  • OAuth 앱의 프로덕션 상태는 채널이나 영상의 공개 상태가 아닙니다. 테스트 상태의 갱신 Token이 약 7일 뒤 만료되는 일을 막기 위한 OAuth 운영 설정입니다.