AI 활용

Claude에게 넘기는 URL이 너무 길어지는 문제, 일본어는 한 글자가 약 9자로 불어나서 Notion에 전문을 옮겼다

Claude에게 넘기는 URL이 너무 길어지는 문제, 일본어는 한 글자가 약 9자로 불어나서 Notion에 전문을 옮겼다

Photo: Claude(Anthropic) (紹介目的で使用) via claude.com

안녕하세요. まさきん입니다.

스마트폰으로 오는 알림에 ‘Claude에게 넘기기’ 버튼을 달아 두었습니다. 누르면 그 내용으로 Claude 채팅이 열리는 구조예요. 그런데 일본어로 된 긴 글은 URL 안에 다 들어가지 않았습니다. 오늘은 그 우회책으로 전문을 Notion에 옮긴 이야기를 적어 두려고 합니다.

※글 게시 시점의 정보입니다. 최신 조건은 공식 사이트에서 확인해 주세요.

POINT
  • 일본어는 URL 인코딩을 거치면 한 글자당 약 9자로 불어납니다.
  • 제 환경에서는 2,000 안팎을 기준으로 삼고, 긴 안내문은 짧게 줄여서 통과시켰습니다.
  • 긴 글은 Notion에 전문을 두고, 버튼에는 페이지 ID와 앞부분만 싣고 있습니다.
  • claude.ai/new?q= 웹 버전은 공식 문서에서 확인하지 못했습니다.
  • 데스크톱 버전은 claude://claude.ai/new?q= 가 공식 도움말에 나와 있습니다.

알림을 읽기만 하고 끝나 버렸다

우리 집에서는 집안의 정기 리포트나 장애 알림을 Telegram으로 받고 있습니다. 자동화 결과가 스마트폰으로 줄줄이 도착하는 형태죠. 예전에 매일 밤 카드 사용 내역을 AI에게 점검시키는 구조도 쓴 적이 있습니다.

다만 알림은 읽고 나면 그걸로 끝나기 쉬웠습니다. ‘이거 어떡하지’ 싶어도 Claude를 열어서 붙여 넣는 게 살짝 귀찮거든요. 그래서 알림 자체에 상담 창구를 달기로 했습니다.

버튼의 구조

알림에는 ‘🤖 Claude에게 넘기기’라는 버튼이 붙어 있습니다. 내용물은 claude.ai/new?q=<요청문> 이라는 URL입니다. 누르면 요청문이 입력된 상태로 Claude 채팅이 열립니다.

버튼에는 Telegram의 InlineKeyboardButton을 쓰고 있습니다. 공식 Bot API에 따르면 url 칸에는 ‘HTTP 또는 tg:// URL’을 지정할 수 있습니다. 한편 눌렀을 때 봇으로 보내는 callback_data는 1~64바이트 제한이 있습니다. 이번에는 URL을 여는 것뿐이라 url 칸만으로 충분합니다.

항목공식 사양제 사용 방식
text버튼에 표시되는 문자🤖 Claude에게 넘기기
urlHTTP 또는 tg:// URLclaude.ai/new?q=…
callback_data1~64바이트사용하지 않음
알림 본문1~4096자리포트나 장애 내용

일본어는 한 글자가 9자로 불어난다

여기서 첫 번째 벽에 부딪혔습니다. 일본어를 URL에 넣으면 글자 수가 확 늘어납니다.

URL에 쓸 수 있는 문자는 정해져 있습니다. 그 밖의 문자는 퍼센트 인코딩이라는 형태로 바꿉니다. RFC 3986에서는 1바이트를 ‘%’와 16진수 두 자리, 총 3자로 나타내도록 정하고 있습니다.

일본어 문자는 UTF-8에서 보통 3바이트입니다. RFC 3629의 표에서도 이 범위는 3바이트 배열로 되어 있습니다. 3바이트가 각각 3자가 되니 한 글자에 약 9자입니다. 한국어도 마찬가지인데, 예를 들어 ‘가’는 %EA%B0%80 이 됩니다.

문자 종류UTF-8 바이트 수인코딩 후 글자 수
반각 영숫자1바이트1자(그대로)
히라가나·한자 대부분3바이트약 9자
일부 기호1~3바이트3~9자

구조를 알고 나니 과연 그렇구나 싶었습니다. 일본어 200자면 URL은 2,000자 가까이 된다는 계산입니다.

처음 안내문만으로 2,000을 넘었다

처음에는 요청문 앞에 조금 긴 안내문을 붙였습니다. ‘이건 집의 자동 알림입니다’ 같은 머리말이죠. 그런데 그 안내문만으로 인코딩 후 2,000을 넘어 버렸습니다.

그래서 안내문을 확 줄여서 통과시켰습니다. 그렇다 해도 본문이 길면 또 같은 문제에 부딪힙니다. 여기서 다른 보관 장소가 필요하다고 느꼈습니다.

