SingLayer Privacy Policy
개인정보처리방침

SingLayer Privacy Policy — English

Last updated: October 9, 2026. Local storage disclosure updated for extension version 0.4.315.

1. Operator and purpose

SingLayer is operated by the SingLayer developer. Contact: skykpm@naver.com. It helps users prepare and display synchronized lyrics and song information for YouTube-based singing broadcasts, including optional pitch adjustment, song requests and donation overlays. It does not require a SingLayer account and has no advertising or behavioral analytics service.

2. Information processed

After consent and activation, SingLayer reads the current YouTube video's ID, title, artist/channel information, duration, playback position and playback state. It processes search queries, lyrics selected or entered by the user, readings, translations, synchronization corrections and display settings. It does not read browsing history on unrelated websites, YouTube account passwords or authentication cookies.

Preferences, consent choices, recent songs, saved lyrics and annotations, synchronization corrections, limited search caches, pending sharing retries and randomly generated broadcast connection keys are stored in Chrome extension storage. General lyric search results are reusable for up to 24 hours within size and entry limits. The local lyric library retains up to 5,000 video records, including their readings, translations, word timings and synchronization corrections. When that limit is reached, saving another video removes the least recently saved unprotected lyric record. Manually entered or selected lyrics and songs with a personal synchronization edit are protected automatically, and the user can enable or disable protection for individual records in My data. If all 5,000 records are protected, existing records remain and the new record is not saved; playback can continue and a storage warning is shown. The unlimitedStorage permission lets this local library exceed Chrome's default 10 MB extension storage quota; it does not add website access or change optional sharing. Other settings and saved content remain until removed by the user or the extension's storage is cleared, subject to the feature-specific limits described here. Some temporary state uses Chrome session storage and is cleared when the browser session ends.

Unapplied manual lyric edits are saved locally as drafts: video ID, entered title/artist/lyric text, edit time and a fingerprint of the original lyrics for change detection. There is at most one draft per video and 20 drafts in total. Drafts expire 30 days after their last edit; expired drafts are removed when accessed or when another draft is saved, and older drafts are removed when the entry limit is reached. Restoring a draft only fills the editor and does not automatically apply lyrics, start translation or send the draft to a server. Successful application or choosing Discard removes the corresponding draft. Deleting all locally saved lyrics also clears drafts.

At the user's request, local backup exports a JSON file containing saved lyrics, readings, translations, word timings, synchronization corrections, playlists and pitch presets, songbook mappings and personal visibility choices, per-video styles and display settings. It excludes broadcast addresses and connection keys, consent settings, live requests and donation lists, drafts and search caches. Backup and restore do not upload the file to a server. Before restore, the user selects sections and sees additions and conflicts; existing data is kept by default unless replacing conflicting records is selected. The downloaded file remains at the user's chosen location and is not deleted by clearing extension storage. A source-tab lock is held for the current Chrome session; it is released when the tab closes or leaves a video page.

3. Lyrics, translation and optional sharing

LRCLIB, NetEase, QQ Music and Kugou receive song title/artist search terms. NetEase, QQ Music and Kugou also receive selected song identifiers; QQ Music and Kugou receive relevant song duration and album information when needed to retrieve lyrics. Requests use HTTPS without account cookies. QRC/KRC decoding runs locally in the extension; no music audio is downloaded or uploaded. The SingLayer service at music-translator.skykpm.workers.dev, hosted on Cloudflare Workers and KV, receives song information and video IDs to look up saved lyrics and synchronization, and lyric text to look up existing readings/translations.

When automatic lyrics and translation have been accepted, Japanese or English lyrics without saved annotations may be sent with song information through the SingLayer service to Google Gemini API. Manually requesting regeneration also sends this information. User-entered lyrics may be translated. Japanese processing produces Korean readings and translations; English processing produces Korean translations only. The video ID is used by the SingLayer service but is not included in the Gemini generation prompt.

During Japanese reading generation, QQ Music and NetEase may also receive the song title, artist and duration to find companion pronunciation tracks. Only references matched to the recording and lyric body are sent with the original lyrics to the SingLayer translation service and Gemini. Up to 12 reference results are cached locally for up to 24 hours; clearing the local lyric search cache or extension data removes them. Conflicting references are not treated as verified sung readings. No audio is captured or sent for this check.

The Gemini API project has an active linked billing account. Under Google's Paid Services terms, submitted content and generated responses are not used to improve Google's products or models. The applicable project terms, rather than whether usage incurs a charge, determine this treatment. Google's safety, abuse-prevention and legal processing still applies. Do not enter sensitive or confidential information into lyric fields. See the Gemini API terms and Google Privacy Policy.

Sharing is a separate, optional choice and is initially unchecked. When enabled, provider-sourced lyrics, readings/translations, song information, video IDs, timing corrections and revision times may be stored in the shared service and reused by other users. This includes lyrics manually selected from search and their synchronization corrections. The sharing choice also includes directly written or edited synchronized lyrics when the user applies them. Their lyrics, readings, translations, song information, video ID and timing are stored for that video only with a 90-day expiration after saving or updating. Previously saved local lyrics are not uploaded in bulk. When sharing is off, new shared uploads stop and translation requests specify that their results must not be saved in the public cache. Requests already in progress and copies already received by others cannot necessarily be recalled.

Newly stored or updated shared lyric, translation and synchronization records receive a 90-day expiration. Legacy synchronization records from earlier development versions that were stored without expiration may remain until separately removed.

Japanese karaoke reading alignment

When karaoke is enabled for provider-supplied YRC, QRC or KRC word timings, Japanese lyric text and its existing Korean pronunciation may be sent through the SingLayer service to Gemini to align their text segments. This generation follows the automatic-translation setting. Existing text is preserved; provider timing is reused without audio analysis or audio uploads. Valid mappings are saved locally and, only with optional sharing enabled for provider-sourced lyrics, in the shared cache with a 90-day expiration. Cached mappings can be retrieved without generating new ones.

