4월 말, Google Cloud에서 메일 한 통을 받았다.

“프로젝트에서 의심스러운 활동이 감지됐다.”

처음에는 오탐이라고 생각했다.

그런데 결제 내역을 확인하니 내가 사용하지 않은 Gemini API 호출이 폭증했고, 이미지 생성 기능까지 사용되면서 약 473만 원의 비용이 발생하고 있었다.

더 이상했던 점은 하나였다.

문제가 발생한 프로젝트에서는 Gemini를 사용하지 않았다.

결론부터 말하면 Google에서 문제 비용의 100%를 조정받았고 최종적으로 카드 환불까지 받았다.

하지만 과금이 발생한 4월 말부터 실제 돈을 돌려받은 8월 말까지 약 4개월이 걸렸다.

그리고 개인적으로는 473만 원이 청구된 것보다 Google의 환불 과정이 더 힘들었다.


Gemini를 안 쓰는 프로젝트에서 Gemini 이미지 생성 비용이 나왔다

문제가 발생한 프로젝트는 Google Maps 등 여러 Google API를 사용하던 오래된 프로젝트였다.

Gemini는 사용하지 않았다.

그런데 비용을 세부적으로 확인하니 Gemini 이미지 생성과 이미지 출력 관련 사용량이 대량으로 발생해 있었다.

내 서비스에서는 해당 기능을 호출하지 않았다.

Google의 보안 시스템도 같은 프로젝트에서 이상 활동을 감지해 먼저 경고 메일을 보냈다.

단순한 사용량 증가라고 보기 어려웠다.


의심되는 것은 오래된 Google Maps용 키였다

프로젝트에는 Google Maps 등에 사용하는 API 키가 여러 개 있었다.

그중 하나는 웹사이트에서 사용하기 위해 웹사이트 주소 제한을 적용해둔 상태였다.

하지만 문제가 있었다.

사용할 수 있는 Google API 자체는 제한하지 않았다.

즉,

웹사이트 제한
→ 적용

호출 가능한 API 제한
→ 미적용

상태였다.

나는 Google Maps용으로 만든 키이니 당연히 Maps 위주로 사용될 것이라고 생각했다.

하지만 Google의 표준 API 키는 별도로 API 제한을 걸지 않으면 해당 키를 허용하는 다른 Google API에서도 사용할 수 있는 구조였다.

정확히 이 키가 악용됐다는 사실은 끝내 확인하지 못했다.

Google은 과거 요청에서 정확히 어떤 API 키와 IP가 사용됐는지 내가 확인할 수 있는 수준의 상세 정보를 제공하지 않았다.

따라서 특정 키의 유출을 단정하기보다는,

Gemini를 사용하지 않는 프로젝트에서 비정상적인 Gemini 이미지 생성 요청이 발생했다

는 사실을 중심으로 Google에 조사를 요청했다.


그런데 나만 겪은 일이 아니었다

사건 이후 찾아보니 Google의 공식 개발자 포럼에 매우 비슷한 글들이 계속 올라오고 있었다.

  • 몇 년 전 Safe Browsing용으로 만들었던 오래된 Google API 키에서 수천 달러의 Gemini 비용 발생
  • 프론트엔드에 포함된 키가 악용돼 약 40분 만에 수천 달러 발생
  • Firebase 브라우저용 키와 관련해 짧은 시간에 수만 유로의 Gemini 사용량 발생

공통점은 기존 Google API 키와 Gemini 과금의 조합이었다.

그리고 Google도 결국 이 부분을 바꾸기 시작했다.

현재 Gemini API는 제한 없는 표준 키의 요청을 거부하고 있으며, 새 Gemini 키는 기존 범용 API 키와 분리되는 방향으로 변경되고 있다.

Google 공식 안내 역시 AI용 키를 별도 프로젝트에 만들고 Gemini API만 사용할 수 있도록 제한할 것을 권장한다.

내가 사고를 겪었던 시점과 비교하면 상당히 중요한 변화다.


Google이 이상 활동을 발견했는데도 과금은 이미 473만 원

아쉬웠던 부분은 이것이다.

Google의 보안 시스템은 프로젝트의 이상 활동을 감지했다.

그런데 내가 이를 확인했을 때는 이미 카드 결제까지 진행된 뒤였다.

