影片播放器連接到來源卡片、筆記時間軸,以及一則已查核的筆記。上方有一張帶問號的卡片。

先準備影片、你使用的軟體,以及官方文件。短篇教學可以手動查核。時間標記字幕能幫你在較長的影片中找到操作指示。但字幕無法確認畫面上顯示的程式碼,也無法證明程式碼能正常運作。

最後得到的表格會說明你查核了什麼、有哪些變更,以及哪些部分仍缺乏證據。它能協助你針對一項教學任務,在一組明確記錄的環境設定下做決定。

1. 定義任務,記錄教學與本機版本

選定你想從教學中得到的一項結果。例如,你可能想移除文字開頭完全符合指定內容的前綴。前綴是位於一段較長文字開頭的文字。

將任務範圍縮小到可以查核的程度。「這個文字操作能正常運作嗎?」能讓你訂出明確的測試。「這門程式設計課程現在還好嗎?」則不能。

有一則公開的程式設計提問問道:「只靠 YouTube 影片和大量練習,我能學會寫程式嗎?」所提供的證據指出,回覆提到了軟體版本過時的問題。這是開始練習前先檢查環境設定的一個實際理由。但這一則提問無法衡量有多少學習者遇到這個問題。

複製操作指示前,先記錄以下資訊:

  1. 教學標題與影片網址。
  2. 發布日期,若已知。
  3. 教學註明的軟體名稱與版本。
  4. 教學在哪裡註明該版本。
  5. 你實際要使用的軟體版本。
  6. 你進行查核的日期。
  7. 你想重現的一項結果。

環境是指你執行工作時使用的軟體設定。若其他設定會影響所選步驟,也要一併記錄。例如,教學若指定了必要工具的版本,就應記錄該版本。

請分開記錄發布日期與軟體版本。最近上傳的影片,不代表其中的操作指示符合你的版本。較早上傳的影片,也不代表每項操作指示都已失效。

教學若未提供版本,請填寫「未知」。不要根據影片年代或外觀猜測。若你無法確認自己使用的版本,請先補齊這項資訊,再宣稱版本相符。

2. 找出每項操作指示,並查看畫面

觀看執行所選任務的影片片段。在每個必要動作處暫停。提出變更之前,先完整照錄畫面上的操作指示。

字幕是隨影片儲存的一段文字。逐字稿則彙集字幕文字。時間標記片段是附有開始與結束時間的一段字幕。

用字幕找出可能相關的片段,再觀看這些片段。講者可能只說「執行這個」,而完整指令只出現在畫面上。字幕也可能誤寫軟體名稱,或漏掉沒有口頭說明的動作。

如果影片很長,可以使用在長篇講課中尋找單一概念介紹的聚焦查找方法。這裡的目的是找出必須驗證的操作指示,不必替整堂課建立索引。

針對每個必要步驟:

  1. 記錄操作指示出現的影片時間。
  2. 閱讀畫面上的程式碼、選單選項或設定。
  3. 記錄緊接在該步驟之前顯示的所有設定。
  4. 保留原始操作指示。
  5. 將看不清楚的文字標為尚未釐清。

不要將口述內容當成已擷取的程式碼。下方介紹的字幕工具不會進行光學字元辨識。這個詞指的是從影像中讀取文字。你必須自行檢查畫面。

寫著「成功了」的留言,可以提供查核方向,但不能證明相容性。相容性是指操作指示能在相關軟體版本中正常運作。該留言可能沒有註明版本,也沒有列出實際使用的確切步驟。

如果留言提到找不到按鈕或出現錯誤,請先與實際影片片段比較,再將留言當作證據。將留言與教學片段對照查核說明了這項獨立的查核方法。在確認留言所用的環境設定與相關性之前,請只將它當作線索。

3. 有需要時使用時間標記字幕

YouTube Transcript Scraper 是一個 Actor,也就是在託管環境中執行、用來收集資料的程式。這裡的文件記載,它的用途是讀取現有的公開字幕。你仍須自行找出操作指示、檢查畫面、閱讀官方文件,並判讀測試結果。

2026 年 10 月 25 日查核的公開規格說明了建置版本 0.1.43。它接受直接指向公開 YouTube 影片的網址,或影片 ID。ID 是識別影片的短代碼。它不接受以頻道、播放清單或搜尋頁面作為來源清單。它會讀取現有字幕軌,不會將語音轉成新的文字,也不會下載音訊或影片。

公開的時間標記逐字稿 Task 是可供起步使用的預設設定。Task 是一組已儲存的輸入值。2026 年 10 月 25 日已找到它的公開頁面與 Task ID。該次查核未檢查登入後才能查看的已儲存輸入,也未測試執行。

這組簡短的輸入通過了所提供的結構規格檢查。結構規格定義允許使用的輸入欄位與值。通過結構規格檢查,不代表已成功執行資料擷取。

json
{"includeFailedInputDetails":true,"outputFormats":["json"],"preferredLanguages":[],"startUrls":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]}
3. 有需要時使用時間標記字幕