4. Captions on the current YouTube video

SingLayer can inspect captions registered on the current video. Automatically generated captions are excluded. Registered captions that pass language, content and timing checks can be prioritized for automatic lyric matching or selected manually. Reading captions may temporarily change the player's caption language or visibility and then restore it. SingLayer does not download video or audio files.

Selected captions and synchronization are saved locally for that video. If optional sharing is enabled, caption text, timing, video ID and song information may be stored in the same Cloudflare KV service for reuse on that video, subject to the 90-day policy. They are not indexed as lyrics for different videos by song title. Translation follows the same consent and sharing choices described above.

5. Optional music metadata providers

Apple iTunes receives music search terms only when the user enables the additional provider and grants its optional site permission. MusicBrainz is also optional and disabled by default. If enabled and permitted, it receives cleaned title/artist queries when existing matching is insufficient; it does not receive audio, full lyrics or video IDs. MusicBrainz requests identify SingLayer using its app name, version and developer contact email.

The optional declarativeNetRequestWithHostAccess permission adds this application-identification header only to the extension's own GET requests to MusicBrainz's recording-search API, not to unrelated browsing. MusicBrainz queries are spaced by at least 1.1 seconds; a local cache holds at most 64 entries, reusable for 24 hours for results and five minutes for empty results. Disable the option or revoke the optional permission to stop new queries; clear extension storage to remove its cache. See MusicBrainz API documentation and its data licenses.

6. YouTube video search

SingLayer uses YouTube API Services to find videos for song requests and songbook entries. The visible query, such as a title, artist and “inst”, and an optional pagination token are sent to the SingLayer service and then to the Google YouTube Data API. Requester account IDs, nicknames and complete chat messages are not attached to search requests. Video IDs, titles, channel names and durations are returned for selection. Thumbnails are loaded directly from YouTube image servers. This feature does not request Google sign-in or OAuth access.

Identical search results may be reused for ten minutes, within an extension-memory limit of 32 entries and a service-memory limit of 100 entries. This search endpoint does not store queries or results in the lyrics KV database. For rate limiting, the service processes the requesting IP address and a request count in one-minute windows; expired entries are discarded on subsequent requests or runtime cleanup. A video the user selects may remain in a request session or a local playlist/songbook until removed through those features.

By using this YouTube search feature, users agree to be bound by the YouTube Terms of Service. Google's processing is governed by the Google Privacy Policy. YouTube separately controls its own page cookies, advertisements and sign-in. SingLayer does not read account passwords or authentication cookies.

7. Local playlists and the optional Reumdal songbook

Adding a video to a playlist stores its video ID, title, artist, original video title, duration, addition time and selected pitch locally. Videos are not automatically added simply because they were played. The playlist is not uploaded to a SingLayer account or synchronized between devices. Remove individual entries or clear extension storage to delete them. Thumbnail display requests the corresponding image from i.ytimg.com; playback opens the YouTube video.

For accidental deletion recovery, the most recent removed playlist entry, its former position/neighbouring video IDs, deletion time and an undo token are kept in local extension storage. Only one deletion snapshot is retained, and undo is available for 30 minutes. The snapshot is replaced by the next deletion, cleared after undo, or cleared on the next access after expiry. It is not uploaded or synchronized. Clearing extension storage removes it.

Connecting or refreshing the optional Reumdal songbook uses permission for reumdal.songlist.cloud to read public song IDs, artists, titles and coin amounts. No login, cookies or account-linking key is used. The downloaded songbook, manual video mappings and saved pitch choices remain in local extension storage. Hiding a song stores a local hidden-entry record that persists across songbook refreshes until explicitly restored. The songbook menu provides a Hidden Songs list for restoration. A manual mapping and pitch choice for a removed or hidden song may be retained locally so restoration can preserve them. Clear extension storage or uninstall to remove all mappings.

Existing entries can use mappings bundled with the extension. Newly added unmatched entries may query lyric providers and the YouTube search service for matching; the entire songbook is not repeatedly searched. Users can also search for and correct a mapping manually. Manual choices are not overwritten by automatic refresh. Identified songbook coin amounts may appear in the song-request overlay; the entire songbook and mapping list are not sent to the broadcast server.

8. Optional SOOP donation board and song requests

After separate feature consent and optional permission for live.sooplive.com, SingLayer requests public broadcast metadata for the selected channel and opens an anonymous, read-only connection to the SOOP chat endpoint identified by that metadata. It does not log in, read account cookies, or send user chat messages or donations. The incoming stream can contain general chat, which is not retained as a chat log. When requests are enabled, only applicable request commands are retained. While collection remains on and the broadcast is offline, public broadcast status is checked about every 15–17 seconds to reconnect after it starts. Stopping collection or revoking its optional permission stops these checks and new collection.

The donation board processes the donor nickname, public star-balloon count, image identifier/address and receipt time. Donor account IDs are excluded from stored cards and broadcast card payloads. Cards are kept in Chrome session storage up to the selected grid capacity, at most 100 cards. Channel ID, display settings, thresholds and consent choices are local settings. Clearing the board or changing the channel removes cards; ending the browser session clears session data. Test cards use the nickname “테스트” and do not send a real donation. No credit-card details, bank account information or payment credentials are collected.

