개인정보처리방침
24시 마법의 라디오(FM 77.7)는 회원가입이 없고, 이름이나 연락처를 묻지 않아요. 그래도 사연을 보내면 몇 가지 정보가 오가요. 무엇이 어디로 가는지 여기 적어 둘게요.
운영자: 유재영
1. 보낸 사연
보내기를 누르면 사연 글자가 라디오 서버(Vercel에서 동작)로 전송되고, 대답을 정하려고 Vercel AI Gateway를 거쳐 TypeSafe AI의 판정 모델(Jev)로 전달돼요. 예, 아니요로 답하기 어려운 사연이면 바꿔 물을 질문을 제안하려고 사연이 Vercel AI Gateway를 거쳐 Microsoft Azure의 OpenAI 모델로도 가요(무보존). 대답은 여전히 판정 모델이 정해요. 판정만 받은 사연은 라디오 운영자가 데이터베이스나 파일로 따로 모아 두지 않아요. 엽서의 ‘방송에서 읽어 주세요’(처음부터 켜져 있어요)를 켠 채 보냈거나 판정 뒤 ‘방송에 보내기’를 누른 사연만 방송을 위해 저장해요(6장).
라디오는 모든 판정 요청에 무보존 조건(Zero Data Retention)을 켜서 보내요. 그래서 Vercel AI Gateway는 판정이 끝나면 사연과 결과를 바로 지우고, TypeSafe AI는 대답을 만드는 데 필요한 동안만 사연을 처리하며 사연으로 AI를 학습시키지 않아요. 법에 따라 보관해야 하는 경우는 예외예요.
엽서의 ‘보내는 사람’(적지 않아도 돼요, 8자까지)은 사연과 함께 라디오 서버로 가고, 판정 결과와 함께 서명되어 공유 링크에 실려요. 방송에 보내면 방송에서도 읽혀요(6장). 비워 두면 이 기기에 처음 한 번 무작위로 정해 둔 네 자리 ‘뒷자리 번호’(전화번호와 상관없음)를 대신 쓰고, 이 번호도 이름처럼 서명되어 공유 링크와 방송에 실려요. 적은 이름과 번호는 다음에 다시 쓰도록 이 기기에만 기억해요.
사연과 보내는 사람에는 실명, 전화번호, 주소처럼 누군가를 알아볼 수 있는 내용을 적지 말아 주세요.
2. 목소리
‘말로 하기’는 브라우저에 들어 있는 음성인식 기능을 써요. Chrome과 삼성 인터넷은 Google, Safari는 Apple의 음성인식 서버로 음성을 보내 글자로 바꿔요. 라디오는 녹음 파일을 받지 않고, 바뀐 글자만 사연으로 써요. 마이크 권한은 버튼을 누를 때만 요청해요.
3. 접속 기록
웹 호스팅 회사(Vercel)는 서비스를 돌리고 공격을 막으려고 IP 주소, 브라우저 종류, 요청 시각 같은 접속 기록을 자동으로 남겨요. 과도한 사연 요청과 운영자 로그인 시도를 막는 데에도 IP 주소가 쓰여요. 요청 횟수는 IP 주소를 비밀 키로 바꾼 값(HMAC), 요청 종류, 시간 구간과 함께 서버에 남겨요. 이 횟수 기록에는 사연 글자나 원래 IP 주소를 담지 않고, 최대 2일 뒤 삭제 대상으로 지정해 정기 정리 때 지워요. 사연이 주소의 ? 뒤에 들어간 주소(예: 앱 안에서 외부 브라우저로 열기)로 들어오면, 그 주소도 접속 기록에 함께 남아요.
라디오를 켜 두면 지금 함께 듣는 사람 수를 세려고 1분마다 신호를 보내요. 신호에는 새로고침할 때마다 새로 만드는 무작위 번호만 들어가요. 서버(Supabase, 서울)에는 그 번호, 마지막 신호 시각, 그리고 IP 주소를 라디오만 아는 비밀 키로 바꾼 값을 두었다가 10분 안에 지워요. 이 값은 한 사람이 숫자를 부풀리지 못하게 막는 데만 쓰고, IP 주소 자체는 저장하지 않아요.
화면을 그리려고 글꼴은 Google Fonts(Google LLC, 미국)에서, 3D 라디오 부품은 jsDelivr CDN에서 받아 와요. 이때 브라우저가 IP 주소와 브라우저 정보를 두 곳에 보내요. 사연은 보내지 않아요.
4. 공유 링크와 이미지
- 공유 링크에는 사연과 라디오가 들려준 대답(위조 방지 서명 포함)이 주소의 # 뒤에 담겨요. 링크를 열면 라디오가 바로 사연과 서명을 서버로 보내 확인하고, 같은 대답을 준비해 둬요. 서명이 없거나 맞지 않으면 그 자리에서 새로 판정해요. 링크를 받은 사람, 그리고 링크가 지나가는 메신저나 SNS는 사연을 볼 수 있어요.
- 링크로 들어오면 라디오는 주소창에서 사연을 바로 지워요. 분석 도구나 광고 쪽으로는 사연을 보내지 않아요.
- ‘이미지 저장’의 스토리 이미지는 기기 안에서 만들어지고, 서버로 보내지 않아요.
5. 엽서가 도착하는 시각
방송에 보낼 때 계신 곳에서 서울 방송국까지의 대략적인 거리를 계산해 방송 자리를 정해요. 이때 쓰는 위치는 브라우저에 위치 권한을 묻지 않고, 접속하신 통신 경로를 보고 배달망(Vercel)이 요청에 함께 실어 주는 대략적인 좌표예요. 도시 수준이라 정확한 주소는 알 수 없어요.
이 좌표는 거리(킬로미터)를 계산하는 그 순간에만 쓰고, 계산이 끝나면 버려요. 저장하지 않고, 기록에 남기지 않고, 사연과 함께 묶지도 않아요. 기기에는 배정된 방송 날짜와 시간, 자리 번호가 남고 좌표나 거리는 남기지 않아요. 위치를 알 수 없으면 기본값으로 계산해요.
6. 방송에 보낸 사연
엽서의 ‘방송에서 읽어 주세요’를 켠 채 보내거나(처음부터 켜져 있어요) 판정 화면에서 ‘방송에 보내기’를 누르면, 그 사연이 방송국 검수를 거쳐 FM 77.7 방송에서 모두에게 읽혀요. 끈 채 보내고 버튼도 누르지 않으면 아무것도 저장하지 않아요.
- 무엇을 남기나요 사연 글자, 보내는 사람 이름(적은 경우)이나 뒷자리 번호, 라디오가 낸 판정, DJ가 덧붙인 한마디, 만든 목소리 파일, 방송 시각, 신고 수, 그리고 보낸 곳을 가리는 값이에요. 이 값은 접속 IP 주소를 라디오만 아는 비밀 키로 바꾼 것이고, 한 사람이 하루에 보낼 수 있는 수를 세고 같은 사람이 여러 번 신고하는 걸 막는 데만 써요. IP 주소 자체는 저장하지 않고, 운영자는 이 값으로 사람을 찾지 않아요.
- 누가 듣나요 그 시간에 라디오를 켠 모든 사람이 듣고, 화면에서 사연 글자를 봐요. 방송이 나간 뒤 7일 동안은 ‘방송 다시 듣기’로 그 사연의 방송분(목소리)을 다시 들을 수 있어요. 엽서에 적은 보내는 사람 이름이 같이 나가고, 비워 두면 보낸 기기의 네 자리 뒷자리 번호가 나가요. 연락처는 나가지 않아요.
- 검수 모두가 듣는 방송이라 판정보다 기준이 엄격해요. 보내면 TypeSafe AI의 판정 모델(Jev)과 OpenAI의 모더레이션이 방송에 실어도 되는 사연인지 자동으로 살펴요. 보내는 사람 이름도 모더레이션을 거치고, 걸리면 이름 대신 뒷자리 번호로 나가요. 욕설, 누군가를 알아볼 수 있는 내용, 광고처럼 싣기 어려운 사연은 싣지 않아요. 왜 안 실렸는지는 따로 알려 드리지 않아요.
- 어디서 만드나요 DJ가 사연 앞뒤로 하는 인사와 사연을 읽은 뒤의 이야기는 Microsoft Azure의 OpenAI 모델이 무보존 조건으로 쓰고, 목소리는 fal.ai가 만들어요. 대답 문장은 AI가 쓰지 않고, 화면에서 보신 판정을 그대로 읽어요. 목소리 파일은 Cloudflare R2에, 사연 목록은 Supabase 데이터베이스(한국 서울 리전)에 둬요.
- 얼마나 두나요 배정된 방송 시각으로부터 7일이 지나면 사연 글자와 목소리 파일이 삭제 대상이 돼요. 싣지 못했거나 방송 전에 내려간 사연은 거절되거나 내려간 시각부터 하루 뒤에 삭제 대상이 돼요. 정기 정리 때 사연을 지우고 파일 삭제를 처리해요. 저장소 장애로 파일을 바로 지우지 못하면 삭제할 파일을 가리키는 식별값만 남겨 재시도해요. 이 재시도 기록에 사연 글자나 이름은 담지 않아요.
- 내리고 싶으면 방송을 들은 서로 다른 세 사람이 신고하면 바로 내려가요. 신고로 내려간 사연은 운영자가 들어 보고 잘못 내려갔으면 복구할 수 있게 목소리 파일을 이틀 동안 남겨 둔 뒤 삭제를 요청해요. 복구하면 새 방송 시각에 그 시간 DJ 목소리로 다시 만들고, 신고된 목소리 파일은 삭제를 요청해요. 신고는 그 사연이 방송되는 시간에만 받아요. 보낸 분이 내리고 싶으면 사연 글자를 적어 아래 문의처로 알려 주세요. 운영자도 수시로 살펴 바로 내려요. 내리면 새 방송 목록에서 바로 빠지고 목소리 파일 삭제를 요청해요. 파일 삭제가 실패하면 정기 정리 때 다시 시도하므로 완료까지 더 걸릴 수 있어요. 다만 이미 방송을 들은 사람의 기억이나 기기에 남은 것은 되돌릴 수 없어요.
7. 기기 안에 남는 것
‘내가 보낸 엽서’ 기록은 브라우저 저장소(localStorage)에 남아요. 사연 글자, 보내는 사람 이름이나 뒷자리 번호, 판정 결과와 원래 대답을 확인하는 서명, 방송 신청 권한을 확인하는 값, 방송 자리와 방송에 나갔는지, 보낸 시각이 들어가요. 최대 30개를 보관하고, 보낸 지 7일이 지난 기록은 다음에 라디오를 열 때 지워요. 기록 목록 자체는 서버로 보내지 않고 운영자도 볼 수 없어요. 기록을 다시 여는 데에는 서버 요청이 필요 없어요. 그 사연을 공유하거나 방송에 보내면 해당 사연과 서명 등 필요한 값이 전송돼요. 남에게 보이기 싫으면 목록 옆 ‘기록 지우기’를 누르거나 브라우저 저장소를 비우면 돼요. 여러 사람이 같이 쓰는 기기라면 기록이 그대로 보이니 조심해 주세요. 마음이 많이 힘든 사연은 애초에 기록하지 않아요.
방송에 보낸 사연은 몇 시 방송인지와 방송에 나갔는지도 같은 기록에 남아요. 라디오를 껐는지 켰는지, 음량을 얼마로 맞춰 뒀는지, 책상 위 큐브를 어디까지 돌려 뒀는지, 엽서의 보내는 사람 이름과 이 기기의 뒷자리 번호도 같은 저장소에 한 줄씩 남겨요. 다음에 왔을 때 그 상태를 지키려고 쓰는 값이고, 그것 말고는 아무것도 담지 않아요.
8. 쿠키, 분석 도구, 광고
| 항목 | 지금 | 켜면 달라지는 점 |
|---|---|---|
| 운영자 로그인 쿠키 | 스튜디오 로그인에만 써요 | 로그인 유지용 HttpOnly·Secure 쿠키가 최대 12시간 남아요. 일반 청취자에게는 발급하지 않아요. 로그아웃하면 지워요. |
| Google Analytics 4 | 꺼져 있어요 | 방문 수와 사용 흐름(사연을 보냈는지, 판정 구간, 공유 방법)을 재려고 _ga 쿠키를 써요. 사연 글자는 보내지 않고, Google 신호와 광고 개인화는 꺼 둬요. |
| 광고 (Google AdSense 또는 카카오 AdFit) | 꺼져 있어요 | 광고 회사가 광고를 고르고 부정 클릭을 막으려고 쿠키나 기기 정보를 쓸 수 있어요. 맞춤형 광고라면 방문 기록 같은 행태정보가 처리돼요. |
분석 도구나 광고를 켜기 전에 이 방침을 먼저 고쳐서, 어떤 회사가 무엇을 처리하는지 적어 둘게요. 쿠키를 원하지 않으면 브라우저 설정에서 쿠키를 차단하면 돼요. 이 경우에도 라디오는 그대로 쓸 수 있어요.
9. 국외 이전
사연을 보내거나 방송에 보내면 아래처럼 해외 서버에서 처리될 수 있어요. 원하지 않으면 사연을 보내지 않으면 돼요. 이 경우 대답을 들을 수는 없어요.
| 받는 곳 (연락처) | 국가 | 항목 | 목적 | 보관 기간 |
|---|---|---|---|---|
| Vercel Inc. (호스팅, AI Gateway) privacy@vercel.com | 미국 (서비스 지역은 서울 리전) | 사연 글자, 접속 기록 | 서비스 제공, 보안 | 사연: AI 요청이 끝나면 바로 삭제(무보존) 접속 기록: 운영자 화면 기준 1일 (Vercel 내부 보관은 Vercel 정책을 따름) |
| TypeSafe AI, Inc. (판정 모델) privacy@typesafe.ai | 미국 | 사연 글자 | 예, 아니요 판정, 방송 검수 | 대답을 만드는 동안만 (법적 의무가 있으면 예외) |
| Microsoft Corporation (Azure의 OpenAI 모델, Vercel AI Gateway 경유) privacy.microsoft.com | 미국 회사, 처리 지역은 Vercel AI Gateway가 정함 | 사연 글자 | 방송 사연 앞뒤 인사와 DJ 이야기, 바꿔 물을 질문 제안 | 무보존 조건으로 만드는 동안만 |
| fal.ai (Features & Labels, Inc.) fal.ai/privacy | 미국 | 사연 글자, DJ 인사 | 목소리 합성 | fal.ai 정책(만든 파일을 잠시 호스팅) |
| OpenAI (방송 검수) openai.com/policies/privacy-policy | 미국 | 방송에 보낸 사연 글자와 보내는 사람 이름, DJ 인사 | 방송 검수 | OpenAI 정책(API 기본 최대 30일) |
| Cloudflare, Inc. (목소리 파일 저장) cloudflare.com/privacypolicy | 미국 | 방송 목소리 파일 | 방송 재생 | 배정된 방송 시각부터 7일 뒤 삭제 대상. 내리면 삭제 요청, 실패하면 재시도(6장) |
| Supabase, Inc. (방송·운영 기록) supabase.com/privacy | 미국 회사, 저장은 한국 서울 | 방송 사연·이름·판정, HMAC으로 가린 요청자와 요청 횟수, 무작위 청취 번호, 삭제 재시도용 파일 식별값 | 방송 편성, 신고·요청 제한, 청취 수 집계, 파일 정리 | 방송 시각부터 7일, 거절·방송 전 내림부터 1일, 요청 횟수 최대 2일 뒤 삭제 대상. 청취 신호는 10분 뒤 정리. 파일 식별값은 삭제 완료까지(3·6장) |
보내는 때와 방법: 사연을 보낼 때마다 암호화된 통신(HTTPS)으로 보내요. 보관 기간은 각 회사의 정책을 따라요.
10. AI를 쓰고 있어요
대답은 AI 판정 모델이 계산한 확률을 라디오 감도로 바꾼 값이고, DJ 목소리도 AI로 만든 음성이에요. 방송에 흐르는 노래도 AI로 만든 곡이에요. 방송에 보낸 사연의 앞뒤 인사와 DJ 이야기도 AI가 써요. DJ가 들려주는 ‘비슷한 엽서를 보낸 분’이나 DJ 자신의 경험담은 AI가 지어낸 이야기예요. 대답 문장은 판정 그대로예요. 곡 사이 멘트 일부와 DJ가 바뀔 때의 대화는 전날 밤 AI가 미리 써요. 여기에는 날짜, 서울 날씨 예보, 그날 방송된 사연의 개수와 예/아니요 수만 쓰고 사연 글은 넣지 않아요. 재미로 들어 주세요. 몸, 약, 돈이 걸린 사연에는 대답하지 않고, 마음이 많이 힘든 사연에는 상담 전화(자살예방상담전화 109, 정신건강위기상담 1577-0199)를 알려 드려요.
11. 권리와 문의
방송에 보낸 사연은 6장, 요청 횟수 등 운영 기록은 3장에 적힌 기간 동안 보관해요. 내리거나 지워 달라는 요청, 그 밖에 궁금한 점은 아래로 연락해 주세요. 확인해서 답해 드릴게요.
개인정보 보호책임자: 유재영
문의: hello@magicradiofm.com
개인정보 침해 신고와 상담은 개인정보침해신고센터(국번 없이 118, privacy.kisa.or.kr)에서도 받아요.