課程的檔案系統
實例 10 / 操作文件

Notebook 來源更新:完整操作與維護紀錄

同一 Drive file ID 與 Notebook source ID 的差別、單向來源刷新、更新程序、衝突處理與讀回。

完整內容・去識別版操作文件248 行 · 全文
來源位置(邏輯別名)Google Drive / CourseWorkspace / YZU / Management 管理學 / 1151 / Textbook / 01_sources / notebooklm / NOTEBOOKLM_DRIVE_SYNC.md
來源版本/日期2026-09-13
資料取得方式Google Drive 實際檔案/文件匯出
使用與備份界線日期段落、歷史來源數量和未完成狀態照原文保留;這是本專案已記錄的做法,不代表所有帳號或 MCP 的通用功能保證。

以下說明為本次整理;正文區保留來源的內容與歷史語氣。

閱讀實際內容 ↓下載 .md回到地圖位置
網址與識別碼處理分享網址 1 處、識別碼 22 處。假網址一律使用 example.invalid,不能用來開啟原資料;請換成自己有權使用的來源。查看處理規則。

CM108G NotebookLM Drive-backed source workflow

Purpose

The learner-facing course remains the HTML site. NotebookLM does not use those HTML files as its weekly reading source. Instead, each week has a stable native Google Docs document in a dedicated Drive folder. NotebookLM reads the Google Docs documents as Drive sources, so a later refresh can retrieve the current document content without creating a new NotebookLM source every time.

This is a one-way refresh boundary, not an automatic two-way file synchronizer:

approved local module
        ↓
clean NotebookLM mirror
        ↓
same Google Docs file ID
        ↓
NotebookLM Drive source refresh

An edit made directly in Google Docs can be refreshed into NotebookLM, but it does not automatically rewrite the local HTML site. If a Drive edit is intended to become course material, fetch it back into the normal PM, evidence, and review workflow before rebuilding the learner page.

Current provisioning

  • NotebookLM notebook: Management: From Creator to Company Building Blueprint
  • Notebook ID: 16a71890-6c2e-4226-b4d8-f2b77160af68
  • Drive folder: CM108G Become Judy - NotebookLM refreshable sources
  • Local source generator: scripts/build_notebooklm_sources.py
  • Local generated mirrors: 01_sources/notebooklm/generated/week-01.md through week-18.md
  • ID and hash registry: 01_sources/notebooklm/notebooklm_drive_source_manifest.csv

The registry deliberately records both IDs:

  • drive_document_id is the native Google Docs file ID.
  • notebook_source_id is the NotebookLM source UUID.

They are different identifiers. A NotebookLM sync call must receive notebook_source_id; a Google Docs update must receive drive_document_id.

What each Drive document contains

Each document is generated from the current learner-facing unit inputs:

  1. the main reading between the controlled main-body delimiters;
  2. the weekly glossary;
  3. the assessment and AACSB-aligned reflection;
  4. the resources and APA 7 references.

Instructor-only blocks, internal HTML comments, agent names, private local paths, PM status, and review answer material are excluded from the mirror. Markdown-style headings and links are retained because they remain readable in the native document and searchable in NotebookLM.

Standard update procedure

  1. Complete the normal local content and review process. Do not edit the Drive mirror first merely to bypass the Case Bible, claim ledger, or Reviewer.

  2. Rebuild the local mirrors:

    python scripts/build_notebooklm_sources.py
    
  3. Compare the resulting content_sha256 and word_count values in the manifest. Confirm that the intended week changed and unrelated weeks did not.

  4. Use Google Drive MCP to update the existing native Google Docs document in place. Clear its body and insert the regenerated mirror text. Do not create a replacement file with a new ID.

  5. Run source_list_drive for the NotebookLM notebook before synchronizing. Confirm that the target sources are google_docs sources and note their freshness status.

  6. Run source_sync_drive with the corresponding NotebookLM source UUIDs and confirm=true. If a source was just added and is already fresh, a result of Synced 0 source(s) means there was no pending revision, not that the source was necessarily missing.

  7. Run source_list_drive again and confirm the source is fresh. Fetch at least one changed source through NotebookLM's raw-content endpoint and compare its opening text, section markers, assessment presence, and absence of internal project material.

  8. Update the manifest fields last_drive_sync, last_notebooklm_refresh, and status, then update HANDOFF.md and the PM control records when the operation is a project stage.

