Reddit 생성기 착수 — ✅ 결정 11건 전부 확정

절차는 소셜 생성기 착수 프로세스 에 있습니다. 이 문서는 이번 소셜에서 사람이 골라야 하는 것만 담습니다. 고르면 아래에 답이 조립되니 그대로 돌려주시면 됩니다.

단계 0 — 이미 끝나 있는 것

고칠 필요가 없는 넷
🔴 이 소셜만 다른 것 셋
🔬 착수 직전 실측 — 2026-08-11 · URL 3종 · $0.124

초안이 추정으로 적어둔 것 셋을 실제로 불러서 확인했습니다. 셋 다 초안과 달랐습니다. 이 표가 V-1(Venue 미생성) 확정과 결정 R-1·R-3 의 근거입니다.

URL반환 건수첫 건의 dataType구성과금
/r/{sub}/comments/{id}1post글 1건$0.022
/r/{sub} 서브레딧10post글 10건 — community 가 한 건도 없음$0.04
/user/{u} 유저21user_profile프로필 1 + 댓글 20$0.062

선례 교차 점검 — 앞 5소셜과 대조했습니다

초안을 쓴 뒤 X · YouTube · Telegram · Instagram · GitHub 의 결정과 대조했습니다. 일치 3건 · 새로 드러난 것 3건입니다.

선례Reddit
일치I-10 — Instagram 검색을 호출 0회로 행 1건. 근거는 "비용 0 + 어휘가 이미 있음" reddit_search 가 classify 에 이미 있고 ContentSubtype.SEARCH 도 있다 → R-4 ①과 같은 방향
일치G-17 — 팔로워류는 이름 무관 metrics.followers 로 통합 followersCount → 같은 자리. GitHub 에서도 같은 답이었다
일치R-0.9 — classify 분기를 전부 표에 나열 코드 8분기 vs 표 9행. 빠짐없이 대응한다 ✅
🔴 대조에서 새로 드러난 것 셋 — 카드 R-10 · R-11 로 올렸고 하나는 R-6 에 반영했습니다

URL 매핑표 — 무엇이 들어오고 무엇이 되나

호스트 2종(reddit.com · redd.it). 관측 합계 161건.

URL 형태관측sourceTypesourceKey무엇이 되나결정
Content — post
/r/{sub}/comments/{postId}/{slug}106reddit_post postId (원형)Content 1 + Account 1 (+ Venue?)R-1 · R-2 · R-5
redd.it/{postId}0reddit_post 첫 세그먼트
Creator — user
/user/{name} · /u/{name}18reddit_user username (소문자)Account 1R-3
Venue — subreddit
/r/{sub}16reddit subreddit (소문자)🔴 post 가 온다R-2
/r/{sub}/new 등 탭4reddit 〃 (탭 무시)R-2
비객체 · 미해석
/r/{sub}/search?q=7reddit_search 검색어 (소문자)미정R-4
/r/{sub}/s/{shareId}10reddit_share shareId미정 — IP 차단으로 해석 불가R-5
빈 경로unknownnull 없음 · UNSUPPORTED
⚠️ 그 외 전부reddit.com/{segment} reddit catch-all{segment} (소문자) 🔴 reddit.com/settings 가 가짜 서브레딧 키가 된다R-9

필드 배치표 — 무엇이 어디로 가나

Content — post (RedditPost 22필드)

자리Reddit 원본상태
top-level
platform · subtypereddit · POST✅ enum 에 있다
platformKeyparsedId✅ 확정
publishedAtcreatedAt✅ 확정
text.primary · text.bodytitle · body ✅ 확정 — bodyaudit 문서에 통째로 빠져 있던 필드(qna 가 발견)
outboundUrlscontentUrl?🟡 R-6 — 링크형 post 의 대상 URL
mediaUrlsimages[] · thumbnail 🟡 R-6images[]갤러리(서로 다른 자산)라 I-6 처럼 전부 담고, thumbnail그중 하나의 축소판일 수 있어 G-16 의 "변형 1개" 에 걸린다
tags · mentions해당 없음✅ 비운다
creatorIdauthorName ✅ Writer 가 채운다(R-12) — 같은 묶음에서
venueId 항상 빈다 — Venue 를 만들지 않는다(V-1)
metrics — 자리가 이미 다 있다
upVotes · score · upvoteRatio · commentsCount · numCrossposts 동일✅ 확정 — Reddit 블록이 선언돼 있다
data
자리가 없다 ×7 domain · outboundUrlHost · removedByCategory · removedBy · bannedBy · subredditSubscribers · crawledAt 🔴 R-6 — 모더 삭제 3종이 스캠 tell, crawledAtas-of 앵커

