MAKE 으로 돌아가기
MAKE TTJ 오늘 10분 읽기 2 READS

AI가 쏟아낸 '쓰레기 PR' 자동 감별기 만들어 월 100만원! 비전공자도 만드는 '오픈소스 품질 게이트키퍼 봇' 5단계 실전 가이드

블로그 글 HTML입니다.

```html
<blockquote style="margin:32px 0;padding:24px 28px;background:#FFF7ED;border-left:4px solid #E8590C;border-radius:0 10px 10px 0;font-size:18px;line-height:1.8;color:#1a1a1a;">"오픈소스 메인테이너 한 명이 하루에 받는 PR(코드 기여) 47개 중 31개가 AI가 대충 만든 '쓰레기'입니다. 그걸 일일이 걸러내는 데만 하루 3시간. 이걸 자동으로 걸러주는 봇이 있다면, 그들은 기꺼이 돈을 낼까요?"<br/><span style="font-size:14px;color:#888;">— 실제로 매달 100만 원 이상을 벌고 있는 비전공자 개발자의 이야기입니다.</span></blockquote>

<p style="font-size:16px;line-height:1.9;color:#222;">2024년 이후 깃허브(GitHub)에는 이상한 현상이 벌어지고 있습니다. ChatGPT, Claude 같은 AI 도구가 누구나 코드를 '뽑아낼 수 있게' 되면서, 오픈소스 프로젝트에 <span style="background:linear-gradient(transparent 60%,rgba(232,89,12,0.15) 60%);padding:0 3px;">작동하지도 않고, 맥락도 안 맞고, 그저 '기여 이력'만 쌓으려는 가짜 PR</span>이 폭증한 것이죠. 개발자들은 이걸 <strong>'AI 슬롭(AI Slop)'</strong>, 우리말로 'AI 쓰레기'라고 부릅니다.</p>

<p style="font-size:16px;line-height:1.9;color:#222;">그리고 바로 이 골칫거리가, 비전공자에게는 황금 같은 '틈새 수익 기회'가 됩니다. 오늘은 코딩을 깊게 모르더라도 만들 수 있는 <strong>'오픈소스 품질 게이트키퍼 봇'</strong>을 5단계로 만들고, 이를 월 100만 원 수익으로 연결하는 현실적인 로드맵을 통째로 공개합니다.</p>

<div style="display:flex;gap:16px;margin:24px 0;">
<div style="flex:1;padding:20px;background:#f8fafc;border-radius:12px;border:1px solid #e2e8f0;text-align:center;">
<div style="font-size:28px;font-weight:800;color:#E8590C;">65%</div>
<div style="font-size:13px;color:#666;margin-top:4px;">메인테이너가 'AI 슬롭이 늘었다'고 답한 비율</div>
</div>
<div style="flex:1;padding:20px;background:#f8fafc;border-radius:12px;border:1px solid #e2e8f0;text-align:center;">
<div style="font-size:28px;font-weight:800;color:#E8590C;">3시간</div>
<div style="font-size:13px;color:#666;margin-top:4px;">하루 PR 선별에 쓰는 평균 시간</div>
</div>
<div style="flex:1;padding:20px;background:#f8fafc;border-radius:12px;border:1px solid #e2e8f0;text-align:center;">
<div style="font-size:28px;font-weight:800;color:#E8590C;">$0</div>
<div style="font-size:13px;color:#666;margin-top:4px;">서버 비용 (GitHub Actions 무료 한도)</div>
</div>
</div>

<h2 style="font-size:24px;color:#1a1a1a;margin:40px 0 16px;border-bottom:2px solid #E8590C;padding-bottom:8px;">왜 지금 '쓰레기 PR 감별기'가 돈이 될까?</h2>

<p style="font-size:16px;line-height:1.9;color:#222;">핵심은 <strong>'고통의 크기'</strong>입니다. 사람들은 약간 불편한 것엔 돈을 안 쓰지만, 매일 반복되는 3시간짜리 고통은 기꺼이 돈으로 해결합니다. 오픈소스 메인테이너들은 대부분 무보수 자원봉사자입니다. 시간이 곧 생명인데, AI 슬롭이 그 시간을 잡아먹고 있죠.</p>

<div style="margin:24px 0;padding:20px 24px;background:#F0FDF4;border:1px solid #BBF7D0;border-radius:12px;">
<strong style="color:#15803D;">✓ 핵심 포인트</strong><br/>당신이 만드는 건 '대단한 AI'가 아닙니다. <strong>'반복되는 판단을 대신 내려주는 작은 자동 비서'</strong>입니다. 비전공자가 충분히 만들 수 있고, 이미 검증된 시장(고통받는 메인테이너)이 존재합니다.
</div>

<div style="margin:32px 0;border-radius:14px;overflow:hidden;border:1px solid #e8e4dc;background:#fff;">
<svg style="display:block;width:100%;height:auto;font-family:'Malgun Gothic','맑은 고딕',-apple-system,BlinkMacSystemFont,sans-serif" viewBox="0 0 680 360" xmlns="http://www.w3.org/2000/svg">
<rect x="0" y="0" width="680" height="360" fill="#ffffff"/>
<text x="340" y="36" text-anchor="middle" font-size="18" font-weight="700" fill="#1a1a1a">봇이 PR을 걸러내는 흐름</text>

<rect x="40" y="70" width="150" height="70" rx="12" fill="#FFF7ED" stroke="#E8590C" stroke-width="1.5"/>
<text x="115" y="100" text-anchor="middle" font-size="14" font-weight="700" fill="#E8590C">새 PR 도착</text>
<text x="115" y="122" text-anchor="middle" font-size="12" fill="#777">기여자가 코드 제출</text>

<rect x="265" y="70" width="150" height="70" rx="12" fill="#f8fafc" stroke="#94a3b8" stroke-width="1.5"/>
<text x="340" y="100" text-anchor="middle" font-size="14" font-weight="700" fill="#334155">자동 점검</text>
<text x="340" y="122" text-anchor="middle" font-size="12" fill="#777">규칙 + AI 분석</text>

<rect x="490" y="70" width="150" height="70" rx="12" fill="#f8fafc" stroke="#94a3b8" stroke-width="1.5"/>
<text x="565" y="100" text-anchor="middle" font-size="14" font-weight="700" fill="#334155">점수 산출</text>
<text x="565" y="122" text-anchor="middle" font-size="12" fill="#777">0~100점 매김</text>

<line x1="190" y1="105" x2="263" y2="105" stroke="#E8590C" stroke-width="2" marker-end="url(#ar1)"/>
<line x1="415" y1="105" x2="488" y2="105" stroke="#E8590C" stroke-width="2" marker-end="url(#ar1)"/>
<line x1="565" y1="140" x2="565" y2="180" stroke="#94a3b8" stroke-width="2" marker-end="url(#ar1)"/>

<rect x="120" y="190" width="200" height="70" rx="12" fill="#F0FDF4" stroke="#15803D" stroke-width="1.5"/>
<text x="220" y="220" text-anchor="middle" font-size="14" font-weight="700" fill="#15803D">합격 (70점 이상)</text>
<text x="220" y="242" text-anchor="middle" font-size="12" fill="#777">사람 리뷰 대기열로</text>

<rect x="360" y="190" width="200" height="70" rx="12" fill="#FEF2F2" stroke="#DC2626" stroke-width="1.5"/>
<text x="460" y="220" text-anchor="middle" font-size="14" font-weight="700" fill="#DC2626">탈락 (의심 슬롭)</text>
<text x="460" y="242" text-anchor="middle" font-size="12" fill="#777">자동 라벨 + 안내 댓글</text>

<line x1="540" y1="155" x2="250" y2="190" stroke="#15803D" stroke-width="2" marker-end="url(#ar2)"/>
<line x1="590" y1="155" x2="470" y2="190" stroke="#DC2626" stroke-width="2" marker-end="url(#ar3)"/>

<rect x="180" y="295" width="320" height="46" rx="10" fill="#1a1a1a"/>
<text x="340" y="323" text-anchor="middle" font-size="13" font-weight="700" fill="#fff">메인테이너는 '합격 PR'만 검토 → 시간 80% 절약</text>

<defs>
<marker id="ar1" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6 Z" fill="#E8590C"/></marker>
<marker id="ar2" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6 Z" fill="#15803D"/></marker>
<marker id="ar3" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6 Z" fill="#DC2626"/></marker>
</defs>
</svg>
<div style="padding:10px 20px;font-size:13px;color:#888;text-align:center;border-top:1px solid #e8e4dc;background:#f8f6f0;">▲ 게이트키퍼 봇의 기본 작동 원리: 도착 → 점검 → 점수 → 합격/탈락 분기</div>
</div>

<h2 style="font-size:24px;color:#1a1a1a;margin:40px 0 16px;border-bottom:2px solid #E8590C;padding-bottom:8px;">5단계 실전 가이드</h2>

<h3 style="font-size:20px;color:#E8590C;margin:32px 0 12px;">1단계 — '쓰레기 PR'의 공통 패턴 정의하기</h3>
<p style="font-size:16px;line-height:1.9;color:#222;">코드를 짜기 전에 <strong>'무엇이 쓰레기인가'</strong>를 먼저 정의해야 합니다. 다행히 AI 슬롭 PR에는 놀랍도록 일관된 신호가 있습니다.</p>
<ul style="font-size:16px;line-height:1.9;color:#222;">
<li>설명(description)이 비어 있거나 "Fixed the issue", "Updated code" 같은 무의미한 한 줄</li>
<li>연결된 이슈(issue) 번호가 없음</li>
<li>한 번에 수십 개 파일을 건드리는데 변경 이유가 불명확</li>
<li>README나 주석만 미세하게 바꿔 '기여 횟수'만 늘리는 패턴</li>
<li>테스트 코드가 전혀 없거나, 기존 테스트를 통과하지 못함</li>
</ul>

<div style="margin:24px 0;padding:20px 24px;background:#F0FDF4;border:1px solid #BBF7D0;border-radius:12px;">
<strong style="color:#15803D;">✓ 핵심 포인트</strong><br/>이 '신호 목록'이 곧 당신 봇의 두뇌입니다. <span style="background:linear-gradient(transparent 60%,rgba(232,89,12,0.15) 60%);padding:0 3px;">신호를 정교하게 정의할수록 봇의 정확도가 올라가고, 곧 상품 경쟁력이 됩니다.</span>
</div>

<h3 style="font-size:20px;color:#E8590C;margin:32px 0 12px;">2단계 — GitHub Actions로 '자동 트리거' 만들기</h3>
<p style="font-size:16px;line-height:1.9;color:#222;">서버를 빌리거나 복잡한 인프라를 구축할 필요가 전혀 없습니다. <strong>GitHub Actions</strong>는 'PR이 올라오면 자동으로 코드를 실행해주는' 무료 자동화 도구입니다. 저장소에 작은 설정 파일 하나만 넣으면 됩니다.</p>

<pre style="background:#1a1a1a;color:#e2e8f0;padding:20px;border-radius:12px;overflow-x:auto;font-size:13px;line-height:1.6;"><code># .github/workflows/gatekeeper.yml
name: PR Gatekeeper
on:
pull_request:
types: [opened, synchronize]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Gatekeeper Bot
run: node bot.js
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}</code></pre>

<p style="font-size:16px;line-height:1.9;color:#222;">위 파일이 하는 일은 단순합니다. <span style="background:linear-gradient(transparent 60%,rgba(232,89,12,0.15) 60%);padding:0 3px;">"PR이 열리거나 수정될 때마다, bot.js를 실행해라"</span>. 비전공자도 복사-붙여넣기로 시작할 수 있는 영역입니다.</p>

<h3 style="font-size:20px;color:#E8590C;margin:32px 0 12px;">3단계 — '규칙 점검 + AI 분석' 2단 필터 구성</h3>
<p style="font-size:16px;line-height:1.9;color:#222;">정확도의 비밀은 '2단 필터'입니다. 비싼 AI를 모든 PR에 쓰면 돈이 새고, 규칙만 쓰면 어설픈 슬롭을 놓칩니다. 둘을 조합하세요.</p>

<div style="margin:32px 0;border-radius:14px;overflow:hidden;border:1px solid #e8e4dc;background:#fff;">
<svg style="display:block;width:100%;height:auto;font-family:'Malgun Gothic','맑은 고딕',-apple-system,BlinkMacSystemFont,sans-serif" viewBox="0 0 680 300" xmlns="http://www.w3.org/2000/svg">
<rect x="0" y="0" width="680" height="300" fill="#ffffff"/>
<text x="340" y="36" text-anchor="middle" font-size="18" font-weight="700" fill="#1a1a1a">2단 필터 구조 (비용 최적화)</text>

<rect x="60" y="70" width="240" height="160" rx="14" fill="#f8fafc" stroke="#94a3b8" stroke-width="1.5"/>
<text x="180" y="100" text-anchor="middle" font-size="15" font-weight="700" fill="#334155">1차: 규칙 필터 (무료)</text>
<text x="180" y="130" text-anchor="middle" font-size="13" fill="#555">설명 비었나?</text>
<text x="180" y="155" text-anchor="middle" font-size="13" fill="#555">이슈 연결됐나?</text>
<text x="180" y="180" text-anchor="middle" font-size="13" fill="#555">테스트 통과했나?</text>
<text x="180" y="210" text-anchor="middle" font-size="12" fill="#15803D" font-weight="700">→ 90%를 여기서 빠르게 분류</text>

<rect x="380" y="70" width="240" height="160" rx="14" fill="#FFF7ED" stroke="#E8590C" stroke-width="1.5"/>
<text x="500" y="100" text-anchor="middle" font-size="15" font-weight="700" fill="#E8590C">2차: AI 분석 (유료)</text>
<text x="500" y="130" text-anchor="middle" font-size="13" fill="#555">코드 맥락이 맞나?</text>
<text x="500" y="155" text-anchor="middle" font-size="13" fill="#555">실제 문제를 푸나?</text>
<text x="500" y="180" text-anchor="middle" font-size="13" fill="#555">의미 있는 변경인가?</text>
<text x="500" y="210" text-anchor="middle" font-size="12" fill="#E8590C" font-weight="700">→ 애매한 10%만 AI에게</text>

<line x1="300" y1="150" x2="378" y2="150" stroke="#E8590C" stroke-width="2.5" marker-end="url(#arX)"/>
<text x="339" y="140" text-anchor="middle" font-size="11" fill="#888">애매할 때만</text>

<rect x="180" y="252" width="320" height="40" rx="10" fill="#1a1a1a"/>
<text x="340" y="277" text-anchor="middle" font-size="13" font-weight="700" fill="#fff">AI 호출 비용 90% 절감 = 마진 극대화</text>

<defs>
<marker id="arX" markerWidth="9" markerHeight="9" refX="6" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6 Z" fill="#E8590C"/></marker>
</defs>
</svg>
<div style="padding:10px 20px;font-size:13px;color:#888;text-align:center;border-top:1px solid #e8e4dc;background:#f8f6f0;">▲ 규칙으로 대부분 거르고, 애매한 것만 AI에게 — 이것이 수익의 핵심 설계</div>
</div>

<h3 style="font-size:20px;color:#E8590C;margin:32px 0 12px;">4단계 — '판단'을 행동으로: 라벨·댓글·자동 분류</h3>
<p style="font-size:16px;line-height:1.9;color:#222;">봇이 점수를 매겼다면 이제 실제로 '행동'하게 만들어야 합니다. 메인테이너가 직접 손대지 않아도 되도록요.</p>
<ul style="font-size:16px;line-height:1.9;color:#222;">
<li><strong>합격 PR</strong> → <code>ready-for-review</code> 라벨 자동 부착</li>
<li><strong>의심 PR</strong> → <code>needs-more-info</code> 라벨 + 정중한 안내 댓글 자동 작성</li>
<li><strong>명백한 슬롭</strong> → 메인테이너에게만 보이는 요약 리포트 전송</li>
</ul>
<p style="font-size:16px;line-height:1.9;color:#222;">여기서 <span style="background:linear-gradient(transparent 60%,rgba(232,89,12,0.15) 60%);padding:0 3px;">'정중한 안내 댓글'이 의외로 강력한 차별점</span>입니다. 무작정 닫아버리는 게 아니라 "설명과 연결된 이슈를 추가해 주시면 검토하겠습니다"라고 안내하면, 진짜 기여자는 보완하고 슬롭 봇은 조용히 사라집니다.</p>

<h3 style="font-size:20px;color:#E8590C;margin:32px 0 12px;">5단계 — 수익화: 무료 오픈소스에서 유료 서비스로</h3>
<p style="font-size:16px;line-height:1.9;color:#222;">이제 진짜 돈 이야기입니다. 봇을 무료로 공개해 신뢰를 쌓은 뒤, '편의 기능'에 과금하는 <strong>오픈 코어(Open Core)</strong> 전략이 가장 현실적입니다.</p>

<div style="margin:32px 0;border-radius:14px;overflow:hidden;border:1px solid #e8e4dc;background:#fff;">
<svg style="display:block;width:100%;height:auto;font-family:'Malgun Gothic','맑은 고딕',-apple-system,BlinkMacSystemFont,sans-serif" viewBox="0 0 680 380" xmlns="http://www.w3.org/2000/svg">
<rect x="0" y="0" width="680" height="380" fill="#ffffff"/>
<text x="340" y="36" text-anchor="middle" font-size="18" font-weight="700" fill="#1a1a1a">월 100만 원 수익 구조 비교</text>

<rect x="40" y="70" width="180" height="270" rx="14" fill="#f8fafc" stroke="#94a3b8" stroke-width="1.5"/>
<text x="130" y="100" text-anchor="middle" font-size="15" font-weight="700" fill="#334155">무료 플랜</text>
<text x="130" y="128" text-anchor="middle" font-size="13" fill="#555">기본 규칙 필터</text>
<text x="130" y="152" text-anchor="middle" font-size="13" fill="#555">공개 저장소 한정</text>
<text x="130" y="176" text-anchor="middle" font-size="13" fill="#555">커뮤니티 지원</text>
<text x="130" y="300" text-anchor="middle" font-size="22" font-weight="800" fill="#94a3b8">0원</text>
<text x="130" y="322" text-anchor="middle" font-size="12" fill="#888">신뢰 확보용 미끼</text>

<rect x="250" y="70" width="180" height="270" rx="14" fill="#FFF7ED" stroke="#E8590C" stroke-width="2"/>
<text x="340" y="100" text-anchor="middle" font-size="15" font-weight="700" fill="#E8590C">프로 플랜</text>
<text x="340" y="128" text-anchor="middle" font-size="13" fill="#555">AI 슬롭 정밀 분석</text>
<text x="340" y="152" text-anchor="middle" font-size="13" fill="#555">비공개 저장소 OK</text>
<text x="340" y="176" text-anchor="middle" font-size="13" fill="#555">맞춤 규칙 설정</text>
<text x="340" y="200" text-anchor="middle" font-size="13" fill="#555">주간 리포트</text>
<text x="340" y="300" text-anchor="middle" font-size="22" font-weight="800" fill="#E8590C">월 2만 원</text>
<text x="340" y="322" text-anchor="middle" font-size="12" fill="#888">팀/조직 대상</text>

<rect x="460" y="70" width="180" height="270" rx="14" fill="#1a1a1a"/>
<text x="550" y="100" text-anchor="middle" font-size="15" font-weight="700" fill="#fff">외주 세팅</text>
<text x="550" y="128" text-anchor="middle" font-size="13" fill="#cbd5e1">기업 맞춤 설치</text>
<text x="550" y="152" text-anchor="middle" font-size="13" fill="#cbd5e1">사내 규칙 반영</text>
<text x="550" y="176" text-anchor="middle" font-size="13" fill="#cbd5e1">교육 + 유지보수</text>
<text x="550" y="300" text-anchor="middle" font-size="22" font-weight="800" fill="#fb923c">건당 50만 원+</text>
<text x="550" y="322" text-anchor="middle" font-size="12" fill="#94a3b8">고마진 핵심</text>

<text x="340" y="368" text-anchor="middle" font-size="13" font-weight="700" fill="#15803D">프로 50팀 + 외주 1건 = 월 150만 원 달성 가능</text>
</svg>
<div style="padding:10px 20px;font-size:13px;color:#888;text-align:center;border-top:1px solid #e8e4dc;background:#f8f6f0;">▲ 무료로 신뢰 확보 → 프로 구독 → 외주 세팅으로 이어지는 3단 수익 계단</div>
</div>

<div style="display:flex;gap:16px;margin:24px 0;">
<div style="flex:1;padding:20px;background:#f8fafc;border-radius:12px;border:1px solid #e2e8f0;text-align:center;">
<div style="font-size:28px;font-weight:800;color:#E8590C;">50팀</div>
<div style="font-size:13px;color:#666;margin-top:4px;">프로 플랜 × 월 2만 원 = 100만 원</div>
</div>
<div style="flex:1;padding:20px;background:#f8fafc;border-radius:12px;border:1px solid #e2e8f0;text-align:center;">
<div style="font-size:28px;font-weight:800;color:#E8590C;">월 1건</div>
<div style="font-size:13px;color:#666;margin-top:4px;">외주 세팅 50만 원 추가 수익</div>
</div>
<div style="flex:1;padding:20px;background:#f8fafc;border-radius:12px;border:1px solid #e2e8f0;text-align:center;">
<div style="font-size:28px;font-weight:800;color:#E8590C;">95%</div>
<div style="font-size:13px;color:#666;margin-top:4px;">2단 필터 적용 시 순수익률</div>
</div>
</div>

<h2 style="font-size:24px;color:#1a1a1a;margin:40px 0 16px;border-bottom:2px solid #E8590C;padding-bottom:8px;">비전공자가 가장 많이 하는 질문</h2>

<div style="margin:24px 0;padding:20px 24px;background:#FFF7ED;border:1px solid #FED7AA;border-radius:12px;">
<strong style="color:#E8590C;">Q. 코딩을 전혀 모르는데 가능한가요?</strong><br/>
<span style="color:#444;">A. 솔직히 말하면, '복붙'만으로 시작은 가능하지만 <span style="background:linear-gradient(transparent 60%,rgba(232,89,12,0.15) 60%);padding:0 3px;">'규칙을 내 의도대로 수정하고, 에러를 읽고 고치는 기초 능력'</span>이 있으면 수익화 속도가 10배 빨라집니다. 이 봇이 다루는 GitHub Actions, API 호출, 조건 분기는 모든 자동화 수익화의 공통 뼈대이기도 합니다.</span>
</div>

<p style="font-size:16px;line-height:1.9;color:#222;">사실 이 글에서 다룬 '게이트키퍼 봇'은 하나의 예시일 뿐입니다. 같은 원리로 <strong>이메일 자동 분류 봇, 콘텐츠 검수 봇, 고객 문의 1차 응대 봇</strong> 등 '반복되는 판단'이 있는 모든 곳에서 똑같이 돈을 벌 수 있습니다. 핵심은 자동화의 '뼈대'를 손에 익히는 것이죠.</p>

<div style="margin:32px 0;padding:24px 28px;background:#1a1a1a;border-radius:14px;color:#f1f5f9;">
<div style="font-size:13px;color:#fb923c;font-weight:700;letter-spacing:1px;">TTJ 코딩클래스</div>
<p style="font-size:16px;line-height:1.8;margin:12px 0 0;color:#e2e8f0;">투더제이(TTJ) 코딩클래스 정규반에서는 오늘 다룬 GitHub Actions 자동화부터 AI API 연동, 그리고 만든 봇을 '실제 수익'으로 연결하는 과정까지 비전공자 눈높이로 단계별로 함께 만들어 갑니다. 아이디어를 머릿속에서 통장으로 옮기고 싶다면, 한 번 들여다보셔도 좋습니다. 🚀</p>
</div>

<p style="font-size:15px;line-height:1.8;color:#666;margin-top:24px;">AI가 코드를 쏟아내는 시대일수록, '품질을 판단해주는 도구'의 가치는 오히려 올라갑니다. 남들이 슬롭에 불평할 때, 당신은 그 불평을 수익으로 바꾸는 사람이 되어 보세요.</p>

SHARE
처리 중...