GPT한테 도움받을 때
GPT에게 타이포, 배경, 치비 배열을 부탁할 때 입력을 정리하는 방법입니다. 직접 작업하면서 비교적 의도가 잘 전달됐던 구조를 모았습니다.
이미지 생성 전반의 정답집은 아닙니다. 결과는 달라질 수 있으며, 아래 방법도 작업 중인 관찰과 예시입니다. 프롬프트 안의 문구와 조건은 필요한 부분만 바꿔 사용하세요.
타이포
문구만 전달하기보다 문자열, 줄 구조, 배치, 글자 스타일, 장식의 범위를 나누면 결과를 점검하기 편했습니다.
먼저 정할 것
- 문자열: 들어갈 문구를 정확하게 적습니다.
- 줄과 블록: 어느 부분에서 줄을 나누고, 어떤 단어를 크게 보여줄지 정합니다.
- 우선순위: 텍스트를 먼저 읽어야 하는지, 함께 있는 캐릭터를 먼저 봐야 하는지 정합니다.
- 글자 스타일: 채움색, 테두리, 글자 굵기와 변형 정도를 적습니다.
- 장식: 종류와 함께 개수나 밀도를 제한합니다.
- 문자열 보존: 철자를 바꾸거나 문구를 추가하지 않도록 요청합니다.
기본 입력 예시
타이포 입력 예시 보기
# Typography Priority
* text is the primary focal point
* maintain high legibility
* decorative elements remain secondary
# Text Content
First line: `Welcome`
Second line: `Library`
# Layout
* centered two-line composition
* first line above second line
* clear spacing between lines
* no overlapping decorations
# Letter Style
* white fill
* light green outline
* bold rounded sticker lettering
* clean readable shapes
# Decoration
* idol fan-sign sticker atmosphere
* a few small music notes, sparkles, and hearts
* keep decorations sparse and outside the lettering
* no extra ribbons or decorative frames
* restrained glow and drop shadows
# Background
* transparent background
# Text Preservation
* keep all English text exactly as written
* do not alter spelling
* do not add extra letters or words
긴 제목은 시각 블록으로 나누기
긴 문장을 한 덩어리로 전달했을 때보다, 줄과 강조 부분을 나눴을 때 읽기 편한 결과가 나왔습니다. 예를 들면 다음처럼 구성합니다.
타이포 블록 배치 예시 보기
[ GPT한테 ] [ 짬때리기 ]
[ 비주얼라이즈 ] [ ]
왼쪽은 두 줄, 오른쪽은 왼쪽 두 줄 높이에 걸치는 큰 단어로 지정합니다. 기본색과 포인트색 하나를 쓰고, 장식은 글자 바깥에 드문드문 배치합니다.