執行前:

  1. 將 `startUrls` 中的整份範例清單替換成你要查核的公開教學網址。
  2. 將 `outputFormats` 保持設為 `["json"]`,以要求取得時間標記片段。
  3. 選定字幕語言的選取規則。
  4. 將 `includeFailedInputDetails` 保持設為 true,讓失敗的輸入仍會顯示在執行報告中。

範例網址只是結構規格的示例,不能作為取得有用教學結果的證據。本指南未執行任何 Actor。

空的 `preferredLanguages` 清單會要求取得可用字幕軌中最適合的一個,但不保證是英文。如果你設定語言偏好,Actor 會依序嘗試。若偏好的語言都不可用,文件記載的結果是帶有明確類別的語言不可用失敗。這表示結果會註明失敗類別,而不會在未告知的情況下切換成其他語言。

文件記載的輸入上限範圍為 1–1,000 筆。重複的影片 ID 只會處理一次。這次查核請只使用一支教學影片。

依計畫執行後,請先檢查結果,再使用文字。資料集中的一列代表一筆已儲存的影片結果。每支成功處理且不重複的影片都會產生一列。失敗的輸入會出現在名為 OUTPUT 的執行報告中。

保留影片識別資訊,以及 `status`、`statusReason`、`transcriptLanguageCode`、`isAutoGenerated` 和 `scrapedAt`。最後一個欄位記錄資料擷取時間。保留原始 `segments`,包括其中的 `text`、`startSeconds`、`endSeconds` 和 `durationSeconds`。

使用回傳的時間找出影片片段。只有純文字,無法確定字幕的結束時間。即使有結束時間,缺少的持續時間仍屬未知。不要用零替代缺失值。

語言標籤、字幕來源標籤與涵蓋率數值,都不能證明文字正確。無論如何,都要觀看相關片段。

字幕是公開來源資料。你儲存的輸入、私人執行紀錄、本機版本紀錄與測試結果,則是各自獨立的紀錄。公開的預設設定頁面,不能證明帳號擁有者實際儲存或執行了什麼。

4. 建立版本與步驟對照表

版本與步驟對照表會將每項操作指示,與其來源、官方參考文件及測試結果連結起來。每個必要步驟使用一列。如果兩個動作需要不同的查核,請分成兩列。

儲存以下欄位:

4. 建立版本與步驟對照表
欄位應儲存的內容
任務你想達成的一項小範圍結果
影片來源標題與公開網址
來源定位資訊影片時間,以及相關字幕片段,若有
原始操作指示畫面上可見的確切程式碼、選項或動作
教學版本教學註明的版本及其出處,或填寫未知
本機環境你實際使用的軟體版本與相關設定
官方參考文件頁面網址、適用版本範圍與相關段落
參考文件查核日期你閱讀該頁面的日期
擬議變更你提出的替代操作指示,與原始指示分開保留
測試輸入若已測試,記錄確切且無害的輸入
預期結果應出現的結果及其原因
實際結果實際觀察到的確切輸出或錯誤,或填寫未測試
測試日期進行測試的日期,或填寫未測試
狀態已查核、有文件依據的變更、未測試,或無法繼續
待解決問題缺少的證據,以及下一項必要查核

保留錯誤時,要與保留成功輸出一樣仔細。不要將錯誤替換成你預期的結果。

缺少資訊時,請填寫「未知」。只有確實知道數值為零時,才使用零。「沒有測試紀錄」不代表「零次失敗」,而是表示該列沒有測試證據。

將原始操作指示與擬議操作指示保留在不同欄位。否則,之後的讀者便無法看出變更內容與原因。

5. 閱讀該功能與版本的官方參考文件

開啟該項確切功能的官方文件。功能是指軟體的一項作用或行為。確認該頁面適用於哪個軟體版本。

除了閱讀行為說明,也要閱讀功能何時新增、變更或移除的註記。儲存相關段落,以及你查核的日期。

依照以下順序進行:

  1. 核對確切的功能名稱與畫面上的操作指示。
  2. 確認參考文件適用的版本。
  3. 閱讀預期行為的說明。
  4. 查閱版本註記。
  5. 將文件的適用範圍與本機版本比較。
  6. 記錄仍缺少的資訊。

目前的文件頁面可能註明某項功能何時新增,但這不代表它能證明所有較早版本中的每一項行為。如果頁面不涵蓋你需要的版本,請將該部分保留為尚未釐清,直到找到相關的官方參考文件。

不要因為找不到文件,就推斷某項功能不存在。請將未能找到文件的情況記錄為來源證據缺口。

Python 官方字串參考文件提供了一個清楚的例子。當字串開頭完全符合所指定的前綴時,`str.removeprefix` 會移除該前綴。否則,它會傳回未變更的字串。參考文件指出,這項功能於 Python 3.9 新增。

所提供的同一份參考文件證據,也說明了 `lstrip` 的不同之處:它會移除開頭屬於指定集合的字元。它不能作為精確前綴移除的等效替代。名稱相似,或在某一組輸入上得到相似結果,都不能證明行為相同。

6. 選擇結果明確的無害測試