생성형 AI API는 일반적인 API와 달리 비용 증가 속도가 매우 빠르다.

이미지 생성 같은 고비용 기능을 자동으로 반복 호출하면 짧은 시간에도 큰 비용이 만들어질 수 있다.

결제 알림이나 이상 감지가 있어도 과금을 막아주는 장치가 아니라면 발견했을 때는 이미 늦을 수 있다.

실제로 Google 개발자 포럼에도 수십 분 또는 몇 시간 만에 수천 달러에서 수만 유로까지 비용이 증가했다는 사례들이 올라와 있다.


더 힘들었던 것은 환불이었다

보안 문제를 해결하면 바로 환불될 거라고 생각했다.

전혀 아니었다.

처음 문의한 Google 신뢰 및 안전팀에서는

“보안 문제와 결제 문제는 담당 부서가 다르다.”

며 결제 지원팀에 새로 문의하라고 했다.

결제 지원팀에서는 처음에 카드사를 통한 이의제기를 안내하기도 했다.

하지만 나는 계속 다음 사실을 전달했다.

  • 원래 Gemini를 사용하지 않는 프로젝트였다.
  • 사용하지 않는 이미지 생성 기능이 호출됐다.
  • Google의 보안 시스템도 같은 시점에 이상 활동을 감지했다.
  • 정상적인 고객 사용량이 아니므로 내부 조사가 필요하다.

결국 전문 부서 조사로 넘어갔고 Google에서도 특정 날짜에 Gemini 사용량이 비정상적으로 급증했다는 사실을 확인했다.

여러 차례 자료를 제출한 뒤 약 473만 원 전액에 대해 결제 조정이 승인됐다.

여기서 끝인 줄 알았다.


“전액 조정 완료”는 “카드 환불 완료”가 아니었다

Google이 100% 조정을 승인했지만 카드에서 돈이 바로 돌아오지는 않았다.

조정된 금액은 먼저 Google Cloud 결제 계정의 마이너스 잔액, 즉 환불 가능한 크레딧으로 들어왔다.

그래서 다시 환불을 신청해야 했다.

여기부터 상당히 혼란스러웠다.

환불 중인데 ‘결제하기’ 버튼이 나타났다

환불 상태를 확인하려고 결제 화면에 들어갔다가 결제하기 버튼을 눌렀고 실제로 471만 원이 다시 결제됐다.

결국 이 금액까지 다시 환불받아야 했다.

환불 중인 계정에서 이런 버튼이 노출되는 사용자 경험은 상당히 당황스러웠다.


카드 한도를 낮추자 환불까지 실패했다

추가 결제가 두려워 카드 한도를 낮췄다.

그런데 며칠 뒤 카드 앱에 471만 원짜리 Google Cloud 거래가 계속 승인 거절로 나타났다.

나는 Google이 다시 결제를 시도하고 있다고 생각했다.

Google에 문의하고서야 이 거래가 결제가 아니라 카드 환불 시도였다는 설명을 들었다.

Google 설명에 따르면 카드 한도를 줄인 영향으로 은행에서 환불 거래까지 거절하고 있었다.

카드사 앱에서는 결제 실패인지 환불 실패인지 명확하게 구분되지 않았다.


“결제 계정을 닫으세요” → 닫았더니 “카드 환불을 다시 할 수 없습니다”

다음 안내는 더욱 복잡했다.

Google에서는 한국 원화 결제 계정의 잔액을 카드로 돌려받으려면 결제 계정을 닫으라고 안내했다.

안내대로 계정을 닫았다.

그런데 카드 환불이 실패한 뒤 다시 시도해달라고 요청하니 이번에는

“결제 계정이 이미 닫혀 있어서 카드 환불을 다시 실행할 수 없다.”

는 답변이 왔다.

결국 이번에는 은행 계좌로 직접 보내는 수동 해외송금 환불 절차를 안내받았다.

이름, 주소, 은행 정보, SWIFT 코드와 서명이 들어간 별도의 양식까지 작성했다.

심지어 한 번은 지원팀에서 보낸 안내에 내 이름이 아닌 다른 사람의 이름이 들어가 있는 경우도 있었다.

다시 확인을 요청해야 했다.


수동 송금을 준비했는데 다시 “콘솔에서 환불 신청하세요”

