html2wp / 데이터
html2wp가 사용자의 데이터로 하는 일
무엇이 컴퓨터 밖으로 나가는지, 왜 나가는지, 얼마나 오래 보관하는지를 쉽게 설명합니다. README는 같은 내용을 짧게만 언급합니다. 이 페이지는 클라이언트에게 그대로 보여 줄 수 있는 버전입니다.
변환 자체
사이트를 변환하려면 서비스가 사이트를 받아야 합니다. 3단계를 실행하면 스킬이 api.html2wp.dev로 아카이브 하나를 업로드합니다.
conversion-manifest.json: 사이트에 대해 사용자가 내린 결정astro-report.json: 1단계에서 만든, 여러 페이지가 공유하는 부분(크롬) 목록astro-project/: 빌드된 사이트인dist/포함chrome-at-rest/,chrome-groups.json,style-specimens/: 있는 경우
이것이 곧 클라이언트의 웹사이트입니다. 마크업, 스타일, 스크립트, 이미지가 들어 있습니다. 사이트를 보내지 않고 변환할 방법은 없으며, 그렇지 않다고 암시하는 표현은 모두 거짓입니다. SKILL.md는 What goes up 항목에 정확한 파일 목록을 적어 둡니다. 저희 말을 믿기보다 직접 확인하고 싶다면 convert-remote.sh를 읽어 보세요. 읽기 쉬운 셸 스크립트입니다.
아카이브에 들어가지 않는 것
빌드된 결과물만 전송되므로 입력 디렉터리는 들어가지 않습니다. node_modules도 들어가지 않습니다. 로그인 정보처럼 보이는 것도 들어가지 않습니다. .env와 .env.*, *.pem, *.key, id_rsa, credentials.json, .npmrc, .netrc, .ssh/, .aws/, 그리고 내용에 개인 키 블록이나 명백한 비밀 값 할당이 들어 있는 모든 파일이 여기에 해당합니다. 필터는 제외한 모든 파일을 astro-report.json에 이름으로 기록하므로, 무엇이 전송되지 않았는지 확인할 수 있습니다.
내 컴퓨터에서 이루어지는 작업(측정, 원본과의 비교, 수정)은 사용자 본인의 ChatGPT 계정 AI가 진행합니다. AI가 다루는 내용은 다른 방식으로 ChatGPT를 쓸 때와 마찬가지로 OpenAI가 사용자 계정의 약관에 따라 처리합니다.
보관 기간: 작업 공간은 마지막으로 변경된 지 48시간 후에 삭제합니다. 남는 것은 다이제스트(해시)뿐입니다. 이 다이제스트 덕분에 같은 사이트의 재실행이 두 번째 변환이 아니라 재실행으로 계산됩니다.
게이트 결과
로컬에서 변환을 검증하고 나면 스킬이 결과를 보고합니다. 이 보고는 필수입니다. 이전 변환이 보고하기 전에는 다음 변환이 거부됩니다. 보고 내용은 작고, 필터가 아니라 허용 목록 방식입니다.
- 전송되는 것: 게이트 이름, 결과(통과, 실패 또는 미실행), 페이지 수, 가장 낮은 충실도 퍼센트, 실패한 페이지의 키. 키는 사용자가 정한 짧은 이름입니다(
about,pricing등). - 전송되지 않는 것: URL, 도메인, 마크업, 문구, 스크린샷, 파일 경로, 라이선스 키, 사이트 이름은 전송되지 않습니다.
send-verdicts.sh <workspace> --dry-run 명령은 전송할 데이터를 정확히 출력하고 아무것도 보내지 않습니다.
이 보고가 필수인 이유는 게이트가 사용자의 컴퓨터에서, 서비스가 볼 수 없는 WordPress를 대상으로 실행되기 때문입니다. 게이트 결과가 없으면 서비스는 변환이 중단되지 않았다는 것만 알 뿐, 결과가 올바른지는 전혀 알 수 없습니다. 결과는 365일 동안 보관합니다.
변환 기록
변환마다 한 행이 기록됩니다. 페이지 수, 크롬 변형 수, 블로그나 쇼핑몰이 있었는지, 재실행이었는지, 거부되었다면 어느 단계에서 거부되었는지, 생성기가 스스로에 대해 남긴 경고가 들어갑니다. 경고는 가려서 기록합니다. 행을 기록하기 전에 페이지 파일 이름과 URL을 다른 값으로 바꿉니다. 기록은 365일 동안 보관합니다. 기록에는 콘텐츠도, 주소도, 사이트를 식별하는 정보도 들어 있지 않습니다.
결함 신고
POST /v1/report로 신고를 보내면, 작성한 텍스트를 그대로 저장하고 Resend를 통해 이를 읽는 담당자에게 메일로 보냅니다. 신고는 90일 동안 보관합니다. 그 기간 동안 보관되기를 원하지 않는 내용은 붙여 넣지 마세요.
사용자 식별
- 키가 없는 경우: 변환은 Cloudflare가 보는 IP 주소별로 계산됩니다. 저희는 주소 자체가 아니라 잘라 낸 해시로만 저장합니다.
- 그 해시가 속한 국가도 Cloudflare가 추가하는 헤더에서 두 글자로 가져옵니다. 국가 정보는 위의 카운터 옆에만 있고 다른 곳에는 없습니다. 특히 사용자의 위치를 알 수 있는 정보가 전혀 없는 변환 기록에는 들어가지 않습니다. 국가 정보로 html2wp가 어느 나라에서 쓰이는지는 알 수 있지만, 어느 변환이 누구의 것인지는 알 수 없습니다. 알 수 없는 경우와 Tor는
XX와T1로 들어오며, 추측하지 않고 그대로 보관합니다. - 라이선스가 있는 경우: 라이선스 키로 식별하며, 키 역시 해시로 저장합니다. 키는 UpdatePulse(
updates.designready.studio)로 검증하며, UpdatePulse는 키를 볼 수 있습니다. - 키 확인 또는 Visual Edit Pro 다운로드: 다운로드 페이지와
npx html2wp-license확인 도구는 상태를 조회하기 위해 입력한 키만 같은 라이선스 서버로 보내고, 그 밖에는 아무것도 보내지 않습니다. 응답에는 개인 정보가 없으며, 페이지와 확인 도구 모두 키를 저장하지 않습니다.
라이선스 구매
요금제는 Paddle을 통해 판매합니다. Paddle.com Market Limited는 Merchant of Record, 즉 거래의 판매자입니다. 결제에 관해 Paddle은 저희를 대신하는 수탁자가 아니라 독립적인 개인정보 처리자(컨트롤러)입니다. 결제 화면에서 Paddle은 이름, 이메일 주소, 국가, 우편번호, 결제 정보, 그리고 입력한 경우 부가가치세 번호를 수집합니다. Paddle은 이 정보를 자체 개인정보 처리방침에 따라 처리합니다.
- Paddle이 저희에게 전달하는 것: 이메일 주소, 이름, 국가, 거래 및 구독 ID, 구매한 제품. 올바른 사람에게 키를 발급하고, 문의가 왔을 때 주문을 다시 찾는 데 필요한 정보입니다.
- 저희가 저장하는 것: 저희 라이선스 서버인
updates.designready.studio의 UpdatePulse에 라이선스 키, 이메일 주소, 이름, 거래 ID, 구매일과 만료일, 라이선스 상태를 저장합니다. - 키 이메일은 Resend를 통해 발송되며, Resend는 이메일을 전달만 하고 그 밖에는 아무것도 하지 않습니다.
- 인보이스용 회사 정보(사업체명 또는 상호, 주소, 선택적으로 부가가치세 번호와 이메일)는 결제 전에 회사 또는 프리랜서를 선택하면 브라우저에서 Paddle 결제 화면으로 바로 전달됩니다. Paddle은 이 정보를 인보이스에 인쇄합니다. 이 사이트는 이 정보를 저희 서버로 보내지도, 저장하지도 않습니다.
- 카드 정보는 저희에게 절대 오지 않습니다. 카드 정보는 브라우저에서 Paddle로 바로 가며, 저희는 원해도 볼 수 없습니다.
- Paddle의 스크립트인 Paddle.js는 결제 화면이 열리는 요금 페이지에서만
cdn.paddle.com으로부터 불러옵니다. 이 사이트의 다른 페이지는 이 스크립트를 불러오지 않습니다.
보존 기간: 라이선스가 유효한 동안, 그리고 그 후에는 회계 관련 법률이 구매 기록 보관을 요구하는 기간 동안 보관합니다.
구독 관리
구독은 Paddle 자체 사이트에 있는 Paddle 고객 포털에서 관리합니다. 해지, 카드 변경, 인보이스 다운로드는 사용자와 Paddle 사이의 일이며, 저희는 결과만 봅니다. Pro를 월간에서 연간으로 전환할 때는 구독 관리 페이지가 입력한 이메일 주소를 Paddle로 보내 구독을 찾습니다. 구독이 있으면 Paddle이 보유한 주소로 Resend를 통해 링크가 이메일로 발송됩니다. 입력한 주소는 저장하지 않습니다.
문의 양식
저희에게 연락하는 양식은 이 사이트에서 자신에 관한 정보를 입력하는 또 하나의 장소입니다. 필수인 이메일 주소, 선택인 웹사이트 또는 단체, 그리고 메시지를 입력합니다. 양식에는 사람에게는 보이지 않는 company라는 숨은 필드도 있습니다. 모든 필드를 채우는 봇이 스스로를 드러내게 하려는 장치입니다.
메시지가 전송되기 전에 Cloudflare Turnstile이 보내는 쪽이 스크립트가 아닌 사람인지 확인합니다. Turnstile은 이를 사용하는 양식이 있는 페이지, 즉 문의 페이지와 구독 페이지에서만 실행됩니다. 스크립트는 challenges.cloudflare.com에서 불러옵니다. 판단을 위해 Cloudflare는 IP 주소, 브라우저의 User-Agent, TLS 지문을 확인합니다. Cloudflare는 이 정보가 사람과 봇을 구별하는 데 반드시 필요하다고 밝힙니다. Turnstile은 양식에 입력한 내용을 읽지 않습니다. 저희가 받는 것은 통과 또는 실패 결과뿐입니다. 자세한 내용은 Cloudflare의 Turnstile 개인정보 보호 부록에 있습니다.
메시지는 Resend를 통해 이메일로 담당자에게 전달됩니다. CRM이나 메일링 리스트에는 들어가지 않습니다. 대화에 필요한 동안 보관하고, 24개월 이내에 삭제합니다. 더 일찍 요청하시면 그때 삭제합니다.
Google 사용자 데이터
html2wp는 Google API 하나, 즉 Google Ads API를 저희 자체 키워드 조사에만 사용합니다. 사람들이 어떤 검색어를 얼마나 자주 쓰는지, 경쟁이 얼마나 치열한지를 조사합니다. 이것은 내부 도구입니다. html2wp의 어느 곳에서도 저희 팀 외부의 사람이 Google로 로그인하는 일은 없으며, 변환기도 Google 로그인을 요구하지 않습니다.
- 요청하는 권한:
https://www.googleapis.com/auth/adwords범위이며, 저희 팀원이 저희 소유의 Google Ads 계정에 대해 부여합니다. 이 권한은 키워드 플래너 데이터, 즉 키워드 아이디어, 과거 검색량, 경쟁도, 입찰가 범위를 읽는 데 사용합니다. - 건드리지 않는 것: 캠페인, 광고, 잠재고객, 결제, 그리고 저희 계정이 아닌 모든 Google 계정. Google Ads에 다시 기록하는 것은 없습니다.
- 보관 위치: 로그인 토큰은 권한을 부여한 컴퓨터의 운영체제 키체인에 남아 있습니다. 키워드 결과는 사람이 아니라 검색어에 관한 숫자로서 저희 콘텐츠 기획에 쓰입니다.
- 다른 누가 보는지: 아무도 보지 않습니다. 이 데이터를 판매하거나 공유하지 않으며, 광고나 AI 모델 학습에 사용하지 않습니다.
- 삭제 방법: myaccount.google.com/permissions에서 접근 권한을 취소할 수 있습니다. 이메일로 요청하시면 이 데이터에서 파생된 모든 것을 삭제합니다.
html2wp가 Google API로부터 받은 정보를 사용하고 다른 앱으로 전송하는 것은 제한적 사용(Limited Use) 요건을 포함한 Google API 서비스 사용자 데이터 정책을 준수합니다.
관련된 다른 업체
- Cloudflare(미국)는 이 웹사이트를 호스팅하고 작은 서버 측 기능(문의 양식, Visual Edit Pro 다운로드, 결제 웹훅)을 실행합니다. 변환 API 앞단에도 위치합니다. Cloudflare는 TLS를 종료하므로 각 요청과 그 요청이 온 주소를 볼 수 있습니다. 문의 페이지와 구독 페이지에서는 위에서 설명한 봇 확인 도구인 Turnstile도 실행합니다. 이 확인에 대해 Cloudflare는 저희의 수탁자입니다. 같은 신호를 봇 탐지 개선에 사용할 때만 Cloudflare가 처리자(컨트롤러)가 됩니다.
- UpdatePulse는 저희 자체 서버에서 라이선스 검증을 맡습니다. 라이선스를 판매하므로 키 옆에 고객의 이메일 주소와 이름도 보관합니다.
- Paddle(Paddle.com Market Limited, 영국)은 모든 구매의 Merchant of Record이며, 자신이 수집하는 결제 데이터에 대해 독립적인 처리자(컨트롤러)입니다.
- Resend(미국)는 네 종류의 이메일을 전달합니다. 구매 후 라이선스 키, 구독 관리 링크, 문의 양식으로 보낸 메시지, 변환기 결함 신고입니다.
- Coolify는 저희 자체 서버에서 변환 서비스와 라이선스 서버를 호스팅합니다.
- agentmods.dev는 모든 페이지 푸터에 있는 작은 플러그인 측정 배지를 제공합니다. 이 이미지를 불러오면 다른 사이트의 이미지와 마찬가지로 IP 주소와 브라우저 정보가 전송됩니다. 그 밖에는 아무것도 공유하지 않습니다.
- 오픈 소스 분석 도구인 Umami는 umami.agentmods.dev에서 실행되며 이 웹사이트에서만 사용됩니다. 페이지 조회수와 몇 가지 클릭을 셉니다. 누가 눌렀는지가 아니라 어떤 버튼을 눌렀는지만 셉니다. 쿠키도, 사이트 간 식별자도 없고, 기기에 아무것도 저장하지 않습니다. 그래서 이 사이트에는 클릭해서 넘겨야 하는 쿠키 배너가 없습니다.
광고 없음, 사이트 간 추적 없음, 데이터 판매 없음
분석 도구는 위에서 말한 쿠키 없는 도구 하나뿐이며, 이 웹사이트에서만 실행됩니다. 사용자가 받는 테마는 실행 중에 저희 서버에 절대 연결하지 않습니다. 이 내용은 납품된 사이트에 관한 것이며 정확한 사실입니다. 아무것도 판매하지 않으며, 광고주와 공유하는 것도 없습니다.
EU 밖으로의 이전
저희 서버는 EU에 있습니다. Cloudflare와 Resend는 미국 회사입니다. 이 웹사이트와 API로 가는 트래픽은 Cloudflare 인프라를 거치며, 양식의 Turnstile 확인도 마찬가지입니다. 키 이메일, 구독 관리 링크, 문의 양식 메시지, 결함 신고는 Resend 인프라를 거칩니다. 두 경우 모두 EU 밖으로의 이전이 생길 수 있습니다. 이런 이전은 유럽연합 집행위원회의 표준계약조항(SCC)에 따라 이루어집니다. Paddle은 유럽연합 집행위원회가 적절한 보호 수준을 갖춘 것으로 인정한 영국에 있으며, 결제 데이터를 자체 개인정보 처리방침에 따라 처리합니다. 푸터 배지와 분석 스크립트는 모두 Cloudflare의 글로벌 네트워크로 제공되는 agentmods.dev에서 옵니다. 그래서 이 요청들이 어디에서 응답되는지는 저희가 통제할 수 없습니다. 이 목록의 나머지는 EU 밖으로 나가지 않습니다.
법적 근거
GDPR에 따라 위의 각 처리에는 적법한 근거가 필요합니다. 각 처리에 적용되는 근거는 다음과 같습니다.
변환 서비스
- 사이트 수신과 변환: 계약의 이행(GDPR 제6조 제1항 (b)). 사용자가 변환을 요청했으며, 업로드 없이는 변환할 수 없습니다.
- IP 주소별 변환 횟수 계산: 정당한 이익(GDPR 제6조 제1항 (f)). 횟수를 셀 수 없는 무료 요금제는 남용되며, 잘라 낸 해시는 이를 식별할 수 있는 가장 적은 정보입니다.
- 그 주소가 속한 국가 기록: 정당한 이익(GDPR 제6조 제1항 (f)). 제품이 어디에서 쓰이는지 알아야 무엇을 지원할지 정할 수 있습니다. 이미 가명 처리된 카운터 옆의 두 글자는 그 질문에 답하는 가장 거친 형태입니다. 해시만으로 식별할 수 있는 것에 아무것도 더하지 않습니다.
- 라이선스 키 검증: 계약의 이행(GDPR 제6조 제1항 (b)).
- 게이트 판정 결과와 변환 기록: 정당한 이익(GDPR 제6조 제1항 (f)). 어떤 형태의 사이트에서 어느 단계가 실패하는지 아는 것이 변환기를 개선하는 유일한 방법입니다. 기록하기 전에 사이트를 식별하는 정보는 모두 제거합니다.
- 사용자가 보내는 결함 신고: 정당한 이익(GDPR 제6조 제1항 (f)). 신고를 보낼지는 사용자가 결정합니다.
라이선스 구매에 관한 처리
- 구매한 라이선스의 발급과 관리: 계약의 이행(GDPR 제6조 제1항 (b)).
- 구매 기록 보관: 법적 의무(GDPR 제6조 제1항 (c)). 보관 기간은 회계 관련 법률이 정합니다.
이 웹사이트
- 문의 양식: 계약 체결 전 사용자의 요청에 따른 조치, 또는 연락한 사람에게 답변하는 정당한 이익(GDPR 제6조 제1항 (b) 또는 (f)).
- 문의 양식과 구독 양식의 봇 확인: 정당한 이익(GDPR 제6조 제1항 (f)). 사람이 읽는 양식에 자동화된 스팸이 들어오지 않게 하려는 것입니다. Cloudflare가 이를 위해 필요로 하는 신호만 사용하며 그 이상은 사용하지 않습니다.
- 이 웹사이트의 페이지 조회수 집계: 정당한 이익(GDPR 제6조 제1항 (f)). 이 도구가 기기에 아무것도 저장하지 않고 이 사이트 밖까지 사용자를 따라갈 수 없기 때문에 이 근거가 정당화됩니다.
자동화된 결정
변환 한도를 모두 썼거나 사이트가 너무 크면 서비스가 변환을 자동으로 거부합니다. 이는 카운터에 대한 단순 계산일 뿐이며, 누구에게도 법적 효과를 미치지 않습니다. 이에 대해 문의하시면 사람이 답변합니다. 프로파일링은 하지 않습니다.
사용자의 권리
GDPR에 따라 다음 중 무엇이든 요청할 수 있으며, hello@html2wp.dev로 보내는 이메일 한 통이면 충분합니다.
- 열람: 저희가 보유한 사용자 정보의 사본을 받습니다(제15조).
- 정정: 데이터가 틀렸다면 바로잡습니다(제16조).
- 삭제: 데이터를 삭제합니다(제17조).
- 처리 제한: 다툼이 있는 동안 데이터를 보관하되 사용을 멈춥니다(제18조).
- 이동: 제공한 데이터를 기계가 읽을 수 있는 형식으로 받습니다(제20조).
- 반대: 분석을 포함해 정당한 이익을 근거로 하는 모든 처리에 반대할 수 있습니다(제21조). 사용자의 이익보다 우선하는 근거를 저희가 증명하지 못하면 처리를 멈춥니다.
한 달 이내에 답변합니다. 비용은 없습니다. 사용자의 데이터를 다른 사람에게 넘기지 않는다는 확신에 필요한 정도를 넘어 신원 증명을 요구하지 않습니다.
한 가지 한계가 있습니다. 서비스가 보유한 데이터 대부분은 해시 처리되거나 집계되어 있어 저희조차 특정인으로 추적할 수 없습니다. 그래서 이런 행에 대해서는 넘겨주거나 정정하거나 삭제할 것이 없습니다. 업로드된 사이트는 48시간 후 자동으로 사라집니다.
저희가 잘못했다면
슬로바키아 감독 기관인 Úrad na ochranu osobných údajov Slovenskej republiky(슬로바키아 개인정보보호청), Hraničná 12, 820 07 Bratislava, dataprotection.gov.sk에 민원을 제기할 수 있습니다. 다른 EU 국가에 거주한다면 대신 해당 국가의 감독 기관에 제기할 수도 있습니다. 저희에게 먼저 연락하는 쪽이 더 빠르지만, 필수 조건은 아닙니다.
취약점 신고는 공개 이슈가 아니라 보안 페이지에 있는 주소로 보내 주세요.
책임 주체
개인정보 처리 책임자(컨트롤러)는 BELNEM s.r.o., Beckovská 5, Bratislava, Slovakia, IČO 53713486입니다. 이메일: hello@html2wp.dev로 문의. 저희는 개인정보 보호책임자(DPO)를 지정해야 하는 규모가 아니며, 지정하지 않았습니다. 위 주소로 연락하면 이런 사항을 결정하는 사람에게 닿습니다.
저희에게 데이터를 제공하는 것은 법적 요건이 아닙니다. 다만 변환에는 사이트가 필요하고, 라이선스에는 키를 보낼 주소가 필요할 뿐입니다.