TrailSnap (行影集) | AI-Powered open-source photo album for travel & life memories.(AI赋能的开源相册工具,珍藏旅行与生活点滴)
$ npx -y skills add LC044/TrailSnap --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
Repo: LC044/TrailSnap
What's inside
English | 中文
TrailSnap 是一个智能化的 AI 相册应用,致力于帮助用户轻松记录、整理和回顾自己的出行经历。通过强大的 AI 处理能力,让每一张照片和每一段旅程都成为值得珍藏的记忆。
未来每个人(至少每个家庭)都有一个属于自己的 AI 数据中心,而相册是数据中心的一个重要数据来源,它留存了你生活中的很多瞬间,TrailSnap 致力于将这些瞬间转化为有价值的记忆,它可以帮你默默地记录下相册里的车票、景点门票,可以帮你记录旅行中的所见所闻,可以帮你自动整理出可以发朋友圈的照片(甚至帮你准备好文案),可以帮你剪一段15s的短视频······。
把旅行从"拍过"变成"可回味、可分享、可沉淀"。TrailSnap 想做的,正是让每一段出行都值得珍藏。
所以,我给这个项目命名为 《行影集》,在这里你的数据才 "真正属于你"。
🎉 在线体验:不想自己部署?可以直接访问演示站体验完整功能 👉 https://demo.siyuan.ink(账号 / 密码均为
trailsnap)

| 功能 | 实现情况 | 描述 |
|---|---|---|
| Agent | √ | 与AI大模型进行对话,一键生成旅行日记 |
| cli | √ | 提供命令行界面,方便AI操作 |
| SKILL | √ | 支持接入OpenClaw、Claude Code等平台,实现自动任务执行 |
| 车票识别 | √ | 支持识别照片中的火车票和行程单,自动提取行程信息 |
| 年度报告 | √ | 自动生成2025年的出行统计报告,包括照片墙、出行城市、出行景点、行程时间轴、线路里程等 |
| AI分析 | √ | 使用大模型分析照片内容,生成描述和评分,做成电子画廊 |
| 那年今日 | √ | 查看往年今天的照片,按图片评分排序、自动播放往年值得回忆的照片 |
| 旅行日志 | 待开发 | 支持用户手动输入或 AI 识别出的行程信息,生成旅行日志 |
| 点亮的城市 | √ | 查看所有上传的照片中出现的城市,点击城市可以查看该城市的所有照片 |
| 去过的景区 | √ | 统计去过的5A级景区,点击景区可以查看该景区的所有照片,也可以自定义景区位置,自动筛选在景区范围内的照片 |
| 添加外部文件夹 | √ | 可以添加外部文件夹作为数据源,TrailSnap 会自动扫描并索引其中的照片和视频 |
| live photo | √ | 支持iphone、vivo、oppo、小米等手机型号 |
| 时间轴 | √ | 丝滑的时间轴滚动效果 |
| 足迹相册 | √ | 可以在地图上查看所有上传的照片,点击照片可以查看详情,也可以按省、市、区单独查看(支持列表视图、地图视图、时间轴视图、轨迹视图) |
| 人脸识别 | √ | 支持识别照片中的人物,自动添加人物标签 |
| 场景智能分类 | √ | 支持根据照片中的场景自动分类,例如:夜景、宠物、美食、自拍等 |
| 智能搜索 | √ | 支持根据照片中的人物、画面内容、时间等进行搜索 |
| 标签 | √ | 支持手动添加和删除标签,也可以根据 AI 识别结果自动添加标签 |
| 条件相册 | √ | 支持根据标签、场景、人物、地点等条件筛选照片,生成自定义相册 |
| 智能相册 | √ | 支持根据照片中的内容自动生成相册,例如:"我和女朋友在海边的自拍"等 |
2025 相册年度报告

