
Copilot CLI MCP 서버: copilot mcp add로 Sume 추가
copilot mcp add로 GitHub Copilot CLI에 원격 MCP 서버를 추가하세요. Sume 호스팅 MCP, 키 헤더나 OAuth, 55초를 넘는 타임아웃을 씁니다.
자동화 플랫폼, 서버리스 함수, 에이전트 프레임워크, MCP 클라이언트에서 Sume을 호출하는 방법을 다룹니다. 전용 커넥터 없이 HTTPS 호출이나 원격 MCP를 씁니다.

copilot mcp add로 GitHub Copilot CLI에 원격 MCP 서버를 추가하세요. Sume 호스팅 MCP, 키 헤더나 OAuth, 55초를 넘는 타임아웃을 씁니다.

MCPTools로 Agno 에이전트를 Sume 호스팅 MCP 서버에 연결하세요. API 키 헤더와 도구 허용 목록을 쓰고, timeout_seconds는 10에서 늘립니다.

config.yaml의 mcp_servers 아래에 Sume 호스팅 MCP 서버를 추가해 Hermes Agent에 연결하세요. API 키 헤더나 OAuth를 쓰고, 유료 도구는 승인을 받게 합니다.

AutoGen의 McpWorkbench를 Sume 호스팅 MCP 서버에 연결하세요. StreamableHttpServerParams, API 키 헤더, 60초 타임아웃을 쓰고 도구는 줄입니다.

Langflow를 Sume 호스팅 서버의 MCP 클라이언트로 쓰세요. Bearer 전역 변수로 서버를 등록한 뒤 MCP Tools를 Agent에 연결합니다.

anythingllm_mcp_servers.json에 type streamable과 키 헤더로 Sume 호스팅 MCP 서버를 추가한 뒤, Agent Skills를 새로 고치세요.

librechat.yaml의 mcpServers 아래에 Sume 호스팅 MCP 서버를 추가하세요. streamable-http와 Bearer 키 헤더를 쓰고, requiresOAuth는 false로 둡니다.

kilo.jsonc의 mcp 키 아래에 Sume 호스팅 MCP 서버를 추가하세요. type은 remote로 두고, Sume URL에 API 키 헤더를 더하거나 OAuth로 로그인합니다.

MCPStreamableHTTPTool, 키 헤더, allowed_tools, approval_mode로 Microsoft Agent Framework 에이전트를 Sume 호스팅 MCP 서버에 연결하세요.

.continue/mcpServers의 YAML 블록으로 Continue에 Sume 호스팅 MCP 서버를 추가하세요. type은 streamable-http로 두고, URL과 시크릿에서 읽은 키를 넣습니다.

mcps 필드의 MCPServerHTTP로 CrewAI 에이전트에 Sume 호스팅 MCP 도구를 주세요. Bearer 키 헤더, 도구 필터, 짧은 jobs_wait 슬라이스를 씁니다.

BasicMCPClient와 aget_tools_from_mcp_url, Bearer 키 헤더, allowed_tools로 LlamaIndex 에이전트에 Sume 호스팅 MCP 도구를 불러오세요.

Dify는 Integrations > Tools에서 원격 MCP 서버에 연결합니다. Sume 호스팅 MCP를 URL로 추가한 뒤 OAuth로 로그인하거나 API 키 헤더를 보내세요.

Android Studio의 Gemini에 원격 MCP 서버를 추가하세요. MCP Servers를 켜고, Sume의 httpUrl을 API 키 헤더와 함께 넣은 뒤, 도구 호출을 승인합니다.

IntelliJ IDEA의 GitHub Copilot에서는 Agent 모드의 Add MCP Tools로 MCP 서버를 추가합니다. Sume 호스팅 MCP는 API 키 헤더와 함께 servers에 넣으세요.

MCPClient로 Strands 에이전트를 원격 MCP 서버에 연결하세요. Sume 호스팅 MCP URL과 API 키 헤더를 넣고, tool_filters로 유료 도구를 뺍니다.

Devin의 Customize > MCPs에 커스텀 MCP 서버를 추가하세요. HTTP 트랜스포트, Sume 호스팅 MCP URL, Authorization 헤더나 OAuth를 넣고 Test tools를 누릅니다.

Azure AI Foundry 에이전트에 MCP 도구를 추가하세요. Sume API 키는 Custom keys 연결에 두고 server_url, allowed_tools, require_approval을 씁니다.