은행 송금 양식까지 제출하고 기다리던 중 또 다른 담당자로부터 답변이 왔다.

이번에는 다시

“Google Cloud 결제 화면에서 환불 요청 버튼을 누르라.”

는 안내였다.

앞에서는 닫힌 결제 계정 때문에 카드 환불이 불가능하다고 했는데, 다시 결제 계정을 열고 콘솔에서 환불 요청을 진행하게 됐다.

한 사건을 해결하는 동안

  • 신뢰 및 안전팀
  • 결제 지원팀
  • 전문 조사팀
  • 지급 담당팀

사이를 오갔고 담당자가 바뀔 때마다 설명이 조금씩 달라졌다.

환불 자체보다 현재 어떤 환불 절차가 유효한지를 확인하는 데 더 많은 시간이 들었다.


4월 29일 → 8월 말, 약 4개월 만에 종료

결국 결제 계정을 다시 열어 환불을 신청했다.

Google에서 환불 완료 메일을 받았지만 카드에는 바로 반영되지 않았다.

며칠 더 기다린 뒤 최종적으로 카드사를 통해 실제 환불을 확인했다.

사건이 본격적으로 발생한 시점은 4월 29일.

실제 카드 환불을 확인한 것은 8월 말.

4개월이 걸렸다.

결과적으로 문제 비용은 전액 돌려받았지만,

이상 과금 자체보다 환불 절차를 따라가는 과정이 훨씬 힘들었다.


이번 사건에서 Google에 아쉬웠던 점

사용자가 API 키를 제대로 제한해야 한다는 것은 맞다.

하지만 이번 사건을 단순히

“사용자가 API 키 관리를 잘못했다.”

로만 정리하기에는 아쉬운 부분이 많았다.

1. 기존 범용 Google API 키가 Gemini 과금으로 연결될 수 있었다

Google Maps나 Firebase처럼 과거부터 클라이언트에서 사용하던 Google API 키와, 짧은 시간에 막대한 비용을 발생시킬 수 있는 생성형 AI API가 같은 인증 체계 안에서 연결될 수 있었다.

Google이 이후 Gemini에서 제한 없는 키를 차단하고 인증 방식을 변경한 것도 이 문제를 줄이기 위한 방향으로 보인다.

2. Google이 이상 활동을 감지했지만 큰 비용은 이미 발생했다

보안 시스템이 이상 활동을 발견했다는 사실은 다행이었다.

하지만 경고를 받았을 때는 이미 상당한 비용이 발생하고 카드 결제까지 진행된 상태였다.

3. 결제 조정과 실제 환불이 지나치게 분리돼 있었다

100% 결제 조정 승인을 받고도 실제 카드 환불까지 몇 달이 더 걸렸다.

사용자 입장에서는 “전액 환불 승인”과 “실제로 돈이 돌아옴”이 전혀 다른 단계였다.

4. 지원 부서마다 안내가 달랐다

결제 계정을 닫으라고 했다가, 닫으니 환불 재시도가 불가능하다고 했다.

은행 송금 양식을 작성하라고 했다가 다시 콘솔에서 환불 신청을 하라고 했다.

내가 가장 힘들었던 부분이다.

5. 환불 과정의 화면도 이해하기 어려웠다

환불 중인 결제 계정에 결제하기 버튼이 보였고, 실제로 이를 눌러 수백만 원이 다시 결제되는 일까지 발생했다.


지금은 Google도 Gemini 키 구조를 바꾸고 있다

현재 Google은 Gemini API 보안을 이전보다 강화하고 있다.

제한 없는 기존 API 키는 Gemini API에서 사용할 수 없게 했고, AI Studio에서 새로 만드는 키도 Gemini용으로 분리되는 방향으로 변경하고 있다.

Google 역시 공식적으로

  • AI API 키는 독립 프로젝트에서 만들고
  • 필요한 API만 허용하고
  • 애플리케이션 제한까지 적용

할 것을 권장하고 있다.

즉 지금 새로 Gemini를 시작한다면 내가 사고를 겪었을 당시와는 인증 구조가 달라지고 있다.


473만 원보다 값비쌌던 4개월

결국 돈은 모두 돌려받았다.

하지만 약 473만 원의 과금보다 이를 돌려받기 위해 4개월 동안 Google 지원팀과 주고받은 과정이 더 기억에 남는다.

