Communitygithub.com

yinbaozong/Youtube-note-forge

유튜브와 빌리빌리 영상을 옵시디언 학습 노트로 변환하는 AI 에이전트 스킬입니다.

Youtube-note-forge란 무엇인가요?

이 스킬은 유튜브 및 빌리빌리 동영상을 구조화된 Obsidian 학습 노트로 자동 변환하는 엄격한 상태 기계(State Machine)입니다. 주된 실행 환경은 Obsidian 데스크톱 플러그인(youtube-note-reader)이며, Chrome 확장 프로그램은 비디오 URL과 브라우저 쿠키만 제공합니다. OpenAI 호환 모델과 Python 스크립트를 사용하여 대본 추출, 학습 가치 기반의 프레임 계획 수립, 실제 스크린샷 추출, 최종 노트 작성 및 검증까지 전 과정을 자동화합니다. ASR(자동 음성 인식)은 기본적으로 비활성화되어 있으며, 사용자가 명시적으로 동의한 경우에만 오디오 다운로드와 느린 처리를 허용합니다. 모든 단계는 실패 시 즉시 중단되고 상세 오류를 보고하며, 불완전한 노트나 중복 다운로드 등을 금지하는 엄격한 실패 정책을 따릅니다.

지원 대상~Claude Code✓Codex CLI~Cursor✓OpenCode
npx skills add yinbaozong/Youtube-note-forge

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

YouTube Transcript v4.0.0

주요 전체 제품 런타임은 youtube-note-reader Obsidian 데스크톱 플러그인입니다. 이 플러그인은 결정론적 상태 기계를 소유하고, 설정된 OpenAI 호환 모델을 호출하며, 이 스크립트들을 실행하고, 작업 상태를 유지하며, 완성된 노트를 활성 Vault에 씁니다. Chrome 확장 프로그램은 현재 비디오 URL과 브라우저 쿠키만 제공합니다. OpenCode는 선택적인 Skill 전용 진입점으로 남아 있으며, 전체 브라우저 + Obsidian 설치에는 필요하지 않습니다.

이 Skill을 엄격한 상태 기계로 사용하십시오. 대체 추출 경로를 즉흥적으로 사용하지 마십시오.

버전

사용자가 현재 버전을 물으면 다음을 실행하십시오:

python .obsidian/skills/youtube-transcript/scripts/video_note.py --version

명령 출력을 반환하십시오. 절대 기억에서 답변하지 마십시오. 설치된 버전, 소스 경로 및 핵심 파일의 SHA-256 값을 보고합니다.

고정 워크플로우

각 URL에 대해 다음 단계를 완료한 후 다음 URL로 이동하십시오. 스크립트 결과가 0이 아닌 첫 번째 결과에서 전체 배치를 중단하십시오.

  1. 소스 자료 추출:
python .obsidian/skills/youtube-transcript/scripts/extract_transcript.py "<url>" --output-dir "YouTube video" --deadline 300
  1. 생성된 노트와 해당 SRT를 읽으십시오. article_outline과 frames가 포함된 하나의 JSON 계획을 만드십시오. article_outline에는 대본에서 파생된 3-8개의 장(chapter)이 포함됩니다. 모든 항목에는 section_id, title, start, end, core_claims 및 learning_goal이 있습니다. 학습 가치에 따라 프레임을 선택하십시오. 일반적으로 시각적으로 의미 있는 각 장마다 하나의 필수 프레임이 필요하며, 별도의 단계나 결과에 대한 증거가 선택적으로 추가됩니다. 대부분의 비디오에는 6-14개의 프레임이 필요합니다. 24는 엄격한 안전 한계이며, 결코 목표가 아닙니다. 단순히 개수를 늘리기 위해 거의 동일한 여러 시간 지점을 생성하지 마십시오. 모든 프레임에는 section_id, timestamp, purpose 및 required가 있습니다. 동일한 section_id를 사용하여 각 스크린샷을 해당 상세 요약 장에 바인딩하십시오. 아직 노트의 이름을 바꾸거나 다시 작성하지 마십시오. 프로브 스크립트를 작성하거나 비디오 형식을 수동으로 검사하지 마십시오.

  2. 계획된 프레임을 정확히 한 번 추출하십시오. 재료 결과가 성공한 후에는 다음 실행 가능한 명령만 허용됩니다:

python .obsidian/skills/youtube-transcript/scripts/extract_frames.py "<url>" --plan "<plan.json>" --note "<generated-note.md>" --output-dir "YouTube video" --deadline 120
  1. 프레임 결과에 status: ok, 하나 이상의 스크린샷 및 실제 manifest 경로가 있는지 확인하십시오. 스크립트가 자동으로 frame_manifest를 노트 YAML에 씁니다. 이 중 하나라도 누락된 경우 중단하고 최종 노트를 작성하지 말며 썸네일을 대체하지 마십시오.

  2. references/note-contract.md에 따라 생성된 노트의 이름을 바꾸고 제자리에서 다시 작성하십시오. ## 详细内容总结 아래에서 모든 article_outline.title을 정확한 ### 제목으로 사용하고, 핵심 주장을 설명하며, 각 성공한 필수 프레임을 해당 장에 중국어 설명과 함께 삽입하십시오. Vault 로컬 스크린샷의 경우 항상 ![[YouTube video/assets/VIDEO_ID/frame.jpg]]와 같은 Obsidian 위키 임베드를 사용하십시오. 공백이 포함된 이스케이프되지 않은 마크다운 대상을 절대 사용하지 마십시오. 매니페스트에 나열된 이미지만 스크린샷으로 간주합니다.

  3. 검증:

python .obsidian/skills/youtube-transcript/scripts/validate_note.py "<finished-note.md>"
  1. 검증이 실패하면 해당 노트를 한 번만 편집하고 검증기를 한 번 더 실행하십시오. 이 수리 중에는 추출을 실행하거나, 임시 스크립트를 작성하거나, 구현 코드를 검사하거나, 플랫폼 동작을 진단하지 마십시오. 그래도 실패하면 중단하고 반환된 오류를 보고하십시오. 검증이 성공하면 검증기는 동일한 폴더에서 YAML url이 최종 노트와 정확히 일치하는 待命名 - ... 마크다운 초안만 제거합니다. 일치하지 않는 중단된 초안은 재개를 위해 유지됩니다.

실패 정책

PIPELINE_RESULT가 진실의 원천입니다. status: error가 발생하면 즉시 중단하고 URL, 단계, 코드, 메시지, 작업, 완료된 URL 및 시작되지 않은 URL을 보고하십시오.

실패에 대응하여 다른 다운로더, 브라우저, Puppeteer, Chrome/Edge 쿠키 추출, 웹 검색, 오디오 녹음 또는 두 번째 시도를 실행하지 마십시오. 유일하게 제어된 재시도는 스크립트 내부에서 이루어집니다. 즉, 타겟 프레임 추출 중 마지막으로 알려진 양호한 쿠키 확인과 비디오 스트림 URL 새로고침 한 번입니다.

ASR은 기본적으로 비활성화되어 있습니다. 사용자가 오디오 다운로드와 느린 처리를 명시적으로 수락하는 경우에만 --allow-asr을 사용하십시오.

시각 요구사항

  • 스크린샷은 증거이지 장식이 아닙니다.
  • 데모, 인터페이스, 다이어그램, 매개변수, 비교 상태 및 결과를 사용하십시오.
  • 프레임 스크립트는 먼저 yt-dlp 요청 헤더가 있는 원격 720p 이하 스트림을 사용합니다. 원격 탐색이 실패하면 계획된 각 시간 지점 주변의 8초 경계 세그먼트만 다운로드할 수 있습니다. 임시 세그먼트는 즉시 삭제되며 스크린샷을 위해 전체 비디오가 다운로드되지 않습니다.
  • 필수 프레임 실패 또는 프레임 계획 적용 범위가 70% 미만이면 심각한 실패입니다.
  • 표지, 썸네일, 수동으로 복사된 이미지 또는 중복 임베드는 키프레임으로 간주되지 않습니다.
  • 전체 레이아웃이 비슷해 보여도 계획된 프레임을 유지하십시오. 터미널 텍스트, 코드, 슬라이드 및 UI 상태 변경은 유용합니다. 실질적으로 빈 검정/흰색 프레임만 거부하십시오. OCR, AI 이미지 분석 또는 지각적 중복 필터링을 사용하지 마십시오.
  • frame_manifest가 존재하고 매니페스트의 모든 필수 프레임이 ## 详细内容总结에 나타나지 않으면 완료를 주장하지 마십시오.
  • Canvas 파일을 생성하지 마십시오.

최종 노트 요구사항

  • 파일 이름: 中文标题 - English Title.
  • YAML에는 skill_version: 4.0.0, quality_profile_version: 1 및 extract_frames.py가 쓴 유효한 frame_manifest가 포함되어야 합니다.
  • 본문은 중복된 H1 제목 없이 ## 一句话摘要로 시작합니다.
  • 최종 본문에서 소스 상태, 비디오 설명, 시각 자료 색인, 추출 경고, 작업 지침 및 자체 점검 섹션을 제거하십시오. YAML은 이미 소스 메타데이터를 담고 있습니다.
  • 중국어를 먼저 사용하고, 필요한 영어 용어는 처음 사용 시 설명하십시오.
  • 대본이 문서 개요와 깊이를 결정하도록 하십시오. 이미지는 설명을 지원하며, 일치하는 프레임을 사용할 수 없다고 해서 중요한 콘텐츠를 축약하거나 생략하지 마십시오.
  • 문서 깊이를 비디오 길이에 맞추십시오. 계획된 각 장에는 실제 설명, 비디오 증거 또는 예제, 그리고 명확한 학습 시사점이 필요합니다. 일반적인 내용 채우기 및 반복 문단을 피하십시오.
  • 마지막에 SRT를 연결하십시오. 원시 대본 텍스트를 붙여넣지 마십시오.
  • 최종 완료 전에 자체 점검 체크리스트를 제거하십시오.

관련 스킬