schema-structure.md · 현재 fetcher와 전수 대조 · 2026-07-20
1~488 확인, 없음| 단계 | 입력 | 제약 | 산출 |
|---|---|---|---|
| 1. 아이디어 생성 에이전트 2개 |
밈 토큰에 소셜 URL을 붙일 수 있고 검증이 없다는 사실 + URL 종류 목록만. 스키마 미제공 |
특정 토큰 이름 근거 금지 · 근거는 메커니즘만 · 결론·순위 금지 · 구현 가능성 고민 금지 | 트레이딩 관점 45개 플랫폼 구조 관점 66개 |
| 2. 구조 매칭 별도 실행 |
1단계 목록 + 스키마 488줄 전체 + fetcher 9개 + SDK 타입 | 기계적 매핑만 · 판정 금지 · 부분 읽고 단정 금지 | 93행 (15건 병합) |
1단계에 스키마를 주지 않은 이유: 구조를 알면 "지금 되는 것"에 갇힌다. 없는 것이 나오면 그게 스키마 평가 결과가 된다.
contents.sourceType enum 5종 (123줄): x_tweet tiktok website telegram reddit
fetcher는 14종을 판정 (types:10~24). enum에 없는 것:
x_profile x_community tg_guard_group tiktok_profile tiktok_video tiktok_search instagram youtube github unknown
accounts.platform enum 3종 (199줄): x telegram tiktok — github·youtube·reddit·instagram 계정을 담을 수 없음
이 두 enum이 항목 2·45·58·67·72·77·78·92를 불확실로 만들었다.
| 항목 | 현재 수집 중 | 스키마 |
|---|---|---|
| 인프라 지문 군집 | bodyHashes technologies globalNames trackingIds ip asn | 1~488 없음 |
| 도메인 등록일 | RDAP 3필드 | 없음 |
| 인증서 서비스개시 하한 | certValidFrom | 없음 |
| 재등록(드롭캐치) 판별 | certValidFrom + domainCreatedDate | 없음 |
| 페이지 메타 | ogSiteName ogTitle publishedTime isNews | 없음 |
| 리다이렉트·응답헤더 | server | 없음 |
| fetch 상태 | SocialFetchStatus 6종, errors[] | 없음 |
| 위조난이도 태깅 | ValueNature (fixed/mutable/derivable) | 없음 |
| X 커뮤니티 | memberCount moderatorCount | 없음 |
| 소셜 필드 라벨 | RoutedSource.sourceField | contentRefs가 콘텐츠 id 배열이라 필드 라벨 소실 |
| 콘텐츠 국가·도시 | website country city | 없음 |
conversationId·inReplyToId) · 듀엣/스티치 부모 · TG 전달 헤더 · 레딧 크로스포스트 · GitHub 포크. 전부 contentGenealogy.parentContentId(164줄)에 자리가 있음content_metrics_ts(267~282줄)에 자리가 있으나 fetch가 단회linkedEntities.knownWallets(232줄) · keyAccounts.deployerAccount(89줄) 있으나 deployer 미수집| 필드 | SDK 위치 | 상태 |
|---|---|---|
Tweet.id (인용 원본) | 190줄 | nestedTweetData가 미포함 |
conversationId · inReplyToId | 205 · 204줄 | 미저장 |
quoteCount | RawTweet 32줄 | 미저장 — 참여 구성비의 quote 축 결손 |
lang | RawTweet 34줄 | 미저장 |
profilePicture | RawTwitterUser 68줄 | 미저장 |
entities.urls | 253줄 | 미저장 — t.co 원본 URL 소실 |
| x_tweet의 author 숫자 id | — | authorUserName만 저장. x_profile 경로는 id 저장 |
| # | 아이디어 | 출처 | 필요 입력 | 스키마 위치 | 분류 |
|---|---|---|---|---|---|
| 1 | 소셜 필드 개수·조합 | A1 | 필드별 URL 존재, 라우팅 결과 개수 | contentRefs 78–82, sourceType 123 (sourceField 대응 없음) | S+F |
| 2 | X링크가 트윗·프로필·커뮤니티 중 무엇 | A2 | URL path 판정 | sourceType 123 enum에 x_tweet만 | 불확실 |
| 3 | 트윗 작성시각↔발행시각 간격 / 트윗 id ms 복원 | A3+B1 | tweet createdAt(또는 Snowflake id), token createdAt | publishedAt 126, tokens.createdAt 76, timeToMemeLagSec 174 | S+F |
| 4 | 동일 트윗 URL 재사용 카운트 | A4 | 동일 sourceKey 참조 토큰 수 | sourceKey 124, linkedTokenAddresses 128–132, linkedTokenCount 133 | S+F |
| 5 | 재사용 순번 중 첫번째인지 | A5 | 동일 sourceKey 토큰들의 시간순 정렬 | publishedAt 126 + tokens.createdAt 76 (순번 전용 필드 없음, 파생) | S+F |
| 6 | 트윗 작성자↔발행 지갑 연결 / 동일인 주장은 자기신고 | A6+B66 | author id ↔ deployer wallet, 도메인 소유증명 | knownWallets 232, deployerAccount 89, relationType 222 | S only |
| 7 | X 계정 생성일 / user id로 개설시각 추정 | A7+B2 | account createdAt, 숫자 user id | accountCreatedAt 202, accountId 201 | S+F |
| 8 | 계정 핸들 변경 이력 / 불변식별자는 숫자 id뿐 | A8+B4+B64 | 시점별 username 스냅샷 이력 | 1~488 확인, 이력 필드 없음 (불변키 201·현재핸들 200만) | 없음 |
| 9 | 계정 과거 게시물의 다른 CA 존재 | A9 | author id 기준 과거 콘텐츠의 linkedTokenAddresses | creators.author.id 143, associatedTokens 215–227 (타임라인 미수집) | S only |
| 10 | 팔로워 수 대비 실제 참여량 | A10 | followersCount, like/retweet/reply | account_metrics_ts 305, content_metrics_ts 277–279 | S+F |
| 11 | 팔로워 목록의 유명계정 포함·팔로우 시점 | A11 | 팔로워 계정 리스트 + 팔로우 타임스탬프 | 1~488 확인, 없음 | 없음 |
| 12 | 링크된 트윗의 참여 절대량 | A12 | like/retweet/reply/view 카운트 | content_metrics_ts.metrics 275–281 | S+F |
| 13 | 발행 이후 그 트윗의 참여 증가 속도 | A13 | 동일 contentId 다회 스냅샷 | content_metrics_ts 267–282, viewVelocityPerMin 280 (fetch 단회) | S only |
| 14 | 참여 구성비(좋아요·리트윗·인용·댓글) | A14 | like/retweet/quote/reply 각각 | like 277·retweet 278·reply 279 존재, quoteCount 없음 | 불확실 |
| 15 | 트윗 인용·댓글의 서로 다른 CA 개수 | A15 | 인용·답글 콘텐츠 목록 + 각 CA | linkedTokenCount 133, parentContentId 164 (인용·답글 미수집) | S only |
| 16 | 댓글의 무관 CA 스팸 비율 | A16 | 답글 본문 텍스트 + CA 추출 | contents.data 181, linkedTokenAddresses 128 (답글 미수집) | S only |
| 17 | 원 트윗 삭제·계정정지·비공개 감지 / 삭제 잔여물 | A17+B6+B63 | fetch status, isRetweet·isQuote | 1~488 확인, status 필드 없음 (fetcher: SocialFetchStatus 27–33) | F only |
| 18 | X커뮤니티 멤버수·증가속도 | A18 | memberCount 시계열 | 1~488 없음 (enum에 community 부재) | F only |
| 19 | 커뮤니티·채널 생성시각과 발행시각 간격 | A19+B10 | community createdAt(또는 id), token createdAt | accountCreatedAt 202 + tokens.createdAt 76, platform enum 199 미포함 | 불확실 |
| 20 | TG 멤버수·온라인수·메시지 속도 / t.me/{u}/{n} 누적 게시 | A20+B20+B21 | subscriberCount, online, 메시지 번호 n | followersCount 305·postCount 306 (online·n 미수집) | 불확실 |
| 21 | TG 링크가 신규 초대링크인지 기존 대형채널인지 | A21+B22 | URL 형태(t.me/+, joinchat, /s/), subscriberCount | sourceUrl 125 + followersCount 305 | S+F |
| 22 | 웹사이트 도메인 등록일 / WHOIS | A22+B50 | domainCreatedDate, expiryDate, registrar | 1~488 확인, 없음 (fetcher: RDAP 3필드) | F only |
| 23 | 유료 커스텀 도메인인지 무료 서브도메인인지 | A23 | apex 도메인 문자열, 무료호스트 목록 | sourceKey 124 (문자열 파생) | S+F |
| 24 | 웹사이트 HTML 동일 템플릿 / IP·ASN·해시 군집 | A24+B55 | bodyHash, JS번들해시, 파비콘해시, ip/asn, trackingId | 1~488 확인, 없음 (fetcher: 6필드 수집 중) | F only |
| 25 | 웹사이트 하드코딩 CA가 이 토큰과 다른지 | A25 | 페이지 본문 CA 추출 | linkedTokenAddresses 128–132 (website CA 추출 없음) | S only |
| 26 | 사이트 아웃바운드 링크와 토큰 소셜필드 불일치 | A26 | 페이지 내 소셜 링크 vs 토큰 필드 URL | sourceUrl 125, contentRefs 78–82 (discoveredLinks 있음) | S+F |
| 27 | 소셜 URL이 기업·유명인 공식 도메인인지 | A27 | 브랜드 매칭 결과 | labels 180 / 94 (범용 슬롯, 전용 필드 없음) | 불확실 |
| 28 | 소셜 필드에 런치플랫폼 자체 URL | A28 | sourceUrl 도메인 vs 런치플랫폼 목록 | sourceUrl 125, sourceKey 124 | S+F |
| 29 | 밈과 무관한 개발자 링크(github) 존재 | A29 | github URL 존재 + repo 메타 | sourceType 123 enum에 github 없음 | F only |
| 30 | 여러 필드에 같은 핸들·도메인 중복 기재 | A30 | 필드별 sourceKey 중복 카운트 | contentRefs 78–82가 콘텐츠 ID 배열이라 필드 라벨 소실 | F only |
| 31 | URL의 추적 파라미터·모바일 공유 흔적 | A31 | 정규화 전 원본 URL 문자열 | sourceUrl 125 (fetcher가 정규화 URL 저장 → 원문 소실) | 불확실 |
| 32 | URL 문자열 대소문자·인코딩 변형 지문 | A32 | 정규화 전 원본 URL 문자열 | sourceUrl 125, 위와 동일 소실 | 불확실 |
| 33 | 동일 소셜 URL 공유한 과거 토큰들의 성과 분포 | A33 | sourceKey별 토큰 목록 + maxMarketCap | sourceKey 124, linkedTokenAddresses 128, maxMarketCap 100 | S+F |
| 34 | 발행자 지갑의 과거 토큰과 도메인·핸들 공유 | A34 | deployer wallet → 과거 토큰 → sourceKey | deployerAccount 89, associatedTokens 215–227 (deployer 미수집) | S only |
| 35 | 발행 이후 소셜필드 추가·변경·삭제 | A35 | 시점별 토큰 소셜필드 스냅샷 이력 | 1~488 확인, tokens에 소셜 URL 필드·이력 없음 | 없음 |
| 36 | 링크 대상이 애초에 접근 불가인지 | A36 | fetch status | 1~488 확인, 없음 (fetcher: status 27–33) | F only |
| 37 | 틱톡 조회수·증가속도 / 조회수=첫프레임 기준 | A37+B18 | playCount 시계열 | viewCount 276·viewVelocityPerMin 280 (playCount 단회) | S+F |
| 38 | 틱톡 게시일과 발행일 간격 / id 상위32비트=유닉스초 | A38+B12 | createTimeISO(또는 video id), token createdAt | publishedAt 126, tokens.createdAt 76 | S+F |
| 39 | 틱톡 사운드·해시태그가 다른 토큰에도 쓰이는지 | A39+B15 | hashtags 배열, music/sound id | 해시태그는 labels 180 수용 가능; 사운드 id 1~488 없음 | 불확실 |
| 40 | 링크 콘텐츠의 언어·지역 | A40 | tweet lang, geo/country | 1~488 확인, lang 없음 (SDK RawTweet.lang 34 존재) | F only |
| 41 | 콘텐츠 언어와 토큰명 언어 불일치 | A41 | 콘텐츠 lang + 토큰명 lang 판정 | tokens.name 74만 존재, 콘텐츠 lang 없음 | 없음 |
| 42 | 계정 프로필이미지와 토큰 이미지 일치 | A42+B8 | profilePicture URL·이미지 해시, 토큰 이미지 URL | 1~488 확인, 이미지 필드 없음 (SDK profilePicture 68 존재) | 없음 |
| 43 | 커뮤니티·채널 운영자가 여러 토큰과 동일 | A43 | creator/admin id → 토큰 목록 | associatedTokens 215–227, relationType OFFICIAL 222 | S+F |
| 44 | 트윗 노출수 대비 참여율 | A44+B7 | viewCount + like/rt/reply | viewCount 276, 277–279 | S+F |
| 45 | 링크세트가 크립토내부 vs 대중 플랫폼 | A45 | 플랫폼별 sourceType 분포 | sourceType 123 enum 5종 (youtube·instagram·github 부재) | 불확실 |
| 46 | URL 속 핸들 신뢰불가, 실제작성자는 author id로만 | B3 | tweet author 숫자 id | creators.author.id 143 (x_tweet은 authorUserName만 저장) | 불확실 |
| 47 | conversation_id·in_reply_to로 대화 트리 복원 | B5 | conversationId, inReplyToId | parentContentId 164·rootContentId 165 (SDK 205·204, 미저장) | S only |
| 48 | t.co 래핑과 다단 리다이렉트 체인 | B9 | expanded_url, 리다이렉트 홉 목록 | 1~488 확인, 없음 (entities.urls 미저장) | 없음 |
| 49 | 참여 계정집합의 개설일 분포·활동부재로 조작 탐지 | B11 | 좋아요·리트윗 계정 목록 + 각 createdAt | accountCreatedAt 202, isBotSuspected 241 (참여자 목록 미수집) | S only |
| 50 | 틱톡 계정 이중식별(uid·sec_uid 불변 / unique_id 가변) | B13 | uid, sec_uid, unique_id | accountId 201·username 200 (fetcher: authorName만) | S only |
| 51 | vm.tiktok.com 단축형은 해석 전 정보 0 | B14 | 리다이렉트 해석 결과 URL | 1~488 확인, 없음 (fetcher 미해석) | 없음 |
| 52 | 듀엣·스티치의 부모 아이템 id | B16 | parent item id | parentContentId 164 (미수집) | S only |
| 53 | 틱톡은 팔로워와 도달이 분리 | B17 | authorFans + playCount | followersCount 305, viewCount 276 | S+F |
| 54 | 틱톡 삭제시 id 재사용 안됨 | B19 | 안정적 video id | sourceKey 124 | S+F |
| 55 | TG username 가변, 내부 채널id 불변 | B23 | 내부 채널 숫자 id | accountId 201·username 200 (내부 id 미수집, t.me HTML만) | S only |
| 56 | 전달(forward) 헤더로 채널간 확산그래프 | B24 | forward_from 채널 id, 메시지 목록 | parentContentId 164·rootContentId 165 (메시지 미수집) | S only |
| 57 | TG 메시지 조회수는 전달본 합산 | B25 | 메시지별 view count | viewCount 276 (미수집) | S only |
| 58 | GitHub 숫자 id 단조증가로 생성시점 보간 | B26 | github 숫자 id | accountId 201 존재하나 platform enum 199에 github 없음 | 불확실 |
| 59 | 커밋 date는 위조가능, push 시각은 서버 | B27 | 커밋별 author/committer date, push 시각 | 1~488 확인, 없음 (fetcher: repo pushedAt만) | F only |
| 60 | 커밋 해시가 스냅샷 무결성 보장 | B28 | 커밋 SHA 목록 | 1~488 확인, 없음 | 없음 |
| 61 | GitHub 이름변경 후에도 리다이렉트 유지 | B29 | 이전 org/repo명 → 현재명 리다이렉트 | 1~488 확인, 없음 (owner/login 현재값만) | 없음 |
| 62 | 포크 관계·동일 커밋해시로 코드 계보 | B30 | parent repo, 커밋 SHA 교집합 | contentGenealogy 160–168 (개념 슬롯) (forks 카운트만) | S only |
| 63 | 의존성 매니페스트·CI설정·커밋 타임존 분포 | B31 | package.json, CI yml, 커밋 tz | 1~488 확인, 없음 | 없음 |
| 64 | 스타 부여 계정목록·시각으로 조작탐지 | B32 | stargazer 계정 목록 + starred_at | 1~488 확인, stars 카운트조차 없음 | 없음 |
| 65 | 레딧 id는 base36 순차 정수 | B33 | post/comment id | sourceKey 124 (reddit은 subreddit/user about만, 포스트 id 미처리) | S only |
| 66 | 레딧 URL 슬러그는 무시됨, 제목 스냅샷 역할 | B34 | 정규화 id + 슬러그 문자열 | sourceKey 124·sourceUrl 125 | S+F |
| 67 | 레딧 사용자명은 변경 불가 | B35 | reddit username | username 200 존재하나 platform enum 199에 reddit 없음 | 불확실 |
| 68 | 레딧 점수는 퍼징되어 정확값 관측불가 | B36 | score, upvote_ratio | 1~488 확인, 없음 | 없음 |
| 69 | [deleted]와 [removed] 구분 | B37 | 본문 문자열 + removal_reason | 1~488 확인, 없음 | 없음 |
| 70 | 크로스포스트가 원본 id 보존 | B38 | crosspost_parent id | parentContentId 164 (미수집) | S only |
| 71 | 유튜브 영상 id는 난수라 시각 추정 불가 | B39 | 별도 publishedAt 조회 | publishedAt 126 (oEmbed에 게시일 없음) | S only |
| 72 | 유튜브 채널 UC id만 불변, @핸들은 가변 | B40 | UC 채널 id | accountId 201 존재하나 platform enum 199에 youtube 없음 | 불확실 |
| 73 | 업로드·공개·촬영일 구분과 위조가능성 | B41 | publishedAt, uploadDate, recordingDate | 1~488 확인, 없음 | 없음 |
| 74 | 유튜브 조회수는 봇필터링 사후반영 | B42 | viewCount 시계열 | viewCount 276 (youtube 조회수 미수집) | S only |
| 75 | 유튜브 메타데이터는 가변, 영상본체는 고정 | B43 | 필드별 가변성 태깅 | 1~488 확인, 없음 (fetcher: ValueNature 36) | F only |
| 76 | unlisted는 발견불가와 접근불가가 분리 | B44 | status 세분(not_found vs blocked) | 1~488 확인, 없음 (fetcher: SocialFetchStatus 27–33) | F only |
| 77 | 인스타 shortcode에서 게시시각 ms 복원 | B45 | shortcode → media id → 시각 | publishedAt 126 존재하나 sourceType enum 123에 instagram 없음 | 불확실 |
| 78 | /p/ /reel/ /tv/ 경로 상호호환 | B46 | 정규화 shortcode | sourceKey 124 존재하나 sourceType enum 123에 instagram 없음 | 불확실 |
| 79 | 인스타 미디어id에 소유자 숫자id 포함 | B47 | 미디어 id 문자열 | creators.author.id 143 (미디어 id 미수집) | S only |
| 80 | 스토리는 24시간 후 흔적 소멸 | B48 | 스토리 스냅샷 시계열 | 1~488 확인, 없음 | 없음 |
| 81 | 인스타 지표 가시성이 계정설정에 따라 달라짐 | B49 | isPrivate, hideLikeCount 플래그 | 1~488 확인, 없음 (verified·followersCount만) | 없음 |
| 82 | 인증서·아카이브로 재등록(드롭캐치) 판별 | B51 | certValidFrom vs domainCreatedDate, 아카이브 | 1~488 확인, 없음 (fetcher: 앞 두 필드 수집 중) | F only |
| 83 | CT 로그 최초 NotBefore가 서비스개시 하한 | B52 | 최초 인증서 NotBefore | 1~488 확인, 없음 (fetcher: certValidFrom) | F only |
| 84 | CT 로그 SAN으로 서브도메인 목록·생성순서 | B53 | 인증서 SAN 배열 | 1~488 확인, 없음 (globalNames는 JS 전역명이라 다름) | 없음 |
| 85 | 동일 인증서 SAN에 묶인 형제 도메인 = 동일 운영자 | B54 | 인증서 SAN 배열 | 1~488 확인, 없음 | 없음 |
| 86 | MX·SPF·DMARC로 운영실체 여부 | B56 | DNS MX/TXT 레코드 | 1~488 확인, 없음 | 없음 |
| 87 | og메타·canonical·generator·sitemap·robots·소스맵 | B57 | og:*, canonical, generator, sitemap, robots, .map | 1~488 확인, 없음 (fetcher: og 4필드만) | F only |
| 88 | 웹아카이브 스냅샷으로 콘텐츠 변경이력 | B58 | 시점별 아카이브 스냅샷 | 1~488 확인, 없음 (urlscan scanTime·bodyHashes 단회) | F only |
| 89 | 리다이렉트 체인·응답헤더·파킹페이지 판별 | B59 | 홉별 status/Location, 응답헤더 | 1~488 확인, 없음 (server 헤더만) | F only |
| 90 | 조회수가 플랫폼마다 다른 물리량 | B60 | viewCount + 플랫폼 구분 | viewCount 276 + metadata.sourceType 272 | S+F |
| 91 | 팔로워의 배포관련성이 플랫폼마다 다름 | B61 | followersCount + platform | followersCount 305 + metadata.platform 302 | S+F |
| 92 | id에서 시간 추출 가능여부가 플랫폼마다 다름 | B62 | sourceType + sourceKey 원문 | sourceType 123(enum 5종)·sourceKey 124 (fetcher 14종 판정) | 불확실 |
| 93 | 위조난이도 계층(서버시각·CT=불가 / 카운터=구매가능 / 자기신고=자유) | B65 | 필드별 위조난이도 태깅 | 1~488 확인, 없음 (fetcher: ValueNature 36, valueNature 71–72) | F only |
병합 15건: A3+B1 · A6+B66 · A7+B2 · A8+B4+B64 · A17+B6+B63 · A19+B10 · A20+B20+B21 · A21+B22 · A22+B50 · A24+B55 · A37+B18 · A38+B12 · A39+B15 · A42+B8 · A44+B7
매핑만 수행. 각 아이디어의 유효성·우선순위는 이 문서에서 판정하지 않는다.
관련: schema-structure.md · available-queries.md · information-inventory.html · problem-definition.md