이번 사건을 Google의 해킹이라고 주장할 근거는 없다.

정확히 어떤 키가 어떤 방법으로 악용됐는지도 확인하지 못했다.

하지만 적어도 한 가지는 분명하다.

기존 Google API 키와 고비용 생성형 AI API를 같은 방식으로 다루는 것은 위험했고, Google도 지금 그 구조를 바꾸고 있다.

오래된 Google Cloud 프로젝트를 가지고 있다면 한 번쯤 확인해보는 것을 권한다.

이 API 키는 어디에서 사용할 수 있는가?

그리고 더 중요하게,

이 API 키는 무엇을 호출할 수 있는가?

나는 그 차이를 473만 원이 청구되고, 다시 돌려받는 데 4개월을 쓰고 나서야 제대로 알게 됐다.

반응형

Bento는 '파일 하나에 담아 사용하는 오피스 스위트(Bento, the office suite that fits in a file)'를 목표로 개발되고 있는 오픈소스 프로젝트입니다. GitHub에서 누구나 소스 코드를 확인하고 참여할 수 있으며, TypeScript 기반으로 개발되고 있다는 점도 확인할 수 있습니다.

복잡한 설치 과정보다 가볍고 간결한 사용 경험을 지향하는 프로젝트를 찾고 있다면 한 번 살펴볼 만한 저장소입니다.

최근에는 다양한 생산성 도구가 웹 기반으로 제공되고 있지만, Bento는 '파일 하나에 담아 사용하는 오피스 스위트'​라는 명확한 방향성을 제시하는 오픈소스 프로젝트입니다. GitHub를 통해 공개되어 있어 누구나 프로젝트의 진행 상황을 확인하고 직접 기여할 수 있다는 점이 특징입니다.

현재 저장소에서는 TypeScript를 중심으로 개발이 이루어지고 있으며, 이슈 관리와 코드 공개를 통해 지속적으로 프로젝트가 발전하고 있습니다. 오픈소스 프로젝트답게 개발 과정이 투명하게 공개되어 있어 단순한 사용자뿐 아니라 개발자들에게도 참고할 만한 자료가 됩니다.

실제로 새로운 생산성 도구를 탐색하는 개발자라면 프로젝트 구조를 살펴보거나 직접 실행해 보면서 구현 방식을 연구할 수 있습니다. 또한 오픈소스에 관심 있는 사람이라면 버그 수정이나 기능 개선에 참여하면서 프로젝트와 함께 성장하는 경험도 기대할 수 있습니다.

비슷한 오피스 프로젝트들이 완성된 상용 서비스를 제공하는 데 집중한다면, Bento는 오픈소스 생태계 안에서 누구나 코드와 개발 과정을 확인하고 참여할 수 있다는 점이 눈에 띕니다. 프로젝트의 방향성과 구현 방식을 직접 확인할 수 있다는 점은 개발자와 기술에 관심 있는 사용자에게 특히 매력적인 요소입니다.

이 프로젝트는 새로운 오피스 도구를 살펴보고 싶은 사용자, 오픈소스 프로젝트를 공부하는 개발자, TypeScript 기반 애플리케이션 구조를 참고하고 싶은 사람들에게 추천할 만합니다. 또한 GitHub를 통해 프로젝트의 발전 과정을 지속적으로 확인하고 싶은 분들에게도 좋은 선택이 될 수 있습니다.

아직은 GitHub 저장소를 중심으로 공개되고 있는 프로젝트이지만, Bento는 '하나의 파일에 담긴 오피스 스위트'라는 흥미로운 아이디어를 바탕으로 개발이 진행되고 있습니다. 오픈소스 프로젝트의 성장 과정을 함께 지켜보거나 직접 참여하고 싶은 분이라면 한 번 살펴볼 가치가 있는 저장소입니다.

 

https://github.com/nyblnet/bento

 

GitHub - nyblnet/bento: Bento, the office suite that fits in a file

Bento, the office suite that fits in a file. Contribute to nyblnet/bento development by creating an account on GitHub.

github.com

 

https://bento.page/

 

bento — the office suite that fits in a file

One HTML file is the document, the editor and the player at once. Local-first, AI-native, end-to-end-encrypted live collaboration, works offline forever.

bento.page

 

반응형