可重現性測試會檢查:你能否在明確記錄的環境中,使用明確記錄的輸入,得到所述的結果。

選擇能回答功能問題的最小測試。優先選用只處理本機數值或文字、且不會影響外部的操作。執行前,先寫下預期結果。

進行第一次查核時,請避開未經檢查的安裝、建立帳號、存取憑證、正式運作系統,以及未經檢查就複製的指令。存取憑證是用來取得存取權的機密資料。正式運作系統是用於實際工作的系統。

記錄確切輸入、預期輸出、實際輸出、本機版本與測試日期。如果測試失敗,請保留確切錯誤,並停止該步驟。不要做出多項未說明原因的變更後,只記錄最後成功的結果。

無害的功能測試用途有限。它能確認一項操作在你的環境中是否可行,但不能證明整個專案能完成安裝、每個教學步驟都能正常運作,或其他軟體版本也有相同行為。

7. 實作範例:精確移除前綴

這個範例使用所提供的本機測試紀錄。它不是原創虛構案例,也不是對真實 YouTube 教學進行的測試。

紀錄中的環境為 Python 3.12.12。查核日期為 2026 年 10 月 25 日。測試只使用本機標準函式庫的字串運算式。標準函式庫是 Python 隨附的工具集合。這項測試不包含安裝、網路存取,也沒有執行教學步驟。

任務是從字串中移除完全符合指定內容的前綴。字串是一種文字值。

第一個運算式:

python
"Arthur: three!".removeprefix("Arthur: ")
7. 實作範例:精確移除前綴

預期結果為 `three!`。紀錄中的實際結果也是 `three!`。

這個前綴包含八個字元:六個字母、一個冒號,以及一個空格。原始文字包含 14 個字元。移除該前綴後,剩下 14 − 8 = 6 個字元,也就是 `three` 中的五個字母,以及一個驚嘆號。這裡的單位是字元,不是位元組。

第二個運算式:

python
"Arthur: three!".lstrip("Arthur: ")
7. 實作範例:精確移除前綴

預期結果為 `ee!`。紀錄中的實際結果也是 `ee!`。

在這裡,`lstrip` 會將指定文字視為一組可從開頭移除的字元。移除 `Arthur: ` 之後,它會繼續移除 `three!` 開頭的 `t`、`h` 和 `r`,因為這些字元也在指定的集合中。遇到 `e` 時才會停止。

這樣會移除八個前綴字元,以及另外三個字元。計算結果是 14 − 8 − 3 = 3 個字元。剩下的文字為 `ee!`。

7. 實作範例:精確移除前綴
查核項目已記錄的證據限制
本機版本Python 3.12.12不代表其他環境的情況
官方版本註記`str.removeprefix` 於 Python 3.9 新增不能證明後續版本中的每一項行為
精確前綴測試預期為 `three!`;實際為 `three!`只查核了這個運算式與這組輸入
開頭字元移除測試預期為 `ee!`;實際為 `ee!`說明為何這個運算式不能作為等效替代
教學版本與來源定位資訊未知;未測試任何教學不能將任何教學步驟標為已查核
完整流程未測試不能宣稱完整教學已成功執行

這些證據只能支持範圍有限的決定。如果你要做的文字操作是精確移除前綴,而且版本支援該功能,就使用精確前綴移除。不要將它替換成 `lstrip`,以為兩者意思相同。

查核自己的教學時,請補上畫面上實際可見的操作指示,以及對應的影片時間。接著,在你記錄的版本上自行執行無害測試。所提供的結果是關於 Python 3.12.12 的證據,不是你電腦上的測試結果。

8. 設定狀態,決定哪些步驟可以繼續

整份表格請統一使用以下四種狀態:

8. 設定狀態,決定哪些步驟可以繼續
狀態意義下一步決定
已查核你已檢查操作指示,並在所記錄的環境中確認所選測試的結果在已測試的範圍內繼續
有文件依據的變更官方參考文件支持一項相關的版本差異保留原始指示、提出變更,並記錄是否已測試該變更
未測試你尚未執行必要的測試先測試,再宣稱它能在本機正常運作
無法繼續缺少證據,或必要動作不安全,導致無法進行查核先解決缺口,再依照該步驟操作

有文件依據的變更,不會自動成為已測試的修正。請將測試結果保留在獨立的結果欄位中。如果需要新的操作指示,請另建一列,讓證據保持清楚。

如果沒有字幕,仍可手動查看影片。如果畫面無法辨讀,請將確切的操作指示保留為尚未釐清。如果你不知道自己使用的版本,請先確認,再宣稱相容。如果官方參考文件的適用範圍不符,請保留這項來源證據缺口。

跟著完整教學操作之前,請查核每個必要步驟所在的資料列。每一列都需要證據,以支持你計畫採取的動作。一個運算式通過測試,不代表尚未測試的安裝或帳號步驟也已通過查核。

不要將這份表格轉成整體影片品質分數。它的用途是協助你做出一項實際決定:在所記錄的環境中,哪些操作指示可以採用,哪些仍需進一步處理。

來源與延伸閱讀

作者 Chronometrica · 更新日期

返回頂端 ↑