n8n에서 HTTP Request 노드로 텍스트를 음성으로 변환하세요. 노드 하나가 텍스트를 제출하고, Wait 루프가 Job을 확인하고, 다른 노드 하나가 오디오를 바이너리 파일로 내려받습니다.

해시테이블을 ConvertTo-Json -Depth로 바꾼 뒤 Bearer 헤더를 넣어 Invoke-RestMethod -Method Post -ContentType 'application/json'으로 보내세요.

Requests는 기본적으로 재시도하지 않습니다. urllib3 Retry(백오프, status_forcelist)를 Session에 마운트하고, POST는 Idempotency-Key가 있을 때만 재시도하세요.

fetch()에는 timeout 옵션이 없습니다. signal: AbortSignal.timeout(ms)를 넘기고 TimeoutError를 잡은 뒤, 네트워크 오류와 429, 5xx는 백오프로 재시도하세요.

crontab 줄은 curl을 /bin/sh로 실행하고, 이스케이프하지 않은 %는 줄바꿈이 됩니다. %는 \%로 이스케이프하고, 전체 경로를 쓰고, 출력을 로그로 남기고, 요청 키는 날짜로 만드세요.

Jenkins의 Build periodically는 cron 필드 5개에 H를 더해 받습니다. H는 작업 이름의 해시로 시작 시각을 분산하며, H 20 * * *는 오후 8시대에 한 번 실행됩니다.

파이프라인 YAML에 UTC 기준 cron을 담은 schedules 블록을 추가하고, 코드 변경이 없어도 실행되게 always: true를 설정하고, 유료 API 호출은 날짜로 키를 만드세요.

cron과 시간대를 지정해 Cloud Run 작업에 Cloud Scheduler 트리거를 추가하세요. 실패한 태스크는 기본적으로 3번 재시도되므로 유료 호출은 날짜로 키를 만드세요.

onSchedule과 cron, timeZone으로 Firebase 예약 함수를 선언하고, API 키는 secrets에 두고, 유료 호출마다 scheduleTime으로 키를 만드세요.

autoretry_for, retry_backoff, max_retries로 Celery 태스크를 재시도하고, 429에는 retry-after만큼 기다리고, 재시도마다 같은 Idempotency-Key를 보내세요.

BullMQ 작업에 attempts와 지수 백오프를 설정하고, UnrecoverableError로 일찍 멈추고, 유료 API 호출마다 작업을 기준으로 키를 만들어 재시도가 원래 실행을 재전송하게 하세요.

Sidekiq은 기본적으로 실패한 작업을 약 20일간 25번 재시도합니다. 횟수를 제한하고, sidekiq_retry_in으로 retry-after만큼 기다리고, 같은 Idempotency-Key를 재사용하세요.

files.upload 지원 중단 뒤에는 files.getUploadURLExternal, upload_url에 바이트 POST, channel_id와 files.completeUploadExternal 순입니다.

네. 웹훅 URL로 multipart/form-data를 POST하고 파일은 files[0], 텍스트는 payload_json에 넣으세요. 기본 한도인 20 MiB를 넘으면 링크를 게시하세요.

Microsoft는 Teams의 Office 365 커넥터를 May 18~22, 2026에 비활성화하기로 했습니다. 대신 Workflows 웹훅 URL을 만들고 Adaptive Card를 POST하세요.

Rust에서는 hmac·sha2 크레이트로 HMAC-SHA256을 계산합니다. axum에서는 Bytes로 받아 timestamp.body에 MAC을 적용하고 각 항목을 verify_slice로 확인하세요.

c.req.text()로 원본 본문을 읽어 HMAC 서명을 검증한 뒤, 그 문자열을 JSON.parse하고 204로 응답하세요. Workers, Bun, Deno, Node에서 동작합니다.

request.raw_post를 읽고 그 액션만 CSRF를 건너뛴 뒤, OpenSSL::HMAC.hexdigest를 각 sume-v1 항목과 secure_compare로 비교하고 head 204로 응답하세요.

ChatGPT 개발자 모드를 켜고, 서버 URL로 앱을 만들고, OAuth로 로그인하세요. Sume 호스팅 MCP 서버를 예로 들어 단계를 설명합니다.