결과를 보고 조정할 것
철자와 줄 구조가 맞아도 리본, 광채, 큰 그림자, 추가 아이콘이 붙는 경우가 있었습니다. 장식 종류만 쓰지 말고 “적게”, “글자 바깥에”, “전체 외곽을 크게 넓히지 않게” 같은 허용 범위를 함께 적어보세요.
강한 스타일이나 많은 색을 요청했을 때 글자가 장식처럼 변하는 경우도 있었습니다. 읽기 어렵다면 장식과 색을 줄이고 문자열부터 다시 확인합니다. 문자열 보존 요청은 결과를 보장하지 않으므로, 최종 이미지의 철자도 직접 확인합니다.
백그라운드
배경이 필요할 때는 장소 이름만 적기보다 시점, 깊이, 빛, 정보량을 나누어 전달하면 의도를 설명하기 편했습니다. 여기서는 캐릭터 외형·의상·포즈를 제외하고 배경 입력 방식만 다룹니다.
짧은 메모부터 시작하기
먼저 한국어로 장면을 정리하고, 필요하면 항목별 문장으로 확장합니다. 아래 장소와 색은 교체해서 쓰는 예시입니다.
배경을 정리하는 짧은 메모 보기
용도: 나중에 텍스트나 이미지를 얹을 배경
장소: 한적한 시골 오르막길
시간: 초저녁
시점: 눈높이에서 길을 바라보기
공간: 가까운 곳·중간·먼 곳을 구분, 멀수록 대비와 채도 감소
화풍: 현대 애니메이션 느낌, 플랫한 색과 단순한 셀 명암
하늘: 수평선 부근은 보라색, 위로 갈수록 어둡게
빛: 하늘의 은은한 주변광, 왼쪽 먼 곳에 가로등 하나
밀도: 듬성듬성한 풍경, 중앙에는 복잡한 물체를 두지 않기
제한: 추가 가로등·장식광·강한 글로우 없이
입력을 나눌 기준
| 항목 | 정할 내용 |
|---|---|
| 용도와 구도 | 풍경 자체가 중심인지, 다른 요소를 얹을 배경인지. 어느 영역을 비울지 |
| 장소와 시간 | 지형, 건물이나 사물의 위치, 시간대, 분위기 |
| 카메라 | 눈높이·높은 시점·낮은 시점, 바라보는 방향, 거리와 원근 강도 |
| 공간 | 전경·중경·후경, 거리에 따른 크기, 대비와 채도의 변화 |
| 화풍 | 시대감, 선, 플랫한 색, 셀 명암, 표면 묘사의 정도 |
| 조명 | 주광과 주변광의 역할, 보이는 인공광원의 수와 위치, 추가 효과의 상한선 |
| 색 | 주요 색과 포인트색, 명도 대비, 먼 배경의 채도 |
| 움직임 | 바람 방향과 강도, 풀이나 천 등 환경 요소의 반응 |
| 재질 | 길·벽·물 등의 거칠기, 무광·광택, 빛의 반사 정도 |
| 정보량 | 넣을 사물, 비워둘 영역, 생략할 장식과 세부 묘사 |
원근은 두 가지로 나누기
기하학적 원근은 멀어지는 물체의 크기, 길의 수렴, 건물의 정렬처럼 공간의 형태를 정합니다.
대기 원근은 거리에 따른 대비·채도 감소나 옅은 안개처럼 깊이가 보이는 방식을 정합니다. “원근을 넣어줘”에 더해, 먼 곳을 어떻게 표현할지 적습니다.
화풍과 조명은 조금 더 구체적으로
anime style에 시대감, 색을 채우는 방식, 명암과 표면 묘사의 정도를 더해보세요. 플랫한 결과를 원한다면 flat coloring, clean cel shading, simple shadow shapes처럼 원하는 상태를 적을 수 있습니다.
조명에서는 주광이 하나인 것과 화면에 보이는 인공광원이 하나인 것을 구분합니다. 하늘의 주변광과 가로등이 함께 있는 장면이라면 각각의 역할을 적습니다. 가로등 수가 중요하면 “장면 전체에서 보이는 인공광원은 정확히 하나”라고 쓰고 결과에서도 확인합니다.
배경 전용 입력 예시
다음은 원본의 시골길 장면을 배경만 생성하는 용도로 편집한 예시입니다. 아래에는 작업자가 제공한 관련 배경 결과를 함께 배치했습니다. 편집한 입력문과 실제 생성에 사용한 입력문이 완전히 동일한지는 확인하지 않았습니다.
백그라운드 입력 예시 보기
# Purpose
* background-only image, with no people or characters
* leave a quiet central area for a later text or image overlay
# Background
## Art Style
* modern anime style
* flat coloring and clean cel shading
* simple shadow shapes
* restrained surface detail and reduced painterly rendering
## Field Information
* a quiet uphill rural road at early night
* sparse countryside surroundings
* purple near the horizon, with the sky darkening toward the top
* one distant streetlight on the left
## Spatial Structure
* consistent perspective and object scale with distance
* clear foreground, midground, and background separation
* distant objects gradually lose contrast and saturation
* subtle distance haze
# Camera and Composition
* eye-level view looking along the uphill road
* moderate perspective
* keep the central area uncluttered
* sparse foreground objects
# Lighting
* soft ambient evening light from the sky
* exactly one visible artificial light source in the entire scene:
the distant streetlight on the left
* the streetlight casts a small, restrained pool of light nearby
* shadows and reflections follow the stated lighting
* no additional lamps, spotlights, or decorative light sources
* restrained glow and highlights
# Color
* a controlled palette with purple near the horizon
* restrained saturation in distant scenery
* gentle contrast in the central overlay area
# Material Response
* the dry road and surrounding ground remain mostly matte
* subtle reflections consistent with the scene lighting
# Overall Direction
* calm, quiet rural atmosphere
* controlled environmental detail
* keep the open central area free of added decorations