Song requests process the request text, requester nickname/account ID, request time, processing state and any linked video. A zero normal-song threshold allows requests without a donation. Otherwise, an eligible donation grants a request via its accompanying message or a !신청 command within 15 seconds. Eligibility is short-lived in memory and cleared when collection stops. The difficult-song threshold is a display guide. There are at most 100 active requests and at most 200 retained session entries including processing states. Closing a tools window does not stop collection; ending the browser session or changing channels resets its session list. Users can remove requests, stop reception or withdraw request consent; withdrawing consent clears the list. To undo an accidental deletion, the last deleted request, its original position and an undo identifier remain in the service execution memory for up to 30 seconds. Undoing it clears that snapshot, and another deletion replaces it. The snapshot cannot restore requests after the list is reset, the session changes or request consent is withdrawn, and it is not sent to a server.

Playlist matching occurs locally. A user-selected request can play a matched or manually linked video; the request is removed when that linked playback finishes. The request overlay receives request/display text, artist/title, nickname, order, playback state/video ID and, where applicable, coin amount and album-art URL. Requester account IDs, general chat logs and entire playlists are not included. Donation cards and request overlays are delivered to the user's connected broadcast source over WebRTC, not stored in the Cloudflare signaling database. The broadcaster controls whether to make that output public.

SOOP card images are loaded directly from res.sooplive.com and static.file.sooplive.com. The optional channel-icon skin uses the saved channel ID to load its public profile image from stimg.sooplive.com without needing chat reception. These image providers process the network requests. Images are not stored or proxied by the SingLayer signaling service. SOOP features are not an official SOOP integration and may be affected by service changes.

9. Broadcast connections, local audio and fonts

When broadcasting is enabled, the service at lyricplayer-broadcast.skykpm.workers.dev processes random sender/receiver authorization keys and verification values, temporary connection IDs, and WebRTC signaling information such as SDP, ICE candidates and network/IP information. Keys authorize the connection and are not account passwords. The signaling service does not write keys, lyric content, chat or donation cards to an application database. Connection metadata is maintained for active WebSocket connections. Keep source URLs private: possession of a source URL grants access to its output.

Lyrics, annotations, song metadata, playback timing/state, selected display settings, audio-spectrum levels and enabled donation/request displays are sent directly to the connected browser source over a WebRTC data channel. Album artwork may be loaded directly from allowed YouTube/Google HTTPS image URLs. The signaling service does not proxy those images or relay original audio/video streams.

Pitch adjustment and audio-spectrum analysis process the current YouTube audio locally. Saved per-video pitch settings can be applied automatically when SingLayer is enabled. SingLayer does not capture microphone, screen or other applications' audio and does not save audio files or send original/processed audio through its servers or broadcast data channel. Turning pitch off stops the pitch DSP while keeping the local passthrough audio route.

Bundled fonts are shipped in the extension package, without requests to external font services. From version 0.4.226, lyric and song-information font selectors offer bundled fonts only. The extension no longer enumerates installed fonts or requests Local Font Access permission. Previously saved font names remain supported for compatibility and are stored as display preferences and sent to the broadcast source. No installed font list or font file contents are collected or transmitted. Users may revoke any earlier browser grant in Chrome settings.

10. Choices, retention and deletion

The Broadcast Tools window provides data-use/sharing settings and a separate button to delete all locally saved lyrics. That deletion clears local saved lyrics, readings/translations, lyric synchronization, lyric-search cache, unapplied lyric drafts and pending sharing retries; it does not delete playlists, display settings or shared server records. Replaying or searching again may retrieve shared server records again. Removing the extension or clearing its extension storage removes its local settings and saved data. Stopping a feature does not necessarily delete previously saved data.

Withdraw overall data-use consent to disable processing and stop new transmissions. Optional provider permissions and SOOP consent can be withdrawn separately. To request deletion or correction of shared service data, email skykpm@naver.com with the video URL/ID or song information and a description of the record. There is no user account tying a shared record to a person, so identifying information may be needed to locate it. Copies already obtained by other users cannot necessarily be recalled.

Third-party services receive network information such as IP address and request time and may process it in other countries. Their operational/security retention and legal obligations are governed by their policies, including the Cloudflare Privacy Policy. User-initiated support correspondence is used to answer the request and identify the relevant records.

11. Limited Use and changes

SingLayer's use and transfer of user data is limited to providing or improving its disclosed user-facing functions, consistent with the Chrome Web Store User Data Policy, including the Limited Use requirements. SingLayer does not sell user data or use it for personalized advertising, creditworthiness/lending decisions, or general-purpose AI model training. Human access by the operator is limited to permitted cases such as user-consented support/deletion requests, security investigations and legal obligations. Material changes will be disclosed and additional consent obtained where required.

한국어 개인정보처리방침

Automatic pronunciation review

Japanese readings and translations are displayed in validated batches while remaining lines are generated. Incomplete batches are temporary and are not saved as a completed song. Public pronunciation evidence may be fetched alongside generation without delaying the first display. In the background, SingLayer sends the current lyrics, generated readings and translations, song title and artist to its translation server for a second review. The server searches UtaTen using only the song title and artist, reads public pronunciation annotations, and applies corrections only when song identity, lyric text and reading boundaries can be verified. UtaTen receives requests from the server, not your browser cookies or account. Public-page matching does not send audio or make another Gemini generation request. The generation pipeline may make bounded Gemini retries to correct invalid pronunciation mappings or a confirmed meaning conflict. Web page HTML is not retained. Successfully parsed public song metadata, lyric text and pronunciation annotations may be reused in server memory for up to five minutes (at most 24 entries); this temporary cache contains no user-generated readings, translations or identifiers. Unavailable, conflicting or unmatched evidence leaves the generated readings unchanged. Verified readings are saved locally and shared only under the existing optional lyric-sharing setting and retention policy.

한국어 개인정보처리방침

로컬 가사 보관과 보호 (0.4.315)