opencode.json에 원격 항목으로 Sume 호스팅 MCP 서버를 OpenCode에 추가한 뒤, OAuth로 로그인하거나 API 키를 보내고, 유료 도구는 통제하세요.

Kiro의 mcp.json에 Sume MCP 서버를 추가하고, 알맞은 스코프로 OAuth 로그인을 하거나 API 키를 보내며, 유료 도구는 autoApprove에서 빼 두세요.

mcp_config.json의 serverUrl로 Sume 호스팅 MCP 서버를 Google Antigravity에 추가하고, OAuth나 API 키로 로그인한 뒤, 유료 도구는 Ask로 두세요.

LM Studio 0.3.17 이상은 원격 MCP 서버를 쓸 수 있습니다. API 키 헤더와 함께 Sume 호스팅 MCP를 mcp.json에 추가하고, 유료 호출은 매번 확인하세요.

Copilot 코딩 에이전트는 저장소 설정에서 MCP 서버를 읽습니다. COPILOT_MCP_ 시크릿에서 읽는 API 키와 tools 허용 목록으로 Sume를 추가하세요.

.mcp.json 항목 하나로 Visual Studio의 Copilot 에이전트 모드에 Sume 호스팅 MCP 서버를 추가하고, CodeLens로 로그인한 뒤 도구 호출을 확인하세요.

openclaw mcp add로 Sume 호스팅 MCP 서버를 OpenClaw에 저장하고, OAuth나 API 키 헤더로 로그인한 뒤, requestTimeoutMs를 55,000보다 크게 설정하세요.

Open WebUI에서는 관리자가 Sume 호스팅 MCP를 추가합니다. Type은 MCP (Streamable HTTP)로 두고, 인증은 사용자별 OAuth 2.1이나 공유 Bearer 키 하나를 씁니다.

Zed의 context_servers에 원격 MCP 서버로 Sume 호스팅 MCP를 추가하고 OAuth나 API 키로 연결한 뒤, tool_permissions로 유료 도구는 먼저 묻게 하세요.

Warp의 Settings > Agents > MCP servers에 Sume 호스팅 MCP URL을 원격 MCP 서버로 추가하고, OAuth나 Bearer 헤더로 인증한 뒤 호출 승인을 설정하세요.

Roo Code에 원격 MCP 서버를 추가하세요. Sume 호스팅 MCP용 streamable-http 항목과 API 키 헤더를 넣고, 유료 도구는 alwaysAllow에서 빼 두세요.

IDE의 Amazon Q Developer는 HTTP MCP 서버를 지원합니다. API 키 헤더나 OAuth로 Sume 호스팅 MCP를 추가한 뒤, 유료 도구는 Ask로 설정하세요.

Copilot Studio 에이전트를 MCP 서버에 연결하세요. 온보딩 마법사에서 x-api-key 헤더로 Sume 호스팅 MCP를 추가한 뒤, 필요 없는 도구는 끄세요.

goose에 원격 MCP 서버를 추가하세요. Sume 호스팅 MCP를 Streamable HTTP 확장으로 넣고, 클라이언트 등록으로 OAuth를 처리하며, 유료 도구는 승인을 거치게 하세요.

n8n에서 오디오를 텍스트로 전사하세요. HTTP Request 노드로 녹음 파일의 공개 URL을 보내고, Job이 끝날 때까지 Wait 노드를 반복한 뒤 텍스트를 매핑합니다.

Step Functions 실행을 .waitForTaskToken으로 멈춰 AI 영상 실행이 끝날 때까지 기다리세요. 태스크 토큰을 보관해 두었다가 Sume 웹훅이 오면 돌려주면 됩니다.

영상 작업은 Temporal 액티비티에서 시작하고, 웹훅 수신기가 워크플로 ID로 보내는 시그널을 기다리세요. 시그널과 별개로 실행을 읽는 타이머도 두세요.

Airflow의 HttpOperator로 AI 영상 Job을 제출한 뒤, Job 상태가 completed가 되면 통과하는 reschedule 모드의 HttpSensor로 기다리세요.

Durable Functions 오케스트레이터는 웹훅 함수가 발생시키는 외부 이벤트를 기다리고, POST가 오지 않는 실행에 대비해 지속성 타이머와 경쟁시킵니다.

Azure Functions는 Consumption 플랜에서 기본 5분 뒤에 타임아웃되고, HTTP 트리거는 230초 안에 응답해야 합니다. 영상 Job은 콜백과 함께 제출하세요.

