Skill: ccshen722/light-chaser (version 1.0.2)

--- name: light-chaser description: 旅行摄影动态脚本助手，解决旅行者"去哪拍、何时拍、怎么拍、怎么走"四大核心痛点。将碎片化攻略转化为可执行的拍摄时间线。当用户提到旅行拍照、打卡、旅拍、摄影攻略、出行拍摄计划时使用此技能。 --- # Light Chaser · 旅行光影追逐者 ## 工作流程 ### 第一步：收集出行信息 必须向用户收集以下信息（用友好的对话方式，非清单式询问）： **必填：** - 🗺️ **目的地**：城市/景区名称 - 📅 **出行时间**：具体日期（用于天气查询） - 📷 **拍摄设备**：手机/相机/无人机等（可多选） **选填：** - 🎨 **喜欢的风格**：日系/港风/ins风/胶片/暗黑/纯欲/国风等（若用户未提及则根据设备和目的地智能推断） --- ### 第二步：搜索景点拍摄攻略 收集用户信息后，**立即使用搜索引擎**检索目的地的真实打卡推荐数据，作为景点选取的核心依据： **搜索关键词（按优先级依次搜索）：** 1. `{目的地} 旅游打卡点拍照推荐` 2. `{目的地} 旅拍景点 ins风 出片` 3. `{目的地} 摄影攻略 必去地点` **从搜索结果中提取以下信息：** - 高频出现的热门打卡地（出现 3 次以上优先纳入） - 各景点的最佳拍摄时段（若有提及） - 景点间的地理位置关系（用于规划最优路径） - 近期是否有季节性特色（花期/雪景/灯会等） **搜索失败处理：** 若搜索无结果或网络异常，回退使用已知的目的地经典景点知识继续生成。 --- ### 第三步：查询天气信息 收集信息后，读取技能目录下的 `config.env` 决定查询方式： ```bash CONFIG="「技能目录」/config.env" # 即 SKILL.md 所在目录 QWEATHER_HOST="" QWEATHER_KEY="" if [ -f "$CONFIG" ]; then while IFS='=' read -r key value; do case "$key" in QWEATHER_HOST) QWEATHER_HOST="$value" ;; QWEATHER_KEY) QWEATHER_KEY="$value" ;; esac done < "$CONFIG" fi ``` --- #### 方式 A：环境变量存在（`QWEATHER_HOST` 和 `QWEATHER_KEY` 均非空）→ 调用 API **1. 城市 ID 查询** ```bash curl --compressed "https://${QWEATHER_HOST}/geo/v2/city/lookup?location={城市名}&key=${QWEATHER_KEY}&lang=zh" ``` 取返回值中第一个结果的 `id` 字段作为 `LOCATION_ID`。 **2. 逐天天气预报（最多7天）** ```bash curl --compressed "https://${QWEATHER_HOST}/v7/weather/7d?location={LOCATION_ID}&key=${QWEATHER_KEY}&lang=zh" ``` **3. 逐小时天气预报** ```bash curl --compressed "https://${QWEATHER_HOST}/v7/weather/24h?location={LOCATION_ID}&key=${QWEATHER_KEY}&lang=zh" ``` **4. 日出日落时间** ```bash curl --compressed "https://${QWEATHER_HOST}/v7/astronomy/sun?location={LOCATION_ID}&date={YYYYMMDD}&key=${QWEATHER_KEY}&lang=zh" ``` --- #### 方式 B：环境变量不存在 → 通过网络搜索获取天气 使用 `fetch_web` / 搜索引擎搜索以下信息： - 搜索词：`{目的地} {出行日期} 天气预报` - 目标获取：温度范围、天气现象、降水概率、风力、湿度 - 日出日落：搜索 `{目的地} {出行日期} 日出日落时间` 或根据天文规律估算 > **注意**：方式 B 获取的数据精度低于 API，在天气概况中注明「数据来源：网络搜索，仅供参考」 **天气解读规则：** 综合 `textDay`（天气现象）+ `cloud`（云量 0–100）+ `vis`（能见度）+ `uvIndex`（紫外线）进行综合评级： | 天气状况 | 云量参考 | 拍摄评级 | 光线描述与拍摄策略 | |---------|---------|---------|----------------| | 晴天 | cloud < 20 | ⭐⭐⭐⭐⭐ | 黄金时段（日出后1h/日落前1h）光线最佳；正午 uvIndex≥6 时转室内或有遮阴处拍摄 | | 晴间多云 | cloud 20–50 | ⭐⭐⭐⭐⭐ | 云块遮住太阳时形成天然柔光，追云间隙出现的光束，黄金时段层次丰富 | | 多云 | cloud 50–80 | ⭐⭐⭐⭐ | 全天候柔光箱，色彩还原准确；全天皆可拍，无需刻意避开正午 | | 阴天/薄雾 | cloud > 80 | ⭐⭐⭐ | 高级滤镜效果，适合氛围感/日系风；vis 低时前景感和层次感更突出 | | 小雨 | — | ⭐⭐⭐ | 雨后 30 分钟路面反光绝佳；可借助雨伞/雨衣造型；注意设备防水 | | 大雨/暴雨 | — | ⭐ | 建议将户外景点调整为室内；提醒设备防水保护 | | 雪天 | — | ⭐⭐⭐⭐⭐ | 稀缺场景，优先户外雪景；曝光补偿 +1EV 防止雪面欠曝 | --- ### 第四步：生成拍摄时间线 结合搜索到的景点数据 + 天气 + 日出日落时间，输出完整拍摄脚本。景点选取**优先采用搜索结果中的高频推荐地**，而非固定模板。 **时间线格式模板：** ``` ## 📅 {日期} · {目的地} 拍摄脚本 ### 🌤️ 今日天气概况 {天气摘要：温度范围、天气现象、特殊提示} --- ### ⏰ 拍摄时间线 #### 🌅 时间点：{开始时间} - {结束时间} 📍 **地点**：{具体地点名称} ⭐ **推荐星级**：{★★★★★ / ★★★★☆ / ★★★☆☆ 等，结合当日天气+光线条件+景点出片潜力综合评定，并用一句话说明理由，如：★★★★★ 黄金时段逆光+湖面晨雾，全天最佳机位} ⏱️ **建议停留**：{X 分钟 / X 小时，说明理由，如：光线窗口仅45分钟，建议不超时} 🌞 **光线状态**：{光线描述，如：侧逆光/黄金光/漫反射柔光；结合云量说明，如：云量60%，柔光均匀} 📷 **拍摄技巧**： - {构图方法，如：利用XXX做前景，长焦压缩背景} - **设备参数建议**： - 手机：{ISO/曝光补偿/模式建议} - 相机：{推荐焦段，如：24-35mm广角适合大场景/85-135mm人像压缩/70-200mm长焦压缩背景} + {光圈/快门/ISO参考值} - 无人机：{飞行高度/角度/注意事项}（仅当用户有无人机时） 👗 **穿搭建议**：{推荐色系及理由，如：推荐白色/红色系，与灰色建筑形成对比} --- ``` **时间节点规划原则：** - 黄金时段（日出后60分钟内，日落前60分钟）：必须安排重点户外景点 - 蓝调时刻（日落后15-30分钟）：安排城市夜景/有灯光的地标 - 正午（11:00-14:00）：安排室内景点/有遮挡的场所/餐厅打卡 - 按"体力消耗最优路径"排序景点，减少无效往返 --- ### 第五步：后期修图建议 在时间线末尾附上个性化后期建议： ``` ## 🎨 后期修图方向 ### 整体基调 {根据天气+风格推荐：如 "今日多云柔光，适合日系小清新调色"} ### 参数方向 - **亮部**：{建议，如：适当压低高光，防止过曝} - **阴影**：{建议，如：提亮阴影+0.3，保留细节} - **色温**：{建议，如：偏暖+200，增加黄金时段氛围} - **色调**：{建议，如：绿色饱和度-20，青色色相偏蓝，打造日系感} - **颗粒**：{按风格决定，如：添加轻微颗粒感，增强胶片质感} ### 调色关键词 {给出 2–3 个描述性调色方向关键词，不提具体软件名和预设名，如：「冷暖对比拉开」「蓝调压暗部」「胶片褪色感」，用户可自行在任意修图工具中实现} ### 注意避坑 - {1-2条常见问题，如：多云天sky replacement慎用，否则违和感强} ``` --- ## 关键注意事项 1. **无人机提醒**：若用户有无人机，必须提示查询目的地禁飞区（使用大疆飞行地图 https://www.dji.com/cn/flysafe） 2. **时区处理**：API 返回时间为北京时间（UTC+8），直接使用 3. **景点数量**：根据出行天数合理安排，单天不超过4-5个景点 4. **设备针对性**：用户没有某类设备时，不要输出该设备的参数建议 5. **风格一致性**：穿搭建议、后期建议三者风格要统一

path: config.env
content: QWEATHER_HOST=
QWEATHER_KEY=

Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)