영상별 가사·독음·번역·단어 싱크·싱크 보정값을 최대 5,000곡까지 기기에 보관합니다. 한도를 채운 상태에서는 보호하지 않은 오래된 가사부터 정리합니다. 직접 입력·수동 선택·직접 싱크 보정한 곡은 자동으로 보호하며, ‘내 자료 · 백업과 보관’에서 개별 보존 여부를 바꿀 수 있습니다. 모든 곡이 보호 중이면 기존 곡을 삭제하지 않고 새 곡을 보관하지 못했다는 안내를 표시합니다. 재생은 계속 사용할 수 있습니다. unlimitedStorage 권한은 이 로컬 자료가 Chrome의 기본 10MB 한도를 넘어 저장될 수 있도록 사용하며, 웹사이트 접근 범위나 선택적 공유 동의를 바꾸지 않습니다. 방송 도구의 ‘로컬 저장 가사 전체 삭제’에서 지울 수 있습니다.

작성일: 2026년 9월 13일 · 로컬 저장 안내 개정: 2026년 10월 9일 · 0.4.315

SOOP 채널 아이콘 (0.4.142부터, 선택 스킨)

채널 아이콘 스킨을 선택하면 공통 채널 설정에 저장한 SOOP 채널 ID로 공개 프로필 이미지를 표시합니다. 미리보기와 방송 브라우저 소스가 SOOP 이미지 서버(stimg.sooplive.com)에 직접 요청하며, 해당 서버는 IP 주소 등 통신 정보를 처리할 수 있습니다. 이미지 주소는 WebRTC를 통해 방송 소스로 전달하며 Cloudflare 서버에 프로필 이미지를 저장하거나 중계하지 않습니다. 로그인·쿠키 조회·후원 수신·채팅 수신은 필요하지 않습니다. 다른 스킨을 선택하면 새 프로필 이미지 표시 요청을 중단합니다.

SOOP 후원 보드 (선택 기능)

후원 보드에서 채널을 입력하고 별도 데이터 이용 안내에 동의하여 수신을 시작하면, 선택 권한으로 SOOP 공개 방송 정보를 조회하고 익명 읽기 전용 채팅 연결을 엽니다. 로그인·계정 연결·쿠키 조회를 하지 않으며 채팅이나 후원을 전송하지 않습니다. 수신 스트림에 포함된 일반 채팅은 저장하거나 목록으로 만들지 않습니다. 신청곡 기능을 별도로 켠 경우에는 아래 조건에 맞는 신청 명령만 처리합니다. 후원 이벤트에서 채널 일치 여부를 확인하고 닉네임·별풍선 수량·이미지 식별자·수신 시각을 카드 표시용으로 처리합니다. 후원자의 계정 ID는 카드 저장·송출에서 제외합니다.

채널 ID, 최소 수량, 행·열 수, 동의 여부는 이 기기에 저장합니다. 수신 활성 상태와 설정한 행·열 수에 따른 최대 100개 후원 카드는 Chrome 세션 저장소에 보관하며, 브라우저를 완전히 종료하면 사라집니다. ‘보드 비우기’나 채널 변경으로 카드를 삭제할 수 있습니다. 수집을 켠 상태에서는 방송이 꺼져 있어도 약 15~17초 간격으로 공개 방송 상태를 확인하여 시작 시 다시 연결합니다. 수신을 중지하거나 SOOP 선택 권한을 철회하면 새 연결·수집과 대기 확인을 중단합니다. 전체 데이터 사용 동의를 철회하면 후원 수신도 중지합니다.

송출을 켜면 카드 표시 정보는 연결된 브라우저 소스로 기존 WebRTC 데이터 채널을 통해 직접 전달됩니다. Cloudflare 연결 서버에 일반 채팅·후원 카드·이미지를 저장하거나 이미지 프록시로 중계하지 않습니다. 미리보기 및 방송 소스는 SOOP 이미지 서버(res.sooplive.com, static.file.sooplive.com)에 필요한 이미지 주소로 요청하며, 해당 서버는 IP 주소 등 통신 정보를 처리할 수 있습니다. 전용 소스 주소는 외부에 공개하지 마세요. 이 기능은 SOOP의 공식 제휴 기능이 아니며 서비스 변경으로 연결되지 않을 수 있습니다.

SOOP 신청곡 (0.4.119부터, 선택 기능)

별도 안내에 동의하고 신청곡 접수를 켜면, 일반곡 최소 개수가 0이면 후원 없이 !신청 명령을 접수합니다. 0보다 크면 설정 개수 이상 후원한 계정의 후원 메시지 또는 후원 후 15초 이내 !신청 명령을 후원 1회당 1곡으로 접수합니다. 어려운곡 개수는 안내용 표시입니다. 일반 채팅은 저장하지 않습니다. 후원 연결용 계정 ID와 시각은 짧은 접수 창 동안 메모리에서 확인하며, 접수된 곡 문자열·닉네임·계정 ID·신청 시각은 활성 목록 최대 100곡, 처리 상태를 포함한 세션 항목 최대 200개 범위에서 Chrome 세션 저장소에 보관합니다. 창을 닫아도 접수는 유지되며 Chrome을 완전히 종료하거나 채널을 변경하면 목록이 초기화됩니다. 개별 삭제, 접수 중지, 신청곡 동의 철회가 가능하며 동의 철회 시 신청곡 목록도 삭제합니다. 오삭제 복원을 위해 마지막 삭제 신청곡과 원래 순서·실행 취소 식별값을 서비스 실행 메모리에 최대 30초 보관합니다. 실행 취소로 복원하거나 다음 삭제로 대체되며, 목록 초기화·세션 변경·동의 철회 뒤에는 복원할 수 없습니다. 이 복구 정보는 서버에 전송하지 않습니다.