Account — user (RedditUser 9필드)

자리Reddit 원본상태
platformKey · handleusername 둘 다 ✅ 확정 — 변경 불가라 이름이 곧 키(qna Q1)
accountCreatedAt · biocreatedAt · bio✅ 확정
avatarUrliconImg✅ G-16 그대로 · 선행 0건
metrics.followersfollowersCount✅ G-17 통합 규칙
displayName주는 필드가 없다✅ 비운다 — Reddit 은 표시명 개념이 약하다
자리가 없다 ×4totalKarma · linkKarma · commentKarma · crawledAt 🔴 R-6 — 카르마 3종이 계정 나이와 함께 봇 판별 축

Venue — 만들지 않는다 (V-1 확정 · 2026-08-11)

초안의 이 표는 RedditCommunity 6필드를 전제로 짰는데, 그 응답을 얻는 URL 경로가 없습니다. Venue 를 두지 않기로 했으므로 아래는 어디로 대신 가는가의 표입니다.

원래 가려던 자리Reddit 원본실제 처리
platformKey · nameparsedCommunityName content.data.communityName
metrics.memberssubredditSubscribers content.data.subredditSubscribers (원래 이름 유지 · G-7)
description · venueCreatedAtpublicDescription · createdAt ❌ 얻을 경로 없음 — venueCreatedAt 부재가 유일하게 아픈 손실
subtype(고정) SUBREDDIT미사용이 된다
creatorId해당 없음Reddit 이 공개하지 않음
자리 없음 11칸 — 지금까지 중 두 번째로 많습니다

Telegram 이 13, GitHub 이 8 이었고 Reddit 은 11 입니다(Content 7 · Account 4). 그중 모더레이터 삭제 3종(removedByCategory·removedBy·bannedBy)이 스캠·스팸 tell 이고, crawledAt 은 mutable 지표의 as-of 앵커라 actor 가 직접 주는 값입니다 — 우리 fetch 시각보다 정확합니다.

V-1 — Reddit 에는 Venue 를 만들지 않는다 확정 · 2026-08-11

결론

이 소셜이 만드는 것은 Content 와 Account 둘뿐입니다. GitHub 과 같은 모양이 됩니다. 서브레딧 정보는 버리지 않고 Content 에 남깁니다 — post 응답에 공짜로 딸려오기 때문입니다.

content.data.communityName         "solana"
content.data.subredditSubscribers  520971
근거 ① — Venue 슬롯 9개 중 실제로 정보인 것이 3개뿐입니다
슬롯Reddit출처
platform · subtype고정값응답에서 오는 값이 아님
platformKeysolanaparsedCommunityName
namer/solanacommunityName
metrics.members520971subredditSubscribers
descriptioncommunity 응답에만 있고 그 경로가 없음
venueCreatedAt
creatorIdReddit 이 방 개설자를 공개하지 않음
metrics.moderatorCount · data.moderators · data.adminHandle · data.iconUrlpost 응답 키 71개 전수 확인 — 없음

members 말고는 조회·판별에 쓸 값이 없습니다. 그 하나를 위해 객체를 만들 이유가 약합니다.

근거 ② — 서브레딧은 "프로젝트의 방" 이 아닙니다

관측 174건이 속한 서브레딧 82개 중 URL 이 2건 이상 모인 곳입니다.

r/wallstreetbets      URL 15건 · 토큰 63개
r/cats                URL 14건 · 토큰 58개
r/aww                 URL  9건 · 토큰 42개
r/interestingasfuck   URL  9건 · 토큰 39개