URL 길이에 일률적인 상한은 없다

그럼 URL에는 몇 자까지 들어갈까요. 찾아보니 일률적인 상한은 없는 것 같습니다.

HTTP 사양인 RFC 9110에서는 최소 8,000옥텟의 URI를 지원하도록 권장합니다. 다만 이건 하한에 대한 권장입니다. 상한을 정한 것은 아닙니다. 너무 길면 서버가 ‘414 URI Too Long’을 돌려주기도 합니다.

브라우저나 앱, 중간에 거치는 서비스마다 처리할 수 있는 길이가 다릅니다. 그래서 제 환경에서는 2,000 안팎을 기준으로 삼았습니다. 이 숫자가 어디서나 통한다는 보장은 아닙니다.

+와 %가 깨졌다

또 하나, 은근히 애먹은 게 기호입니다. ?q= 에 넘기는 문장에서 ‘+’와 ‘%’가 깨졌습니다. 제대로 인코딩해도 표시되는 문장이 망가진 거예요.

URL 세계에는 ‘+’를 공백으로 읽는 관습이 있습니다. WHATWG의 URL 표준에도 폼 형식을 해석할 때 ‘+’를 공백으로 바꾸는 절차가 있습니다. 어디서 깨지는지는 여기서 단정하지 않겠습니다.

대책은 단순하게 했습니다. 보내기 전에 ‘+’와 ‘%’를 전각 ‘+’ ‘%’로 바꿉니다. 사람이 읽는 요청문이라 전각이어도 곤란한 경우는 적을 거라 생각합니다.

긴 글은 Notion으로 옮겼다

본론인 우회책입니다. 긴 글은 URL에 넣지 않기로 했습니다.

대신 Notion의 ‘Claude 인계’라는 데이터베이스에 전문을 씁니다. 버튼 URL에는 그 페이지 ID와 앞부분만 싣습니다. Claude 쪽은 그 ID로 Notion 페이지를 읽으러 갑니다.

비교 항목짧은 글긴 글
URL에 싣는 것요청문 그 자체페이지 ID와 앞부분
전문 보관 위치URL 안Notion 페이지
Claude의 동작그대로 읽음Notion을 읽으러 감
동작 확인보내서 확인함보내서 확인함

짧은 글도 긴 글도 실제로 보내서 동작하는 것을 확인했습니다.

Notion API로 할 수 있는 것

Notion 공식 API에서는 데이터베이스 아래에 페이지를 만들 수 있습니다. 기존 페이지나 데이터 소스를 부모로 지정하는 방식입니다.

읽는 쪽에서는 페이지 ID를 지정해 페이지 정보를 가져올 수 있습니다. 다만 페이지 본문은 창구가 따로 있습니다. ‘블록의 자식 요소 가져오기’ API로 읽는다고 공식 문서에 적혀 있습니다.

제한도 하나 신경 써야 합니다. 공식 요청 제한에 따르면 리치 텍스트 하나의 내용은 2,000자까지입니다. 긴 글을 블록 하나에 몰아넣기보다 나눠서 쓰는 편이 무난할지도 모릅니다.

Claude 쪽에서 읽으려면 Notion 커넥터를 연결해 두어야 합니다. 커넥터는 Claude가 외부 서비스의 데이터에 접근하는 구조입니다. 권한은 연결한 사람의 것을 그대로 이어받는다고 공식 도움말에 적혀 있습니다.

처리 흐름

제 구조를 흐름으로 나열하면 이렇습니다.

  1. 알림 스크립트가 알림 본문과 요청문을 준비한다.
  2. 요청문의 ‘+’와 ‘%’를 전각으로 바꾼다.
  3. 인코딩 후 길이가 기준 이내인지 확인한다.
  4. 짧으면 그대로 ?q= 에 넣어 버튼을 만든다.
  5. 길면 Notion 인계 DB에 전문을 쓴다.
  6. 페이지 ID와 앞부분만 ?q= 에 넣어 버튼을 만든다.
  7. Telegram으로 알림과 버튼을 보낸다.

의사 코드로 쓰면 대략 이런 형태입니다.

문장 = 요청문의 ‘+’ ‘%’를 전각으로 치환
if 인코딩 후 길이 <= 기준:
    q = 문장
else:
    ID = Notion 인계 DB에 전문을 저장
    q = "Notion 페이지 " + ID + " 를 읽어 줘. 앞부분: " + 문장의 앞부분
버튼URL = "https://claude.ai/new?q=" + 인코딩(q)

버튼 만들기는 별도 스크립트로 분리했다

처음에는 알림 전송 스크립트 안에서 URL을 조립했습니다. 그런데 치환이나 길이 판정이 늘어나면서 코드가 한눈에 안 들어오게 됐어요.

