앱 키워드 리서치은(는) 무엇을 하나요?
Apple의 공개 App Store 데이터를 사용하여 앱 아이디어에 대한 세 가지 질문에 답합니다. 계정이나 API 키가 필요 없습니다:
- 트래픽: 사람들이 이것을 검색하고 있나요? 어떤 단어로 검색하나요?
- 난이도: 그 단어들에 대해 순위를 올리기가 얼마나 어려운가요?
- 시장: 어떤 앱이 이 공간을 차지하고 있으며, 그 규모는 얼마나 되고, 어떻게 수익을 내나요?
결과는 최종 평가, 타겟팅할 키워드, 그리고 App Store 제목, 부제, 키워드 필드로 구성됩니다.
워크플로우
1. 아이디어를 10-20개의 시드 구문으로 변환
시드는 검색의 시작점입니다. 스크립트는 자동완성을 통해 각 시드를 확장합니다. 다음을 포함합니다:
- 사용자의 언어로 표현된 핵심 작업: "암산", "습관 추적기" ("수리 능력 향상"이 아닙니다).
- 동의어 및 대체 이름: "수학 게임", "산술", "구구단".
- 대상 사용자: "성인용 수학 게임", "어린이용 ...". 대상 사용자가 다르면 별도의 시장입니다.
- 경쟁하는 인접 카테고리: 수학 앱의 경우 "두뇌 훈련".
- 결과 구문: "빠른 수학", "수학 운동".
경쟁사 브랜드 이름으로 시드하지 마십시오. 어차피 결과에 나타나며, 시장 지도를 그리는 데 유용합니다.
다른 국가의 경우 해당 언어로 시드를 작성하십시오. 독일 사용자는 독일인이 입력하는 내용을 검색합니다("kalorienzähler", "kalorien tracker"가 아님). 따라서 각 시장의 시드는 현지인이 입력할 내용을 바탕으로 작성하고 자동완성을 통해 확인하십시오. 영어 우승자를 번역하여 동일하다고 가정하지 마십시오.
기존 앱의 제목을 통한 2차 패스. 첫 번째 실행 후, 시장 지도 상위 앱의 브랜드 외 단어를 읽으십시오(예: "Mental Math Cards Games & Tips"의 "cards", "tips"). 개발자는 효과가 있는 단어로 수렴하므로, 아직 다루지 않은 단어가 두 번째 시드 배치가 되어 동일한 --out으로 실행됩니다.
2. 리서치 실행
python3 -I scripts/keyword_research.py \
--seeds "암산, 수학 게임, 성인용 수학 게임, 두뇌 훈련, 구구단" \
--country kr --max-terms 120 --out research/<idea>-kr-<yyyy-mm-dd>
- 실행 시간: 실행 초반에 구문당 약 6초, 동일한 앱이 계속 순위에 오르면 시간이 줄어듭니다(해당 앱의 세부 정보는 캐시됨). 120개 구문은 약 8-10분이 소요되므로, 큰 배치는 백그라운드에서 실행하십시오.
- 진행 상황: 실행 중에도 결과가 저장됩니다.
report.md는 실행 중간에도 읽을 수 있으며, 동일한--out으로 다시 실행하면 중단된 지점부터 재개됩니다. - 기타 옵션:
--seeds-file seeds.txt: 한 줄에 하나의 구문.--no-expand: 제공한 시드만 점수화합니다.--country gb|de|jp|...: 52개의 주요 스토어프론트. 국가별로 자동완성과 순위가 다르므로, 각 출시 시장을 리서치하십시오.--app-id <trackId>: 출시된 앱의 경우, 각 구문에 대해 "우리 순위" 열을 추가 비용 없이 채웁니다(1-200위, 또는 200+). 메타데이터 변경 후 순위를 추적하려면 날짜별 폴더로 다시 실행하십시오.
- 출력물:
report.md: 아래 두 개의 표.keywords.json및apps.json: 후속 질문을 위한 원시 데이터.
- 테스트:
python3 -I scripts/test_keyword_research.py및python3 -I scripts/test_check_metadata.py는 오프라인으로 실행됩니다.
3. 키워드 표 읽기
각 구문은 세 가지 0-100 휴리스틱 점수를 받습니다:
| 점수 | 측정 방법 | 해석 방법 |
|---|---|---|
| 수요 | App Store가 구문을 제안하기 위해 입력해야 하는 글자 수가 적을수록, 그리고 제안 슬롯이 높을수록 더 많이 검색됩니다. Apple은 제안을 검색량 순으로 정렬합니다. | 글자 수 ≤ 4: 높음. 5-7: 중간. ≥ 8: 낮음. 전혀 제안되지 않음(점수 0): 알 수 없음, 자동완성 측정 범위 미만. |
| 경쟁 | 현재 상위 10개 앱의 평점 수 중앙값(로그 스케일)에, 전체 구문을 이름이나 부제에 포함한 상위 10개 앱당 2점을 더합니다(복수형, 악센트, "kalorienzähler" = "Kalorien Zähler"와 같은 복합어도 포함; 부제는 상위 약 8개 앱에 대해서만 알려져 있음). | 중앙값 < 1k: 약함. 1k-20k: 보통. 20k-100k: 강함. > 100k: 대형 브랜드가 장악. 5개 이상의 정확한 제목이면 많은 앱이 해당 구문을 직접 타겟팅함을 의미. |
| 기회 | 수요 × (1 - 경쟁 / 100) | 정렬 순서입니다. 이상적인 조합은 수요 ≥ 60, 경쟁 ≤ 55입니다. |
평가 열은 이를 한 단어로 바꿉니다: target (수요 ≥ 40, 경쟁 ≤ 55: 신규 앱이 승산 있음), hard (경쟁 > 55), low (수요 < 40), floor (수요 0), brand (아래 참조), 그리고 --app-id를 사용한 경우 own (귀하의 앱이 상위 3위) 또는 push (상위 10위: 근접하므로 리스팅에서 강화할 가치 있음). 이는 1차 정렬이며 최종 결정이 아닙니다: 아래 의도 분류가 여전히 적용됩니다.
주목해야 할 패턴:
- 높은 수요, 약한 경쟁: 기회. 예: "암산" (4글자 입력 후 제안됨, 상위 10위 중앙값 609개 평점).
- 높은 수요이지만 상위 10개 앱 중 어느 것도 전체 구문을 이름이나 부제에 포함하지 않은 경우: 제목 기회, 경쟁이 강하더라도 마찬가지입니다. 예: "성인용 수학 게임", 중앙값 112k 평점이지만 0/10 정확 제목.
- 브랜드 이름인 자동완성 구문 ("times tables rock stars", "impulse brain training")은 경쟁사에 속합니다. 시장 지도에 나열하고 키워드에는 절대 포함하지 마십시오. Apple은 다른 앱의 상표를 사용하는 메타데이터를 거부합니다. 스크립트는 구문이 상위 10개 앱의 전체 제목일 때 이를 *(brand)*로 표시하고 마지막에 나열합니다. 그렇지 않으면 작은 앱의 자체 이름이 경쟁 점수가 거의 0이 되어 표 상단에 오르기 때문입니다. 제목의 일부만 일치하는 브랜드 구문("impulse brain training")은 잡아낼 수 없으며, 일부 앱이 정확한 제목으로 사용한 일반 구문("percentage calculator")을 브랜드로 표시할 수 있으므로 여전히 목록을 읽어야 합니다.
- 대상 사용자 분할 구문 ("... 3학년용", "... 성인용")은 다른 제품입니다. 아이디어가 어떤 세그먼트를 대상으로 하는지 명시하십시오.
- 높은 수요이지만 0/10 정확 제목은 의심스럽습니다. 실제 격차(드묾)이거나 구문이 너무 모호하여 아무도 앱을 만들지 않은 경우(일반적)입니다. 아래 의도 테스트를 적용한 후 기회라고 판단하십시오.
순위를 매기기 전에 의도를 걸러내십시오. 스크립트는 이를 판단할 수 없습니다. 각 키워드에 대해 질문하십시오: 이 내용을 입력하는 사람 중 몇 명이 이런 앱을 기대하는가? 속임수처럼 높은 점수를 받는 두 가지 클래스를 걸러냅니다:
- 너무 일반적: 칼로리 추적기용 "tracker". 수요는 크지만, 검색자는 수면, 예산 또는 항공편 추적기를 원할 수 있습니다.
- 인접하지만 잘못된 의도: 칼로리 추적기용 "근육 성장". 아이디어와 관련이 있지만, 검색자는 운동 앱을 원합니다. 순위에 오를 수도 있지만 설치로 이어지지 않으며, 설치되더라도 유지되지 않습니다.
수요 0은 0이 아니라 알 수 없음을 의미합니다. 전혀 제안되지 않음은 자동완성이 측정할 수 있는 범위 미만입니다(Apple Search Ads의 인기 5, 최저 수준과 동일). 키워드 필드에 이러한 구문 하나는 복권과 같습니다. 제목과 부제 키워드는 명확하게 측정 가능한 수요가 있어야 합니다. 최저 수준 구문은 입증된 구문을 배치한 후에만 채우는 용도입니다.
경쟁은 앱의 단계에 맞춰 판단하십시오.
- 신규 앱: 현재 순위를 위해 경쟁 ≤ 55를 목표로 하십시오. 제목에 더 강력한 구문을 넣는 것은 미래에 대한 베팅이므로, 키워드 필드는 당장 승산이 있는 구문을 담아야 합니다.
- 확립된 앱 (수천 개의 평점): 경쟁이 약 70까지는 도전 가능해집니다. 설치와 평점이 쌓이면서 순위 권위가 생기기 때문입니다.
- 자체 제목이나 부제의 구문에 대해 ~100위 이상에 순위를 올린 출시 앱 (
--app-id참조)은 키워드 문제가 아니라 권위 문제가 있습니다. 더 많은 키워드로 해결되지 않습니다. 설치와 평점이 필요합니다.
4. 시장 지도 읽기
두 번째 표는 가장 많은 구문에 대해 상위 10위 안에 나타나는 앱, 즉 기존 업체를 나열합니다. 상위 5-10개 앱에 대해:
- 규모: 수십만 개의 평점은 자금을 지원받은 선두 주자를 의미하는 반면, 수천 개는 인디 규모로 극복 가능함을 의미합니다.
- 신선도: 마지막 업데이트가 1년 이상 전이면 정체된 선두 주자이며, 이는 기회입니다.
- 품질: 평균 평점이 약 4.3 미만이면 사용자가 불만족스럽다는 의미입니다. 그들의 리뷰는 당신을 위한 기능 목록입니다.
- 비즈니스 모델: 가격은 표에 있습니다. 인앱 구매 및 구독 가격은 API에 없지만, 스토어 페이지에 포함되어 있습니다.
https://apps.apple.com/us/app/id<trackId>를 curl로 가져와 HTML을 언이스케이프하고"title":"In-App Purchases"다음의 JSON을 읽으십시오. 각textPair는 제품과 가격입니다. 예: King of Math의"Full Game"/"$3.99". 모든 선두 업체가 구독을 청구하는 카테고리는 사용자가 지불한다는 증거입니다. 강력한 일회성 잠금 해제 경쟁자는 당신이 비교될 가격 기준점을 설정합니다. - 검색 지배력 대 명성: 각 앱이 모든 구문에서 상위 3위에 얼마나 자주 나타나는지 계산하십시오(
keywords.json→top). 유명한 경쟁자는 검색에 없을 수 있습니다. 예를 들어, King of Math(3k 평점, 15년)는 178개의 수학 구문 중 0개에서 상위 3위를 차지한 반면, Mental Math Cards Games & Tips는 41개에서 상위 3위를 차지했습니다.
5. 최종 평가 제공
다음 구조를 사용하십시오:
- 최종 평가: 진행 / 틈새 시장 진행 / 회피를 한 문장으로 이유와 함께 제시.
- 이상적인 키워드: 기회별 상위 5-10개, 각각 수요, 경쟁 및 선택 이유.
- 세그먼트: 키워드 클러스터의 표와 수요, 경쟁 및 각각의 의미(아래 예시 참조).
- 시장 소유자: 주요 기존 업체, 규모, 신선도 및 비즈니스 모델.
- App Store 메타데이터:
- 제목: 최대 30자. 키워드를 먼저, 브랜드를 나중에: "Calorie Tracker — Glow Up"이 "Glow Up — Calorie Tracker"보다 낫습니다. 사람들은 알려지지 않은 브랜드보다 키워드를 검색하고, 앞 단어가 더 큰 가중치를 받기 때문입니다. 브랜드 우선은 사용자가 명시적으로 선택하는 경우에만 기본값이 아닌 선택사항입니다.
- 부제: 최대 30자. 두 번째로 강력한 키워드를 설명적으로 작성: "Track macros & lose weight"은 부제이고 "Feel amazing every day"는 30자를 낭비합니다.
- 키워드 필드: 최대 100자, 쉼표로 구분하고 공백 없음. 제목이나 부제에 이미 있는 단어를 반복하지 말고(Apple은 이들을 결합함), 단수형을 사용하며, 브랜드 이름과 앱의 카테고리 이름은 생략하십시오.
- Apple 제품명 (iPhone, iPad, Apple Watch)을 제목이나 부제에 사용하면 거부 사유입니다(가이드라인 5.2.5). 키워드 필드에서는 괜찮으며, 앱에 Watch 앱이 있는 경우 가치가 있습니다.
- 확인:
python3 -I scripts/check_metadata.py --title "…" --subtitle "…" --keywords "…"는 제한 및 Apple 이름에 대해 실패하고, 낭비된 문자에 대해 경고합니다. - 표로 제시: 키워드, 할당된 표면(제목, 부제 또는 키워드 필드), 수요, 경쟁 및 한 줄의 의도 설명. 제목과 부제 키워드에 대해 사용자의 명시적 승인을 받은 후 리스팅을 작성하거나 현지화하십시오.
- 제목, 부제 및 키워드 필드는 새 앱 버전에서만 변경됩니다(프로모션 텍스트만 실시간 편집 가능). 따라서 키워드 변경은 다음 릴리스에 맞추어 계획하십시오.
- 한계점: 아래 적용되는 한계점.
한계점(항상 관련된 것을 명시)
- 수요는 상대적이며 절대적이지 않습니다. 자동완성 위치는 구문들을 서로 비교할 뿐, 다운로드 수를 제공하지 않습니다. 실제 지표는 Apple Search Ads 인기(5-100)이며, Apple Search Ads 계정 또는 Astro와 같은 유료 도구를 통해 확인 가능합니다.
- 경쟁은 평점 수를 다운로드의 대용 지표로 사용합니다. 상관관계가 있지만 동일하지는 않습니다.
- 결과는 스냅샷입니다. 날짜별 폴더로 다시 실행하여 추세를 확인하십시오.
- 미국 App Store가 기본값입니다. 다른 국가는 자체 실행이 필요합니다.
Astro(유료 키워드 도구), 설치된 경우
Astro(/Applications/Astro.app, 번들 matteospada.it.ASO)는 실제 Search Ads 인기와 자체 난이도 점수를 제공합니다. (2026년 10월 기준) 발견된 사항:
- 데모 제한: 데모 버전은 앱당 10개의 키워드를 허용하며, 인기, 난이도 및 제안에는 라이선스가 필요합니다.
- MCP 서버: Astro에는 자체 MCP 서버가 있으며, tryastro.app/docs/mcp에 문서화되어 있고 홈 화면에서 켤 수 있습니다. 라이선스가 필요합니다. 라이선스가 있고 실행 중일 때는 여기의 휴리스틱보다 해당 도구를 선호하십시오. 워크플로우는 다음과 같습니다:
- 아직 출시되지 않은 앱의 리서치는 임시 폴더나 태그에 넣어 실시간 추적과 분리하십시오.
- 시드:
get_keyword_suggestions, 더불어 3-5개의 가장 가까운 경쟁사에 대해extract_competitors_keywords(search_app_store로 찾음). - 시장별: 현지 스토어프론트에서
search_rankings를 사용하여 누가 이기고 있는지 확인하십시오. - 또한 몇 개의 앱이 키워드를 이름이나 부제에 사용하는지 보고합니다. 많다는 것은 구문이 검색된다는 증거이고, 인기 구문에 0은 위에서 설명한 의심스러운 신호입니다.
- 로컬 데이터:
~/Library/Containers/matteospada.it.ASO/Data/Library/Application Support/Astro/Model.sqlite(Core Data)에 저장됩니다. 읽기 전에 항상 파일과-wal및-shm파일을 복사하십시오.- 키워드는
ZKEYWORD에 있음:ZTEXT,ZSTORE,ZPOPULARITY,ZDIFFICULTY,ZAPPSCOUNT,ZCURRENTRANKING. - 타임스탬프는 2001년 이후 초 단위이므로, Unix 시간으로 변환하려면 978307200을 더하십시오.
- 키워드는
- Astro의 서버(
api.tryastro.app)를 직접 호출하지 마십시오. 인기 데이터는 라이선스 제품입니다. 앱, MCP 서버를 사용하거나 사용자에게 Astro에서 키워드를 추가하도록 요청한 후 로컬 데이터베이스를 읽으십시오. - 스크립트로 Astro 창을 조작하는 것은 신뢰할 수 없습니다. SwiftUI 앱이며 사이드바가 스크립트된 클릭을 무시하고, 화면 캡처에는 터미널이 일반적으로 가지고 있지 않은 권한이 필요합니다.
RankPilot(자체 트래커), 앱 출시 후
RankPilot은 로컬 App Store 키워드 트래커입니다(Node 22.5+, 종속성 없음, 데이터는 ~/.rankpilot/rankpilot.db에 저장). 이 스킬은 출시 전과 출시 시 무엇을 타겟팅할지 결정합니다. RankPilot은 이후 이를 추적합니다: 키워드 및 국가별 순위 기록, 마지막 확인 이후 변동 사항, 그리고 당신을 이긴 앱들. 리스팅이 게시되면 전환하십시오.
- MCP 도구 (
node bin/rp.js mcp install로 등록):status,app_add(귀하 또는 경쟁사),keywords_add,keywords_localize(AI가 각 시장의 현지 구문 작성),check_run,board_get(국가별 순위, 이전 순위, 볼륨, 난이도, 평가 및 당신을 이기는 최대 5개 앱이 포함된 키워드 × 국가),term_get(하나의 구문 설명, 상위 10위 및 관련성 포함),keywords_brainstorm. - 전환:
app_add로 앱을 추가하고,keywords_add로 승인된 키워드(제목, 부제 및 키워드 필드)를 추가하고, 로컬 ...