Privacy Policy for ezy Youtube Video Control
Last updated: October 24, 2026 (v3.4.5)
1. Scope
This policy explains how ezy Youtube Video Control ("the extension") handles information while providing YouTube viewing, player-control, navigation, and page-layout features. The extension is independently developed and is not affiliated with, endorsed by, or sponsored by YouTube or Google.
2. Information the Extension Handles
- Saved preferences and popup state: player, layout, list-filter, caption, playlist, Shorts, chapter-dot, video-summary, keyboard-shortcut, per-channel/per-folder tuning-profile, and sleep-timer settings; popup navigation state; favorite and recently changed setting keys/timestamps; and channel names, handles, or title keywords entered into exclusion fields.
- Current YouTube page and website content: the current URL and video identifier; page and player state; visible title, channel, view-count, duration, upload-time, watched, live, and upcoming indicators; caption/player information; chapter titles and times; and, when Video Summary is enabled, the answer returned in YouTube's native Ask panel.
- Bilingual captions: only when the user enables caption optimization and selects original + translated captions, the extension loads the selected video's original caption text and translation from youtube.com using the current player's same-origin caption requests. Caption text is held only in the current tab's memory for synchronized display and is discarded on navigation, feature disablement, or tab closure. It is not uploaded to Drive or sent to the developer or another translation service.
- Local video feature records: when the related feature is used, the extension stores a YouTube video ID with its selected playback speed, resume position, duration, and update timestamps. A user-created bookmark stores a video ID, playback position, optional note, and creation time. The playback queue stores up to 200 video IDs plus ordering, played-state, item, claim, owner-tab, lease, and acknowledgement metadata needed to prevent multiple YouTube tabs from consuming the same item, preserve the user's chosen order and played-item preference, and recover across service-worker restarts.
- Limited YouTube Ask conversation text: when Video Summary is enabled and the native Ask panel already contains a conversation, the extension checks existing user turns for the fixed localized summary wording and finds the latest completed summary answer. This is used only to avoid a duplicate request and reuse an existing summary. Non-summary turns are not copied or retained.
- Feature interactions: relevant keyboard, mouse-wheel, click, scroll, and playback events are processed in real time to perform selected actions. They are not logged as an activity history.
- Promotional banner in the popup: when the popup is opened in a layout large enough to include it, the extension requests a small banner-configuration JSON file (image URL, destination link, label, and display schedule) from the developer's static server at
app.ezy.kr. The JSON request usescredentials: "omit". Successful, disabled, invalid, and failed attempts are cached in the current browser profile for a limited period when extension storage is available, so another configuration request is not normally made while that cached result is still valid. When a validated banner is displayed, the browser loads its image from anezy.krhost as a normal cross-origin image with ano-referrerpolicy; this image request follows the browser's normal credential policy and therefore may include cookies already associated with that host. The extension code does not add an extension-generated identifier, preference, Google account value, current URL, video identifier, or page content to either request. As with ordinary resource delivery, the hosting infrastructure receives the requesting IP address and standard request headers and may temporarily retain standard access logs for operation and security. The extension sends no separate impression beacon, click beacon, tracking pixel, or analytics identifier. The banner promotes the developer's own ezy apps, and destination links are restricted toezy.krandapps.microsoft.com. - Optional Google account authorization: only when the user selects Connect Google account, the browser's Identity web-auth flow opens Google's account chooser for the Google Drive
appDataFolderscope. This login is independent of the browser profile. After connection, the extension reads the current Drive user's display name and email address through the Driveaboutresource so the popup can identify the connected account. It does not request separate email/profile OAuth scopes, contacts, general Drive files, or any YouTube OAuth scope. The account connection is used only for the optional synchronization and backup features; no subscription feature requires it. It may also read limited file metadata already present in its hidden app-only folder to confirm access. - Optional settings synchronization and backups: when enabled or manually requested, the extension stores synchronized preference values, per-setting modification timestamps, a random device identifier, schema/revision metadata, and up to five backup snapshots in its hidden Google Drive
appDataFolder. - Optional channel-folder management: when enabled, the extension stores user-created folder names and order, channel IDs, titles, page and thumbnail URLs, folder assignments, ordering, modification metadata, and deletion markers locally. If channel sync is enabled, the same
channel-library.jsondocument is stored in the hidden Google DriveappDataFolder. When the user opens the channel manager while signed in to YouTube in the current tab, the extension reads the subscription list — subscription IDs and the subscribed channels' IDs, titles, page URLs, and thumbnail URLs — directly from youtube.com through the same internal web endpoints the YouTube page itself uses, under the current tab's existing YouTube login session. No Google sign-in, OAuth scope, or YouTube Data API access is used for any subscription feature. Each channel's latest public-video publication time comes from YouTube's public RSS feed, requested without any credentials. - YouTube session signing values: to authenticate those same-origin subscription requests the way the YouTube page does, the extension reads the current tab's YouTube session values — the
SAPISID(or__Secure-3PAPISID) cookie and the page's account-identification values (SESSION_INDEXfor multi-login accounts andDELEGATED_SESSION_IDfor brand accounts). The cookie value is used transiently in memory only to compute theSAPISIDHASHrequest signature; it is never stored, never logged, and never sent anywhere except youtube.com itself. If the user is signed out of YouTube, the extension only shows guidance and sends no request. - Optional YouTube subscription removal: only after the user opens a subscribed channel's row action in the channel manager, presses the separate unsubscribe control for that one channel, and confirms an inline warning that names the channel, the extension sends one unsubscribe request for that channel to youtube.com through the same session-based endpoint the YouTube page itself uses. Before sending, it re-checks that the channel is still in the current subscription list and sends nothing if it is not. Folder deletion, moving a channel between extension folders, and the "clean up unsubscribed channels" action never unsubscribe the user; the clean-up only removes library records for channels YouTube already reports as unsubscribed.
The extension does not read Chrome's general browser-history database or build a general list of pages visited. It does retain the feature-specific video IDs, resume/speed records, bookmarks, and queue entries described above on the current browser profile.
3. How Information Is Used and Stored
- Preferences are stored locally on the current browser profile with Chrome's
chrome.storage.localAPI. New preference changes are not transmitted through Chrome Sync. On the first run after upgrading, existing preference keys are copied once from legacychrome.storage.syncstorage into local storage. Google Drive synchronization remains off by default and exchanges non-device-local settings only after the user enables it. - Current page content, page state, chapter data, and interaction events are processed temporarily in the current tab only to provide selected features. They are not sent to the developer. Only the specific video-state, bookmark, and queue fields disclosed in section 2 are retained locally; the extension does not store a general page-content or visit log.
- Google account connection is optional. An interactive chooser opens only after an explicit button click; a previously authorized connection may be checked or renewed silently. OAuth access tokens remain only in the background service worker and
chrome.storage.session. The display name is not stored. While connected, the email address is stored locally as an OAuthlogin_hintso renewal remains bound to the selected account, and is removed on Disconnect. - Settings synchronization is local-first and optional. When enabled,
settings.jsonis merged using per-setting timestamps and a random device identifier. The extension checks shortly after local changes and approximately every two minutes. Only the five newest manual or automatic safety backups are retained. Turning sync off stops Drive exchange without deleting cloud files. - Channel-folder management is off by default and local-first. It replaces YouTube's native subscription section only after its own section mounts successfully and restores the native section when disabled or unavailable. Folder selection and expansion are device-local UI state. Separately enabled channel sync exchanges
channel-library.jsonwithappDataFolderapproximately every two minutes. - The YouTube subscription list is read only in the current tab, under the tab's existing YouTube login session, when the user opens or refreshes the channel manager. No Google account connection is required for any subscription feature, and the session cookie used to sign these requests is used in memory at the moment of signing and sent only to youtube.com. The subscription list is held in a short in-memory cache and normalized into the local channel library. To show “today” or “N days ago” without repeated network requests, latest public-video publication and check times from the public RSS feed are cached only on the current device for approximately 12 hours and are not uploaded to Drive. Unsubscribe requests are never scheduled and never result from folder editing.
- The developer receives no preferences, page content, prompts, summary responses, analytics, or telemetry from the extension. The only developer-operated resources contacted by the extension are the static promotional-banner configuration and image described in section 2; those resource requests carry only the standard network metadata described there, not extension feature data.
4. Video Summary: YouTube Ask Processing
Video Summary is experimental and off by default. When enabled, the extension sends the fixed localized request (such as “Summarize this video” or “동영상을 요약해 줘”) once automatically through YouTube Ask for each supported watch video. If the automatic attempt fails, it is not repeated automatically on that video. Instead, a confirmation card opens with exactly what will be sent, who will receive it (YouTube Ask, for the current video), and a notice that the request cannot be taken back once sent; the user can retry manually or cancel. A request in progress can be stopped at any time — stopping halts the extension's own tracking and display, while a question already submitted to YouTube Ask cannot be recalled.
- Navigating to another video discards any pending confirmation or in-progress request, so a confirmation given for one video is never sent in the context of another.
- The request is handled in the current YouTube page by Google/YouTube. Google/YouTube may process the prompt, current video, account, and page context according to the user's settings and Google's policies.
- The extension reads the returned answer and keeps a cloned copy only in the current tab's memory. It discards that copy when the feature is disabled, the page navigates, or the tab reloads.
- The developer does not receive the prompt, video context, or answer. YouTube may retain its native Ask conversation under its own service behavior and policies; the extension does not control or delete YouTube's copy.
- If the native Ask panel already contains a conversation, the extension reads existing turn text only to determine whether the same summary was previously requested. It reuses the latest completed answer or stops without adding a new question. Unrelated conversation turns are not stored.
- If YouTube Ask is unavailable, the extension does not send the request through an alternate service.
5. Sharing and Service Providers
The developer does not sell, rent, share, or transfer user information. External processing connected to user-selected features is limited to:
- Legacy Google Chrome Sync storage: an earlier version may have synchronized saved preferences. The current version reads those existing extension preference keys once for local migration, leaves the legacy copy unchanged, and does not send new preference changes through Chrome Sync.
- Google/YouTube Ask: processes the fixed summary request and relevant current-video context only when Video Summary is enabled and YouTube Ask is available.
- Google OAuth web authorization and Google Drive API: the browser Identity API opens Google's web account chooser independently of the browser profile. The Drive API accesses this extension's hidden
appDataFolder, returns the current user's display name and email address, and—only for enabled sync or requested backup/restore—stores and retrieves settings JSON documents. - YouTube (youtube.com): while Channel Folders is enabled, the extension sends the same-origin subscription-list requests and user-confirmed unsubscribe requests described above to youtube.com under the user's existing YouTube login session, and fetches public, credential-free RSS feeds for latest-upload times. These requests go only to youtube.com and are processed by YouTube under the user's account and Google's policies; the developer does not receive them. The YouTube Data API is not used.
- Developer's static promotional server (app.ezy.kr): serves the credential-free JSON configuration and the banner image described in section 2. The image is loaded under the browser's normal image credential policy and may include cookies already associated with its host. The extension code does not directly attach an extension identifier, Google account value, setting, current URL, video identifier, or page content; the hosting infrastructure still receives standard network metadata such as the IP address and request headers.
The extension shares no extension preferences, account values, browsing content, or extension-generated identifiers with advertising networks, analytics providers, or data brokers. Standard network metadata involved in delivering the first-party promotional resources is handled as described above.
6. Permissions
storage: saves preferences and device-local UI state; synchronization metadata and a random device identifier; the connected-account renewal hint; channel-folder/library data; per-video speed/resume records; user-created bookmarks; the playback queue and its coordination metadata; sleep-timer and tuning-profile state; short-lived latest-video metadata; and the short-lived promotion configuration/attempt cache. It also reads legacy synchronized preference keys during one-time migration.identity: opens the browser's OAuth web-auth flow after an explicit action. The only OAuth scope requested ishttps://www.googleapis.com/auth/drive.appdata, used for the optional settings and channel-library synchronization and backups. No YouTube OAuth scope and no separate email/profile OAuth scope is requested.alarms: schedules optional settings synchronization approximately every two minutes and provides a fallback for deferred uploads while the service worker is suspended.https://www.youtube.com/*: runs packaged scripts and styles on YouTube pages to apply selected player, layout, list-filter, chapter, summary, caption, playlist, recommendation, and Shorts features, and, while Channel Folders is enabled, sends the same-origin subscription-list, user-confirmed unsubscribe, and public RSS requests described above.https://www.googleapis.com/*: calls the Drive API for app-only settings/channel data. It is not used for the YouTube Data API.https://oauth2.googleapis.com/*: requests revocation of the current OAuth access token when the user disconnects the account.
The extension does not request identity.email, tabs, activeTab, scripting, browsing-history, cookies, or web-request permissions.
7. Advertising, Analytics, and Remote Code
- The popup may show one clearly labeled promotional banner for the developer's own ezy apps, configured by the static JSON file described in section 2. No third-party advertising network, ad SDK, ad auction, or personalized ad targeting is involved.
- No analytics, tracking, or telemetry SDK is included. The extension sends no dedicated impression, view, or click beacon and no extension-generated identifier. Ordinary JSON/image delivery can still appear in the hosting infrastructure's standard access logs, and opening a destination necessarily sends a normal navigation request to that destination.
- The extension does not download or execute remote code. All executable logic is included in the extension package; the banner configuration is plain JSON data that packaged code validates before use and is never executed.
- Interacting with YouTube's existing page and native Ask service does not download executable logic into the extension.
8. Retention and User Control
- Local preferences remain in Chrome storage until the user resets or removes the extension or clears its storage. A legacy synchronized copy from an earlier version may remain temporarily for rollback compatibility until the user removes synchronized data or a later migration explicitly cleans it up. The developer cannot access or delete either copy.
- A sleep-timer end time is removed when the timer finishes or is cancelled. Favorite setting keys remain until unstarred; the recent-changes list keeps at most 20 setting keys with timestamps as newer changes replace older ones. Per-channel/per-folder tuning profiles remain until individually removed or extension storage is cleared. These device-local UI records are not uploaded to Drive.
- Current page state, chapter data, interaction events, and the extension's temporary summary copy are discarded when no longer needed, including on navigation, reload, tab closure, or feature disablement as applicable.
- Per-video speed, resume position, duration, and timestamps are stored only on the current browser profile. The store is capped at 500 video records. Records older than about 180 days and least-recently-updated overflow records are removed during a later video-state write, so an expired record can remain if no later write occurs. The user can remove all indexed video-state records with Settings → Local data → Delete all. Finishing at least 90% of a video removes its resume position while preserving its saved speed.
- User-created bookmarks are stored only on the current browser profile, up to 1,000 entries. Each remains until removed individually, extension storage is cleared, or the extension is removed. The Local data → Delete all control intentionally does not delete bookmarks.
- The playback queue is stored only on the current browser profile, up to 200 unique video IDs. Entries remain until playback is acknowledged, removed, or cleared. A queue claim includes opaque claim/item/owner tokens and the consuming tab ID under an approximately two-minute lease; expired claims are cleaned during a later queue operation. The last acknowledgement receipt can remain until replaced or extension storage is cleared.
- Google OAuth access tokens remain only in service-worker memory and
chrome.storage.sessionand are silently renewed when Google permits it. Disconnecting disables sync, clears the locally stored email renewal hint and session token, and requests token revocation, but does not delete existingappDataFolderdata. - Cloud
settings.jsonand the five newest backups remain when sync is turned off or the account is disconnected. Restoring creates a safety backup first. Sync OFF and Disconnect do not imply cloud-data deletion. - Local channel folders and assignments remain until edited/reset, extension removal, or storage clearing. If channel sync is enabled,
channel-library.jsonremains inappDataFolderafter sync is turned off or the account is disconnected. The subscription-list memory cache expires after approximately five minutes and disappears when the page unloads. Latest public-video publication/check timestamps remain only on the current device and refresh after approximately 12 hours. The session cookie value used for request signing is never retained. Confirmed YouTube unsubscription is not restored by extension folder data. - The promotional-banner configuration, or a null result recording a disabled, invalid, or failed attempt, is cached locally in
chrome.storage.localfor a limited period. It is replaced once that period elapses, or removed when the user clears extension storage. - Legacy data retained by Chrome Sync and data retained by YouTube are controlled by Google and the user's Google/Chrome settings and are subject to Google's policies.
9. Limited Use
YouTube page information, Google API information, and locally stored extension-feature data are handled only to provide or improve the disclosed user-facing features. They are not used to select or personalize promotions, determine creditworthiness, run unrelated analytics, or sell data, and the developer does not receive their contents. Standard network metadata created when the first-party promotional resources are requested is used only to deliver those resources, operate and secure the host, and meet legal obligations; authorized operators may access server logs only when reasonably necessary for those limited purposes.
The use of information received from Google APIs will adhere to the Chrome Web Store User Data Policy, including the Limited Use requirements.
10. Policy Changes
If information-handling practices change, this policy, the Chrome Web Store disclosures, and any required in-product disclosure will be updated before the changed practice takes effect.
11. Contact
Questions about this policy may be sent to ohnagi@gmail.com.
한국어 요약
- 학습용 이중 자막: 사용자가 자막 최적화와 원어+사용자 언어 표시를 켠 경우에만 현재 영상의 원문 자막과 번역을 youtube.com에서 읽어 탭 메모리에서 동기 표시합니다. 이동·기능 해제·탭 종료 시 폐기하며 Drive·개발자 서버·다른 번역 서비스에 자막 본문을 보내거나 저장하지 않습니다.
- 기능 제공에 필요한 설정, 사용자가 입력한 제외 채널·키워드, 현재 YouTube URL·페이지 요소·플레이어 상태·목록 메타데이터·챕터 정보와 관련 입력 이벤트를 처리합니다. 일반적인 브라우저 방문 기록이나 페이지 내용 로그는 만들지 않지만, 기능을 사용하면 영상 ID별 속도·이어보기 위치·길이(최대 500개, 약 180일 초과분은 이후 기록을 쓸 때 정리), 사용자가 만든 북마크(영상 ID·위치·선택 메모·생성 시각, 최대 1,000개), 재생 대기열(영상 ID 최대 200개와 정렬·재생 상태·다중 탭 조정 메타데이터)을 현재 브라우저 프로필에 로컬 저장합니다.
- 영상별 속도·이어보기 기록은 설정 → 로컬 데이터 → 전체 삭제에서 지울 수 있습니다. 북마크는 각 항목에서 삭제하며 이 전체 삭제에 포함되지 않습니다. 대기열 항목은 재생 확인·개별 삭제·전체 비우기 때 제거됩니다. 확장 삭제 또는 확장 저장소 삭제 시 이 로컬 데이터도 제거됩니다.
- 동영상 요약을 켠 상태에서 YouTube 질문하기에 기존 대화가 있으면, 중복 질문 방지를 위해 기존 사용자 턴에 고정 요약 문구가 있는지 확인하고 마지막 완료 요약을 찾습니다. 관련 없는 대화는 복사·저장하지 않습니다.
- 설정은 현재 브라우저 프로필의
chrome.storage.local에 저장되며 Chrome 동기화로 전송하지 않습니다. Google Drive 설정 동기화는 기본 OFF이며 사용자가 켠 경우에만 기기 로컬 UI 상태를 제외한 설정, 키별 수정 시각과 임의 기기 ID를 앱 전용 폴더에서 약 2분 간격으로 교환합니다. - 대화형 Google 계정 선택창은 사용자의 명시적 동작에서만 열립니다. OAuth 범위는 설정·채널 동기화용
drive.appdata하나뿐이며 YouTube 관리 범위와 별도 이메일·프로필·연락처·일반 Drive 파일 권한은 요청하지 않습니다. 구독 기능에는 Google 계정 연결이 필요하지 않습니다. 이메일은 동일 계정 무음 재인증용login_hint로만 로컬에 보관하고 액세스 토큰은 background service worker와chrome.storage.session에서만 다룹니다. - 동기화를 켜거나 백업/복원을 실행하면
settings.json과 최대 5개 백업 JSON을 DriveappDataFolder에 저장합니다. 동기화 OFF와 연결 해제는 클라우드 파일을 삭제하지 않으며 복원 전에는 현재 설정을 자동 안전 백업합니다. - 채널 폴더 기능은 기본 OFF입니다. 켜면 최대 2단계 폴더와 채널 ID·제목·페이지/썸네일 URL·배치·정렬·수정/삭제 메타데이터를 로컬에 저장하고, 채널 동기화를 별도로 켠 경우
channel-library.json을 Drive 앱 전용 폴더에서 약 2분 간격으로 교환합니다. - 구독 목록 기능은 Google 로그인 없이 현재 탭의 youtube.com 로그인 세션으로 동작합니다. 채널 관리 화면을 열면 YouTube 웹페이지가 쓰는 것과 같은 내부 경로로 현재 구독 ID와 채널 ID·이름·페이지/썸네일 URL을 읽고, 요청 서명을 위해
SAPISID쿠키 값을 메모리에서 일시적으로만 사용합니다. 이 값은 저장·로그·외부 전송 없이 youtube.com 요청에만 쓰이며 로그아웃 상태면 요청 없이 안내만 표시합니다. 최신 공개 영상 게시 시각은 인증 없는 공개 RSS 피드에서 읽어 현재 기기에만 약 12시간 캐시하고 Drive에 업로드하지 않습니다. 폴더 삭제·미분류 이동은 실제 YouTube 구독에 영향을 주지 않습니다. 별도 빨간 구독 해제 체크와 대상 채널 실명 목록이 표시되는 경고를 확인한 경우에만 같은 세션 경로로 선택한 실제 구독을 최대 50개 단위로 해제하며, 해제 전 현재 구독 목록을 다시 조회해 0건으로 응답되면 안전을 위해 전체를 중단합니다. - 동영상 요약은 기본 OFF입니다. 사용자가 켜면 지원되는 watch 영상마다 고정 문구 “동영상을 요약해 줘”를 YouTube 질문하기로 한 번 자동 전송합니다. 자동 요청이 실패하면 같은 영상에서 자동 반복하지 않고, 보낼 내용과 받는 곳(YouTube 질문하기, 현재 영상), 되돌릴 수 없다는 고지를 보여 주는 확인창을 열어 사용자가 수동으로 다시 요청하거나 취소할 수 있게 합니다. 진행 중 중단은 확장의 추적·표시를 멈추는 것으로 이미 제출된 질문 자체는 회수되지 않으며, 다른 영상으로 이동하면 대기 중이던 요청은 폐기됩니다. Google/YouTube가 현재 영상·계정·페이지 문맥과 함께 처리할 수 있으며 개발자는 요청이나 답변을 받지 않습니다.
- 요약 답변 복제본은 현재 탭 메모리에만 유지되고 이동·새로고침·기능 해제 시 폐기됩니다. YouTube 네이티브 대화의 보존은 Google/YouTube 정책과 서비스 동작을 따릅니다.
- 팝업에는 개발자 자체 ezy 앱을 소개하는 배너 1개가 명확한 프로모션 표시와 함께 나타날 수 있습니다. 구성 JSON은
credentials: "omit"으로app.ezy.kr에서 요청하고, 성공·비활성·오류 결과를 현재 브라우저 프로필에 일정 기간 캐시합니다. 표시할 때의 이미지는no-referrer정책을 적용하지만 브라우저의 일반 이미지 credential 정책을 따르므로 해당 이미지 호스트에 이미 설정된 쿠키가 포함될 수 있습니다. 확장 코드는 식별자·설정·Google 계정값·현재 URL·영상 ID·페이지 내용을 두 요청에 직접 추가하지 않으며, 정적 리소스 서버는 일반 웹 요청과 마찬가지로 IP 주소와 표준 요청 헤더를 받고 운영·보안을 위한 표준 access log를 일시 보관할 수 있습니다. - 배너 링크는
ezy.kr·apps.microsoft.com으로 제한됩니다. 외부 광고 네트워크·맞춤 타겟팅·별도 노출/클릭 beacon·분석·추적·원격 코드가 없습니다. 다만 JSON/이미지 제공은 서버의 일반 access log에 나타날 수 있고, 사용자가 링크를 열면 목적지 서버로 일반 탐색 요청이 전송됩니다. 앱 전용 Drive 설정/채널 동기화를 위해identity,storage,alarms, Google API 호스트 권한을 사용합니다. OAuth 범위는drive.appdata하나뿐이며 YouTube 관리 범위와 별도 이메일·프로필 범위는 요청하지 않습니다.