Direct Google Docs edits

Direct Drive editing is supported for a quick correction or addition. The NotebookLM refresh boundary is the Google Docs revision, so the stable source ID remains valid. However, direct editing creates a possible divergence from the local HTML and from the approved manuscript. Before the change is treated as an official course revision:

  • fetch the revised Google Docs text;
  • identify the affected week and claims;
  • route it through the Chief PM context and Reviewer checks;
  • update the local module and learner-facing HTML;
  • rebuild the mirror so the local and Drive representations agree again.

Legacy sources

The earlier 18 generated_text weekly candidate sources were permanently deleted through the NotebookLM MCP after the 18 Drive-backed Google Docs sources had been created, refreshed, and verified. The notebook now retains the 18 refreshable weekly google_docs sources, the output-control document, and seven Drive-backed bilingual or student-support sources. The three former web-page sources were removed after replacement readback. The deleted candidate sources are not part of the current revision authority.

Verification record for the initial migration

  • 18 native Google Docs files were created in the dedicated Drive folder.
  • All 18 documents were populated from the generated mirrors.
  • Drive folder listing returned 18 files, all with MIME type application/vnd.google-apps.document.
  • NotebookLM source listing returned 18 new google_docs sources, all with is_stale: false after provisioning and synchronization.
  • Week 12 was separately checked through NotebookLM raw content: the content was present, included Assessment and reflection, and did not contain Chief PM, Context Packet, instructor-only:start, or internal review paths.
  • The initial provisioning step briefly returned Transport closed from the NotebookLM MCP, so the authenticated nlm CLI completed the first source addition, listing, synchronization, and raw-content verification. The MCP then recovered and was used to delete the 18 legacy candidate sources.
  • Final MCP readback returned 21 sources: 18 google_docs Drive sources, three existing web sources, and no legacy weekly generated_text sources. All 18 Drive sources remained is_stale=false.

Current maintenance state — 2026-09-09

The refresh root is shared as Anyone with the link: Viewer with discovery disabled. The six child folders inherit the same reader permission. The 18 weekly documents are now in 01_weekly-textbook; the output-control document is in 00_course-control. The current folder IDs and all source IDs are in notebooklm_source_registry.csv; the weekly manifest remains the compact weekly build record.

The following Drive-backed bilingual sources were created, read back, and added to the NotebookLM notebook:

source key Drive document ID NotebookLM source ID folder
course-page-bilingual ID_B1DC15C4AB ID_0E6937BD6E 02_bilingual-web-case
long-case-bilingual ID_A2E91E896E ID_BEBEDEEEF2 02_bilingual-web-case
short-case-bilingual ID_7BEEC34617 ID_4913B48CD4 02_bilingual-web-case
ta-zh ID_E31D38E54A ID_849C64F84B 04_student-prompts
ta-en ID_5DDB206D4C ID_BF161CDF31 04_student-prompts
ta-readme ID_B5F1F04EA8 ID_F1FD10D318 04_student-prompts
source-guide ID_3A9D1BC1BC ID_73C4C52281 05_source-index

The former three web sources were removed only after replacement readback: long case ID_15D701ABFA, course page ID_952C130BE1, and short case ID_5B25BE2EE4. Their IDs remain in the registry as previous_source_id.

The current NotebookLM readback contains 26 Drive sources and reports stale_count=0. A retry during provisioning created seven duplicate source records; those duplicates were removed after title and content verification. This event is recorded in maintenance-change-log.jsonl so a future run can detect the same retry pattern.

