스킨 보관과 연결
ZIP으로 스킨 보관하기
관리 화면에서 ZIP을 업로드하면 새 스킨이 만들어집니다. index.xml의 이름·버전·제작자·설명·라이선스를 읽고 포함된 preview 이미지를 썸네일로 표시합니다. 정보가 없는 항목은 미기재로 표시합니다.
기존 스킨에 새 버전을 올리려면 스킨 이름 → 스킨 파일 → 새 버전 업로드를 사용하세요. 기존 도메인·데이터 설정은 유지되며 이전 ZIP도 업로드 이력에서 내려받을 수 있습니다. 다운로드는 로그인한 관리자에게만 제공됩니다.
ZIP은 최대 20MB, 파일 수 1,000개, 압축 해제 예상 크기 100MB 이내입니다. skin.html·style.css·index.xml이 같은 폴더에 있는 일반 ZIP을 지원합니다. 여러 스킨을 묶은 파일, 암호화·분할·ZIP64는 지원하지 않습니다.
preview560.jpg → preview256.jpg → preview1600.jpg → preview.gif 순으로 썸네일을 찾습니다. 이미지가 없으면 ‘대표 이미지 변경’에서 최대 4MB의 JPG·PNG·GIF·WebP를 올리세요. 스킨 코드를 실행해 스크린샷을 만드는 기능은 아닙니다. 업로드한 ZIP 원본은 변경하지 않습니다.
이름·제작자·설명·허용 도메인으로 검색할 수 있습니다. 파일을 올리는 것과 외부 데이터 접근을 허용하는 것은 별도이며 새 스킨의 도메인과 데이터 항목은 기본 차단 상태입니다.
구성 참고: 티스토리 공식 스킨 파일 구조 · Cloudflare 파일 저장 API
스킨 데이터 연결
- 관리 화면에서 스킨 이름을 입력해 만듭니다.
- 스킨 이름을 누르고 허용 도메인을 추가합니다. 예: https://t-skin.tistory.com
- 데이터 항목에서 이름, 키, 저장 방식, 값 형식을 정합니다.
- 공통 값은 ‘공통 값’ 탭에서 JSON으로 저장합니다.
- 연결 코드를 스킨 HTML에 넣거나, ‘AI용 스킨 명세’를 복사해 제작 AI에게 전달합니다.
데이터 방식
공통 값(public): 관리자가 저장하고 허용된 도메인의 방문자가 읽는 설정입니다. 같은 스킨에 등록한 도메인끼리는 공유합니다.
방문자 값(visitor): 현재 브라우저 방문자 자신의 설정만 읽고 씁니다. 다른 스킨·도메인·방문자와 분리됩니다. 회원 계정 동기화가 아니며 브라우저 저장소 삭제나 180일 세션 만료 시 이전 데이터에 접근할 수 없습니다.
반응(reaction): 반응 이름과 게시글 경로별로 좋아요 수와 내 선택을 저장합니다. 다시 누르는 요청으로 수가 중복 증가하지 않습니다. 같은 스킨의 허용 도메인끼리는 합산됩니다.
SDK 사용법
<script src="https://skindata.ai-thanks.com/sdk.js"></script>
<script type="module">
const store = new SkinDataClient({ skinId: "스킨 ID", key: "공개 키" });
// 아래 키는 먼저 데이터 항목에 등록하세요.
const theme = await store.getPublic("theme");
const prefs = await store.get("preferences");
// 사용자 조작 시:
await store.set("preferences", {mode: "dark"});
await store.remove("preferences");
const likes = await store.reaction(location.pathname, "likes");
await store.like(location.pathname, true, "likes");
</script>항목 허용 규칙
등록하지 않은 키는 접근이 거절됩니다. bookmarks/*는 bookmarks/123 같은 하위 키를 허용합니다. 정확한 키의 규칙이 접두어보다 우선하며 중지된 정확한 키도 우선합니다. 반응 이름에는 접두어 규칙을 사용할 수 없습니다.
항목 중지·삭제와 도메인 삭제는 접근만 차단하며 저장 데이터는 유지합니다. 항목을 같은 이름과 방식으로 다시 등록하면 기존 데이터에 접근할 수 있습니다. 형식 변경은 새 저장 요청에 적용되며 기존 값을 변환하지 않습니다. 키나 저장 방식을 바꾸면 다른 항목을 등록하는 것이므로 이전 항목은 별도로 중지하세요.
사용 범위
스킨별 공통 설정, 개인 설정, 북마크, 좋아요 등에 사용할 수 있습니다. 임의의 서버 기능이나 결제·회원 인증 기능을 자동 생성하지 않습니다. 방문자끼리 공유하는 게시판 쓰기 기능은 제공하지 않습니다.
스킨당 도메인 20개·데이터 정의 100개, 값당 8KB, 저장 값 10,000개·반응 20,000개 제한이 있습니다. 요청 제한을 초과하면 잠시 후 재시도하세요.
허용 주소 검사는 브라우저에서 타 도메인의 사용을 차단합니다. 공개 키는 비밀 인증키가 아니며 외부 프로그램의 Origin 위조까지 방지하지 않습니다. 관리자 키는 스킨에 넣지 마세요.
API
관리: /api/admin/skins → /:skinId/rules 및 /:skinId/data. 스킨: /v1/skins/:skinId/session, /data/:key?scope=public|visitor, /reactions/:resource?feature=likes. SDK는 세션과 공개 키를 자동으로 전달합니다. 이전 /sites 경로는 같은 규칙을 적용하는 호환 별칭입니다.