전부 공용 밈 서브레딧입니다. 토큰이 링크한 것은 "우리 방" 이 아니라 밈의 출처입니다. "63개 토큰이 r/wallstreetbets 를 참조했다"wallstreetbets 가 유명하다는 뜻이지 그 토큰들에 대해 아무것도 말해주지 않습니다 — 조인축으로서 변별력이 없습니다.

🔴 Telegram 과 정반대입니다. 저쪽 채널은 프로젝트가 직접 만든 방이라 개설일·가드봇·메시지 수가 전부 판별 근거였고 data 만 14필드를 채웠습니다. 여기는 남의 방입니다.

근거 ③ — 서브레딧 URL 을 불러도 쓸 것이 안 옵니다

/r/solana 를 부르면 오는 첫 글은 모더레이터의 규칙 안내글입니다(actor 가 stickied 를 먼저 줍니다).

title       "Welcome to /r/Solana - Read This To Get Started"
authorName  ansi09        ← 모더레이터
createdAt   2025-03-29    ← 16개월 전
upVotes     22 · stickied true

이것을 저장하면 모더레이터가 "이 토큰과 연결된 계정" 이 됩니다. 러그 판별이 목적인 그래프에서 서브레딧 운영자를 스캠 토큰에 엮는 것은 잘못된 간선입니다.

딸려오는 정리 4건 — 결정이 아니라 결과입니다

V-2 — post 경유로는 계정을 만들지 않는다 확정 · 2026-08-11

결론

계정을 만드는 경로는 /user/{name} 하나뿐입니다. 글 URL 은 Content 만 내고 creatorId 는 빈 채로 둡니다. R-1 의 ③입니다.

근거 ① — R-18 을 어기는 것이 아니라 대상에서 벗어납니다

R-18 은 "같은 객체를 만드는 경로가 둘이면 산출이 같아야 한다" 입니다. post 에서 계정을 안 만들면 경로가 하나만 남으므로 규칙이 적용될 대상 자체가 사라집니다.

②(양쪽을 username 만으로)와 비교하면 ③이 낫습니다 — ②는 /user/ 가 실제로 주는 9필드를 일부러 버리는데, ③은 버리지 않습니다.

근거 ② — 앞 5소셜과 비교하면 새로운 모양이 아닙니다
소셜R-18 해법추가 호출그 호출의 비용
X애초에 문제 없음 — tweet.author 가 완전0
TikTokvideo.author 가 완전0
YouTube① 1콜 더+11 unit — 사실상 무료
Instagram① 1콜 더+1$0.0027 — 전량 ≈ $0.48
GitHub① 1콜 더+1무료
Reddit③ 만들지 않는다0①이면 +$0.062 — 원가의 3.8배

①을 고른 셋은 추가 호출이 공짜에 가까웠기 때문입니다. Reddit 만 유일하게 비쌉니다 (유저 URL 이 21건을 뱉어서 — 실측). 전량 적용하면 월 +$26 으로 3소셜 합계가 두 배가 됩니다.

그리고 ③ 자체는 이미 코드에 있습니다 — YouTube·Instagram 이 보조 호출 실패 시 하는 행동이 정확히 이것입니다.

⚠️ 껍데기 계정을 만드는 쪽으로 흘러가지 않는다(G-6). 채널 조회가 실패하면
   2필드짜리 계정을 만드는 대신 계정을 아예 만들지 않는다 — 만들면 그 모양이
   영구히 고착되어 R-18 을 어긴 채로 굳는다.
                                        — youtube.generator.ts:160

creator: nullSocialObjectGroup 이 받게 이미 설계돼 있습니다. Reddit 은 그것을 예외가 아니라 기본으로 쓰는 것뿐입니다.

근거 ③ — 글의 작성자가 대개 프로젝트가 아닙니다

