tripit

Create and update TripIt travel plans by sending structured confirmation emails to plans@tripit.com. Supports flights, hotels, activities, car rentals, rail, and cruises. Use when: user asks to add something to TripIt, sync a trip to TripIt, update their itinerary, or manage travel plans. Requires email sending capability (e.g. MS Graph, Himalaya, or gog skill).

3,891 stars

Best use case

tripit is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Create and update TripIt travel plans by sending structured confirmation emails to plans@tripit.com. Supports flights, hotels, activities, car rentals, rail, and cruises. Use when: user asks to add something to TripIt, sync a trip to TripIt, update their itinerary, or manage travel plans. Requires email sending capability (e.g. MS Graph, Himalaya, or gog skill).

Teams using tripit should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/tripit/SKILL.md --create-dirs "https://raw.githubusercontent.com/openclaw/skills/main/skills/adamwestland/tripit/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/tripit/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How tripit Compares

Feature / AgenttripitStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Create and update TripIt travel plans by sending structured confirmation emails to plans@tripit.com. Supports flights, hotels, activities, car rentals, rail, and cruises. Use when: user asks to add something to TripIt, sync a trip to TripIt, update their itinerary, or manage travel plans. Requires email sending capability (e.g. MS Graph, Himalaya, or gog skill).

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# TripIt Skill

Add travel plans to TripIt by sending structured confirmation emails to `plans@tripit.com`. No API keys required — just email sending capability.

## How It Works

TripIt parses specially formatted emails ("TripIt Approved" format) into travel objects. This skill generates those emails; you send them with whatever email tool you have (MS Graph, Himalaya, gog, etc.).

**Flow:**
1. User says "add my flight to TripIt"
2. You construct JSON from their details
3. `tripit-email.py` generates the formatted email body
4. You send it to `plans@tripit.com`
5. TripIt creates the trip object within seconds

## Setup

The sender email must be associated with the user's TripIt account. Either:
- The email is the one they signed up with, OR
- They've added it at **TripIt → Settings → Connected Email Addresses**

No other configuration needed.

## Usage

### Generate a flight confirmation

```bash
echo '{"airline":"United Airlines","flight_number":"1234","class":"Economy",
  "departure_city":"San Francisco","departure_airport":"SFO",
  "departure_date":"2025-06-15","departure_time":"08:30",
  "arrival_city":"New York","arrival_airport":"JFK",
  "arrival_date":"2025-06-15","arrival_time":"17:05",
  "passenger":"Jane Smith","confirmation":"UA1234X",
  "booking_site_url":"https://www.united.com"}' \
| python3 scripts/tripit-email.py flight
```

### Generate a hotel confirmation

```bash
echo '{"hotel_name":"Hotel & Spa Napa Valley","checkin_date":"2025-06-15",
  "checkout_date":"2025-06-18","city":"Napa","state":"CA","country":"US",
  "street_address":"123 Vineyard Lane","confirmation":"NV8842",
  "number_of_guests":"2","rate":"189.00","currency":"USD"}' \
| python3 scripts/tripit-email.py hotel
```

### Generate an activity

```bash
echo '{"activity_name":"Wine Tasting Tour","location":"Sonoma Valley Vineyards",
  "start_date":"2025-06-16","start_time":"10:00",
  "end_date":"2025-06-16","end_time":"14:00",
  "city":"Sonoma","state":"CA","country":"US"}' \
| python3 scripts/tripit-email.py activity
```

### Generate a multi-item email

```bash
echo '{"items":[
  {"type":"flight","airline":"United Airlines","flight_number":"1234",
   "departure_city":"San Francisco","departure_airport":"SFO",
   "departure_date":"2025-06-15","departure_time":"08:30",
   "arrival_city":"New York","arrival_airport":"JFK",
   "arrival_date":"2025-06-15","arrival_time":"17:05",
   "passenger":"Jane Smith","confirmation":"UA1234X"},
  {"type":"hotel","hotel_name":"The Manhattan Grand","checkin_date":"2025-06-15",
   "checkout_date":"2025-06-18","city":"New York","state":"NY","country":"US",
   "confirmation":"MG7890"}
]}' \
| python3 scripts/tripit-email.py multi
```

### Include a subject line

Add `--subject` to any command to get a suggested email subject:

```bash
echo '...' | python3 scripts/tripit-email.py --subject flight
```

## Sending the Email

The script outputs the email body. You send it using whatever email tool is available.

### MS Graph (Microsoft 365 users)

```bash
BODY=$(echo '...' | python3 scripts/tripit-email.py flight)
# Use your MS Graph email sending tool to send:
#   To: plans@tripit.com
#   Subject: United Airlines SFO-JFK 2025-06-15
#   Body: $BODY (plain text)
```

### Himalaya

```bash
echo '...' | python3 scripts/tripit-email.py --subject flight > /tmp/tripit-email.txt
himalaya send --to plans@tripit.com \
  --subject "$(head -1 /tmp/tripit-email.txt | sed 's/Subject: //')" \
  --body "$(tail -n +3 /tmp/tripit-email.txt)"
```

### gog (Google OAuth)

