旅行攻略生成技能
核心流程
阶段一:信息收集与校验
- 解析用户输入:提取出发地、目的地、景点、出行时间、天数、人数、偏好
- 缺失信息追问:以下为关键参数,缺失任意一项必须追问,禁止自行编造:
- 出发地(必填)
- 目的地(必填)
- 出行天数(必填)
- 出行人数及成员构成(有无老人/小孩/孕妇,影响节奏和景点选择)
- 出行月份或具体日期(影响天气、花期、旺季淡季)
- 预算区间(可选,有则精准推荐,无则按性价比推荐)
- 偏好类型(可选:自然风光 / 人文古迹 / 网红打卡 / 亲子休闲 / 美食探店) - 信息确认:将解析结果以简短列表回显给用户,确认无误后再进入搜索阶段
阶段二:分层搜索
按依赖关系分 3 轮搜索,确保行程规划有可靠数据支撑:
第 1 轮 — 景点基础信息(行程排期依据)
- 景点门票价格、优惠政策、开放时间、闭馆日
- 建议游览时长、最佳游览时段(避人流)
- 景点类型标签(室内/室外、是否需要爬山等)
第 2 轮 — 交通信息(时间轴依据)
- 出发地 → 目的地:高铁/飞机/自驾,时刻、价格、耗时
- 目的地市内 / 城际:景点间通勤方式、距离、耗时
- 交通选最省心方案(高铁 > 飞机 > 自驾)
第 3 轮 — 细节填充
- 住宿:景区附近推荐,价格区间
- 美食:特色小吃、推荐餐厅、人均消费
- 天气与穿衣建议
- 景点历史背景与典故(用于撰写解说词)
- 避坑建议:门票陷阱、排队攻略、拍照技巧、防骗提醒
搜索关键词模板
{目的地}{月份}旅游攻略 家庭游 必去景点 {天数}天行程
{出发地}到{目的地} 交通方式 高铁飞机 价格时间
{目的地}旅游 {景点1}{景点2} 门票价格 住宿推荐 开放时间 闭馆日
{目的地}{月份}旅游 {景点}门票 价格 2026
{目的地}美食推荐 特色小吃
{景点}历史背景 典故 来历 简介
{景点}避坑 注意事项 旅游陷阱 攻略
{景点1}到{景点2} 交通 距离 时间
阶段三:行程规划与校验
规划原则
- 每天不赶路,正午安排休息或室内景点,早晚安排户外游玩
- 用户指定景点优先安排,未指定则按热门度 + 类型多样性选择
- 每个核心景点预留充足时间(参考搜索到的建议游览时长)
- 住宿推荐景区附近,价格给区间
- 5 天以内走 1-2 个地市,不贪多
可行性校验(必须通过后才能进入下一阶段)
逐天检查以下项目,任意一项不通过则调整后重新检查:
| 校验项 | 规则 | 不通过时处理 |
|---|---|---|
| 时间可行性 | 每天:景点游览时间之和 + 通勤时间之和 + 休息时间 ≤ 10 小时 | 减少景点或拆分到其他天 |
| 闭馆日 | 景点闭馆日 ≠ 排期日 | 调换日期或替换景点 |
| 通勤合理性 | 相邻景点间通勤不超过 2 小时(单程) | 重新排序或分天安排 |
| 天气适配 | 户外景点不安排在预报雨天(如无天气数据则标注备选方案) | 与室内景点互换或标注备选 |
| 节奏合理 | 连续 2 天以上高强度行程中间必须有轻松日 | 插入休息日或减少景点 |
校验结果记录到 .temp/check_result.txt,格式:
[通过] 第1天:时间OK、无闭馆冲突、通勤合理
[修正] 第2天:原排云冈石窟周一闭馆,已调换至第3天
[通过] 第3天:...
阶段四:内容生成(并行)
校验通过后,以下两组工作并行执行:
并行组 A — 文字内容
- 为每个核心景点撰写解说词(150-250 字),涵盖历史背景、看点亮点、典故趣闻,口语化生动易懂
- 为每个核心景点撰写避坑建议,涵盖门票陷阱、排队攻略、拍照技巧、防骗提醒、时间优化
并行组 B — 图片生成
- 使用 ImageGen 工具生成 AI 手绘旅行地图(详见"图片生成规范")
- 使用 ImageGen 工具为每个核心景点生成 1-2 张 AI 插画
阶段五:文档与表格生成
第一步:生成 WPS 文档(.docx)
构建 itin.json 写入 .temp/,调用 scripts/gen_docx.py。
JSON 结构(含 narrations/food_text/route_map/images/pitfalls 字段):
{
"overview": "概览文本,\\n换行",
"route_map": ".temp/map_{目的地拼音}.jpg",
"transport": "##方案一\\n内容\\n##方案二\\n内容",
"days": [
{
"day": 1,
"title": "铜陵→大同",
"morning": "...",
"afternoon": "...",
"evening": "...",
"narrations": [
{
"spot": "华严寺",
"text": "解说词内容,150-250字...",
"images": [".temp/huayansi_1.jpg"],
"pitfalls": "避坑建议..."
}
],
"food_text": "刀削面、铜火锅、黄米凉糕",
"tips": "...",
"accommodation": "...",
"accom_price": "..."
}
],
"budget": "交通费:...\\n住宿费:...",
"foods": [{"city": "大同", "items": ["刀削面——..."]}],
"notes": ["提前预约:..."],
"packing": ["证件:..."]
}
narrations 中 images 和 pitfalls 均为可选字段。
python scripts/gen_docx.py --title "标题" --subtitle "副标题" --output "output.docx" --itin-file .temp/itin.json
第二步:生成 WPS 表格(.xlsx)
构建 itin_table.json 写入 .temp/,调用 scripts/gen_xlsx.py。
JSON 结构(含 food/narration/pitfalls 字段,共 13 列):
{
"rows": [
{
"time": "第1天\\n铜陵→大同",
"tool": "高铁",
"time_suggest": "7:00出发",
"transport_price": "约500元/人",
"hotel": "酒店名",
"hotel_price": "200-400元/晚",
"spot": "景点名",
"spot_price": "120元/人",
"spot_intro": "简介",
"food": "刀削面、铜火锅",
"narration": "解说词...",
"pitfalls": "避坑建议...",
"tips": "注意事项"
}
]
}
python scripts/gen_xlsx.py --sheet-name "行程安排" --output "output.xlsx" --itin-file .temp/itin_table.json
阶段六:生成后自检
生成完成后,逐项检查以下内容:
| 检查项 | 规则 | 不通过时处理 |
|---|---|---|
| 图片嵌入 | 文档中引用的每张图片都必须实际存在且成功嵌入 | 标记缺失项,提示用户 |
| 解说词字数 | 每篇 150-250 字 | 过短则补充,过长则精简 |
| JSON 完整性 | itin.json 和 itin_table.json 中无空必填字段 | 补全缺失字段 |
| 文档-表格一致性 | 文档中提到的景点数 = 表格中的景点数 | 修正使其一致 |
| 天数匹配 | 表格数据行数 = 实际天数(允许每天多行的情况) | 核对修正 |
自检结果记录到 .temp/check_report.txt,格式:
[通过] 图片嵌入:12/12 张全部成功
[通过] 解说词字数:8/8 篇符合要求
[修正] 文档提到10个景点,表格仅9个,已补全
如存在未通过项且无法自动修正,生成完成后向用户报告问题清单。
反复调用规则
支持 4 种调用模式,根据用户输入自动判断:
| 模式 | 触发条件 | 执行范围 |
|---|---|---|
| 全量重做 | 提供新目的地或大量新景点 | 从阶段一重新开始 |
| 局部替换 | "把第2天的A换成B" | 仅重新搜索被替换景点,重新校验受影响天 |
| 增量添加 | "多加一天去X" | 搜索新景点,从添加处重新排期,原行程不动 |
| 单文件重生成 | "表格重新生成一下" / "攻略文档重做" | 跳过搜索和规划,仅重跑阶段五的指定文件 |
图片生成规范
AI 手绘旅行地图
使用 ImageGen 工具生成手绘风格旅行地图(保存到 .temp/ 目录)。
地图必须包含以下标注(生成前逐项确认,生成后逐项核对):
- [ ] 行政区域:省/市/县名称
- [ ] 景点间距离:虚线箭头连接,旁标距离
- [ ] 游览先后顺序:Day1→Day2→Day3 箭头标注
- [ ] 交通工具:每段路线标注交通方式和耗时
- [ ] 景点名称:彩色圆点标记并标注
- [ ] 游玩时间:每个景点旁标注建议游玩时长
提示词模板:
手绘水彩风格旅行路线地图,{目的地}{天数}日行程路线图。图中包含详细标注:
1. 行政区域:标注途经的省/市/县名称,配建筑/地标图标
2. 路线与距离:用红色虚线箭头连接各城市,旁标距离和交通工具
3. 景点名称与游玩时间:每个景点用彩色圆点标记,旁标名称和建议游玩时长
4. 游览顺序:在地图上方用大箭头标注 Day1→Day2→Day3... 顺序
温暖明快水彩手绘风格,横向宽幅构图,标注清晰可读。
景点配图
为每个核心景点用 ImageGen 生成 1-2 张 AI 插画,保存到 .temp/。
提示词需包含:景点名称、建筑/风景特征、季节/天气氛围、插画风格。
{景点名},{建筑/风景特征描述},{月份}{季节},水彩插画风格,温暖明快,适合旅行攻略配图。
命名规则:{景点拼音}_1.jpg、{景点拼音}_2.jpg,地图命名为 map_{目的地拼音}.jpg。
输出规范
- 文件名格式:
{目的地}{天数}日旅行攻略.docx、{目的地}{天数}日旅行行程安排.xlsx - 示例:
山西5日旅行攻略.docx、山西5日旅行行程安排.xlsx - 不使用生成日期,使用目的地+天数,避免与行程日期混淆
- 所有文件保存到工作空间根目录
- AI 图片和中间 JSON 文件保存到
.temp/目录 - 生成完成后调用
report_final_files报告两个文件(docx + xlsx)
配色规范
- 表格:蓝白相间(偶数行浅蓝底 #E8F0FE,奇数行白底),表头深蓝 #1A3C6E
- 文档标题:深蓝 #1A3C6E
- 小节标题:#2E5E8E
- 解说词:棕色斜体 #6B4C2B
- 美食:深棕色 #8B4513
- 避坑建议:橙红色 #CC3300
文档排版
- 手绘地图嵌入"出行概览"之后、"交通方案"之前,标题为"旅行手绘地图"
- 景点配图嵌入在对应景点解说词之后,居中显示,宽度 4.5 英寸
- 避坑建议嵌入在景点配图之后,以橙红色【避坑建议】标签显示
- 每天行程之间加分页,地图前后加分页