그래서 버튼 URL을 만드는 처리를 작은 별도 스크립트로 떼어 냈습니다. 알림을 보내는 쪽은 완성된 URL을 받기만 합니다. 알림 종류가 늘어도 같은 부품을 돌려 쓸 수 있습니다.

자동화 뒷이야기는 Cloudflare Workers 무료 플랜의 Cron 상한 글에도 썼습니다. 작게 나눠 두면 나중에 고칠 때 편하죠.

Mac 데스크톱 앱에서의 차이

Mac용 Claude 데스크톱 앱에서도 시험해 봤습니다. claude://new?q= 로는 앱이 실행되기만 했습니다. 문장은 전달되지 않았어요.

반면 claude://claude.ai/new?q= 로는 문장이 전달됐습니다. 공식 도움말에도 이 형태의 서식이 나와 있습니다. 도움말에는 q의 문장이 약 14,000자에서 잘린다고도 적혀 있습니다. 모든 값은 URL 인코딩이 필요하다는 내용도 있습니다.

참고로 Telegram 버튼의 url 칸은 공식적으로 HTTP 또는 tg:// URL입니다. claude:// 를 버튼에 직접 넣는 사용법과는 별개의 이야기로 봐 주세요.

주의

웹 버전의 claude.ai/new?q= 는 공식 문서에서 확인하지 못했습니다. 지금은 동작하지만 앞으로 바뀔 수도 있습니다. 데스크톱 버전의 claude:// 는 공식 도움말에 서식이 나와 있습니다.

스마트폰 한 대로 집안일을 돌린다면 통신비도 한번 점검해 두고 싶은 부분입니다. 알림이나 AI와의 대화가 늘수록 스마트폰은 생활의 창구가 되니까요.

가입하지 않아도 100포인트를 받는 요금 시뮬레이션 Rakuten Mobile 요금 확인해 보기

누르면 라쿠텐 로그인 페이지가 열립니다. 로그인하면 캠페인 내용이 표시됩니다.

흔한 실수·함정

이 구조는 ‘알림을 읽기만 하고 흘려보내는 사람’에게 맞는다고 생각합니다. ‘자동화 결과를 AI와 상의하고 싶은 사람’에게도 어울릴지 모릅니다. 한편 걸려 넘어지기 쉬운 부분도 몇 가지 있었습니다.

특히 토큰 건은 조심하고 싶은 부분입니다. URL은 방문 기록이나 공유를 통해 남의 눈에 띄기 쉽습니다. 인계용 페이지 ID만 싣는 편이 안심되지 않을까요.

인계 페이지 정리는 저도 아직 진행 중입니다. 7일이 지나면 자동으로 보관 처리하는 기능은 아직 구현하지 않았습니다. 규칙을 정해도 지켜지지 않는 이야기는 164건의 작업을 세어 본 글에서도 썼습니다. 구조로 정리하는 것까지가 숙제일까요.

시작하기 전에 확인할 것

자주 묻는 질문

Q. 왜 일본어는 URL이 길어지나요?

일본어 문자 대부분은 UTF-8에서 3바이트가 됩니다. URL에서는 1바이트를 ‘%XX’ 3자로 나타냅니다. 그래서 한 글자당 약 9자로 불어납니다.

Q. URL에는 몇 자까지 넣을 수 있나요?

일률적인 상한은 없는 것 같습니다. HTTP 사양에서는 8,000옥텟 이상을 지원하도록 권장합니다. 다만 실제 상한은 브라우저나 서비스마다 다릅니다. 제 환경에서는 2,000 안팎을 기준으로 삼았습니다.

Q. claude.ai/new?q= 는 공식 기능인가요?

웹 버전은 공식 문서에서 확인하지 못했습니다. 지금은 동작하지만 앞으로 바뀔 수도 있습니다. 데스크톱 버전의 claude://claude.ai/new?q= 는 공식 도움말에 나와 있습니다.

Q. ‘+’나 ‘%’는 왜 깨지나요?

URL에서는 ‘+’를 공백으로 읽는 관습이 있습니다. 다만 제 환경에서 어디서 깨졌는지는 단정하지 않았습니다. 대책으로 보내기 전에 전각으로 바꾸고 있습니다.

Q. Telegram 버튼에 긴 데이터를 담을 수는 없나요?

callback_data는 1~64바이트 제한이 있습니다. 긴 문장을 담는 용도에는 맞지 않습니다. 그래서 전문은 Notion에 두는 방식으로 했습니다.

Q. Notion에 둔 전문을 Claude는 어떻게 읽나요?

Claude에 Notion 커넥터를 연결해 둡니다. URL에 실은 페이지 ID를 단서로 Claude가 페이지를 읽으러 갑니다. 짧은 글과 긴 글 모두 실제로 동작하는 것을 확인했습니다.

