TL;DR

  • Claude가 생성·수정하는 훈련 일정을 비공개가 아닌 비밀(secret) GitHub Gist의 iCal 파일로 호스팅해 휴대전화 캘린더와 동기화함.
  • 목표 대회와 일정 조건, 현재 스케줄을 Claude에 제공하면 정적 웹사이트와 구독 가능한 iCal 파일을 생성함.
  • Gist의 피드 주소는 https://gist.githubusercontent.com/<user>/<gist-id>/raw/<file>.ics 형식이며 TLS를 무료로 제공함.
  • 응답의 content-type은 text/plain; charset=utf-8이며, 사용 사례에서는 iCal이 문제없이 처리했지만 동작은 환경에 따라 다를 수 있음.
  • Gist가 최대 5분간 캐시되므로 캘린더 반영이 즉시 이뤄지지 않으며, 최신 파일을 받으려면 제시된 URL 형식을 사용해야 함.

훈련 일정과 비밀 Gist

  • Claude에 목표 대회, 일정 조건, 현재 스케줄을 알려주면 기본 훈련 계획을 정적 웹사이트와 구독 가능한 iCal 파일로 생성함.
  • 정적 웹사이트는 tailnet에서 호스팅하고, Claude가 iCal 파일을 갱신하도록 구성함.
  • 비밀 Gist를 만들고 휴대전화에서 구독하면, 계획을 변경할 때 Claude가 파일을 수정하고 휴대전화가 다음 피드 확인 시 변경 사항을 동기화함.
  • Gist는 비밀이지만 비공개는 아니며, 이 사용 사례에서는 그 절충을 받아들임.

피드 주소와 동기화 특성

  • 피드 URL은 https://gist.githubusercontent.com/<user>/<gist-id>/raw/<file>.ics 형식임.
  • TLS가 무료로 제공되며, 캘린더에서 TLS가 필요할 가능성이 높음.
  • 요청 확인에 사용하는 명령은 curl -I https://gist.githubusercontent.com/<user>/<gist-id>/raw/<file>.ics이며, 응답은 HTTP/2 200임.
  • 응답 헤더에는 cache-control: max-age=300, content-type: text/plain; charset=utf-8, etag: "<hash>", x-content-type-options: nosniff, date: Tue, 06 Oct 2026 15:40:27 GMT, x-cache: HIT, expires: Tue, 06 Oct 2026 15:45:27 GMT, source-age: 124가 포함됨.
  • 주목할 헤더는 content-type: text/plain; charset=utf-8임. iCal은 text/plain 콘텐츠 유형을 문제없이 처리하는 듯하지만, text/calendar를 요구할 가능성도 있으며 사용 사례에서는 정상 동작함.
  • Gist는 최대 5분간 캐시되므로 캘린더 동기화 시 변경 사항이 즉시 반영되지 않음. 훈련 일정 변경이 드물어 이 사례에서는 큰 문제가 아님.
  • SHA에 고정된 파일 대신 항상 최신 Gist를 받도록 위에 제시된 URL 형식을 사용해야 함.