골목 · 직거래 — 신뢰 설계
오너의 문장: "생산자 이야기가 안 보인다. 우벨이 쇼호스트 역할을 해야 한다." 이 문서는 그 역할이 정확히 무엇인지 먼저 논증하고, 그다음에 화면을 세운다. 모든 문장은 규칙표 v1 검사법을 통과하도록 표(§5)에 O·X로 적었다.
감독의 가설은 "홈쇼핑의 근거는 말, 우벨의 근거는 시간"이었다. 결론부터: 가설은 맞다. 그러나 한 겹 아래가 있다 — 홈쇼핑에도 영상은 있다(산지 VTR). 다른 것은 영상의 유무가 아니라 그 기록이 만들어진 목적과, 말하는 자의 지갑이다.
| 홈쇼핑 쇼호스트 | 우벨 쇼호스트 | |
|---|---|---|
| 누가 말하나 | 판매 수수료를 받는 직원 | 수수료 없는 이웃 플랫폼 — 골목은 발걸음만 나른다 |
| 무엇으로 말하나 | 방송 중의 말과 시연 — 팔기 위해 제작 | 판매보다 먼저 있던 기록 — 수확일·영상 날짜·발걸음 |
| 시제 | 현재형 — "지금 주문하세요" | 과거형 — "다섯 달 전에 심었어요" |
| 생산자 | "산지 직송"의 익명 — 얼굴은 소품 | 문패와 신원이 있는 이웃 — 골목을 여는 조직이 문을 열어줌 |
| 걸리는 시간 | 방송 60분 안에 믿게 해야 함 | 한 계절이 걸려야 생김 — 그래서 빌릴 수도, 살 수도 없음 |
| 조작 비용 | 대본은 오늘 고칠 수 있다 | 지난 영상의 날짜는 못 고친다 · 발걸음 3번은 몸이 가야 한다 |
| 실패의 값 | 환불·CS — 회사가 치른다 | 단골이 끊긴다 — 생산자가 골목에서 치른다 |
| 화면의 동사 | 사세요 · 담으세요 | 다녀왔어요 · 받아보기 |
그래서 우벨 쇼호스트의 정의는 무엇인가.
판매로 돈을 벌지 않는 자가, 판매보다 먼저 있던 기록을, 날짜와 함께 읽어 주는 것. 세 근거가 겹으로 선다 — ① 시간의 증거(계절 영상·수확일), ② 여는 주체의 보증(이 골목은 호남신학대학교가 엽니다), ③ 아는 사람 관계(발걸음·단골·인사). 홈쇼핑은 셋 중 하나도 흉내 낼 수 없다: 수수료를 버려야 하고, 한 계절을 기다려야 하고, 손님의 몸이 가게까지 가야 하기 때문이다.
직거래에서 믿음이 건너가는 최소 단위는 무엇인가.
영상 한 편도, 얼굴 한 번도, 계절 하나도 아니다. "판매보다 먼저 있던, 날짜 붙은 기록 하나"다. 얼굴 한 번은 친숙함이지 믿음이 아니고, 영상 한 편도 오늘 찍었으면 광고다. 핵심은 시간차 — 기록된 시점과 파는 시점 사이의 거리다. 이 정의가 중요한 이유는 빈 상태를 살리기 때문이다: 영상이 0편이어도 "문패를 건 날 · 심방 다녀간 날 · 수확일"은 이미 날짜 붙은 기록이고, 우벨은 오늘부터 그걸로 말할 수 있다.
왜 별점·후기가 아니라 이것인가.
별점은 네 가지 이유로 진다. ① 별점은 모르는 다수의 평균이다 — 관계 없는 사람의 말, 곧 또 하나의 '말'이라 가설의 반대편에 선다. ② 조작이 싸다 — 리뷰 알바 한 건의 비용은 몇천 원이고, 방어가 플랫폼의 본업이 된다. ③ 비교의 언어다 — 골목의 가게들을 등수로 세우는 순간 골목이 쿠팡이 된다. ④ 우벨에는 이미 더 강한 신호가 있다 — 아는 소수의 반복. 발걸음 3번은 몸이 세 번 가야 하고, 인사는 실명을 스스로 건네야 한다. 시간·몸·이름이 드는 신호는 위조가 비싸다 — 계절 영상과 정확히 같은 원리다. 별점은 평균이고 발걸음은 누적이다. 평균은 깎이지만, 누적은 쌓인 만큼만 말한다.
모종 → 파종 → 자람 → 추수를 화면에 세우는 방식은 타임라인이 아니라 사다리다. 채워진 상태를 먼저 그리고 빈 칸을 남기는 설계(체크리스트·빈 슬롯)는 오늘 우벨의 모든 실패를 재생산한다. 규칙은 하나 — 있는 만큼만 그리고, 없는 칸은 아예 그리지 않는다. 문패의 철칙(빈 사진 프레임 금지)을 계절에도 적용한다.
영상이 없으면 계절 띠도, "영상을 기다려요"도, 빈 슬롯도 없다.
대신 날짜 붙은 사실의 목록이 선다: 문패를 건 날(markets.created_at),
심방 다녀간 날, 물건마다의 수확일. 전부 오늘 DB에 있는 행이다.
모른다는 사실을 목록으로 말하는 것 — 그게 0편의 쇼호스트다.
영상이 한 편이면 타임라인 뼈대에 한 칸만 채우지 않는다 — 그건 세 칸의 결핍을 전시하는 일이다. 카드 하나가 전부다: "다섯 달 전 · 콩을 심던 날" + 유튜브 업로드 날짜. 한 장면은 결핍이 아니라 시작이고, 시간이 지나면 카드가 늘어 스스로 띠가 된다. 띠는 2편부터 그린다.
우벨이 확실히 아는 것은 업로드 날짜뿐이다. 그래서 띠의 뼈대는 모종·파종이 아니라 3월·5월·7월이다. "심던 날 / 자라던 날 / 거두던 날 / 밭의 하루"는 주인이 영상을 고를 때 탭 한 번으로 붙이는 선택 라벨 — 안 붙이면 달만 남고, 그래도 띠는 성립한다. 자동 분류는 하지 않는다: 추측이 한 번 틀리면 띠 전체가 연출로 보인다.
같은 작물의 "심던 날"과 "거두던 날"이 모두 있으면 그 물건에 "한 철이 다 담겼어요"가 선다. 골목에서 금빛은 3번째 발걸음(단골)에만 쓰는 색 — 계절의 완주도 같은 문법의 관계 사건이라 금빛을 받는다. 이 순간이 이 설계 전체의 전환 목표다: 된장 12,000원이 "모르는 사람의 물건"에서 "다섯 달을 지켜본 물건"이 된다.
경로 A — 유튜브에 올리고 있는데, 우벨을 모르는 생산자.
심방이 이미 문을 두드리는 도구다. 심방자가 묻는 한 마디 — "유튜브 하세요?" — 와 채널 주소 한 줄이면
임포트 엔진(플랫폼 키 1개, 매일 sync)이 나머지를 다 한다. 생산자의 노동은 대답 한 번.
새 촬영도, 편집도, 앱 설치도 요구하지 않는다. 이미 올린 것을 가져오는 파이프는 라이브다 —
골목에 없는 것은 markets와 채널을 잇는 한 줄뿐이다(§6).
경로 B — 우벨은 아는데, 채널이 없는 생산자.
찍게 하지 않는다 — 농부는 편집자가 아니다. 이 가게의 시간은 오늘 한마디가 맡는다:
한마디에는 이미 날짜가 붙고(today_note_at), 쌓이면 그 자체가 작은 계절이다.
단 오늘 DB는 한마디를 덮어써서 이력이 없다 — "봄부터 쉰두 번의 한마디"를 말하려면 이력 한 줄이 필요하다(§5 표의 X 항목).
그리고 문패 철칙 ②를 계절에도 적용한다: 영상 있는 가게의 카드가 더 커지지 않는다. 채널 없는 가게는 2등 시민이 아니다.
우벨은 "사세요"라고 말하는 순간 홈쇼핑이 된다. 우벨의 발화는 광고가 아니라 증언이고, 증언의 문법은 다섯 줄로 요약된다.
O"오늘 거둔 수박이에요. 내일이 되면 이 문장은 스스로 내려가요."
양림밭 수박 1통 15,000원 · harvest_date가 오늘 — "오늘 수확" 라벨 로직은 이미 라이브(harvestLabel)
O"아침에 뜯은 상추 — 뜯은 만큼만 세어 40봉지예요."
상추 3,000원 · 수확일과 재고 수량 모두 DB 행. 재고는 숫자로만 말하고 "품절 임박"으로 바꾸지 않는다
O"닷새 전에 담근 된장이에요. 담근 날짜는 주인이 적었어요."
재래식 된장 500g 12,000원 · harvest_date d-5 — 날짜의 출처(주인)를 밝히는 것까지가 정직이다
O"어제 볶은 원두예요. 날짜는 가게가 적고, 우벨은 그대로 옮겨요."
핸드드립 원두 200g 13,000원 · harvest_date d-1 — 계절 문법은 농장만의 것이 아니다: 카페의 철은 볶은 날이다
O"우벨이 6월 12일에 이 가게에 다녀왔어요."
심방 기록이 있는 가게에서만 — "제가 직접 가봤는데요"의 우벨 판. 쇼호스트가 자기 발걸음으로 증언한다
O"이 골목은 호남신학대학교가 이웃을 위해 엽니다."
이미 라이브인 명판 문장 — 여는 주체의 보증. 골목 전체에 한 번, 가게마다 반복하지 않는다(§4 경계 참조)
O"문패 뒤에 신원이 확인된 이웃이 있어요."
status ACTIVE = 확인 절차를 지난 가게 — 교회명·실명 없이 확인 사실만. PIPA 경계 안의 최대치
O"가격은 가게가 정했고, 우벨은 수수료를 받지 않아요."
구조가 곧 문장 — 쇼호스트의 지갑이 비어 있음을 밝히는 것이 모든 증언의 자격이다
X"이 된장의 콩을 심던 날이 다섯 달 전 영상에 있어요."
이 설계의 목표 문장 — markets↔유튜브 연결과 고른 영상 한 행이 서야 쓸 수 있다(§5·§6)
X"심은 날부터 거둔 날까지 148일 — 그 사이 영상 여섯 편이 남아 있어요."
한 철 완주 문장 · 금빛의 순간 — 같은 연결 위에서 심던 날·거두던 날 라벨 두 개가 있어야 계산된다
X"이 영상은 우벨이 찍은 게 아니에요. 주인이 올린 그대로, 날짜까지 그대로예요."
모든 계절 띠 하단에 고정으로 붙는 출처 문장 — 연출이 아님을 문장으로 못박는다
X"이 가게를 세 번 넘게 찾은 이웃이 일곱이에요."
발걸음·단골 데이터는 있으나 집계를 공개하는 RPC가 없다 — 이름 없이 숫자만 여는 얇은 함수 하나면 O
X"봄부터 쉰두 번의 '오늘 한마디'가 쌓였어요."
채널 없는 가게의 계절 — 한마디는 지금 덮어쓰기라 이력이 없다. note history 한 줄이 서야 O
"사세요 · 드셔보세요 · 놓치지 마세요"
권유가 시작되는 순간 증언이 광고가 된다. 우벨의 동사는 "다녀왔어요"뿐이다.
"마감 임박 · 한정 수량 · 서두르세요"
재고는 사실이지만 임박은 연출이다. 숫자는 말하되 숫자로 겁주지 않는다.
"최저가 · 어디보다 싸게"
비교는 골목을 등수로 바꾼다. 가격은 가게가 정한 사실로만 선다.
"무려 · 역대급 · 최고의"
강조 부사는 날짜가 없는 말이다 — 원칙 ①에서 자동으로 떨어진다.
"별점 4.8 · 리뷰 1,247개"
모르는 다수의 평균을 만들지 않는다. 우벨의 신호는 아는 소수의 반복이다(1부).
"이번 주 방송 · 라이브 특가"
없는 방송을 예고하지 않는다 — 거짓 활기 금지 계약. 씨앗 글 192건을 지운 날의 교훈.
"믿을 수 있는 · 정직한 · 착한"
신뢰를 형용사로 주장하지 않는다. 신뢰는 주장이 아니라 날짜다.
아직 모르는 생산자 앞에서 우벨은 무엇이라 말하는가.
침묵도, 지어낸 소개도 아니다. "우벨이 아는 것"의 짧은 목록을 그대로 보여준다 — "문패를 건 날 3월 4일 · 다루는 것 넷 · 아직 그게 다예요." 모른다고 말하는 쇼호스트는 홈쇼핑에 존재할 수 없고, 그래서 이 문장이 역설적으로 가장 강한 차별점이다. 아는 것이 쌓이면 목록이 길어질 뿐, 화면의 구조는 바뀌지 않는다.
상호·물건·날짜는 전부 오늘 DB의 시연 행(000110 한울농원 시드)에서 가져왔다.
영상 카드의 그림은 썸네일 자리 표시일 뿐 — 실제 화면에서는 유튜브 썸네일(i.ytimg.com)이 들어온다.
영상이 없는 가게 화면(목업 6)이 이 장의 절반이다.
우리 골목
한울농원
3월에 심는 영상부터, 지나온 철 6편
카페 이도
어제 볶은 원두가 있어요
계절은 목록에서 한 줄이다. 카드가 커지면 영상 없는 가게가 2등 시민이 된다 — 문패 철칙 ②를 그대로 계승한다.
문장은 개수와 시작점만 말한다("3월부터 6편"). 목록에서 재생하지 않는다 — 골목은 피드가 아니다.
‹ 골목
한울농원
지나온 철
3월 · 심던 날
콩을 심었어요
유튜브 · 3월 9일 올림
5월 · 자라던 날
밭이 푸르러요
유튜브 · 5월 21일 올림
7월 · 거두던 날
첫 수확
유튜브 · 7월 30일 올림
주인이 올린 그대로, 날짜까지 그대로예요.
다루는 것
닷새 전 담금
우벨이 된장의 콩을 심던 날이 다섯 달 전 영상에 있어요.
오늘 수확
우벨오늘 거둔 것이에요. 내일이 되면 이 줄은 스스로 내려가요.
우벨이 아는 것
증언은 물건 옆에서만 완성된다. "지나온 철"과 증언 줄은 "다루는 것" 곁에 서고, 찾아가는 줄(발걸음의 버튼)은 원래 자리를 지킨다.
증언 줄의 화자 표시는 작은 우벨 도장 하나 — 누가 말하는지 없으면 광고와 구별되지 않는다.
비로그인이 보는 전부다: 물건·가격·시간·동네, 그리고 주인이 스스로 유튜브에 공개한 것. 사람·관계는 한 글자도 없다.
우벨이 아는 것
한울농원이 영주님을 기억해요 · 나의 발걸음 4번
로그인은 벽이 아니라 겹이다. 화면 구조는 같고, 관계의 줄(내 발걸음·인사·단골 숫자)만 더해진다.
단골 숫자는 이름 없는 집계다 — "일곱이에요"까지만. 누구인지는 그 일곱 사람과 가게만 안다.
‹ 한울농원
한울농원의 시간
한 철이 다 담겼어요
심은 날부터 거둔 날까지 148일이 이 밭에 있었어요.
3월
심던 날
콩을 심었어요
3월 9일 올림
밭의 하루
이랑을 갈다
3월 22일 올림
5월
자라던 날
밭이 푸르러요
5월 21일 올림
7월
거두던 날
첫 수확
7월 30일 올림
이 영상들은 우벨이 찍은 게 아니에요. 주인이 올린 그대로, 날짜까지 그대로예요.
세 근거가 한 화면에 겹친다 — 위에서부터 시간(계절 완주·금빛), 기록의 출처(주인의 유튜브), 여는 주체의 보증(명판).
조직 이름은 여기서도 명판 한 줄뿐이다. 가게에 교회명을 박는 순간 그 사람의 종교가 무동의로 공개된다 — 보증은 골목 단위, 신원 확인은 배지 단위.
내 가게의 시간
유튜브 채널 주소
영상 34편을 찾았어요
밭이 나온 영상을 골라 주세요. 고른 것만 가게에 걸려요.
콩 심는 날
3월 9일
5월의 밭
5월 21일
이 영상은 무엇을 하던 날인가요? (안 골라도 돼요)
주인의 노동은 붙여넣기 한 번 + 탭 몇 번. 임포트·매일 sync는 이미 있는 엔진(플랫폼 키 1개)이 맡는다.
"고른 것만 걸려요"가 공개 경계다 — 채널의 다른 영상(가족·예배 등)은 우벨이 꺼내오지 않는다. 문을 여는 것은 언제나 주인이다.
내 가게의 시간
채널이 없어도 괜찮아요
가게의 시간은 영상만으로 쌓이는 게 아니에요. 오늘 한마디에도, 물건에 적는 수확일에도 날짜가 남아요.
오늘 한마디
손님에게 지금 보이는 것
지어낸 소개나 빈 칸은 손님에게 보이지 않아요. 없는 건 없다고만 말해요.
빈 상태가 이 설계의 절반이다. 첫 생산자는 계절을 아직 안 지났다 — 그날 이 화면이 거짓말을 하면 전부 무너진다.
그래서 빈 화면의 일은 채우라는 재촉이 아니라, 지금 이미 보이는 날짜들을 주인에게 확인시켜 주는 것이다.
경계선의 원칙: 주인이 스스로 연 것은 공개, 시스템이 아는 것은 비공개. 유튜브에 이미 공개한 영상을 주인이 골라 거는 행위는 본인이 여는 문이라 PIPA 경계 안에서 공개 가능하다 — 단 "골라 건 것만"이 조건이고, 채널 연결이 곧 전체 공개가 아니다.
검사법: 이 문장이 말하는 사건을 오늘 DB에서 한 행이라도 보여줄 수 있는가. 없으면 아직 못 쓰는 문장이다.
| 화면 | 문장 | 말하는 사건 | 오늘 | X면 무엇이 있어야 O가 되는가 |
|---|---|---|---|---|
| 가게 단면 | "오늘 거둔 수박이에요. 내일이 되면 이 문장은 스스로 내려가요." | market_listings.harvest_date = 오늘 | O | harvestLabel 로직 라이브 |
| 가게 단면 | "아침에 뜯은 상추 — 뜯은 만큼만 세어 40봉지예요." | harvest_date + 재고 수량 행 | O | — |
| 가게 단면 | "닷새 전에 담근 된장이에요. 담근 날짜는 주인이 적었어요." | harvest_date d-5 행 | O | — |
| 가게 단면 | "어제 볶은 원두예요. 날짜는 가게가 적고, 우벨은 그대로 옮겨요." | harvest_date d-1 행 | O | — |
| 아는 것 목록 | "3월 4일, 이 골목에 문패를 걸었어요." | markets.created_at | O | — |
| 아는 것 목록 | "우벨이 6월 12일에 이 가게에 다녀왔어요." | 심방 방문 기록 행 | O* | *심방 기록이 있는 가게에서만 — 없으면 줄 자체가 안 선다 |
| 골목 명판 | "이 골목은 호남신학대학교가 이웃을 위해 엽니다." | 골목 host 조직 | O | 라이브 |
| 가게 단면 | "문패 뒤에 신원이 확인된 이웃이 있어요." | markets.status = ACTIVE | O | — |
| 가게 단면 | "가격은 가게가 정했고, 우벨은 수수료를 받지 않아요." | 구조 사실(수수료 0) | O | — |
| 골목 카드 | "3월에 심는 영상부터, 지나온 철 6편" | 가게에 걸린 영상 6행 | X | markets↔유튜브 연결 + 고른 영상 표(§6-1·2) |
| 증언 줄 | "이 된장의 콩을 심던 날이 다섯 달 전 영상에 있어요." | 물건↔영상 연결 + 영상 날짜 | X | §6-2 + 물건-영상 연결 한 칸(선택: 작물명 매칭) |
| 이 사람의 계절 | "심은 날부터 거둔 날까지 148일 — 영상 여섯 편이 남아 있어요." | 심던 날·거두던 날 라벨 2행 | X | §6-2의 stage 라벨(주인이 탭 한 번) |
| 계절 띠 하단 | "주인이 올린 그대로, 날짜까지 그대로예요." | 영상 출처 = 주인 채널 | X | §6-1 연결이 서면 문장은 자동으로 참 |
| 아는 것 목록(로그인) | "이 가게를 세 번 넘게 찾은 이웃이 일곱이에요." | visits ≥ 3 집계 | X | 이름 없는 공개 집계 RPC 하나(데이터는 있음) |
| 채널 없는 가게 | "봄부터 쉰두 번의 '오늘 한마디'가 쌓였어요." | 한마디 이력 52행 | X | 오늘 한마디 이력 보존(지금은 덮어쓰기) |
| 주인 화면 | "영상 34편을 찾았어요." | 채널 임포트 결과 행들 | X* | *엔진은 라이브(교회 스코프) — market 스코프 연결만 필요(§6-1) |
전부 이미 있는 엔진의 재사용이다. 새로 짓는 것은 표 두 개와 함수 하나 수준.
가게↔채널 연결. markets에 유튜브 채널 한 칸 — 교회 스코프로 도는 임포트·매일 sync 엔진(플랫폼 키 1개)을 market 스코프로 한 번 더 태운다. 파이프는 새로 짓지 않는다.
고른 영상 표. market_season_clips(market_id, youtube_id, published_at, stage?, picked_at) — 주인이 고른 것만 들어간다. stage는 탭 한 번의 선택 라벨, 없어도 달 순서 띠는 성립.
이름 없는 집계 RPC. "세 번 넘게 찾은 이웃 N" — visits 데이터는 이미 있고, 숫자만 여는 얇은 함수 하나.
오늘 한마디 이력. 덮어쓰기 전에 한 줄 남기기 — 채널 없는 가게의 계절이 여기서 나온다.
심방 각본에 한 마디 추가. "유튜브 하세요?" — 경로 A의 전부. 기능이 아니라 문장 하나다.
우벨 쇼호스트 설계 · 2026-08-07 · 페이블
상호·물건·가격·수확일은 000110 시연 시드의 실제 행 · 영상 카드의 그림은 썸네일 자리 표시 · 구현 시 한 문장은 한 줄로(JSX 공백 함정) · 조사는 lib/korean.ts particle() 전제