저장된 플레이리스트와의 비교는 기기 안에서 처리합니다. 사용자가 목록을 더블클릭하면 일치하는 저장 영상의 YouTube 페이지를 열고 재생 종료를 확인하면 해당 신청을 삭제합니다. 저장 영상이 없는 곡은 내부 YouTube 검색에서 사용자가 영상을 연결할 수 있습니다. 송출 시 신청곡 문자열·표시용 제목과 아티스트·닉네임·순서·재생 상태·영상 ID, 해당하는 경우 노래책 코인 수와 앨범아트 주소를 별도 브라우저 소스로 WebRTC를 통해 직접 전달합니다. 계정 ID·일반 채팅·전체 플레이리스트를 송출하거나 Cloudflare에 저장하지 않습니다. 신청곡 표시를 끄거나 전체 송출 연결을 중지할 수 있습니다.

내 자료 백업과 복원

사용자가 요청하면 저장 가사·독음·번역·단어 싱크·싱크 보정, 플레이리스트와 음정, 노래책 연결·숨김·개인 설정, 영상별 스타일과 표시 설정을 JSON 파일로 내보냅니다. 송출주소·연결 키·데이터 이용 동의·실시간 신청곡과 후원 목록·작성 중인 초안·검색 캐시는 포함하지 않습니다. 백업·복원 과정에서 파일을 서버로 업로드하지 않습니다. 복원 전에 추가·충돌 항목을 확인하고 적용할 부분을 선택하며, 기본은 현재 자료를 유지합니다. 충돌 항목 교체를 선택해도 백업에 없는 현재 자료를 일괄 삭제하지 않습니다. 다운로드한 파일은 사용자가 저장한 위치에 남으며 확장 저장소를 지워도 자동 삭제되지 않습니다.

송출 대상 탭 고정은 현재 Chrome 세션에 보관합니다. 해당 탭을 닫거나 영상 페이지에서 나가면 고정을 해제합니다.

작성 중인 가사 초안

직접 입력 중인 제목·아티스트·가사 원문, 영상 ID, 편집 시각과 원문 변경 확인값을 로컬 확장 저장소에 보관합니다. 영상별 1개씩 전체 최대 20개이며 마지막 편집 후 30일이 지나면 만료됩니다. 만료된 초안은 해당 초안을 다시 읽거나 새 초안을 저장할 때 정리하며, 한도를 넘기면 오래된 초안부터 삭제합니다. 초안은 사용자가 복원을 선택할 때 편집란에만 채워지고 자동으로 가사를 적용하거나 번역·서버 전송을 시작하지 않습니다. 해당 내용을 적용하거나 ‘버리기’를 선택하면 그 초안을 지우며, ‘로컬 저장 가사 전체 삭제’는 초안도 함께 삭제합니다.

직접 담는 플레이리스트

플레이리스트에 추가 버튼을 누른 영상의 ID, 제목, 아티스트, 원래 영상 제목, 길이, 추가 시각과 영상별로 선택한 음정 값을 이 브라우저의 확장 저장소에 저장합니다. 재생한 영상이 자동으로 추가되지는 않으며 플레이리스트를 SingLayer 서버로 보내거나 다른 기기에 동기화하지 않습니다. 목록에서 개별 삭제하거나 확장 저장소를 지워 삭제할 수 있습니다. 목록의 썸네일을 표시할 때 해당 영상 ID로 YouTube 이미지 서버(i.ytimg.com)에 요청하며, 곡을 클릭하면 YouTube 영상 페이지를 엽니다.

삭제 실수를 되돌릴 수 있도록 마지막으로 삭제한 항목의 정보, 기존 위치·이웃 영상 ID, 삭제 시각과 실행 취소 식별값을 로컬에 1건 보관합니다. 실행 취소는 삭제 후 30분 동안 가능하며, 다음 삭제로 대체하거나 복원 후 지웁니다. 만료된 기록은 다음 조회 때 정리합니다. 이 복구 기록은 서버로 보내거나 기기 간 동기화하지 않으며 확장 저장소를 지워 삭제할 수 있습니다.

반주 음정 조절 Pitch (선택 기능)

사용자가 Pitch를 켜면 YouTube 영상의 오디오를 기기 안에서 직접 처리하여 재생 속도 변경 없이 음정을 조절합니다. 플레이리스트에 원키가 아닌 음정을 직접 저장하면 SingLayer가 켜진 상태에서 해당 영상을 재생할 때 자동으로 적용합니다. Chrome 도구모음 클릭이나 탭 캡처 권한은 필요하지 않습니다. 마이크·화면·다른 프로그램의 소리를 캡처하지 않으며, 음원 파일을 저장하거나 원본·처리된 오디오를 서버 또는 방송 데이터 채널로 보내지 않습니다.

선택한 음정 값은 확장 저장소에 보관합니다. 현재 영상의 활성 상태와 직접 OFF로 바꾼 선택은 Chrome 세션 안에서 유지하며, 다른 영상에서는 그 영상에 저장한 음정 또는 원키로 시작합니다. OFF는 피치 DSP를 종료하고 원음을 통과시키는 오디오 연결만 유지합니다. 같은 영상의 새로고침·일시정지는 복원할 수 있고, 브라우저가 재생을 제한하면 영상 안의 버튼을 눌러 다시 시작할 수 있습니다. 광고는 원키로 처리합니다. 음정 조절을 켜지 않아도 가사 기능을 사용할 수 있습니다.

운영 및 문의

운영 주체: SingLayer 운영자
문의·정정·삭제 요청: skykpm@naver.com

SingLayer는 YouTube 음악의 가사 검색·표시·싱크 보정 및 방송용 브라우저 소스 출력을 제공합니다. 계정 가입이나 광고 추적 기능은 없습니다.

읽고 저장하는 정보

