Go Archive
웹페이지와 영상을 내 저장소에 보관하고 검색하는 도구입니다. 웹과 휴대폰에서 같은 자료를 다시 찾아볼 수 있습니다.
저장한 다음에도 쓸 수 있도록
자료와 출처를 함께 남기기
자료의 종류에 따라 본문, HTML 사본, 화면 이미지, 영상과 자막을 함께 보관합니다. 컬렉션을 Markdown과 JSON으로 내보낼 때도 원본 주소와 보관된 파일 정보를 담아, 다른 도구에서 자료를 다시 사용할 수 있게 했습니다.
휴대폰에서 내 서버에 연결하기
QR 코드로 서버 주소와 연결 정보를 휴대폰에 전달합니다. 연결한 뒤 자료를 수집하고, 검색하고, 다시 열어 보는 과정을 다듬고 있습니다.
보관과 번역의 역할 나누기
번역과 더빙은 YouTube Translate & STS에서 다룹니다. 아카이브는 자료의 보관·검색·재생에 집중하도록 역할을 나누었습니다.
설계와 구현
구성과 데이터 흐름
웹·Flutter → Go Host → 사이트별 추출기 → 로컬 파일·SQLite → 검색과 열람
수집·검색·파일 제공은 Go Host에 모으고, 웹과 모바일은 같은 자료를 읽도록 했습니다. QR에는 Host 주소와 기기용 인증 정보를 담습니다. 기본 연결은 직접 HTTPS를 사용하므로 사용자가 외부 접속 주소를 준비해야 하며, headscale·tsnet 연결은 별도 실험 경로로 유지합니다.
외부 사이트의 실패를 작업 단위로 다루기
URL에 맞는 추출기를 선택하고, 웹페이지는 Rod로 렌더링한 스냅샷과 읽기용 본문을, 영상은 yt-dlp·FFmpeg로 미디어와 자막을 수집합니다. 동시 실행 수와 작업 종류별 제한 시간을 두고, 브라우저는 필요한 작업에서만 실행하고 정리합니다. 작업은 프로세스 내부에서 관리하므로, 실행 중인 수집 작업을 재시작 후 복구하는 부분은 추가 과제로 남습니다.
보관 파일과 검색용 데이터를 나누기
원문과 첨부 파일은 북마크별 디렉터리에 저장합니다. 파일 저장이 끝나면 북마크·첨부 파일 정보·검색 키를 DB 트랜잭션으로 반영합니다. 파일과 DB의 보존 상태를 각각 다뤄야 하는 대신, 원본 자료의 열람과 검색 인덱스의 관리를 분리할 수 있습니다.
SQLite FTS5 인덱스를 레코드와 함께 갱신하고, 사용할 수 없거나 결과가 없으면 일반 검색으로 이어지게 했습니다. 한글 입력 중의 자모·초성 검색에는 별도 검색 키를 사용합니다.
더빙 제작과 아카이브의 경계
STS에 수집 자료 목록과 파일 참조를 전달하고, 반환된 결과를 아카이브 저장소로 가져옵니다. 결과에 크기·해시가 있으면 파일과 대조합니다. Archive는 보관·상태·재생을 맡고, STS는 번역문·타이밍·음성의 검토와 수정을 맡도록 역할을 나눴습니다.
검증과 남은 범위
직접 QR 연결, FTS5 대체 검색, 한글 검색, 선택 파일의 수집 실패, STS 결과 파일 저장에 회귀 테스트를 두었습니다. 사이트별 추출 품질과 패키지 첫 실행, 실제 휴대폰의 외부망 연결·미디어 재생은 별도로 확인하고 있습니다.
지금까지와 다음 단계
수집, 검색, 상세 열람과 QR 연결을 구현했고, 최근에는 이미지 중심 문서를 보존하는 방식도 보완했습니다.
사이트마다 자료를 읽어 오는 방식이 달라 추출 품질을 계속 확인하고 있습니다. 배포 편의성과 실제 기기에서의 연결 안정성도 다듬는 중입니다.