V-1 에서 본 분포가 그대로 적용됩니다. 가장 많이 링크된 글은 r/mildlyinteresting 의 고양이 사진이고 토큰 26개가 달라붙었습니다. 그 글을 쓴 사람은 고양이 사진을 올린 일반 레딧 유저입니다. 계정을 만들면 그래프에서 "이 계정이 26개 스캠 토큰에 등장한다" 로 읽히는데 사실이 아닙니다 — V-1 과 같은 종류의 잘못된 간선입니다.

🔴 감수하는 대가 — 이 소셜에는 Account 축이 사실상 없어집니다

계정을 만드는 경로가 /user/ 하나인데 관측상 고유 1건입니다. 즉 이 소셜의 산출은 Content 153 + Account 1 이 됩니다.

반대 근거가 하나 남아 있습니다r/dogecoin·r/shiba 같은 코인 서브레딧의 글은 프로젝트가 직접 썼을 수 있고, 그럼 작성자가 진짜 신호입니다. 밈 서브레딧과 코인 서브레딧이 섞여 있어 일괄로 버리면 진짜도 같이 버립니다.

서브레딧별로 갈라 코인 서브레딧에서만 작성자를 부르는 안도 가능하지만, 판정 기준을 우리가 지어내야 해서 채택하지 않았습니다 — R-9 의 "추측으로 예약어를 만들면 진짜 서브레딧을 막는다" 와 같은 함정입니다. 관측이 쌓이면 다시 봅니다.

URL 종류별 처리 — V-1·V-2 적용 결과 확정

redditUNSUPPORTEDG-20 의 기준으로 고른 값입니다 — "무엇이 바뀌면 성공하나" 가 판정 문장이고, 여기 답은 "우리가 Venue 를 만들면" 입니다. SKIPPED_PAID 가 아닌 이유는 호출이 0회라 게이트 밖이기 때문입니다 — 유료를 켜도 아무것도 안 생깁니다.

sourceType관측 고유/링크호출만드는 객체status
reddit_post153 / 620유료 1회Content 만creatorIdOK
reddit_user1 / 12유료 1회Account 만 — 9필드 온전히OK
reddit (subreddit)6 / 400회없음UNSUPPORTED
reddit_share14 / 59R-5 미결
reddit_search0 / 0R-4 미결
unknown0회없음UNSUPPORTED
"기록 안 함" 의 범위

객체(Content·Account·Venue)를 안 만든다는 뜻이고, URL 자체는 언제나 남습니다. collectOne 이 status 와 무관하게 TokenSocialUrlInput 을 반환해 tokens.social_urls[] 에 들어갑니다. 링크가 사라지지는 않습니다.

⚠️ 관측 수치 불일치 — 이 표는 report 기준입니다

초안의 카드들은 audit 의 다른 집계를 썼고 지금 세 곳이 어긋납니다 — /user/ 18 vs 1, post 106 vs 153, search 7 vs 0. 이 표는 report.html(--from 2026-07-25 --to 2026-08-04 --min-af-count 3)의 링크 그룹을 직접 파싱한 값입니다. R-4·R-5 의 무게가 이 숫자에 걸려 있어 착수 전에 맞춰야 합니다.

📏 이 문서의 숫자 두 종류 — 어느 결정도 바꾸지 않는다 대조 완료 · 2026-08-11

카드에 인용된 관측 수치가 두 집계에서 나왔고 서로 다릅니다. 착수 전에 맞췄고, 결론은 둘 다 맞으며 결정에는 영향이 없다 입니다.

sourceTypeaudit (2026-07-29 · 총 161건)report (07-25~08-04 · --min-af-count 3 · 고유 174건)
reddit_post106153
reddit (서브레딧)206
reddit_user181
reddit_share1014
reddit_search70

같은 것을 세지 않았습니다. audit 은 다른 시점의 관측 전량이고, report 는 --min-af-count 3 을 통과한 토큰의 고유 URL 입니다. 모집단이 달라 어느 쪽도 틀린 값이 아닙니다.