FastAPI에서 오래 걸리는 작업은 요청을 열어 둔 채 기다리지 말고 Job ID와 함께 202로 응답하세요. AI 영상 Job이라면 작업은 Sume가 하고 결과는 웹훅으로 옵니다.

Allow, Forbid, Replace? CronJob의 concurrencyPolicy는 Job을 다룰 뿐 Job이 시작한 API 작업은 다루지 않습니다. 유료 API 호출에는 멱등성 키를 더하세요.

NestJS에서는 NestFactory.create에 rawBody: true를 넘기고, Buffer인 req.rawBody로 웹훅 서명을 검증하세요. 100kb JSON 한도도 함께 올리세요.

Spring Boot 웹훅은 본문을 byte[]로 받아 타임스탬프와 원본 바이트에 대한 HMAC-SHA256을 계산하고, 각 sume-v1 항목을 상수 시간으로 비교합니다.

ASP.NET Core로 만드는 C# 웹훅 수신기: 원본 본문을 Stream으로 바인딩하고, 타임스탬프와 바이트에 HMAC-SHA256을 계산해 각 sume-v1 항목을 고정 시간으로 비교하세요.

EventBridge Scheduler로 cron 또는 rate 스케줄에 따라 Lambda 함수를 호출하세요. 매일 만드는 AI 영상이라면 예약 시각으로 만든 키로 실행을 시작하고 바로 반환하세요.

Cron Trigger와 scheduled() 핸들러를 추가하면 Worker가 일정에 따라 실행됩니다. AI 영상이라면 실행의 키를 scheduledTime으로 만들고 바로 반환하세요.

pg_cron과 pg_net으로 Supabase Edge Function을 예약 실행하고, 영상 API 키는 함수 시크릿에 두고, 날짜로 만든 키로 하루에 실행 하나를 시작하세요.

GitLab 예약 파이프라인을 매일 밤 실행해 날짜 기반 Idempotency-Key로 AI 영상을 시작하고, 실행 마감보다 긴 작업 타임아웃 안에서 폴링하세요.

URL의 응답을 임시 파일 없이 boto3의 upload_fileobj로 바로 스트리밍하세요. 생성된 영상이라면 웹훅을 받을 때 복사하고 바이트를 확인하세요.

React Query의 refetchInterval로 영상 Job을 폴링하세요. 백엔드를 호출하고, API가 제안하는 간격만큼 기다리다가, Job이 종료되면 false를 반환하면 됩니다.

axios-retry로 네트워크 오류, 429, 5xx를 지수 백오프로 재시도하고, 유료 POST는 Idempotency-Key가 있을 때만 재시도하세요.

Python Requests로 영상에 자막을 넣으세요. 영상 URL을 Sume의 /v1/video-captions로 POST하고, Job을 폴링한 뒤 자막을 입힌 video_url을 읽으면 됩니다.

n8n에서 HTTP Request 노드로 이미지 API에 프롬프트를 POST해 이미지를 생성하세요. 대부분의 호출은 이미지 URL을 바로 반환하고, 나머지는 폴링합니다.

Vercel Function은 기본적으로 300초에 멈추지만 Sume 영상 실행은 몇 분이 걸립니다. webhook_url과 함께 제출하고 바로 반환한 뒤, 서명된 POST를 검증하세요.

n8n HTTP Request 노드에서 Sume Format 실행을 시작하고 Wait 노드의 재개 URL을 webhook_url로 넘긴 뒤, 끝난 실행을 API 키로 읽으세요.

Zap 하나는 Custom Request로 Sume 영상 실행을 시작하고, 두 번째 Zap은 Catch Raw Hook으로 Sume의 서명된 웹훅을 받아 Code 단계에서 검증합니다.

Apps Script 요청 한 번으로 시트 행 최대 100개를 Sume 영상 실행으로 바꾸고, 시간 기반 트리거로 큐를 폴링해 URL을 다시 시트에 쓰세요.
n8n Google Sheets 노드로 행을 읽고, 행마다 Sume 말하는 아바타 Job을 하나씩 제출한 뒤, 상한이 있는 루프로 폴링해 영상 URL을 시트에 기록하세요.

Make.com AI 영상 시나리오를 둘로 나누세요. Make a request가 Sume 실행을 시작하고, 커스텀 웹훅이 서명된 결과를 받아 sha256()으로 확인합니다.