사용자가 안내에 동의하고 SingLayer를 켰을 때 현재 YouTube 영상의 제목, 아티스트·채널 정보, 영상 ID, 재생 위치·길이·재생 상태를 읽습니다. 사용자 입력 검색어, 선택하거나 입력한 가사, 독음·번역, 싱크 보정과 표시 설정을 처리합니다. 다른 웹사이트의 방문 기록이나 YouTube 계정·쿠키·비밀번호를 수집하는 기능은 없습니다.

설정, 선택한 최근 곡·가사·번역·싱크, 검색 캐시, 공유 재시도 항목, 동의 상태와 송출 연결 키는 Chrome 확장 저장소에 보관됩니다. 검색 결과의 재사용 유효기간은 24시간이며 항목 수와 용량을 제한합니다. 최근 곡과 설정은 사용자가 확장을 삭제하거나 확장 저장소를 지울 때까지 보관됩니다.

내장 폰트와 기존 설정

0.4.226부터 가사·곡정보에서는 내장 폰트만 새로 선택할 수 있습니다. PC 설치 폰트 목록을 조회하거나 로컬 글꼴 접근 권한을 요청하지 않습니다. 내장 폰트는 확장 패키지에 포함되며 외부 폰트 서비스에서 내려받지 않습니다.

이전 버전에서 저장한 폰트 이름은 기존 표시를 유지하기 위해 계속 지원합니다. 선택한 이름은 표시 설정으로 기기에 저장하고 송출 소스에 전달하며, 설치 폰트 목록이나 PC 폰트 파일 내용은 수집·전송하지 않습니다. 과거 허용한 로컬 글꼴 접근 권한은 Chrome 설정에서 해제할 수 있습니다.

외부 전송과 제공받는 곳

  • LRCLIB·NetEase·QQ Music·Kugou: 가사 검색에 제목·아티스트 검색어를 보내며, NetEase·QQ Music·Kugou에는 곡 식별자를 보내며, 필요한 경우 곡 길이와 앨범 정보도 보냅니다. HTTPS로 계정 쿠키 없이 요청하고 QRC·KRC 해석은 기기에서 수행합니다. 음원은 내려받거나 전송하지 않습니다.
  • SingLayer 서버(Cloudflare Workers·KV): 기존 가사 조회에 제목·아티스트·영상 ID, 검색 가사의 독음·번역 조회에 가사 원문을 보냅니다. 공유를 선택하면 검색 가사·번역·곡 정보·영상 ID·싱크 보정 및 수정 시각을 저장하고 다른 사용자에게 제공합니다. 공유가 켜진 상태에서 직접 작성·수정하여 적용한 동기 가사도 독음·번역·곡 정보·타이밍과 함께 영상 ID별로 저장·공유합니다. 과거 로컬 가사는 일괄 업로드하지 않습니다.
  • Google Gemini API: 0.4.190부터 시작 안내에서 자동 가사 연결·번역 생성에 동의하면 저장된 결과가 없는 일본어·영어 가사를 자동 생성합니다. 사용자가 번역 새로 생성 버튼을 누른 경우에도 SingLayer 서버가 가사 원문·곡 정보를 Google에 전송합니다. 직접 입력한 가사도 포함됩니다. 일본어는 독음과 한국어 번역을, 영어는 독음 없이 한국어 번역만 생성합니다. 영상 ID는 SingLayer 서버의 조회에 사용하며 Gemini 생성 프롬프트에는 포함하지 않습니다. 민감한 개인정보나 비공개 정보를 가사 입력란에 넣지 마세요.
  • Apple iTunes: 사용자가 추가 검색을 선택하고 해당 사이트 권한을 허용한 경우 곡 정보 검색어를 전송합니다.
  • MusicBrainz (0.4.94부터 선택 기능): ‘MusicBrainz로 곡 정보 추가 확인’을 직접 켜고 선택 권한을 허용한 경우, 기존 검색으로 곡을 확인하지 못했을 때 정리된 곡명·아티스트 검색어를 MusicBrainz 공식 API에 직접 전송합니다. 가사 전문·오디오·영상 ID는 보내지 않으며, 로그인·쿠키를 사용하지 않습니다. 요청에는 SingLayer 이름·버전과 운영자 문의 이메일을 앱 식별 정보로 보냅니다. Chrome 선택 권한 declarativeNetRequestWithHostAccess는 SingLayer 자신이 musicbrainz.org의 곡 검색 주소로 보내는 GET 요청에 이 식별 헤더를 설정하는 데만 사용하며, 다른 사이트나 일반 탭의 요청을 변경하지 않습니다. MusicBrainz 요청은 기기 내에서 1.1초 이상 간격을 두며, 성공한 검색 결과는 최대 24시간, 빈 결과는 5분 동안 재사용합니다. 곡명·가수·곡 ID·길이로 제한된 캐시는 최대 64건을 로컬에 보관하며 오디오·가사 전문은 저장하지 않습니다. 설정 체크를 끄거나 Chrome에서 해당 선택 권한을 철회하면 새 조회를 중단합니다. 캐시는 확장 저장소를 지우거나 확장을 삭제해 제거할 수 있습니다. 제공받은 곡 정보는 기존 가사 검색과 검증에 사용합니다. MusicBrainz API · 데이터 이용 안내
  • 방송 연결: 사용자가 송출을 연결하면 Cloudflare 서버가 무작위로 생성한 송출·수신 인증 키와 그 검증값, 임시 연결 식별자, WebRTC 연결 정보(SDP·ICE 및 IP 주소 등 네트워크 정보)를 처리합니다. 연결된 브라우저 소스에는 가사·번역·곡 정보·재생 타이밍·표시 설정과 비주얼라이저 막대값을 WebRTC 데이터 채널로 보냅니다. 앨범아트는 YouTube·Google 이미지 서버의 허용된 HTTPS 주소로 미리보기와 방송 소스가 직접 요청할 수 있습니다. 인증 키는 연결 권한 확인에 사용하며 가사·채팅 본문과 함께 서버 데이터베이스에 기록하지 않습니다. 원본 음성·영상 스트림은 송출 데이터 채널로 전송하지 않습니다. 비주얼라이저의 음성 분석은 브라우저 안에서 수행합니다.

