버전 1.29.0 · Chrome Manifest V3 · 별도의 빌드 과정이 필요 없는 순수 HTML, CSS, JavaScript 확장 프로그램
ChatGPT의 입력과 화면 구성을 편리하게 조절하고, HTML5 동영상과 오디오의 재생 속도를 제어하며, 여러 유튜브 탭의 전체 자막을 한꺼번에 복사하거나 저장할 수 있는 Chrome 확장 프로그램입니다. 전체 페이지 및 선택 영역 화면 캡처, 페이지 요소 숨기기, 열린 탭 URL 복사, 웹사이트가 막아 둔 우클릭·텍스트 선택·복사·이미지 드래그·가운데 클릭의 복원 기능도 하나의 패널에서 제공합니다.
이 프로젝트는 정상적인 브라우저 기능을 불필요하게 다시 구현하지 않는 것을 중요한 원칙으로 삼습니다. 일반 링크의 새 탭 열기, 방문 기록, 방문한 링크의 색상, 기본 복사와 같은 기능은 가능한 한 Chrome에 맡깁니다. 주소나 버튼의 역할이 확실하지 않으면 임의로 추정하여 실행하지 않으며, 유튜브 자막도 내부 API 요청을 새로 조립하지 않고 현재 유튜브 플레이어가 실제로 발급한 요청과 자막 패널을 이용합니다.
Important
이 확장 프로그램은 Chrome 웹 스토어에서 설치하는 완성형 배포본이 아니라, 개발자 모드에서 압축을 푼 폴더를 직접 불러오는 방식으로 사용합니다.
Caution
사이트 자체 외부 링크 경고 건너뛰기는 웹사이트가 제공하는 위험 안내를 생략할 수 있습니다. 신뢰하는 사이트와 링크에서만 켜서 사용하십시오. 이 기능은 Chrome의 안전 브라우징 경고, 인증서 경고 또는 악성 다운로드 경고를 해제하지 않습니다.
- 주요 기능 한눈에 보기
- 기본 설정값
- 지원 환경
- 설치 방법
- 업데이트 방법
- 삭제 방법
- 처음 사용하는 경우의 권장 순서
- ChatGPT 기능
- 동영상 및 오디오 재생 속도
- 유튜브 전체 자막
- 웹페이지 입력 제한 해제
- 페이지 도구
- 열린 탭 URL 복사
- 저장되는 파일과 폴더
- 설정과 데이터의 저장 방식
- 권한 설명
- 개인정보와 네트워크 사용
- 안전성과 복원 원칙
- 파일 구성과 역할
- 알려진 제한 사항
- 문제 해결
- 자주 묻는 질문
- 개발 및 배포
- 버전 1.29.0의 핵심 변경 사항
- 라이선스와 공개 전 확인 사항
| 영역 | 기능 | 핵심 설명 |
|---|---|---|
| ChatGPT | 새 메시지 입력란에서 Ctrl + Enter 전송 |
화면 하단 입력란에서 Ctrl + Enter를 누르면 메시지를 전송합니다. |
| ChatGPT | 이전 메시지 편집란에서 Ctrl + Enter 전송 |
연필 모양 버튼으로 연 사용자 메시지 편집란에서도 같은 단축키로 수정 내용을 전송합니다. |
| ChatGPT | 대화 기록 너비 조절 | 사용자 메시지와 GPT 답변이 표시되는 대화 열을 기본 너비 또는 640~2,000픽셀로 조절합니다. |
| ChatGPT | 새 메시지 입력란 너비 조절 | 화면 하단 작성 영역을 대화 기록과 별도로 기본 너비 또는 640~2,000픽셀로 조절합니다. |
| 미디어 | 동영상·오디오 속도 조절 | 표준 HTML5 <video>와 <audio>를 0.07배속부터 16배속까지 조절합니다. |
| 미디어 | 탭별·소스별 속도 분리 | 다른 탭이나 같은 페이지의 다른 미디어 소스에 속도 변경이 전달되지 않습니다. |
| 미디어 | 속도 표시창 | 영상 가운데 위에 현재 실제 재생 속도를 표시하고 원하는 위치로 끌어서 옮길 수 있습니다. |
| 미디어 | 사용자 지정 단축키 | 느리게, 빠르게, 배속 전환, 뒤로 이동, 앞으로 이동, 표시창 전환의 키를 각각 바꿀 수 있습니다. |
| 유튜브 | 여러 탭의 전체 자막 추출 | 현재 Chrome 창에 열린 일반 영상, Shorts, 라이브 및 임베드 영상 탭을 골라 처리합니다. |
| 유튜브 | 원본 자막 및 자동 번역 선택 | 탭마다 원본 자막 트랙과 유튜브가 제공하는 자동 번역 언어를 따로 선택합니다. |
| 유튜브 | 클립보드 일괄 복사 | 선택한 탭들의 자막을 탭 순서대로 하나의 클립보드 내용으로 합칩니다. |
| 유튜브 | 합본 및 개별 파일 저장 | 모든 자막을 한 파일로 저장하거나 영상별 개별 텍스트 파일로 일괄 저장합니다. |
| 웹페이지 | 우클릭·선택·복사 제한 해제 | 웹사이트가 막아 둔 우클릭, 텍스트 선택, 복사, 이미지 드래그, 가운데 클릭을 필요한 항목만 복원합니다. |
| 웹페이지 | 자바스크립트 버튼형 링크 새 탭 열기 | 일반 <a> 링크는 Chrome에 맡기고, 주소가 명확한 버튼형 링크만 새 탭으로 엽니다. |
| 웹페이지 | 뒤로 가기 방해 차단 | 실제 뒤로 이동 직후 사이트가 같은 주소를 다시 추가하거나 앞으로 보내는 동작을 짧은 시간 동안 차단합니다. |
| 웹페이지 | 링크 주소 복사 | Chrome이 확인한 일반 링크 주소 또는 명시적인 버튼형 링크 주소를 그대로 복사합니다. |
| 웹페이지 | 사이트 자체 외부 링크 경고 건너뛰기 | 사이트가 만든 명확한 외부 링크 경고만 처리하며 Chrome 자체 보안 경고는 건드리지 않습니다. |
| 페이지 도구 | 현재 페이지 전체 캡처 | Chrome이 보고한 전체 페이지 크기를 한 번에 PNG 파일로 저장합니다. |
| 페이지 도구 | 드래그 영역 캡처 | 직사각형 영역을 직접 지정하며, 화면 가장자리에 가까워지면 자동으로 스크롤합니다. |
| 페이지 도구 | 페이지 요소 숨기기 | 요소를 클릭하여 이번 페이지에서만 숨기거나, 안정적인 선택자가 있는 경우 사이트별로 기억합니다. |
| 탭 도구 | 열린 탭 URL 복사 | 현재 창의 탭을 골라 URL을 한 줄에 하나씩 탭 순서대로 복사합니다. |
처음 설치했을 때 적용되는 기본값은 다음과 같습니다.
| 설정 | 기본값 |
|---|---|
새 메시지 입력란에서 Ctrl + Enter 전송 |
켜짐 |
이전 메시지 편집란에서 Ctrl + Enter 전송 |
켜짐 |
| 대화 기록 너비 | 960픽셀 |
| 새 메시지 입력란 너비 | ChatGPT 기본 너비 |
| 설정 | 기본값 |
|---|---|
| HTML5 미디어 속도 조절 | 꺼짐 |
| 속도 변경 간격 | 0.10배 |
| 앞뒤 이동 간격 | 10초 |
R 키 기본 복원 배속 |
2.00배속 |
| 새 미디어 소스에 마지막 속도 유지 | 꺼짐 |
| 영상 위 현재 속도 표시 | 켜짐 |
| 키보드 단축키 사용 | 켜짐 |
| 표시창 위치 | 영상 가운데 위 |
| 느리게 재생 | S |
| 빠르게 재생 | D |
| 1.00배속과 이전 또는 기본 배속 전환 | R |
| 뒤로 이동 | Z |
| 앞으로 이동 | X |
| 표시창 켜기 또는 끄기 | V |
미디어 기능의 세부 토글은 저장되어 있지만, HTML5 미디어 속도 조절이 꺼져 있으면 실제 페이지에는 적용되지 않습니다.
| 설정 | 기본값 |
|---|---|
| 영상 제목 포함 | 켜짐 |
| 재생 시간 포함 | 꺼짐 |
| 자막 줄 사이의 빈 줄 | 0개 |
| 원본 자막 선호 | 영상의 기본 자막 또는 첫 번째 자막 |
| 자동 번역 언어 | 번역하지 않음 |
다음 열 가지 기능은 모두 처음에 꺼져 있습니다.
- 우클릭 메뉴 허용
- 텍스트 드래그 및 선택 허용
- 복사 차단 및 문구 변경 방지
- 클립보드 덧붙이기 방지
- 이미지 드래그 허용
- 가운데 버튼과 휠 클릭 허용
- 자바스크립트 링크 새 탭 열기
- 뒤로 가기 방해 차단
- 링크 주소 복사
- 사이트 자체 외부 링크 경고 건너뛰기
- 운영체제: Windows 11을 기준으로 사용 방법을 설명합니다.
- 브라우저: 최근 버전의 Google Chrome을 권장합니다.
- 확장 프로그램 형식: Manifest V3
- 설치 방식:
chrome://extensions의 개발자 모드에서 압축을 푼 폴더를 직접 불러옵니다. - 빌드 과정: 필요하지 않습니다. 소스 파일을 그대로 불러옵니다.
- 로컬 미디어: 사용자가 별도로 파일 URL에 대한 액세스 허용을 켠 경우에만
file://동영상과 오디오에 적용됩니다.
다른 Chromium 계열 브라우저에서도 일부 기능이 작동할 수 있지만, Chrome 이외의 브라우저는 이 README의 공식 검증 범위에 포함하지 않습니다.
-
배포 ZIP 파일의 압축을 풉니다.
-
Chrome 주소창에 다음 주소를 입력합니다.
chrome://extensions -
화면 오른쪽 위의 개발자 모드를 켭니다.
-
압축해제된 확장 프로그램을 로드합니다를 누릅니다.
-
manifest.json이 들어 있는 확장 프로그램 폴더를 선택합니다. -
Chrome 도구 모음에서 퍼즐 모양의 확장 프로그램 버튼을 누릅니다.
-
이 확장 프로그램을 찾아 고정 버튼을 누르면 아이콘을 도구 모음에 계속 표시할 수 있습니다.
-
이미 열려 있던 ChatGPT, 유튜브 또는 일반 웹페이지 탭은 한 번 새로 고칩니다.
chrome://extensions에서 이 확장 프로그램의 세부정보를 엽니다.- 파일 URL에 대한 액세스 허용을 켭니다.
- Chrome으로 로컬 동영상 또는 오디오 파일을 다시 엽니다.
Note
Chrome 내부 페이지, Chrome 웹 스토어 및 일부 보호된 페이지에는 확장 프로그램 스크립트를 삽입할 수 없습니다.
- 새 버전 ZIP의 압축을 풉니다.
- 기존 확장 프로그램 폴더 안의 파일을 새 파일로 교체합니다.
chrome://extensions를 엽니다.- 해당 확장 프로그램 카드의 새로고침 버튼을 누릅니다.
- 이미 열려 있던 ChatGPT, 유튜브, 미디어 및 일반 웹페이지 탭도 한 번 새로 고칩니다.
- 기존 확장 프로그램을 사용 중지하거나 제거합니다.
- 새 버전 폴더를 압축해제된 확장 프로그램을 로드합니다로 불러옵니다.
- 같은 확장 프로그램의 두 버전을 동시에 켜지 마십시오. 이벤트 처리와 화면 도구가 중복 실행될 수 있습니다.
버전 업데이트로 권한 범위가 달라졌거나 Chrome이 권한을 다시 확인해야 할 때 확장 프로그램이 일시적으로 사용 중지될 수 있습니다. 확장 프로그램 카드의 안내를 확인하고 필요한 권한을 승인하십시오.
- 일반 설정은 가능한 한 기존 값을 유지합니다.
- 과거 버전이 저장했던 수동 방문 링크 색상 기록은 삭제됩니다.
- 과거 버전의 전체 미디어 주소 기반 세션 상태는 삭제되고, 불투명한 소스 식별자 방식으로 전환됩니다.
- 위치 순서나 클래스 이름에만 의존하던 오래된 요소 숨기기 규칙은 안전하지 않은 규칙으로 판단하여 정리될 수 있습니다.
- Chrome 주소창에
chrome://extensions를 입력합니다. - 확장 프로그램 카드에서 삭제를 누릅니다.
- 확장 프로그램이 저장했던
chrome.storage.local및chrome.storage.session데이터는 Chrome이 제거합니다. - 이미 저장된 PNG와 텍스트 파일은 다운로드 폴더에 그대로 남으므로 필요하면 직접 삭제합니다.
- 열려 있던 웹페이지에 일시적으로 적용된 스타일은 페이지를 새로 고치면 사라집니다.
- ChatGPT 탭을 새로 고친 뒤 화면 하단 입력란에서
Ctrl + Enter가 작동하는지 확인합니다. - 확장 프로그램 패널에서 ChatGPT 대화 기록과 입력란 너비를 조절합니다.
- 미디어 기능이 필요하면 동영상 및 오디오 재생 속도를 펼쳐 HTML5 미디어 속도 조절을 켭니다.
- 유튜브 자막 기능은 먼저 탭 하나만 선택하여 확인한 뒤 여러 탭 일괄 작업을 사용합니다.
- 웹페이지 입력 제한 해제 기능은 모두 켜기보다 필요한 항목만 개별적으로 켜는 것을 권장합니다.
- 사이트 자체 외부 링크 경고 건너뛰기와 뒤로 가기 방해 차단은 실제로 문제가 있는 사이트에서만 사용하십시오.
- 전체 페이지 캡처와 영역 캡처는 개발자 도구가 닫힌 상태에서 사용하는 것이 좋습니다.
ChatGPT 관련 콘텐츠 스크립트는 다음 주소에서만 실행됩니다.
https://chatgpt.com/*
화면 하단의 새 메시지 입력란에서 Ctrl + Enter를 누르면 현재 메시지를 전송합니다.
- 실제 사용자가 누른 키 입력만 처리합니다.
Ctrl과Enter를 정확히 함께 눌러야 합니다.Shift,Alt, Windows 키가 함께 눌린 경우에는 처리하지 않습니다.- 한글, 일본어, 중국어 등의 입력기 조합이 진행 중인 경우에는 전송하지 않습니다.
- 검색창, 설정 화면, 의견 입력 양식처럼 ChatGPT의 채팅 작성란이 아닌 일반 입력란에서는 작동하지 않습니다.
- 기능이 꺼져 있으면 단축키 이벤트 처리기를 제거합니다.
확장 프로그램은 먼저 현재 작성란 주변에 있는 ChatGPT의 실제 전송 버튼을 찾고 클릭합니다. 전송 버튼을 확인하지 못한 경우에는 ChatGPT 편집기가 자체적으로 처리할 수 있도록 일반 Enter 키 이벤트를 마지막 대체 수단으로 전달합니다.
답변 생성을 중지하는 버튼, 취소 버튼, 닫기 버튼, 삭제 버튼과 같이 전송과 관계없는 버튼은 전송 버튼으로 사용하지 않습니다.
사용자가 이전에 보낸 메시지의 연필 모양 버튼을 누르면 메시지 내부에 편집란이 나타납니다. 이 편집란에서도 Ctrl + Enter를 누르면 수정된 내용을 전송합니다.
확장 프로그램은 편집란이 사용자 메시지 대화 항목 안에 있는지 먼저 확인합니다. 그다음 해당 메시지 항목 내부에서 전송·저장·제출에 해당하는 버튼 또는 양식 제출 동작을 찾습니다. 화면 하단의 새 메시지 전송 버튼을 잘못 누르지 않도록 편집 중인 메시지의 범위 안에서 우선 처리합니다.
- 편집 UI에서 명확하게 확인되는 전송 또는 저장 버튼을 클릭합니다.
- 편집란이 양식 안에 있으면
requestSubmit()을 사용합니다. - 위 방법을 사용할 수 없으면 ChatGPT가 자체적으로 처리할 수 있도록 일반
Enter키 이벤트를 전달합니다.
패널의 ChatGPT 너비 카드에는 두 개의 독립적인 슬라이더가 있습니다.
사용자 메시지와 GPT 답변이 표시되는 대화 열의 최대 너비를 조절합니다.
- 왼쪽 끝: ChatGPT 기본 너비
- 조절 범위: 640픽셀부터 2,000픽셀
- 조절 간격: 40픽셀
- 첫 설치 기본값: 960픽셀
- 브라우저 창이 설정값보다 좁을 때: 화면 안에 들어오도록 자동 제한
이 기능은 .markdown.prose 하나만 임의로 늘리는 것이 아니라, 대화 항목과 ChatGPT가 사용하는 대화 열의 너비 변수 및 대표적인 최대 너비 컨테이너를 함께 조절합니다. 답변 안의 마크다운 영역은 대화 열 안에서 사용할 수 있는 너비를 채우도록 설정합니다.
화면 하단의 새 메시지 작성 영역과 그 바깥 컨테이너의 최대 너비를 조절합니다.
- 왼쪽 끝: ChatGPT 기본 너비
- 조절 범위: 640픽셀부터 2,000픽셀
- 조절 간격: 40픽셀
- 첫 설치 기본값: ChatGPT 기본 너비
- 브라우저 창이 설정값보다 좁을 때: 화면 안에 들어오도록 자동 제한
이 슬라이더는 이전 메시지 안에서 열리는 편집란의 너비를 바꾸지 않습니다.
- 슬라이더를 움직이면 이미 열려 있는 ChatGPT 탭에 즉시 반영됩니다.
- 설정값은
chrome.storage.local에 저장됩니다. - 문서 전체를 계속 검사하는 반복 타이머나 변경 감시 기능을 사용하지 않습니다.
- 필요한 CSS 규칙을 하나의 스타일 요소로 적용하며, 기본 너비를 선택하면 해당 스타일을 완전히 제거합니다.
표준 HTML5 미디어 요소를 대상으로 합니다.
<video></video>
<audio></audio>유튜브, 온라인 강의, 팟캐스트, 음성 강의, 일반 웹 동영상과 Chrome으로 직접 연 로컬 미디어 파일 등 표준 HTML5 요소를 사용하는 페이지에서 작동할 수 있습니다.
비표준 플레이어나 자체적인 원격 스트리밍 엔진만 사용하는 사이트에서는 일부 기능이 적용되지 않을 수 있습니다.
- 확장 프로그램 패널을 엽니다.
- 동영상 및 오디오 재생 속도를 펼칩니다.
- HTML5 미디어 속도 조절을 켭니다.
- 현재 재생 중인 미디어가 있으면 해당 미디어가 자동으로 선택됩니다.
- 재생 중인 항목이 없으면 조절하려는 동영상 또는 오디오에 마우스를 올린 뒤 패널을 다시 확인합니다.
기능을 끄면 미디어 감시, 키보드 처리, 화면 위치 계산과 표시창을 정리합니다. 이미 사용자가 설정한 현재 미디어의 재생 속도 자체를 강제로 1.00배속으로 되돌리지는 않습니다.
한 페이지에 여러 동영상과 오디오가 있을 때에는 다음 순서로 현재 조절 대상을 결정합니다.
- 현재 재생 중인 미디어
- 마지막으로 마우스를 올린 미디어
- 화면에서 가장 크게 보이는 동영상
- 그 밖에 확인 가능한 미디어
패널의 속도 슬라이더와 미디어 단축키는 선택된 미디어 소스 하나에만 적용됩니다.
속도 상태는 다음 두 단계로 분리됩니다.
- 탭별 분리: 한 유튜브 탭에서 3.00배속을 사용해도 다른 유튜브 탭의 속도는 바뀌지 않습니다.
- 소스별 분리: 같은 페이지에 동영상 두 개와 오디오 하나가 있어도 각각 서로 다른 속도를 유지할 수 있습니다.
유튜브처럼 하나의 <video> 요소를 재사용하면서 영상 주소만 바꾸는 사이트에서도 소스가 바뀐 것으로 인식합니다. 전에 재생했던 소스로 돌아오면 해당 소스에서 사용하던 속도와 R 키 전환 기록을 복원합니다.
미디어 주소에는 서명과 토큰이 포함될 수 있으므로, 세션 저장소에는 전체 주소를 저장하지 않습니다. 주소를 불투명한 짧은 식별자로 변환하여 현재 Chrome 세션에서만 사용합니다.
| 항목 | 값 |
|---|---|
| 최소 속도 | 0.07배속 |
| 최대 속도 | 16.00배속 |
| 직접 입력 간격 | 0.01배 |
| 슬라이더 내부 단위 | 0.01배 |
패널에서 슬라이더를 사용하거나 숫자 입력란에 값을 직접 입력할 수 있습니다. 브라우저 또는 사이트가 특정 속도를 허용하지 않으면 실제 적용값이 다를 수 있습니다.
1.00배속으로 초기화 버튼은 현재 선택된 미디어 하나만 1.00배속으로 되돌립니다.
처음 보는 동영상, 오디오 또는 새로운 미디어 소스는 1.00배속으로 시작합니다.
아직 개별 기록이 없는 새 미디어 소스에는 현재 탭에서 마지막으로 지정한 속도를 적용합니다.
예시:
현재 탭의 영상 A: 2.50배속
새 미디어에 마지막 속도 유지: 켜짐
영상 B를 처음 재생: 2.50배속으로 시작
전에 사용한 소스로 돌아가는 경우에는 이 토글보다 해당 소스의 개별 기록이 우선합니다.
S와 D 단축키로 속도를 바꿀 때 한 번에 증감할 값을 정합니다.
| 항목 | 값 |
|---|---|
| 최소 | 0.01배 |
| 최대 | 2.00배 |
| 기본값 | 0.10배 |
예시:
현재 속도: 1.00배속
변경 간격: 0.25배
D 입력: 1.25배속
D 입력: 1.50배속
S 입력: 1.25배속
Z와 X 단축키로 재생 위치를 바꿀 때 한 번에 이동할 시간을 정합니다.
| 항목 | 값 |
|---|---|
| 최소 | 1초 |
| 최대 | 600초 |
| 기본값 | 10초 |
미디어의 시작 이전이나 재생 가능한 전체 길이 이후로 이동하지 않도록 가능한 범위 안에서 제한합니다.
R 키는 1.00배속과 직전에 사용한 1.00이 아닌 배속 사이를 전환합니다.
예시:
3.00배속에서 R 입력 → 1.00배속
다시 R 입력 → 3.00배속
다시 R 입력 → 1.00배속
현재 미디어에 직전 배속 기록이 없으면 패널의 R 키 기본 복원 배속을 사용합니다.
기본 예시:
새 미디어가 1.00배속인 상태
R 입력 → 2.00배속
다시 R 입력 → 1.00배속
다시 R 입력 → 2.00배속
- 최소: 0.07배속
- 최대: 16.00배속
- 입력 간격: 0.01배속
- 기본값: 2.00배속
미디어가 로딩 과정에서 일시적으로 0이나 유효하지 않은 속도를 보고하더라도 이를 복원 배속으로 기억하지 않습니다.
- 영상이 충분히 큰 경우 현재 실제 재생 속도를 작은 표시창으로 보여 줍니다.
- 기본 위치는 영상의 가운데 위입니다.
- 표시창을 마우스 왼쪽 버튼으로 끌어서 영상 안의 원하는 위치로 옮길 수 있습니다.
- 위치는 영상 크기에 대한 상대 좌표로 저장됩니다.
- 표시창을 가운데 위로 되돌리기를 누르면 기본 위치로 돌아갑니다.
- 오디오에는 표시할 영상 화면이 없으므로 표시창을 만들지 않습니다.
- 너무 작은 영상에는 표시창을 만들지 않습니다. 현재 구현의 최소 기준은 대략 가로 120픽셀, 세로 68픽셀입니다.
- 전체 화면 상태가 바뀌거나 창 크기가 달라지면 표시창 위치를 다시 계산합니다.
표시창은 확장 프로그램 전용 Shadow DOM 안에 생성하여 웹사이트의 일반 CSS가 표시창 모양을 쉽게 망가뜨리지 않도록 합니다.
| 키 | 동작 |
|---|---|
S |
설정한 간격만큼 느리게 재생 |
D |
설정한 간격만큼 빠르게 재생 |
R |
1.00배속과 이전 또는 기본 배속 전환 |
Z |
설정한 시간만큼 뒤로 이동 |
X |
설정한 시간만큼 앞으로 이동 |
V |
영상 위 속도 표시창 켜기 또는 끄기 |
- 패널에서 동영상 및 오디오 재생 속도를 펼칩니다.
- 단축키 설정의 키 버튼을 누릅니다.
- 새로 사용할 키를 누릅니다.
Esc를 누르면 변경을 취소합니다.- 기본값 복원을 누르면
S,D,R,Z,X,V로 돌아갑니다.
- 같은 키를 두 기능에 중복으로 지정할 수 없습니다.
Ctrl,Alt, Windows 키를 포함하는 조합 단축키는 지원하지 않습니다.Escape,Tab,Enter, 조합 키, 잠금 키와 같은 일부 키는 미디어 단축키로 사용할 수 없습니다.- 입력란, 여러 줄 입력란, 선택 상자 또는 편집 가능한 영역에서 글을 쓰는 동안에는 단축키가 작동하지 않습니다.
- 한글 등의 문자를 조합하는 동안에는 작동하지 않습니다.
- 드래그 영역 캡처 또는 페이지 요소 숨기기 도구가 열린 동안에는 작동하지 않습니다.
- 실제 사용자가 누른 키만 처리하며 페이지 스크립트가 만든 합성 키 이벤트는 무시합니다.
미디어 기능은 일반 웹페이지의 프레임과 사이트가 나중에 추가하는 미디어 요소도 처리합니다. 기능을 켰을 때만 문서 변경 감시 기능을 사용하며, 새로 추가된 노드에서 동영상 또는 오디오가 발견된 경우에만 등록합니다. 페이지 전체를 반복해서 다시 검색하는 타이머는 사용하지 않습니다.
현재 Chrome 창의 다음 유튜브 주소 형식을 목록에 표시합니다.
https://www.youtube.com/watch?v=VIDEO_ID
https://www.youtube.com/shorts/VIDEO_ID
https://www.youtube.com/live/VIDEO_ID
https://www.youtube.com/embed/VIDEO_ID
유튜브 홈, 검색 결과, 채널 페이지처럼 특정 영상 식별자를 확인할 수 없는 탭은 자막 목록에 포함하지 않습니다.
- 자막을 추출할 유튜브 영상 탭들을 같은 Chrome 창에 엽니다.
- 확장 프로그램 패널을 엽니다.
- 유튜브 전체 자막을 펼칩니다.
- 처리할 탭을 체크합니다.
- 선택한 탭마다 원본 자막 트랙을 고릅니다.
- 필요한 경우 자동 번역 언어를 선택합니다.
- 영상 제목, 재생 시간, 줄 사이 간격을 설정합니다.
- 다음 중 하나를 누릅니다.
- 선택 자막 모두 복사
- 한 파일로 저장
- 개별 파일 일괄 저장
- 확장 프로그램 패널을 연 현재 Chrome 창의 탭만 표시합니다.
- 탭 표시 순서대로 목록을 정렬합니다.
- 현재 활성 탭에는 현재 표시가 나타납니다.
- 고정 탭에는 고정됨 표시가 나타납니다.
- 한 개의 유튜브 탭만 있거나 현재 활성 탭이 유튜브 영상이면 처음 목록을 열었을 때 자동으로 선택될 수 있습니다.
- 모두 선택, 선택 해제, 새로고침을 사용할 수 있습니다.
- 한 번에 최대 50개의 유튜브 탭을 선택할 수 있습니다.
- 자막 트랙 정보는 동시에 무제한으로 요청하지 않고 최대 세 개의 탭씩 나누어 확인합니다.
각 탭에서 유튜브 플레이어가 제공하는 자막 트랙을 읽습니다.
- 수동으로 작성된 자막과 자동 생성 자막을 구분하여 표시합니다.
- 자막 트랙의 언어 이름과 언어 코드를 사용합니다.
- 영상의 기본 자막이 있으면 먼저 선택합니다.
- 기본 자막이 없으면 목록의 첫 번째 자막을 선택합니다.
- 이전에 선택한 언어와 자막 종류의 선호를 다음 탭 목록에도 가능한 범위에서 적용합니다.
자막 목록을 가져오지 못한 탭에는 오류와 다시 시도 버튼이 나타납니다.
선택한 원본 자막이 유튜브 자동 번역을 지원하면 해당 영상의 플레이어가 제공하는 번역 언어 목록을 표시합니다.
- 번역하지 않음을 선택하면 원본 자막을 사용합니다.
- 탭마다 서로 다른 번역 언어를 선택할 수 있습니다.
- 원본 자막이 자동 번역을 지원하지 않으면 번역 선택을 사용할 수 없습니다.
- 자동 번역 결과의 정확도와 제공 여부는 유튜브가 결정합니다.
예시:
영상 A: 영어 자동 생성 자막 → 한국어 자동 번역
영상 B: 한국어 수동 자막 → 번역하지 않음
영상 C: 일본어 수동 자막 → 영어 자동 번역
켜면 각 영상 자막의 맨 앞에 영상 제목과 빈 줄을 추가합니다.
영상 제목
첫 번째 자막
두 번째 자막
끄면 자막 문장만 출력합니다.
켜면 각 자막 문장 앞에 시작 시간을 표시합니다.
[00:05] 첫 번째 자막
[01:32] 두 번째 자막
[01:04:09] 한 시간이 넘는 영상의 자막
- 한 시간 미만:
[MM:SS] - 한 시간 이상:
[HH:MM:SS]
0개부터 3개까지 선택할 수 있습니다.
- 0개: 자막 문장이 바로 다음 줄에 이어집니다.
- 1개: 문장 사이에 빈 줄 하나를 넣습니다.
- 2개: 문장 사이에 빈 줄 두 개를 넣습니다.
- 3개: 문장 사이에 빈 줄 세 개를 넣습니다.
자막 안의 탭, 연속 공백, 불필요한 줄바꿈과 줄바꿈하지 않는 공백 문자는 읽기 쉬운 한 줄 문장으로 정리합니다.
- 선택한 탭들의 자막을 탭 표시 순서대로 처리합니다.
- 성공한 자막을 하나의 텍스트로 합칩니다.
- 각 영상 결과 사이에는 넉넉한 줄 간격을 둡니다.
- 결과 전체를 클립보드에 넣습니다.
- 한 탭이 실패하더라도 나머지 탭의 작업은 계속합니다.
- 완료 메시지에 성공한 탭과 실패한 탭의 개수를 표시합니다.
Windows에서 붙여넣기 좋도록 줄바꿈은 CRLF 형식을 사용합니다.
선택한 모든 자막을 하나의 UTF-8 텍스트 파일로 저장합니다.
Downloads\youtube_transcripts\YYYYMMDD_HHMMSS_youtube_transcript_VIDEO_ID.txt
Downloads\youtube_transcripts\YYYYMMDD_HHMMSS_youtube_transcripts_N_videos.txt
N은 실제로 성공하여 파일에 포함된 영상 개수입니다.
두 개 이상의 탭을 선택하면 사용할 수 있습니다. 선택한 각 영상의 자막을 별도 파일로 저장합니다.
Downloads\youtube_transcripts\batch_YYYYMMDD_HHMMSS\01_youtube_transcript_VIDEO_ID.txt
Downloads\youtube_transcripts\batch_YYYYMMDD_HHMMSS\02_youtube_transcript_VIDEO_ID.txt
Downloads\youtube_transcripts\batch_YYYYMMDD_HHMMSS\03_youtube_transcript_VIDEO_ID.txt
번호는 탭 표시 순서를 기준으로 붙습니다.
- 텍스트 파일은 Windows 메모장과의 호환성을 위해 UTF-8 바이트 순서 표시를 포함합니다.
- 한 개의 텍스트 파일 내용은 최대 8,000,000자까지 저장합니다.
- 개별 파일 일괄 저장은 최대 50개 파일까지 처리합니다.
- 일괄 저장할 전체 텍스트의 합계는 최대 32,000,000자입니다.
- 같은 이름이 이미 있으면 Chrome이 파일 이름을 자동으로 고유하게 만듭니다.
이 확장 프로그램은 유튜브의 비공개 자막 API 요청을 임의로 재구성하지 않습니다. 다음 순서로 실제 데이터를 확인합니다.
- 현재 플레이어가 제공하는 선택된 자막 트랙의 실제 주소를 확인합니다.
- 해당 주소가 정상적인 자막 내용을 반환하면 JSON3, XML 또는 WebVTT 형식으로 읽습니다.
- 주소가 재생 증명 토큰을 요구하거나 빈 내용을 반환하면 선택한 자막 트랙을 유튜브 플레이어에 적용합니다.
- 유튜브 플레이어가 실제로 발급하는 자막 요청과 응답을 짧은 시간 동안 포착합니다.
- 플레이어 요청을 얻지 못하면 유튜브의 자막 패널을 열어 실제 자막 응답을 확인합니다.
- 네트워크 응답도 얻지 못하면 화면의 자막 패널에 표시된 문장과 시간을 읽습니다.
서명, 재생 증명 토큰, 세션값 또는 내부 API 매개변수를 확장 프로그램이 새로 만들어 내지 않습니다.
자막 작업을 시작하기 전에 가능한 범위에서 다음 상태를 기록합니다.
- 원래 선택된 자막 트랙
- 자동 번역 언어
- 자막 표시 버튼의 켜짐 또는 꺼짐 상태
- 각 HTML5 텍스트 트랙의 모드
- 자막 모듈의 로드 상태
- 자막 패널의 열림 상태
- 자막 패널의 스크롤 위치
- 영상 설명의 펼침 상태
- 페이지 스크롤 위치
- 원래 초점이 있던 요소
작업이 성공하거나 실패하는 것과 관계없이 정리 단계에서 원래 상태로 복원합니다. 복원할 수 없는 유튜브 UI 상태가 있는 경우에도 가능한 항목은 계속 복원합니다.
같은 패널 세션에서 같은 영상, 원본 자막, 번역 언어 조합을 다시 요청하면 이미 가져온 자막 결과를 재사용합니다. 패널을 닫거나 확장 프로그램 팝업이 종료되면 이 임시 캐시는 사라집니다.
다음 경우에는 탭별 오류가 표시될 수 있습니다.
- 영상에 자막이 없습니다.
- 자동 자막 생성이 아직 끝나지 않았습니다.
- 선택한 자막이 자동 번역을 지원하지 않습니다.
- 탭이 절전 상태여서 플레이어 정보를 읽지 못합니다.
- 탭 목록을 연 뒤 해당 탭이 다른 영상으로 바뀌었습니다.
- 유튜브가 자막 데이터를 제한했습니다.
- 유튜브 UI 구조가 변경되어 자막 패널을 읽지 못합니다.
- 요청 시간이 초과되었습니다.
한 탭의 실패는 성공한 다른 탭의 복사 또는 저장을 막지 않습니다. 모든 선택 탭이 실패했을 때만 전체 작업이 실패로 끝납니다.
웹페이지 입력 제한 해제를 펼치면 열 가지 기능을 볼 수 있습니다.
- 맨 위의 열 가지 기능 한 번에 설정 토글은 전체 기능을 한꺼번에 켜거나 끕니다.
- 모든 기능이 켜져 있으면 상위 토글도 켜짐 상태입니다.
- 모든 기능이 꺼져 있으면 상위 토글도 꺼짐 상태입니다.
- 일부 기능만 켜져 있으면 상위 토글이 중간 상태로 표시됩니다.
- 개별 토글을 바꾸면 상위 토글과 사용 중인 기능 개수가 즉시 갱신됩니다.
모든 기능은 기본적으로 꺼져 있으며, 필요한 기능만 켜는 방식을 권장합니다.
웹사이트가 다음 이벤트를 이용하여 마우스 오른쪽 버튼을 막더라도 Chrome의 기본 우클릭 메뉴가 나타나도록 합니다.
contextmenu- 오른쪽 버튼의 포인터 및 마우스 누르기 이벤트
- 오른쪽 버튼의 놓기 이벤트
확장 프로그램은 Chrome의 기본 메뉴를 새로 그려서 흉내 내지 않습니다. 웹사이트의 차단 처리만 중단하고 브라우저 기본 동작은 Chrome에 맡깁니다.
웹사이트가 user-select: none, 인라인 스타일 또는 선택 이벤트 차단으로 막은 텍스트 선택을 복원합니다.
- 실제 사용자가 텍스트 선택을 시작한 동안에만 선택 허용 스타일을 활성화합니다.
- 선택이 끝나면 확장 프로그램이 바꾼 인라인 스타일을 원래대로 복원합니다.
- 입력란, 여러 줄 입력란, 선택 상자, 버튼, 캔버스, 영상, 오디오, 프레임, 플러그인 요소, 편집 가능한 영역과 슬라이더는 전역 선택 스타일에서 제외합니다.
- 더블 클릭으로 단어를 선택하는 동작도 처리합니다.
- 텍스트를 드래그한 뒤 발생하는 사이트의 불필요한 클릭 동작을 필요한 경우 한 번 차단합니다.
닫힌 Shadow DOM 안에서 CSS로 막은 선택은 복원하지 못할 수 있습니다.
선택한 텍스트를 복사할 때 웹사이트가 다음 이벤트로 복사를 막거나 내용을 바꾸는 일반적인 동작을 차단합니다.
keydown또는keyup에서Ctrl + C가로채기beforecopycopycopy이벤트의preventDefault()와 임의의 클립보드 내용 지정
이 기능만 켠 경우에는 웹사이트의 복사 방해만 멈추고, 실제 복사 동작과 서식 처리는 Chrome의 기본 기능에 맡깁니다.
웹사이트가 복사한 문장 뒤에 출처, 사이트 이름, 저작권 문구 또는 주소를 덧붙이는 동작을 막습니다.
예시:
사용자가 선택한 문장
출처: https://example.com/article
이 기능을 켜면 확장 프로그램이 현재 선택한 텍스트를 text/plain 형식으로 직접 클립보드에 넣습니다.
- 글꼴, 굵게 표시, 색상, 링크와 같은 서식은 복사되지 않습니다.
- 선택한 일반 텍스트만 복사됩니다.
- 비밀번호 입력란의 값을 확장 프로그램이 직접 읽어 복사하지 않습니다.
- 복사와 무관한 시점에 사이트가 별도 클립보드 권한으로 나중에 내용을 덮어쓰는 특수한 경우까지 항상 막을 수 있는 것은 아닙니다.
웹사이트가 다음 방식으로 막은 이미지 드래그를 복원합니다.
draggable="false"-webkit-user-drag: nonedragstart이벤트 차단
실제로 누른 이미지 하나에만 draggable="true"와 필요한 스타일을 일시적으로 적용합니다. 마우스를 놓거나 드래그가 끝나면 기존 속성과 스타일을 원래대로 복원합니다.
투명한 요소가 이미지 위를 덮고 있거나 브라우저 정책 수준에서 드래그가 제한된 경우에는 작동하지 않을 수 있습니다.
웹사이트가 마우스 가운데 버튼 이벤트를 막더라도 Chrome의 기본 동작을 유지합니다.
- 일반 링크를 가운데 버튼으로 눌러 새 탭에서 열기
- 빈 영역에서 휠을 눌러 자동 스크롤 시작하기
이 기능은 휠을 회전하여 스크롤하는 동작을 바꾸지 않습니다. 휠을 버튼처럼 누르는 동작만 대상으로 합니다.
일반 <a href> 링크의 새 탭 열기는 확장 프로그램이 대신 수행하지 않습니다. Chrome이 직접 처리합니다.
일반 링크가 아니라 버튼이나 다른 조작 요소에 자바스크립트로 주소를 연결한 사이트에서 새 탭 열기를 지원합니다.
Ctrl을 누른 채 왼쪽 클릭- 마우스 가운데 버튼 클릭
- 우클릭 메뉴의 버튼 링크를 새 탭에서 열기
확장 프로그램은 클릭한 조작 요소 자체 또는 가장 가까운 명시적 조작 요소에서 다음 값만 확인합니다.
data-href
data-url
data-link-url
data-target-url
인라인 코드에서는 문자열 리터럴로 직접 작성된 다음 형태만 처리합니다.
window.open("https://example.com/page")
location.href = "https://example.com/page"
location.assign("https://example.com/page")
location.replace("https://example.com/page")data-pathdata-route- 임의의 모든
data-*속성 - 숫자만 들어 있는 값
- 폼 전송 주소
- 난독화된 코드
- 실행 중 변수에만 들어 있는 주소
- 클릭한 요소와 멀리 떨어진 관계없는 상위 요소
- 코드 안에 우연히 포함된 URL 문자열
주소가 명확하지 않으면 아무 동작도 하지 않습니다.
정상적인 <a href> 및 <area href> 링크는 가로채지 않습니다. Ctrl+클릭, 가운데 클릭, 새 탭 생성, 방문 기록과 방문한 링크의 :visited 상태는 Chrome이 직접 처리합니다. 확장 프로그램은 방문한 링크의 색상을 임의로 보라색으로 만들거나 별도 방문 기록을 저장하지 않습니다.
버튼형 링크를 새 탭으로 열 때에는 원래 탭 바로 다음 위치에 비활성 새 탭을 만들고, 원래 탭을 새 탭의 열기 출처로 지정합니다.
일부 사이트는 사용자가 뒤로 이동하자마자 같은 주소를 방문 기록에 다시 추가하거나 앞으로 보내는 방식으로 뒤로 가기를 방해합니다.
- 사용자의 실제 뒤로 또는 앞으로 이동으로
popstate가 발생한 직후 약 1.4초 동안만 보호합니다. - 이 시간 안에 사이트가 현재 주소와 완전히 같은 주소를 다시
pushState()로 넣는 동작을 차단합니다. - 같은 시간 안에
history.forward()를 호출하는 동작을 차단합니다. - 같은 시간 안에 양수의
history.go()를 호출하여 앞으로 보내는 동작을 차단합니다.
- 평상시의 정상적인
pushState() - 다른 주소나 다른 화면 상태를 방문 기록에 넣는 동작
- 사용자의 정상적인 뒤로 이동
- 보호 시간이 지난 뒤의 정상적인 앞으로 이동
기능을 끄거나 보호 시간이 끝나면 변경했던 방문 기록 함수를 원래 함수로 복원합니다. 이미 방문 기록에 들어간 항목을 임의로 삭제하지는 않습니다.
토글을 켜면 Chrome 우클릭 메뉴에 링크 주소 복사 항목이 나타납니다.
- 일반
<a>또는<area>링크에서는 Chrome이 제공한 실제 링크 주소를 그대로 사용합니다. - 버튼형 링크에서는 앞의 보수적인 주소 확인 규칙을 사용합니다.
- 경유 주소의
url,redirect,destination같은 매개변수를 최종 목적지라고 추정하여 풀지 않습니다. - 서버에 접속하여 리디렉션을 따라가지 않습니다.
- 주소를 확실히 확인하지 못하면 복사하지 않습니다.
예시:
https://example.com/out?url=https%3A%2F%2Fdestination.example%2Fpage
위 주소는 최종 목적지를 추정하지 않고 원래 주소 그대로 복사합니다.
커뮤니티 사이트 등이 외부 링크를 열기 전에 표시하는 사이트 자체 확인 절차를 제한적으로 건너뜁니다.
- 사용자가 실제 외부 링크를 일반 왼쪽 버튼으로 클릭했습니다.
- 약 1.6초 이내에 링크, 외부 사이트, 안전 또는 위험, 이동 의사가 함께 명확하게 나타나는
confirm()또는alert()이 호출됩니다. - 또는 새로 나타난 의미가 명확한
dialog또는alertdialog안에 외부 링크 위험 경고와 진행 동작이 모두 있습니다. - 또는 현재 주소 경로가
warning,external-link,redirect,outlink등 명확한 경고 전용 경로이고, URL 매개변수나 메타 새로고침에 외부 목적지가 명시되어 있습니다.
- 내부 링크를 클릭한 경우
- 웹페이지 스크립트가 만든 가짜 클릭
- 일반
.popup,.modal,.layer요소 - 단순히 확인, 열기, 이동이라고 적힌 일반 버튼
- 결제, 저장, 삭제, 계정 연결과 관련된 확인 창
- 목적지 주소가 명확하지 않은 경고 UI
- Chrome 자체 경고 화면
중간 경고 전용 페이지를 건너뛸 때에는 가능한 경우 location.replace()를 사용하여 경고 페이지가 뒤로 가기 목록에 남지 않게 합니다.
- Chrome 안전 브라우징 경고
- 인증서 오류
- 악성 다운로드 경고
- Chrome 내부 오류 페이지
- Chrome 웹 스토어 제한
중요한 페이지 도구는 event.isTrusted를 확인하여 웹페이지가 dispatchEvent()로 만든 합성 입력에 반응하지 않습니다. 이 원칙은 다음 동작에 적용됩니다.
- ChatGPT 메시지 전송
- 미디어 단축키
- 자바스크립트 버튼형 링크 새 탭 열기
- 영역 캡처 선택
- 페이지 요소 숨기기
- 속도 표시창 이동
설정이 꺼지면 관련 이벤트 처리기, 임시 스타일, 준비한 이미지 속성, 텍스트 선택 상태와 페이지 함수 보호 장치를 정리합니다. 기능을 사용하지 않는 동안 문서 전체를 반복해서 검사하는 타이머는 사용하지 않습니다.
패널의 현재 페이지 전체 캡처를 누르면 Chrome 개발자 도구 프로토콜을 이용하여 현재 페이지 전체를 PNG 파일로 저장합니다.
- 현재 탭이 캡처 가능한 주소인지 확인합니다.
- 같은 탭에서 이미 캡처 중인지 확인합니다.
- Chrome 디버거 API로 현재 탭에 연결합니다.
Page.getLayoutMetrics로 Chrome이 보고한 전체 콘텐츠 크기를 읽습니다.Page.captureScreenshot과captureBeyondViewport를 사용하여 한 번에 캡처합니다.- PNG 데이터를 다운로드 폴더에 저장합니다.
- 성공 또는 실패 여부와 관계없이 디버거 연결을 해제합니다.
Downloads\full_page_screenshots
20260808_153045_example_com.png
파일 이름에는 현재 페이지의 도메인을 영문·숫자·밑줄 형태로 정리하여 사용합니다. 같은 이름이 있으면 Chrome이 자동으로 이름을 고유하게 만듭니다.
...: 캡처 중OK: 성공ERR: 실패
- 페이지를 자동으로 아래까지 스크롤하여 지연 콘텐츠를 미리 불러오지 않습니다.
- 여러 조각으로 나누어 합성하지 않습니다.
- Chrome이 보고한 전체 콘텐츠 크기를 한 번에 캡처하는 단순한 방식입니다.
- 스크롤할 때 뒤늦게 생성되는 내용이나 별도 스크롤 상자 안의 내용은 완전히 포함되지 않을 수 있습니다.
- 개발자 도구나 다른 확장 프로그램이 같은 탭의 디버거를 사용하면 실패할 수 있습니다.
패널의 드래그하여 영역 캡처를 누르면 패널이 닫히고 현재 페이지에 선택 화면이 나타납니다.
- 마우스 왼쪽 버튼을 누른 채 원하는 직사각형 영역을 드래그합니다.
- 선택 중에는 가로와 세로 크기가 표시됩니다.
- 마우스 버튼을 놓으면 선택 영역만 PNG 파일로 저장합니다.
Esc키 또는 마우스 오른쪽 버튼을 누르면 취소합니다.- 선택 영역이 너무 작으면 저장하지 않고 다시 선택할 수 있습니다.
- 포인터가 화면 위, 아래, 왼쪽 또는 오른쪽 가장자리에 가까워지면 해당 방향으로 스크롤합니다.
- 모서리에 가까워지면 가로와 세로 방향을 동시에 스크롤합니다.
- 가장자리에 가까울수록 스크롤 속도가 빨라집니다.
- 가장자리 감지 영역은 화면 크기에 맞추어 조절되며 최대 약 72픽셀입니다.
- 최대 스크롤 속도는 애니메이션 프레임당 약 30픽셀입니다.
- 자동 스크롤 중에도 선택 시작점은 문서의 원래 좌표에 유지됩니다.
선택 화면에서는 가로와 세로가 각각 8픽셀 미만인 영역을 너무 작은 선택으로 처리합니다.
Downloads\selected_area_screenshots
20260808_153210_example_com.png
자동 스크롤은 웹페이지 전체의 기본 스크롤을 대상으로 합니다. 페이지 내부의 독립적인 스크롤 상자는 자동으로 움직이지 않습니다.
페이지의 광고, 사이드바, 배너, 빈 공간 또는 방해 요소를 직접 클릭하여 숨길 수 있습니다.
- 확장 프로그램 패널을 엽니다.
- 클릭하여 페이지 요소 숨기기를 펼칩니다.
- 다음 두 방식 중 하나를 선택합니다.
- 이번 페이지에서만 숨기기
- 이 사이트에 기억해서 숨기기
- 패널이 닫히고 요소 선택 모드가 시작됩니다.
- 마우스를 올리면 대상 요소에 붉은 윤곽선과 요소 이름이 표시됩니다.
- 왼쪽 버튼으로 클릭하면 요소가 즉시 숨겨집니다.
- 모드는 계속 유지되므로 여러 요소를 연속해서 클릭할 수 있습니다.
Esc키 또는 화면 위 안내 막대의 종료 버튼으로 끝냅니다.
- 선택한 요소의 인라인
display를none !important로 바꿉니다. - 현재 문서에서만 숨깁니다.
- 페이지를 새로 고치거나 다시 방문하면 원래대로 나타납니다.
- Shadow DOM 안의 요소에도 현재 세션에서 접근할 수 있으면 일시적으로 숨길 수 있습니다.
- 현재 사이트의
origin단위로 규칙을 저장합니다. - 같은 출처의 페이지를 다시 열면 작은 CSS 규칙으로 자동 숨김을 적용합니다.
- 동적으로 나중에 만들어지는 같은 요소에도 CSS 규칙이 적용될 수 있습니다.
- 현재 사이트의 기억된 요소 개수를 패널에 표시합니다.
- 모두 복원을 누르면 현재 사이트의 저장 규칙을 전부 삭제합니다.
예를 들어 다음 두 주소는 서로 다른 사이트 규칙으로 관리됩니다.
https://example.com
https://sub.example.com
사이트가 개편된 뒤 다른 요소를 잘못 숨기는 일을 줄이기 위해 다음처럼 비교적 안정적인 기준이 있을 때만 영구 규칙을 저장합니다.
- 고유하고 생성된 값처럼 보이지 않는
id - 고유한
data-testid data-test-iddata-testdata-qadata-cydata-componentaria-labelnamerole- 위 안정적인 요소를 기준으로 만든 제한적인 하위 경로
다음 선택자는 저장하지 않습니다.
- 클래스 이름만으로 만든 선택자
:nth-of-type()처럼 위치 순서에 의존하는 선택자- 형제 요소의 순서에 의존하는 선택자
- 일반적인
body > div > div형태의 불안정한 경로 - 생성된 해시나 긴 숫자로 보이는 식별자
- 닫힌 Shadow DOM 안의 요소
안전한 선택자를 만들 수 없으면 이번 페이지에서만 숨기기를 사용하라는 안내가 나타납니다.
- 최대 사이트 수: 80개
- 사이트별 최대 규칙 수: 60개
- 선택자 최대 길이: 1,200자
- 선택자 경로 최대 단계: 7개
한도를 넘으면 오래된 항목부터 정리합니다.
- 영역 캡처가 열린 상태에서 요소 숨기기를 시작하면 영역 캡처 화면을 닫습니다.
- 요소 숨기기가 열린 상태에서 영역 캡처를 시작하면 요소 숨기기 화면을 닫습니다.
- 페이지 도구가 열린 동안 미디어 단축키와 웹페이지 입력 제한 해제 기능이 선택 동작을 방해하지 않도록 조정합니다.
현재 Chrome 창의 여러 탭을 골라 URL을 한 줄에 하나씩 복사합니다.
- 확장 프로그램 패널에서 열린 탭 URL 복사를 펼칩니다.
- 원하는 탭을 체크합니다.
- 필요하면 모두 선택, 선택 해제, 새로고침을 사용합니다.
- 선택한 URL 복사를 누릅니다.
- 메모장, 문서, 채팅 또는 다른 프로그램에 붙여 넣습니다.
- 현재 창의 탭만 표시합니다.
- 탭 제목과 전체 URL을 함께 표시합니다.
- 현재 활성 탭에는 현재 표시가 나타납니다.
- 고정된 탭의 제목 앞에는 고정됨을 표시합니다.
- 탭 표시 순서대로 정렬합니다.
- 탭의
pendingUrl이 있으면 현재 URL보다 우선하여 사용합니다.
https://example.com/first
https://example.com/second
https://example.com/third
Windows에서 붙여넣기 좋도록 CRLF 줄바꿈을 사용합니다.
같은 주소가 여러 탭에 열려 있으면 중복을 제거하지 않습니다. 사용자가 선택한 각 탭을 하나의 항목으로 취급하여 그대로 복사합니다.
탭 제목과 URL은 패널 안의 선택 목록을 만드는 데에만 사용합니다. 선택한 URL을 외부 서버로 보내거나 확장 프로그램 저장소에 영구 보관하지 않습니다.
| 기능 | 기본 저장 위치 | 파일 형식 |
|---|---|---|
| 전체 페이지 캡처 | Downloads\full_page_screenshots |
PNG |
| 선택 영역 캡처 | Downloads\selected_area_screenshots |
PNG |
| 유튜브 자막 한 파일 | Downloads\youtube_transcripts |
UTF-8 텍스트 |
| 유튜브 자막 개별 일괄 저장 | Downloads\youtube_transcripts\batch_YYYYMMDD_HHMMSS |
UTF-8 텍스트 |
Chrome의 기본 다운로드 폴더가 다른 위치로 설정되어 있으면 해당 폴더 아래에 위 하위 폴더가 만들어집니다.
모든 다운로드는 saveAs: false로 시작하므로 일반적으로 파일 저장 위치를 매번 묻지 않습니다. Chrome 다운로드 설정에서 다운로드 전에 각 파일의 저장 위치 확인이 켜져 있으면 브라우저 설정에 따라 동작이 달라질 수 있습니다.
다음 설정은 Chrome 로컬 저장소에 보관됩니다.
- ChatGPT의 두 가지
Ctrl + Enter토글 - ChatGPT 대화 기록 너비
- ChatGPT 입력란 너비
- 미디어 기능의 전체 켜짐 상태
- 속도 변경 간격
- 앞뒤 이동 간격
R키 기본 복원 배속- 새 미디어에 마지막 속도 유지 여부
- 속도 표시창 사용 여부와 위치
- 미디어 키보드 사용 여부
- 여섯 가지 미디어 단축키
- 유튜브 자막의 제목 포함 여부
- 유튜브 자막의 시간 표시 여부
- 자막 줄 사이의 빈 줄 개수
- 선호하는 원본 자막 종류와 번역 언어
- 웹페이지 입력 제한 해제 기능 열 가지의 상태
- 사이트별 요소 숨기기 규칙
이 데이터는 사용자의 현재 Chrome 프로필 안에 저장되며 외부 서버로 전송하지 않습니다.
미디어의 탭별·소스별 임시 상태는 세션 저장소에 보관합니다.
- 현재 탭에서 마지막으로 설정한 속도
- 현재 활성 미디어의 종류와 표시 이름
- 미디어 소스별 속도
R키가 복원할 이전 배속- 현재 조절 대상의 임시 식별자
세션 저장소는 확장 프로그램을 다시 불러오거나 Chrome 세션이 종료될 때 초기화될 수 있습니다. 탭을 닫으면 해당 탭의 상태를 제거합니다.
- ChatGPT에 입력한 메시지 내용
- ChatGPT 대화 내용
- 클립보드의 전체 이력
- 사용자의 방문 링크 목록
- 방문 링크의 색상 상태
- 유튜브 자막 원문을 영구 저장한 캐시
- 탭 목록 전체의 영구 기록
- 미디어의 서명과 토큰이 포함된 전체 주소
- 쿠키와 로그인 비밀번호
manifest.json에는 다음 권한이 들어 있습니다.
설정, 미디어의 임시 탭 상태, 유튜브 자막 출력 설정과 사이트별 요소 숨기기 규칙을 저장합니다.
사용자가 패널을 연 현재 탭에서 화면 캡처, 영역 선택과 페이지 도구를 시작할 때 사용합니다.
- 영역 캡처 선택 화면 삽입
- 페이지 요소 숨기기 화면 삽입
- 선택한 유튜브 탭의 플레이어 정보 및 자막 읽기
- 페이지의 MAIN 실행 환경에 탐색 보호 설정 전달
Chrome 개발자 도구 프로토콜의 페이지 캡처 명령을 사용하기 위해 필요합니다. 전체 페이지와 선택 영역 캡처를 시작할 때만 현재 탭에 연결하고, 작업이 끝나면 연결을 해제합니다.
PNG 화면 캡처와 유튜브 자막 텍스트 파일을 Chrome 다운로드 폴더에 저장합니다.
- 현재 창의 탭 제목과 URL 표시
- 유튜브 영상 탭 선택
- 탭 표시 순서 확인
- 탭별 미디어 상태 구분
- 버튼형 링크를 원래 탭 바로 옆에 새 탭으로 열기
- 열린 탭 URL 복사
- 유튜브 자막 복사
- 링크 주소 복사
다음 우클릭 메뉴를 필요할 때 등록합니다.
- 버튼 링크를 새 탭에서 열기
- 링크 주소 복사
해당 토글이 꺼지면 관련 메뉴를 제거합니다.
http://*/*
https://*/*
다음 기능을 여러 사이트와 프레임에서 사용하기 위해 필요합니다.
- HTML5 동영상과 오디오 제어
- 우클릭, 텍스트 선택, 복사, 이미지 드래그와 가운데 버튼 제한 해제
- 뒤로 가기 방해 차단
- 사이트 자체 외부 링크 경고 건너뛰기
- 사이트별 요소 숨기기 규칙 자동 적용
- 선택한 비활성 유튜브 탭의 자막 추출
광범위한 사이트 접근 권한이므로 사용자가 소스 코드를 검토할 수 있도록 저장소에 전체 소스를 공개하는 것을 권장합니다.
매니페스트에는 로컬 파일용 콘텐츠 스크립트가 정의되어 있지만, Chrome 확장 프로그램 세부정보에서 사용자가 직접 파일 URL에 대한 액세스 허용을 켠 경우에만 실제로 적용됩니다.
확장 프로그램 자체의 별도 분석 서버, 광고 서버, 계정 서버 또는 원격 설정 서버가 없습니다.
자막 기능은 사용자가 선택한 유튜브 탭 안에서 유튜브 플레이어가 제공하는 데이터와 실제 유튜브 자막 요청을 사용합니다. 자막을 제3자 자막 서비스로 보내지 않습니다.
ChatGPT 입력 내용과 대화 내용을 읽어 외부로 보내지 않습니다. 단축키 처리와 너비 CSS 적용에 필요한 DOM 범위만 확인합니다.
탭 제목과 URL은 사용자가 패널에서 선택할 수 있도록 현재 팝업 안에 표시합니다. URL 복사 작업이 끝난 뒤 별도 서버나 영구 저장소에 보관하지 않습니다.
캡처 결과는 사용자의 Chrome 다운로드 폴더에 직접 저장합니다. 캡처 이미지를 외부 서버로 업로드하지 않습니다.
- 원격 JavaScript를 불러오지 않습니다.
eval()을 사용하지 않습니다.new Function()을 사용하지 않습니다.- WebSocket 또는
sendBeacon()으로 사용자 데이터를 보내지 않습니다.
- 일반
<a>링크는 Chrome이 직접 엽니다. - 방문한 링크 색상은 Chrome과 웹사이트 CSS가 결정합니다.
- 복사 차단만 해제할 때에는 Chrome의 기본 복사를 유지합니다.
- 실제 주소를 확인할 수 없는 버튼은 열거나 복사하지 않습니다.
- 경유 주소를 최종 목적지라고 추정하지 않습니다.
메시지 전송, 새 탭 열기, 미디어 단축키, 캡처 선택과 요소 숨기기는 실제 사용자 입력을 확인합니다. 웹페이지가 만든 합성 이벤트로 중요한 동작이 실행되지 않도록 합니다.
- 관련 이벤트 처리기를 제거합니다.
- 텍스트 선택용 임시 스타일을 제거합니다.
- 이미지 드래그를 위해 바꾼 속성을 복원합니다.
- 방문 기록 함수와 확인 창 함수를 원래 상태로 복원합니다.
- 미디어 표시창과 문서 변경 감시 기능을 제거합니다.
- 주소가 명확하지 않은 자바스크립트 버튼은 새 탭으로 열지 않습니다.
- 목적지가 명확하지 않은 경고 페이지는 자동으로 건너뛰지 않습니다.
- 안정적인 CSS 선택자를 만들 수 없는 요소는 사이트에 기억하지 않습니다.
- 유튜브 내부 API 매개변수를 추정하여 요청하지 않습니다.
- 화면 캡처 후 디버거 연결을 해제합니다.
- 유튜브 자막 추출 후 자막, 패널, 스크롤과 초점 상태를 가능한 범위에서 복원합니다.
- 이미지 드래그와 텍스트 선택에 적용한 인라인 스타일을 복원합니다.
- 요소 숨기기 영구 규칙 저장이 실패하면 원래 표시 상태로 되돌립니다.
.
├─ manifest.json
├─ background.js
├─ popup.html
├─ popup.css
├─ popup.js
├─ content_script.js
├─ media_controller.js
├─ youtube_transcript_popup.js
├─ youtube_transcript_page_task.js
├─ right_click.js
├─ navigation_guard.js
├─ selector.js
├─ element_eraser.js
├─ element_eraser_restore.js
├─ README.md
└─ icons
├─ icon_16.png
├─ icon_32.png
├─ icon_48.png
└─ icon_128.png
Manifest V3 설정, 권한, 백그라운드 서비스 워커, 팝업, 아이콘과 콘텐츠 스크립트의 적용 주소를 정의합니다.
- 전체 페이지와 선택 영역 캡처
- Chrome 디버거 연결과 해제
- 파일 다운로드
- 우클릭 메뉴 생성과 제거
- 버튼형 링크 새 탭 열기
- 링크 주소 복사 중계
- 탭별 미디어 상태 관리
- 유튜브 자막 작업 실행과 텍스트 파일 저장
- 사이트별 요소 숨기기 규칙 저장
- 버전 업데이트 시 오래된 데이터 정리
확장 프로그램 패널의 모든 설정, 버튼, 드롭다운과 상태 표시 영역을 정의합니다.
패널 레이아웃, 토글, 슬라이더, 탭 목록, 자막 목록, 페이지 도구와 반응형 표시를 담당합니다.
- ChatGPT 설정 읽기와 저장
- 너비 슬라이더
- 미디어 설정 및 단축키 설정
- 페이지 입력 제한 해제의 상위 및 개별 토글
- 화면 캡처 시작
- 페이지 요소 숨기기 시작 및 모두 복원
- 열린 탭 URL 목록과 복사
ChatGPT에서만 실행됩니다.
- 새 메시지 입력란의
Ctrl + Enter - 이전 메시지 편집란의
Ctrl + Enter - 대화 기록 너비 CSS
- 새 메시지 입력란 너비 CSS
- 설정 변경의 즉시 반영
모든 일반 웹페이지와 허용된 로컬 파일의 프레임에서 실행됩니다.
- HTML5 미디어 발견
- 탭별·소스별 속도 상태
- 실제 재생 속도 적용
- 미디어 대상 선택
- 속도 표시창
- 단축키 처리
- 동적 미디어 감시
- 기능 해제 시 이벤트와 표시창 정리
- 현재 창의 유튜브 탭 목록
- 탭 선택
- 탭별 자막과 번역 선택
- 출력 설정
- 클립보드 복사
- 합본 및 개별 파일 저장 요청
- 탭별 오류 표시와 임시 캐시
유튜브 페이지의 MAIN 실행 환경에서 필요한 순간에만 실행됩니다.
- 현재 영상과 플레이어 확인
- 자막 트랙 및 번역 언어 읽기
- 실제 플레이어 발급 자막 요청 확인
- JSON3, XML, WebVTT와 자막 패널 데이터 해석
- 자막 패널 대체 처리
- 추출 전후 유튜브 상태 기록과 복원
- 우클릭 허용
- 텍스트 선택
- 복사 보호
- 이미지 드래그
- 가운데 버튼
- 보수적인 버튼형 링크 주소 확인
- 링크 주소 복사 지원
- 실제 사용자 입력 확인
- 기능이 꺼졌을 때 이벤트와 스타일 정리
백그라운드 서비스 워커가 페이지의 MAIN 실행 환경에 직접 삽입합니다.
- 실제 뒤로 이동 직후의 짧은 방문 기록 보호
- 실제 외부 링크 클릭 직후의 명확한 사이트 자체 경고 처리
- 명확한 중간 경고 전용 페이지 처리
- 기능을 끌 때 원래 함수와 이벤트 복원
드래그 영역 캡처의 선택 UI, 크기 표시, 자동 스크롤, 취소와 캡처 요청을 담당합니다.
페이지 요소 선택 UI, 붉은 윤곽선, 요소 이름, 임시 숨김과 안전한 영구 선택자 생성을 담당합니다.
저장된 사이트별 요소 숨기기 규칙을 페이지가 열릴 때 작은 CSS 스타일로 적용합니다.
- ChatGPT의 화면 구조나 버튼 속성이 크게 바뀌면 단축키 또는 너비 기능이 일부 작동하지 않을 수 있습니다.
- 새 메시지 입력란 너비는 화면 하단 작성란만 대상으로 하며 이전 메시지 편집란은 포함하지 않습니다.
- 매우 좁은 창에서는 설정값보다 작은 실제 너비가 사용됩니다.
- 표준 HTML5
<video>와<audio>가 없는 플레이어에는 적용되지 않습니다. - 사이트가 속도를 계속 1.00배속으로 되돌리는 경우 충돌할 수 있습니다.
- 극단적으로 느리거나 빠른 속도에서는 Chrome이 소리를 음소거하거나 음질을 다르게 처리할 수 있습니다.
- 영상 요소 자체가 브라우저 전체 화면 요소가 되는 특수한 구성에서는 표시창이 보이지 않을 수 있습니다.
- 닫힌 Shadow DOM 안의 미디어는 발견하지 못할 수 있습니다.
- 로컬 파일은 사용자가 파일 URL 접근을 허용해야 합니다.
- 자막이 없는 영상은 처리할 수 없습니다.
- 자동 자막이 아직 생성되지 않았거나 일부 라이브 방송에서는 전체 자막이 없을 수 있습니다.
- 로그인, 연령, 지역, 유료 콘텐츠 또는 계정 조건에 따라 자막 데이터 접근이 제한될 수 있습니다.
- 유튜브가 플레이어 또는 자막 패널 구조를 변경하면 수정이 필요할 수 있습니다.
- 절전 상태의 탭은 플레이어 정보가 메모리에서 내려가 있을 수 있습니다. 탭을 한 번 활성화한 뒤 다시 시도하십시오.
- 자동 번역의 품질과 언어 목록은 유튜브가 결정합니다.
- 닫힌 Shadow DOM 안의 차단은 복원하지 못할 수 있습니다.
- 사이트가 브라우저 정책이나 서버 응답으로 막은 기능은 이벤트 차단만으로 복원할 수 없습니다.
- 클립보드 덧붙이기 방지는 일반 텍스트만 복사하므로 서식이 사라집니다.
- 사이트가 복사와 무관한 시점에 클립보드를 다시 덮어쓰는 경우까지 항상 막을 수는 없습니다.
- 난독화된 자바스크립트 버튼형 링크는 주소를 확인할 수 없습니다.
- 짧은 주소와 경유 주소의 최종 목적지는 서버 응답을 따라가지 않으므로 확인하지 않습니다.
- 뒤로 가기 보호는 실제
popstate직후의 약 1.4초 동안만 작동합니다. - 사이트 자체 외부 링크 경고 건너뛰기는 명확하지 않은 UI를 일부러 처리하지 않습니다.
chrome://,edge://, 개발자 도구, Chrome 웹 스토어와 확장 프로그램 내부 페이지는 캡처할 수 없습니다.- 개발자 도구 또는 다른 확장 프로그램이 디버거를 사용 중이면 실패할 수 있습니다.
- 전체 페이지 캡처는 Chrome이 보고한 크기를 한 번에 캡처합니다. 지연 로딩과 별도 스크롤 상자의 모든 내용을 보장하지 않습니다.
- 매우 큰 페이지는 Chrome의 이미지 크기와 메모리 제한에 영향을 받을 수 있습니다.
- 영역 자동 스크롤은 내부 스크롤 상자를 움직이지 않습니다.
- 영구 숨김은 HTTP 및 HTTPS 사이트에서만 사용할 수 있습니다.
- 안전한 선택자를 만들 수 없는 요소는 사이트에 기억하지 않습니다.
- 닫힌 Shadow DOM 안의 요소는 영구 규칙으로 저장할 수 없습니다.
- 사이트가 같은 안정 속성을 다른 요소에 재사용하면 예상하지 않은 요소가 숨겨질 가능성이 남아 있습니다.
- 모두 복원은 해당 사이트의 모든 저장 규칙을 한꺼번에 삭제하며 개별 규칙 편집 UI는 제공하지 않습니다.
- 패널을 연 현재 Chrome 창만 대상으로 합니다.
- 다른 창의 탭은 목록에 나타나지 않습니다.
- 중복 URL을 자동으로 제거하지 않습니다.
chrome://extensions에서 확장 프로그램의 새로고침 버튼을 누릅니다.- 대상 웹페이지도 새로 고칩니다.
- 오래된 버전이 동시에 설치되어 있지 않은지 확인합니다.
- Chrome을 완전히 종료한 뒤 다시 실행합니다.
- 패널의 두 ChatGPT 토글이 켜져 있는지 확인합니다.
- ChatGPT 탭을 새로 고칩니다.
- 현재 입력기가 문자 조합 중인지 확인합니다.
- 검색창이나 설정 입력란이 아니라 실제 채팅 작성란인지 확인합니다.
- ChatGPT UI가 변경된 경우 GitHub 이슈에 화면 구조와 재현 방법을 남깁니다.
- 슬라이더가 왼쪽 끝의 기본 너비인지 확인합니다.
- ChatGPT 탭을 새로 고칩니다.
- 브라우저 창이 설정한 너비보다 좁으면 실제 표시 너비가 자동으로 줄어듭니다.
- 사이드바와 개발자 도구가 가용 화면 너비를 줄이고 있는지 확인합니다.
- HTML5 미디어 속도 조절을 켭니다.
- 동영상 또는 오디오를 재생하거나 마우스를 올립니다.
- 페이지를 새로 고칩니다.
- 해당 사이트가 실제
<video>또는<audio>를 사용하는지 확인합니다. - 로컬 파일이면 파일 URL 접근을 허용했는지 확인합니다.
- 사이트 자체가 계정 설정이나 자체 저장소로 속도를 동기화하는지 확인합니다.
- 확장 프로그램 1.26.0 이상에서는 탭별·소스별로 상태를 분리합니다.
- 같은 URL을 여러 탭에서 열었더라도 각각의 탭 식별자로 관리합니다.
- 확장 프로그램을 새로고침한 뒤 모든 미디어 탭도 새로 고칩니다.
- 현재 미디어에 이전 배속 기록이 있는지 확인합니다.
- 기록이 없으면 R 키 기본 복원 배속을 사용합니다.
- 새 소스로 전환하면 이전 소스의
R기록을 이어받지 않습니다. - 단축키 설정에서
R기능이 다른 키로 변경되지 않았는지 확인합니다.
정상 동작입니다. 입력란과 편집 가능한 영역에서 글을 쓰는 동안에는 미디어 단축키를 의도적으로 비활성화합니다.
- 현재 창에
/watch,/shorts/,/live/또는/embed/형식의 영상 탭이 있는지 확인합니다. - 유튜브 홈 또는 검색 결과 탭은 목록에 포함하지 않습니다.
- 새로고침 버튼을 누릅니다.
- 다른 Chrome 창에 있는 탭은 현재 목록에 표시되지 않습니다.
- 해당 영상에서 유튜브 자막 버튼이 실제로 제공되는지 확인합니다.
- 탭을 한 번 활성화하여 플레이어를 깨운 뒤 다시 시도합니다.
- 광고 재생이 끝난 뒤 다시 시도합니다.
- 영상이 바뀌었다면 목록을 새로고침합니다.
- 연령 제한, 로그인, 지역 제한 또는 멤버십 조건을 확인합니다.
- 실패한 탭의 목록에 표시된 오류를 확인합니다.
- 실패한 탭만 선택하여 다시 시도합니다.
- 성공한 탭은 계속 처리되므로 완료 메시지의 성공·실패 개수를 확인합니다.
- 한 번에 최대 50개 탭까지 선택할 수 있습니다.
파일은 UTF-8 바이트 순서 표시를 포함하여 저장합니다. 최신 Windows 메모장이나 UTF-8을 지원하는 편집기로 여십시오. 다른 프로그램에서 인코딩을 직접 선택해야 한다면 UTF-8을 사용하십시오.
- 개발자 도구를 닫습니다.
- 같은 탭을 디버깅하는 다른 확장 프로그램을 끕니다.
- Chrome 내부 페이지나 Chrome 웹 스토어가 아닌지 확인합니다.
- 페이지를 새로 고친 뒤 다시 시도합니다.
- 매우 큰 페이지라면 영역 캡처를 사용합니다.
전체 페이지 캡처는 Chrome이 한 번 측정한 페이지 크기를 그대로 캡처합니다. 아래로 스크롤할 때 콘텐츠가 추가되는 사이트나 내부 스크롤 상자가 있는 사이트에서는 실제 보이는 모든 내용을 포함하지 못할 수 있습니다. 이 경우 페이지를 먼저 끝까지 내려 콘텐츠를 불러온 뒤 다시 캡처하거나, 드래그 영역 캡처를 사용하십시오.
자동 스크롤은 웹페이지 전체의 기본 스크롤만 움직입니다. 별도 스크롤 상자는 직접 먼저 스크롤하거나 여러 번 나누어 캡처해야 합니다.
선택한 요소에 고유하고 안정적인 식별자가 없다는 뜻입니다. 사이트 개편 후 다른 요소를 잘못 숨기는 일을 막기 위한 동작입니다. 이번 페이지에서만 숨기기를 사용하십시오.
- 해당 사이트에서 패널을 엽니다.
- 클릭하여 페이지 요소 숨기기를 펼칩니다.
- 모두 복원을 누릅니다.
- 필요한 경우 페이지를 새로 고칩니다.
- 자바스크립트 링크 새 탭 열기 또는 링크 주소 복사를 켭니다.
- 확장 프로그램을 새로고침한 뒤 페이지도 새로 고칩니다.
- Chrome 내부 페이지에서는 사용할 수 없습니다.
- 주소를 확인할 수 없는 일반 버튼에서는 메뉴를 눌러도 작업이 실패할 수 있습니다.
이 기능은 오작동을 줄이기 위해 매우 보수적으로 동작합니다. 실제 외부 링크 클릭 직후의 명확한 위험 경고 또는 명확한 경고 전용 페이지가 아니면 처리하지 않습니다. 일반 버튼을 임의로 누르거나 목적지를 추정하지 않는 것이 정상입니다.
현재 패널에는 전체 설정 초기화 버튼이 없습니다. 가장 간단한 방법은 확장 프로그램을 제거한 뒤 다시 설치하는 것입니다. 이 경우 사이트별 요소 숨기기 규칙과 모든 사용자 설정도 함께 삭제됩니다. 다운로드한 PNG와 텍스트 파일은 자동으로 삭제되지 않습니다.
소스 패키지에는 결제 기능이나 구독 기능이 없습니다. 다만 저장소를 공개하기 전에 별도의 LICENSE 파일로 사용 및 재배포 조건을 명확히 정해야 합니다.
별도의 확장 프로그램 서버로 보내지 않습니다. 유튜브 자막 기능은 현재 유튜브 탭에서 유튜브가 제공하는 데이터와 요청을 사용합니다.
저장하지 않습니다. ChatGPT 기능은 단축키 대상 입력란과 너비 적용에 필요한 화면 요소만 확인합니다.
일반적인 자바스크립트 이벤트 차단에는 대응하지만, 브라우저 정책, 닫힌 Shadow DOM, 투명 오버레이 또는 특수한 자체 입력 시스템까지 모두 복원할 수는 없습니다.
아닙니다. 방문한 링크의 표시와 방문 기록은 Chrome과 웹사이트 CSS에 맡깁니다. 확장 프로그램은 방문 주소를 별도로 저장하거나 글자색을 강제로 지정하지 않습니다.
주소 용도가 명확한 data-href, data-url, data-link-url, data-target-url 또는 직접 작성된 window.open()과 location 문자열만 확인합니다. 확실하지 않으면 아무 동작도 하지 않습니다.
아닙니다. 서버에 접속하여 리디렉션을 따라가지 않습니다. Chrome 또는 페이지에 명시된 원래 링크 주소를 그대로 복사합니다.
아닙니다. 웹사이트가 자체 HTML 또는 자바스크립트로 만든 명확한 외부 링크 경고만 대상으로 합니다. Chrome 안전 브라우징, 인증서 오류와 다운로드 경고는 유지됩니다.
비공개 get_transcript 요청을 임의로 조립하지 않습니다. 현재 플레이어가 실제로 발급한 자막 요청을 사용하고, 필요하면 유튜브 자막 패널의 실제 데이터와 표시 내용을 읽습니다.
자막 트랙 정보는 최대 세 탭씩 확인합니다. 실제 자막 추출은 선택한 탭을 순서대로 처리하여 각 탭의 상태와 오류를 명확하게 관리합니다.
현재 버전은 읽기 편한 일반 텍스트 파일만 저장합니다. 재생 시간 포함 옵션을 켜면 각 문장 앞에 시간이 표시되지만 SRT 형식은 아닙니다.
미디어의 탭별·소스별 현재 속도는 세션 상태이므로 영구 보관하지 않습니다. 속도 변경 간격, 단축키, 기본 복원 배속과 새 미디어 유지 설정은 로컬 설정으로 저장됩니다.
아닙니다. 요소를 display: none !important로 숨깁니다. 이번 페이지 모드는 새로 고치면 복원되고, 사이트 기억 모드는 저장된 CSS 선택자를 다시 적용합니다.
가능하지만 필요한 기능만 켜는 것을 권장합니다. 특히 웹페이지 입력 제한 해제의 열 가지 기능을 모두 켜면 사이트의 자체 조작 방식과 충돌할 가능성이 커질 수 있습니다.
이 프로젝트는 번들러, 패키지 관리자 또는 컴파일 단계가 없습니다. 저장소 루트의 manifest.json을 Chrome에서 직접 불러올 수 있습니다.
- 저장소를 복제하거나 소스 폴더를 준비합니다.
chrome://extensions에서 개발자 모드를 켭니다.- 저장소 루트를 압축해제된 확장 프로그램을 로드합니다로 선택합니다.
- 코드를 수정한 뒤 확장 프로그램 카드의 새로고침을 누릅니다.
- 콘텐츠 스크립트를 변경했다면 대상 웹페이지도 새로 고칩니다.
- 백그라운드 서비스 워커 오류는 확장 프로그램 카드의 서비스 워커 검사 화면에서 확인합니다.
새 버전을 배포할 때에는 최소한 다음을 확인합니다.
manifest.json의version- README 제목과 버전 표기
- 기존 설정의 마이그레이션 여부
- 새 권한이 추가되었는지 여부
- 모든 JavaScript 파일의 문법
- ZIP 내부에 불필요한 개발 파일이 없는지 여부
- 기존 기능의 회귀 여부
저장소 루트의 파일을 직접 압축하려면 예를 들어 다음과 같이 실행할 수 있습니다.
$Version = "1.29.0"
$Output = "Browser_Toolbox_Extension_v$Version.zip"
if (Test-Path $Output) {
Remove-Item $Output -Force
}
Compress-Archive -Path .\* -DestinationPath $Output -CompressionLevel OptimalZIP을 풀었을 때 manifest.json이 지나치게 깊은 하위 폴더에 들어가지 않도록 구조를 확인하십시오.
git status
git diff
git add .
git commit -m "Release v1.29.0"
git push- 태그:
v1.29.0 - 릴리스 제목:
v1.29.0 - 첨부 파일: 설치용 ZIP
- 릴리스 설명: 주요 변경 사항, 새 권한, 업데이트 시 주의 사항
- 새 메시지 작성란의
Ctrl + Enter - 이전 메시지 편집란의
Ctrl + Enter - 한글 조합 중 전송되지 않는지 확인
- 두 너비 슬라이더의 기본값과 2,000픽셀
- 서로 다른 탭에 다른 배속 적용
- 같은 탭의 여러 미디어에 다른 배속 적용
- 소스 전환 후 복원
R키 왕복 전환- 사용자 지정 단축키
- 표시창 이동 및 초기화
- 로컬 파일 접근
- 일반 영상
- Shorts
- 라이브 또는 임베드 주소
- 수동 자막
- 자동 생성 자막
- 자동 번역
- 한 탭 복사
- 여러 탭 합본 복사
- 한 파일 저장
- 개별 파일 일괄 저장
- 일부 탭 실패 후 나머지 계속 처리
- 자막 작업 후 UI 상태 복원
- 우클릭
- 텍스트 선택
- 기본 복사
- 출처 주소 덧붙이기 차단
- 이미지 드래그
- 가운데 클릭
- 일반
<a>링크가 Chrome 기본 동작을 유지하는지 확인 - 버튼형 링크의 명시적 주소만 열리는지 확인
- 뒤로 가기 직후 보호
- 링크 주소가 경유 주소를 임의로 풀지 않는지 확인
- 사이트 자체 경고와 Chrome 경고의 구분
- 전체 페이지 캡처
- 영역 캡처와 네 방향 자동 스크롤
Esc와 우클릭 취소- 임시 요소 숨기기
- 사이트 기억 요소 숨기기
- 불안정한 선택자 거부
- 모두 복원
- 현재 창만 표시
- 고정 탭과 현재 탭 표시
- 탭 순서 보존
- 중복 URL 보존
- CRLF 줄바꿈
버전 1.29.0은 기능 추가보다 안전성, 최소 개입과 상태 복원을 중심으로 정리한 버전입니다.
- 실제 사용자가 만든 입력에만 중요한 기능이 반응하도록 수정했습니다.
- 페이지가 확장 프로그램 설정 전달을 위조하기 어려운 방식으로 탐색 보호 설정을 전달합니다.
- 자바스크립트 버튼형 링크의 주소 확인 범위를 명시적인 속성과 문자열 리터럴로 제한했습니다.
- 링크 주소 복사에서 경유 주소의 목적지를 임의로 추정하는 처리를 제거했습니다.
- 외부 링크 경고 건너뛰기가 실제 외부 링크 클릭 또는 명확한 경고 전용 페이지에서만 작동하도록 제한했습니다.
- 뒤로 가기 방해 차단이 평상시 방문 기록 함수에 계속 개입하지 않고 실제 이동 직후의 짧은 시간에만 작동하도록 변경했습니다.
- 유튜브 자막 추출이 끝난 뒤 자막과 화면 상태를 가능한 범위에서 복원합니다.
- 텍스트 선택과 이미지 드래그의 스타일 변경을 실제 조작 중에만 적용하고 원래대로 복원합니다.
- 기능이 꺼져 있을 때 불필요한 이벤트 처리기와 문서 감시 기능을 제거합니다.
- 미디어 주소의 서명과 토큰을 저장하지 않고 불투명한 소스 식별자만 사용합니다.
- 사이트에 기억하는 요소 숨기기는 안정적인 선택자를 만들 수 있는 경우에만 저장합니다.
현재 소스 패키지에는 별도의 LICENSE 파일이 포함되어 있지 않습니다. GitHub 저장소를 공개하기 전에 다음 중 하나를 결정하십시오.
- 개인 보관용 비공개 저장소로 유지
- 사용과 수정 및 재배포를 허용하는 오픈 소스 라이선스 추가
- 소스 공개는 하되 별도의 사용 조건 명시
LICENSE 파일을 추가한 뒤 이 문단을 실제 라이선스 설명으로 바꾸는 것을 권장합니다.
또한 공개 전에 다음 항목을 확인하십시오.
- 저장소에 개인 정보나 테스트용 비밀값이 들어 있지 않은지 확인
- 실제 배포 ZIP의 파일 구조 확인
manifest.json의 권한 설명을 README와 일치시키기- 새 버전의 실제 Chrome 환경 검증 범위를 릴리스 설명에 명확히 적기
- 모사 시험과 실제 사이트 시험을 구분하여 기록하기
이 확장 프로그램은 ChatGPT 전용 단축키에서 시작했지만, 현재는 ChatGPT 화면 설정, HTML5 미디어 제어, 여러 유튜브 탭의 자막 처리, 화면 캡처, 페이지 정리, 탭 URL 관리와 웹페이지 입력 제한 해제를 하나의 패널에 모은 브라우저 도구 모음입니다.
기능이 많기 때문에 모든 기능을 항상 켜기보다 필요한 기능만 선택하여 사용하는 것이 가장 안정적입니다. 특히 사이트 동작에 개입하는 기능은 기본적으로 꺼져 있으며, 일반 브라우저 기능이 정상적으로 작동하는 사이트에서는 켜지 않는 것을 권장합니다.