Claude의 음성 모드가 당신의 일정을 변경합니다. 트리거(Trigger)는 당신이 코딩해야 합니다.
요약
Claude의 음성 모드가 Google Calendar 및 Gmail과 연동되어 일정을 변경할 수 있게 되었으나, 이는 사용자의 음성 명령에만 반응하는 동기식 어시스턴트 방식입니다. 진정한 자동화 에이전트를 구현하려면 개발자가 직접 Webhook이나 Pub/Sub 등을 활용해 트리거 코드를 작성해야 합니다.
핵심 포인트
- Claude 음성 모드는 OAuth를 통해 Google Calendar 및 Gmail과 연동 가능
- 음성 모드는 사용자의 명령에만 반응하는 동기식 어시스턴트 방식임
- 자동화 에이전트 구현을 위해서는 Gmail Pub/Sub 등 별도의 트리거 코드가 필요
- Claude API의 tool_use를 활용하면 자연어 요청을 구조화된 JSON으로 추출 가능
Claude의 음성 모드는 실제로 당신의 Google Calendar(구글 캘린더)를 변경합니다. 오직 당신이 말할 때만 작동합니다.
2026년 7월 23일 업데이트 이후, 음성 기능은 Opus, Sonnet, Haiku에서 작동하며, 마침내 프랑스어를 지원하고, OAuth를 통해 Gmail 및 Calendar(캘린더)에 연결됩니다. "내 오후 2시 약속을 내일로 미뤄줘"라고 말하면, 실제로 일정을 변경합니다. 사용해 보면 정말 놀랍습니다. 하지만 '자동화 (Automation)'를 생각한다면, 두 가지 한계가 즉시 드러납니다. 이 모델은 이메일을 작성하지만 전송하지는 않으며, 오직 당신의 음성 명령에만 반응합니다. 어떤 이벤트도, 어떤 Webhook(웹훅)도, 어떤 백그라운드 루프도 이를 깨우지 못합니다. 반복 가능한 프로세스를 위해서는 트리거(Trigger)가 당신이 작성하는 코드여야 하며, 그 모습은 다음과 같습니다.
음성 기능이 정확히 멈추는 지점
음성 기능은 순차적으로 작동합니다: 듣기 → 생각하기 → 응답하기. 이는 음성에 의해 제어되는 동기식(Synchronous) 어시스턴트입니다. 그 외의 다른 것은 이를 실행할 수 없습니다. 게다가 Anthropic은 이번 업데이트에서 음성 모델 자체를 수정하지 않았습니다. 변한 것은 앱에 대한 접근 권한이지, 대화 메커니즘이 아닙니다.
당신이 말할 때 수행하는 작업:
- 이벤트 생성 / 수정 / 삭제, 시간대 찾기, 반복 일정 관리, Meet 링크 추가
- Gmail에 초안 작성
- 무료 버전(Haiku)에서는 단일 앱에 연결, 유료 버전에서는 여러 앱에 연결
수행하지 않는 작업:
- 이메일 전송 — '보내기' 클릭은 매번 수동으로 해야 합니다.
- 당신 없이 스스로 실행 — 어떤 Cron(크론) 작업도, 편지함 모니터링도 없습니다.
- 당신이 자는 동안 작동하는 것
경계선은 한 단어로 요약됩니다. 어시스턴트는 누군가 말을 걸기를 기다리지만, 에이전트(Agent)는 이벤트에 반응합니다. 그 차이는 모델이 아니라 트리거(Trigger)에 있습니다.
트리거는 문장이 아니라 코드입니다
« 고객이 예약을 위해 메시지를 보내면, 시간대를 예약하고 확인해 줘 »: 이 규칙은 음성(vocal) 기능 어디에도 존재하지 않습니다. 이를 구현하려면 계속해서 편지함을 **감시(listening)**하는 무언가가 필요합니다. Gmail의 경우, users.watch와 새로운 메시지가 올 때마다 발생하는 Pub/Sub 알림을 통해 이루어집니다.
import { google } from "googleapis";
const gmail = google.gmail({ version: "v1", auth });
...
문서에서 거의 언급하지 않는 두 가지 함정이 있습니다. 첫째, watch는 7일 후에 만료됩니다. 만약 cron을 통해 갱신하지 않으면, 오류 메시지 없이 조용히 알림이 중단됩니다. 둘째, Pub/Sub 알림에는 이메일 본문이 포함되어 있지 않으며, 단지 historyId만 포함되어 있습니다. 실제 내용은 알려진 마지막 historyId로부터 users.history.list를 다시 호출하여 가져와야 합니다. 많은 사람들이 페이로드(payload)에서 메시지 본문을 찾으려다 이 문제로 밤을 지새우곤 합니다.
Claude API를 사용한 의도 추출 (Intent Extraction)
이메일을 확보했다면, 정규 표현식(regex)보다 훨씬 뛰어난 Claude의 유일한 능력, 즉 인간의 언어로 작성된 요청을 이해하는 작업에 위임합니다. tool_choice를 강제한 도구 사용(tool use)은 파싱(parsing)할 필요가 없는 산문이 아닌 구조화된 JSON을 반환합니다.
import Anthropic from "@anthropic-ai/sdk";
const anthropic = new Anthropic();
...
이러한 분류 작업에는 Haiku 모델로도 충분하며, 이메일 천 통당 단 몇 센트의 비용만 발생합니다. 이러한 호출은 토큰(token) 단위로 과금된다는 점을 명심하세요. 이는 매 대화마다 플랜 할당량(quota)을 차감하는 음성 모드와 정확히 같습니다. 에이전트(Agent)는 무료가 아닙니다. 단지 예측 가능할 뿐입니다.
실제 예약: freebusy 후 events.insert
Claude가 승인했습니다. 이제 일정에서 빈 시간을 찾은 다음 이벤트를 등록하기만 하면 됩니다. freebusy.query는 점유된 시간 블록을 제공하며, events.insert는 예약을 생성합니다.
const calendar = google.calendar({ version: "v3", auth });
const fb = await calendar.freebusy.query({
...
유령 약속을 만드는 함정: sendUpdates의 기본값이 false입니다. 이벤트가 당신의 캘린더에는 나타나지만, 초대받은 사람은 아무것도 받지 못합니다. 확인 과정을 자동화했다고 믿었겠지만, 실제로는 전혀 발송되지 않은 것입니다. 두 번째 함정은 시간대(Timezone)입니다. 명시적인 timeZone이 없으면, 단순한 (naive) dateTime은 서버 설정에 따라 잘못된 시간에 도착합니다. 항상 IANA 시간대를 설정하세요.
전송을 차단하는 스코프 (Scope)
왜 음성 기능이 전송 대신 초안만 작성할까요? Google에서 gmail.send는 **제한된 스코프 (restricted scope)**이기 때문입니다. 프로덕션 환경에서는 OAuth 검증과 CASA 보안 감사를 트리거하며, 이는 시간이 오래 걸리고 비용이 들며 제약이 많습니다. Claude 커넥터는 의도적으로 gmail.compose 상태로 유지됩니다. 즉, 초안은 생성하지만 그 문턱을 넘지는 못하는 것입니다.
만약 실제로 전송을 수행하는 에이전트를 구축한다면, 이 검증 과정을 직접 책임져야 하며, 따라서 감독 없이 당신의 편지함에 글을 쓰는 AI에 대한 책임도 지게 됩니다. 권한 취소(Revocation)도 고려해야 합니다. 부여된 OAuth 액세스는 myaccount.google.com/permissions에서 차단할 수 있으며, 메일 서비스에 무엇인가를 연결하기 전 1분 내에 이 작업을 수행할 수 있어야 합니다. 권한 관리의 위생에 대한 자세한 내용은 우리의 음성 모드 제품 분석에서 다룹니다.
임시 작업을 위한 어시스턴트, 반복 작업을 위한 에이전트
결론은 명확합니다. Claude의 음성 기능은 예상치 못한 상황에 매우 뛰어납니다: "일정 미뤄줘", "오늘 하루 요약해줘", "Paul에게 보낼 초안 작성해줘"와 같은 요청 말이죠. 이는 그 어떤 키보드 단축키보다 임시 작업(ad-hoc)을 더 잘 처리합니다. 하지만 당신 없이 돌아가야 하는 프로세스—클라이언트에게 메일 작성, 시간대 예약, 확인 메일 발송—는 음성 명령의 문제가 아니라 아키텍처의 문제입니다. 즉, 트리거(Trigger), 파서(Parser), 두 번의 API 호출, 그리고 에러 핸들링(Error handling)이 필요합니다. 요컨대, 코드가 필요한 영역입니다.
바로 이 지점에서 저희가 바통을 이어받습니다. Neova는 개발 스튜디오입니다. 저희는 반복 가능한 프로세스가 스스로 실행될 수 있도록, AI와 최첨단 기술을 사용하여 이러한 맞춤형 에이전트(Agent)를 구축합니다. 만약 직접 코딩하는 법을 배우고 싶다면, 저희의 Claude Code로 앱을 만드는 가이드와 고객 서비스 측면에서의 음성 에이전트 가이드를 통해 어시스턴트(Assistant)에서 에이전트(Agent)로 전환되는 과정을 정확히 보여드립니다.
음성(Vocal)은 당신에게 몇 분을 아껴주지만, 에이전트(Agent)는 당신에게 몇 시간을 돌려줍니다. 당신이 진정으로 원하는 것이 무엇인지 선택은 당신의 몫입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기