각 서비스는 네트워크 통신에 필요한 IP 주소·접속 시각 등을 처리할 수 있습니다. 외부 서비스의 처리 국가 및 보안·법적 보관에는 각 서비스의 정책이 적용됩니다. Google Gemini는 활성 결제 계정이 연결된 API 프로젝트로 이용합니다. 유료 서비스 약관상 입력과 응답은 Google 제품·모델 개선에 사용되지 않습니다. 무료 사용량 범위 안에서 이용하더라도 해당 프로젝트의 서비스 조건이 기준이며, 안전·오남용 방지 및 법적 처리는 Google 약관에 따릅니다. Gemini API 약관 · Cloudflare 개인정보처리방침

독음 자동 검수

일본어 독음·번역은 검증된 묶음부터 표시하며 나머지 줄을 이어서 생성합니다. 미완성 결과는 임시 표시만 하고 완성된 곡으로 저장하지 않습니다. 공개 발음 자료 조회는 생성을 기다리게 하지 않고 함께 진행할 수 있습니다. 이후 현재 가사·생성된 독음·번역·곡명·가수를 SingLayer 번역 서버에 보내 백그라운드에서 추가 검수합니다. 서버는 곡명·가수만으로 UtaTen을 검색하고 공개 발음 자료를 확인합니다. 곡 정보·가사 본문·독음 대응 구간이 일치하는 부분만 보정합니다. 사용자의 브라우저 쿠키·계정이나 오디오를 보내지 않으며 공개 페이지 대조는 Gemini를 다시 호출하지 않습니다. 생성 과정에서는 잘못된 독음 대응이나 확인된 의미 충돌을 보완하기 위해 횟수가 제한된 Gemini 재시도를 수행할 수 있습니다. 웹 페이지 HTML은 보관하지 않습니다. 성공적으로 읽은 공개 곡 정보·가사·발음 표시는 서버 메모리에서 최대 5분간, 24개 항목까지 재사용하며, 이 임시 캐시에는 사용자의 생성 독음·번역·식별자를 넣지 않습니다. 조회 실패·자료 충돌·불일치 시 생성된 독음을 유지합니다. 검증된 독음은 로컬에 저장하며 별도 가사 공유 설정과 기존 보관 정책에 따라 공유합니다.

일본어 발음 자료 확인

일본어 독음 생성 시 곡명·가수·길이로 QQ Music·NetEase의 발음 트랙을 확인할 수 있습니다. 곡과 가사 본문을 대조한 발음 자료만 원문과 함께 SingLayer 번역 서버 및 Gemini에 전송합니다. 자료끼리 발음이 다르면 확정된 가창 독음으로 취급하지 않습니다. 조회 결과는 기기에 최대 12건·24시간 보관하며 로컬 가사 검색 캐시 또는 확장 데이터를 삭제하면 제거됩니다. 이 확인을 위해 오디오를 캡처하거나 전송하지 않습니다.

노래방 독음 싱크 보강

제공자의 YRC·QRC·KRC 글자별 타이밍이 있는 가사에서 노래방을 켜면, 자동 번역 설정에 따라 일본어 원문과 기존 한글 독음을 SingLayer 서버를 통해 Gemini에 보내 대응 구간을 보강할 수 있습니다. 기존 문구와 제공자 타이밍을 유지하며 오디오를 분석하거나 전송하지 않습니다. 검증한 대응 정보는 기기에 저장하고, 제공자 가사 공유에 동의한 경우에만 90일 만료로 공용 캐시에 저장합니다. 저장된 대응 정보는 새 생성 없이 조회할 수 있습니다.

공유, 보관 및 삭제

0.4.190부터 자동 가사 연결·번역 생성은 시작 안내에서 동의한 뒤 기본으로 동작합니다. 이전 버전에서 자동 번역을 선택하지 않은 사용자는 새 안내에 동의하기 전까지 기존 선택을 유지합니다. 가사·싱크 공유는 별도 선택 사항이며 처음에는 선택되지 않습니다. 공유를 끄면 새 공용 가사 업로드를 중지하고, 번역 요청에 공용 캐시 저장 안 함을 전달합니다. 개인 싱크 보정은 로컬에 저장되며, 공유가 켜져 있으면 마지막 조정 후 대기 시간을 두고 서버에도 반영합니다. 수동 검색으로 선택한 제공자 가사와 해당 영상의 싱크도 공유 대상입니다. 이미 전송 중인 요청이나 다른 사용자에게 전달된 자료까지 회수하는 것은 아닙니다.

새 공용 가사·번역·싱크 자료는 서버 저장 또는 갱신 후 90일로 만료 시간을 설정합니다. 이전 개발 버전에서 만료 없이 저장한 싱크 자료는 별도 정리 전까지 남을 수 있습니다. 연결 서버는 가사 전문을 영구 저장하는 용도로 사용하지 않습니다. 서비스 제공자의 운영·보안 기록에는 해당 제공자의 보관 정책이 적용됩니다.

방송 도구의 ‘데이터 사용·공유 설정’에서 선택 변경 및 동의 철회를 할 수 있습니다. 철회하면 확장 작동과 새 정보 전송을 중지합니다. ‘로컬 저장 가사 전체 삭제’는 이 기기의 저장 가사·독음·번역·싱크·가사 검색 캐시·작성 중인 초안·공유 재시도 자료를 비우며, 플레이리스트·표시 설정·서버 자료까지 삭제하지 않습니다. 이후 다시 재생하거나 검색하면 서버 자료가 다시 연결될 수 있습니다. 기존 서버 자료 삭제는 문의 이메일로 영상 URL 또는 영상 ID·곡명과 요청 내용을 보내 주세요. 로그인 계정과 연결된 데이터가 아니므로 해당 자료를 식별하는 정보가 필요할 수 있습니다. 방송 소스에 입력한 주소도 외부에 공개하지 마세요.

