yeonghoon.kim

  • 게시판
  • 갤러리

JSON-LD 학습 - 메일과 Calendar 자동 인식

김영훈 2026.03.28 14:08 조회 수 : 151

JSON-LD 학습.

비행기 티켓 메일이나 호텔 예약 메일을 받으면 Google Calendar에 일정이 자동으로 뜨는 경우가 있음.

처음에는 Gmail이 본문을 대충 읽어서 처리하는 줄 알았는데, 실제로는 메일 안에 구조화된 데이터가 들어가는 방식이었음.

그게 JSON-LD.

예를 들면 이런 식.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FlightReservation",
  "reservationNumber": "LJ349-ABC123",
  "underName": {
    "@type": "Person",
    "name": "Chloe"
  },
  "reservationFor": {
    "@type": "Flight",
    "flightNumber": "LJ349",
    "airline": {
      "@type": "Airline",
      "name": "Jin Air"
    },
    "departureAirport": {
      "@type": "Airport",
      "iataCode": "ICN",
      "name": "Incheon"
    },
    "arrivalAirport": {
      "@type": "Airport",
      "iataCode": "KKJ",
      "name": "Kitakyushu"
    },
    "departureTime": "2026-04-08T15:45:00+09:00",
    "arrivalTime": "2026-04-08T17:15:00+09:00"
  }
}
</script>

사람이 보기에는 그냥 비행기 예약 메일인데, 컴퓨터 입장에서는 이게 FlightReservation이라는 걸 알 수 있음.

Schema.org 규칙을 기준으로 작성함.

FlightReservation은 비행기 예약.
LodgingReservation은 숙박 예약.
RestaurantReservation은 식당 예약.
Book은 책 정보.

이런 식으로 데이터 타입이 정해져 있음.

메일 본문에 그냥 “출발시간 15시 45분”이라고 쓰면 컴퓨터는 의미를 정확히 알기 어려움.

그런데 JSON-LD로 넣으면 `departureTime`이 출발시간이라는 걸 명확하게 알 수 있음.

Python으로 만들면 대략 이런 식.

import json

schema = {
    "@context": "https://schema.org",
    "@type": "FlightReservation",
    "reservationNumber": "LJ349-ABC123",
    "reservationFor": {
        "@type": "Flight",
        "flightNumber": "LJ349",
        "departureTime": "2026-04-08T15:45:00+09:00",
        "arrivalTime": "2026-04-08T17:15:00+09:00"
    }
}

html = f"""
<html>
  <body>
    <p>항공편 LJ349 탑승권입니다.</p>

    <script type="application/ld+json">
    {json.dumps(schema, indent=2)}
    </script>
  </body>
</html>
"""

실제로 RestaurantReservation이랑 FlightReservation 메일을 보내서 테스트했음.

Gmail에서 JSON-LD를 인식했음.

식당 예약은 제목, 시간, 주소, 전화번호를 추출함.
비행기 예약은 항공편 번호, 시간, 출발지, 도착지, 좌석 정보를 추출함.

다만 Calendar에 완전 자동 추가되지는 않았음.

“내 캘린더에 추가” 버튼을 보여주는 방식.

이유는 발신자 신뢰도 때문으로 보임.

공식 항공사나 호텔 도메인이면 자동 등록될 수 있지만, 개인 도메인에서 보낸 테스트 메일은 사용자 확인을 요구하는 방식.

정리하면 JSON-LD는 메일이나 웹페이지 안에 숨겨진 구조화된 데이터임.

Gmail, Google Calendar, 검색엔진이 이 데이터를 읽고 예약, 일정, 별점, 상품 정보 같은 걸 이해함.

여행 일정 자동화나 gog 연동을 하려면 이 구조를 알아두는 게 필요했음.

  • 추천 0

  • 비추천 0
이 게시물을
목록

댓글 0

번호 제목 글쓴이 날짜 조회 수
공지 2025 일본 여행 계획 김영훈 2024.10.10 4119
공지 현금, 저축, 투자, 지출, 예산, 보험 내역(2024-05-30) 김영훈 2024.03.10 3752
17 ARM Kubernetes 구축 1 - VNC & KVM 설치 김영훈 2026.02.14 70
16 ARM Kubernetes 구축 3 - 모니터링 스택 Prometheus Grafana 김영훈 2026.02.16 179
15 ARM Kubernetes 구축 5 - 실전 업그레이드 경험기 v1.29→v1.35 김영훈 2026.02.18 238
14 ARM Kubernetes 구축 4 - 외부 접근 환경 VPN MetalLB Ingress 김영훈 2026.02.18 246
13 ARM Kubernetes 구축 7 - 클러스터 무중단 업그레이드 v1.29→v1.35 김영훈 2026.02.20 252
12 ARM Kubernetes 구축 8 - 실전 보안 RBAC 네트워크 정책 Pod 보안 김영훈 2026.02.20 194
11 ARM Kubernetes 구축 6 - 무중단 업그레이드 김영훈 2026.02.20 208
10 비트코인 자동매매 봇 대시보드 김영훈 2026.02.21 144
9 Apache RewriteRule 쿼리스트링 처리 김영훈 2026.02.28 258
8 Redis 대기열 시스템 김영훈 2026.03.01 212
7 ChloeToken 테스트넷 배포 김영훈 2026.03.02 232
6 Tech Support 플랫폼 김영훈 2026.03.04 80
5 WAF 운영 6주 분석 김영훈 2026.03.13 199
» JSON-LD 학습 - 메일과 Calendar 자동 인식 김영훈 2026.03.28 151
3 7일간의 일본 여행 일정 짜기: 신칸센 + JR 패스 + Google Calendar 활용 프로젝트 김영훈 2026.03.28 128
2 교토 4박 5일 여행 일정: Google Calendar로 관리하는 일정짜기 김영훈 2026.04.05 125
1 OpenClaw 복원과 GLM-5.1 전환 김영훈 2026.04.07 145
쓰기 태그
 첫 페이지 7 8 9 10 11 12 13 14 15 16 끝 페이지