결과를 보고 조정할 것
- 풍경이 너무 복잡하다면: 덜 그릴 영역과 생략할 물체를 지정합니다.
- 조명이 늘어났다면: 보이는 광원의 수와 위치를 다시 적습니다.
- 입체감이나 광택이 강하다면: 단순한 명암, 무광 표면처럼 원하는 상태를 적습니다.
- 깊이가 모호하다면: 가까운 곳과 먼 곳의 크기·대비·채도 차이를 설명합니다.
- 바람을 넣는다면: 방향과 강도를 정하고, 영향을 받는 환경 요소를 함께 적습니다.
제한어를 길게 나열하기보다 원하는 상태를 먼저 쓰고, 반복해서 과장되는 요소에 짧은 제한을 붙이는 방식으로 조정했습니다. 모든 항목을 매번 채울 필요는 없습니다. 필요한 관계와 제한부터 적어보세요.
치비 배열
이 노트에서는 치비의 세부 비율이나 화풍보다 여러 캐릭터의 위치와 읽기 순서를 다룹니다. 작업 중에는 얼굴과 실루엣이 큰 만큼 배치의 어색함도 쉽게 드러났습니다.
무엇이 주인공인가
캐릭터, 텍스트, 로고, 소품이 함께 있다면 가장 먼저 보여야 할 요소를 정합니다.
캐릭터가 주인공일 때:
캐릭터 중심 입력 예시 보기
# Priority
* characters are the primary focal point
* text remains secondary
* decorative elements remain supportive
* character silhouettes remain the strongest visual elements
텍스트가 주인공일 때:
텍스트 중심 입력 예시 보기
# Priority
* text is the primary focal point
* characters function as supporting decoration
* text must be the first element the viewer notices
* character placement guides attention toward the text
인원별 배열 예시
아래는 작업에서 출발점으로 쓰기 편했던 배열입니다. 모든 장면에 적용하는 고정 규칙은 아닙니다.
| 인원 | 위치 | 의도한 읽기 순서 |
|---|---|---|
| 2명 | A 왼쪽, B 오른쪽 | A → B |
| 3명 | A 위, B 왼쪽 아래, C 오른쪽 아래 | A → B → C |
| 4명 | A 왼쪽 위, B 오른쪽 위, C 왼쪽 아래, D 오른쪽 아래 | A → B → C → D |
서로의 실루엣이 과하게 겹치지 않도록 하고, 첫 번째로 눈에 들어올 캐릭터를 지정합니다. 4명은 2×2를 기본으로 삼거나, 장면에 맞춰 대각선 흐름을 따로 정할 수 있습니다.
3명 배열을 문장으로 옮긴 예시:
치비 배열 입력 예시 보기
# Layout
* three chibi characters in a triangular composition
* character A at the top
* character B at the lower left
* character C at the lower right
* keep each character silhouette clearly separated
# Reading Order
* character A should be noticed first
* the viewer's eye then moves to character B, then character C
* keep decorative elements secondary to the characters
결과를 보고 조정할 것
화면이 화려한데 중심이 없다면 세부 묘사를 추가하기 전에 우선순위를 다시 확인합니다. 누구를 먼저 볼지, 다음에 어디로 시선이 갈지, 텍스트가 그 흐름을 가리고 있지는 않은지 살펴봅니다.
플랫폼 밖 서버에서 이미지 호출하기 (일명: 외부이미지)
호출 원리
외부이미지는 외부 서버에 올려 호스팅하는 이미지의 주소를 이용해 화면에 표시하는 방식입니다. 이미지를 올려둔 곳과 이미지를 보여주는 플랫폼이 서로 다를 수 있습니다.
흐름은 이미지 업로드 → 이미지 URL 확보 → 지원되는 이미지 문법으로 주소 출력 → 이미지 표시입니다.
여기에 태그를 붙이면 어떤 이미지를 선택할지 규칙을 정할 수 있습니다. 이 사례에서는 편의상 알파벳과 숫자를 조합합니다. 알파벳은 의상·상황, 숫자는 표정·소품을 구분합니다. 태그는 이미지 선택에 쓰는 식별자이며, 이미지 주소와 연결해 사용합니다.
호출 형식
Markdown 이미지 문법을 지원하는 환경에서는 다음처럼 적습니다. 아래 주소는 구조를 보여주기 위한 예시이며 실제 이미지 주소로 교체합니다. 일반적인 Markdown에서는 주소 양옆에 따옴표를 붙이지 않습니다.

