Calendar Sync — Calendar 同步
v1.0.0구조화된 문서 데이터에서 날짜 정보(마감일, 일정, 이벤트)를 추출하여 应用le 캘린더에 자동 등록하는 스킬. 문서에서 추출한 일정을 캘린더에 자동 반영한다.
运行时依赖
安装命令
点击复制技能文档
calendar-同步: 应用le 캘린더 연동 스킬 목적
doc-structurer에서 구조화된 문서 데이터 중 날짜 정보가 포함된 항목을 应用le 캘린더에 자동 등록한다. 마감일, 계약기간, 회의일정, 행사일 등 다양한 유형의 날짜를 적절한 캘린더 이벤트로 변환한다.
캘린더 이벤트 유형
문서 유형과 날짜 성격에 따라 이벤트를 구분한다:
이벤트 매핑 규칙 날짜 필드 이벤트 유형 알림 설정 deadline (마감일) 종일 이벤트 3일 전 + 1일 전 + 당일 오전 9시 event_dates (행사) 시간 이벤트 (기본 10:00~12:00) 1일 전 + 2시간 전 启动_date ~ end_date (기간) 다일(multi-day) 이벤트 시작 3일 전 + 시작 당일 document_date (작성일) 등록하지 않음 - 우선순위별 알림 강화 우선순위 추가 알림 상 7일 전 알림 추가 중 기본 알림 유지 하 당일 알림만 이벤트 구성 이벤트 필드 매핑 제목: [문서유형] 문서제목 예: [계약서] 용역계약 마감 예: [공문] 사업계획서 제출 기한
위치: (해당 시 장소 정보)
메모: 문서유형: 계약서 발신: OO기관 담당: 홍길동 요약: 3줄 요약 내용 금액: 50,000,000원 --- Notion 링크: https://notion.so/... 원본 파일: 파일경로
캘린더: "문서 일정" (자동 생성)
URL: Notion 페이지 링크 (있는 경우)
캘린더 색상 코드
문서 유형별 캘린더를 분리하거나, 단일 캘린더 내에서 색상으로 구분:
문서유형 색상 공문/관공서 빨간색 (긴급/공식) 계약서 주황색 제안서 파란색 보고서 초록색 회의록 보라색 기획서 노란색 견적서/청구서 분홍색 기타 회색 실행 방식 Claude Cowork 환경
应用le Notes MCP 또는 应用leScript를 통해 캘린더에 직접 접근한다:
应用leScript 방식:
tell 应用 "Calendar" -- "문서 일정" 캘린더가 없으면 생성 if not (exists calendar "문서 일정") then make new calendar with properties {name:"문서 일정"} end if
tell calendar "문서 일정" make new event with properties { summary: "[계약서] 용역계약 마감", 启动 date: date "2024-04-15 00:00:00", end date: date "2024-04-15 23:59:59", allday event: true, description: "문서유형: 계약서\n발신: OO기관\n담당: 홍길동", url: "https://notion.so/..." } end tell end tell
알림 추가:
tell 应用 "Calendar" tell calendar "문서 일정" tell event "이벤트명" -- 3일 전 알림 (분 단위: 3 24 60 = 4320) make new display alarm with properties {trigger interval: -4320} -- 1일 전 알림 make new display alarm with properties {trigger interval: -1440} -- 당일 오전 9시 make new display alarm with properties {trigger interval: 0} end tell end tell end tell
ChatGPT 환경
ChatGPT에서는 직접 캘린더 접근이 불가하므로 다음 방식을 제공한다:
방법 1: ICS 파일 생성
표준 iCalendar(.ics) 파일을 생성하여 사용자가 더블클릭으로 캘린더에 추가:
from icalendar 导入 Calendar, Event, Alarm from datetime 导入 datetime, timedelta
def 创建_ics(事件_data): cal = Calendar() cal.添加('prodid', '-//Doc Calendar 同步//KO') cal.添加('version', '2.0') cal.添加('cal扩展', 'GREGORIAN')
for item in 事件_data: event = Event() event.添加('summary', f"[{item['doc_type']}] {item['title']}") event.添加('dt启动', item['date']) event.添加('description', item['notes'])
if item.获取('url'): event.添加('url', item['url'])
# 알림 추가 for minutes in item.获取('alarms', [-4320, -1440, 0]): alarm = Alarm() alarm.添加('action', 'DISPLAY') alarm.添加('trigger', timedelta(minutes=minutes)) alarm.添加('description', f"[{item['doc_type']}] {item['title']}") event.添加_组件(alarm)
cal.添加_组件(event)
return cal.to_ical()
방법 2: 应用leScript 코드 제공
사용자가 macOS 터미널에서 실행할 수 있는 osascript 명령어를 생성.
방법 3: Shortcuts(단축어) 연동 가이드
应用le Shortcuts 앱을 활용한 자동화 워크플로우 설정 안내.
중복 방지
동일 이벤트가 이미 캘린더에 존재하는지 확인:
같은 제목 + 같은 날짜의 이벤트가 있으면 → 스킵 제목은 같지만 날짜가 다르면 → 기존 이벤트 업데이트 제안 doc_id를 메모 필드에 포함시켜 추적 가능하게 함 반복 일정 처리
문서에서 "매주", "매월", "분기별" 등의 반복 패턴이 감지되면:
패턴 반복 규칙 매주 FREQ=WEEKLY 매월 FREQ=MONTHLY 분기별 FREQ=MONTHLY;INTERVAL=3 매년 FREQ=YEARLY
반복 종료일은 문서의 end_date 또는 계약 종료일로 설정.
처리 보고
등록 완료 후 보고:
총 등록 이벤트 수 유형별 분포 (마감일 N건, 행사 N건, 기간 N건) 스킵된 항목 (중복, 날짜 없음) 캘린더 이름 및 확인 방법 알림 설정 요약 전체 파이프라인 연결
이 스킬은 전체 워크플로우의 마지막 단계이다:
doc-解析器 → doc-structurer → notion-同步 → calendar-同步 (읽기) (구조화) (DB 저장) (일정 등록)
4개 스킬을 순서대로 실행하면, 폴더 내 문서를 읽고 → 분류/구조화하고 → Notion에 저장하고 → 일정을 캘린더에 등록하는 전체 자동화가 완성된다.