Q. 인계 페이지가 쌓이지 않나요?

쌓입니다. 7일이 지나면 자동으로 보관 처리하는 기능은 아직 만들지 못했습니다. 현재 남은 과제 중 하나입니다.

참고한 공식 정보

정리

알림에 ‘Claude에게 넘기기’ 버튼을 달면 상담까지의 거리가 확 줄어듭니다. 다만 일본어는 URL 안에서 약 9배로 불어납니다. 짧은 글은 그대로, 긴 글은 Notion으로 옮기는 방식에 정착했습니다.

남은 숙제는 인계 페이지 정리입니다. 알림을 읽고 흘려보내기 쉽다면 버튼 하나를 더해 보는 건 어떨까요.

가입하지 않아도 100포인트를 받는 요금 시뮬레이션 Rakuten Mobile로 휴대폰 요금 다시 계산해 보기

누르면 라쿠텐 로그인 페이지가 열립니다. 로그인하면 캠페인 내용이 표시됩니다.

이 글에는 제휴 광고가 포함되어 있습니다. 이 사이트의 링크를 통해 상품·서비스에 신청하시면 제휴사로부터 보상을 받을 수 있습니다. 또한 운영자는 라쿠텐 그룹 소속 직원으로, 사원 추천 프로그램을 통해 보상을 받는 경우가 있습니다. 기사 내용과 평가는 광고 유무와 관계없이 운영자의 실제 경험과 조사를 바탕으로 작성했지만, 위 관계를 이해하신 후 읽어 주시기 바랍니다. 자세한 내용은 면책조항·제휴 링크 안내를 참고해 주세요. 면책조항·제휴 링크 안내

이 글에는 기계 번역이 포함되어 있습니다. 정확한 조건은 라쿠텐 모바일 공식 사이트의 다국어 페이지에서 확인해 주세요.

라쿠텐 모바일의 통신 지역·전파 상황이 궁금하신 분은, 공식 전파 개선·조사 요청 양식 을 통해 문의하실 수 있습니다.

ABOUT THE AUTHOR
まさきん

라쿠텐 그룹 근무·디지털 마케터(FP 자격 보유)

40대 초반, 맞벌이·네 자녀의 아빠. 라쿠텐 그룹에서 디지털 마케터로 근무하면서, 재무설계사(FP) 자격을 활용해 가계 관리와 자산 형성에도 힘쓰고 있다.

프로필 보기

관련 글

RELATED
Gemini(Google AI Pro) 패밀리 공유는 가족 5명까지. 설정 절차와 범위 AI 활용

Gemini(Google AI Pro) 패밀리 공유는 가족 5명까지. 설정 절차와 범위

Google AI Pro는 관리자 외에 가족 5명까지 공유할 수 있습니다. Gemini 앱과 저장용량은 공유되고 YouTube Premium Lite는 관리자만. Flow 한도는 가족이 나눠 씁니다. 설정 절차와 자녀 계정 처리를 공식 도움말로 정리했습니다.

2026.10.13 · 읽는 시간 약 13분
AI 구독 청구일과 가계부가 어긋나는 3가지 이유|Claude는 업그레이드하면 청구일이 바뀐다 AI 활용

AI 구독 청구일과 가계부가 어긋나는 3가지 이유|Claude는 업그레이드하면 청구일이 바뀐다

Claude는 월 중간에 Max로 올리면 청구 주기가 리셋되어 그날이 새로운 청구일이 됩니다. 달러 결제의 엔화 환산은 카드사에 데이터가 도착한 시점에 정해지고, 명세와 가계부 반영은 며칠 늦습니다. 영수증 메일을 기준으로 월을 정하는 5단계를 정리했습니다.

2026.10.13 · 읽는 시간 약 14분
freee 회계의 미처리 내역을 월 1회 대사 작업으로. 매월 5일 7:30·3구분·상한 15건으로 사람에게 넘기는 설계 AI 활용

freee 회계의 미처리 내역을 월 1회 대사 작업으로. 매월 5일 7:30·3구분·상한 15건으로 사람에게 넘기는 설계

freee 회계의 미처리 내역이 18건 정도, 주간 확인 6번 동안 움직이지 않은 채 남아 있었습니다. 매월 5일 아침 7:30에 집 Mac에서 돌리는 대사 작업의 설계와, 확정할 수 있는 분은 월 1건, 망설여지는 내역은 1건씩 상한 15건으로 사람에게 넘기는 기준을 정리합니다.

2026.10.12 · 읽는 시간 약 15분
라쿠텐 모바일로 전환 시 최대 14,000포인트 가입하지 않아도 100포인트를 받는 요금 시뮬레이션 →
지금 신청하기 →