npm 패키지 2주 다운로드 추적 — 데이터로 보는 배포 채널 효과
npm 패키지를 배포하면 얼마나 다운로드될까? 막연한 기대가 있다. 현실은 냉정하다.
textlens라는 텍스트 분석 npm 패키지 개발자가 배포 후 14일간 모든 다운로드와 트래픽 소스를 직접 추적했다. 숫자가 꽤 솔직하다.
패키지 소개
textlens는 제로 의존성 Node.js 텍스트 분석 툴킷이다. 가독성 점수 8가지 공식, 감정 분석, 키워드 추출, SEO 점수를 단일 import로 제공한다.
npm install textlensimport { analyze } from 'textlens';
const result = analyze('Your text goes here...');
console.log(result.readability); // Flesch-Kincaid, Gunning Fog 등
console.log(result.sentiment); // { score: 0.3, label: 'positive' }
console.log(result.keywords); // ['text', 'analysis', ...]2주 다운로드 데이터
1주차: 977회
숫자만 보면 나쁘지 않다. 근데 내용을 보면 달라진다.
| 날짜 | 다운로드 | 원인 |
|---|---|---|
| 3/4 (배포일) | 214 | 자동 레지스트리 크롤러 |
| 3/8 | 455 | 버전 bump → 미러 서버 동기화 |
| 나머지 날 평균 | ~71/일 | 실제 사용자 추정 |
배포일과 버전 업데이트일의 스파이크는 실제 사용자가 아니다. npm 레지스트리를 미러링하는 자동화 시스템들이 새 패키지를 수집한 것이다.
2주차: 63회
94% 감소. 주중 하루 평균 16회.
비교군: 경쟁 패키지는 일 2,100회 다운로드. textlens는 0.7%를 가져갔다.
채널별 효과
Echo JS: 유일한 승자
Echo JS(Hacker News 스타일의 JavaScript 뉴스 사이트) 제출 결과:
- GitHub 리포 방문자 18명 (추적 기간 중 최고)
- GitHub 스타 5개 (이 기간에 딴 전부)
- 30초 투자로 얻은 결과
dev.to 포스트: 실망
13개 포스트 게시, 총 조회수 307회. GitHub 유입은 0.
조회수가 있어도 클릭으로 이어지지 않는다는 걸 보여준다. 포스트가 GitHub 트래픽으로 전환되려면 다른 요소가 필요하다.
Bluesky: 무반응
소셜 미디어 포스팅은 측정 가능한 효과가 없었다.
Awesome 리스트 PR: 0/7
7개 awesome 리스트 레포에 PR 제출, 2주 동안 메인테이너 반응 없음.
[💡 잠깐! 이 용어는?] Awesome 리스트: GitHub에서 특정 주제의 좋은 리소스를 모아둔 큐레이션 레포지토리. 등록되면 관련 커뮤니티에 노출이 늘어난다.
콘텐츠 형식의 차이
dev.to 포스트 유형별 평균 조회수:
| 형식 | 평균 조회수 |
|---|---|
| 튜토리얼 ("~하는 법") | 8 |
| "I Built X" 형식 | 80 |
10배 차이. "React에서 가독성 점수 계산하는 법" vs "npm 패키지 만들고 2주 추적한 데이터" — 후자가 훨씬 더 읽힌다.
개발자들은 방법보다 실제 경험에 더 관심이 있다. 솔직한 데이터가 있으면 더 그렇다.
배운 것
개발자가 직접 정리한 세 가지 실수:
1. 채널 분산: Bluesky, Reddit, dev.to, Hacker News 등 여러 곳에 조금씩 올렸다. Echo JS 한 곳에 집중한 30초 투자가 전체 소셜 미디어 활동을 합친 것보다 효과적이었다.
2. 콘텐츠 형식: "튜토리얼" 위주로 썼는데, "이런 걸 만들어봤다" 형식이 더 읽힌다. 실제 만든 과정, 숫자, 실패도 포함해서.
3. 수익화 공백: 1,000+ 다운로드를 얻었지만 수익은 0. API 유료 티어를 먼저 만들어뒀다면 달랐을 것이다.
배포 채널보다 먼저 해야 할 건 "이걸 실제로 쓸 사람이 있는가"를 검증하는 것이다.
이 데이터가 유용한 이유
사이드 프로젝트를 배포해본 사람이라면 공감할 것이다. "왜 아무도 안 쓰지?"라는 막막함. 이 글은 그 과정을 숫자로 보여준다.
실제 다운로드가 어디서 오는지, 어떤 채널이 효과적인지는 직접 해보기 전까지 모른다. 이 사람이 대신 해줬다.
마무리
npm 패키지 배포는 시작이지, 끝이 아니다. 다운로드 숫자의 대부분은 자동화된 미러링이다. 실제 사용자는 훨씬 적다. 채널 중에서는 개발자 커뮤니티(Echo JS 같은 곳)가 소셜 미디어보다 효과적이었고, 콘텐츠 형식은 "내가 만든 것"보다 "내가 겪은 것"이 더 읽혔다. 오픈소스 배포를 계획 중이라면 이 데이터부터 보고 시작하는 게 낫다.
참고:
관심 있을 만한 포스트
배포 전 출국 심사 — Publint로 npm 패키지 실수를 원천 차단하는 법
npm 패키지의 exports, entry points, 모듈 포맷을 배포 전에 검증하는 Publint 도구 사용법.
Cloudflare Workers Static Assets 운용 가이드 — 라우팅과 캐시를 안정적으로 잡는 방법
Workers Static Assets를 기준으로 SPA/SSR 혼합 서비스에서 라우팅, 캐시, Worker 실행 순서를 설계하는 실전 패턴을 정리한다.
validator.js의 isLength가 뚫렸다 — 유니코드 제로 폭 문자가 만든 CVSS 7.5 취약점
CVE-2025-12758로 등록된 validator.js의 isLength() 우회 취약점의 원리, 영향, 대응 방법을 분석한다.
Next.js 블로그 만들기 — GitHub Pages에서 Cloudflare Pages로 이전하기
GitHub Pages의 한계를 넘어 Cloudflare Pages로 블로그를 이전한 과정. 비교, 설정, SEO까지 한 번에 정리.
SVG 아이콘 — 코드 배포 없이 프로덕트 팀이 직접 관리하는 법
CSS mask-image와 S3를 조합해 개발자 개입 없이 아이콘을 교체하는 패턴을 소개한다.
VS Code 1.116 — 에이전트 디버깅, 포그라운드 터미널, 내장 Copilot
2026년 4월 VS Code 1.116이 에이전트 경험, 터미널, Chat UX, 내장 브라우저를 개선한 핵심 변경사항을 정리한다.
Naver FE News 2026년 4월 — 49MB 웹 페이지부터 Temporal Stage 4까지
Naver FE News 2026년 4월호에서 프론트엔드 개발자가 주목할 6가지 소식을 선별해 정리한다.
VS Code 에이전트 — 실전 개발에서 쓸 수 있게 만드는 세 가지 축
VS Code 1.110이 도입한 컨텍스트 관리, 에이전트 제어, 확장성 기능이 AI 에이전트를 실무에 투입 가능하게 만든 방식을 분석한다.