headless

// industry

SaaS 스타트업

캐시 사이클 · 번 · 런웨이를 주간 Slack 한 줄로. CFO 1인 운영도.

// schemas

사용 스키마

  • bank.transactions.cb.v1
  • card.approvals.corp.v1

// scenario

SaaS 스타트업 — 캐시 사이클 자연어 요약

Claude Desktop 에서 "이번달 매출/카드/캐시 사이클" 한 줄 — MRR 대비 카드 지출, 운영 자금 잔액, runway 까지.

주기
주 1회 (월요일 아침)
대상
런웨이를 매주 체크하는 초기 SaaS 창업자·CFO.
채널
MCP

01사전 점검

아래 명령을 그대로 붙여넣어 지금 내 환경이 준비됐는지 확인한다.

  • API Key 가 있다 (MCP 설정 env 에 넣을 값)

    echo $H6S_API_KEY

    h6s_live_... 로 시작하는 키가 출력된다

    아니면 — 콘솔(https://h6s.ai)에서 발급 후 export H6S_API_KEY=h6s_live_...

  • 은행 자격증명이 등록돼 있다 (MCP 는 등록을 하지 않는다)

    h6s credentials list

    대상 기관에 매칭되는 자격증명이 1건 이상 보인다

    아니면 — h6s credentials create --interactive --cert

  • CLI 가 글로벌 설치돼 있다 (MCP cold-start 회피)

    h6s --version

    버전 문자열이 출력된다

    아니면 — npm i -g @h6s-ai/cli

02실행

클라이언트별 설정 파일을 toolkit 이 생성·병합한다. 한 번만.

terminal
npx @h6s-ai/toolkit install --target=cursor   # 또는 --target=mcp | gemini

Claude Desktop 은 --target=mcp 출력을 claude_desktop_config.json 의 mcpServers 에 병합하고 env 블록에 H6S_API_KEY 를 넣는다. 등록 후 클라이언트 재시작.

등록이 끝나면 채팅창에 자연어 한 줄.

프롬프트

이번달 매출 입금 합, 법인카드 출금 합, 운영 잔액을 받아서 runway 까지 요약해줘.

이렇게 보이면 성공

4월 매출입금 38,400,000 (전월 +12%)
카드 지출 18,210,000 (운영비 80%)
운영 잔액 142,800,000 · runway 약 7.8개월

03검증

  • 매출 입금 합·카드 출금 합·운영 잔액·추정 runway 가 한 응답에 온다.
  • "표로" 또는 "전월 대비"로 더 깊게 물을 수 있다.

04흔한 에러

MCP 서버가 연결 안 됨 / handshake timeout

npx cold-start (npm cache hydration) 가 handshake 보다 느리다.

해결 npm i -g @h6s-ai/cli 로 글로벌 설치 후 클라이언트 재시작.

도구 호출 시 NO_API_KEY 친절 에러

MCP 설정의 env 블록에 H6S_API_KEY 가 빠졌다.

해결 설정 파일 mcpServers.h6s.env 에 H6S_API_KEY 추가 후 재시작.

CERT_EXPIRED · CERT_WRONG_PASSWORD

등록된 공동인증서가 만료됐거나 비밀번호가 틀렸다.

해결 h6s credentials update 로 갱신 후 재실행.

자격증명을 찾을 수 없음

MCP 는 자격증명 등록을 다루지 않는다.

해결 CLI(h6s credentials create) 또는 콘솔에서 먼저 등록.

05변형

같은 사례에서 자주 바꾸는 옵션. 다른 사례는 아래 이전/다음에서.

주간으로

terminal
지난주 net 캐시 변화랑 번 알려줘

// scenario

SaaS 스타트업 — 주간 번/런웨이 Slack

매주 월요일 09:00 KST 팀 재무 슬랙에 한 줄 — 지난 주 net 캐시 변화, 누적 번, 남은 runway.

주기
매주 월요일 09:00 KST
대상
주간 캐시 흐름을 슬랙 한 채널에서 보고 싶은 스타트업 재무·운영.
채널
GitHub Actions

01사전 점검

아래 명령을 그대로 붙여넣어 지금 내 환경이 준비됐는지 확인한다.

  • repo secret H6S_API_KEY 가 등록돼 있다

    gh secret list

    목록에 H6S_API_KEY 가 보인다

    아니면 — gh secret set H6S_API_KEY # 또는 repo Settings → Secrets

  • 워크스페이스에 대상 자격증명이 있다

    h6s credentials list

    그 기관에 매칭되는 자격증명이 1건 이상 보인다

    아니면 — h6s credentials create --interactive --cert

  • Slack 봇 토큰·채널 + 운영 잔액 변수

    repo Settings → Secrets(SLACK_BOT_TOKEN) · Variables(SLACK_CHANNEL_ID, SAAS_OPERATING_BALANCE)

    세 값이 모두 등록됨

    아니면 — Slack 봇 토큰 발급 + 채널 ID, 운영 잔액을 variable 로 매주 갱신(또는 잔액 fetch step 추가).

02실행

아래 파일을 .github/workflows/ 에 저장하고 기본 브랜치에 commit. 첫 검증은 Actions 탭 → Run workflow 로 수동 트리거.

yaml
# 매주 월요일 09:00 KST 에 지난 주 net 캐시 변화를 지정한 슬랙 채널에 한 줄로.
# 4주 평균 번과 추정 runway 까지 같이.
# 잔액 추정은 vars.SAAS_OPERATING_BALANCE 에 운영자가 매주 입력 (또는 추가 step 으로 잔액 fetch).
name: SaaS 주간 번/런웨이 Slack

on:
  schedule:
    - cron: '0 0 * * 1'   # 매주 월요일 00:00 UTC (KST 09:00)
  workflow_dispatch: {}

jobs:
  cashflow:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - id: prev-week
        run: |
          MON=$(date -u -d 'last monday -7 days' +%Y-%m-%d)
          SUN=$(date -u -d "$MON +6 days" +%Y-%m-%d)
          WEEK=$(date -u -d "$MON" +%G-W%V)
          echo "mon=${MON}"   >> "$GITHUB_OUTPUT"
          echo "sun=${SUN}"   >> "$GITHUB_OUTPUT"
          echo "week=${WEEK}" >> "$GITHUB_OUTPUT"

      - id: fetch
        uses: bolta-io/h6s-action@v0
        with:
          api-key: ${{ secrets.H6S_API_KEY }}
          schema: bank.transactions.cb.v1
          provider: CB_KB
          from: ${{ steps.prev-week.outputs.mon }}
          to: ${{ steps.prev-week.outputs.sun }}

      - name: net/번/runway 계산
        id: cashflow
        run: |
          # 호출자 repo 의 scripts/saas-cashflow.mjs 로 위임.
          # 출력: net_change, weekly_burn_4w_avg, runway_months
          node scripts/saas-cashflow.mjs \
            --bank ${{ steps.fetch.outputs.path }} \
            --balance ${{ vars.SAAS_OPERATING_BALANCE }} \
            >> "$GITHUB_OUTPUT"

      - name: Slack 알림
        if: success()
        uses: slackapi/slack-github-action@v1
        with:
          channel-id: ${{ vars.SLACK_CHANNEL_ID }}
          slack-message: |
            📊 주간 캐시 · ${{ steps.prev-week.outputs.week }}
            Net 변화 ${{ steps.cashflow.outputs.net_change }}
            누적 번(4주 평균) ${{ steps.cashflow.outputs.weekly_burn_4w_avg }} · runway 약 ${{ steps.cashflow.outputs.runway_months }}개월
        env:
          SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}

      - name: Slack 실패 알림
        if: failure()
        uses: slackapi/slack-github-action@v1
        with:
          channel-id: ${{ vars.SLACK_CHANNEL_ID }}
          slack-message: |
            ❌ 주간 캐시 수집 실패 — ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
        env:
          SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}