Marketing Skills는 Claude Code, OpenAI Codex, Cursor, Windsurf 같은 AI 코딩 에이전트가 마케팅 업무를 더 잘 수행하도록 돕는 오픈소스 스킬 모음입니다.
CRO, 카피라이팅, SEO, 애널리틱스, 그로스 엔지니어링 등 기술 마케터와 창업자가 자주 마주치는 실무 영역을 중심으로 구성되어 있습니다.

이 저장소의 핵심은 단순한 프롬프트 모음이 아니라, AI 에이전트가 특정 마케팅 작업을 인식하고 그에 맞는 워크플로와 프레임워크를 적용하도록 돕는다는 점입니다. README에 따르면 각 스킬은 마크다운 파일 형태로 제공되며, 프로젝트에 추가하면 에이전트가 전환율 개선, 카피 작성, SEO 진단 같은 작업 상황에 맞춰 적절한 방식을 사용할 수 있습니다.

특히 눈에 띄는 부분은 product-marketing 스킬을 중심으로 다른 스킬들이 연결되는 구조입니다. 이 기본 스킬이 먼저 제품, 고객, 포지셔닝 맥락을 이해하고, 이후 CRO, 카피라이팅, A/B 테스트, SEO, 세일즈 지원 등 관련 스킬들이 서로 참조하며 작업을 이어갑니다. 덕분에 단발성 답변보다 제품 맥락을 반영한 마케팅 결과물을 만들기 쉬운 구조입니다.

활용 방식도 비교적 명확합니다. 예를 들어 “랜딩페이지 전환율을 개선해줘”라고 요청하면 CRO 스킬을, “SaaS 홈페이지 카피를 작성해줘”라고 하면 카피라이팅 스킬을, “가입 이벤트용 GA4 추적을 설정해줘”라고 하면 애널리틱스 스킬을 사용할 수 있습니다. 필요할 경우 /cro, /emails, /seo-audit처럼 특정 스킬을 직접 호출하는 방식도 안내되어 있습니다.

비슷한 AI 프롬프트 자료와 비교했을 때 Marketing Skills가 돋보이는 점은 범위와 실무성이 함께 갖춰져 있다는 점입니다. 전환 최적화, 콘텐츠와 카피, SEO와 검색 노출, 광고와 배포, 측정과 실험, 리텐션, 그로스 엔지니어링, 가격 전략, 세일즈 지원까지 카테고리가 넓게 나뉘어 있어 마케팅의 여러 단계를 하나의 저장소 안에서 다룰 수 있습니다.

추천 대상은 AI 코딩 에이전트를 이미 업무에 활용하고 있는 기술 마케터, SaaS 창업자, 그로스 담당자, 개발에 익숙한 1인 창업자입니다. 특히 제품 페이지 개선, 이메일 시퀀스 작성, SEO 점검, 광고 문안 생성, 세일즈 자료 준비처럼 반복되지만 맥락이 중요한 작업을 AI와 함께 처리하고 싶은 사람에게 유용합니다.

설치 방식도 여러 가지가 제공됩니다. npx skills를 이용한 CLI 설치, Claude Code 플러그인 설치, 저장소 클론 후 복사, Git Submodule, SkillKit을 통한 멀티 에이전트 설치 등이 안내되어 있어 사용 환경에 맞게 선택할 수 있습니다. 저장소는 MIT 라이선스로 공개되어 있으며, GitHub 페이지 기준 37.2k stars와 6k forks를 기록하고 있어 관심도도 높은 편입니다.

정리하면 Marketing Skills는 “AI에게 마케팅을 시켜보고 싶다”는 막연한 기대를 실제 업무 흐름으로 연결해주는 도구에 가깝습니다. 카피 한 줄을 뽑는 수준을 넘어, 제품 맥락을 이해하고 전환, SEO, 실험, 리텐션, 세일즈까지 연결된 마케팅 작업을 구조화하고 싶다면 살펴볼 만한 저장소입니다.

 

https://github.com/coreyhaines31/marketingskills

 

GitHub - coreyhaines31/marketingskills: Marketing skills for Claude Code and AI agents. CRO, copywriting, SEO, analytics, and gr

Marketing skills for Claude Code and AI agents. CRO, copywriting, SEO, analytics, and growth engineering. - coreyhaines31/marketingskills

github.com

 

반응형

+ Recent posts