Change detection and review efficiency

Every run begins with a deterministic Rapid Gate: source identity, Drive parent, permission, revision direction, non-empty content, bilingual markers, title parity, case-boundary labels, approval state, and internal-language privacy scan. If that scan finds no material problem, the run may continue to freshness synchronization and defer a full review.

Focused or full review is required for substantive content changes, new translation, material transcript cleaning, new case or administrative claims, source conflict, student error reports, or a high-risk Rapid Gate warning. The local avoid-ai-writing skill is applied to English prose. Its P0/P1 scan precedes a full review; a full rewrite pass is reserved for substantial English changes. Facts, dates, numbers, citations, uncertainty, and teacher intent are protected.

Approved-transcript gate

Only teacher-approved files in 03_approved-transcripts may be imported. The original and cleaned-pending versions remain private. User approval for Week 01 was received and recorded on 2026-09-10. The readable final cleaned transcript was then read back from the approved Drive folder, passed the English avoid-ai-writing P0/P1 detect gate, and was imported through a native Google Docs mirror. The original Markdown remains preserved; the authoritative record is transcript-register.csv, and NotebookLM source ID_C6D5419EE9 is synced.

Student prompts and schedule

CM108G_TA_EN, CM108G_TA_ZH-TW, CM108G_TA_README, and the bilingual source guide explain how students select the course page, matching textbook, approved transcript, and optional long or short case. They explicitly prohibit requests for formal Quiz answers or assessed No AI, midterm, or final work.

Active maintenance automations are recorded in the Codex app as daily general maintenance at 03:30 Asia/Taipei, transcript checks Monday at 22:00, and Tuesday at 09:00 and 18:00. They use Luna with the runtime's max reasoning setting and notify only on failures, blockers, permission loss, updates, or conflicts. A no-op run is quiet.

Daily maintenance readback — 2026-09-10

  • The local generator rebuilt all 18 weekly mirrors. No weekly content changed; raw SHA-256 values matched the manifest 18/18, and normalized Drive/local text parity was 18/18.
  • The root and six child folders still report anyone-with-link reader access with discovery disabled. All 26 Drive documents were nonempty and source_list_drive returned stale_count=0.
  • The local canonical short-case HTML is at commit 4121c0071d722461014dfa99935462f246c099e0 and the path is clean. The canonical and public pages currently expose no separate English section; the existing bilingual Drive document remains preserved and fresh (stale=false), so no Drive update or source_sync_drive call was made for Short Case.
  • The Week 14 registry hash was corrected from a one-row metadata mismatch. CM108G_TA_EN, CM108G_TA_ZH-TW, CM108G_TA_README, and source-guide remain valid Drive-backed sources, but their listed local canonical copies are absent and were recorded as Drive-backed-only.
  • User approval for the Week 01 transcript was received on 2026-09-10 and recorded in transcript-register.csv. The readable final cleaned Markdown was found in 03_approved-transcripts, passed the English avoid-ai-writing P0/P1 gate, was mirrored into native Google Docs, added to NotebookLM, and synchronized. Post-sync readback returned 27 Drive sources with stale_count=0; no commit, push, deployment, or publication was performed.

Week 01 transcript import readback — 2026-09-10

  • Approved source: CM108G_Week01_Cleaned_Transcript_EN_FINAL.md (ID_334E388692), 4,487 words, UTF-8 content hash B69A694E37ED6144455FC6EAA09FD7CA4A55007A620D13DF8288BDD6B119FF0C; the original Markdown was preserved.
  • Native mirror: CM108G Week 01 Cleaned Transcript EN FINAL - NotebookLM Source (ID_AE13B96C1F) in the approved-transcripts folder; Drive readback passed normalized text parity.
  • Anti-AI gate: detect mode passed P0/P1. P0 cutoff-disclaimer, chatbot-artifact, vague-attribution, and significance-inflation counts were all 0; P1 tier-1 and template/Let's hits were 0; no internal project language or credential pattern was found.
  • NotebookLM: source ID_C6D5419EE9 was added and source_sync_drive returned synced_count=1. Post-sync source_list_drive returned drive_count=27, stale_count=0; raw content readback retained normalized parity and the expected Part I, Part II, and assessment sections.
  • The temporary incompatible Markdown source ID_E38B4694A0 was deleted after the invalid sync result. No duplicate transcript source remains.

