공유 URL 관리를 '보내는 사람의 기억'에 맡기는 것은 이제 무리가 있습니다. 7월 27일에는 Claude의 공유 채팅이나 Artifacts가 Google에 노출되었을 가능성을 지적하는 기사도 나왔습니다. 사실관계에 대한 속보는 따라가되, 영업 자료나 거래처 메일에 URL을 붙여넣기 전에 공개 범위와 기한을 기계적으로 확인하는 운영 방식으로 전환하는 것이 좋습니다. 기사
저라면 공유 링크가 10개를 넘는 시점에서 수동 확인을 중단하겠습니다. URL을 일일이 열어서 확인하는 방법은 매우 번거롭습니다. 하지만 "누가 가지고 있는지", "언제까지 필요한지", "고객 정보가 포함되어 있는지"가 다른 곳에 흩어져 있기 때문에, 마지막에 하나씩 누락되곤 합니다.
여기에서는 스프레드시트의 공유 대장을 CSV로 추출하여, Claude의 공유 링크에 기한이 있는지, 공개 범위가 타당한지를 Python으로 체크합니다. 외부 API는 사용하지 않습니다. URL 자체를 어딘가로 전송하지 않는 것이 이 방식의 장점입니다.
시트의 한 행을 공유 링크 1개로 구성합니다. 열은 다음 6개입니다.
| 열 | 입력할 값 |
|---|
project | 프로젝트명 또는 용도 |
url | 공유 URL |
owner | 삭제·재검토를 수행할 담당자 |
expires_on | 재검토일. YYYY-MM-DD |
audience | 社内限定 (사내 한정), 取引先限定 (거래처 한정), 公開 (공개) 중 하나 |
contains_client_data | はい (예) 또는 いいえ (아니오) |
기한은 링크 자체를 자동으로 무효화할 수 있는 날짜가 아닙니다. "이 날에 소유자가 필요성을 재검토한다"라는 업무상의 약속입니다. 이 부분을 혼동하면 대장만 훌륭하고 링크는 그대로 남아 있게 됩니다.
대장에서 송부 판단까지의 흐름은 다음 그림과 같습니다.
스프레드시트에서 CSV를 다운로드하여 check_shared_links.py와 같은 폴더에 둡니다. Python 3.9 이후 버전에서 실행했습니다.
project,url,owner,expires_on,audience,contains_client_data
案件A,https://claude.ai/share/abc123,eiri,2026-08-01,取引先限定,はい
採用候補,https://claude.ai/share/def456,eiri,,公開,はい
...
#!/usr/bin/env python3
import argparse
import csv
...
실행은 이것뿐입니다. --today를 붙이면 테스트 시의 날짜를 고정할 수 있습니다. 실무에서는 빼도 무방합니다.
python3 check_shared_links.py shared_links.csv --today 2026-07-28
로컬에서 위의 3줄을 실행하면 다음과 같이 출력되었습니다.
판정: 확인 필요 (3건)
3행째 (採用候補): Claude 공유 링크임에도 expires_on이 비어 있습니다
3행째 (採用候補): 고객 정보가 포함된 공개 링크입니다
...
종료 코드(Exit Code)는 문제가 없으면 0, 확인이 필요하면 1, CSV의 필수 열이 누락되었으면 2입니다. 매주 재고 조사를 한다면, 이 종료 코드를 정기 실행 작업(Job)에서 포착하여 1일 때만 담당자에게 알림을 보내면 충분합니다.
중요한 점은, 이 스크립트가 링크 대상의 공개 설정을 직접 판정하는 것이 아니라는 점입니다. URL을 실제로 무효화했는지, 열람 권한이 올바른지는 각 서비스의 화면에서 확인할 필요가 있습니다. 이 CSV 검사는 그 전에 "기한 없음", "고객 정보가 포함된 공개 상태"와 같은 명백한 간과를 걸러내는 것입니다.
공유 URL을 안전하게 다루는 요령은 URL을 배포하기 전에 대장에 한 줄을 추가하는 것입니다. 송부 직전의 수십 초라면 지킬 수 있으며, 나중에 전부 찾아내는 작업보다 훨씬 저렴합니다. 특히 영업이나 기획 부서에서는 자료 업데이트와 URL 삭제 담당자가 나뉘는 경우가 많습니다. 소유자와 재검토일을 CSV에 남겨두면 해야 할 사람이 모호해지지 않습니다. 이 부분이 은근히 효과적입니다.