Not in the top 1,000 by GitHub stars
huanyuzhilv/skills-travel-planner
开源 AI 路书生成工具 · Cursor/Claude Agent Skill:简版行程表 → tripData.json → 可交付 HTML/PDF。小红书配图、LLM 润色、飞猪酒店数据。Open-source AI travel roadbook generator for custom tour advisors.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
ea0576ff0e37 → ea0576ff0e37
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → ea0576ff0e37
No earlier version was observed for comparison.
Verified commit ea0576ff0e3708090b29541415a70da569e4b3f1
git clone --filter=blob:none --no-checkout https://github.com/huanyuzhilv/skills-travel-planner.git .hotskills/huanyuzhilv-skills-travel-planner && git -C .hotskills/huanyuzhilv-skills-travel-planner checkout --detach ea0576ff0e3708090b29541415a70da569e4b3f1
# Copy each selected skill directory from .hotskills/huanyuzhilv-skills-travel-planner into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/huanyuzhilv/skills-travel-planner.git .hotskills/huanyuzhilv-skills-travel-planner && git -C .hotskills/huanyuzhilv-skills-travel-planner checkout --detach ea0576ff0e3708090b29541415a70da569e4b3f1
# Copy each selected skill directory from .hotskills/huanyuzhilv-skills-travel-planner into .agents/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/huanyuzhilv/skills-travel-planner.git .hotskills/huanyuzhilv-skills-travel-planner && git -C .hotskills/huanyuzhilv-skills-travel-planner checkout --detach ea0576ff0e3708090b29541415a70da569e4b3f1
# Copy each selected skill directory from .hotskills/huanyuzhilv-skills-travel-planner into .cursor/skills/<skill-name>/Heat
0.3- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
How it works
travel-planner
When your agent uses it
面向旅行顾问与定制游服务商的商用 Travel Planner Skill。**roadbook-v2 默认即交付级**: 生成或更新 tripData 后须自动执行 deliver_roadbook_v2(**每日小红书正文** + 住宿飞猪简介 + **小红书预检与 strict https 配图** + 校验 + HTML), **禁止**向用户确认「要不要跑交付」;仅当用户明示草稿/预览/跳过小红书时可降级。 Cursor Agent 角色与硬性规则见仓库根 **AGENTS.md**。 支持目的地推荐、行程策划、预算拆分、路书 tripData + HTML/PDF。触发:旅行计划、路书、报价、行程单等。
What it loads into context
Frontmatter
187 tokensAlways available to the agent
SKILL.md
17,978 tokensWhen the skill is activated
Reference documents
9,497 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 商用模式定位
- 行程详解文档 · Agent 角色提示词(Markdown)
- 统一输入 Intake 规范(商用强制)
- 工具可用性说明
- 第一步:收集旅行要素
- 第二步:目的地推荐(如目的地未知)
- 第三步:多维信息采集
- 第四步:行程编排
- 第五步:预算编制(含可靠度标注)
- 第六步:生成 HTML
- 第七步:部署到 Cloudflare Pages
- 路书生成模式(定制旅游服务商)
Scripts executed separately
assets/generate.pyinstall.shpackage.jsonscripts/analyze_xhs_same_day_overlap.pyscripts/brand_logo.pyscripts/deliver_roadbook_v2.pyscripts/enrich_daily_descriptions_from_xhs.pyscripts/enrich_hotel_intro_from_flyai.pyscripts/enrich_roadbook_copy_from_llm.pyscripts/fill_xhs_images.pyscripts/flyai_hotel_shared.pyscripts/image_fallback_chain.pyscripts/llm_openai_compat.pyscripts/merge_intake_fee_service.pyscripts/probe-flyai-hotel.shscripts/refill_transport_images_from_flyai.pyscripts/regenerate_roadbook_v2.shscripts/relink_local_roadbook_images.pyscripts/repo_dotenv.pyscripts/roadbook_constants.pyscripts/roadbook_image_alternate_defaults.pyscripts/roadbook_image_engine/__init__.pyscripts/roadbook_image_engine/cache_store.pyscripts/roadbook_image_engine/diversity.pyscripts/roadbook_image_engine/quality_score.pyscripts/roadbook_image_engine/visual_hash.pyscripts/roadbook_intake.pyscripts/roadbook_pdf_playwright.pyscripts/roadbook_print_layout.pyscripts/setup_xhs_mcporter.shscripts/sync_brand_logo.pyscripts/tikhub_mcp_stdio.shscripts/tikhub_xhs_cache.pyscripts/tikhub_xhs_client.pyscripts/tikhub_xhs_feeds.pyscripts/tikhub_xhs_mcp_stdio.pyscripts/tikhub_xhs_search.pyscripts/tripdata_content_limits.pyscripts/validate_roadbook_image_alternates.pyscripts/xhs_image_url_rules.pyscripts/xhs_search_keyword_rules.pysetup.sh
Files
.cursor/mcp.jsonasset101 bytes.env.exampleasset757 bytes.github/workflows/deploy-website.ymlasset604 bytes.gitignoreasset414 bytesAGENTS.mddoc6,069 bytesCLAUDE.mddoc6,268 bytesLICENSEasset1,068 bytesREADME.mddoc4,818 bytesRELEASE_v1.0.0.mddoc1,325 bytesassets/brand/wd-trip-logo.pngasset20,256 bytesassets/generate.pyruns79,735 bytesassets/image_registry.sample.jsonasset2,177 bytesassets/preview.htmlasset39,023 bytesassets/roadbook-schema.sample.jsonasset8,745 bytesassets/template-brochure.htmlasset29,063 bytesassets/template-roadbook.htmlasset58,561 bytesassets/template.htmlasset25,790 bytesassets/templates/default/sample.tripData.jsonasset1,866 bytesassets/templates/default/template.htmlasset28,324 bytesassets/templates/roadbook-v2/roadbook-component-schema.jsonasset10,904 bytesassets/templates/roadbook-v2/roadbook-v2-sample.jsonasset33,240 bytesassets/templates/roadbook-v2/template-roadbook-v2.htmlasset185,915 bytesassets/templates/roadbook/roadbook-schema.sample.jsonasset8,745 bytesassets/templates/roadbook/template-roadbook.htmlasset62,273 bytesassets/templates/shared/image_registry.sample.jsonasset436 bytesdocs/deepseek-llm-setup.mddoc2,658 bytesdocs/examples/guizhou-brief.txtdoc1,238 bytesdocs/index.htmlasset9,716 bytesdocs/roadbook-input-to-output-keywords.mddoc10,157 bytesdocs/style.cssasset6,463 bytesdocs/vercel.jsonasset206 bytesinstall.shruns16,798 bytesllms.txtdoc1,582 bytespackage.jsonruns321 bytesrequirements-roadbook-images.txtdoc182 bytesscripts/analyze_xhs_same_day_overlap.pyruns19,860 bytesscripts/brand_logo.pyruns1,345 bytesscripts/deliver_roadbook_v2.pyruns23,479 bytesscripts/enrich_daily_descriptions_from_xhs.pyruns33,695 bytesscripts/enrich_hotel_intro_from_flyai.pyruns23,050 bytesscripts/enrich_roadbook_copy_from_llm.pyruns12,291 bytesscripts/fill_xhs_images.pyruns46,668 bytesscripts/flyai_hotel_shared.pyruns2,508 bytesscripts/image_fallback_chain.pyruns20,349 bytesscripts/llm_openai_compat.pyruns4,597 bytesscripts/merge_intake_fee_service.pyruns4,962 bytesscripts/probe-flyai-hotel.shruns5,938 bytesscripts/refill_transport_images_from_flyai.pyruns4,690 bytesscripts/regenerate_roadbook_v2.shruns1,331 bytesscripts/relink_local_roadbook_images.pyruns2,623 bytesscripts/repo_dotenv.pyruns1,796 bytesscripts/roadbook_constants.pyruns272 bytesscripts/roadbook_image_alternate_defaults.pyruns1,662 bytesscripts/roadbook_image_engine/__init__.pyruns89 bytesscripts/roadbook_image_engine/cache_store.pyruns3,752 bytesscripts/roadbook_image_engine/diversity.pyruns187 bytesscripts/roadbook_image_engine/quality_score.pyruns168 bytesscripts/roadbook_image_engine/visual_hash.pyruns1,894 bytesscripts/roadbook_intake.pyruns45,629 bytesscripts/roadbook_pdf_playwright.pyruns0 bytesscripts/roadbook_print_layout.pyruns4,445 bytesscripts/setup_xhs_mcporter.shruns344 bytesscripts/sync_brand_logo.pyruns1,356 bytesscripts/tikhub_mcp_stdio.shruns719 bytesscripts/tikhub_xhs_cache.pyruns6,662 bytesscripts/tikhub_xhs_client.pyruns8,997 bytesscripts/tikhub_xhs_feeds.pyruns8,757 bytesscripts/tikhub_xhs_mcp_stdio.pyruns4,488 bytesscripts/tikhub_xhs_search.pyruns4,414 bytesscripts/tripdata_content_limits.pyruns4,247 bytesscripts/validate_roadbook_image_alternates.pyruns4,805 bytesscripts/xhs_image_url_rules.pyruns3,071 bytesscripts/xhs_search_keyword_rules.pyruns17,982 bytessetup.shruns348 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesskill.mdcore59,816 bytesvercel.jsonasset59 byteswebsite/index.htmlasset13,722 byteswebsite/llms.txtdoc460 byteswebsite/og-image.pngasset1,285,706 byteswebsite/robots.txtdoc674 byteswebsite/sitemap.xmlasset487 byteswebsite/style.cssasset6,463 byteswebsite/vercel.jsonasset206 bytes
Read SKILL.md
# Travel Planner
生成结构化、可操作、**对客户可交付**的旅行方案。输出可为中文 HTML/PDF 路书,并保留可编辑的 `tripData.json`。**Cursor / Agent**:路书 v2 **硬性交付禁令与一键命令**见 **`AGENTS.md`**;完整策划、数据源与配图约定见 **`skill.md`**(本文)。
## 商用模式定位
本 skill 默认按「可销售交付」标准执行:
- 输入多形态统一解析:文本 / 截图 / 文档(含图)
- 输出双层资产:`tripData.json`(可复用) + `HTML/PDF`(可直接交付客户)
- 数据标注诚实:实时报价 / 参考价 / 待确认,避免误导成交
- **roadbook-v2**:产出客户版路书 HTML 时 **默认跑完整交付流水线**(`scripts/deliver_roadbook_v2.py` 默认 **strict**:每日小红书正文 **`enrich_daily_descriptions_from_xhs`** → **`fill_xhs_images --require-remote-urls`** + `validate --require-remote-urls`,含 **search_feeds 预检**;或 `npm run roadbook:deliver`,建议 **`--hotel-force`**),**禁止**询问用户是否交付、是否补图、是否校验;交付禁令速查见 **`AGENTS.md`**,脚本与配图细则见本文路书 / 小红书相关章节。用户 **明示**「草稿 / 内部预览 / 离线」时可 **`deliver --allow-local-placeholders`**(跳过每日正文 enrich 与 strict 配图)或仅 `generate.py`,并在回复中标明 **非交付稿**。
## 行程详解文档 · Agent 角色提示词(Markdown)View the complete source on GitHubSkills included
- travel-planner
Repository facts
- License
- MIT
- Created
- Jun 1, 2026
- Last pushed
- Jun 1, 2026
- Forks
- 2
- Open issues
- 1
- Project activity
- Slowing
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 6, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 28 notes
skill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskill.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 8 dangerous shell commandsin 4 files: install.sh:16 scripts/probe-flyai-hotel.sh:108 README.md:67 and 1 more
- 577 network referencesin 32 files: assets/templates/roadbook-v2/roadbook-v2-sample.json:8 website/index.html:10 assets/image_registry.sample.json:4 and 29 more
- 1 obfuscation signalin 1 file: scripts/enrich_daily_descriptions_from_xhs.py:103
- No instruction overrides
- 42 executable scriptsin 42 files: assets/generate.py:1 install.sh:1 package.json:1 and 39 more
- 108 references to secretsin 28 files: scripts/enrich_daily_descriptions_from_xhs.py:4 scripts/llm_openai_compat.py:25 scripts/fill_xhs_images.py:4 and 25 more
- No requests to vote in Hot
Show all 736 signals by file
.env.example
- Access to secretsline 1
[Credential-related source omitted] - Network accessline 4
[Credential-related source omitted] - Network accessline 5
[Credential-related source omitted] - Network accessline 6
[Credential-related source omitted] - Access to secretsline 6
[Credential-related source omitted] - Network accessline 8
[Credential-related source omitted] - Access to secretsline 8
[Credential-related source omitted] - Network accessline 9
[Credential-related source omitted] - Access to secretsline 9
[Credential-related source omitted] - Network accessline 10
# OPENAI_BASE_URL=https://api.openai.com/v1 - Network accessline 13
[Credential-related source omitted] - Access to secretsline 13
[Credential-related source omitted] - Network accessline 14
[Credential-related source omitted] - Access to secretsline 14
[Credential-related source omitted] - Network accessline 15
# DEEPSEEK_BASE_URL=https://api.deepseek.com/v1
.gitignore
- Access to secretsline 15
[Credential-related source omitted]
AGENTS.md
- Access to secretsline 25
[Credential-related source omitted]
CLAUDE.md
README.md
- Network accessline 12
[](LICENSE) - Network accessline 13
[](https://huanyuzhilv.github.io/skills-travel-planner/) - Network accessline 14
[](https://github.com/huanyuzhilv/skills-travel-planner/releases) - Network accessline 36
git clone https://github.com/huanyuzhilv/skills-travel-planner.git - Network accessline 37
cd skills-travel-planner cp .env.example .env # 编辑 .env:填入 TIKHUB_API_KEY(https://user.tikhub.io 申请) - Network accessline 38
[Credential-related source omitted] - Access to secretsline 38
[Credential-related source omitted] - Network accessline 39
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Network accessline 65
./install.sh # 交互式安装到 Claude Code / Codex ./install.sh --user # 用户级安装 curl -fsSL https://raw.githubusercontent.com/huanyuzhilv/skills-travel-planner/main/setup.sh | bash - Dangerous shell operationline 67
curl -fsSL https://raw.githubusercontent.com/huanyuzhilv/skills-travel-planner/main/setup.sh | bash - Network accessline 67
curl -fsSL https://raw.githubusercontent.com/huanyuzhilv/skills-travel-planner/main/setup.sh | bash - Network accessline 74
| 变量 | 说明 | |------|------| | `TIKHUB_API_KEY` | **推荐** — 小红书搜索/配图/正文([TikHub](https://user.tikhub.io)) | - Network accessline 75
|------|------| | `TIKHUB_API_KEY` | **推荐** — 小红书搜索/配图/正文([TikHub](https://user.tikhub.io)) | | `OPENAI_API_KEY` | 可选 — 每日正文与亮点 LLM 润色(优先) | - Network accessline 76
[Credential-related source omitted] - Access to secretsline 76
[Credential-related source omitted] - Access to secretsline 77
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Network accessline 84
| 工具 | 用途 | |------|------| | [flyai](https://github.com/alibaba-flyai/flyai-skill) | 飞猪酒店/交通配图 | - Network accessline 85
|------|------| | [flyai](https://github.com/alibaba-flyai/flyai-skill) | 飞猪酒店/交通配图 | | TikHub MCP | Cursor 内小红书搜索(见 `.cursor/mcp.json` 示例) | - Network accessline 86
| [flyai](https://github.com/alibaba-flyai/flyai-skill) | 飞猪酒店/交通配图 | - Network accessline 103
MIT © [huanyuzhilv](https://github.com/huanyuzhilv)
RELEASE_v1.0.0.md
- Network accessline 16
git clone https://github.com/huanyuzhilv/skills-travel-planner.git - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 19
[Credential-related source omitted] - Network accessline 34
- Website: https://huanyuzhilv.github.io/skills-travel-planner/ - Network accessline 35
- LLM summary: [llms.txt](https://github.com/huanyuzhilv/skills-travel-planner/blob/main/llms.txt) - Network accessline 36
- Agent rules: [AGENTS.md](https://github.com/huanyuzhilv/skills-travel-planner/blob/main/AGENTS.md)
assets/generate.py
- Executable scriptline 1
Executable file - Network accessline 40
def _fetch_json(url: str) -> Dict: req = urllib.request.Request( - Network accessline 41
req = urllib.request.Request( - Network accessline 45
}, ) with urllib.request.urlopen(req, timeout=12) as resp: - Network accessline 46
) with urllib.request.urlopen(req, timeout=12) as resp: return json.loads(resp.read().decode("utf-8")) - Network accessline 47
with urllib.request.urlopen(req, timeout=12) as resp: - Network accessline 227
"iiurlwidth": 1800, } url = "https://commons.wikimedia.org/w/api.php?" + urllib.parse.urlencode(params) - Network accessline 229
url = "https://commons.wikimedia.org/w/api.php?" + urllib.parse.urlencode(params) - Network accessline 450
w = 1600 + (offset + idx) * 10 h = 900 + (offset + idx) * 5 primary = f"https://loremflickr.com/{w}/{h}/{encoded_query}" - Network accessline 451
h = 900 + (offset + idx) * 5 primary = f"https://loremflickr.com/{w}/{h}/{encoded_query}" urls.append(primary) - Network accessline 452
primary = f"https://loremflickr.com/{w}/{h}/{encoded_query}" - Network accessline 1295
try: req = urllib.request.Request( - Network accessline 1296
req = urllib.request.Request( - Network accessline 1301
}, ) with urllib.request.urlopen(req, timeout=18) as resp: - Network accessline 1302
) with urllib.request.urlopen(req, timeout=18) as resp: header_ct = (resp.headers.get("Content-Type") or "").split(";")[0].strip().lower() - Network accessline 1303
with urllib.request.urlopen(req, timeout=18) as resp: - Network accessline 1735
) server = http.server.HTTPServer(('127.0.0.1', port), handler) url = f'http://localhost:{port}' - Network accessline 1736
server = http.server.HTTPServer(('127.0.0.1', port), handler) url = f'http://localhost:{port}' print(f"\n 路书预览服务已启动: {url}") - Network accessline 1737
url = f'http://localhost:{port}'
assets/image_registry.sample.json
- Network accessline 4
"poi": { "poi_moergele_001": [ "https://example.com/xhs-moergele-cover.jpg", - Network accessline 5
"poi_moergele_001": [ "https://example.com/xhs-moergele-cover.jpg", "https://example.com/xhs-moergele-sunset.jpg" - Network accessline 6
"https://example.com/xhs-moergele-cover.jpg", - Network accessline 7
"https://example.com/xhs-moergele-sunset.jpg" - Network accessline 10
"keyword": { "莫尔格勒河": [ "https://example.com/xhs-moergele-keyword.jpg" - Network accessline 11
"莫尔格勒河": [ "https://example.com/xhs-moergele-keyword.jpg" ], - Network accessline 12
"https://example.com/xhs-moergele-keyword.jpg" - Network accessline 13
], "黑山头骑马": [ "https://example.com/xhs-heishantou-horse.jpg" - Network accessline 14
"黑山头骑马": [ "https://example.com/xhs-heishantou-horse.jpg" ] - Network accessline 15
"https://example.com/xhs-heishantou-horse.jpg" - Network accessline 26
"roomCount": 226, "roomSize": "约30平方米", "sourceUrl": "https://hotels.ctrip.com/example", - Network accessline 27
"roomSize": "约30平方米", "sourceUrl": "https://hotels.ctrip.com/example", "images": [ - Network accessline 28
"sourceUrl": "https://hotels.ctrip.com/example", - Network accessline 29
"images": [ "https://example.com/ctrip-kai-jing-cover.jpg", "https://example.com/ctrip-kai-jing-room.jpg" - Network accessline 30
"https://example.com/ctrip-kai-jing-cover.jpg", - Network accessline 31
"https://example.com/ctrip-kai-jing-room.jpg" - Network accessline 34
"呼伦贝尔凯景嘉华酒店": { "images": [ "https://example.com/ctrip-kai-jing-name-match.jpg" - Network accessline 35
"images": [ "https://example.com/ctrip-kai-jing-name-match.jpg" ] - Network accessline 36
"https://example.com/ctrip-kai-jing-name-match.jpg" - Network accessline 44
"description": "飞猪酒店介绍文案作为携程缺失时的备选。", "images": [ "https://example.com/fliggy-kai-jing-cover.jpg" - Network accessline 45
"images": [ "https://example.com/fliggy-kai-jing-cover.jpg" ] - Network accessline 46
"https://example.com/fliggy-kai-jing-cover.jpg" - Network accessline 52
"poi": { "poi_gugong_001": [ "https://example.com/manual-poi-gugong-main.jpg", - Network accessline 53
"poi_gugong_001": [ "https://example.com/manual-poi-gugong-main.jpg", "https://example.com/manual-poi-gugong-side.jpg" - Network accessline 54
"https://example.com/manual-poi-gugong-main.jpg", - Network accessline 55
"https://example.com/manual-poi-gugong-side.jpg" - Network accessline 58
"hotel": { "hotel_bei_jing_nan_001": [ "https://example.com/manual-hotel-001-cover.jpg", - Network accessline 59
"hotel_bei_jing_nan_001": [ "https://example.com/manual-hotel-001-cover.jpg", "https://example.com/manual-hotel-001-room.jpg" - Network accessline 60
"https://example.com/manual-hotel-001-cover.jpg", - Network accessline 61
"https://example.com/manual-hotel-001-room.jpg" - Network accessline 66
"hotel": { "hotel_bei_jing_nan_001": [ "https://example.com/legacy-hotel-001-cover.jpg", - Network accessline 67
"hotel_bei_jing_nan_001": [ "https://example.com/legacy-hotel-001-cover.jpg", "https://example.com/legacy-hotel-001-room.jpg" - Network accessline 68
"https://example.com/legacy-hotel-001-cover.jpg", - Network accessline 69
"https://example.com/legacy-hotel-001-room.jpg" - Network accessline 72
"poi": { "poi_gugong_001": [ "https://example.com/legacy-poi-gugong-main.jpg", - Network accessline 73
"poi_gugong_001": [ "https://example.com/legacy-poi-gugong-main.jpg", "https://example.com/legacy-poi-gugong-side.jpg" - Network accessline 74
"https://example.com/legacy-poi-gugong-main.jpg", - Network accessline 75
"https://example.com/legacy-poi-gugong-side.jpg"
assets/template-roadbook.html
assets/templates/roadbook-v2/roadbook-component-schema.json
assets/templates/roadbook-v2/roadbook-v2-sample.json
- Network accessline 8
"backgroundImage": { "alternates": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg", - Network accessline 9
"alternates": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Hopetoun_falls.jpg/1280px-Hopetoun_fall - Network accessline 10
"https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg", - Network accessline 11
"https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Hopetoun_falls.jpg/1280px-Hopetoun_falls.jpg", - Network accessline 12
"https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Example.jpg/1280px-Example.jpg" - Network accessline 17
"subtitle": "2026年8月 | 穿越草原与湿地的自然之旅", "logo": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/1280px-PNG_transparency_demonstration_1.png", - Network accessline 18
"logo": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/1280px-PNG_transparency_demonstration_1.png", "https://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Gull_portrait_ca_ - Network accessline 19
"https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/1280px-PNG_transparency_demonstration_1.png", - Network accessline 20
"https://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Gull_portrait_ca_usa.jpg/1280px-Gull_portrait_ca_usa.jpg" - Network accessline 27
"data": { "backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Dhaulagiri_from_shining.jpg/1280px-Dhaulagiri_from_shining.jpg", - Network accessline 28
"backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Dhaulagiri_from_shining.jpg/1280px-Dhaulagiri_from_shining.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Good_Food_Displa - Network accessline 29
"https://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Dhaulagiri_from_shining.jpg/1280px-Dhaulagiri_from_shining.jpg", - Network accessline 30
"https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Good_Food_Display_-_NCI_Visuals_Online.jpg/1280px-Good_Food_Display_-_NCI_Visuals_Online.jpg" - Network accessline 48
"data": { "backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/1280px-Image_created_with_a_mobile_phone.png", - Network accessline 49
"backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/1280px-Image_created_with_a_mobile_phone.png", "https://upload.wikimedia.org/wikipedia/commons/thumb/c - Network accessline 50
"https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/1280px-Image_created_with_a_mobile_phone.png", - Network accessline 51
"https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Iguazu_Falls.jpg/1280px-Iguazu_Falls.jpg" - Network accessline 132
"data": { "backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Phoenix_Islands_-_panoramio.jpg/1280px-Phoenix_Islands_-_panoramio.jpg", - Network accessline 133
"backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Phoenix_Islands_-_panoramio.jpg/1280px-Phoenix_Islands_-_panoramio.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Clouds_o - Network accessline 134
"https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Phoenix_Islands_-_panoramio.jpg/1280px-Phoenix_Islands_-_panoramio.jpg", - Network accessline 135
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Clouds_over_the_Atlantic_Ocean.jpg/1280px-Clouds_over_the_Atlantic_Ocean.jpg" - Network accessline 141
"topImages": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Cumulus_clouds_over_the_Atlantic.jpg/1280px-Cumulus_clouds_over_the_Atlantic.jpg", - Network accessline 142
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Cumulus_clouds_over_the_Atlantic.jpg/1280px-Cumulus_clouds_over_the_Atlantic.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/Water_drop_im - Network accessline 143
"https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Cumulus_clouds_over_the_Atlantic.jpg/1280px-Cumulus_clouds_over_the_Atlantic.jpg", - Network accessline 144
"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/Water_drop_impact_on_a_water-surface_-_2.jpg/1280px-Water_drop_impact_on_a_water-surface_-_2.jpg", - Network accessline 145
"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Copenhagen_-_the_little_mermaid_statue_-_2013.jpg/1280px-Copenhagen_-_the_little_mermaid_statue_-_2013.jpg" - Network accessline 146
], [ "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Eiffel_tower_from_champs_de_mars.jpg/1280px-Eiffel_tower_from_champs_de_mars.jpg", - Network accessline 147
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Eiffel_tower_from_champs_de_mars.jpg/1280px-Eiffel_tower_from_champs_de_mars.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Big_Ben_Clock - Network accessline 148
"https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Eiffel_tower_from_champs_de_mars.jpg/1280px-Eiffel_tower_from_champs_de_mars.jpg", - Network accessline 149
"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Big_Ben_Clock_Tower_London-may_2007.jpg/1280px-Big_Ben_Clock_Tower_London-may_2007.jpg" - Network accessline 151
], "sideImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Beijing_national_stadium.jpg/1280px-Beijing_national_stadium.jpg", - Network accessline 152
"sideImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Beijing_national_stadium.jpg/1280px-Beijing_national_stadium.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg - Network accessline 153
"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Beijing_national_stadium.jpg/1280px-Beijing_national_stadium.jpg", - Network accessline 154
"https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg" - Network accessline 156
"bottomImages": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Partial_solar_eclipse_in_Helsinki_2008.jpg/1280px-Partial_solar_eclipse_in_Helsinki_2008.jpg", - Network accessline 157
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Partial_solar_eclipse_in_Helsinki_2008.jpg/1280px-Partial_solar_eclipse_in_Helsinki_2008.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/2 - Network accessline 158
"https://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Partial_solar_eclipse_in_Helsinki_2008.jpg/1280px-Partial_solar_eclipse_in_Helsinki_2008.jpg", - Network accessline 159
"https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/20100726_Kalamitsi_Beach_Ionian_Sea_Lefkada_island_Greece.jpg/1280px-20100726_Kalamitsi_Beach_Ionian_Sea_Lefkada_island_Greece.jpg" - Network accessline 167
"data": { "backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/Ronda_la_vieja.jpg/1280px-Ronda_la_vieja.jpg", - Network accessline 168
"backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/Ronda_la_vieja.jpg/1280px-Ronda_la_vieja.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Kluane_National_Park_1983.jpg/1280 - Network accessline 169
"https://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/Ronda_la_vieja.jpg/1280px-Ronda_la_vieja.jpg", - Network accessline 170
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Kluane_National_Park_1983.jpg/1280px-Kluane_National_Park_1983.jpg" - Network accessline 176
"topImages": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Kiyomizu-dera%2C_Kyoto%2C_Japan_-_panoramio.jpg/1280px-Kiyomizu-dera%2C_Kyoto%2C_Japan_-_panoramio.jpg", - Network accessline 177
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Kiyomizu-dera%2C_Kyoto%2C_Japan_-_panoramio.jpg/1280px-Kiyomizu-dera%2C_Kyoto%2C_Japan_-_panoramio.jpg", "https://upload.wikimedia.org/wikipedia/commons/th - Network accessline 178
"https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Kiyomizu-dera%2C_Kyoto%2C_Japan_-_panoramio.jpg/1280px-Kiyomizu-dera%2C_Kyoto%2C_Japan_-_panoramio.jpg", - Network accessline 179
"https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Balaton_Hungary_Landscape.jpg/1280px-Balaton_Hungary_Landscape.jpg" - Network accessline 180
], "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Broadway_tower_edit.jpg/1280px-Broadway_tower_edit.jpg", [ - Network accessline 181
"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Broadway_tower_edit.jpg/1280px-Broadway_tower_edit.jpg", - Network accessline 182
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Glasgow_university.jpg/1280px-Glasgow_university.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Peacock_Butterfly_Inari.jpg/1280px-Peacoc - Network accessline 183
"https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Glasgow_university.jpg/1280px-Glasgow_university.jpg", - Network accessline 184
"https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Peacock_Butterfly_Inari.jpg/1280px-Peacock_Butterfly_Inari.jpg" - Network accessline 186
], "sideImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Fire_breathing_2_Luc_Viatour.jpg/1280px-Fire_breathing_2_Luc_Viatour.jpg", - Network accessline 187
"sideImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Fire_breathing_2_Luc_Viatour.jpg/1280px-Fire_breathing_2_Luc_Viatour.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Museum_of_Co - Network accessline 188
"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Fire_breathing_2_Luc_Viatour.jpg/1280px-Fire_breathing_2_Luc_Viatour.jpg", - Network accessline 189
"https://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Museum_of_Contemporary_Art_Belgrade.jpg/1280px-Museum_of_Contemporary_Art_Belgrade.jpg" - Network accessline 190
], "bottomImages": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Tulip_Streaked_Broken_by_Virus.jpg/1280px-Tulip_Streaked_Broken_by_Virus.jpg", - Network accessline 191
"bottomImages": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Tulip_Streaked_Broken_by_Virus.jpg/1280px-Tulip_Streaked_Broken_by_Virus.jpg", [ - Network accessline 192
"https://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Tulip_Streaked_Broken_by_Virus.jpg/1280px-Tulip_Streaked_Broken_by_Virus.jpg", - Network accessline 193
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/BMW_I8_Concept_IAA_2011.jpg/1280px-BMW_I8_Concept_IAA_2011.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Ferry_building_Wellington.jpg/1 - Network accessline 194
"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/BMW_I8_Concept_IAA_2011.jpg/1280px-BMW_I8_Concept_IAA_2011.jpg", - Network accessline 195
"https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Ferry_building_Wellington.jpg/1280px-Ferry_building_Wellington.jpg" - Network accessline 203
"data": { "backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/American_horse.jpg/1280px-American_horse.jpg", - Network accessline 204
"backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/American_horse.jpg/1280px-American_horse.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Rio_from_space_at_night.jpg/1280px - Network accessline 205
"https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/American_horse.jpg/1280px-American_horse.jpg", - Network accessline 206
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Rio_from_space_at_night.jpg/1280px-Rio_from_space_at_night.jpg" - Network accessline 211
"description": "上午游览亚洲第一湿地——额尔古纳湿地公园,登顶观景台俯瞰根河蜿蜒穿过广袤湿地的壮丽景色。随后驱车前往白桦林景区,漫步于金色白桦树林间,感受童话般的静谧。下午抵达俄罗斯族乡恩和,入住百年历史的木刻楞老屋,体验列巴制作。", "topImages": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Everest_North_Face_to - Network accessline 212
"topImages": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg/1280px-Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg", [ - Network accessline 213
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg/1280px-Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg", - Network accessline 214
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg/1280px-Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg", "https://upload.wi - Network accessline 215
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg/1280px-Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg", - Network accessline 216
"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Sydney_Opera_House_-_Dec_2008.jpg/1280px-Sydney_Opera_House_-_Dec_2008.jpg" - Network accessline 217
] ], "sideImage": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg/1280px-Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg", - Network accessline 218
], "sideImage": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg/1280px-Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg", "bottomImages": [ - Network accessline 219
"sideImage": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg/1280px-Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg", - Network accessline 220
"bottomImages": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/The_Sun_by_the_Atmospheric_Imaging_Assembly_of_NASA%27s_Solar_Dynamics_Observatory_-_20100819.jpg/1280px-The_Sun_by_the_Atmospheric_Imaging_Assembly_of_N - Network accessline 221
"https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/The_Sun_by_the_Atmospheric_Imaging_Assembly_of_NASA%27s_Solar_Dynamics_Observatory_-_20100819.jpg/1280px-The_Sun_by_the_Atmospheric_Imaging_Assembly_of_NASA%27s_Solar_Dynamics_Obser - Network accessline 222
"https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg" - Network accessline 229
"data": { "backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg", - Network accessline 230
"backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Hopetoun_falls.jpg/1280px-Hope - Network accessline 231
"https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg", - Network accessline 232
"https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Hopetoun_falls.jpg/1280px-Hopetoun_falls.jpg" - Network accessline 238
"topImages": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Example.jpg/1280px-Example.jpg", - Network accessline 239
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Example.jpg/1280px-Example.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/1280px-PNG_transparency_de - Network accessline 240
"https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Example.jpg/1280px-Example.jpg", - Network accessline 241
"https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/1280px-PNG_transparency_demonstration_1.png" - Network accessline 242
], [ "https://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Gull_portrait_ca_usa.jpg/1280px-Gull_portrait_ca_usa.jpg", - Network accessline 243
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Gull_portrait_ca_usa.jpg/1280px-Gull_portrait_ca_usa.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Dhaulagiri_from_shining.jpg/1280px-Dh - Network accessline 244
"https://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Gull_portrait_ca_usa.jpg/1280px-Gull_portrait_ca_usa.jpg", - Network accessline 245
"https://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Dhaulagiri_from_shining.jpg/1280px-Dhaulagiri_from_shining.jpg" - Network accessline 247
], "sideImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Good_Food_Display_-_NCI_Visuals_Online.jpg/1280px-Good_Food_Display_-_NCI_Visuals_Online.jpg", - Network accessline 248
"sideImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Good_Food_Display_-_NCI_Visuals_Online.jpg/1280px-Good_Food_Display_-_NCI_Visuals_Online.jpg", "https://upload.wikimedia.org/wikipedia/commons/thu - Network accessline 249
"https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Good_Food_Display_-_NCI_Visuals_Online.jpg/1280px-Good_Food_Display_-_NCI_Visuals_Online.jpg", - Network accessline 250
"https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/1280px-Image_created_with_a_mobile_phone.png" - Network accessline 251
], "bottomImages": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Iguazu_Falls.jpg/1280px-Iguazu_Falls.jpg" - Network accessline 252
"bottomImages": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Iguazu_Falls.jpg/1280px-Iguazu_Falls.jpg" ] - Network accessline 253
"https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Iguazu_Falls.jpg/1280px-Iguazu_Falls.jpg" - Network accessline 260
"data": { "backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Phoenix_Islands_-_panoramio.jpg/1280px-Phoenix_Islands_-_panoramio.jpg", - Network accessline 261
"backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Phoenix_Islands_-_panoramio.jpg/1280px-Phoenix_Islands_-_panoramio.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Clouds_o - Network accessline 262
"https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Phoenix_Islands_-_panoramio.jpg/1280px-Phoenix_Islands_-_panoramio.jpg", - Network accessline 263
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Clouds_over_the_Atlantic_Ocean.jpg/1280px-Clouds_over_the_Atlantic_Ocean.jpg" - Network accessline 269
"topImages": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Cumulus_clouds_over_the_Atlantic.jpg/1280px-Cumulus_clouds_over_the_Atlantic.jpg", - Network accessline 270
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Cumulus_clouds_over_the_Atlantic.jpg/1280px-Cumulus_clouds_over_the_Atlantic.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/Water_drop_im - Network accessline 271
"https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Cumulus_clouds_over_the_Atlantic.jpg/1280px-Cumulus_clouds_over_the_Atlantic.jpg", - Network accessline 272
"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/Water_drop_impact_on_a_water-surface_-_2.jpg/1280px-Water_drop_impact_on_a_water-surface_-_2.jpg", - Network accessline 273
"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Copenhagen_-_the_little_mermaid_statue_-_2013.jpg/1280px-Copenhagen_-_the_little_mermaid_statue_-_2013.jpg" - Network accessline 274
], "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Eiffel_tower_from_champs_de_mars.jpg/1280px-Eiffel_tower_from_champs_de_mars.jpg", [ - Network accessline 275
"https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Eiffel_tower_from_champs_de_mars.jpg/1280px-Eiffel_tower_from_champs_de_mars.jpg", - Network accessline 276
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Big_Ben_Clock_Tower_London-may_2007.jpg/1280px-Big_Ben_Clock_Tower_London-may_2007.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Beijing - Network accessline 277
"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Big_Ben_Clock_Tower_London-may_2007.jpg/1280px-Big_Ben_Clock_Tower_London-may_2007.jpg", - Network accessline 278
"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Beijing_national_stadium.jpg/1280px-Beijing_national_stadium.jpg" - Network accessline 280
], "sideImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg", - Network accessline 281
"sideImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Partial_solar_eclipse_in_Helsinki_20 - Network accessline 282
"https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg", - Network accessline 283
"https://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Partial_solar_eclipse_in_Helsinki_2008.jpg/1280px-Partial_solar_eclipse_in_Helsinki_2008.jpg" - Network accessline 285
"bottomImages": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/20100726_Kalamitsi_Beach_Ionian_Sea_Lefkada_island_Greece.jpg/1280px-20100726_Kalamitsi_Beach_Ionian_Sea_Lefkada_island_Greece.jpg", - Network accessline 286
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/20100726_Kalamitsi_Beach_Ionian_Sea_Lefkada_island_Greece.jpg/1280px-20100726_Kalamitsi_Beach_Ionian_Sea_Lefkada_island_Greece.jpg", "https://upload.wikime - Network accessline 287
"https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/20100726_Kalamitsi_Beach_Ionian_Sea_Lefkada_island_Greece.jpg/1280px-20100726_Kalamitsi_Beach_Ionian_Sea_Lefkada_island_Greece.jpg", - Network accessline 288
"https://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/Ronda_la_vieja.jpg/1280px-Ronda_la_vieja.jpg" - Network accessline 289
], [ "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Kluane_National_Park_1983.jpg/1280px-Kluane_National_Park_1983.jpg", - Network accessline 290
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Kluane_National_Park_1983.jpg/1280px-Kluane_National_Park_1983.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Kiyomizu-dera%2C_Kyoto%2C_J - Network accessline 291
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Kluane_National_Park_1983.jpg/1280px-Kluane_National_Park_1983.jpg", - Network accessline 292
"https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Kiyomizu-dera%2C_Kyoto%2C_Japan_-_panoramio.jpg/1280px-Kiyomizu-dera%2C_Kyoto%2C_Japan_-_panoramio.jpg" - Network accessline 300
"data": { "backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Balaton_Hungary_Landscape.jpg/1280px-Balaton_Hungary_Landscape.jpg", - Network accessline 301
"backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Balaton_Hungary_Landscape.jpg/1280px-Balaton_Hungary_Landscape.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Broadway_tow - Network accessline 302
"https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Balaton_Hungary_Landscape.jpg/1280px-Balaton_Hungary_Landscape.jpg", - Network accessline 303
"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Broadway_tower_edit.jpg/1280px-Broadway_tower_edit.jpg" - Network accessline 309
"topImages": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Glasgow_university.jpg/1280px-Glasgow_university.jpg", - Network accessline 310
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Glasgow_university.jpg/1280px-Glasgow_university.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Peacock_Butterfly_Inari.jpg/1280px-Peacoc - Network accessline 311
"https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Glasgow_university.jpg/1280px-Glasgow_university.jpg", - Network accessline 312
"https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Peacock_Butterfly_Inari.jpg/1280px-Peacock_Butterfly_Inari.jpg" - Network accessline 313
], [ "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Fire_breathing_2_Luc_Viatour.jpg/1280px-Fire_breathing_2_Luc_Viatour.jpg", - Network accessline 314
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Fire_breathing_2_Luc_Viatour.jpg/1280px-Fire_breathing_2_Luc_Viatour.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Museum_of_Contemporar - Network accessline 315
"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Fire_breathing_2_Luc_Viatour.jpg/1280px-Fire_breathing_2_Luc_Viatour.jpg", - Network accessline 316
"https://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Museum_of_Contemporary_Art_Belgrade.jpg/1280px-Museum_of_Contemporary_Art_Belgrade.jpg" - Network accessline 318
], "sideImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Tulip_Streaked_Broken_by_Virus.jpg/1280px-Tulip_Streaked_Broken_by_Virus.jpg", - Network accessline 319
"sideImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Tulip_Streaked_Broken_by_Virus.jpg/1280px-Tulip_Streaked_Broken_by_Virus.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/BMW_I8_C - Network accessline 320
"https://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Tulip_Streaked_Broken_by_Virus.jpg/1280px-Tulip_Streaked_Broken_by_Virus.jpg", - Network accessline 321
"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/BMW_I8_Concept_IAA_2011.jpg/1280px-BMW_I8_Concept_IAA_2011.jpg" - Network accessline 323
"bottomImages": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Ferry_building_Wellington.jpg/1280px-Ferry_building_Wellington.jpg", - Network accessline 324
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Ferry_building_Wellington.jpg/1280px-Ferry_building_Wellington.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/American_horse.jpg/1280px-A - Network accessline 325
"https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Ferry_building_Wellington.jpg/1280px-Ferry_building_Wellington.jpg", - Network accessline 326
"https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/American_horse.jpg/1280px-American_horse.jpg" - Network accessline 334
"data": { "backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Rio_from_space_at_night.jpg/1280px-Rio_from_space_at_night.jpg", - Network accessline 335
"backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Rio_from_space_at_night.jpg/1280px-Rio_from_space_at_night.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Everest_North_Fa - Network accessline 336
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Rio_from_space_at_night.jpg/1280px-Rio_from_space_at_night.jpg", - Network accessline 337
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg/1280px-Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg" - Network accessline 343
"topImages": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg/1280px-Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg", - Network accessline 344
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg/1280px-Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg", "https://upload.wi - Network accessline 345
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg/1280px-Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg", - Network accessline 346
"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Sydney_Opera_House_-_Dec_2008.jpg/1280px-Sydney_Opera_House_-_Dec_2008.jpg" - Network accessline 348
], "sideImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg/1280px-Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg", - Network accessline 349
"sideImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg/1280px-Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg", "https://upload.wikimedia.org/wikipedia - Network accessline 350
"https://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg/1280px-Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg", - Network accessline 351
"https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/The_Sun_by_the_Atmospheric_Imaging_Assembly_of_NASA%27s_Solar_Dynamics_Observatory_-_20100819.jpg/1280px-The_Sun_by_the_Atmospheric_Imaging_Assembly_of_NASA%27s_Solar_Dynamics_Obser - Network accessline 359
"data": { "backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg", - Network accessline 360
"backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fr - Network accessline 361
"https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg", - Network accessline 362
"https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg" - Network accessline 370
"images": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Hopetoun_falls.jpg/1280px-Hopetoun_falls.jpg", - Network accessline 371
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Hopetoun_falls.jpg/1280px-Hopetoun_falls.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Example.jpg/1280px-Example.jpg" - Network accessline 372
"https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Hopetoun_falls.jpg/1280px-Hopetoun_falls.jpg", - Network accessline 373
"https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Example.jpg/1280px-Example.jpg" - Network accessline 374
], [ "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/1280px-PNG_transparency_demonstration_1.png", - Network accessline 375
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/1280px-PNG_transparency_demonstration_1.png", "https://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Gull_ - Network accessline 376
"https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/1280px-PNG_transparency_demonstration_1.png", - Network accessline 377
"https://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Gull_portrait_ca_usa.jpg/1280px-Gull_portrait_ca_usa.jpg" - Network accessline 384
"images": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Dhaulagiri_from_shining.jpg/1280px-Dhaulagiri_from_shining.jpg", - Network accessline 385
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Dhaulagiri_from_shining.jpg/1280px-Dhaulagiri_from_shining.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Good_Food_Display_-_NCI - Network accessline 386
"https://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Dhaulagiri_from_shining.jpg/1280px-Dhaulagiri_from_shining.jpg", - Network accessline 387
"https://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Good_Food_Display_-_NCI_Visuals_Online.jpg/1280px-Good_Food_Display_-_NCI_Visuals_Online.jpg", - Network accessline 388
"https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/1280px-Image_created_with_a_mobile_phone.png" - Network accessline 389
], "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Iguazu_Falls.jpg/1280px-Iguazu_Falls.jpg" ] - Network accessline 390
"https://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Iguazu_Falls.jpg/1280px-Iguazu_Falls.jpg" - Network accessline 395
"description": "百年历史的俄式木刻楞建筑改造,保留原始风貌的同时配备现代设施,体验正宗俄罗斯族生活方式。", "images": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Phoenix_Islands_-_panoramio.jpg/1280px-Phoenix_Islands_-_panoramio.jpg", - Network accessline 396
"images": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Phoenix_Islands_-_panoramio.jpg/1280px-Phoenix_Islands_-_panoramio.jpg", [ - Network accessline 397
"https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Phoenix_Islands_-_panoramio.jpg/1280px-Phoenix_Islands_-_panoramio.jpg", - Network accessline 398
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Clouds_over_the_Atlantic_Ocean.jpg/1280px-Clouds_over_the_Atlantic_Ocean.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Cumulus_c - Network accessline 399
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Clouds_over_the_Atlantic_Ocean.jpg/1280px-Clouds_over_the_Atlantic_Ocean.jpg", - Network accessline 400
"https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Cumulus_clouds_over_the_Atlantic.jpg/1280px-Cumulus_clouds_over_the_Atlantic.jpg" - Network accessline 407
"images": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/Water_drop_impact_on_a_water-surface_-_2.jpg/1280px-Water_drop_impact_on_a_water-surface_-_2.jpg", - Network accessline 408
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/Water_drop_impact_on_a_water-surface_-_2.jpg/1280px-Water_drop_impact_on_a_water-surface_-_2.jpg", "https://upload.wikimedia.org/wikipedia/commons/ - Network accessline 409
"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/Water_drop_impact_on_a_water-surface_-_2.jpg/1280px-Water_drop_impact_on_a_water-surface_-_2.jpg", - Network accessline 410
"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Copenhagen_-_the_little_mermaid_statue_-_2013.jpg/1280px-Copenhagen_-_the_little_mermaid_statue_-_2013.jpg" - Network accessline 417
"images": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Eiffel_tower_from_champs_de_mars.jpg/1280px-Eiffel_tower_from_champs_de_mars.jpg", - Network accessline 418
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Eiffel_tower_from_champs_de_mars.jpg/1280px-Eiffel_tower_from_champs_de_mars.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Big_B - Network accessline 419
"https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Eiffel_tower_from_champs_de_mars.jpg/1280px-Eiffel_tower_from_champs_de_mars.jpg", - Network accessline 420
"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Big_Ben_Clock_Tower_London-may_2007.jpg/1280px-Big_Ben_Clock_Tower_London-may_2007.jpg" - Network accessline 421
], [ "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Beijing_national_stadium.jpg/1280px-Beijing_national_stadium.jpg", - Network accessline 422
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Beijing_national_stadium.jpg/1280px-Beijing_national_stadium.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/ - Network accessline 423
"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Beijing_national_stadium.jpg/1280px-Beijing_national_stadium.jpg", - Network accessline 424
"https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Fronalpstock_big.jpg/1280px-Fronalpstock_big.jpg" - Network accessline 434
"data": { "backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Partial_solar_eclipse_in_Helsinki_2008.jpg/1280px-Partial_solar_eclipse_in_Helsinki_2008.jpg", - Network accessline 435
"backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Partial_solar_eclipse_in_Helsinki_2008.jpg/1280px-Partial_solar_eclipse_in_Helsinki_2008.jpg", "https://upload.wikimedia.org/wikipedia/commo - Network accessline 436
"https://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Partial_solar_eclipse_in_Helsinki_2008.jpg/1280px-Partial_solar_eclipse_in_Helsinki_2008.jpg", - Network accessline 437
"https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/20100726_Kalamitsi_Beach_Ionian_Sea_Lefkada_island_Greece.jpg/1280px-20100726_Kalamitsi_Beach_Ionian_Sea_Lefkada_island_Greece.jpg" - Network accessline 445
"images": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/Ronda_la_vieja.jpg/1280px-Ronda_la_vieja.jpg", - Network accessline 446
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/Ronda_la_vieja.jpg/1280px-Ronda_la_vieja.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Kluane_National_Park_1983.jpg/1280px-Klua - Network accessline 447
"https://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/Ronda_la_vieja.jpg/1280px-Ronda_la_vieja.jpg", - Network accessline 448
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Kluane_National_Park_1983.jpg/1280px-Kluane_National_Park_1983.jpg" - Network accessline 454
"description": "蒙古族传统吃法,大块羊肉清水煮熟后手撕食用,蘸料简单,最大程度保留羊肉原味。", "images": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Kiyomizu-dera%2C_Kyoto%2C_Japan_-_panoramio.jpg/1280px-Kiyomizu-dera%2C_Kyoto%2C_Japan - Network accessline 455
"images": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Kiyomizu-dera%2C_Kyoto%2C_Japan_-_panoramio.jpg/1280px-Kiyomizu-dera%2C_Kyoto%2C_Japan_-_panoramio.jpg", [ - Network accessline 456
"https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Kiyomizu-dera%2C_Kyoto%2C_Japan_-_panoramio.jpg/1280px-Kiyomizu-dera%2C_Kyoto%2C_Japan_-_panoramio.jpg", - Network accessline 457
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Balaton_Hungary_Landscape.jpg/1280px-Balaton_Hungary_Landscape.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Broadway_tower_edit - Network accessline 458
"https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Balaton_Hungary_Landscape.jpg/1280px-Balaton_Hungary_Landscape.jpg", - Network accessline 459
"https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Broadway_tower_edit.jpg/1280px-Broadway_tower_edit.jpg" - Network accessline 466
"images": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Glasgow_university.jpg/1280px-Glasgow_university.jpg", - Network accessline 467
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Glasgow_university.jpg/1280px-Glasgow_university.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Peacock_Butterfly_Inari.jpg/1280p - Network accessline 468
"https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Glasgow_university.jpg/1280px-Glasgow_university.jpg", - Network accessline 469
"https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Peacock_Butterfly_Inari.jpg/1280px-Peacock_Butterfly_Inari.jpg", - Network accessline 470
"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Fire_breathing_2_Luc_Viatour.jpg/1280px-Fire_breathing_2_Luc_Viatour.jpg" - Network accessline 480
"data": { "backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Museum_of_Contemporary_Art_Belgrade.jpg/1280px-Museum_of_Contemporary_Art_Belgrade.jpg", - Network accessline 481
"backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Museum_of_Contemporary_Art_Belgrade.jpg/1280px-Museum_of_Contemporary_Art_Belgrade.jpg", "https://upload.wikimedia.org/wikipedia/commons/thu - Network accessline 482
"https://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Museum_of_Contemporary_Art_Belgrade.jpg/1280px-Museum_of_Contemporary_Art_Belgrade.jpg", - Network accessline 483
"https://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Tulip_Streaked_Broken_by_Virus.jpg/1280px-Tulip_Streaked_Broken_by_Virus.jpg" - Network accessline 491
"images": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/BMW_I8_Concept_IAA_2011.jpg/1280px-BMW_I8_Concept_IAA_2011.jpg", - Network accessline 492
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/BMW_I8_Concept_IAA_2011.jpg/1280px-BMW_I8_Concept_IAA_2011.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Ferry_building_Wellingt - Network accessline 493
"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/BMW_I8_Concept_IAA_2011.jpg/1280px-BMW_I8_Concept_IAA_2011.jpg", - Network accessline 494
"https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Ferry_building_Wellington.jpg/1280px-Ferry_building_Wellington.jpg" - Network accessline 495
], [ "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/American_horse.jpg/1280px-American_horse.jpg", - Network accessline 496
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/American_horse.jpg/1280px-American_horse.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Rio_from_space_at_night.jpg/1280px-Rio_fr - Network accessline 497
"https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/American_horse.jpg/1280px-American_horse.jpg", - Network accessline 498
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Rio_from_space_at_night.jpg/1280px-Rio_from_space_at_night.jpg" - Network accessline 505
"images": [ [ "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg/1280px-Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg", - Network accessline 506
[ "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg/1280px-Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg", "https://u - Network accessline 507
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg/1280px-Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg", - Network accessline 508
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg/1280px-Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg" - Network accessline 518
"data": { "backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Sydney_Opera_House_-_Dec_2008.jpg/1280px-Sydney_Opera_House_-_Dec_2008.jpg", - Network accessline 519
"backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Sydney_Opera_House_-_Dec_2008.jpg/1280px-Sydney_Opera_House_-_Dec_2008.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Moun - Network accessline 520
"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Sydney_Opera_House_-_Dec_2008.jpg/1280px-Sydney_Opera_House_-_Dec_2008.jpg", - Network accessline 521
"https://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg/1280px-Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg" - Network accessline 531
"data": { "backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Sydney_Opera_House_-_Dec_2008.jpg/1280px-Sydney_Opera_House_-_Dec_2008.jpg", - Network accessline 532
"backgroundImage": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Sydney_Opera_House_-_Dec_2008.jpg/1280px-Sydney_Opera_House_-_Dec_2008.jpg", "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Moun - Network accessline 533
"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Sydney_Opera_House_-_Dec_2008.jpg/1280px-Sydney_Opera_House_-_Dec_2008.jpg", - Network accessline 534
"https://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg/1280px-Mount_Everest_as_seen_from_Drukair2_PLW_edit.jpg"
assets/templates/roadbook-v2/template-roadbook-v2.html
- Network accessline 5
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>路书</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script - Network accessline 6
<title>路书</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdn.jsdelivr.net/npm/jspdf@2.5.1/dist/jspdf.umd. - Network accessline 7
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script> - Network accessline 8
<script src="https://cdn.jsdelivr.net/npm/jspdf@2.5.1/dist/jspdf.umd.min.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script> - Network accessline 5212
fetch('/save', { - Network accessline 5369
} catch (_) { /* keep src */ } try { const res = await fetch(fetchUrl, { credentials: 'same-origin' }); - Network accessline 5370
try { const res = await fetch(fetchUrl, { credentials: 'same-origin' }); if (!res.ok) return; - Network accessline 5371
const res = await fetch(fetchUrl, { credentials: 'same-origin' });
assets/templates/roadbook/template-roadbook.html
assets/templates/shared/image_registry.sample.json
- Network accessline 2
"hotel": { "hotel_bei_jing_nan_001": [ "https://example.com/hotel-001-cover.jpg", - Network accessline 3
"hotel_bei_jing_nan_001": [ "https://example.com/hotel-001-cover.jpg", "https://example.com/hotel-001-room.jpg" - Network accessline 4
"https://example.com/hotel-001-cover.jpg", - Network accessline 5
"https://example.com/hotel-001-room.jpg" - Network accessline 8
"poi": { "poi_gugong_001": [ "https://example.com/poi-gugong-main.jpg", - Network accessline 9
"poi_gugong_001": [ "https://example.com/poi-gugong-main.jpg", "https://example.com/poi-gugong-side.jpg" - Network accessline 10
"https://example.com/poi-gugong-main.jpg", - Network accessline 11
"https://example.com/poi-gugong-side.jpg" - Network accessline 12
], "poi_mutianyu_001": [ "https://example.com/poi-mutianyu-main.jpg", - Network accessline 13
"poi_mutianyu_001": [ "https://example.com/poi-mutianyu-main.jpg", "https://example.com/poi-mutianyu-cablecar.jpg" - Network accessline 14
"https://example.com/poi-mutianyu-main.jpg", - Network accessline 15
"https://example.com/poi-mutianyu-cablecar.jpg"
docs/deepseek-llm-setup.md
- Access to secretsline 12
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Network accessline 22
|------|------| | `DEEPSEEK_API_KEY` | **必填**(与 `OPENAI_API_KEY` 二选一;若两者都设,**优先 `OPENAI_API_KEY`**)。 | | `DEEPSEEK_BASE_URL` | 可选,默认 `https://api.deepseek.com/v1`。 | - Network accessline 23
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Network accessline 24
| `DEEPSEEK_BASE_URL` | 可选,默认 `https://api.deepseek.com/v1`。 | - Network accessline 45
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Network accessline 46
export OPENAI_BASE_URL="https://api.deepseek.com/v1" - Access to secretsline 50
[Credential-related source omitted] - Access to secretsline 76
[Credential-related source omitted] - Network accessline 80
模型与计费以 [DeepSeek 开放平台](https://platform.deepseek.com/) 文档为准。
docs/index.html
- Network accessline 10
<meta property="og:description" content="让 AI Agent 直接交付客户级行程 HTML。简表进、路书出。"> <meta property="og:type" content="website"> <meta property="og:url" content="https://huanyuzhilv.github.io/skills-travel-planner/"> - Network accessline 11
<meta property="og:type" content="website"> <meta property="og:url" content="https://huanyuzhilv.github.io/skills-travel-planner/"> <meta name="twitter:card" content="summary_large_image"> - Network accessline 12
<meta property="og:url" content="https://huanyuzhilv.github.io/skills-travel-planner/"> - Network accessline 13
<meta name="twitter:card" content="summary_large_image"> <link rel="stylesheet" href="style.css"> <link rel="canonical" href="https://huanyuzhilv.github.io/skills-travel-planner/"> - Network accessline 14
<link rel="stylesheet" href="style.css"> <link rel="canonical" href="https://huanyuzhilv.github.io/skills-travel-planner/"> </head> - Network accessline 15
<link rel="canonical" href="https://huanyuzhilv.github.io/skills-travel-planner/"> - Network accessline 23
<a href="#pipeline">流水线</a> <a href="#quickstart">快速开始</a> <a class="btn btn-primary btn-sm" href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub</a> - Network accessline 24
<a href="#quickstart">快速开始</a> <a class="btn btn-primary btn-sm" href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub</a> </nav> - Network accessline 25
<a class="btn btn-primary btn-sm" href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub</a> - Network accessline 35
<p class="subtitle">简表进、路书出。结构化 tripData + 小红书配图 + LLM 润色 + 飞猪酒店,专为定制游顾问与 AI 编程助手设计。</p> <div class="hero-actions"> <a class="btn btn-primary" href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel - Network accessline 36
<div class="hero-actions"> <a class="btn btn-primary" href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub 开源</a> <a class="btn btn-secondary" href="#quickstart">5 分钟上手</a> - Network accessline 37
<a class="btn btn-primary" href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub 开源</a> - Network accessline 154
</div> <pre><code><span class="comment"># 克隆与配置</span> <span class="cmd">git clone</span> https://github.com/huanyuzhilv/skills-travel-planner.git - Network accessline 155
<pre><code><span class="comment"># 克隆与配置</span> <span class="cmd">git clone</span> https://github.com/huanyuzhilv/skills-travel-planner.git <span class="cmd">cd</span> skills-travel-planner - Network accessline 156
<span class="cmd">git clone</span> https://github.com/huanyuzhilv/skills-travel-planner.git - Network accessline 157
<span class="cmd">cd</span> skills-travel-planner <span class="cmd">cp</span> .env.example .env <span class="comment"># 编辑 .env,填入 TIKHUB_API_KEY(https://user.tikhub.io)</span> - Access to secretsline 158
[Credential-related source omitted] - Network accessline 159
[Credential-related source omitted] - Access to secretsline 159
[Credential-related source omitted] - Network accessline 189
<tbody> <tr> <td><a href="https://user.tikhub.io" target="_blank" rel="noopener">TikHub API</a></td> - Network accessline 190
<tr> <td><a href="https://user.tikhub.io" target="_blank" rel="noopener">TikHub API</a></td> <td>小红书搜索、配图、每日正文素材</td> - Network accessline 191
<td><a href="https://user.tikhub.io" target="_blank" rel="noopener">TikHub API</a></td> - Network accessline 199
</tr> <tr> <td><a href="https://github.com/alibaba-flyai/flyai-skill" target="_blank" rel="noopener">flyai</a></td> - Network accessline 200
<tr> <td><a href="https://github.com/alibaba-flyai/flyai-skill" target="_blank" rel="noopener">flyai</a></td> <td>飞猪酒店简介、交通配图</td> - Network accessline 201
<td><a href="https://github.com/alibaba-flyai/flyai-skill" target="_blank" rel="noopener">flyai</a></td> - Network accessline 219
<p><strong>skills-travel-planner</strong> — 开源 AI 路书生成工具 · 玩点旅行</p> <p> <a href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub</a> - Network accessline 220
<p> <a href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub</a> · MIT License © 2026 <a href="https://github.com/huanyuzhilv" target="_blank" rel="noopener">huanyuzhilv</a> - Network accessline 221
<a href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub</a> - Network accessline 222
· MIT License © 2026 <a href="https://github.com/huanyuzhilv" target="_blank" rel="noopener">huanyuzhilv</a>
docs/roadbook-input-to-output-keywords.md
- Network accessline 116
| **拉素材关键词** | `daily_enrich_description_keywords(data, theme, daily_ordinal=…)` — 与每日配图类似的 **theme 切段 + 日序轮换后缀**,并可含 **`{core} {段} 攻略/风景`**。 | | **写入字段** | 仅 **`daily.data.description`**(及成功更新时的 `meta.updatedAt`)。 | | **LLM** | 可选 **`OPENA - Network accessline 118
[Credential-related source omitted] - Access to secretsline 118
[Credential-related source omitted]
install.sh
- Executable scriptline 1
#!/usr/bin/env bash - Dangerous shell operationline 16
# read from /dev/tty so it works under curl | bash - Network accessline 16
# read from /dev/tty so it works under curl | bash - Dangerous shell operationline 133
rm -rf "${target}/assets/templates" - Network accessline 183
port_open() { (echo > /dev/tcp/localhost/"$1") 2>/dev/null - Dangerous shell operationline 184
(echo > /dev/tcp/localhost/"$1") 2>/dev/null - Network accessline 184
(echo > /dev/tcp/localhost/"$1") 2>/dev/null - Network accessline 192
check_flyai() { printf "\n ${BOLD}[1/3] flyai${NC} — 飞猪实时数据(机票 / 酒店 / 景点门票)\n" printf " ${DIM}https://github.com/alibaba-flyai/flyai-skill${NC}\n\n" - Network accessline 194
printf " ${DIM}https://github.com/alibaba-flyai/flyai-skill${NC}\n\n" - Network accessline 291
check_grok_search() { printf "\n ${BOLD}[3/3] grok-search MCP${NC} — 网络搜索(通用信息检索)\n" printf " ${DIM}https://github.com/GuDaStudio/GrokSearch (branch: grok-with-tavily)${NC}\n\n" - Network accessline 293
printf " ${DIM}https://github.com/GuDaStudio/GrokSearch (branch: grok-with-tavily)${NC}\n\n" - Dangerous shell operationline 383
if eval "$check" &>/dev/null; then
llms.txt
package.json
- Executable scriptline 1
Executable file
scripts/analyze_xhs_same_day_overlap.py
scripts/brand_logo.py
- Executable scriptline 1
Executable file
scripts/deliver_roadbook_v2.py
scripts/enrich_daily_descriptions_from_xhs.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 4
[Credential-related source omitted] - Access to secretsline 11
[Credential-related source omitted] - Network accessline 14
环境变量(可选 LLM): - **优先** ``OPENAI_API_KEY`` + ``OPENAI_BASE_URL``(默认 ``https://api.openai.com/v1``)+ ``OPENAI_MODEL``(默认 ``gpt-4o-mini``)。 - Network accessline 15
[Credential-related source omitted] - Access to secretsline 15
[Credential-related source omitted] - Network accessline 16
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Access to secretsline 73
[Credential-related source omitted] - Possible obfuscationline 103
r"[0-9]<U+FE0F>⃣|#\S+\[话题\])" - Access to secretsline 144
[Credential-related source omitted] - Access to secretsline 145
[Credential-related source omitted] - Network accessline 167
} url = f"{base}/chat/completions" req = urllib.request.Request( - Network accessline 168
url = f"{base}/chat/completions" req = urllib.request.Request( url, - Network accessline 169
req = urllib.request.Request( - Access to secretsline 174
[Credential-related source omitted] - Network accessline 177
) try: with urllib.request.urlopen(req, timeout=timeout_s) as resp: - Network accessline 178
try: with urllib.request.urlopen(req, timeout=timeout_s) as resp: raw_json = resp.read().decode("utf-8") - Network accessline 179
with urllib.request.urlopen(req, timeout=timeout_s) as resp: - Network accessline 476
MIN_RAW_MATERIAL_CHARS = 80 _WIKI_UA = "RoadbookDailyEnrich/1.1 (skills-travel-planner; policy:https://meta.wikimedia.org/wiki/User-Agent_policy)" - Network accessline 477
_WIKI_UA = "RoadbookDailyEnrich/1.1 (skills-travel-planner; policy:https://meta.wikimedia.org/wiki/User-Agent_policy)" - Network accessline 563
if len(q) < 2: return "" op = "https://zh.wikipedia.org/w/api.php?" + urllib.parse.urlencode( - Network accessline 564
return "" op = "https://zh.wikipedia.org/w/api.php?" + urllib.parse.urlencode( { - Network accessline 565
op = "https://zh.wikipedia.org/w/api.php?" + urllib.parse.urlencode( - Network accessline 572
} ) req = urllib.request.Request(op, headers={"User-Agent": _WIKI_UA}) - Network accessline 573
) req = urllib.request.Request(op, headers={"User-Agent": _WIKI_UA}) try: - Network accessline 574
req = urllib.request.Request(op, headers={"User-Agent": _WIKI_UA}) - Network accessline 575
try: with urllib.request.urlopen(req, timeout=timeout) as resp: data = json.loads(resp.read().decode("utf-8", errors="replace")) - Network accessline 576
with urllib.request.urlopen(req, timeout=timeout) as resp: - Network accessline 584
return "" title = str(titles[0]) qp = "https://zh.wikipedia.org/w/api.php?" + urllib.parse.urlencode( - Network accessline 585
title = str(titles[0]) qp = "https://zh.wikipedia.org/w/api.php?" + urllib.parse.urlencode( { - Network accessline 586
qp = "https://zh.wikipedia.org/w/api.php?" + urllib.parse.urlencode( - Network accessline 595
} ) req2 = urllib.request.Request(qp, headers={"User-Agent": _WIKI_UA}) - Network accessline 596
) req2 = urllib.request.Request(qp, headers={"User-Agent": _WIKI_UA}) try: - Network accessline 597
req2 = urllib.request.Request(qp, headers={"User-Agent": _WIKI_UA}) - Network accessline 598
try: with urllib.request.urlopen(req2, timeout=timeout) as resp: blob = json.loads(resp.read().decode("utf-8", errors="replace")) - Network accessline 599
with urllib.request.urlopen(req2, timeout=timeout) as resp: - Access to secretsline 747
[Credential-related source omitted] - Access to secretsline 748
[Credential-related source omitted] - Access to secretsline 754
[Credential-related source omitted] - Access to secretsline 866
[Credential-related source omitted] - Access to secretsline 891
[Credential-related source omitted]
scripts/enrich_hotel_intro_from_flyai.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 36
WIKI_UA = "RoadbookHotelEnrich/1.0 (skills-travel-planner; https://meta.wikimedia.org/wiki/User-Agent_policy)" - Network accessline 43
if len(q) < 2: return "" op = "https://zh.wikipedia.org/w/api.php?" + urllib.parse.urlencode( - Network accessline 44
return "" op = "https://zh.wikipedia.org/w/api.php?" + urllib.parse.urlencode( { - Network accessline 45
op = "https://zh.wikipedia.org/w/api.php?" + urllib.parse.urlencode( - Network accessline 52
} ) req = urllib.request.Request(op, headers={"User-Agent": WIKI_UA}) - Network accessline 53
) req = urllib.request.Request(op, headers={"User-Agent": WIKI_UA}) try: - Network accessline 54
req = urllib.request.Request(op, headers={"User-Agent": WIKI_UA}) - Network accessline 55
try: with urllib.request.urlopen(req, timeout=timeout) as resp: data = json.loads(resp.read().decode("utf-8", errors="replace")) - Network accessline 56
with urllib.request.urlopen(req, timeout=timeout) as resp: - Network accessline 64
return "" title = str(titles[0]) qp = "https://zh.wikipedia.org/w/api.php?" + urllib.parse.urlencode( - Network accessline 65
title = str(titles[0]) qp = "https://zh.wikipedia.org/w/api.php?" + urllib.parse.urlencode( { - Network accessline 66
qp = "https://zh.wikipedia.org/w/api.php?" + urllib.parse.urlencode( - Network accessline 75
} ) req2 = urllib.request.Request(qp, headers={"User-Agent": WIKI_UA}) - Network accessline 76
) req2 = urllib.request.Request(qp, headers={"User-Agent": WIKI_UA}) try: - Network accessline 77
req2 = urllib.request.Request(qp, headers={"User-Agent": WIKI_UA}) - Network accessline 78
try: with urllib.request.urlopen(req2, timeout=timeout) as resp: blob = json.loads(resp.read().decode("utf-8", errors="replace")) - Network accessline 79
with urllib.request.urlopen(req2, timeout=timeout) as resp: - Access to secretsline 210
[Credential-related source omitted]
scripts/enrich_roadbook_copy_from_llm.py
scripts/fill_xhs_images.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 4
[Credential-related source omitted] - Access to secretsline 74
[Credential-related source omitted] - Access to secretsline 87
[Credential-related source omitted] - Access to secretsline 786
[Credential-related source omitted] - Access to secretsline 791
[Credential-related source omitted] - Access to secretsline 808
[Credential-related source omitted] - Access to secretsline 809
[Credential-related source omitted] - Access to secretsline 825
[Credential-related source omitted]
scripts/flyai_hotel_shared.py
- Executable scriptline 1
Executable file
scripts/image_fallback_chain.py
- Executable scriptline 1
Executable file - Network accessline 18
USER_AGENT = "RoadbookImageFallback/1.0 (skills-travel-planner; +https://example.invalid)" - Network accessline 19
COMMONS_API = "https://commons.wikimedia.org/w/api.php" - Network accessline 385
} url = COMMONS_API + "?" + urllib.parse.urlencode(params) req = urllib.request.Request(url, headers={"User-Agent": USER_AGENT}) - Network accessline 386
url = COMMONS_API + "?" + urllib.parse.urlencode(params) req = urllib.request.Request(url, headers={"User-Agent": USER_AGENT}) try: - Network accessline 387
req = urllib.request.Request(url, headers={"User-Agent": USER_AGENT}) - Network accessline 388
try: with urllib.request.urlopen(req, timeout=timeout) as resp: blob = json.loads(resp.read().decode("utf-8", errors="replace")) - Network accessline 389
with urllib.request.urlopen(req, timeout=timeout) as resp: - Network accessline 412
} url2 = COMMONS_API + "?" + urllib.parse.urlencode(params2) req2 = urllib.request.Request(url2, headers={"User-Agent": USER_AGENT}) - Network accessline 413
url2 = COMMONS_API + "?" + urllib.parse.urlencode(params2) req2 = urllib.request.Request(url2, headers={"User-Agent": USER_AGENT}) try: - Network accessline 414
req2 = urllib.request.Request(url2, headers={"User-Agent": USER_AGENT}) - Network accessline 415
try: with urllib.request.urlopen(req2, timeout=timeout) as resp: pages = (((json.loads(resp.read().decode("utf-8", errors="replace")) or {}).get("query") or {}).get( - Network accessline 416
with urllib.request.urlopen(req2, timeout=timeout) as resp: - Network accessline 452
sig = hashlib.sha256(seed.encode("utf-8")).hexdigest()[:10] base = "https://placehold.co/1600x900/e2e8f0/64748b.png" - Network accessline 453
base = "https://placehold.co/1600x900/e2e8f0/64748b.png"
scripts/llm_openai_compat.py
- Executable scriptline 1
Executable file - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Network accessline 27
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Network accessline 28
if oa: base = (os.environ.get("OPENAI_BASE_URL") or "https://api.openai.com/v1").rstrip("/") return oa, base - Network accessline 29
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Network accessline 33
[Credential-related source omitted] - Access to secretsline 33
[Credential-related source omitted] - Network accessline 34
[Credential-related source omitted] - Access to secretsline 34
[Credential-related source omitted] - Network accessline 35
or "https://api.deepseek.com/v1" - Access to secretsline 42
[Credential-related source omitted] - Access to secretsline 43
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 47
[Credential-related source omitted] - Access to secretsline 48
[Credential-related source omitted] - Access to secretsline 61
[Credential-related source omitted] - Access to secretsline 62
[Credential-related source omitted] - Network accessline 73
} url = f"{base}/chat/completions" req = urllib.request.Request( - Network accessline 74
url = f"{base}/chat/completions" req = urllib.request.Request( url, - Network accessline 75
req = urllib.request.Request( - Access to secretsline 80
[Credential-related source omitted] - Network accessline 83
) try: with urllib.request.urlopen(req, timeout=timeout_s) as resp: - Network accessline 84
try: with urllib.request.urlopen(req, timeout=timeout_s) as resp: raw_json = resp.read().decode("utf-8") - Network accessline 85
with urllib.request.urlopen(req, timeout=timeout_s) as resp:
scripts/merge_intake_fee_service.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/probe-flyai-hotel.sh
scripts/refill_transport_images_from_flyai.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/regenerate_roadbook_v2.sh
- Executable scriptline 1
#!/usr/bin/env bash
scripts/relink_local_roadbook_images.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/repo_dotenv.py
- Executable scriptline 1
[Credential-related source omitted] - Access to secretsline 1
[Credential-related source omitted] - Access to secretsline 10
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 47
[Credential-related source omitted] - Access to secretsline 49
[Credential-related source omitted] - Access to secretsline 50
[Credential-related source omitted]
scripts/roadbook_constants.py
- Executable scriptline 1
Executable file
scripts/roadbook_image_alternate_defaults.py
scripts/roadbook_image_engine/__init__.py
- Executable scriptline 1
Executable file
scripts/roadbook_image_engine/cache_store.py
scripts/roadbook_image_engine/diversity.py
- Executable scriptline 1
Executable file
scripts/roadbook_image_engine/quality_score.py
- Executable scriptline 1
Executable file
scripts/roadbook_image_engine/visual_hash.py
- Executable scriptline 1
Executable file - Network accessline 24
def download_image_bytes(url: str, timeout_s: float = 25.0) -> bytes: req = urllib.request.Request( - Network accessline 25
req = urllib.request.Request( - Network accessline 26
url, headers={"User-Agent": "RoadbookImageEngine/1.0 (+https://local)"}, ) - Network accessline 27
headers={"User-Agent": "RoadbookImageEngine/1.0 (+https://local)"}, ) with urllib.request.urlopen(req, timeout=timeout_s) as resp: - Network accessline 28
) with urllib.request.urlopen(req, timeout=timeout_s) as resp: return resp.read() - Network accessline 29
with urllib.request.urlopen(req, timeout=timeout_s) as resp: - Access to secretsline 57
[Credential-related source omitted]
scripts/roadbook_intake.py
scripts/roadbook_pdf_playwright.py
- Executable scriptline 1
Executable file
scripts/roadbook_print_layout.py
- Executable scriptline 1
Executable file
scripts/setup_xhs_mcporter.sh
scripts/sync_brand_logo.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/tikhub_mcp_stdio.sh
scripts/tikhub_xhs_cache.py
scripts/tikhub_xhs_client.py
- Executable scriptline 1
Executable file - Network accessline 22
API_BASE = os.getenv("TIKHUB_API_BASE", "https://api.tikhub.io").rstrip("/") - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Network accessline 37
"""惰性创建/复用模块级 httpx.Client(keep-alive + thread-safe)。 - Network accessline 48
except Exception: # noqa: BLE001 pass _SHARED_CLIENT = httpx.Client( - Network accessline 49
pass _SHARED_CLIENT = httpx.Client( timeout=timeout, - Network accessline 50
_SHARED_CLIENT = httpx.Client( - Network accessline 51
timeout=timeout, verify=False, limits=httpx.Limits( - Network accessline 52
verify=False, limits=httpx.Limits( max_keepalive_connections=16, - Network accessline 53
limits=httpx.Limits( - Access to secretsline 81
[Credential-related source omitted] - Access to secretsline 82
[Credential-related source omitted]
scripts/tikhub_xhs_feeds.py
- Executable scriptline 1
Executable file - Access to secretsline 16
[Credential-related source omitted] - Access to secretsline 20
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Network accessline 39
raise RuntimeError( "TikHub 预检失败:search_notes 未返回可用笔记。" "请检查 TIKHUB_API_KEY、账户余额与 https://docs.tikhub.io" - Network accessline 40
"TikHub 预检失败:search_notes 未返回可用笔记。" "请检查 TIKHUB_API_KEY、账户余额与 https://docs.tikhub.io" ) - Network accessline 41
[Credential-related source omitted] - Access to secretsline 41
[Credential-related source omitted]
scripts/tikhub_xhs_mcp_stdio.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/tikhub_xhs_search.py
scripts/tripdata_content_limits.py
- Executable scriptline 1
Executable file
scripts/validate_roadbook_image_alternates.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/xhs_image_url_rules.py
scripts/xhs_search_keyword_rules.py
- Executable scriptline 1
Executable file
setup.sh
- Executable scriptline 1
#!/usr/bin/env bash - Dangerous shell operationline 8
trap 'rm -rf "$TMP"' EXIT - Network accessline 10
printf "\n Downloading travel-planner skill...\n" curl -fsSL "https://github.com/${REPO}/archive/${BRANCH}.tar.gz" | tar xz -C "$TMP" --strip-components=1 - Network accessline 11
curl -fsSL "https://github.com/${REPO}/archive/${BRANCH}.tar.gz" | tar xz -C "$TMP" --strip-components=1
skill.md
- Access to secretsline 110
[Credential-related source omitted] - Network accessline 276
1. **中国天气网** (weather.com.cn) 15天预报 — 通过 mcp__grok-search__web_search 搜索 `[目的地] 15天天气预报 site:weather.com.cn` 2. **和风天气** (qweather.com) 30天预报 — 搜索获取页面URL后 mcp__grok-search__web_fetch 抓取 3. **wttr.in API** — 直接 `curl "https://wttr.in/[城市]?fo - Network accessline 277
2. **和风天气** (qweather.com) 30天预报 — 搜索获取页面URL后 mcp__grok-search__web_fetch 抓取 3. **wttr.in API** — 直接 `curl "https://wttr.in/[城市]?format=j1"` 获取3天JSON预报(适合近期出行) 4. AccuWeather — 英文备选 - Network accessline 278
3. **wttr.in API** — 直接 `curl "https://wttr.in/[城市]?format=j1"` 获取3天JSON预报(适合近期出行) - Network accessline 418
[Credential-related source omitted] - Access to secretsline 418
[Credential-related source omitted] - Access to secretsline 422
[Credential-related source omitted] - Access to secretsline 442
[Credential-related source omitted] - Network accessline 632
weather: { icon: "sunny", high: 24, low: 15 }, activities: [ { time: "09:00", name: "伏见稻荷大社", duration: "2h", cost: 0, transport: "JR奈良线", note: "千鸟居打卡", imageUrl: "https://..." }, - Network accessline 633
activities: [ { time: "09:00", name: "伏见稻荷大社", duration: "2h", cost: 0, transport: "JR奈良线", note: "千鸟居打卡", imageUrl: "https://..." }, { time: "12:00", name: "午餐", meal: { name: "餐厅名", cuisine: "日料", perPerson: 80, recommende - Network accessline 634
{ time: "09:00", name: "伏见稻荷大社", duration: "2h", cost: 0, transport: "JR奈良线", note: "千鸟居打卡", imageUrl: "https://..." }, - Network accessline 638
], hotels: [ { name: "酒店名", area: "区域", pricePerNight: 600, highlights: "近地铁;含早餐", rating: "4.5", imageUrl: "https://..." } - Network accessline 639
hotels: [ { name: "酒店名", area: "区域", pricePerNight: 600, highlights: "近地铁;含早餐", rating: "4.5", imageUrl: "https://..." } ], - Network accessline 640
{ name: "酒店名", area: "区域", pricePerNight: 600, highlights: "近地铁;含早餐", rating: "4.5", imageUrl: "https://..." } - Access to secretsline 707
[Credential-related source omitted] - Access to secretsline 770
[Credential-related source omitted] - Access to secretsline 907
[Credential-related source omitted]
website/index.html
- Network accessline 10
<meta property="og:description" content="让 AI Agent 直接交付客户级行程 HTML。简表进、路书出。"> <meta property="og:type" content="website"> <meta property="og:url" content="https://huanyuzhilv.github.io/skills-travel-planner/"> - Network accessline 11
<meta property="og:type" content="website"> <meta property="og:url" content="https://huanyuzhilv.github.io/skills-travel-planner/"> <meta property="og:image" content="https://huanyuzhilv.github.io/skills-travel-planner/og-image.png"> - Network accessline 12
<meta property="og:url" content="https://huanyuzhilv.github.io/skills-travel-planner/"> - Network accessline 13
<meta property="og:image" content="https://huanyuzhilv.github.io/skills-travel-planner/og-image.png"> - Network accessline 15
<meta property="og:image:height" content="630"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:image" content="https://huanyuzhilv.github.io/skills-travel-planner/og-image.png"> - Network accessline 16
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:image" content="https://huanyuzhilv.github.io/skills-travel-planner/og-image.png"> <link rel="stylesheet" href="style.css"> - Network accessline 17
<meta name="twitter:image" content="https://huanyuzhilv.github.io/skills-travel-planner/og-image.png"> - Network accessline 18
<link rel="stylesheet" href="style.css"> <link rel="canonical" href="https://huanyuzhilv.github.io/skills-travel-planner/"> <link rel="alternate" type="text/plain" href="llms.txt" title="LLM-readable summary"> - Network accessline 19
<link rel="canonical" href="https://huanyuzhilv.github.io/skills-travel-planner/"> - Network accessline 22
<script type="application/ld+json"> { "@context": "https://schema.org", - Network accessline 23
{ "@context": "https://schema.org", "@graph": [ - Network accessline 24
"@context": "https://schema.org", - Network accessline 26
{ "@type": "WebSite", "@id": "https://huanyuzhilv.github.io/skills-travel-planner/#website", - Network accessline 27
"@type": "WebSite", "@id": "https://huanyuzhilv.github.io/skills-travel-planner/#website", "url": "https://huanyuzhilv.github.io/skills-travel-planner/", - Network accessline 28
"@id": "https://huanyuzhilv.github.io/skills-travel-planner/#website", - Network accessline 29
"url": "https://huanyuzhilv.github.io/skills-travel-planner/", - Network accessline 32
"inLanguage": ["zh-CN", "en"], "publisher": { "@id": "https://huanyuzhilv.github.io/skills-travel-planner/#organization" - Network accessline 33
"publisher": { "@id": "https://huanyuzhilv.github.io/skills-travel-planner/#organization" } - Network accessline 34
"@id": "https://huanyuzhilv.github.io/skills-travel-planner/#organization" - Network accessline 37
{ "@type": "Organization", "@id": "https://huanyuzhilv.github.io/skills-travel-planner/#organization", - Network accessline 38
"@type": "Organization", "@id": "https://huanyuzhilv.github.io/skills-travel-planner/#organization", "name": "huanyuzhilv", - Network accessline 39
"@id": "https://huanyuzhilv.github.io/skills-travel-planner/#organization", - Network accessline 40
"name": "huanyuzhilv", "url": "https://github.com/huanyuzhilv" }, - Network accessline 41
"url": "https://github.com/huanyuzhilv" - Network accessline 43
{ "@type": "SoftwareApplication", "@id": "https://huanyuzhilv.github.io/skills-travel-planner/#software", - Network accessline 44
"@type": "SoftwareApplication", "@id": "https://huanyuzhilv.github.io/skills-travel-planner/#software", "name": "skills-travel-planner", - Network accessline 45
"@id": "https://huanyuzhilv.github.io/skills-travel-planner/#software", - Network accessline 51
], "description": "Open-source Agent Skill that converts txt/docx itinerary briefs into structured tripData.json and client-ready HTML/PDF roadbooks. Features Xiaohongshu image enrichment, optional LLM copywriting, and FlyAI hotel d - Network accessline 52
"description": "Open-source Agent Skill that converts txt/docx itinerary briefs into structured tripData.json and client-ready HTML/PDF roadbooks. Features Xiaohongshu image enrichment, optional LLM copywriting, and FlyAI hotel data. 开源 AI - Network accessline 53
"url": "https://huanyuzhilv.github.io/skills-travel-planner/", - Network accessline 56
"operatingSystem": "Cross-platform", "softwareVersion": "1.0.0", "releaseNotes": "https://github.com/huanyuzhilv/skills-travel-planner/releases/tag/v1.0.0", - Network accessline 57
"softwareVersion": "1.0.0", "releaseNotes": "https://github.com/huanyuzhilv/skills-travel-planner/releases/tag/v1.0.0", "downloadUrl": "https://github.com/huanyuzhilv/skills-travel-planner", - Network accessline 58
"releaseNotes": "https://github.com/huanyuzhilv/skills-travel-planner/releases/tag/v1.0.0", - Network accessline 59
"downloadUrl": "https://github.com/huanyuzhilv/skills-travel-planner", - Network accessline 60
"codeRepository": "https://github.com/huanyuzhilv/skills-travel-planner", - Network accessline 61
"license": "https://spdx.org/licenses/MIT.html", - Network accessline 75
"price": "0", "priceCurrency": "USD", "availability": "https://schema.org/InStock" - Network accessline 76
"priceCurrency": "USD", "availability": "https://schema.org/InStock" }, - Network accessline 77
"availability": "https://schema.org/InStock" - Network accessline 80
"@type": "Organization", "name": "huanyuzhilv", "url": "https://github.com/huanyuzhilv" - Network accessline 81
"name": "huanyuzhilv", "url": "https://github.com/huanyuzhilv" }, - Network accessline 82
"url": "https://github.com/huanyuzhilv" - Network accessline 85
"@type": "Organization", "name": "huanyuzhilv", "url": "https://github.com/huanyuzhilv" - Network accessline 86
"name": "huanyuzhilv", "url": "https://github.com/huanyuzhilv" }, - Network accessline 87
"url": "https://github.com/huanyuzhilv" - Network accessline 88
}, "sameAs": [ "https://github.com/huanyuzhilv/skills-travel-planner", - Network accessline 89
"sameAs": [ "https://github.com/huanyuzhilv/skills-travel-planner", "https://github.com/huanyuzhilv/skills-travel-planner/releases/tag/v1.0.0" - Network accessline 90
"https://github.com/huanyuzhilv/skills-travel-planner", - Network accessline 91
"https://github.com/huanyuzhilv/skills-travel-planner/releases/tag/v1.0.0" - Network accessline 92
], "image": "https://huanyuzhilv.github.io/skills-travel-planner/og-image.png", "screenshot": "https://huanyuzhilv.github.io/skills-travel-planner/og-image.png" - Network accessline 93
"image": "https://huanyuzhilv.github.io/skills-travel-planner/og-image.png", - Network accessline 94
"screenshot": "https://huanyuzhilv.github.io/skills-travel-planner/og-image.png" - Network accessline 106
<a href="#pipeline">流水线</a> <a href="#quickstart">快速开始</a> <a class="btn btn-primary btn-sm" href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub</a> - Network accessline 107
<a href="#quickstart">快速开始</a> <a class="btn btn-primary btn-sm" href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub</a> </nav> - Network accessline 108
<a class="btn btn-primary btn-sm" href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub</a> - Network accessline 118
<p class="subtitle">简表进、路书出。结构化 tripData + 小红书配图 + LLM 润色 + 飞猪酒店,专为定制游顾问与 AI 编程助手设计。</p> <div class="hero-actions"> <a class="btn btn-primary" href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel - Network accessline 119
<div class="hero-actions"> <a class="btn btn-primary" href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub 开源</a> <a class="btn btn-secondary" href="#quickstart">5 分钟上手</a> - Network accessline 120
<a class="btn btn-primary" href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub 开源</a> - Network accessline 237
</div> <pre><code><span class="comment"># 克隆与配置</span> <span class="cmd">git clone</span> https://github.com/huanyuzhilv/skills-travel-planner.git - Network accessline 238
<pre><code><span class="comment"># 克隆与配置</span> <span class="cmd">git clone</span> https://github.com/huanyuzhilv/skills-travel-planner.git <span class="cmd">cd</span> skills-travel-planner - Network accessline 239
<span class="cmd">git clone</span> https://github.com/huanyuzhilv/skills-travel-planner.git - Network accessline 240
<span class="cmd">cd</span> skills-travel-planner <span class="cmd">cp</span> .env.example .env <span class="comment"># 编辑 .env,填入 TIKHUB_API_KEY(https://user.tikhub.io)</span> - Access to secretsline 241
[Credential-related source omitted] - Network accessline 242
[Credential-related source omitted] - Access to secretsline 242
[Credential-related source omitted] - Network accessline 272
<tbody> <tr> <td><a href="https://user.tikhub.io" target="_blank" rel="noopener">TikHub API</a></td> - Network accessline 273
<tr> <td><a href="https://user.tikhub.io" target="_blank" rel="noopener">TikHub API</a></td> <td>小红书搜索、配图、每日正文素材</td> - Network accessline 274
<td><a href="https://user.tikhub.io" target="_blank" rel="noopener">TikHub API</a></td> - Network accessline 282
</tr> <tr> <td><a href="https://github.com/alibaba-flyai/flyai-skill" target="_blank" rel="noopener">flyai</a></td> - Network accessline 283
<tr> <td><a href="https://github.com/alibaba-flyai/flyai-skill" target="_blank" rel="noopener">flyai</a></td> <td>飞猪酒店简介、交通配图</td> - Network accessline 284
<td><a href="https://github.com/alibaba-flyai/flyai-skill" target="_blank" rel="noopener">flyai</a></td> - Network accessline 302
<p><strong>skills-travel-planner</strong> — 开源 AI 路书生成工具 · 玩点旅行</p> <p> <a href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub</a> - Network accessline 303
<p> <a href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub</a> · MIT License © 2026 <a href="https://github.com/huanyuzhilv" target="_blank" rel="noopener">huanyuzhilv</a> - Network accessline 304
<a href="https://github.com/huanyuzhilv/skills-travel-planner" target="_blank" rel="noopener">GitHub</a> - Network accessline 305
· MIT License © 2026 <a href="https://github.com/huanyuzhilv" target="_blank" rel="noopener">huanyuzhilv</a>
website/llms.txt
website/robots.txt
- Network accessline 43
Sitemap: https://huanyuzhilv.github.io/skills-travel-planner/sitemap.xml
website/sitemap.xml
- Network accessline 1
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> - Network accessline 2
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> - Network accessline 3
<url> <loc>https://huanyuzhilv.github.io/skills-travel-planner/</loc> <lastmod>2026-06-01</lastmod> - Network accessline 4
<loc>https://huanyuzhilv.github.io/skills-travel-planner/</loc> - Network accessline 8
</url> <url> <loc>https://huanyuzhilv.github.io/skills-travel-planner/llms.txt</loc> - Network accessline 9
<url> <loc>https://huanyuzhilv.github.io/skills-travel-planner/llms.txt</loc> <lastmod>2026-06-01</lastmod> - Network accessline 10
<loc>https://huanyuzhilv.github.io/skills-travel-planner/llms.txt</loc>
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 11 facts
- Contacts commons.wikimedia.org, which SKILL.md, the README and the plugin manifest do not mentionassets/generate.py:229High confidence
- Contacts loremflickr.com, which SKILL.md, the README and the plugin manifest do not mentionassets/generate.py:452High confidence
- Contacts meta.wikimedia.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/enrich_daily_descriptions_from_xhs.py:477High confidence
- Contacts zh.wikipedia.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/enrich_daily_descriptions_from_xhs.py:565High confidence
- Contacts meta.wikimedia.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/enrich_hotel_intro_from_flyai.py:36High confidence
- Contacts zh.wikipedia.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/enrich_hotel_intro_from_flyai.py:45High confidence
- Contacts commons.wikimedia.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/image_fallback_chain.py:19High confidence
- Contacts placehold.co, which SKILL.md, the README and the plugin manifest do not mentionscripts/image_fallback_chain.py:453High confidence
- Contacts api.openai.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/llm_openai_compat.py:29High confidence
- Contacts api.deepseek.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/llm_openai_compat.py:35High confidence
- Contacts schemas.openxmlformats.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/roadbook_intake.py:485High confidence
Signal confidence: 311 facts
- Access to secrets in prose of documentationAGENTS.md:25Low confidence
- Access to secrets in prose of documentationCLAUDE.md:81Low confidence
- Access to secrets in prose of documentationCLAUDE.md:82Low confidence
- Access to secrets in prose of documentationCLAUDE.md:90Low confidence
- Network access in prose of documentationREADME.md:12Low confidence
- Network access in prose of documentationREADME.md:13Low confidence
- Network access in prose of documentationREADME.md:14Low confidence
- Network access in code of documentationREADME.md:36Low confidence
- Network access in code of documentationREADME.md:37Low confidence
- Network access in code of documentationREADME.md:38Low confidence
- Access to secrets in code of documentationREADME.md:38Low confidence
- Network access in code of documentationREADME.md:39Low confidence
- Access to secrets in code of documentationREADME.md:39Low confidence
- Access to secrets in code of documentationREADME.md:40Low confidence
- Network access in code of documentationREADME.md:65Low confidence
- Dangerous shell operation in code of documentationREADME.md:67Low confidence
- Network access in code of documentationREADME.md:67Low confidence
- Network access in prose of documentationREADME.md:74Low confidence
- Network access in prose of documentationREADME.md:75Low confidence
- Network access in prose of documentationREADME.md:76Low confidence
- Access to secrets in prose of documentationREADME.md:76Low confidence
- Access to secrets in prose of documentationREADME.md:77Low confidence
- Access to secrets in prose of documentationREADME.md:78Low confidence
- Network access in prose of documentationREADME.md:84Low confidence
- Network access in prose of documentationREADME.md:85Low confidence
- Network access in prose of documentationREADME.md:86Low confidence
- Network access in prose of documentationREADME.md:103Low confidence
- Network access in code of documentationRELEASE_v1.0.0.md:16Low confidence
- Access to secrets in code of documentationRELEASE_v1.0.0.md:18Low confidence
- Access to secrets in code of documentationRELEASE_v1.0.0.md:19Low confidence
- Network access in prose of documentationRELEASE_v1.0.0.md:34Low confidence
- Network access in prose of documentationRELEASE_v1.0.0.md:35Low confidence
- Network access in prose of documentationRELEASE_v1.0.0.md:36Low confidence
- Executable script in prose of a file that runsassets/generate.py:1Low confidence
- Network access in code of a file that runsassets/generate.py:40High confidence
- Network access in code of a file that runsassets/generate.py:41High confidence
- Network access in code of a file that runsassets/generate.py:45High confidence
- Network access in code of a file that runsassets/generate.py:46High confidence
- Network access in code of a file that runsassets/generate.py:47High confidence
- Network access in code of a file that runsassets/generate.py:227High confidence
- Network access in code of a file that runsassets/generate.py:229High confidence
- Network access in code of a file that runsassets/generate.py:450High confidence
- Network access in code of a file that runsassets/generate.py:451High confidence
- Network access in code of a file that runsassets/generate.py:452High confidence
- Network access in code of a file that runsassets/generate.py:1295High confidence
- Network access in code of a file that runsassets/generate.py:1296High confidence
- Network access in code of a file that runsassets/generate.py:1301High confidence
- Network access in code of a file that runsassets/generate.py:1302High confidence
- Network access in code of a file that runsassets/generate.py:1303High confidence
- Network access in code of a file that runsassets/generate.py:1735High confidence
and 261 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Path CLAUDE.md | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Native | Path .cursor/mcp.json | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skill.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skill.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skill.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.