제목 : 개발자 없이 나만의 확장프로그램으로 돈 버는 법
저자 : 신인웅
장르 : IT/기술, 1인 비즈니스, 자기계발
들어가며: 아이디어가 있어도 시작하지 못하는 이들을 위해
매일 반복되는 업무 속에서 번뜩이는 아이디어가 스쳐 지나갈 때가 있습니다. '이런 작은 도구가 웹 브라우저에 있으면 참 편리할 텐데' 하는 생각 말입니다. 하지만 우리 같은 일반 비개발자 직장인들에게는 늘 코딩이라는 거대한 장벽이 가로막고 있었습니다. 개발자를 고용하자니 비용이 두렵고, 직접 배우자니 몇 년이 걸릴지 기약이 없어서 결국 아이디어는 수첩 한구석에서 잊히기 일쑤였습니다.
이 책을 처음 발견한 것은 퇴근길 유튜브 알고리즘을 방황하던 어느 조용한 저녁이었습니다. 비개발자가 직접 브라우저 확장프로그램을 만들어 쏠쏠한 월세를 받고 있다는 신인웅 작가님의 인터뷰를 보았을 때, 가슴 한구석이 찌릿하게 뛰기 시작했습니다. 이 책은 단순히 기술을 나열하는 컴퓨터 서적이 아니라, 직장인이 스스로 디지털 영토를 개척하고 월세 같은 자동화 수익을 올리는 실전 지도책으로 느껴졌습니다. 반신반의하는 마음으로 책장을 열었을 때, 눈앞에 신세계가 펼쳐졌습니다.
직장인의 월급 외 파이프라인과 기술 장벽

우리는 언제나 직장의 굴레를 벗어나 자신만의 수익 파이프라인을 구축하고 싶어 합니다. PDF 전자책을 쓰거나 구매 대행, 블로그 수익화 등 다양한 부업에 도전해보지만 이내 한계에 부딪히게 마련입니다. 시장은 이미 포화 상태이고, 나의 노동력을 직접 계속 투입하지 않으면 수익이 멈추는 구조이기 때문입니다. 이런 상황에서 소프트웨어, 즉 한 번 배포해두면 스스로 일하는 '디지털 자산'을 소유하는 것만큼 매력적인 대안은 없습니다.
문제는 우리 손으로 직접 프로그램을 만드는 일이 불가능에 가깝게 느껴진다는 점입니다. 자바스크립트를 공부하겠다고 책을 사도 세 번째 챕터에서 나오는 클로저나 비동기 처리 개념에서 대부분 책을 덮고 맙니다. 외주 개발을 맡기려고 해도 기본 수백만 원에서 천만 원이 넘어가는 견적서 앞에서는 직장인으로서 작아질 수밖에 없습니다. 결국 비개발자에게 소프트웨어 개발이란 돈 많은 자산가나 천재 해커들의 영역으로만 보였던 것이 부정할 수 없는 현실이었습니다.
비개발자가 구축한 크롬 확장프로그램의 경제성
크롬 확장프로그램은 다른 플랫폼 비즈니스에 비해 믿을 수 없을 만큼 압도적인 사업적 이점을 지니고 있습니다. 일반적인 웹 서비스나 모바일 앱은 매달 고정적으로 지출되는 서버 유지비가 가장 큰 부담으로 작용합니다. 사용자가 늘어날수록 서버 요금 고지서의 숫자가 불어나며, 정작 수익이 나기도 전에 파산하는 경우가 허다합니다. 반면 크롬 확장프로그램은 사용자의 브라우저 자체 리소스를 활용하여 구동하므로 트래픽 비용이 거의 제로에 수렴합니다.
이 책의 저자인 신인웅 작가님은 Quick Memo나 YT Selector 같은 일상 속 아주 단순한 확장프로그램을 만들어 시장의 선택을 받았습니다. 거창한 데이터베이스나 중앙 서버 없이 브라우저 로컬 저장소를 활용한 이 소형 제품들은, 매월 정기적인 구독 요금을 벌어다 주는 기특한 효자가 되었습니다. 아래의 비교 표를 살펴보면 일반 웹 어플리케이션과 확장프로그램의 비즈니스적 차이가 얼마나 극명한지 한눈에 체감할 수 있습니다.
| 비교 기준 | 일반 웹 서비스 (SaaS) | 크롬 확장프로그램 |
|---|---|---|
| 초기 서버 요금 | 매월 최소 수십 달러 발생 | 0원 (사용자 브라우저 자원 활용) |
| 개발 난이도 | 데이터베이스, 백엔드 서버 필수 | 프론트엔드 HTML, JS 단독 구동 가능 |
| 사용자 접근성 | 검색 및 회원가입 유도 필요 | 크롬 웹스토어 노출 및 원클릭 설치 |
├── manifest.json (확장프로그램의 메타데이터 및 권한 정의 설정 파일)
├── popup.html (아이콘을 클릭했을 때 나타나는 작은 팝업창 레이아웃)
└── popup.js (버튼 클릭이나 데이터 저장 등 실제 기능을 수행하는 스크립트)
가장 먼저 생성해야 하는 `manifest.json`은 프로그램의 이름, 버전, 설명, 그리고 브라우저에게 '나는 팝업창을 쓸 것이고, 로컬 저장소 권한이 필요해'라고 선언해 주는 일종의 신분증 명세서 역할을 수행합니다. 이 파일의 이름을 쉼표 하나, 중괄호 하나라도 빠뜨리지 않고 영문 소문자로 정확하게 만들어 두어야 브라우저 시스템이 비로소 우리의 확장프로그램을 한 명의 정식 앱으로 인정하게 됩니다.
서비스 워커와 팝업 창의 비동기 메시지 통신 메커니즘