그런데 왜 결정이 안 바뀌나
결정수치에 걸려 있나
V-1 Venue만들지 않는다❌ 서브레딧이 20건이든 6건이든 Venue 에 채울 값이 members 하나인 것은 같다
V-2 (R-1)③ 계정 미생성❌ ③은 아무것도 버리지 않는다. /user/ 가 18건이면 ②의 손해가 커질 뿐이고, 우리는 ②를 안 골랐다
R-4 검색① 호출 0회0콜이라 건수와 비용이 무관하다. 0건이면 그 경로가 안 돌 뿐이고, 오면 처리한다
R-5 shareUNSUPPORTED❌ 10건이든 14건이든 처리가 같다

🔴 제가 "R-4·R-5 의 무게가 이 숫자에 걸려 있다" 고 적었던 것은 과장이었습니다 — 실제로 대조해 보니 네 결정 모두 건수와 무관합니다. 수치가 결정을 가르는 자리는 비용이 건수에 비례하는 선택지뿐인데, 고른 답이 전부 호출 0회이거나 추가 호출 없음이라 그 자리가 생기지 않았습니다.

앞으로 인용할 기준은 report 입니다 — 실제 파이프라인이 보게 될 모집단 (--min-af-count 3 필터가 프로덕션에도 걸린다)과 같기 때문입니다.

결정 8건 ✅ 8/8 답변됨 · 2026-08-11

확정된 답
#물음
R-3/user/kind 로 분기하나kind 로 분기하고 무엇이 오든 그것을 만든다
R-4검색① G-4 대로 호출 0회로 검색어 행 1건
R-5share (IP 차단)UNSUPPORTED 로 둔다 (현행)
R-6자리 없는 11필드① 전부 data 로 (카르마 3종 포함)
R-8[deleted] 계정[deleted] 면 계정을 만들지 않는다
R-9classify catch-all① 현행 유지 — 유료 게이트 켤 때 다시 본다
R-10crawledAt vs observedAt① Content 에만 담는다
R-11검색 키에 서브레딧🔄 절충안 — 키는 쿼리, 서브레딧은 data
R-1✅ 확정 · ③ · V-2

post.author 로 계정을 만드나 — R-18 이 걸린다

답: ③ — post 경유로는 계정을 만들지 않습니다. 근거는 V-2 절에 있습니다.

초안은 ②(양쪽을 username 만으로)를 권장하며 "직접 조회 쪽이 손해" 라 했는데, 그 손해의 크기를 /user/ 18건 으로 잡고 있었습니다. 실제 관측은 고유 1건이라 ②의 이득(모양 통일)이 거의 0 이고 손해(9필드 폐기)만 남습니다.

①은 실측 후 더 비싸졌습니다 — 유저 URL 이 21건을 뱉어 추가분이 $0.04 가 아니라 $0.062 였고, 전량 적용하면 월 +$26 입니다.

R-2✅ 확정 · V-1 로 해소

subreddit URL 이 post 를 뱉는데 무엇을 만드나

답: 아무것도 만들지 않고, 부르지도 않습니다.

초안은 ①(응답 kind 를 따라 post 를 저장)을 권장했습니다. 근거는 "이미 받은 것을 버리는 게 아깝다" 였는데, 받는 것이 모더레이터의 규칙 안내글이라는 것이 실측으로 드러났습니다(V-1 근거 ③). 저장하면 운영자가 토큰에 엮이는 잘못된 간선이 생깁니다.

②(Venue 만 만든다)를 막던 근거는 "2필드짜리 껍데기" 였는데 실제로는 5필드(불변 communityId 포함) 였습니다. 그래도 쓸 값이 members 하나라 Venue 자체를 두지 않는 쪽으로 갔습니다.

/r/{sub}호출 0회 · 링크 1행. 서브레딧 정보는 글 URL 을 부를 때 content.data 로 공짜로 들어옵니다.

R-3✅ 확정 · ①

/user/{name}user 응답을 준다고 보장되나

R-2 와 같은 축입니다. subreddit URL 이 post 를 주는 것이 확인됐으니, /user/ 도 다른 것이 올 수 있습니다.

🔄 V-2 로 이 카드의 무게가 줄었습니다. 계정을 만드는 경로가 /user/ 하나뿐이라, 어긋남이 생길 수 있는 자리도 그 하나입니다(관측 고유 1건). 남는 물음은 "글 URL 이 유저를 주면 어쩌나" 쪽입니다.

