YouTube嵌入檢查器
介紹
Toollect 的 YouTube 嵌入檢查器回答一個每次有人往網站加入影片時都會浮現的問題:這支影片真的能在這裡、在我的頁面上播放嗎? 貼上一個連結,工具就會用 YouTube 的兩個公開、免金鑰介面——oEmbed 端點與嵌入播放器——檢查影片,然後告訴你影片是可嵌入、可播放、已消失還是受限制。無需帳戶、無需 API 金鑰、無需上傳。
它消除的陷阱很常見。你複製嵌入程式碼、放進頁面,後來才發現影片顯示灰色播放器、「影片無法使用」佔位符或「在 YouTube 上觀看」提示,因為擁有者停用了嵌入。等到嵌入上線時,這已經成了一樁客服問題。先檢查一下,同樣的事情就變成一個兩秒鐘的步驟。
檢查完全在你的瀏覽器中執行。URL 在本機解析,嵌入狀態從 YouTube 的公開 oEmbed 端點讀取,即時嵌入在頁面上載入並暫停在第一幀——絕不自動播放、絕不為你靜音。不上傳、不儲存、不追蹤任何內容。判定會與影片的標題、頻道與片長一起顯示,這些資訊由嵌入本身回傳——無需另開頁面、無需爬蟲、無需第三方服務。
運作原理
這個工具把「能否嵌入並播放」這個問題拆成三項獨立檢查。每一項都使用 YouTube 一個公開、免金鑰的介面,而且三者都在你的瀏覽器中本機執行。
- 擷取影片 ID — 使用與 YouTube 自身相同的模式解析 URL,辨識 watch 連結、youtu.be、Shorts、embed 與 live URL,以及單獨的 11 位 ID。
- 嵌入探測 — 工具向該影片的 oEmbed 端點發出請求。可嵌入的影片會回傳一個小型 JSON 物件;擁有者禁止嵌入的影片會回傳錯誤。這正是各服務用於自動產生卡片時的同一端點。
- 播放器檢查 — 工具載入嵌入播放器並暫停在第一幀,然後監聽其狀態。如果影片已被刪除或受限,播放器會觸發錯誤碼;如果乾淨載入,標題、頻道與片長會由播放器自身回傳,按下播放鍵會在同一畫面中即時確認播放。
這些都不需要官方的 YouTube Data API。播放器 JavaScript 按需載入、無配額限制,且完全在你的瀏覽器中執行——你貼上的連結永遠不會到達由本站控制的伺服器。
兩個公開介面詳解
oEmbed 端點是 YouTube 的一個公開、免金鑰 API。像 https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=dQw4w9WgXcQ&format=json 這樣的單次請求就能得到影片標題、頻道名稱與縮圖 URL——如果影片無法嵌入,則會得到明確的拒絕。由於它是輕量級狀態探測,一次來回就能給出答案。
播放器介面與你貼上 iframe 時使用的是同一個:YouTube 在頁面上載入一個小型 IFrame 播放器,播放器的狀態碼講述其餘的故事。沒有錯誤碼就抵達第一幀的播放器,是嵌入接受該影片的證據;而觸發錯誤的播放器會說出原因——未找到、已刪除或禁止嵌入。預覽就暫停在那個第一幀上,與一般嵌入完全一樣:不會自動播放任何內容,音量保持你的設定。
使用場景
除了顯而易見的「這個連結可以安心貼上嗎」,這個工具還能融入真實的工作流程。
Web 與應用程式開發
在儀表板、登陸頁或應用程式中嵌入 YouTube 影片的開發者,經常在發布隔天看到損壞的嵌入。在內容匯入時(產生站點地圖、CMS 匯入或影片推薦)加入預檢查,可以在不可嵌入或已刪除的影片到達使用者之前將其攔截。同樣的 oEmbed 探測也很容易在建置腳本裡複用成一行。
內容製作與行銷
製作宣傳頁面、電子報或知識庫文章的編輯們想連結大量影片,而不必逐一照看每個嵌入。用這個工具一次一個 URL 快速掃過一遍,就能標出會轉譯成損壞佔位符的影片,從而乾淨地發布列表。
研究與歸檔篩選
追蹤影片隨時間可用性的記者、檔案管理員與研究人員,可以重複執行檢查並歸檔結果。「以前可嵌入,現在錯誤 100」的模式是影片被刪除的早期預警——這本身就是有用的事實。
判定與錯誤碼
工具顯示的每個判定都是播放器自身的回答,經過翻譯。你讀到的判定與底下的錯誤碼來自同一來源,兩層永遠不會互相矛盾。
判定:
| 結果 | 含義 | 典型原因 |
|---|---|---|
| 可播放 | 嵌入被接受並抵達了第一幀 | 健康、可嵌入的影片 |
| 無法嵌入 | 擁有者禁止嵌入 | 播放器回傳錯誤 101 或 150 |
| 找不到影片 | 播放器無法載入該影片 | 已刪除或設為私人,錯誤 100 |
| 影片無法使用 | 播放器拒絕了請求 | 過期或錯誤的連結,或播放器通用故障 |
| 逾時 | 等待時間內播放器無回應 | 腳本被攔截或網路問題 |
錯誤碼:
| 代碼 | 含義 | 它告訴你什麼 |
|---|---|---|
| 100 | 找不到影片 | 影片已被刪除或設為私人,或 ID 有效但播放器無法連上影片 |
| 101 | 不允許嵌入 | 擁有者已停用該影片的嵌入 |
| 150 | 不允許嵌入 | 同一限制,在某些介面上回報為 150 |
| 2 | 請求無效 | 影片對播放器不可用,通常是過期或錯誤的影片連結 |
| 5 | 播放器建立失敗 | HTML5 播放器通用故障,有時是嵌入之外的播放錯誤跡象 |
代碼 101 與 150 通向同一個判定:無法嵌入——「擁有者不允許嵌入」。100 意味著影片不再公開可用,通向找不到影片。代碼 2 與 5 都通向影片無法使用。而過了等待時間仍保持沉默的播放器通向逾時——當腳本或網路規則攔截播放器本身時你會看到的判定。這些就是審查嵌入圖庫時最常遇到的答案。
能偵測什麼、不能偵測什麼
坦然面對侷限,正是這個工具之所以有用的原因之一。下表展示嵌入流程能揭露什麼、又對什麼保持沉默。
| 問題 | 此工具能偵測嗎? |
|---|---|
| 可嵌入(擁有者允許嵌入) | 能,透過 oEmbed 探測 |
| 嵌入後確實能播放 | 能——在預覽中按下播放鍵,工具即確認播放 |
| 影片已刪除或設為私人 | 能,錯誤 100 |
| 年齡限制影片 | 通常可以——在某些地區播放器會透過同意步驟重試 |
| 地區(國家)限制 | 僅限你所在的地區,且僅針對播放器 API 介面 |
| 影片可在哪些國家觀看 | 不能 |
| 觀看次數、按讚、留言 | 不能 |
| 標籤、授權、上傳日期 | 不能 |
| 字幕可用性 | 不能 |
| 預設音訊 / 影片語言 | 不能 |
決定核心結果的每個問題——嵌入檢查、播放證明、刪除或私人的訊號——都能在無金鑰的情況下完整回答。豐富化層——觀看次數、地區列表、標籤、字幕、上傳日期——是另一個故事,在「與官方 API 對比」中詳述。
使用方法
操作流程是一個雙欄位互動介面:
- 貼上 YouTube 連結 — 從網址列、分享選單或影片的嵌入面板複製。
- 按 Enter 或點擊檢查按鈕。
- 閱讀判定 — 徽章將結果描述為可播放、無法嵌入、找不到影片、影片無法使用或逾時。
- 閱讀詳情 — 播放器面板在徽章下方列出影片的標題、頻道、片長與 ID;下方的三行探測說明每項檢查的結果。
僅貼上不會觸發檢查;只有按下檢查或 Enter 才會執行。這讓工具保持可預測——編輯輸入框絕不會突然丟棄你正在看的结果。如果輸入不是有效的 YouTube URL,會顯示錯誤並清空輸入框。
支援的連結格式
輸入接受與 YouTube 自身相同的格式——貼上以下任一形式:
| 格式 | 範例 |
|---|---|
| 標準 watch | youtube.com/watch?v=VIDEO_ID |
| 短連結 | youtu.be/VIDEO_ID |
| Shorts | youtube.com/shorts/VIDEO_ID |
| 嵌入 | youtube.com/embed/VIDEO_ID |
| Live | youtube.com/live/VIDEO_ID |
| 舊版影片路徑 | youtube.com/v/VIDEO_ID |
| 單獨的 ID | VIDEO_ID(11 位字元) |
播放清單與時間戳記等額外參數會被自動忽略。
教學
讓一支影片從連結走到判定。
第 1 步 — 取得連結。 開啟任意 YouTube 影片並複製其 URL,例如 https://www.youtube.com/watch?v=dQw4w9WgXcQ。
第 2 步 — 貼上並檢查。 點擊輸入框,貼上(Ctrl+V 或 Cmd+V),然後按 Enter。徽章切換為檢查中…。
第 3 步 — 閱讀徽章。 大約兩秒內出現判定。對於一般的可嵌入影片,判定為可播放,並由探測行佐證。
第 4 步 — 與受限影片對比。 現在貼上一個唱片公司禁止嵌入的音樂影片連結——大部分主流唱片公司的音樂片段都被封鎖。判定為無法嵌入,錯誤行顯示 101。這正是手動貼上嵌入程式碼時表現為空白灰框的故障。
第 5 步 — 檢查證據。 探測行與徽章一致:嵌入行顯示已封鎖,播放行沒有確認,因為播放器在你按下播放鍵之前就已失敗。這種組合——嵌入被拒、無法播放——正是你在 YouTube 自己的頁面上看到這類影片時出現的「無嵌入面板」訊號。
這就是完整循環:貼上、檢查、讀徽章——如果判定與真實嵌入不符,就用探測行來理解原因。
專業提示
- 貼上單獨的影片 ID。 輸入框接受單獨的 11 位 ID,無需 URL——當你在處理 API 回應、資料庫匯出或只透露 ID 的短連結時非常有用。
- 按 Enter 重新執行。 編輯框中的連結不會清除目前結果;當你得到真正想要的 URL 時按 Enter 即可。
- 自動化嵌入把關。 如果你從 feed 產生頁面,可以用 curl 呼叫工具所使用的同一個 oEmbed 探測(
https://www.youtube.com/oembed?url=…&format=json),並在流水線中將非 200 狀態視為「拒絕該影片」。 - 從目標地區測試區域敏感內容。 如果你的受眾在特定國家,請連上該網路後執行檢查;播放器反映它被派發到的地區。
- 將「錯誤 100」視為變化訊號。 一支檢查正常卻突然回報 100 的影片,極有可能已被刪除或設為私人。如果你維護已嵌入影片的登記表,請定期複查——在訪客撞上灰色播放器之前知道狀態變化是值得的。
自己嵌入影片
可播放判定就是綠燈,可以使用工具檢查過的完全相同的嵌入:
<div style="aspect-ratio: 16 / 9;">
<iframe
src="https://www.youtube-nocookie.com/embed/VIDEO_ID"
width="100%"
height="100%"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
loading="lazy"
></iframe>
</div>
- 優先使用
nocookie網域。youtube-nocookie.com提供相同的播放器,但不帶 YouTube 的非必要 Cookie——對大多數網站來說是注重隱私的預設選擇。 loading="lazy"已包含在程式碼片段中。 它會將嵌入延遲到影片捲入視野;對於載入時間重要的首屏 hero,請移除它。- 注意你的 Content-Security-Policy。 如果你的網站傳送 CSP,請加入
frame-src https://www.youtube-nocookie.com(如果保留一般網域則為https://www.youtube.com),否則嵌入會在載入前被攔截。
替代方案
開發者通常如何發現嵌入損壞?下表列齊各種選項。
| 方法 | 能告訴你什麼 | 需要金鑰 | 播放證明 |
|---|---|---|---|
| 貼上嵌入並重新整理頁面 | 事後才知道損壞的佔位符 | 否 | 頁面執行後間接得知 |
| oEmbed 一行程式碼 | 僅嵌入狀態,無錯誤碼 | 否 | 否 |
| 官方 Data API | 一切資訊,但按配額計費並需伺服器金鑰 | 是 | 否 |
| 本工具 | 判定 + 錯誤碼 + 可播放的即時嵌入 | 無 | 是——在預覽中按播放 |
官方 Data API 最完整,但需要金鑰、為避免曝露必須在伺服器端執行,並且每次請求都消耗配額。僅憑程式碼的簡單嵌入探測,既得不到播放器訊息,也得不到播放證明。原始 iframe 貼上只能在上線後告訴你本工具在發布前就能即時展示的內容。
與官方 API 對比
下表比較同一問題的兩條誠實路徑:官方 YouTube Data API(伺服器、金鑰、配額)與本工具(只有瀏覽器、無金鑰、無伺服器)。這就是「無金鑰」是優勢而非限制的原因——取捨恰好落在對嵌入最關鍵的欄位上。
| 能力 | 官方 Data API | 本工具 |
|---|---|---|
| 可嵌入狀態 | 透過 status.embeddable |
oEmbed + 播放器程式碼 |
| 播放證明 | 間接(僅中繼資料) | 直接——在預覽中按播放 |
| 錯誤碼含義 | 原始程式碼,無解釋 | 翻譯成判定 |
| 地區/國家列表 | contentDetails.regionRestriction |
僅限你所在的地區 |
| 觀看次數、按讚、留言 | statistics |
不可用 |
| 標籤 | snippet.tags |
不可用 |
| 授權 | status.license |
不可用 |
| 年齡限制 | contentDetails.contentRating |
由播放器暗示,不精確 |
| 上傳日期 | snippet.publishedAt |
不可用 |
| 所需資料 | API 金鑰 + 伺服器代理 | 無——100% 瀏覽器 |
兩個介面恰恰在決定嵌入的指標上重合:它會在頁面裡播放嗎? 官方 API 在分析所需的一切上勝出——中繼資料、統計、地區列表。工具在最終答案上勝出:一個在瀏覽器中載入、暫停在第一幀、你可以按下播放鍵親自觀看的即時嵌入。
故障排除
| 問題 | 原因 | 解決方法 |
|---|---|---|
| 答案一直停在「檢查中…」 | 播放器或 oEmbed 呼叫被攔截(廣告攔截器、本機網路) | 允許 youtube.com 的播放器腳本,或重試檢查 |
| 嵌入停在第一幀 | 這是刻意設計——預覽絕不自動播放或預載串流 | 按下播放鍵;暫停的嵌入且聲音圖示可用,就是健康的嵌入 |
| 判定說「無法嵌入」但影片頁面播放正常 | 擁有者禁止嵌入;在網站播放與嵌入是兩回事 | 確認一下:開啟影片頁面的分享 ▸ 嵌入——那裡也會顯示拒絕 |
| 判定說「找不到影片」 | 影片已刪除、設為私人或僅限特定地區 | 先確認影片能在你自己的瀏覽器中播放 |
| 輸入不被接受 | URL 根本不是 YouTube 格式 | 使用 watch 頁面或分享選單中的連結 |
隱私與資料處理
這個工具遵循與其他 Toollect 工具相同的隱私模型:一切都在本機執行。
- 不上傳任何內容。 URL 在你的瀏覽器中解析。包含它的請求絕不會傳送到你不控制的伺服器。
- 無帳戶、無追蹤。 沒有登入、沒有分析,也沒有你檢查過的影片的歷史紀錄。
- 僅有播放器流量。 唯一的網路請求來自播放器自身——與任何網站嵌入影片時發出的請求相同。不儲存、不截圖、不留存任何內容。
- 不會事先下載影片。 預覽以一般播放按鈕暫停在第一幀;串流只在按下播放鍵後才開始載入,與任何嵌入一樣,且不會儲存任何內容。
如果你在意所檢查影片的隱私,這個頁面在你瀏覽器中的行為與觀看一般影片頁面完全相同——你的連結除了你自己的播放器哪裡都不會去。
技術規格
詳情:
- 嵌入探測:
https://www.youtube.com/oembed?url={watch_url}&format=json— HTTP 200 = 可嵌入,非 200 = 受限 - 播放器:YouTube IFrame Player API,按需以
playsinline嵌入載入,暫停在第一幀(不強制自動播放、不強制靜音) - 判定來源:oEmbed 狀態、播放器錯誤碼(2、5、100、101、150)以及按下播放鍵時的即時播放事件
- 中繼資料:標題、頻道、片長與影片 ID,由播放器自身回傳
- 處理方式:100% 用戶端 JavaScript,無 API 金鑰、無上傳、無伺服器
- 瀏覽器支援:所有支援 Promise 與 ES5 等級的現代瀏覽器(Chrome、Edge、Firefox、Safari)
功能特色
- 貼上任意 YouTube 連結即可即時檢查可嵌入性
- 即時嵌入預覽暫停在第一幀,按下播放鍵的瞬間確認播放
- 基於 YouTube 播放器自身的錯誤碼給出判定,並附白話解釋
- 無需另開頁面即可顯示標題、頻道與片長
- 100% 瀏覽器內處理、零資料上傳,無需 API 金鑰
- 支援 watch、Shorts、embed、live、youtu.be 連結及單獨的影片 ID