{"id":28249782,"url":"https://github.com/lc044/trailsnap","last_synced_at":"2026-04-18T12:06:01.993Z","repository":{"id":326055131,"uuid":"981223380","full_name":"LC044/TrailSnap","owner":"LC044","description":"行影集——你的私人AI智能相册","archived":false,"fork":false,"pushed_at":"2026-04-16T17:05:43.000Z","size":41088,"stargazers_count":349,"open_issues_count":9,"forks_count":49,"subscribers_count":8,"default_branch":"master","last_synced_at":"2026-04-16T19:10:51.727Z","etag":null,"topics":["ai","album","photo"],"latest_commit_sha":null,"homepage":"https://trailsnap.cn/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LC044.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-10T16:06:38.000Z","updated_at":"2026-04-16T17:05:46.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/LC044/TrailSnap","commit_stats":null,"previous_names":["lc044/trailsnap"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/LC044/TrailSnap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LC044%2FTrailSnap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LC044%2FTrailSnap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LC044%2FTrailSnap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LC044%2FTrailSnap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LC044","download_url":"https://codeload.github.com/LC044/TrailSnap/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LC044%2FTrailSnap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31967999,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","album","photo"],"created_at":"2025-05-19T13:15:54.038Z","updated_at":"2026-04-18T12:06:01.986Z","avatar_url":"https://github.com/LC044.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://github.com/LC044/TrailSnap/stargazers\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/stars/LC044/TrailSnap.svg\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://trailsnap.cn/\" target=\"_blank\"\u003e\n        \u003cimg alt=\"GitHub forks\" src=\"https://img.shields.io/github/forks/LC044/TrailSnap?color=eb6ea5\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://trailsnap.cn/\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/TrailSnap-行影集-blue.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://trailsnap.cn/\"\u003e\n        \u003cimg alt=\"Hits\" src=\"https://hits.b3log.org/LC044/trailsnap.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://trailsnap.cn/\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/license/LC044/TrailSnap\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/LC044/TrailSnap/releases\" target=\"_blank\"\u003e\n        \u003cimg alt=\"GitHub release (with filter)\" src=\"https://img.shields.io/github/v/release/LC044/TrailSnap\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://trailsnap.cn/\" target=\"_blank\"\u003e\n      \u003cimg alt=\"Docker Pulls\" src=\"https://img.shields.io/docker/pulls/siyuan044/trailsnap-frontend?color=3eb370\"\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\n\n\u003e TrailSnap 是一个智能化的 AI 相册应用，致力于帮助用户轻松记录、整理和回顾自己的出行经历。通过强大的 AI 处理能力，让每一张照片和每一段旅程都成为**值得珍藏的记忆**。\n\u003e\n\u003e 未来每个人（至少每个家庭）都有一个属于自己的 AI 数据中心，而相册是数据中心的一个重要数据来源，它留存了你生活中的很多瞬间，TrailSnap 致力于将这些瞬间转化为有**价值的记忆**，它可以帮你默默地记录下相册里的车票、景点门票，可以帮你**记录旅行中的所见所闻**，可以帮你自动整理出可以发朋友圈的照片（甚至帮你准备好文案），可以帮你剪一段15s的短视频······。\n\u003e\n\u003e 所以，我给这个项目命名为 **《行影集》**，在这里你的数据才 “真正属于你”。\n\n\u003cbr/\u003e\n  \u003ca href=\"https://trailsnap.cn\"\u003e\n    \u003cimg src=\"doc/image/demo.png\" title=\"Main Screenshot\"\u003e\n  \u003c/a\u003e\n\u003cbr/\u003e\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| **车票识别** | √ | 支持识别照片中的火车票和行程单，自动提取行程信息。                                         |\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- [ ] 支持回收站功能，用户可以恢复已删除的照片。\n- [ ] 支持定期扫描外部文件夹，自动更新照片。\n- [ ] 支持MCP协议，用户可以通过MCP协议与TrailSnap进行通信。\n- [ ] 支持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### docker一键启动\n\n1. 确保已安装 Docker 和 Docker Compose。\n\n2. docker-compose\n\ndocker-compose.yml 配置文件（注意修改挂载路径为本地路径，不然无法扫描本地照片目录）\n```yml\nversion: '3.8'\n\nservices:\n  postgres:\n    image: pgvector/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    ports:\n      - \"5532:5432\"\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    ports: [ \"8800: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    depends_on:\n      postgres:\n        condition: service_healthy\n        restart: true\n\n  ai:\n    image: siyuan044/trailsnap-ai:latest\n    restart: always\n    expose: [ \"8001\" ]\n    ports: [ \"8801:8001\" ]\n    networks: [ app-network ]\n    volumes:\n      - ./data:/app/data        # 挂载数据目录\n    environment:\n      - TZ: Asia/Shanghai\n\n  frontend:\n    image: siyuan044/trailsnap-frontend:latest\n    restart: always\n    ports: [ \"8082: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[源码部署](http://localhost:5173/docs/dev/guide.html)\n\n\n## 📂 目录结构\n\n```\nTrailSnap/\n├── package/\n│   ├── server/      # 后端 FastAPI 服务\n│   └── website/     # 前端 Vue 应用\n│   └── ai/          # AI 微服务 (OCR/Face)\n├── doc/             # 项目技术文档\n└── ...\n```\n\n## 📚 文档\n\n更多详细技术文档请参阅 `doc/` 目录（文档更新不及时，仅供参考使用）：\n- [架构设计文档](doc/architecture_design.md)\n- [前端框架分析](doc/frontend_analysis.md)\n- [后端框架分析](doc/backend_analysis.md)\n- [开发者文档](doc/developer_guide.md)\n- [用户指南](doc/user_guide.md)\n\n## 🔍 其他\n\n### QQ交流群\n\n\u003cimg src=\"./doc/image/QQ1.jpg\" alt=\"QQ交流群\" width=\"200px\"\u003e\n\n### 相关项目\n\n- [InkTime](https://github.com/dai-hongtao/InkTime) InkTime 是一个可自托管的墨水屏电子相框。它用AI分析你的照片库，按值得回忆度打分，并按“历史上的今天”自动生成每日最具回忆价值的照片，让沉睡的记忆重新被看见。\n\n\n## 🌟 Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=LC044/TrailSnap\u0026type=Date)](https://star-history.com/?utm_source=bestxtools.com#LC044/TrailSnap\u0026Date)\n\n## 🤝贡献者\n\n\u003ca href=\"https://github.com/lc044/TrailSnap/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=lc044/TrailSnap\" /\u003e\n\u003c/a\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flc044%2Ftrailsnap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flc044%2Ftrailsnap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flc044%2Ftrailsnap/lists"}