Community코딩 & 개발github.com

jmdevilleros/niche-map

양적 개념 맵을 구축하여 어떤 도메인에서든 비어 있는 틈새 시장을 찾습니다.

niche-map란 무엇인가요?

이 스킬은 사용자가 특정 시장이나 장르에서 '무엇이 빠져 있는가?', '새로운 제품을 위한 공간이 어디인가?'와 같은 질문을 할 때, 실제 아이템(제품, 앱, 게임, 서비스 등) 50~150개를 수집하고 이를 8~15개의 명시적인 차원으로 코딩하여 개념 맵을 구축합니다. Ward 클러스터링, PCA 그래디언트, UMAP 시각화를 통해 아이템 간의 관계를 파악하고, 조합적 공백(트리플)과 밀도 기반 공백을 찾아내어 구체적인 아이디어로 변환합니다. 최종 아이디어는 미라지 테스트를 통해 시장 적합성을 검증하며, 코딩의 신뢰성을 확보하기 위해 블라인드 재코딩 검사(Cohen's kappa)를 필수로 수행합니다. Claude Code, Cursor, Codex 등 다양한 AI 에이전트 플랫폼에서 사용할 수 있으며, `niche_core.py`와 `recode_check.py` 스크립트를 통해 전체 파이프라인을 자동화합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jmdevilleros/niche-map/tree/main

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

니치 맵: 개념적 공간의 공백

이 스킬은 도메인에서 타당한 공백을 찾습니다. 모호한 환경을 실제 아이템 × 명시적 차원 테이블로 변환하고, 아무도 차지하지 않은 조합과 영역을 찾아 구체적인 아이디어로 변환한 후 그것이 신기루가 아님을 확인합니다.

기본 원칙. 숫자는 판단을 조직화할 뿐 대체하지 않습니다. 코드는 분석가의 결정이므로, 공간은 시장만큼이나 루브릭을 반영합니다. 그렇기 때문에 제안된 모든 공백은 코드의 신뢰성 검사(2b단계)와 외부 검증(6단계)을 통과해야 합니다.

이 저장소의 도구

파일역할
niche_core.py3-4단계: 인코딩, 클러스터, PCA, UMAP, 트리플 갭, 밀도 갭, 후보 이웃, 공급 대 수요, 그림
recode_check.py2b단계: 블라인드 재코딩 샘플 시트 및 차원별 일치도(Cohen's kappa)
md_to_pdf.py7단계: Markdown 보고서를 PDF로 변환
templates/report_template.md7단계: 보고서 골격
examples/전체 파이프라인을 종단간 테스트하기 위한 합성, 가상 데이터셋

0. 입력 및 범위 설정 질문

시작하기 전에 이러한 답변을 얻으십시오. 누락된 항목이 있으면 한 번에 한 블록으로 질문하십시오.

입력질문중요성
주제 및 경계무엇이 아이템으로 간주됩니까? (예: "핵심 가치가 X인 도구")혼합된 카테고리와 갭 아티팩트를 방지합니다.
N아이템 수는? (기본 80-100; 유용한 최소 ≈ 50)N < 50이면 트리플 카운트가 노이즈입니다.
포함 기준최소 수신, 가용성, 플랫폼, 언어, 날짜1단계에서 적용하고 문서화합니다.
대상 사용자결과물을 만들거나 구매할 사람은 누구입니까?적합도 점수 및 target_filter의 기초입니다.
제약 조건예산, 시간, 기술, 판매 채널, 제외 주제target_filter 및 적합 기준이 됩니다.
결과물언어, 통화(및 환율 출처), 형식기본값: 순위, 니치 카드, 지도 및 링크가 포함된 전체 코퍼스 테이블이 있는 PDF.

1. 코퍼스: N개의 실제 검증된 아이템

  1. 광범위한 시드. 다양한 출처(도메인 스토어 또는 디렉토리, "최고" 목록, "X 대안" 검색 및 최근 롱테일 출시(런칭 사이트, 니치 디렉토리, 오픈소스 레지스트리))에서 약 1.3 × N개의 후보를 수집합니다. 유명한 제품만 포함되면 나중에 잘못된 공백이 나타납니다.
  2. 아이템별 존재 확인. 각 아이템에는 해결되는 URL(스토어 페이지, 가격 페이지 또는 리포지토리)이 필요합니다. HTTP 상태, 최종 URL 및 날짜를 기록합니다. 사이트가 봇을 차단하는 경우(403), 도메인 루트를 확인하거나 브라우저를 사용하십시오. 차단이 아이템이 존재하지 않음을 의미하지는 않습니다.
  3. 수신 신호. 하나 이상의 공개 신호(스토어 평점 및 리뷰 수, 런칭 사이트 투표, 리포지토리 별, 설치 수, 수상 내역)를 기록하고 각각의 출처와 범위를 선언합니다. 신호가 없다고 해서 아이템을 버리지 마십시오. 수신이 포함 기준인 경우 명시적 임계값을 적용하십시오.
  4. 중복 제거 변형, 리브랜드, 에디션 및 지역 SKU. 정식 이름과 링크를 유지합니다.
  5. 경계별 제외 포함 기준에 실패한 아이템을 제외하고 이유와 함께 보고서에 나열합니다.
  6. 코퍼스 편향 검사(보고서에 답변 작성):
    • 롱테일 아이템의 비율(예: 최근 24개월 이내 출시 또는 중앙값 수신 신호 미만). 약 20% 미만이면 더 많은 롱테일 아이템을 샘플링합니다.
    • 출처 집중도: 단일 출처가 아이템의 약 40% 이상을 기여해서는 안 됩니다.
    • 명시된 경계 대비 플랫폼 또는 언어 왜곡.
    • 출처별 신호 커버리지(일부 출처는 특정 사용자 유형을 과대 대표함, 예: 코드 호스팅 사이트의 개발자 도구).

출력: items.csv, 식별 및 링크 열이 있는 아이템당 한 행, 확인 원시 JSON.

2. 차원, 척도 및 코딩 루브릭

  1. 8-15개 차원 도출 약 20개 아이템 샘플을 읽어서. 두 가지 유형으로 분할:
    • 개념 차원은 아이템이 무엇인지: 동사 또는 행동, 입력, 출력, 트리거, 도메인 또는 주제, 사용자, 미학. 공백은 이러한 gap_dims로 검색됩니다.
    • 속성 차원은 어떻게 구축되거나 판매되는지: 복잡성, 범위, 셀프서비스, 가격 모델, 가격 등급. 필터링하고 점수를 매깁니다. 갭 검색에 사용되면 "이벤트 트리거 + AI 없음 + 높은 복잡성"과 같은 "메타" 갭을 생성합니다.
  2. 척도. 3-14개의 상호 배타적인 값을 가진 명목 범주, 각각 읽을 수 있는 레이블이 있거나 설명된 앵커가 있는 짧은 서열(0-1, 0-2, 1-3).
  3. 서면 루브릭: 값당 한 줄로 정의와 예제 아이템이 있고, 아래 결정 규칙이 있습니다. 보고서 부록에 포함되며 2b단계에서 두 번째 코더가 받는 유일한 자료입니다.
    • 논리적 구조를 코딩하고 렌더링은 코딩하지 않습니다. 공간적 또는 구조적 차원의 경우 사용자가 실제로 상호 작용하거나 추론하는 방식을 코딩하고, 어떻게 보이는지가 아닙니다(예: 평평한 평면에서 사용되는 3D 렌더링 제품은 "3D"가 아닙니다).
    • 겹치는 값에 대한 우선 순위 순서. 명목 척도가 지각적 또는 스타일적(외관, 어조, 스타일)인 것을 설명할 때 값이 겹칩니다. 명시적인 결정 순서를 제공하거나("A가 적용되면 A를 코딩하고, 그렇지 않으면 B...") 코더가 구분할 수 없는 값을 병합합니다.
    • 서열에 대한 측정 가능한 앵커. 기간, 크기 또는 노력과 같은 앵커는 측정 방법과 출처를 명시해야 합니다(예: "스토어 설명에 명시되거나 데모 비디오에서 관찰된 일반적인 세션; 레벨 기반 아이템의 경우 한 레벨"). 관찰할 수 없으면 최빈 사례를 코딩하고 표시합니다.
    • 기본 모드를 코딩합니다. 아이템이 모호하면 기본 모드를 코딩하고 notes 열에 의문점을 기록합니다.
  4. 가중치. 기본값 1.0. 핵심 개념 차원(예: 동사 1.2)을 높이고 주변 차원(예: 가격 모델 0.4)을 낮춥니다. 각 가중치를 정당화합니다.
  5. 구조적 검사:
    • 2개 미만의 아이템이 있는 범주 없음; 병합 또는 삭제(niche_core.py가 경고).
    • 교차표를 사용하여 중복 차원(상관 관계 ≈ 1) 감지: 하나를 삭제하거나 병합합니다.
  6. 한계 인정: 코드는 판단입니다.

출력: 아이템 × 차원 CSV 및 척도, 가중치 및 규칙이 있는 config.json.

2b. 블라인드 재코딩 검사 (필수)

목적: 루브릭이 코더의 기억이 아닌 코드를 결정하는지 측정합니다. 신뢰할 수 없는 차원에 구축된 공백은 루브릭 아티팩트입니다.

  1. 샘플. 고정 시드로 코퍼스의 10%, 최소 10개 아이템을 무작위로 추출: python recode_check.py sample --items items.csv --config config.json --out recode_sheet.csv --keep link 시트에는 아이템 ID와 링크만 포함되며 차원 열은 비어 있습니다.
  2. 블라인드 두 번째 코더. 다른 사람 또는 첫 번째 코드를 본 적이 없는 별도의 에이전트 세션(items.csv, 클러스터 또는 보고서에 액세스할 수 없음)이 서면 루브릭과 아이템의 공개 페이지만 사용하여 시트를 코딩합니다. 동일한 에이전트가 수행해야 하는 경우 새 컨텍스트를 시작하고 시트와 루브릭만 제공합니다. 비교하기 전에 결과를 잠급니다(예: 체크섬 저장).
  3. 차원별 일치도: python recode_check.py agree --items items.csv --config config.json --recode recode_sheet.csv --out agreement.csv
    • 범주형 차원: Cohen의 kappa (κ).
    • 서열 차원: 선형 가중 Cohen의 kappa (κw), 근접 실수에 대해 부분 점수를 부여합니다.
    • 원시 백분율 일치도는 함께 보고되며, 아이템별 불일치 목록이 제공됩니다.
  4. 임계값. 차원은 κ (또는 κw) ≥ 0.60 그리고 원시 일치도 ≥ 80%로 통과합니다. n ≈ 10에서 kappa는 노이즈가 있습니다: 분류에 사용하고 모든 불일치를 읽습니다.
  5. 임계값 미만인 경우, 다음 순서로:
    1. 불일치를 읽고 분류합니다: 루브릭 모호성(겹치는 값, 측정 불가능한 앵커), 렌더링 대 구조 혼동 또는 코더 오류.
    2. 2.3단계의 결정 규칙 중 하나로 루브릭을 수정합니다(우선 순위 순서, 측정 가능한 앵커, 구분할 수 없는 값 병합).
    3. 수정된 루브릭으로 전체 코퍼스에 대해 해당 차원을 재코딩한 다음 해당 차원에 대해 새로운 10% 샘플(새 시드)로 검사를 다시 실행합니다.
    4. 여전히 실패하면: 가중치 낮추기(≤ 0.6), gap_dims에서 제거 또는 삭제. 설명하는 트리플이 두 번 실패한 차원에 의존하는 공백을 보고하지 마십시오.
  6. 보고서(차원, n, % 일치도, κ/κw, 상태) 테이블, 루브릭 변경 사항 및 두 번째 코더의 ID 유형(인간, 별도 에이전트)을 보고합니다.

일반적인 결과: 기능(행동, 목표, 입/출력, 트리거)에 관한 차원은 잘 일치합니다. 지각적 또는 추정된 차원(스타일, 공간 구조, 기간)이 일반적인 실패이며, 이것이 2.3단계의 결정 규칙이 존재하는 이유입니다.

3. 공간: 인코딩, 클러스터, 그래디언트 및 시각화

niche_core.py에 의해 수행됩니다. 황금 규칙: 클러스터와 갭은 원래 코딩된 공간에서 계산됩니다. UMAP은 그리기 전용입니다.

  • 인코딩. 범주형 차원의 경우 One-hot × 가중치/√2, 서열의 경우 (x − min)/(max − min), 따라서 범주 전환 비용은 끝에서 끝까지 서열 이동과 동일합니다.
  • 클러스터. k_range 내에서 실루엣으로 k를 선택하는 응집형 Ward. 더 큰 k는 실루엣이 0.005 이상 향상되는 경우에만 허용됩니다.
    • k-범위 검사: 선택한 k가 범위의 어느 가장자리에 있으면 범위를 넓히고 다시 실행하십시오. 스크립트가 경고합니다. 가장자리에 남아 있으면 해석 가능성으로 k를 선택하고 명시하십시오.
    • 실루엣 0.15에서 0.30 사이는 범주형 데이터에서 정상입니다. "선명한 클러스터"로 판매하지 마십시오.
    • 3개 미만의 아이템이 있는 클러스터와 동일한 벡터를 가진 아이템은 플래그가 지정됩니다. 후자는 아이템을 구별하기에는 루브릭이 너무 거칠다는 것을 암시합니다.
    • cluster_profiles.md에서 각 클러스터 이름을 수동으로 지정하고 이름을 cluster_names에 저장합니다.
  • 그래디언트. PCA 로딩(PC1-PC3, pca_loadings.csv)은 "A에서 B로"의 축으로 읽습니다.
  • 시각화. KDE 밀도 배경이 있는 UMAP (n_neighbors 10-15, min_dist 0.25, 고정 시드). 한계:
    • 전역 거리와 섬 크기는 아무 의미가 없습니다.
    • transform은 새 점을 가장 가까운 섬으로 끌어당기는 경향이 있으므로 후보의 참신함은 원래 공간의 dist_min에서 읽혀지며 플롯에서 절대 읽지 않습니다.
  • 쌍별 히트맵 차원은 빈 셀을 한눈에 보여줍니다.

4. 갭

4a. 조합 갭 (트리플). 갭(개념) 차원 값의 각 트리플에 대해 독립성 하에서 관찰된 것을 예상과 비교: e = N · p(a) · p(b) · p(c), z = (e − o)/√e. 트리플은 다음과 같은 경우 유지됩니다:

  • o ≤ max_observed (기본값 1);
  • e ≥ min_expected (기본값 1.2);
  • 트리플의 모든 쌍이 최소 min_pair_support 아이템(기본값 2)에 나타납니다: 조각이 별도로 존재합니다.
  • 최소 하나의 앵커 차원(anchor_dims, 예: 도메인 또는 동사)을 건드립니다.

메타-갭 필터: 속성 차원을 gap_dims 밖에 유지하고 anchor_dims를 제품의 내용을 설명하는 차원으로 설정합니다. 속성으로만 만들어진 트리플은 니치가 아닙니다.

4b. 밀도 갭. 50,000-400,000개의 무작위 합성 벡터가 생성되고 다음과 같은 경우에만 유지됩니다:

  1. 값의 모든 쌍이 적어도 하나의 실제 아이템에 존재합니다(알려진 조각의 재조합);
  2. 일관성 규칙이 이를 금지하지 않습니다(rules: 도메인에서 터무니없는 조합);
  3. 대상 사용자 프로필(target_filter, 예: 복잡성 ≤ 1 및 셀프서비스 = 1)과 일치합니다. 이것이 사용자 적합 필터입니다. 이것이 없으면 밀도 갭은 사용자가 구축하거나 판매할 수 없는 제품으로 표류합니다.

생존자는 가장 가까운 실제 아이템까지의 거리로 순위가 매겨지고 주요 개념 차원에서 중복 제거됩니다(density_dedupe). 별개의 실제 아이템 간의 중앙값 최근접 이웃 거리(median_nn_distance)와 비교합니다.

4c. 공급 대 수요 (선택 사항). 클러스터별: 아이템 수(공급) 대 수요 신호(리뷰, 설치, 검색량, 별)의 중앙값, 항상 그 커버리지(supply_demand_clusters.csv)와 함께. 높은 수요를 가진 작은 클러스터는 갭 힌트입니다 (추론).

4d. 예비 점수. 참신성(1-5, 상대적 거리 및 갭을 설명하는 트리플에서), 실행 가능성(1-5, 사용자 리소스를 사용한 MVP 노력) 및 적합성(1-5, 0단계의 선호도 및 제약 조건). 각 후보에 대해 candidates에 추가하고 다시 실행하여 가장 가까운 이웃 3개를 확인합니다.

5. 의미론적 변환: 벡터에서 아이디어로

가장 높은 z의 트리플과 가장 먼 밀도 갭에서 8-12개의 후보를 선택합니다. 신호를 병합하고 중복을 제거합니다. 각 후보는 다음을 얻습니다:

  • 작업 이름 및 2-3문장 구체적인 피치: 사용자가 무엇을 하고, 제품이 무엇을 제공하는지.
  • 모든 차원의 벡터; 규칙을 충족해야 함.
  • 가장 가까운 아이템 거리 포함 (× 중앙값).
  • 코퍼스에서 비어 보이는 이유: 어떤 트리플 또는 영역이 이를 설명하는지, 그리고 그 차원 중 하나라도 2b단계에서 실패했는지 여부.
  • 위험: 기술적, 시장 및 적합성.

6. 외부 검증 및 미라지 테스트

  1. 후보당 타겟 검색, 코퍼스 외부:

    • "[개념] + 앱/도구 + 가격";
    • "[개념] 대안";
    • 2-3개 동의어가 있는 도메인 스토어;
    • 오픈소스 리포지토리.

    링크와 가격이 포함된 3-5개의 경쟁자를 기록합니다. 일부는 거의 항상 나타날 것이라고 가정하십시오: N ≈ 100의 코퍼스는 롱테일을 다루지 않습니다. 그에 따라 참신성을 조정합니다.

  2. 미라지 테스트 (white-space-analysis에서 채택, 참고 자료 참조). 후보는 네 가지 질문에 직면합니다:

    • 크기: 이 작업을 수행해야 하는 충분한 사람들이 있습니까?
    • 지불 또는 전환 의향: 가장 강력한 증거에서 가장 약한 증거로, 그들은 이미 부분 솔루션에 비용을 지불하고, 값비싼 해결 방법을 유지하거나, 직접 구축하려고 시도했습니다.
    • 기존 업체 질문: 왜 아무도 그것을 채우지 않았습니까? 수용 가능한 답변: 비즈니스 모델 또는 채널 충돌, 최근 외부 변화, 성장하는 세그먼트. 놀라운 답변: "이유를 찾을 수 없습니다".
    • 승리 가능성: 대상 사용자가 갭을 비워두는 장벽을 극복할 수 있습니까?

    평결: 통과(계수 1.0), 의심스러움(0.7) 또는 실패(0.4).

  3. 최종 점수 = 참신성 × 실행 가능성 × 적합성 × 미라지 계수 (범위 0.4-125).

  4. 검증에서 실패한 후보는 "거짓 갭"으로 보고서에 남습니다. 그들은 코퍼스 편향을 노출시키고

…

[번역을 위해 잘림]

관련 스킬