Current run records

  • maintenance-run.json: latest run, source counts, readbacks, and blocker.
  • maintenance-change-log.jsonl: append-only action records.
  • source-conflict-report.md: conflict policy and current Week 01 evidence blocker.
  • transcript-register.csv: approved-transcript eligibility register.
  • prompt-source-register.csv: student prompt and README source register.

Daily maintenance readback — 2026-09-12

  • The local generator rebuilt all 18 weekly mirrors; 18/18 SHA-256 values still match the registry and zero weekly content changes were found.
  • NotebookLM source_list_drive returned 27 stable Drive-backed Google Docs, stale_count=0, and no duplicates. The course-page, long-case, and short-case Drive documents were read back successfully without internal project or credential markers.
  • The Drive root share event and all six child-folder permission panels read back as anyone-with-link / reader with discovery disabled. No permission change was made.
  • Local course-page, long-case, and Short Case candidates have newer or separate local content, including the untracked Short Case index-en.html. Their SHA-256 values and pending approval state are recorded in notebooklm_source_registry.csv; the existing Drive mirrors remain the source of truth for this run.
  • The English Short Case candidate had zero P0 and tier-1 P1 counts, no internal markers, and passed local asset/reference structure checks. Full-style detection retained one template-word note and 12 em dashes across 3,997 words, so it remains an unapproved candidate requiring review.
  • No source_sync_drive call was made because the notebook was already fresh and current PM/teacher approval for the local candidates was not recorded. After approval, update the existing Drive documents in place and sync only the affected stable source UUIDs; do not create duplicates.

Daily maintenance readback — 2026-09-13

  • Run notebooklm-maintenance-2026-09-13-01 completed as a no-op. The generator rebuilt 18 weekly mirrors; registry hash matches were 18/18, weekly content changes were 0, and normalized local/Drive extracted-text parity was 18/18 with current revision readback.
  • Drive inventory remained unchanged: the refresh root has six expected child folders with 1, 18, 3, 2, 3, and 1 files respectively. Root and child-folder permission metadata read back as anyone-with-link / reader with discovery disabled.
  • NotebookLM source_list_drive returned 27 stable Google Docs sources, stale_count=0, and no duplicates. Nine static Drive documents and their NotebookLM source content passed nonempty/readback checks with no internal project markers. Indexed NotebookLM raw text was not used as a byte-for-byte parity gate because its representation can contain indexing wrappers or repeated tab text.
  • The course-page, long-case, and short-case local candidates did not change since the previous run. Current PM and teacher approval is still absent, so the existing Drive mirrors were preserved; no Drive update, source creation, deletion, or source_sync_drive call was made.
  • No English candidate changed, so the previous avoid-ai-writing P0=0 and tier-1 P1=0 result was retained and full-style review was not rerun. NotebookLM MCP remained authenticated at version 0.11.1; 0.11.3 is available but was not installed during maintenance.
  • Next action after approval: update the existing native Drive file IDs in place, read them back, then synchronize only the affected stable NotebookLM UUIDs. Do not create duplicate sources.
資料依據:NOTEBOOKLM_DRIVE_SYNC.md,全文;來源版本 2026-09-13;擷取/收錄 2026-09-13。
未公開原來源分享位置;此處的來源路徑是展示別名。
本收錄文字 SHA-256:b8bc4313ac14b768f51b6ae225847948638476e3b5d7fd7b5d4440f5e845dfc8
完整收錄清單與版本資訊