| name | photoreal |
| description | AI 티가 나지 않는 실사 사진, 특히 인물 사진을 만들기 위한 프롬프트 설계 스킬. 이미지 모델이 기본으로 끌리는 광고·화보식 완벽함을 상쇄해 스마트폰으로 찍은 SNS 스냅처럼 보이게 만드는 지시문 층, 조립 규칙, 생성 후 점검 체크리스트를 제공한다. 사용 시점: '실사', '실사같은', '사진처럼', '리얼한 사진', 'AI 티 안 나게', 'AI 같지 않게', '진짜 사람 같은', '실존감', 'SNS 사진', '셀카', '스냅 사진', '인물 사진', '프로필 사진', '일상 사진', '실사 프롬프트' 같은 말이 나올 때, 그리고 사람이 등장하는 사진풍 이미지를 생성하려는 모든 경우에 반드시 이 스킬을 먼저 읽을 것. 사용자가 '실사'라는 단어를 쓰지 않아도 결과물이 '찍은 사진'처럼 보여야 하는 요청이면 해당한다. 실제 생성은 codex-image 등 이미지 생성 스킬이 맡고, 이 스킬은 그 프롬프트를 만든다. 일러스트·애니풍·3D 렌더·로고·다이어그램처럼 사진이 아닌 그림체 요청은 제외. |
실사 사진 프롬프트
무엇을 상대하고 있는가
이미지 모델은 학습 데이터에서 '잘 찍힌 사진'으로 취급된 것들 — 광고, 화보, 스톡 이미지, 보정 끝난 프로필 — 쪽으로 끌린다. 그래서 아무 지시 없이 사람을 그리면 이렇게 나온다.
무결점 피부, 3점 조명, 정중앙 구도, 완벽한 좌우 대칭, 카탈로그 미소, 정면 응시, 유리알 같은 큰 눈동자.
하나하나는 '잘 그린' 것이지만, 이 일곱 개가 한 장에 다 모이면 사람은 즉시 AI를 알아본다. 현실의 사진에는 이 조합이 존재하지 않기 때문이다.
그래서 실사감은 디테일을 더해서 얻는 게 아니라, 이 기본 끌림을 상쇄해서 얻는다. 프롬프트의 목적은 "더 잘 그려줘"가 아니라 "덜 완벽하게 그려줘"다. 이 스킬의 모든 지시문은 그 상쇄를 위한 것이다.
상쇄에는 방향이 있다. 너무 적게 하면 광고 사진이 나오고, 너무 많이 하면 실패한 사진이 나온다. 아래 층마다 그 균형점을 적어 뒀다.
작업 순서
- 피사체와 상황을 정한다 (누가, 어디서, 무엇을 하는 중인가)
- 아래 5개 층에서 필요한 것만 골라 프롬프트를 조립한다
scripts/build_prompt.py 로 변형 N장을 뽑는다 — 실사는 한 방에 안 나오므로 3~5장 병렬 생성이 기본
codex-image 스킬로 생성한다
- 아래 생성 후 점검으로 확인하고, 걸린 항목만 보강해 재생성한다
다섯 개 층
층은 아래로 갈수록 세밀해진다. 위 두 층만으로도 상당히 좋아지고, 얼굴이 크게 나오는 컷일수록 아래 층이 중요해진다.
L1 — 출처: 누가 왜 찍었나
가장 효율이 높은 층이다. "이 사진은 광고가 아니라 일상의 기록"이라는 전제 하나가 조명·구도·표정·화질을 한꺼번에 끌고 온다.
스마트폰으로 찍은 자연스러운 사진. 광고 모델 촬영이 아니라 일반인이 일상에서 찍어 SNS에 올릴 법한 한 장. 고성능 카메라가 아닌 폰 카메라 스냅의 질감.
한 문장만 쓸 수 있다면 이 층을 쓴다.
L2 — 빛과 화질: 너무 깨끗한 것을 막는다
창으로 들어오는 자연광이나 그 자리에 원래 있는 조명만으로 촬영. 스튜디오 라이팅 없음. 약간의 손떨림, 폰 카메라 특유의 노이즈, 가벼운 해상감의 거칠음을 남길 것. CG 같은 질감과 과한 보정, 부자연스러운 광택은 억제.
빛을 '그 자리에 있는 것'으로 한정하면 그림자가 한 방향으로 떨어지고 색온도가 섞인다. 스튜디오 조명은 그림자를 지우는데, 그림자가 없는 얼굴이 AI 티의 큰 축이다.
역광을 쓸 때는 한 문장을 더 붙인다. 모델은 역광을 주문받아도 습관적으로 얼굴 앞면을 밝힌다. "얼굴 앞면의 그림자를 인위적으로 밝히지 말 것"을 명시하면 뒤통수와 잔머리 끝만 빛나는 진짜 역광이 나온다. 이게 먹으면 실사감이 크게 오른다.
야경에 빛망울을 주문할 때는 조심한다. '초점 나간 간판 불빛', '보케' 같은 표현은 모델을 영화 스틸 쪽으로 끌어당긴다. L1의 "폰 스냅"이 밀려나 배경 흐림이 폰으로는 불가능한 깊이가 된다. 야경 원경에서는 빛망울을 아예 빼거나, "폰 카메라 수준의 얕은 흐림"처럼 정도를 못 박는다.
L3 — 구도와 순간: 사람이 찍은 티를 낸다
구도를 완벽하게 다듬지 말고 약간의 기울기나 여백의 치우침을 남긴 자연스러운 프레이밍. 촬영을 위해 만든 포즈가 아니라 일상의 도중을 우연히 포착한 순간. 정면 카메라 응시를 고정하지 말고 살짝 비낀 시선.
'우연히 찍힌 순간'은 손과 몸의 자세까지 바꾼다. 포즈를 지우면 팔이 어정쩡하게 놓이고 옷에 주름이 생기는데, 그게 현실이다.
프레임을 가리는 방해물도 여기 속한다. 앞사람 어깨, 앞좌석 등받이, 창틀 — 실제 사진에는 항상 뭔가가 걸린다. 하나 넣으면 "찍은 사람이 그 자리에 있었다"는 감각이 생긴다.
L4 — 해부학: 얼굴·피부·손·머리카락
얼굴이 화면의 1/4 이상을 차지하면 이 층 없이는 거의 실패한다.
- 골격: 윤곽·뼈대·눈·눈썹·코·입술 배치를 현실적이고 조화로운 밸런스로
- 눈: 동공을 크게 키우지 말고 흰자위의 양·좌우 차이·눈꺼풀 두께를 자연스럽게 남길 것
- 표정: 웃음을 과하게 만들지 말고 입꼬리와 눈가의 미세한 움직임 정도로
- 비대칭: 눈썹·눈가·입꼬리에 아주 미세한 좌우 차이. 완벽한 대칭 금지
- 피부: 고르게 매끄럽게 하지 말고 모공·잔털·옅은 붉은 기·자연스러운 음영을 적당히 남길 것
- 머리카락: 가닥가닥 고르게 정돈하지 말고 흩날린 머리·잔머리·묶음의 불규칙함을 남길 것
- 손: 손가락의 개수·관절·길이·겹치는 방식을 자연스럽게. 물건을 쥐는 방식도 현실적으로
손은 두 번 지시해야 한다. 해부학과 동작 논리는 별개 문제다. "손가락 개수와 관절이 자연스럽게"만 쓰면 손가락은 완벽한데 칼날 앞에 손가락을 쫙 편, 실제로는 다치는 자세가 나온다. 손이 무언가를 하고 있다면 그 동작을 하는 손의 모양을 따로 적는다 — "마늘을 쥔 손은 손가락을 구부려 세우고", "컵 손잡이에 검지를 걸고".
L5 — 미의 상한선: 어디까지 예쁘게 할 것인가
이 층이 없으면 위의 지시들이 "못생기게 그려줘"로 해석되어 매력이 무너진다. 실사감과 매력은 상충하지 않는다는 걸 명시해야 한다.
아름다움은 유지하되 얼굴과 피부를 완벽하게 다듬지 말 것. 청결감·단정함·친근함을 남기면서 현실에 존재할 법한 매력을 우선. 완벽함보다 실존감·생활감·자연스러운 불완전함이 먼저.
마무리에 이 문장을 두면 앞의 감점 지시들이 균형을 찾는다. 실전에서 가장 효과가 큰 마지막 한 줄이다.
다만 이 층은 양쪽으로 다 실패한다. 빼면 초라해지고, 세게 쓰면 배우 얼굴로 돌아간다. "아름다움", "매력적인", "귀여운" 같은 단어를 강하게 쓰면 모델이 L4의 결함 지시를 무시하고 화보 쪽으로 되돌아간다 — 모공을 주문했는데 매끈한 피부가 나오면 이걸 의심한다. 강도를 세 단계로 조절한다.
| 강도 | 문구 | 쓸 곳 |
|---|
| 약 | 호감 가는 인상은 유지하되 | 기본값. 대부분의 일상 컷 |
| 중 | 매력적이되 완벽하게 다듬지 말고 | 인물이 주인공인 컷 |
| 없음 | (미의 문구 없이 실존감만) | 노인, 다큐멘터리, 손·사물 클로즈업 |
나이를 지정할 때
L4의 피부·주름 지시는 나이를 위로 민다. 20대 중반을 주문하고 모공·잔털·붉은 기를 넣으면 30대 초반이 나오고, 30대 후반을 주문하면 40대가 나온다. 실측에서 반복적으로 관찰된다.
나이가 중요한 컷이면 한 줄을 더 붙인다.
지정한 나이대로 보일 것 — 피부 질감 지시가 실제 나이보다 들어 보이게 만들지 않도록.
또는 결함의 종류를 나이에 맞게 고른다. 20대에는 주름 대신 유분·모공·여드름 자국·잔털, 40대 이상에는 주름과 색소 침착. 20대에 눈가 주름을 주문하면 그 자체로 나이가 올라간다.
여러 명이 나오는 컷
단일 인물 지시를 그대로 쓰면 안 된다. "비낀 시선" 하나를 여러 명에게 적용하면 전원이 같은 곳을 보는 연출 사진이 된다. 네 가지를 따로 챙긴다.
- 시선을 사람 수만큼 나눈다 — 한 명은 화이트보드, 한 명은 자기 노트북, 한 명은 말하는 사람 얼굴, 한 명은 딴생각하듯 아래. 그리고 "아무도 카메라를 보지 않음"
- 뒤쪽 인물을 명시한다 — "뒤쪽 인물의 얼굴과 손도 또렷하게 그릴 것". 안 쓰면 배경 사람이 녹는다
- 옷차림에 편차를 준다 — 안 주면 전원이 같은 톤의 옷을 입는다. 색·소재·차림새 중 하나는 어긋나게
- 자세를 제각각으로 — 한 명은 팔짱, 한 명은 턱을 괴고, 한 명은 의자를 뒤로 젖히고
L5는 여기서 특히 조심한다. 혼성 그룹에 "예쁘되"를 쓰면 문장이 어그러진다. 위 표의 '약' 강도를 쓴다.
부정문을 긍정문으로 바꿔 쓴다
이 스킬에서 가장 실무적인 규칙이다. 이미지 모델은 "~하지 마"를 자주 흘린다. "매끄럽게 하지 마"라고 쓰면 '매끄러움'이라는 개념만 남고 부정이 사라져 오히려 더 매끄러워질 때가 있다.
금지 대신 남길 것을 지목한다.
| 흘리기 쉬운 부정문 | 잘 먹는 긍정문 |
|---|
| 피부를 매끄럽게 하지 마 | 모공과 잔털, 옅은 붉은 기가 보이는 피부 |
| 대칭으로 하지 마 | 왼쪽 눈썹이 오른쪽보다 아주 조금 높음 |
| 포즈 취하지 마 | 컵을 내려놓다 말고 옆을 보는 중간 동작 |
| 정면을 보지 마 | 카메라에서 살짝 벗어난 창밖 쪽 시선 |
| 완벽한 구도로 하지 마 | 수평이 1~2도 기울고 인물이 프레임 왼쪽으로 치우침 |
| 보정하지 마 | 필터 없이 갤러리에 그대로 남은 원본 |
부정문을 완전히 없앨 필요는 없다. 다만 중요한 항목은 반드시 긍정문 짝을 함께 둔다.
조립 템플릿
[피사체] [상황·행동] [장소·시간]
[L1 출처] [L2 빛·화질] [L3 구도·순간]
[L4 해부학 — 필요한 항목만] [L5 미의 상한선]
예시 — 완성 프롬프트
20대 후반 한국인 여성이 자취방 창가 낮은 테이블 앞에 앉아 아이스커피 컵을 내려놓다 말고 창밖을 보는 순간. 늦은 오후, 창으로 들어오는 자연광만으로 촬영. 광고 촬영이 아니라 친구가 폰으로 무심히 찍어 SNS에 올릴 법한 스냅. 수평이 살짝 기울고 인물이 프레임 왼쪽으로 치우친 프레이밍. 카메라를 정면으로 보지 않는 비낀 시선, 입꼬리만 미세하게 올라간 표정. 모공과 잔털, 코 옆의 옅은 붉은 기가 남은 피부, 이마에 흘러내린 잔머리 몇 가닥, 왼쪽 눈썹이 아주 조금 높은 미세한 비대칭. 컵 손잡이에 검지를 걸어 쥔 손. 폰 카메라 특유의 노이즈와 가벼운 손떨림, 과한 보정이나 광택 없음. 호감 가는 인상은 유지하되 완벽하지 않은, 20대 후반으로 보이는 사람.
길이는 이 정도가 적당하다. 더 길게 쓰면 모델이 앞부분을 흘리기 시작한다.
프롬프트 생성 스크립트
매번 위 문장들을 손으로 타이핑하면 누락이 생기고, 병렬 생성 시 변형을 주기도 번거롭다. 스크립트를 쓴다.
python3 ~/.claude/skills/photoreal/scripts/build_prompt.py \
--subject "20대 후반 한국인 여성" \
--scene cafe \
--n 4
--scene : cafe home street commute park restaurant office night custom
--n : 변형 개수. 아래 변형은 무엇을 바꾸나 참고
--level : light(L1+L2) / standard(기본, L1~L3+L5) / full(전 층)
--shot : other(기본, 남이 찍음) / selfie(셀카)
--group N : N명이 나오는 컷. 시선 분배·뒤쪽 인물·옷차림 편차를 자동으로 넣는다
--charm : plain(기본) / attractive / none — L5 강도
--age-lock / --no-age-lock : 나이 고정 문장. --level full 에서 기본 켜짐
--lang : ko(기본) / en / both
--emit-batch <dir> : codex-image 배치 스크립트 명령줄까지 출력
--scene custom 이면 --situation "..." 으로 상황을 직접 넣는다. 여러 번 반복하면 변형마다 다른 상황이 돌아간다.
변형은 무엇을 바꾸나
3~5장을 뽑는 이유는 그중에서 고르기 위해서다. 그런데 조명만 바꾸면 N장이 다 비슷하게 나온다. 같은 상황을 박아 두고 빛만 돌리면 인물 배치와 자세가 그대로라 고를 게 없다.
바꿔야 할 축은 넷이고, 위쪽일수록 결과가 크게 갈린다.
- 상황·동작 — 무엇을 하는 중인가. 가장 크게 바뀐다
- 촬영 위치 — 옆자리에서 / 서서 내려다보며 / 문간에서
- 거리 — 얼굴 클로즈업 / 상반신 / 전신
- 조명 — 가장 작게 바뀐다
프리셋 씬(cafe 등)은 상황을 자동으로 돌린다. custom 을 쓸 때는 --situation 을 N개 넘기거나, 프롬프트를 직접 손봐서 상황을 다르게 잡는다.
생성 후 점검
실사 프롬프트는 한 번에 통과하지 않는다. 3~5장을 병렬로 뽑아 그중 고르는 게 기본 운용이다. 뽑은 장을 아래 순서로 본다. 위쪽이 더 자주 깨진다.
- 손의 해부학 — 손가락 개수, 관절 방향, 길이. 가장 흔한 실패
- 손의 동작 논리 — 그 손이 그 동작을 실제로 할 수 있는 자세인가. 개수가 맞아도 여기서 걸린다
- 눈동자 하이라이트 — 좌우 반사광이 픽셀 단위로 똑같으면 CG. 위치나 모양이 조금 달라야 함
- 글자 — 간판, 컵 로고, 옷의 프린트. 뭉개진 글자는 즉시 AI 티. 프롬프트에서 글자 있는 소품을 빼는 게 빠른 해결
- 나이 — 지정한 나이대로 보이는가. 위로 밀렸으면 위의 나이를 지정할 때 참고
- 피부의 균질도 — 이마·볼·턱의 질감이 전부 같으면 실패. 코 주변과 볼에 색 차이가 있어야 함
- 머리카락 경계 — 귀 뒤, 어깨 위에 얹힌 부분, 잔머리 끝. 붓으로 그린 듯 뭉치면 실패
- 배경 인물 — 뒤쪽 사람의 얼굴·다리가 녹아 있는지
- 그림자 방향 — 얼굴, 몸, 소품의 그림자가 한 광원으로 설명되는지
- 결이 폰 사진인가 — 배경 흐림이 폰으로 낼 수 없는 깊이면 영화 스틸로 넘어간 것
- 치아 — 웃는 컷이면 개수와 간격
걸린 항목이 있으면 그 항목만 긍정문으로 보강해 재생성한다. 전체 프롬프트를 다시 쓰지 말 것. 프롬프트가 통째로 바뀌면 마음에 들었던 다른 요소까지 날아간다.
흔한 실수
- 20개 지시를 다 넣기 — 결함 지시가 과하면 '노이즈 낀 흐린 사진'이 되어 매력이 무너진다. 필요한 층만 쓴다. 특히 전신·원경 컷에 L4 얼굴 지시를 다 넣을 이유가 없다.
- L5를 빼거나 세게 쓰기 — 빼면 초라해지고 세게 쓰면 배우 얼굴이 된다. 위 강도표 참고.
- 화질 지시를 과하게 — "심한 노이즈", "흔들린 사진"까지 가면 실사가 아니라 실패한 사진이 된다. '가벼운', '약간의' 같은 정도 부사를 반드시 붙인다.
- 카메라 스펙 나열 — "85mm f/1.4, ISO 100, 소니 A7"은 오히려 화보 쪽으로 끌어당긴다. 폰 스냅을 원하면 스펙을 쓰지 않는다. 야경의 '보케'도 같은 함정이다.
- 한 장으로 판단 — 같은 프롬프트도 장마다 편차가 크다. 프롬프트를 고치기 전에 같은 프롬프트로 몇 장 더 뽑아본다.
- 변형을 조명으로만 주기 — N장이 다 비슷해진다. 위 변형은 무엇을 바꾸나 참고.
- 부정문만 쓰기 — 위 대응표 참고.
잘 먹히는 상황
실사감이 특히 잘 살아나는 상황들이다. 사용자가 상황을 정해주지 않았을 때 여기서 고르면 실패 확률이 낮다.
- 역광 클로즈업 — 얼굴 그림자를 안 채우면 즉시 실사
- 아래에서 오는 광원 — 폰 화면, 테이블 조명. AI가 거의 안 그리는 빛
- 땀·홍조·부은 눈 — 무결점 피부의 정반대라 상쇄가 강하게 걸린다
- 웃음이 터진 순간 — 눈이 감기고 얼굴이 비대칭이 되어 카탈로그 미소를 못 만든다
- 유리 너머 — 빗방울·창밖·실내 반사가 각각 다른 초점으로 겹치면 광학적으로 진짜처럼 보인다
- 프레임을 가리는 방해물 — 앞사람 어깨, 앞좌석 등받이
- 막 일어난 얼굴 — 베개 자국, 눌린 머리. L5 '약'과 함께 쓴다
더 볼 것
references/directives.md — 20개 원본 지시문 전문, 층별 분류, 각각의 효과와 긍정문·영문 대응. 특정 항목이 안 먹을 때 다른 표현을 찾아볼 것
references/scenes.md — 국가별(한국·일본·미국) 디테일과 상황 프리셋. 나라를 지정한 인물을 그릴 때 옷·헤어·배경·소품이 뭉뚱그려지지 않게 함
scripts/build_prompt.py — 프롬프트 조립기
사람을 그릴 때
실존 인물의 얼굴을 재현하는 용도로 쓰지 않는다. 이 스킬은 가상의 인물을 현실감 있게 그리기 위한 것이고, 특정 실존 인물처럼 보이게 해달라는 요청은 다른 문제다. 생성 결과를 실제 인물의 사진으로 제시하는 용도(가짜 프로필, 사칭)로 쓰지 않도록 하고, 결과물이 실사와 구분이 어려운 만큼 사용자가 용도를 밝히지 않았다면 한 번 확인하는 편이 낫다.