임베드 금지가 59% 인 지도는 무엇을 보여 줘야 하나 — 검은 에러 화면 대신 「왜 못 보여 주는지」
status.embeddable 하나로 미리 가르고, 마커 모양 · 썸네일 · YouTube 버튼으로 클릭 전에 알린다
YouTube 영상을 지도나 목록에 임베드하는 서비스를 만들 때, 재생이 막힌 영상을 어떻게 다룰지 정하는 글이다. 다 읽으면 임베드 가능 여부를 미리 아는 법과, 막힌 영상을 숨기지 않고 보여 주는 화면 구성을 가져갈 수 있다.
눌렀더니 검은 화면
모아 온 카메라를 지도에서 눌러 봤더니 검은 화면에 「動画を再生できません。他のウェブサイトでの再生は、動画の所有者によって無効にされています」 가 떴다. 올린 사람이 외부 사이트 임베드를 꺼 둔 영상이다.
몇 개쯤이겠거니 했다. 세어 보니 절반이 넘었다.
2026-08-24, 사이타마
지도에 실은 카메라는 58개였다. 재생되는 게 24개(41%), 임베드 금지가 34개(59%)였다. 오미야 10km 안만 보면 21개 중 9개만 재생됐다.
하필 오미야 주변을 채워 주던 정형 카메라 채널(埼玉県さいたま市○○区…ライブカメラ)이 통째로 금지 설정이었다. 이건 수집을 더 열심히 해서 메울 수 있는 종류의 빈칸이 아니다. 이 비율이 이 지역 · 이 운영자만의 특징인지, 일본 라이브 카메라 전반이 그런지는 아직 표본을 넓혀 보지 않았다.
판정은 필드 하나
videos.list 를 part=status 로 부르면 status.embeddable 이 온다. false 면 iframe 이 에러 화면이 된다. 수집할 때 같이 저장해 두면 사용자가 누를 때마다 API 에 물어볼 필요가 없다. 우리는 라이브 여부를 보려고 어차피 videos.list 를 부르고 있어서 추가 비용이 없었다.
세 가지 길
그냥 임베드하면 클릭의 절반이 검은 에러 화면으로 끝난다. 수집에서 빼면 지도가 텅 빈다. 오미야 주변은 특히 그렇다. 남은 건 전부 보여 주되 구분하는 길이고, 그걸 골랐다.
클릭하기 전에 알 수 있게
마커부터 다르게 했다. 재생되는 카메라는 꽉 찬 원, 임베드 금지는 속이 빈 링이다. 누르기 전에 구분된다. 툴팁에는 YouTubeのみ 배지를 붙였다.
금지된 카메라를 누르면 플레이어 대신 그 카메라의 썸네일(img.youtube.com/vi/{id}/hqdefault.jpg) 위에 안내 문구와 YouTube 로 가는 버튼을 띄운다. 검은 에러 프레임보다 정보가 많다. 썸네일만으로도 그 교차로가 대략 어떤 곳인지는 전해진다.
이렇게 바꾸고 나니 「고장 난 지도」 처럼 보이던 게 「여기는 YouTube 에서 봐야 하는 카메라」 로 읽혔다. 숨기는 것보다 이유를 말하는 쪽이 낫다는 게 이번에 얻은 결론이다.
아직 확인 중인 것
임베드 금지 영상의 썸네일을 이렇게 써도 YouTube 약관상 괜찮은지는 아직 확인하고 있다. status.embeddable 이 방송 도중에 바뀌는 일이 있는지도 모른다. 바뀐다면 다시 받는 주기를 짧게 잡아야 한다.
외부 영상 · 외부 데이터를 붙여 쓰는 서비스에서 「못 보여 주는 것」 을 어떻게 다룰지 고민하고 있다면 negabaro 에 물어봐도 된다.
임베드 금지 영상을 어떻게 다룰까
| 방법 | 결과 | 맞는 경우 |
|---|---|---|
| 그냥 임베드 | 클릭의 절반이 검은 에러 화면 | 금지가 몇 개 안 될 때만 |
| 수집에서 제외 | 지도가 빈다 (오미야 10km: 21 → 9) | 재생되는 것만 의미가 있는 서비스 |
| 구분해서 보여 주기 | 클릭 전에 알 수 있고, 위치 정보는 남는다 | 「어디에 있나」 자체가 정보인 지도 · 목록 |
판정에 쓰는 호출
GET /youtube/v3/videos?part=snippet,liveStreamingDetails,status&id=v1,v2,...
# 응답의 각 item
"status": { "embeddable": false, ... } # false 면 iframe 이 에러 화면
실전 순서
videos.list 를 part=status 로 불러 status.embeddable 을 수집할 때 저장한다
마커를 나눈다 — 재생 가능은 꽉 찬 원, 금지는 속 빈 링
금지된 것은 플레이어 대신 썸네일 + 안내 + YouTube 버튼을 띄운다
썸네일 사용이 약관상 괜찮은지, embeddable 이 바뀌는지는 따로 확인한다