{"id":"9dd9a9b4-9c1d-411d-82a5-1f6b12a4112b","slug":"trailsnap","kind":"skill","name":"TrailSnap","summary":"TrailSnap (行影集) | AI-Powered open-source photo album for travel & life memories.（AI赋能的开源相册工具，珍藏旅行与生活点滴）","owner":"LC044","repoUrl":"https://github.com/LC044/TrailSnap","license":"AGPL-3.0","licenseTier":"strong-copyleft","trust":"community","stars":792,"match":null,"fewStars":false,"format":"skill","createdAt":"2025-05-10T16:06:38.000Z","addedAt":"2026-10-14T06:02:15.046Z","logoUrl":"https://avatars.githubusercontent.com/u/95485601?u=a8d780d2fca71e6b5b1bebfbd8f17baaddb8d049&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["design-media"],"tags":["album","photo","ai","agent","clip","skill-md","yolo"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-17T06:06:36.072Z","sample":false,"url":"https://conduits.dev/tools/trailsnap","language":"Python","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<div align=\"center\">\n    <a href=\"https://github.com/LC044/TrailSnap/stargazers\">\n        <img src=\"https://img.shields.io/github/stars/LC044/TrailSnap.svg\" />\n    </a>\n    <a href=\"https://trailsnap.cn/\" target=\"_blank\">\n        <img alt=\"GitHub forks\" src=\"https://img.shields.io/github/forks/LC044/TrailSnap?color=eb6ea5\">\n    </a>\n    <a href=\"https://atomgit.com/LC044/TrailSnap\" target=\"_blank\">\n      <img alt=\"Docker Pulls\" src=\"https://atomgit.com/LC044/TrailSnap/star/badge.svg\">\n    </a>\n    <!-- <a href=\"https://trailsnap.cn/\" target=\"_blank\">\n        <img src=\"https://img.shields.io/badge/TrailSnap-行影集-blue.svg\">\n    </a> -->\n    <a target=\"_blank\" href=\"https://trailsnap.cn/\">\n        <img alt=\"Hits\" src=\"https://hits.b3log.org/LC044/trailsnap.svg\">\n    </a>\n    <a href=\"https://trailsnap.cn/\" target=\"_blank\">\n        <img src=\"https://img.shields.io/github/license/LC044/TrailSnap\" />\n    </a>\n    <a href=\"https://github.com/LC044/TrailSnap/releases\" target=\"_blank\">\n        <img alt=\"GitHub release (with filter)\" src=\"https://img.shields.io/github/v/release/LC044/TrailSnap\">\n    </a>\n    <a href=\"https://trailsnap.cn/\" target=\"_blank\">\n      <img alt=\"Docker Pulls\" src=\"https://img.shields.io/docker/pulls/siyuan044/trailsnap-frontend?color=3eb370\">\n    </a>\n    <!-- 下载量 -->\n    <a href=\"https://github.com/LC044/TrailSnap/releases\" target=\"_blank\">\n      <img alt=\"Downloads\" src=\"https://img.shields.io/github/downloads/LC044/TrailSnap/total.svg\">\n    </a>\n\n[English](doc/README_en.md) | **中文**\n\n</div>\n\n> TrailSnap 是一个智能化的 AI 相册应用，致力于帮助用户轻松记录、整理和回顾自己的出行经历。通过强大的 AI 处理能力，让每一张照片和每一段旅程都成为**值得珍藏的记忆**。\n>\n> 未来每个人（至少每个家庭）都有一个属于自己的 AI 数据中心，而相册是数据中心的一个重要数据来源，它留存了你生活中的很多瞬间，TrailSnap 致力于将这些瞬间转化为有**价值的记忆**，它可以帮你默默地记录下相册里的车票、景点门票，可以帮你**记录旅行中的所见所闻**，可以帮你自动整理出可以发朋友圈的照片（甚至帮你准备好文案），可以帮你剪一段15s的短视频······。\n>\n> 把旅行从\"拍过\"变成\"可留念、可展示、可分享\"。TrailSnap 做的，是让每一段出行都值得珍藏。\n>\n> 所以，我给这个项目命名为 **《行影集》**，在这里你的数据才 \"真正属于你\"。\n\n<br/>\n  <a href=\"https://trailsnap.cn\">\n    <img src=\"doc/image/demo.png\" title=\"Main Screenshot\">\n  </a>\n<br/>\n\n> 🎉 **在线体验**：不想自己部署？可以直接访问演示站体验完整功能 👉 **[https://demo.siyuan.ink](https://demo.siyuan.ink)**（账号 / 密码均为 `trailsnap`）\n\n## ✨ 核心特色\n\n- **📷 智能相册**: 足迹地图、人物识别、智能分类、OCR识别、智能搜索。\n- **🚆 行程记录**: 特有的火车票、行程、景区/演唱会门票管理功能，自动识别票据信息。\n- **🤖 AI 赋能**: 一句话让AI帮你生成旅行日记。\n  - AI自动剪视频生成VLOG（待开发）\n  - AI修图，自动识别高质量照片（待开发）\n\n![homepage](doc/image/homepage.png)\n\n## 🧭 功能概览\n\n| 功能 | 实现情况 | 描述                                                                |\n| --- | --- |-------------------------------------------------------------------|\n| **Agent**| √ | 与AI大模型进行对话，一键生成旅行日记                                             |\n| **cli** | √ | 提供命令行界面，方便AI操作 |\n| **SKILL** | √ | 支持接入OpenClaw、Claude Code等平台，实现自动任务执行                                 |\n| **车票识别** | √ | 支持识别照片中的火车票和行程单，自动提取行程信息                                         |\n| **年度报告** | √ | 自动生成2025年的出行统计报告，包括照片墙、出行城市、出行景点、行程时间轴、线路里程等                     |\n| **AI分析** | √ | 使用大模型分析照片内容，生成描述和评分，做成电子画廊                                       |\n| **那年今日** | √ | 查看往年今天的照片，按图片评分排序、自动播放往年值得回忆的照片                                  |\n| **旅行日志** | √ | 支持用户手动输入或 AI 识别出的行程信息，生成旅行日志                                     |\n| **点亮的城市** | √ | 查看所有上传的照片中出现的城市，点击城市可以查看该城市的所有照片                                 |\n| **去过的景区** | √ | 统计去过的5A级景区，点击景区可以查看该景区的所有照片，也可以自定义景区位置，自动筛选在景区范围内的照片             |\n| 添加外部文件夹 | √ | 可以添加外部文件夹作为数据源，TrailSnap 会自动扫描并索引其中的照片和视频                        |\n| live photo | √ | 支持iphone、vivo、oppo、小米等手机型号                                        |\n| **时间轴** | √ | 丝滑的时间轴滚动效果                                                       |\n| 足迹相册 | √ | 可以在地图上查看所有上传的照片，点击照片可以查看详情，也可以按省、市、区单独查看（支持列表视图、地图视图、时间轴视图、轨迹视图） |\n| 人脸识别 | √ | 支持识别照片中的人物，自动添加人物标签                                              |\n| 场景智能分类 | √ | 支持根据照片中的场景自动分类，例如：夜景、宠物、美食、自拍等                                   |\n| 智能搜索 | √ | 支持根据照片中的人物、画面内容、时间等进行搜索                                          |\n| 标签 | √ | 支持手动添加和删除标签，也可以根据 AI 识别结果自动添加标签                                  |\n| 条件相册 | √ | 支持根据标签、场景、人物、地点等条件筛选照片，生成自定义相册                                   |\n| 智能相册 | √ | 支持根据照片中的内容自动生成相册，例如：\"我和女朋友在海边的自拍\"等                               |\n\n### Todo List\n\n- [x] 支持回收站功能，用户可以恢复已删除的照片。\n- [x] 支持MCP协议，用户可以通过MCP协议与TrailSnap进行通信。\n- [x] 支持skills，可以接入OpenClaw、Claude Code等平台。\n- [ ] 更丰富的行程管理功能，例如：支持演唱会门票、景区门票、酒店订单、电影票等。\n- [ ] 更全面的AI能力，例如：支持AI自动剪视频生成VLOG、支持AI修图，AI生成旅行日记等。\n\n## 2025 年度报告\n\n2025 相册年度报告\n\n[查看预览版](https://siyuan.ink/annual-report)\n\n![年度报告](./doc/image/年度报告.jpg)\n\n## 🚀 快速开始\n\n其他问题请查看软件官网：[https://trailsnap.cn](https://trailsnap.cn/)\n\n### 桌面端安装包（最简单）\n\n前往 [Releases](https://github.com/LC044/TrailSnap/releases) 页面，下载对应平台的安装包并安装即可。\n\n### Docker部署一键安装脚本\n\nTrailSnap 提供一键安装脚本，自动完成 Docker 安装、镜像加速配置和服务部署。\n\n**Linux / macOS / WSL2：**\n\n```bash\ncurl -fsSL https://trailsnap.cn/install.sh | bash\n```\n\n**Windows PowerShell：**\n\n```powershell\nirm https://trailsnap.cn/install.ps1 | iex\n```\n\n更多用法（非交互模式、GPU 加速、自定义端口等）请参考 [安装文档](https://trailsnap.cn/docs/guide/install.html)。\n\n### Docker 手动部署\n\n1. 确保已安装 Docker 和 Docker Compose。\n\n2. docker-compose\n\ndocker-compose.yml 配置文件（注意修改挂载路径为本地路径，不然无法扫描本地照片目录），具体可以参考 [TrailSnap 文档](https://trailsnap.cn/docs/guide/install.html) ：\n\n```yml\nversion: '3.8'\n\nservices:\n  postgres:\n    image: siyuan044/pgvector:pg18-trixie\n    container_name: postgres_container\n    restart: always\n    environment:\n      TZ: Asia/Shanghai\n      POSTGRES_DB: trailsnap\n      POSTGRES_USER: trailsnap\n      POSTGRES_PASSWORD: trailsnap\n      POSTGRES_INITDB_ARGS: \"--encoding=UTF8 --lc-collate=C --lc-ctype=C\"\n      PGDATA: /var/lib/postgresql/data/pgdata\n    networks: [ app-network ]\n    volumes:\n      - ./pg_data:/var/lib/postgresql/data\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U trailsnap -d trailsnap -p 5432\"]\n      interval: 5s\n      timeout: 5s\n      retries: 5\n      start_period: 10s\n\n  server:\n    image: siyuan044/trailsnap-server:latest\n    restart: always\n    expose: [ \"8000\" ]\n    networks: [ app-network ]\n    volumes:\n      - ./data:/app/data        # 挂载数据目录\n      - F:\\Photos:/app/Photos/  # 挂载本地照片目录\n    environment:\n      - TZ=Asia/Shanghai\n      - DB_URL=postgresql://trailsnap:trailsnap@postgres:5432/trailsnap\n      - RAILWAY_DB_URL=postgresql://trailsnap:trailsnap@postgres:5432/railway\n      - AI_API_URL=http://ai:8001\n      - TRAILSNAP_ROOT_PATH=/api\n      # 改为当前主机的局域网地址后，App 可自动发现此实例\n      - TRAILSNAP_PUBLIC_URL=http://192.168.1.10:3180\n    depends_on:\n      postgres:\n        condition: service_healthy\n\n  ai:\n    image: siyuan044/trailsnap-ai:latest\n    restart: always\n    stop_grace_period: 15s\n    expose: [ \"8001\" ]\n    networks: [ app-network ]\n    volumes:\n      - ./data:/app/data        # 挂载数据目录\n    environment:\n      - TZ=Asia/Shanghai\n    healthcheck:\n      test: [\"CMD\", \"python\", \"-c\", \"import urllib.request; urllib.request.urlopen('http://127.0.0.1:8001/health-check', timeout=3)\"]\n      interval: 30s\n      timeout: 5s\n      retries: 3\n      start_period: 30s\n\n  frontend:\n    image: siyuan044/trailsnap-frontend:latest\n    restart: always\n    # 唯一需要对外开放的端口\n    ports: [ \"3180:80\" ]\n    depends_on: [ server ]\n    networks: [ app-network ]\n    environment:\n      - TZ=Asia/Shanghai\n\nnetworks:\n  app-network:\n    driver: bridge\n```\n\n3. 启动服务\n\n```bash\ndocker-compose up -d\n```\n\n### 源码部署\n\n[源码部署](https://trailsnap.cn/docs/dev/guide.html)\n\n## 📚 文档\n\n更多详细文档请参阅 [TrailSnap 文档](https://trailsnap.cn/docs/guide/install.html)\n\n## 🔍 其他\n\n### QQ交流群\n\n<img src=\"./doc/image/QQ1.jpg\" alt=\"QQ交流群\" width=\"200px\">\n\n### 微信交流群\n\n<a href=\"https://blog.siyuan.ink/static/img/62e0893d58c9d3a13e0c9add3bff7f79.clipboard-2026-09-11.webp\" target=\"_blank\">\n  <img src=\"https://blog.siyuan.ink/static/img/62e0893d58c9d3a13e0c9add3bff7f79.clipboard-2026-09-11.webp\" alt=\"微信交流群\" width=\"200px\">\n</a>\n\n### 致谢\n\n本项目90%以上的代码由AI生成\n\n- [TRAE](https://www.trae.ai/) 本来不打算做完整的相册，奈何AI太强了，于是开了10$套餐年卡，从此告别手写代码.如果你的AI写代码能力一般，可以参考一下我的[提示词](https://trailsnap.cn/docs/dev/prompt/2025-12-25.html)\n- [Claude Code](https://www.claude.ai/) 没钱用官方模型，用它来帮我提交代码，写写文档啥的\n- [豆包](https://www.doubao.com/) 满嘴胡话，但还是能提出建设性意见的\n- [ChatGPT](https://chat.openai.com/) 用于教豆包做AI\n- [InkTime](https://github.com/dai-hongtao/InkTime) InkTime 是一个可自托管的墨水屏电子相框。它用AI分析你的照片库，按值得回忆度打分，并按\"历史上的今天\"自动生成每日最具回忆价值的照片，让沉睡的记忆重新被看见\n\n## 🌟 Star History\n\n[![Star History Chart](https://star-history.dera.page/svg?repos=LC044/TrailSnap&type=Date)](https://star-history.dera.page/#LC044/TrailSnap&Date)\n\n## 🤝 贡献者\n\n<a href=\"https://github.com/lc044/TrailSnap/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=lc044/TrailSnap\" />\n</a>\n\n## 📖 贡献指南\n\n欢迎提交 Pull Request！请阅读 [贡献指南](CONTRIBUTING.md) 了解开发环境设置、代码规范和提交流程。\n"}