Week 3

Monetization & Agentic AI 맛보기

결제 시스템 연동 + 뉴스레터 자동화 Agent

사전 준비사항

  • 어떤 뉴스를 수집할지 주제 선정하기
  • 예시: 동남아 뉴스, AI 뉴스, 특정 산업 뉴스 등

실제 운영 사례: 태디뉴스

매일 아침 7시, AI/Tech 뉴스를 4명의 가상 패널이 토론하는 팟캐스트와 함께 발송

Part 1: 결제 시스템 연동

왜 결제가 필요한가?

AI API 비용은 사용량에 비례합니다. 지속 가능한 서비스를 위해 수익화가 필수입니다. 구독 모델은 예측 가능한 수익을 제공하고, 사용자에게도 일관된 가치를 제공합니다.

Stripe (글로벌)

  • 전 세계 결제 지원
  • 강력한 구독 관리
  • 수수료: 2.9% + $0.30
  • 한국 사업자도 사용 가능

토스페이먼츠 (국내)

  • 국내 결제에 최적화
  • 카카오페이, 네이버페이 지원
  • 수수료: 2.5% ~ 3.5%
  • 한국어 문서 및 지원

Stripe 구독 구현 예시

// 1. Stripe 설치
npm install stripe @stripe/stripe-js

// 2. 백엔드: 결제 세션 생성
import Stripe from 'stripe';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);

export async function createCheckoutSession(priceId, userId) {
  const session = await stripe.checkout.sessions.create({
    mode: 'subscription',
    payment_method_types: ['card'],
    line_items: [{ price: priceId, quantity: 1 }],
    success_url: `${YOUR_DOMAIN}/success?session_id={CHECKOUT_SESSION_ID}`,
    cancel_url: `${YOUR_DOMAIN}/cancel`,
    client_reference_id: userId,
  });
  return session;
}

// 3. 프론트엔드: 결제 페이지로 이동
import { loadStripe } from '@stripe/stripe-js';

const stripePromise = loadStripe(process.env.NEXT_PUBLIC_STRIPE_KEY);

async function handleSubscribe() {
  const stripe = await stripePromise;
  const { sessionId } = await fetch('/api/create-checkout-session').then(r => r.json());
  await stripe.redirectToCheckout({ sessionId });
}
가격 전략 팁: 무료 티어로 사용자를 유입하고, 프리미엄 기능(무제한 사용, 고급 분석 등)으로 전환을 유도하세요.

Part 2: 뉴스레터 자동화 Agent

자동화 파이프라인 구조

Cloud Scheduler웹 검색AI 요약이메일 발송
  1. Firebase Functions 설정

    # Functions 초기화
    firebase init functions
    
    # TypeScript 선택 (추천)
    # ESLint 활성화
  2. 뉴스 수집 함수 작성

    import { onSchedule } from 'firebase-functions/v2/scheduler';
    import Anthropic from '@anthropic-ai/sdk';
    
    // 매일 아침 7시에 실행 (한국 시간)
    export const dailyNewsDigest = onSchedule(
      { schedule: '0 7 * * *', timeZone: 'Asia/Seoul' },
      async (event) => {
        // 1. Claude로 최신 뉴스 검색
        const client = new Anthropic();
        const newsResult = await client.messages.create({
          model: 'claude-sonnet-4-20250514',
          max_tokens: 4000,
          messages: [{
            role: 'user',
            content: `오늘 날짜의 동남아 AI/Tech 뉴스를 5개 찾아서
            각각 제목, 요약(2문장), 원문 링크를 JSON 형식으로 정리해줘.`
          }]
        });
    
        // 2. 뉴스 요약 및 인사이트 생성
        const digest = await generateDigest(newsResult);
    
        // 3. 이메일 발송
        await sendNewsletter(digest);
      }
    );
  3. 이메일 발송 설정

    Firebase Extension 사용 (가장 쉬운 방법):

    # Firebase Console에서
    # Extensions > "Trigger Email from Firestore" 설치
    
    # 또는 SendGrid/Mailgun 직접 연동
    import sgMail from '@sendgrid/mail';
    sgMail.setApiKey(process.env.SENDGRID_API_KEY);
    
    async function sendNewsletter(digest) {
      await sgMail.send({
        to: subscribers, // 구독자 목록
        from: 'newsletter@yourdomain.com',
        subject: `📰 오늘의 AI 뉴스 - ${new Date().toLocaleDateString('ko-KR')}`,
        html: digest.htmlContent,
      });
    }
  4. 스케줄링 및 배포

    # Functions 배포
    firebase deploy --only functions
    
    # 로그 확인
    firebase functions:log
    
    # 수동 테스트 (HTTP 트리거 추가 시)
    curl https://your-project.cloudfunctions.net/testNewsDigest

실전 팁: 뉴스레터 컨텐츠 구성

효과적인 뉴스레터 구조

  1. 헤드라인 (1줄) - 오늘의 가장 중요한 뉴스
  2. 주요 뉴스 3-5개 - 각각 제목 + 2문장 요약
  3. AI 인사이트 - 뉴스들의 공통 트렌드 분석
  4. 추천 읽을거리 - 깊이 있는 기사 1-2개
  5. 마무리 - 다음 호 예고 또는 구독 유도
차별화 전략: 단순 뉴스 나열이 아닌, AI의 관점과 분석을 추가하세요. "왜 이 뉴스가 중요한지"를 설명하면 구독 유지율이 높아집니다.

이번 주 과제

  • 결제 페이지 프로토타입 만들기 (Stripe 또는 토스페이먼츠)
  • 뉴스레터 Agent 구현하고 본인 이메일로 테스트 발송하기
  • 주제 선정: 어떤 뉴스를 자동화할 것인지 결정하기
  • (도전) 구독자 관리 페이지 만들기
← 2주차로4주차로 →