✅ 실측했습니다 — 첫 건은 유저가 맞습니다 (2026-08-11)

초안은 "실측 근거가 없다" 였는데 이제 있습니다. /user/spez21건이 오는데 첫 건이 user_profile 이고 나머지는 그 유저의 댓글 20 + 글 1 입니다. 즉 items[0] 만 쓰는 현행 방식에서 유저 URL 은 유저를 줍니다.

그래서 이 카드는 "어느 쪽이 안전한가" 가 아니라 "규칙을 한 곳에 둘 것인가" 로만 남습니다 — ②를 골라도 실제로 걸러낼 대상이 없습니다(어긋나지 않으므로). 다만 순서가 계약이 아니라는 점은 남습니다 — actor 가 정렬을 바꾸면 조용히 깨집니다.

R-4✅ 확정 · ①

/r/{sub}/search?q= 를 어떻게 끝내나

관측 7건. G-4 가 이미 규칙을 정해뒀습니다 — 검색은 호출 0회로 검색어 행 1건을 만들고 키는 쿼리 정규화값입니다(X-10). ContentSubtype.SEARCH 도 이미 있습니다.

다만 G-4 에 단서가 붙어 있습니다 — "TikTok·Instagram 검색도 같은 규칙을 따르되, 그쪽은 유료 fetch 가 이미 가능해 부를지 말지는 소셜별로 갈릴 수 있다". Reddit 도 유료로는 부를 수 있습니다.

R-5✅ 확정 · ①

/r/{sub}/s/{shareId}10건이 미해석입니다

관측 10건(6.2%)으로 적지 않습니다. 해석하면 post 인데 Reddit 이 우리 IP 를 전 경로 차단(403) 해 무료 HEAD 로 못 풉니다 (qna Q2 실측: /s/·일반 subreddit·일반 post·old.reddit 전부 403, redd.it 만 301).

그런데 유료 actor 는 부를 수 있습니다. actor 가 URL 을 받으므로 share 링크를 그대로 넣으면 actor 쪽에서 리다이렉트를 따라갈 가능성이 있습니다 — 미검증입니다.

R-6✅ 확정 · ①

자리 없는 11필드를 어디에 담나

객체필드왜 중요한가
ContentremovedByCategory · removedBy · bannedBy 모더레이터 삭제 = 스캠·스팸 tell
Contentdomain · outboundUrlHost 드레이너·사칭 도메인 tell
ContentsubredditSubscribers게시 시점 서브레딧 규모 스냅샷
Content · AccountcrawledAt ×2 as-of 앵커 — actor 가 직접 주므로 우리 fetch 시각보다 정확하다
AccounttotalKarma · linkKarma · commentKarma 계정 나이와 함께 봇 판별 축

카르마 3종의 자리가 갈립니다. Account 라 시계열이 없어(G-17) metrics/data 선택에 기능 차이가 없습니다. AccountMetricsInputfollowers 하나뿐이라 어느 쪽이든 신설이 필요합니다.

R-7✅ 확정 · V-1 로 해소

subredditSubscribersmembersCount같은 수인데 출처가 둘

답: 출처가 하나뿐이라 고를 것이 없어졌습니다.

membersCountdataType:'community' 응답에만 있는데 그 응답을 얻는 URL 경로가 없습니다(키워드 검색 전용 — V-1 정리 2건째). 따라서 실제로 존재하는 값은 post 에 동봉된 subredditSubscribers 하나입니다.

Venue 를 두지 않으므로 갈 자리도 하나입니다 — content.data.subredditSubscribers. 원래 이름을 지킵니다(G-7).

R-8✅ 확정 · ①

[deleted] 계정을 어떻게 하나

계정이 삭제되면 authorName'[deleted]' 로 치환됩니다. 보조키가 없습니다parsedAuthorId 를 fetcher 에서 뺐기 때문입니다 (audit: "username 이 불변이라 보조키가 불필요하다").