예를 들어 A를 외출복, 01을 웃는 표정으로 정하고 해당 이미지에 A01을 연결해두면, 장면 규칙은 어떤 코드를 고를지만 결정하면 됩니다. 파일명을 코드와 같게 만드는 것은 관리 방법의 한 예이며 필수는 아닙니다.
하드코어로 즐기는 활용예시
옷 갈아입히기 — 장면 상태와 표정을 조합하기
직접 등록 옵션의 적용 플랫폼: Rplay / StoryEngine / RomanticPlay 한정. 아래는 일부 기능을 끄고 이미지 호출 방식을 직접 등록하는 옵션을 활용한 사례입니다. 이 플랫폼 제한은 해당 옵션에 관한 것으로, 외부 서버의 이미지를 URL로 표시하는 일반적인 방식의 제한을 뜻하지 않습니다.
장소·시간·수면 상태로 의상을 고르고, 표정 번호를 붙여 이미지 식별자를 만드는 실제 활용 사례입니다. 작업자가 사용하는 플랫폼에서는 일부 기능을 끄면 이미지 호출 방식을 직접 등록할 수 있어, 여기에 이미지 선택 규칙을 얹어 사용했습니다. 원본은 외부 URL을 직접 출력하는 방식이 아니라, 직접 등록한 (tag:) 호출 규칙을 활용한 형태입니다. 필요한 설정은 플랫폼에 따라 다릅니다.
핵심은 매 문장마다 옷을 다시 고르지 않는 것입니다. 현재 의상 코드 ENV를 HUD의 상황 요약 줄 🧷에 기록하고, 외출·귀가·취침처럼 상태가 바뀌는 경계에서만 다시 판단합니다. NUM은 표정이나 소품 이미지의 번호입니다.
| 의상 코드 | 선택 조건 |
|---|---|
| A | 집 밖. 시간대와 무관하게 우선 적용 |
| C | 집 안에서 침대에 누워 잠들거나, 잠들어 가거나, 막 깬 상태 |
| D | 집 안에서 깨어 있고, 해질녘·밤·새벽인 상태 |
| B | 집 안에서 깨어 있고, 아침·정오·오후인 상태 |
판정은 A → C → D → B 순서로 진행하며, 먼저 일치한 조건을 적용합니다. 아래는 작업자가 제공한 원본 규칙입니다. 실행할 C# 코드가 아니라 모델에 전달하는 지시문입니다.
옷 갈아입히기 전체 입력 규칙 보기
2. **Image Cue Rules:**
- All image output via `(tag:)` only. Direct URL embedding is strictly forbidden.
- Format: `(tag: {ENV}{NUM})` — e.g. `(tag: A3)`
- Append at the end of EVERY paragraph and dialogue block.
- **ENV Resolution (cascade — evaluate top-down, first match locks):**
1. Scene is OUTSIDE the residence → A (holds for any TIME_CTX)
2. INSIDE + in bed (sleeping / drifting off / just woke) → C (frilled sleep set)
3. INSIDE + awake + TIME_CTX ∈ {DUSK, NIGHT, DAWN} → D (cozy hooded loungewear)
4. INSIDE + awake + TIME_CTX ∈ {MORNING, NOON, AFTERNOON} → B (daytime home casual)
- **TIME_CTX gate:**
• C (sleep) is bound to the in-bed state, valid at any tick but realistically
only fires around {DUSK, NIGHT, DAWN}.
• D (lounge) is ELIGIBLE ONLY when awake at {DUSK, NIGHT, DAWN}.
• B never fires at {NIGHT, DAWN} unless the day has clearly restarted.
• A overrides time entirely — outdoors is always A.
- **ENV Persistence (anti-flicker · HUD-anchored):**
ENV is scene state, NOT a per-line choice, and its standing value
is STORED in the HUD (상황 요약 line, 🧷).
Each turn, resolve ENV in this order:
(1) READ the previous 🧷 value from the most recent HUD. This is
the current ENV unless something below overrides it.
(2) Check for a boundary crossing since that value was written:
leaves / enters residence → A ↔ (B|C|D)
gets into bed → C
gets out of bed, still cozy → D
new day starts / dresses → B (or A if heading out)
Only a LOCATION boundary or a TIME_CTX advance that crosses one
of the cascade lines may change ENV.
(3) If a boundary was crossed, re-run the top-down cascade to get
the new letter. If NOT, KEEP the previous 🧷 value verbatim.
(4) Write the resulting letter back to 🧷 in this turn's HUD.
Within a single response spanning multiple paragraphs, ENV does NOT
change unless the prose itself crosses a boundary; do not re-evaluate
per paragraph. When ambiguous at any step, KEEP the previous 🧷 value.
The HUD 🧷 is the single source of truth for current ENV. If prose and
🧷 ever disagree, 🧷 wins and the prose is treated as the error.
3. **Tag Index:**
EMOTION:
[Daily Tag Codes]
01_Smile|02_light_smile|03_angry|04_pout|05_hurt|06_disappointed|07_sad|08_fear|09_irritated|10_sulk|11_contempt|12_frustrated|13_overwhelmed|14_unhinged|15_expressionless
PROP:
17_eating_icecream_solo...
4. **Dialogue Rule:**
- Format: `[Character Name]: "Dialogue" (tag: {ENV}{NUM})`
- Narrative paragraphs for actions/thoughts ONLY. `(tag: {ENV}{NUM})`
같은 선택 규칙을 외부 이미지 출력에 쓰기
위 원본은 최종 출력을 (tag: A3)처럼 하도록 정해둔 버전입니다. 외부 이미지 주소를 직접 출력하는 버전에서는 의상·표정 선택과 HUD 유지 규칙은 그대로 두고, 최종 출력 규칙을 Markdown 이미지 형식으로 맞춥니다.
이미지 선택 흐름 보기
장소·시간·수면 상태 → 의상 코드 ENV 결정
표정·소품 → 번호 NUM 결정
ENV + NUM → 연결된 이미지 URL 선택
 출력
