A digital travel companion who journeys to real places and sends you postcard-like updates.
data/.env with GEMINI_API_KEY=...)google-genai, jinja2, Pillow, python-dotenv (install via pip install -r requirements.txt)There are three phases: Onboarding → Trip Planning → Traveling (automated).
If data/persona.json does not exist or has an empty basic_info.name, the companion hasn't been created yet. Collect the following information from the user:
After collecting all information, create the persona file:
python -c "
import json, os
os.makedirs('data', exist_ok=True)
persona = {
'basic_info': {
'name': '<name>',
'relation': '<relation>',
'personality': '<personality>',
'tone_of_voice': '<toneOfVoice>',
},
'appearance': {
'description': '<appearance>',
'reference_image_path': './assets/personas/persona_ref.png',
},
}
with open('data/persona.json', 'w', encoding='utf-8') as f:
json.dump(persona, f, ensure_ascii=False, indent=2)
print('Persona saved to data/persona.json')
"
Then ask the user to upload a reference photo and save it to assets/personas/persona_ref.png.
Ask the user: "Where should {name} go next?"
Accept a destination suggestion, then generate the itinerary:
python $CLAUDE_SKILL_DIR/scripts/generate_itinerary.py <destination> [--origin <city>] [--days <num>]
Show the generated itinerary to the user and ask for confirmation. Once confirmed, proceed to Phase 3.
Start the heartbeat loop:
/loop 15m !`python $CLAUDE_SKILL_DIR/scripts/run_cron.py`
The loop runs run_cron.py every 15 minutes. It automatically:
The state machine rules (from references/state_machine.md):
python $CLAUDE_SKILL_DIR/scripts/run_cron.py --check-only
When all nodes are COMPLETED, stop the loop:
/loop stop
Tell the user the trip is over and ask if they'd like to plan a new one.
If you need to generate a postcard for a specific node:
python $CLAUDE_SKILL_DIR/scripts/generate_post.py <node_id>
Then render it with the template:
python $CLAUDE_SKILL_DIR/scripts/render_output.py --context '<json_context>'
$CLAUDE_SKILL_DIR/scripts/$CLAUDE_SKILL_DIR/templates/data/ (itinerary.json, persona.json)assets/generated/共 1 个版本