그대로 두면 platform_key='[deleted]' 인 계정 하나에 삭제된 모든 작성자가 병합됩니다. design §9 에 이미 한계로 올라가 있습니다.

R-9✅ 확정 · ①

classify catch-all 을 그대로 두나

/r/ 없이 온 루트 경로가 전부 서브레딧으로 분류됩니다 — reddit.com/settingsreddit / 'settings' 가 됩니다. fetcher 착수 때 Q4 로 올려두고 열어둔 건입니다.

🔄 비용 논거가 사라졌습니다(2026-08-11). 초안은 "이 catch-all 이 만드는 키는 subreddit 이라 1건이 $0.04 로 다른 소셜의 8~15배" 였는데, V-1 로 서브레딧 sourceType 이 호출 0회가 되면서 가짜 키의 비용도 0 이 됩니다. 남는 것은 비용이 아니라 데이터 위생입니다 — reddit/'settings' 같은 행이 링크로만 쌓입니다.
다만 관측 집계가 없어(scaffold 부재) 추측으로 예약어를 만들면 진짜 서브레딧을 막습니다 — 그 위험은 그대로입니다.

R-10✅ 확정 · ①선례 대조에서 나옴

crawledAt 을 담나 — observedAt 과 겹칩니다

Reddit actor 는 Content 와 Account 양쪽에 crawledAt 을 줍니다. audit 이 이것을 "mutable 지표의 as-of 앵커. actor 가 직접 주므로 우리 fetch 시각보다 정확하다" 로 판정했습니다.

그런데 객체마다 사정이 다릅니다
객체스키마에 관측 시각이그래서
AccountobservedAt필수 필드로 있다 둘이 겹친다 — 우리가 넘긴 시각 vs actor 의 크롤 시각
Content없다 crawledAt유일한 as-of 앵커

Content 쪽은 담아야 합니다. 안 담으면 score·upVotes언제 기준인지 알 수 없고, metric_series 포인트의 at우리 관측 시각이라 다른 값입니다.

R-11✅ 확정 · 절충안

검색 키가 서브레딧을 안 담습니다

답: ①도 ②도 아닌 절충안입니다.

platformKey        = normalizeFreeText(q)   ← 8소셜 공통 규칙 유지(G-21)
data.communityName = 'solana'               ← 서브레딧은 여기 (글과 같은 자리)

🔴 ①({sub}/{q})이 G-21 과 정면으로 부딪혔습니다. G-21 은 "검색 행을 만드는 이유가 이 밈이 여러 소셜에서 동시에 검색되는가를 보는 것이라, 소셜마다 키 규칙이 다르면 그 비교가 무너진다" 입니다. 키를 solana/wendys 로 두면 TikTok·X 의 wendys문자열이 안 맞아 Reddit 만 비교에서 빠집니다.

R-11 의 원래 논거("서브레딧마다 뜻이 다르다")도 맞아서 둘 다 옳고 상충했습니다. 절충안은 키는 공통 규칙을 지키고 서브레딧은 data 로 보존합니다.

감수하는 대가 — 서로 다른 서브레딧의 같은 검색이 한 행이 되고 data 가 먼저 온 쪽으로 굳습니다. 그 대가가 작은 이유는 관측이 report 기준 0건이기 때문입니다 (초안의 7건 은 audit 집계). 반대로 G-21 을 깨는 것은 8소셜 공통 규칙을 Reddit 하나 때문에 무너뜨리는 것입니다.

⚠️ 덤으로 발견classifysegments.indexOf('search') > 1 이라 전역 검색 reddit.com/search?q=x 는 검색으로 안 잡힙니다 — catch-all 로 흘러 reddit / 'search' 라는 가짜 서브레딧 키가 됩니다. R-9 ①(현행 유지) 범위 안이라 지금은 두지만 R-9 를 열 때 같이 봅니다.

답이 정해지면

각 답이 어디로 흘러가나
확정된 답은 docs/features/social-generator/reddit.md 로 옮겨 적습니다. 이 문서는 그 뒤 착수 시점의 기록으로 남습니다.
선택 요약 — 복사해서 돌려주세요
아직 고른 것이 없습니다.