이용 제한 및 변경

SingLayer는 사용자 데이터를 광고·판매·신용 평가에 사용하지 않으며, 명시된 가사·번역·방송 기능 제공을 위해서만 이용·전송합니다. Chrome Web Store 사용자 데이터 정책과 Limited Use 요건에 따라 공개된 기능 제공·개선에 필요한 범위로 이용과 전송을 제한합니다. 사용자 데이터를 맞춤 광고 또는 범용 AI 모델 학습에 이용·판매하지 않습니다. 운영자의 사용자 데이터 열람은 사용자가 동의한 지원·삭제 처리, 보안 조사, 법적 의무 등 허용된 경우로 제한합니다. 중대한 정보 이용 변경 시 안내를 갱신하고 필요한 동의를 다시 받습니다.

YouTube 영상 검색 (선택 기능)

신청곡의 영상을 찾거나 노래책 곡을 연결할 때 YouTube Data API Services를 사용합니다. 화면에 표시된 곡명·가수·inst 등의 검색어와 다음 페이지 토큰을 SingLayer 검색 서버에 보내며, 서버는 이를 Google YouTube Data API로 전달합니다. 신청자 계정 ID·닉네임이나 채팅 전체는 검색 요청에 포함하지 않습니다. 결과에서 영상 ID·제목·채널·길이를 받아 표시하며 썸네일은 YouTube 이미지 서버에서 직접 읽습니다. Google 계정 로그인이나 OAuth 권한은 요청하지 않습니다.

같은 검색 결과는 확장 메모리 최대 32건, 검색 서버 메모리 최대 100건에서 10분 동안 재사용합니다. 검색어와 검색 결과를 이 경로로 가사 KV에 저장하지 않습니다. 과도한 검색 방지를 위해 서버에서 IP별 요청 수를 1분 단위로 계산하며, 만료 항목은 후속 요청 또는 실행 환경 정리 시 폐기됩니다. 사용자가 연결한 영상 정보는 신청곡 세션이나 로컬 플레이리스트·노래책에 남을 수 있으며 해당 목록의 삭제 방법을 따릅니다.

YouTube 검색 기능을 사용하면 YouTube 서비스 약관을 따릅니다. Google의 처리는 Google 개인정보처리방침에 따릅니다. YouTube 페이지 자체의 쿠키·광고·로그인은 YouTube가 별도로 관리하며 SingLayer는 계정 비밀번호나 인증 쿠키를 읽지 않습니다.

꾸름달 노래책 (선택 기능)

플레이리스트에서 꾸름달 노래책을 처음 연결하거나 갱신하면, 선택 권한 reumdal.songlist.cloud를 통해 공개 노래책의 곡 ID·가수·제목·코인 수를 읽습니다. 로그인·쿠키·연동 키를 사용하지 않습니다. 현재 목록과 사용자가 고른 영상 연결은 이 기기의 Chrome 확장 저장소에 보관하며 서버에 업로드하지 않습니다. 내 목록에서 숨긴 곡의 식별 기록은 로컬에 저장되어 갱신 후에도 유지되며, ‘⋯ → 숨긴 곡 → 복원’으로 다시 표시할 수 있습니다. 숨기거나 삭제된 곡의 수동 영상 연결과 음정은 복원 시 재사용할 수 있도록 로컬에 보관됩니다. 확장 저장소를 지우거나 확장 프로그램을 제거하면 삭제됩니다.

기존 곡은 패키지에 포함된 영상 연결 자료를 사용하며, 전체 노래책을 YouTube에서 다시 검색하지 않습니다. 새로 추가된 미연결 곡을 확인하거나 사용자가 검색 버튼을 누르면 곡명·가수 검색어를 기존 가사 제공자 및 SingLayer 검색 서버를 통한 YouTube Data API에 전송합니다. 검색 결과의 썸네일은 YouTube 이미지 서버에서 읽습니다. 선택한 수동 연결은 자동 갱신이 덮어쓰지 않습니다. 노래책에서 곡을 확실하게 식별할 수 있는 신청곡의 코인 수는 기존 신청곡 송출에 함께 표시될 수 있습니다. 노래책 전체나 수동 연결 목록 자체를 방송 서버에 보내지 않습니다.

현재 영상 CC 가사

현재 YouTube 영상에 등록된 자막 목록을 확인합니다. 자동 생성 자막은 가사 후보에서 제외하며, 언어·타이밍·본문 검증을 통과한 등록 자막은 자동 가사 검색에서 우선 사용할 수 있습니다. 수동 선택도 가능합니다. 자막을 가져오는 동안 플레이어의 자막 언어와 표시 상태를 잠시 변경한 뒤 복구할 수 있습니다. 영상·음성 파일을 다운로드하지 않습니다.

연결한 CC와 싱크는 해당 영상 ID에 묶어 로컬에 저장합니다. 가사·싱크 공유가 켜져 있으면 자막 본문·시간·영상 ID·곡 정보가 기존 SingLayer 서버의 KV에 전송되어 다른 사용자가 같은 영상에서 재사용할 수 있으며 기존 90일 보관 정책이 적용됩니다. 다른 영상의 곡명 검색용으로는 저장하지 않습니다. 독음·번역은 기존 자동 번역 및 공유 설정을 따릅니다. 로컬 저장 가사 삭제 및 데이터 사용·공유 설정에서 관리할 수 있습니다.