```bash
BODY=$(echo '...' | python3 scripts/tripit-email.py flight)
gog send --to plans@tripit.com --subject "Flight confirmation" --body "$BODY"
```

## Field Reference

See [references/template-format.md](references/template-format.md) for the complete field list for each object type, including required vs optional fields and formatting rules.

## Supported Object Types

| Type | Command | Key Required Fields |
|------|---------|-------------------|
| Flight | `flight` | airline, flight_number, departure/arrival airport+date+time |
| Hotel | `hotel` | hotel_name, checkin_date, checkout_date |
| Activity | `activity` | activity_name, start_date |
| Car Rental | `car` | rental_company, pickup_date, dropoff_date |
| Rail | `rail` | carrier, departure/arrival date+time |
| Multiple | `multi` | Each item needs `type` + that type's required fields |

## Verifying Items Landed

After sending an email, confirm TripIt processed it by fetching the user's **iCal feed**:

1. The user provides their TripIt iCal URL (found at **TripIt → Settings → Calendar Feed**), e.g.:
   `https://www.tripit.com/feed/ical/private/<hash>/tripit.ics`
2. Fetch the feed and look for the newly added item (match on confirmation number, dates, or summary text)
3. If the item doesn't appear after ~60 seconds, check:
   - Was the sender email linked to the TripIt account?
   - Was the email sent as plain text (not HTML)?
   - Were all required fields present?

```bash
# Fetch and search the feed for a confirmation number
curl -s "https://www.tripit.com/feed/ical/private/<hash>/tripit.ics" \
  | grep -A5 "UA1234X"
```

**Tip:** Store the user's iCal feed URL so you can verify future sends without asking again. The URL is stable — it doesn't change unless the user regenerates it.

## Gotchas

- **Date format consistency**: Use one format per email (ISO 8601 recommended: `2026-03-15`)
- **Sender email must be linked**: TripIt ignores emails from unrecognized addresses
- **Plain text only**: Send as plain text, not HTML
- **Multi-line fields**: End with `***` on its own line (e.g., long notes or cancellation policies)
- **Processing time**: TripIt usually processes within seconds, occasionally up to a few minutes
- **Duplicates**: TripIt deduplicates by confirmation number — re-sending updates the existing entry
- **Field labels matter**: TripIt's parser is strict about label names. This script uses the exact labels from TripIt's official vendor templates. Don't hand-craft emails with different labels (e.g., "Confirmation Number" won't work — it must be "Booking confirmation #")

Related Skills

---

3891
from openclaw/skills

name: article-factory-wechat

Content & Documentation

humanizer

3891
from openclaw/skills

Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.

Content & Documentation

find-skills

3891
from openclaw/skills

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

General Utilities

tavily-search

3891
from openclaw/skills

Use Tavily API for real-time web search and content extraction. Use when: user needs real-time web search results, research, or current information from the web. Requires Tavily API key.

Data & Research

baidu-search

3891
from openclaw/skills

Search the web using Baidu AI Search Engine (BDSE). Use for live information, documentation, or research topics.

Data & Research

agent-autonomy-kit

3891
from openclaw/skills

Stop waiting for prompts. Keep working.

Workflow & Productivity

Meeting Prep

3891
from openclaw/skills

Never walk into a meeting unprepared again. Your agent researches all attendees before calendar events—pulling LinkedIn profiles, recent company news, mutual connections, and conversation starters. Generates a briefing doc with talking points, icebreakers, and context so you show up informed and confident. Triggered automatically before meetings or on-demand. Configure research depth, advance timing, and output format. Walking into meetings blind is amateur hour—missed connections, generic small talk, zero leverage. Use when setting up meeting intelligence, researching specific attendees, generating pre-meeting briefs, or automating your prep workflow.

Workflow & Productivity

self-improvement

3891
from openclaw/skills

Captures learnings, errors, and corrections to enable continuous improvement. Use when: (1) A command or operation fails unexpectedly, (2) User corrects Claude ('No, that's wrong...', 'Actually...'), (3) User requests a capability that doesn't exist, (4) An external API or tool fails, (5) Claude realizes its knowledge is outdated or incorrect, (6) A better approach is discovered for a recurring task. Also review learnings before major tasks.

Agent Intelligence & Learning

botlearn-healthcheck

3891
from openclaw/skills

botlearn-healthcheck — BotLearn autonomous health inspector for OpenClaw instances across 5 domains (hardware, config, security, skills, autonomy); triggers on system check, health report, diagnostics, or scheduled heartbeat inspection.

DevOps & Infrastructure

linkedin-cli

3891
from openclaw/skills

A bird-like LinkedIn CLI for searching profiles, checking messages, and summarizing your feed using session cookies.

Content & Documentation

notebooklm

3891
from openclaw/skills

Google NotebookLM 非官方 Python API 的 OpenClaw Skill。支持内容生成(播客、视频、幻灯片、测验、思维导图等)、文档管理和研究自动化。当用户需要使用 NotebookLM 生成音频概述、视频、学习材料或管理知识库时触发。

Data & Research

小红书长图文发布 Skill

3891
from openclaw/skills

## 概述

Content & Documentation