예를 들어 이미지 파일을 A01.png처럼 정리했다면, A01에 연결된 실제 이미지 주소를  안에 넣습니다. 알파벳·숫자는 작업자가 정한 약속이므로, 코드·파일명·주소의 연결이 일치하도록 관리합니다.
원본의 “Direct URL embedding is strictly forbidden”과 (tag:) 출력 형식은 이 직접 출력 방식에 맞게 바꿉니다. 마지막 Dialogue Rule에 있는 출력 형식도 함께 바꿔야 지시가 서로 충돌하지 않습니다. 이미지를 고르는 규칙과 화면에 표시하는 문법을 나누어 보면 응용하기 쉽습니다.
원본의 예시에는 A3, 목록에는 03_angry처럼 번호 표기가 섞여 있습니다. 연결할 때는 A3 또는 A03 중 실제 등록 키에 맞춰 통일합니다. 첫 턴에는 이전 HUD가 없으므로 시작 장면에 맞는 🧷 값을 초기 설정해두면 됩니다.
지원되는 사이트 목록
NSFW 이미지 호스팅 허용 여부를 기준으로 분류합니다. 외부 이미지 호출 지원과 NSFW 업로드 허용 여부는 별도로 확인합니다.
아래 추가 목록은 작업자가 제공한 사용 정보 기준의 초안입니다(2026-09-13). 각 서비스의 최신 공식 정책을 모두 대조한 목록은 아닙니다. ‘가능’은 모든 종류의 NSFW 콘텐츠를 제한 없이 허용한다는 뜻이 아닙니다.
NSFW 이미지 가능
| 서비스 | 작업자 제공 분류 | 메모 |
|---|---|---|
Catbox (catbox.moe) |
가능 | Litterbox와 구분. 아래 임시 보관 주의사항 참고 |
Image Chest (imgchest.com) |
가능 | 세부 허용 범위·외부 호출 조건 확인 예정 |
IGX (igx.kr) |
가능 — 먹물치킨님 제보 | 무료이며 가입 절차 필요(제보 기준). 공식 페이지에는 알파 테스트 진행 및 신청 안내가 표시되어 있습니다(2026-09-17 확인). 무료 범위·NSFW 세부 허용 조건은 공개 안내에서 확인하지 못했습니다. |
ImgBB (imgbb.com) |
부분적으로 가능 | 작업자가 확인한 NSFW 사용 사례 있음. 세부 허용 범위 확인 예정 |
Postimages (postimages.org) |
부분적으로 가능 | 허용되는 내용과 금지되는 내용의 경계 확인 예정 |
Imgbox (imgbox.com) |
가능 | 세부 허용 범위·외부 호출 조건 확인 예정 |
Pixhost (pixhost.to) |
가능 | 세부 허용 범위·외부 호출 조건 확인 예정 |
Freeimage.host (freeimage.host) |
가능 · 외부 노출 주의 | 작업자 제보: 업로드 이미지가 외부로 노출될 수 있음. 노출 경로·공개 설정 확인 예정 |
Upload.cc (upload.cc) |
가능 | 세부 허용 범위·외부 호출 조건 확인 예정 |
Imgpile (imgpile.com) |
가능 | 세부 허용 범위·외부 호출 조건 확인 예정 |
| Cloudflare R2 | 가능 | 작업자의 실제 사용 사례 있음. R2 객체 저장소에 관한 분류. 상세 사용 메모는 아래 참고 |
ITIMG.KR (itimg.kr) |
가능 | 작업자가 공식 허용을 확인. 상세 정보는 아래 참고 |
Catbox와 Litterbox는 구분하기
작업자의 안내에 따르면 litterbox.catbox.moe는 휘발성·임시 보관 서비스입니다. 계속 사용하는 스토리채팅 이미지 주소에는 사용하지 않는 것으로 안내합니다. 정확한 보관 기간은 공식 안내 확인 후 추가합니다.
ITIMG.KR — AI·스토리채팅용 이미지 호스팅
ITIMG.KR은 문커뮤니티가 운영하는 AI 채팅용 이미지 호스팅 서비스입니다. 짧은 이미지 주소를 쓰며, 유료 플랜에서는 URL의 값에 따라 글자와 모양이 바뀌는 동적 SVG를 지원합니다. 공개 정보 확인일: 2026-09-13. 공식 서비스 안내
| 플랜 | 저장공간 | 월 정상가 | 현재 표시된 월 구독 할인가 |
|---|---|---|---|
| 무료 | 10MB | 무료 | — |
| 프로 | 5GB | 11,000원 | 8,800원 |
| 프리미엄 | 10GB | 22,000원 | 17,600원 |
공식 요금표에는 트래픽 무제한과 월 구독 20% 할인이 표시되어 있습니다. 같은 페이지의 결제 안내에는 월 11,000원 표기도 남아 있으므로 실제 적용 금액은 결제 화면에서 확인합니다. 공식 요금 안내
짧은 주소 구조
다음은 작업자가 제공한 주소 구조 예시입니다. 이미지를 열어 확인한 링크가 아니라 경로 설명용입니다.
https://itimg.kr/27/cb1.webp
https://itimg.kr/27/a/tr.png
└ 폴더 / 파일명
작업자의 설명에 따르면 27은 가입 순번을 이용한 사용자 저장공간 식별자이며, 폴더를 만들면 그 뒤에 폴더명과 파일명이 붙습니다. 공식 소개에서도 숫자 경로 뒤에 파일명을 붙이는 짧은 주소를 예시로 보여줍니다. 공식 사용 예시
결제와 해외 지원
작업자의 이용·문의 경험 기준으로 유료 결제에는 한국 카드가 필요합니다. 해외 결제 지원 예정 — 일정 미정이며, 해외 지원이 열리면 안내받기로 했다는 문의 내용을 바탕으로 기재했습니다. 현재 공개 페이지에서 해외 지원 일정이나 결제 수단의 상세 조건은 확인하지 못했습니다. 무료 플랜 가입에도 한국 카드가 필수라는 의미는 아닙니다.
사용 경험으로 덧붙이는 기능 메모
- 작업자는 마지막 사용 당시 WebP 변환이 되는 것을 확인했다고 설명했습니다. 현재 자동 변환 조건과 원본 유지 여부는 미확인입니다.
- 작업자의 설명으로는 루나톡 운영자가 만든 서비스이며, 유료 사용자를 위한 SVG 제작도 제공받을 수 있습니다. 공식 페이지에서 확인되는 내용은 동적 SVG 기능의 유료 제공이며, 개별 SVG 제작 지원의 범위·조건은 별도 확인이 필요합니다.
NSFW 분류 근거
NSFW 이미지 호스팅 가능. 작업자가 공식 허용을 확인했다고 제공한 정보를 반영했습니다(2026-09-13). 세부 업로드 제한은 서비스 이용약관을 함께 참고합니다.
Cloudflare R2 — 직접 올려서 주소로 불러오기
작업자가 실제로 사용하는 외부 이미지 저장소입니다. 스토리채팅의 시작 메시지에서 내부 이미지가 간간이 잘 불러와지지 않을 때, R2에 올린 이미지 주소를 사용했습니다. NSFW 분류는 작업자 제공 사용 정보에 따른 것이며, 아래 공식 문서 확인은 요금과 설정에 관한 것입니다.
무료 범위
2026-09-13 공식 문서 확인 기준으로 Standard 저장소에는 매월 10 GB-month의 저장공간 무료 사용량이 포함됩니다. 한 달 내내 약 10GB를 저장하는 경우에 해당하는 단위입니다. 월 Class A 작업 100만 회와 Class B 작업 1,000만 회도 무료 범위에 포함되며, 인터넷으로 보내는 전송량에는 요금이 없습니다. 저장공간·작업 횟수의 무료 범위를 넘으면 과금될 수 있고, Infrequent Access에는 이 무료 범위가 적용되지 않습니다. R2 공식 요금
작업자는 처음 사용을 시작할 때 결제카드 등록·인증을 거쳤습니다. 실제 사용 중에는 체감되는 지연을 경험하지 않았습니다.
공개 주소로 시험해보는 흐름
- R2에서 버킷(Bucket, 파일을 담는 저장공간)을 만듭니다.
- 사용할 이미지를 업로드합니다.
- 버킷의
Settings→Public Development URL→Enable로 이동합니다. - 공개 접근 안내를 확인하고 활성화하면
r2.dev주소가 제공됩니다. 이 설정은 버킷 안의 파일을 인터넷에서 접근 가능하게 합니다. - 제공된 주소 뒤에 이미지의 경로·파일명을 붙여 사용합니다.
https://pub-예시식별자.r2.dev/폴더명/A01.webp
위 주소는 형식 예시입니다. 실제 버킷 주소와 업로드한 파일 경로로 바꿉니다.
r2.dev는 공식적으로 개발·테스트용이며 요청 속도 제한이 있는 주소입니다. 실제 공개 서비스 운영에는 사용자 도메인 연결을 안내하고 있습니다. 사용자 도메인은 주소를 원하는 형태로 정하는 것 외에도 캐시 등 기능을 사용하는 방법입니다. 작업자는 도메인 연결을 직접 사용해보지는 않았습니다. 공개 버킷과 도메인 안내
CORS Policy는 언제 만지나
일반적인 이미지 표시만 하는 경우와, 웹페이지의 코드가 다른 출처의 파일 내용을 읽거나 가공하는 경우를 구분합니다. 단순한 이미지 표시에는 보통 별도 CORS 설정이 필요하지 않지만, 이미지라도 JavaScript로 읽거나 캔버스에서 픽셀을 추출하면 필요할 수 있습니다. 즉, ‘이미지인가 다른 파일인가’보다 어떻게 가져와 사용하는가가 기준입니다. 필요한 경우 버킷의 Settings → CORS Policy에서 사용하는 사이트와 요청 방식에 맞게 설정합니다. R2 CORS 안내
NSFW 이미지 불가능
| 서비스 | 작업자 제공 분류 | 확인할 내용 |
|---|---|---|
| Imgur | 불가능 | 최신 공식 정책의 금지 범위 확인 예정 |
| GitHub | 불가능 | 작업자 제공 정보 기준. NSFW 이미지 호스팅 용도에서 제외 |
NSFW 이미지 확실치 않음
현재 이 분류에 등록한 사이트는 없습니다. 허용 범위가 확인되지 않은 사이트는 여기에 따로 기록합니다.
작업 환경 관찰 — 일본 쪽에서 본 조합
작업자가 접한 일본 쪽 사용 사례에서는 Catbox + 트위터(X) + 개인 서버 조합이 자주 보였습니다. 전체 이용 경향을 조사한 통계가 아니라 작업자의 관찰 메모입니다. 트위터(X)를 장기 외부 이미지 호스팅으로 추천하거나 안정성을 보장한다는 뜻은 아닙니다. 개인 서버 역시 실제 보관·운영 조건에 따라 달라집니다.