구현 방법과 재현
이관 프로그램
source/build_archive.py는 고정된 공개 원본 커밋에서 미디어 폴더만 내려받습니다. 원본 파일의 Git blob 해시를 계산해 API 목록과 비교합니다. MP3와 원본 player.html을 바꾸지 않고 복사합니다. 보고서 발췌본과 문서를 HTML로 변환하고 상대경로 홈을 생성합니다.
source/verify_archive.py는 별도 검사기입니다. 상대 링크, Python 구문, MP3 디코딩과 실제 길이, 챕터 범위, 브라우저 오류와 가로 넘침을 검사합니다. 검사하지 않은 항목을 성공으로 표시하지 않습니다.
재빌드
Python 3.11 이상에서 다음과 같이 실행합니다. 재빌드는 고정 원본을 내려받으므로 인터넷이 필요합니다. 이미 생성된 HTML·MP3 열람에는 외부 서비스가 필요하지 않습니다.
python source/build_archive.py --project ./archive-work --target ./rebuilt
python -m pip install playwright==1.51.0
python -m playwright install chromium
python source/verify_archive.py --target ./rebuilt
python source/build_archive.py --project ./archive-work --target ./rebuilt --finalize
검사에는 ffmpeg와 ffprobe도 필요합니다. 브라우저 의존 패키지가 부족한 리눅스 환경에서는 Playwright의 install --with-deps 옵션을 사용합니다. CI 정의는 source/archive-largo-v12.yml에 보존합니다.
팟캐스트 원본 소스
source/podcast/generate_podcast.py는 원본의 복사본입니다. Podcastfy 0.4.3의 EdgeTTS 공급자를 사용하고 edge-tts 7.2.8을 연결한 이력이 있습니다. 입력 문장의 숫자 검사를 한 뒤 진행자·해설자 구간을 합성합니다. pydub로 구간과 무음을 합치고 ffmpeg로 음량을 조정합니다. 구간 길이로 챕터·SRT·VTT를 만듭니다.
원본 생성기는 REPORT_SOURCE.md를 source 폴더의 형제 input 폴더에서 읽습니다. 이 구조가 유지되도록 source/podcast/input과 source/podcast/source에 원본을 배치했습니다. 생성기는 source/podcast/source/generate_podcast.py에도 보존합니다.
python -m pip install --no-deps podcastfy==0.4.3
python -m pip install edge-tts==7.2.8 nest-asyncio==1.6.0 pydub==0.25.1
PROJECT_DIR=./new-podcast DELIVERY_DIR=./new-delivery python source/podcast/source/generate_podcast.py
새 합성은 대본을 Microsoft 온라인 음성 서비스로 보냅니다. 이번 이관에서는 합성을 실행하지 않습니다. 서비스·목소리·패키지의 미래 동작은 보장하지 않습니다. 이미 완성된 MP3를 우선 사용하세요.
데이터와 결과의 단위
보고서의 수익률·비용은 퍼센트, 비용 증가 비교는 퍼센트포인트로 읽습니다. 구조 위험률, 청산잔고 낙폭, 장중 낙폭은 다른 수치입니다. 현금일과 본전은 승리로 세지 않습니다. 월별 수익률의 합계는 복리수익률과 다릅니다.
config/v12-reference.json은 보고서 문장으로부터 정리한 참고 설정입니다. 검증된 원본 최적화 엔진 설정 파일의 바이트 복사본이 아닙니다.