기본 코드를 짜기 전에 확장프로그램이 브라우저 내부에서 어떻게 숨 쉬고 동작하는지 그 원리를 이해할 필요가 있습니다. 크롬 확장프로그램의 구조는 화면을 보여주는 '팝업(Popup)' 영역과, 눈에 보이지 않지만 브라우저가 켜져 있는 동안 등 뒤에서 조용히 대기하는 서비스 워커(Service Worker)로 철저하게 나뉘어 있습니다. 팝업창은 사용자가 아이콘을 클릭하는 순간에만 활성화되었다가 마우스를 다른 곳으로 가져가면 즉시 소멸해버리는 일시적인 존재입니다.
서로 다른 두 영역이 데이터를 주고받기 위해서는 메시지 패싱(Message Passing)이라는 크롬 고유의 비동기 통신 규약을 사용해야 합니다. 팝업창에서 사용자가 '이 텍스트 저장해 줘'라고 요청하면, 팝업의 자바스크립트가 `chrome.runtime.sendMessage` 명령을 통해 백그라운드에 상주하는 서비스 워커에게 신호를 보냅니다. 신호를 받은 서비스 워커는 브라우저 내부 저장소에 안전하게 기록한 뒤 잘 처리했다는 응답 신호를 되돌려 줍니다. 이 흐름을 파악하는 것만으로 여러분은 중급 개발자 수준의 설계 능력을 갖춘 셈입니다. 참고로 본문에 소개할 메모장 예제는 구조가 단순하여 별도의 서비스 워커 개입 없이 팝업 자바스크립트에서 크롬 로컬 저장소를 직접 제어하지만, 자동 백그라운드 동기화나 외부 서버와의 API 통신이 들어가는 고도화 단계에서는 이 메시지 패싱 연동이 필수 교과서가 됨을 기억해 두시기 바랍니다.
ChatGPT와 Cursor로 완성하는 실전 동작 코드 작성
이제 준비된 바탕화면 폴더 속의 `manifest.json` 파일에 실제 생명을 불어넣을 차례입니다. 텍스트 에디터로 이 파일을 열고 구글의 표준 V3 규격에 맞춰 메타데이터를 정밀하게 기입해 줍니다. 아래의 코드는 독자 여러분이 복사하여 바로 로컬 폴더에 집어넣고 테스트해 볼 수 있도록 깔끔하게 조율된 완성형 소스 코드입니다. 버전 정보와 확장프로그램의 고유 권한(permissions)에 저장 공간을 활성화하는 내용이 핵심적으로 담겨 있습니다.
{
"manifest_version": 3,
"name": "초간단 메모장",
"version": "1.0.0",
"description": "아이디어가 생각날 때 브라우저 안에서 바로 기록하는 나만의 메모장",
"permissions": ["storage"],
"action": {
"default_popup": "popup.html"
}
}
다음 단계로 팝업 아이콘을 클릭했을 때 화면에 그려질 아담한 크기의 레이아웃을 완성해 주어야 합니다. `popup.html` 파일을 열고 다음과 같이 제목과 텍스트를 입력할 창, 그리고 소중한 메모를 영구히 보관할 저장 버튼을 작성해 줍니다. 복잡한 스타일은 과감히 배제하고 기능을 작동시키는 데 필요한 핵심 구조와 폼 요소만을 군더더기 없이 배치했습니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
body { width: 300px; padding: 15px; font-family: sans-serif; }
textarea { width: 100%; height: 100px; margin-bottom: 10px; }
button { width: 100%; padding: 8px; background-color: #6164c6; color: white; border: none; cursor: pointer; }
</style>
</head>
<body>
<h3>나만의 즉시 메모</h3>
<textarea id="memoBox" placeholder="기록하고 싶은 아이디어를 적어보세요..."></textarea>
<button id="saveBtn">저장하기</button>
<script src="popup.js"></script>
</body>
</html>
마지막 퍼즐 조각은 버튼을 눌렀을 때 텍스트 박스의 글자들을 수집하여 브라우저 로컬 저장소인 `chrome.storage.local`에 영구적으로 보존하고, 창이 다시 켜졌을 때 기존 기록을 자동으로 끄집어내는 브레인 스크립트입니다. `popup.js`를 열고 아래 코드를 그대로 채워 넣어 줍니다. AI가 추천하는 가장 깔끔하고 안전한 최신 자바스크립트 비동기 구문으로 작성되었습니다.
document.addEventListener('DOMContentLoaded', () => {
const memoBox = document.getElementById('memoBox');
const saveBtn = document.getElementById('saveBtn');
// 크롬 내부 저장소에서 기존에 저장해 두었던 소중한 메모를 로드합니다
chrome.storage.local.get(['myMemo'], (result) => {
if (result.myMemo) {
memoBox.value = result.myMemo;
}
});
// 저장 버튼을 클릭하는 순간, 입력창의 텍스트가 영구히 브라우저 내부 스토리지에 새겨집니다
saveBtn.addEventListener('click', () => {
const text = memoBox.value;
chrome.storage.local.set({ myMemo: text }, () => {
alert('메모가 무사히 저장되었습니다!');
});
});
});
크롬 브라우저를 통한 압축해제 확장프로그램 디버깅
작성한 세 개의 파일이 한 폴더 안에 완벽히 자리 잡았다면, 이제 우리의 창작물을 직접 실행해 볼 짜릿한 순간입니다. 아까 열어두었던 크롬 브라우저의 `chrome://extensions` 페이지로 다시 이동합니다. 좌측 상단에 떠 있는 '압축해제된 확장프로그램을 로드합니다' 버튼을 경쾌하게 클릭해 줍니다. 그런 다음 방금 메모 관련 파일 세 개를 나란히 만들어 두었던 바탕화면의 폴더를 선택하고 확인을 누릅니다.
폴더가 정상적으로 로드되는 순간, 브라우저 상단 툴바에 우리가 지은 이름인 '초간단 메모장' 아이콘이 귀엽게 등록됩니다. 해당 아이콘을 클릭하여 메모창이 깔끔하게 부풀어 오르는지 확인해 보시기 바랍니다. 텍스트 상자에 아무 말이나 써서 저장 버튼을 눌러보고, 크롬 브라우저를 완전히 껐다가 다시 켰을 때도 내가 입력했던 소중한 단어들이 고스란히 남아 있는지 테스트해 봅니다. 이 단순한 과정을 성공한 순간 여러분은 이미 첫 웹 배포 어플리케이션을 만든 감격을 누리게 됩니다.
크롬 웹스토어 등록 절차 및 심사 리젝 회피 비법
로컬 환경에서 개발을 무사히 마무리 지었다면 이제 전 세계 수억 명의 크롬 이용자들이 내 작품을 다운로드받아 볼 수 있도록 크롬 웹스토어 대시보드에 업로드할 때입니다. 등록을 위해서는 내가 만든 프로젝트 폴더 자체를 압축 파일(ZIP)로 예쁘게 말아 주어야 합니다. 크롬 개발자 대시보드에 로그인하여 5달러 결제를 완료한 뒤, '새 아이템 추가' 버튼을 눌러 이 ZIP 파일을 드래그 앤 드롭해 줍니다.
이때 가장 가슴 졸이게 되는 단계가 구글 검수팀의 보안 심사 과정입니다. 구글은 개인정보 탈취나 악성 스크립트 유포에 대단히 예민하게 반응하기 때문에, 심사에서 단번에 통과하기 위한 몇 가지 철칙이 존재합니다. 첫째, 본문에서 외부 서버의 의심스러운 소스를 원격으로 호출하는 `eval()` 같은 동적 자바스크립트 사용을 엄격히 배제해야 합니다. 둘째, 프로그램 설명란에 '무조건 돈을 벌어다 주는 신기한 앱' 같은 자극적이고 과장된 문구 대신 제공하는 명확한 기능 위주로 담백하고 정직하게 텍스트를 기재해야만 영문도 모른 채 내려지는 리젝 폭탄을 부드럽게 피해 갈 수 있습니다.
노코드 플랫폼 n8n과 Glide 연동으로 운영비 제로 자동화
내 확장프로그램이 사용자의 기기 안에서 혼자 굴러가는 것을 넘어, 수집된 주요 정보들이 내 비즈니스 시트나 외부 대시보드로 실시간 동기화된다면 훨씬 더 강력한 사업적 파괴력을 가지게 됩니다. 이때 우리는 값비싼 자체 백엔드 서버를 직접 구축하는 대형 삽질을 할 필요가 없습니다. 크롬 확장프로그램의 팝업창에서 사용자가 클릭한 액션 정보를 가벼운 외부 API 요청으로 변환하여 무료 노코드 통신 도구인 Make나 n8n의 웹훅(Webhook) URL로 전송하기만 하면 되기 때문입니다.
백그라운드에서 실행되는 이 아름다운 자동화 통신 메커니즘을 텍스트 기반 플로우차트 흐름도로 한눈에 파악해 두시기 바랍니다. 이 흐름을 머릿속에 그릴 수 있다면 데이터베이스를 다룰 줄 몰라도 엄청난 트래픽을 감당하는 웹 서비스를 단숨에 직접 구현해낼 수 있습니다.
[크롬 확장프로그램 팝업] ──(사용자 활동 발생)──>
[n8n/Make Webhook 수신] ──(데이터 필터링 및 변환)──>
[Glide 노코드 데이터베이스 시트 적재] ──>
[나만의 비즈니스 대시보드 자동 갱신]
웹훅을 통해 전송된 데이터를 n8n이나 Make가 차분히 수신하여 노코드 데이터베이스 솔루션인 Glide 스프레드시트에 고스란히 쌓아 줍니다. Glide는 구글 시트 기반의 데이터를 세련되고 아름다운 모바일 앱이나 웹 대시보드 화면으로 즉시 렌더링해 주는 훌륭한 도구입니다. 만약 셀프호스팅 방식으로 n8n을 직접 자체 서버에 설치하여 운영한다면 인프라 운영비를 0원에 가깝게 유지할 수 있습니다. 다만, Make나 Glide 같은 외부 플랫폼 서비스를 기본 무료 요금제 이상으로 확장하여 고급 기능을 쓰거나 본격적으로 사용량이 늘어나는 경우에는 연동 요금제에 따라 월 고정 비용이 발생할 수 있으니 비즈니스 규모에 맞춰 설계해야 합니다.
Stripe 글로벌 결제와 프리미엄 구독 기반의 비즈니스 확장
프로그램의 다운로드 횟수가 서서히 올라가고 고정 사용자가 확보되기 시작했다면 마침내 우리 사업의 최종 목표인 '유료 수익화 마일스톤'을 정복할 준비가 되었습니다. 크롬 웹스토어 자체 결제 기능이 과거에 폐지되었기 때문에, 현재 수많은 1인 창업가들은 글로벌 온라인 결제 표준인 Stripe 결제 시스템을 활용하여 수익을 창출하고 있습니다. Stripe는 한국에서 사업자등록(개인사업자 포함) 후 개설한 Stripe 계정으로 글로벌 신용카드 정기 구독 결제판을 구성할 수 있는 놀라운 인프라를 마련해 줍니다.
가장 추천하는 결제 설계는 무료로 기본 기능을 제공하되 고급 기능이나 일일 사용 횟수 제한을 해제하기 위해 결제를 유도하는 '프리미엄(Freemium)' 구독형 비즈니스 모델입니다. 사용자가 Stripe 결제 링크에서 카드를 긁고 결제에 성공하면, Stripe 서버가 우리의 노코드 API로 신호를 쏘고 사용자의 고유 라이선스 키를 활성화해 줍니다. 이 결제 통신망이 온전히 세팅되는 순간, 직장인인 여러분이 회사에서 회의를 하거나 한밤중에 이불을 덮고 곤히 잠든 와중에도 지구 반대편의 사용자가 카드를 긁으며 수수료를 제외한 알짜배기 순수익이 내 통장에 꽂히는 진짜 자동수익 시스템이 실현됩니다.
비개발자가 개발 단계에서 마주하는 빈번한 에러 대처법
크롬 확장프로그램 개발 전선에 직접 뛰어들다 보면 반드시 한 번은 머리를 쥐어뜯게 만드는 단골 고장 상황을 겪게 됩니다. 그중에서도 대표적인 탑 3 에러 현상과 대처법을 짚어 드릴 테니, 나중에 막히는 순간 이 글을 다시 찾아 비상식량처럼 요긴하게 활용해 보시기 바랍니다.
첫째, 자바스크립트 파일에서 크롬의 로컬 스토리지를 호출할 때 발생하는 스토리지 권한 누락 오류는 입문자가 겪는 가장 대표적인 장애입니다. 크롬의 로컬 스토리지를 제어하려면 브라우저 시스템에 사전 승인을 받아야만 하기 때문입니다. 이 경우 당황하지 말고 `manifest.json` 파일 내부의 `permissions` 배열 대괄호 안에 `"storage"`라는 옵션을 오타 없이 정확히 명시했는지 확인해야 합니다.
둘째, 팝업창에서 아무리 클릭 버튼을 눌러도 반응이 없고 콘솔 창이 빈 채로 침묵한다면 HTML 내부에서 자바스크립트 파일명을 호출할 때 파일명 경로가 완전히 일치하는지, 혹은 대소문자가 어긋나지 않았는지 가장 먼저 찬찬히 확인해 보아야 합니다. 특히 자바스크립트 파일을 HTML 내부에서 로드하는 위치나 타이밍에 따라 DOM 요소 탐색 시점이 달라질 수 있으므로 경로와 호출 시기를 검증하는 것이 상책입니다.
셋째, Manifest V3 보안 통제 정책으로 인해 외부 웹사이트의 원격 이미지나 라이브러리를 임베딩하여 불러오려고 할 때 발생하는 보안 정책 거절(CSP) 에러입니다. 외부 라이브러리는 가급적이면 프로젝트 폴더 내부에 직접 로컬 파일로 다운로드하여 함께 압축 배포하는 정공법을 지켜야 안전합니다.
공식 문서와 유용한 서적 참조 가이드
이 책을 완독한 후 더 넓고 깊은 노코드 웹 어플리케이션의 세계로 탐험을 계속하고 싶다면, 구글이 공식적으로 제공하는 'Chrome Developer Documentation' 사이트를 언제나 첫 번째 나침반으로 삼아야 합니다. 구글 공식 문서는 보안 표준의 급격한 변화나 새로운 확장 API 스펙을 전 세계에서 가장 빠르게 실시간으로 업데이트하여 보여주기 때문입니다. 처음에는 온통 영어로 가득 찬 화면이 낯설고 외계어처럼 느껴지겠지만 크롬 브라우저의 마우스 우클릭 번역 기능을 켜고 몇 번 훑어보면 이내 눈에 익숙해집니다.
다음으로 국내의 역동적인 노코드 비즈니스 생태계가 둥지를 틀고 있는 네이버 카페나 디스코드 커뮤니티에 가입하여 다른 창작자들의 실전 수익화 실패 및 배포 수기를 눈으로 직접 읽어보는 일을 추천합니다. 기술적인 장벽에 부딪혀 하루 종일 끙끙 앓던 문제가 커뮤니티 게시판에 가벼운 키워드로 검색해 보는 것만으로 5분 만에 허무할 정도로 말끔히 해결되는 경험을 하실 수 있습니다. 책에서 가볍게 다루고 넘어간 세부 기법들의 실제 구축 사례를 공유받는 재미도 쏠쏠합니다.
확장프로그램에서 데이터 연동까지의 시스템 아키텍처
글로벌 사용자가 내 크롬 확장프로그램 아이콘을 누르는 순간부터 결제가 진행되고, 최종적으로 내 통장과 노코드 데이터베이스 시트에 기록이 안착하기까지의 전체적인 시스템 흐름을 텍스트 기반 아키텍처 블록 형태로 깔끔하게 요약해 드립니다. 이 흐름도는 여러분이 앞으로 어떠한 웹 비즈니스 구조를 기획하더라도 든든한 등대 기둥이 되어 줄 것입니다.
[1. 크롬 브라우저 팝업] (사용자 조작 및 데이터 입력)
│
├─> [chrome.storage.local] (사용자 기기 내부 오프라인 보존)
│
└─> [chrome.runtime.sendMessage] (비동기 제어 명령)
│
▼
[2. Manifest V3 서비스 워커] (백그라운드 통신 처리 주체)
│
├─> [Stripe API] (글로벌 정기 구독 및 결제 처리 결과 검증)
│
└─> [Make/n8n Webhook] (외부 자동화 서버로 페이로드 전송)
│
▼
[3. 노코드 Glide 데이터베이스] (실시간 시트 적재 및 모바일 통계 뷰어)
마치며: 나만의 디지털 자산을 세상에 내놓을 준비
신인웅 작가님의 《개발자 없이 나만의 확장프로그램으로 돈 버는 법》을 한 장씩 넘겨 가며 머릿속으로만 가득했던 아이디어를 직접 한 줄씩 컴퓨터 화면에 구현해 보았을 때의 짜릿함은 이루 말로 표현하기 힘듭니다. 물론 완벽한 책은 없듯이, 이 책 역시 프로그래밍 중급자나 기존의 웹 서비스 구축 경험이 있는 숙련된 전문 개발자에게는 실전 코딩 스펙 면에서 다소 깊이가 얕고 겉핥기식으로 느껴질 수 있는 아쉬운 대목이 분명히 있습니다. 그렇지만 한 줄의 자바스크립트도 무서워서 도망치던 우리 같은 평범한 일반인들에게는 수백만 원짜리 학원 강의보다 훨씬 더 값지고 직관적인 '나만의 디지털 건물주 선언서'가 되어 주기에 충분합니다.
평생 회사에 나의 시간과 노동력을 갖다 바치며 월급날만 하염없이 기다리는 삶에서 탈출하고 싶다면, 지금 당장 노트북을 열고 Cursor 에디터에 첫 명령어를 쳐 보시길 간절히 추천해 드립니다. 하루에 딱 한 시간씩만 나의 영혼을 갈아 넣은 작은 확장프로그램이 크롬 웹스토어라는 글로벌 장터에서 전 세계 사용자들의 열렬한 선택을 받고 야금야금 정기 구독 요금을 물어오는 그 놀라운 월세 경험을, 여러분도 아주 조만간 반드시 온몸으로 맞이하시기를 진심으로 응원합니다.
최종 평점 : ★★★★★★★★★☆ (9/10)
'도서' 카테고리의 다른 글
| 퇴근 후 노트북 하나로 시작하는 1인 지식 기업 | 전자책으로 월세받기 프로젝트 실무 리뷰 (0) | 2026.09.01 |
|---|---|
| 남들 눈치 보지 않고 내 작업을 세상에 알리는 가장 영리한 방법 | 보여줘라, 아티스트처럼 오스틴 클레온 솔직 후기 (0) | 2026.08.31 |
| 광활한 우주 속에서 나의 존재 이유를 발견하는 여정 | 빅 픽쳐 션 캐럴 솔직 후기 (0) | 2026.08.31 |
| 지나간 시간 속에서 우리가 마주하는 것들 | 커피가 식기 전에 가와구치 도시카즈 솔직 후기 (0) | 2026.08.31 |
| 세상의 고통과 허무를 마주하는 깊이 있는 성찰 | 쇼펜하우어가 묻고 니체가 답하다 크리스토퍼 재너웨이 솔직 후기 (0) | 2026.08.27 |