운영 잔액은 vars.SAAS_OPERATING_BALANCE 로 매주 입력하거나, 잔액 fetch step(bank.accounts.cb.v1)을 앞에 붙여 자동화.

03검증

  • 월요일 슬랙에 net 변화 · 4주 평균 번 · 추정 runway 한 줄이 온다.
  • 수집 실패 시 실패 알림이 같은 채널에 온다.

04흔한 에러

fetch step 에서 NO_API_KEY 로 실패

secret 이름이 yml 의 secrets.H6S_API_KEY 와 다르다.

해결 secret 을 정확히 H6S_API_KEY 로 등록.

CREDENTIAL_INSUFFICIENT_FOR_PROVIDER

그 provider 에 매칭되는 자격증명이 워크스페이스에 없다.

해결 h6s credentials create --interactive --cert (공동인증서 1개로 전 기관 공용).

cron 시간이 지나도 안 돈다

yml 이 기본 브랜치에 없거나, repo 가 60일 비활성이라 scheduled workflow 가 멈췄다.

해결 기본 브랜치에 머지하고, 가끔 수동 트리거해 활성 유지.

cashflow step 에서 scripts/saas-cashflow.mjs not found

호출자 repo 에 계산 스크립트가 없다(샘플 위임).

해결 repo 에 scripts/saas-cashflow.mjs 추가(net/번/runway 계산).

05변형

같은 사례에서 자주 바꾸는 옵션. 다른 사례는 아래 이전/다음에서.

잔액도 자동 수집

yaml
- uses: bolta-io/h6s-action@v0
        with:
          api-key: ${{ secrets.H6S_API_KEY }}
          schema: bank.accounts.cb.v1
          provider: CB_KB

// related

다른 각도에서 보기

headless

Get started

지금 가입하고 API 키를 발급받으세요.