Sume 웹훅 라우트에 type은 application/json, limit은 1 MiB보다 크게 설정한 express.raw를 붙이고, 원본 Buffer를 verifyWebhook에 넘기세요.

API 키로 OpenAI Agents SDK를 Sume 호스팅 MCP 서버에 연결하고, 기본 5초인 클라이언트 타임아웃을 jobs_wait의 55초보다 길게 늘리세요.

Vercel AI SDK에서는 서버에서 Sume의 POST /v1/videos를 호출하는 tool()로 영상을 생성하세요. 도구는 Job id를 돌려주고, 클립은 폴링으로 받습니다.

Shopify products/create 웹훅에 오 초 안에 응답하고, 큐에서 Sume Format을 실행한 뒤 staged upload로 MP4를 Shopify에 올리세요.

텍스트로 영상을 만드는 Sume API를 Python Requests로 호출하세요. POST /v1/videos 후 타임아웃을 두고 폴링하고, content 경로가 리다이렉트하는 MP4를 스트리밍하세요.

Python에서 Sume 웹훅 검증하기: timestamp.raw_body에 대한 HMAC-SHA256을 계산하고, 서명 헤더를 쉼표로 나눠 상수 시간으로 비교한 뒤 빠르게 응답하세요.

Cloudflare Worker에서 Sume의 서명된 POST를 검증하고 작은 메시지를 큐에 넣은 뒤 204로 빠르게 응답하세요. Queue 메시지는 128 KB, 영수증은 최대 1 MiB입니다.

Sume의 웹훅 POST에는 Supabase JWT가 없으므로 Edge Function을 verify_jwt = false로 배포하고, 모든 전달에서 Sume의 HMAC 서명을 확인하세요.

Vercel cron job이 라우트에 GET을 보내면 라우트가 날짜 기반 Idempotency-Key로 Sume API를 호출하므로, 중복 호출이 두 번 과금될 수 없습니다.

GitHub 릴리스가 게시되면 Sume Format 실행을 시작하고, 릴리스 노트를 input으로 넘기고, 영상이 준비될 때까지 폴링한 뒤 릴리스에 첨부하세요.

Airtable Run a script 액션으로 callback_url과 함께 POST /v1/videos를 호출하고, 두 번째 자동화에서 Sume 웹훅을 받아 URL을 저장하세요.

Sume 영상 실행을 시작하는 단계에서 $.flow.suspend()를 호출하고 resume_url을 webhook_url로 넘기면, Sume가 결과를 POST할 때 Pipedream이 재개합니다.

LangChain @tool은 Sume Format 실행을 시작하고, 지출 상한을 두고, 안전한 재시도용 키를 붙이고, 영상이 준비될 때까지 에이전트가 확인할 실행 id를 돌려줄 수 있습니다.

API 키 헤더로 Sume 호스팅 MCP 서버를 Claude Agent SDK에 추가하고, 필요한 도구만 허용하고, 유료 호출은 제출 전에 dry-run으로 확인하세요.

Slack 슬래시 커맨드에 3000 ms 안에 응답하고 callback_url과 함께 POST /v1/videos를 제출한 뒤, Sume 웹훅이 오면 response_url로 URL을 게시하세요.

Discord 인터랙션에 3초 안에 지연 응답을 보내고 callback_url과 함께 POST /v1/videos를 제출한 뒤, Sume Job 웹훅이 오면 응답을 수정하세요.

Trigger.dev waitpoint 토큰을 만들고 token.url을 Sume 실행의 webhook_url로 보내면, Sume가 실행 결과를 POST할 때 wait.forToken()이 반환됩니다.

Sume는 localhost 웹훅 URL을 거부합니다. ngrok이나 Cloudflare Quick Tunnel로 핸들러를 노출하고, 서명된 테스트를 보낸 뒤, 실제 이벤트를 다시 보내세요.

영상 브리프를 지출 상한과 함께 Sume Agent Completions로 넘기는 BaseTool을 CrewAI 에이전트에 주고, agent.run을 읽어 완성된 영상을 받으세요.

Customize > Connectors에서 Sume 호스팅 MCP 서버를 Claude에 추가하고, Sume OAuth 동의가 무엇을 부여하는지 확인한 뒤, 유료 도구를 허용할지 정하세요.