TrailSnap 提供一键安装脚本,自动完成 Docker 安装、镜像加速配置和服务部署。
Linux / macOS / WSL2:
curl -fsSL https://trailsnap.cn/install.sh | bash
Windows PowerShell:
irm https://trailsnap.cn/install.ps1 | iex
更多用法(非交互模式、GPU 加速、自定义端口等)请参考 安装文档。
确保已安装 Docker 和 Docker Compose。
docker-compose
docker-compose.yml 配置文件(注意修改挂载路径为本地路径,不然无法扫描本地照片目录),具体可以参考 TrailSnap 文档 :
version: '3.8'
services:
postgres:
image: siyuan044/pgvector:pg18-trixie
container_name: postgres_container
restart: always
environment:
TZ: Asia/Shanghai
POSTGRES_DB: trailsnap
POSTGRES_USER: trailsnap
POSTGRES_PASSWORD: trailsnap
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --lc-collate=C --lc-ctype=C"
PGDATA: /var/lib/postgresql/data/pgdata
networks: [ app-network ]
ports:
- "5532:5432"
volumes:
- ./pg_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U trailsnap -d trailsnap -p 5432"]
interval: 5s
timeout: 5s
retries: 5
start_period: 10s
server:
image: siyuan044/trailsnap-server:latest
restart: always
expose: [ "8000" ]
ports: [ "8800:8000" ]
networks: [ app-network ]
volumes:
- ./data:/app/data # 挂载数据目录
- F:\Photos:/app/Photos/ # 挂载本地照片目录
environment:
- TZ=Asia/Shanghai
- DB_URL=postgresql://trailsnap:trailsnap@postgres:5432/trailsnap
- RAILWAY_DB_URL=postgresql://trailsnap:trailsnap@postgres:5432/railway
- AI_API_URL=http://ai:8001
depends_on:
postgres:
condition: service_healthy
ai:
image: siyuan044/trailsnap-ai:latest
restart: always
stop_grace_period: 15s
expose: [ "8001" ]
ports: [ "8801:8001" ]
networks: [ app-network ]
volumes:
- ./data:/app/data # 挂载数据目录
environment:
- TZ=Asia/Shanghai
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8001/health-check', timeout=3)"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
frontend:
image: siyuan044/trailsnap-frontend:latest
restart: always
ports: [ "8082:80" ]
depends_on: [ server ]
networks: [ app-network ]
environment:
- TZ=Asia/Shanghai
networks:
app-network:
driver: bridge
docker-compose up -d
源码部署
更多详细技术文档请参阅 TrailSnap 文档
本项目90%以上的代码由AI生成
欢迎提交 Pull Request!请阅读 贡献指南 了解开发环境设置、代码规范和提交流程。
.github/
ISSUE_TEMPLATE/
bug_report.yml
feature_request.yml
improvement_suggestion.yml
pull_request_template.md
workflows/
build-mobile-app.yml
build-publish-cli.yml
docker-build-push-ai.yml
docker-build-push-frontend.yml
docker-build-push-server.yml
sync-pgvector.yml
tests.yml
.gitignore
AGENTS.md
CLAUDE.md
CONTRIBUTING.md
doc/
ai_service_issues.md
architecture_design.md
backend_analysis.md
developer_guide.md
e2e-test-checklist.md
frontend_analysis.md
guess_city_game_design.md
image/
demo.png
homepage.png
QQ1.jpg
年度报告.jpg
plan/
2026-06-21.md
2026-06-22.md
2026-06-23.md
2026-06-24.md
2026-06-25.md
2026-06-26.md
2026-06-27-2.md
2026-06-27.md
2026-06-28.md
2026-06-29.md
2026-06-30.md
prompt/
2025-01-09.md
2026-06-28.md
task_manager_design.md
task_module_issues.md
user_guide.md
docker-compose/
docker-compose.yml
docker-compose-pg.yml
LICENSE
package/
ai/
.dockerignore
.gitignore
.python-version
app/
config.py
core/
logger.py
data/
categories.json
railway_station.json
routers/
ai_config.py
embedding.py
emotion.py
face.py
image_classification.py
llm.py
object_detection.py
ocr.py
system.py
tickets.py
services/
ai_config_manager.py
embedding_service.py
emotion_service.py
face_service.py
fly_ticket_parser.py
image_classification_service.py
llm_manager.py
model_downloader.py
model_manager.py
ocr_service.py
onnx_providers.py
ticket_parser.py
ticket_service.py
Dockerfile
Dockerfile.gpu
Dockerfile.openvino
main.py
pyproject.toml
README.md
tests/
conftest.py
perf/
__init__.py
endpoints.py
README.md
run_all.py
run_classification.py
run_embedding_image.py
run_embedding_text.py
run_emotion.py
run_face.py
run_ocr.py
run_tickets.py
runner.py
test_ai_config_manager.py
test_ai_config_router.py
test_embedding_router.py
test_embedding_service.py
test_emotion_router.py
test_emotion_service.py
test_env.py
test_face_router.py
test_face_service.py
test_fly_ticket_parser.py
test_image_classification_router.py
test_image_classification_service.py
test_llm_manager.py
test_llm_router.py
test_model_downloader.py
test_model_manager.py
test_object_detection_router.py
test_ocr_router.py
test_ocr_service.py
test_onnx_providers.py
test_patch_check.py
test_system_router.py
test_ticket_parser.py
test_ticket_service.py
test_tickets_router.py
uv.lock
official-site/
.gitignore
.vitepress/
config.mts
theme/
components/
CliPage.vue
Comments.vue
Home.vue
index.ts
style/
blur.css
custom-block.css
navbar.css
sidebarIcon.css
style.css
vp-code-group.css
vp-code.css
cli.md
docs/
blog/
feature-scan.md
index.md
dev/
ai_service.md
architecture.md
backend.md
feature-proposals.md
frontend.md
guide.md
prompt/
0.2.0.md
0.2.2.md
0.2.3.md
0.3.0.md
0.3.1.md
0.3.10.md
0.3.2.md
0.3.3.md
0.3.6.md
0.3.8.md
0.3.9.md
0.6.0.md
2025-12-25.md
2026-01-07.md
2026-01-24.md
index.md
official_website_design.md
task_manager.md
guide/
agent/
claudecode.md
image.png
index.md
openclaw.md
trailsnap-cli.md
changelog.md
data-safety.md
demo.md
docker/
fnos.md
index.md
ugreen.md
windows.md
zspace.md
features.md
feedback.md
install.md
mobile-app.md
overview.md
preflight.md
questions.md
settings/
aisetting.md
directories.md
index.md
mapsetting.md
tokensetting.md
user.md
en/
cli.md
docs/
blog/
feature-scan.md
index.md
dev/
ai_service.md
architecture.md
backend.md
feature-proposals.md
frontend.md
guide.md
prompt/
0.2.0.md
0.2.2.md
0.2.3.md
0.3.0.md
0.3.1.md
0.3.10.md
0.3.2.md
0.3.3.md
0.3.6.md
0.3.8.md
0.3.9.md
2025-12-25.md
2026-01-07.md
2026-01-24.md
index.md
official_website_design.md
task_manager.md
guide/
agent/
claudecode.md
index.md
openclaw.md
trailsnap-cli.md
changelog.md
data-safety.md
demo.md
docker/
fnos.md
index.md
ugreen.md
windows.md
zspace.md
features.md
feedback.md
install.md
mobile-app.md
overview.md
preflight.md
questions.md
settings/
aisetting.md
directories.md
index.md
mapsetting.md
tokensetting.md
user.md
index.md
index.md
package.json
pnpm-lock.yaml
postcss.config.js
public/
public_headers
demo.jpg
examples/
images/
hero-huizhou.jpg
huangshan-firework.jpg
huangshan-fish-lamp.jpg
huangshan-lanterns.jpg
jingdezhen-ceramics.jpg
jingdezhen-cups.jpg
jingdezhen-night-street.jpg
suzhou-garden-mist.jpg
suzhou-lantern.jpg
suzhou-pingjianglu.jpg
zhoushan-bridge-moon.jpg
zhoushan-seaside.jpg
zhoushan-sunrise.jpg
travel-diary-2025-golden-week.html
favicon.ico
icons/
bilibili.svg
document-open.svg
document.svg
douyin.svg
wechat.svg
xiaohongshu.svg
images/
AI-analyize.png
AI-narrative.jpg
aisettings.png
classification.jpeg
img_1.png
img.png
map-province.png
map.png
on-this-day.png
report.png
ScreenShot_2026-05-09_005142_617.png
tianditu.png
ticket-result.png
timeline.png
toolbox.jpg
toolbox.png
ugos-start.png
ugos.png
wechat_longscreenshot_2026-04-27_224237_662.jpg
火车票_郑州东_天津西_G1710_2026-12-12.png
install.md
install.ps1
install.sh
logo.svg
qq_group.jpg
qrcodes/
bilibili_qr.png
douyin_qr.png
wechat_qr.jpg
xiaohongshu_qr.jpg
version.json
README.md
tailwind.config.js
tsconfig.json
server/
.dockerignore
.gitignore
.python-version
alembic/
alembic.ini
env.py
README.md
script.py.mako
versions/
06ce8a56658b_0010_add_users_table.py
092372eeb240_0016_add_index.py
0a3b98f751d6_0007_add_face_foreign.py
32c8db0997a8_0025_add_nickname_and_avatar_to_user.py
332ee902efb6_0002_add_maker_model_metadata.py
33e5bc9135d0_0026_add_notifications_table.py
351912b2c1be_0014_add_agent_sessions.py
3bceb4cf5cb0_0019_add_reasoning_.py
441989688cbf_0018_add_md5_to_photo.py
522f0c6de59e_0022_add_foreignkey_for_photo_id.py
56469698510b_0017_add_task_indexes.py
802490a6bc41_0001_init.py
8a99de383ac5_0004_add_ticket_photoid.py
9136754cc2a3_0003_add_scene_table.py
96354f1896be_0011_add_shared_albums.py
9d99204b4d54_0012_add_image_descriptions.py
9f2944ccd13d_0006_add_flight_tickets_table.py
a065d6d8e0e3_0008_add_face.py
a356eea37cbc_0013_add_cluster_tables.py
b21a07c0b227_0023_add_cover_id_to_tag.py
b3db8760aba9_0005_add_is_custom_to_scenes.py
b802bd9b9d3b_0009_drop_users.py
c7e91f3a2b04_0024_add_photo_colors_table.py
e1a5f7c9d3b1_0027_add_moment_day_captions.py
eb64391bffef_0021_add_index_for_metadata.py
f0a995211c59_0020_add_soft_delete.py
f123456789ab_0015_add_agent_tokens.py
app/
__init__.py
api/
agent_token.py
agent.py
album.py
annual_report.py
auth.py
classification.py
deps.py
face.py
flight_ticket.py
guess_city.py
index.py
location_stats.py
location.py
login.py
media.py
metadata.py
moment.py
... 984 moreFAQ
trailsnap is a Claude Code plugin with 1 hand-picked skill for automation work, indexed on Flowy. Install it with the command on its page. It includes trailsnap-cli. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.