업로드 동작 설명
fishcut이 YouTube에 연결하고 영상을 올리는 과정, 저장하는 데이터, 권한을 취소하는 방법입니다. Google 검증 담당자와 처음 연결하는 사용자를 위해 한 페이지에 모았습니다.
1. 구조
fishcut 에디터는 사용자의 컴퓨터에서 실행되는 로컬 웹 앱입니다. 브라우저는 이 컴퓨터의 주소(127.0.0.1)로 에디터를 열고, 에디터는 Google 계정 연결과 YouTube 업로드 요청을 Google로 바로 보냅니다. 중간에 NomaDamas 서버가 없어서 NomaDamas는 토큰, 채널 정보, 영상을 받지 않습니다.
2. 연결부터 업로드까지
-
OAuth 클라이언트 넣기
오픈소스 저장소에는 OAuth 클라이언트 자격 증명을 넣을 수 없습니다. 사용자는 자기 Google Cloud 프로젝트에서 YouTube Data API v3를 켜고 데스크톱 앱 OAuth 클라이언트를 만든 뒤, 받은 JSON 파일을
fishcut youtube import <파일>로 넣습니다. 에이전트에게 맡겨도 됩니다. -
Google로 연결
채널 관리에서 "Google로 연결"을 누르면 시스템 기본 브라우저에서 Google 동의 화면이 열립니다. 앱 안의 내장 브라우저를 쓰지 않습니다. 동의 화면에서 앱 이름과 두 권한을 확인하고 허용하면, 에디터가 이 컴퓨터의 임시 주소로 결과를 받습니다(PKCE, state 검사).
채널 관리의 Google 연결. OAuth 클라이언트를 넣기 전에는 "Google로 연결"이 꺼져 있습니다. -
채널 확인
연결이 끝나면 에디터가
youtube.readonly로 연결한 채널의 이름과 ID를 읽어 보여 줍니다. 업로드할 채널이 맞는지 이 화면에서 확인합니다. -
업로드 설정 검토
제목, 설명, 태그, 공개 범위(공개, 일부 공개, 비공개), 카테고리, 아동용 여부, 실제처럼 보이는 합성 콘텐츠 여부, 예약 시각을 정합니다. 채널 기본값이 미리 채워지지만 영상마다 바꿀 수 있고, 에디터가 입력값 뒤에 다른 글자를 덧붙이지 않습니다.
YouTube 업로드 설정. 예약 시각을 비워 두면 고른 공개 상태로 바로 올라갑니다. -
사람이 확인하고 업로드
검토 화면에서 최종 영상, 채널, 설정을 다시 보여 주고 YouTube 서비스 약관 고지문을 표시합니다. 사람이 "확인했고, YouTube에 업로드"를 눌러야
youtube.upload로 전송을 시작합니다. 에이전트는 이 버튼을 누를 수 없습니다. -
업로드 뒤 상태 확인
전송이 끝나면
youtube.readonly로 영상의 공개 상태와 예약 시각을 다시 읽어, 요청한 값과 같은지 보여 줍니다.
3. 요청하는 권한
| 권한 | 쓰는 곳 | 쓰지 않는 곳 |
|---|---|---|
youtube.upload | 사람이 확인한 최종 영상을 사람이 정한 설정으로 연결한 채널에 올릴 때 | 사람의 확인 없는 업로드, 다른 채널의 영상 변경 |
youtube.readonly | 업로드할 채널의 이름과 ID 표시, 업로드 뒤 공개 상태와 예약 시각 확인 | 시청 기록, 구독 목록, 분석 데이터 수집 |
fishcut이 Google API에서 받은 정보를 사용하고 다른 앱으로 보내는 방식은 제한적 사용 요구사항을 포함한 Google API 서비스 사용자 데이터 정책을 따릅니다.
fishcut's use and transfer to any other app of information received from Google APIs will adhere to the Google API Services User Data Policy, including the Limited Use requirements.
4. 저장하는 데이터
모든 항목은 이 컴퓨터의 fishcut 상태 폴더에 저장합니다. 폴더는 실행한 사용자만 읽을 수 있는 권한(폴더 0700, 파일 0600)으로 만들고, Docker로 실행하면 그 설치의 state 볼륨에 둡니다.
| 데이터 | 쓰는 곳 | 보관과 삭제 |
|---|---|---|
| Google 토큰(접근 토큰, 갱신 토큰) | YouTube 요청 인증 | 연결을 유지하는 동안 보관합니다. 연결을 해제하면 Google에 취소를 요청하고 바로 지웁니다. |
| 연결한 채널의 ID와 이름 | 업로드할 채널 표시 | 30일 안에 다시 확인하거나 지웁니다. 연결을 해제하면 7일 안에 지웁니다. |
| 업로드 기록(영상 ID, 공개 상태, 예약 시각) | 업로드 결과 확인 | 30일 안에 다시 확인하거나 지웁니다. |
| 업로드 설정(제목, 설명, 태그, 공개 범위 등) | 사용자가 입력한 값을 다음 업로드에 다시 쓰기 | 사용자가 바꾸거나 지울 때까지 보관합니다. |
| OAuth 클라이언트 파일 | Google 연결 | 사용자가 바꾸거나 지울 때까지 보관합니다. |
5. 권한 취소와 삭제
- 에디터의 채널 관리에서 연결을 해제합니다. 에디터가 Google에 토큰 취소를 요청하고 이 컴퓨터의 토큰을 지웁니다.
- Google 계정 권한 관리 화면에서도 권한을 취소할 수 있습니다. 이 경우 에디터가 다음 요청 때 토큰이 무효인 것을 확인하고 관련 데이터를 30일 안에 지웁니다.
- 상태 폴더를 지우면 이 컴퓨터의 fishcut 데이터가 모두 사라집니다. 이미 YouTube에 올라간 영상과 YouTube가 저장한 데이터에는 영향이 없습니다.
6. 업로드 한도
YouTube Data API의 업로드 할당량은 Google Cloud 프로젝트마다 하루 videos.insert 100회입니다. 각자 만든 OAuth 클라이언트를 쓰면 할당량도 각자의 프로젝트에 붙습니다. 한도를 늘리려면 YouTube API 감사를 받아야 합니다.