mcp.json의 http 항목으로 Sume 호스팅 MCP 서버를 VS Code에 추가하고, Sume OAuth 동의가 무엇을 부여하는지 확인한 뒤, 채팅이 호출할 도구를 고르세요.

인증 유형이 NONE인 Lambda 함수 URL을 Sume에 넘기고, 이벤트 본문을 디코딩해 sume-v1 HMAC을 확인한 뒤 10초 시도 시간 안에 204로 응답하세요.

step.run에서 Sume 실행을 시작하고, transform으로 웹훅을 Inngest 이벤트로 바꾼 뒤, 실행 id를 기준으로 2시간 타임아웃을 둔 step.waitForEvent로 기다리세요.

POST /v1/images를 LlamaIndex FunctionTool로 감싸세요. sume/auto와 프롬프트를 보내고, 200이면 URL을, 202이면 Job id를 돌려주면 됩니다.

Sume 호스팅 MCP 서버를 Responses API에 mcp 도구로 추가하고, Sume API 키는 headers로 보내고, 유료 도구 호출은 실행 전에 승인하세요.

Claude API의 MCP 커넥터로 Sume 호스팅 MCP에 인증하는 방법은 현재 문서화되어 있지 않습니다. 그 이유와 Agent SDK 같은 대안을 정리했습니다.

httpUrl과 환경 변수에서 읽는 API 키 헤더로 Sume 호스팅 MCP 서버를 Gemini CLI에 추가하고, 도구는 허용 목록으로 추린 뒤 호출 전에 확인하세요.

Windsurf는 이제 Devin Desktop입니다. API 키 헤더로 Sume 호스팅 MCP 서버를 Devin Local 에이전트나 레거시 Cascade 에이전트에 추가하세요.

type을 streamableHttp로 지정하고 API 키 헤더를 넣어 Sume 호스팅 MCP 서버를 Cline에 원격 서버로 추가하고, 유료 도구는 autoApprove에서 빼 두세요.

MCPToolset과 API 키 헤더로 Pydantic AI 에이전트를 Sume 호스팅 MCP 서버에 연결하고, 도구를 걸러 내고, 유료 호출은 승인 전까지 보류하세요.

McpToolset, API 키 헤더, tool_filter로 Google ADK 에이전트에 Sume 호스팅 MCP 서버를 추가하고, 유료 도구는 실행 전에 확인을 받게 하세요.

MCPClient로 Mastra 에이전트를 Sume 호스팅 MCP 서버에 연결하세요. requestInit에 넣는 API 키 헤더, 도구 허용 목록, 유료 호출 승인을 다룹니다.

n8n은 MCP Client Tool 필드를 SSE Endpoint라 부르지만 Sume는 streamable HTTP를 문서화합니다. 설정하고 연결을 테스트한 뒤 유료 호출은 승인받게 하세요.

Sume OpenAPI 스키마로 Dify 커스텀 도구를 만드세요. 영상 오퍼레이션 세 개만 남겨 Swagger API 도구로 가져오고, 키는 비밀로 지킵니다.

Power Automate HTTP action으로 Sume API를 호출하세요. Format 실행을 시작하고, Do until 루프로 폴링하고, 키는 Key Vault 시크릿에서 읽습니다.

Sume용 Bubble API Connector 설정법입니다. 키는 비공개 헤더에 두고, 수동 응답으로 설정 비용을 없애고, 백엔드에서 Job을 폴링합니다.

Sume API로 Gradio 영상 생성 앱을 만드세요. 키는 Hugging Face Space 시크릿에 두고, 제너레이터가 Job을 폴링하고, gr.Video가 영상을 재생합니다.

Telegram 봇은 /video 커맨드를 Sume Job으로 바꿔 곧바로 답한 뒤, Sume의 서명된 웹훅이 도착하면 아티팩트 URL로 sendVideo를 호출할 수 있습니다.

PHP에서 Sume 웹훅 검증하기: timestamp.raw_body에 hash_hmac sha256을 적용하고, sume-v1 항목을 나눠 각각 hash_equals로 비교하세요.

Go에서 Sume 웹훅 검증하기: io.ReadAll로 본문을 한 번 읽고, 타임스탬프와 원본 바이트에 HMAC-SHA256을 계산한 뒤, 각 sume-v1 항목을 hmac.Equal로 비교하세요.