About

임베드 금지가 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 를 부르고 있어서 추가 비용이 없었다.

세 가지 길

그냥 임베드하면 클릭의 절반이 검은 에러 화면으로 끝난다. 수집에서 빼면 지도가 텅 빈다. 오미야 주변은 특히 그렇다. 남은 건 전부 보여 주되 구분하는 길이고, 그걸 골랐다.

Tell the reader before the clickSaitama, 2026-08-24: 58 cameras24 play34 embed off (59%)Markersplays on the mapYouTube onlyDecided at collect time fromvideos.list status.embeddableBeforeVideo unavailable(owner disabled embedding)Aftercamera thumbnailThis camera plays on YouTube onlyOpen on YouTubeBefore: half the clicks end on a black frame.After: the hollow ring warns you, and the modalstill shows what the intersection looks like.Within 10 km of Omiya: 9 of 21 cameras play. Collecting more cannot fix that.

클릭하기 전에 알 수 있게

마커부터 다르게 했다. 재생되는 카메라는 꽉 찬 원, 임베드 금지는 속이 빈 링이다. 누르기 전에 구분된다. 툴팁에는 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 이 에러 화면

실전 순서

1

videos.list 를 part=status 로 불러 status.embeddable 을 수집할 때 저장한다

2

마커를 나눈다 — 재생 가능은 꽉 찬 원, 금지는 속 빈 링

3

금지된 것은 플레이어 대신 썸네일 + 안내 + YouTube 버튼을 띄운다

4

썸네일 사용이 약관상 괜찮은지, embeddable 이 바뀌는지는 따로 확인한다

사용 사례

YouTube 라이브 카메라 · 영상을 지도에 올리는 서비스 남의 영상을 임베드하는 큐레이션 · 목록 페이지
← YouTube 클립은 목록이 없는 데이터다 — 모으기는 URL 줍기, 정보는 HTML 한 장