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

Compare on GitHub

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.

Compare on GitHub

View on GitHubAdd to my skills

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>/
16GitHub stars
0stars in 7 days
1skill in this repository
0commits in 30 days

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

Oct 25, 2026Oct 25, 202616

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 tokens

Always available to the agent

SKILL.md

17,978 tokens

When the skill is activated

Reference documents

9,497 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. 商用模式定位
  2. 行程详解文档 · Agent 角色提示词(Markdown)
  3. 统一输入 Intake 规范(商用强制)
  4. 工具可用性说明
  5. 第一步:收集旅行要素
  6. 第二步:目的地推荐(如目的地未知)
  7. 第三步:多维信息采集
  8. 第四步:行程编排
  9. 第五步:预算编制(含可靠度标注)
  10. 第六步:生成 HTML
  11. 第七步:部署到 Cloudflare Pages
  12. 路书生成模式(定制旅游服务商)

Scripts executed separately

  • assets/generate.py
  • install.sh
  • package.json
  • scripts/analyze_xhs_same_day_overlap.py
  • scripts/brand_logo.py
  • scripts/deliver_roadbook_v2.py
  • scripts/enrich_daily_descriptions_from_xhs.py
  • scripts/enrich_hotel_intro_from_flyai.py
  • scripts/enrich_roadbook_copy_from_llm.py
  • scripts/fill_xhs_images.py
  • scripts/flyai_hotel_shared.py
  • scripts/image_fallback_chain.py
  • scripts/llm_openai_compat.py
  • scripts/merge_intake_fee_service.py
  • scripts/probe-flyai-hotel.sh
  • scripts/refill_transport_images_from_flyai.py
  • scripts/regenerate_roadbook_v2.sh
  • scripts/relink_local_roadbook_images.py
  • scripts/repo_dotenv.py
  • scripts/roadbook_constants.py
  • scripts/roadbook_image_alternate_defaults.py
  • scripts/roadbook_image_engine/__init__.py
  • scripts/roadbook_image_engine/cache_store.py
  • scripts/roadbook_image_engine/diversity.py
  • scripts/roadbook_image_engine/quality_score.py
  • scripts/roadbook_image_engine/visual_hash.py
  • scripts/roadbook_intake.py
  • scripts/roadbook_pdf_playwright.py
  • scripts/roadbook_print_layout.py
  • scripts/setup_xhs_mcporter.sh
  • scripts/sync_brand_logo.py
  • scripts/tikhub_mcp_stdio.sh
  • scripts/tikhub_xhs_cache.py
  • scripts/tikhub_xhs_client.py
  • scripts/tikhub_xhs_feeds.py
  • scripts/tikhub_xhs_mcp_stdio.py
  • scripts/tikhub_xhs_search.py
  • scripts/tripdata_content_limits.py
  • scripts/validate_roadbook_image_alternates.py
  • scripts/xhs_image_url_rules.py
  • scripts/xhs_search_keyword_rules.py
  • setup.sh

Files

  • .cursor/mcp.jsonasset101 bytes
  • .env.exampleasset757 bytes
  • .github/workflows/deploy-website.ymlasset604 bytes
  • .gitignoreasset414 bytes
  • AGENTS.mddoc6,069 bytes
  • CLAUDE.mddoc6,268 bytes
  • LICENSEasset1,068 bytes
  • README.mddoc4,818 bytes
  • RELEASE_v1.0.0.mddoc1,325 bytes
  • assets/brand/wd-trip-logo.pngasset20,256 bytes
  • assets/generate.pyruns79,735 bytes
  • assets/image_registry.sample.jsonasset2,177 bytes
  • assets/preview.htmlasset39,023 bytes
  • assets/roadbook-schema.sample.jsonasset8,745 bytes
  • assets/template-brochure.htmlasset29,063 bytes
  • assets/template-roadbook.htmlasset58,561 bytes
  • assets/template.htmlasset25,790 bytes
  • assets/templates/default/sample.tripData.jsonasset1,866 bytes
  • assets/templates/default/template.htmlasset28,324 bytes
  • assets/templates/roadbook-v2/roadbook-component-schema.jsonasset10,904 bytes
  • assets/templates/roadbook-v2/roadbook-v2-sample.jsonasset33,240 bytes
  • assets/templates/roadbook-v2/template-roadbook-v2.htmlasset185,915 bytes
  • assets/templates/roadbook/roadbook-schema.sample.jsonasset8,745 bytes
  • assets/templates/roadbook/template-roadbook.htmlasset62,273 bytes
  • assets/templates/shared/image_registry.sample.jsonasset436 bytes
  • docs/deepseek-llm-setup.mddoc2,658 bytes
  • docs/examples/guizhou-brief.txtdoc1,238 bytes
  • docs/index.htmlasset9,716 bytes
  • docs/roadbook-input-to-output-keywords.mddoc10,157 bytes
  • docs/style.cssasset6,463 bytes
  • docs/vercel.jsonasset206 bytes
  • install.shruns16,798 bytes
  • llms.txtdoc1,582 bytes
  • package.jsonruns321 bytes
  • requirements-roadbook-images.txtdoc182 bytes
  • scripts/analyze_xhs_same_day_overlap.pyruns19,860 bytes
  • scripts/brand_logo.pyruns1,345 bytes
  • scripts/deliver_roadbook_v2.pyruns23,479 bytes
  • scripts/enrich_daily_descriptions_from_xhs.pyruns33,695 bytes
  • scripts/enrich_hotel_intro_from_flyai.pyruns23,050 bytes
  • scripts/enrich_roadbook_copy_from_llm.pyruns12,291 bytes
  • scripts/fill_xhs_images.pyruns46,668 bytes
  • scripts/flyai_hotel_shared.pyruns2,508 bytes
  • scripts/image_fallback_chain.pyruns20,349 bytes
  • scripts/llm_openai_compat.pyruns4,597 bytes
  • scripts/merge_intake_fee_service.pyruns4,962 bytes
  • scripts/probe-flyai-hotel.shruns5,938 bytes
  • scripts/refill_transport_images_from_flyai.pyruns4,690 bytes
  • scripts/regenerate_roadbook_v2.shruns1,331 bytes
  • scripts/relink_local_roadbook_images.pyruns2,623 bytes
  • scripts/repo_dotenv.pyruns1,796 bytes
  • scripts/roadbook_constants.pyruns272 bytes
  • scripts/roadbook_image_alternate_defaults.pyruns1,662 bytes
  • scripts/roadbook_image_engine/__init__.pyruns89 bytes
  • scripts/roadbook_image_engine/cache_store.pyruns3,752 bytes
  • scripts/roadbook_image_engine/diversity.pyruns187 bytes
  • scripts/roadbook_image_engine/quality_score.pyruns168 bytes
  • scripts/roadbook_image_engine/visual_hash.pyruns1,894 bytes
  • scripts/roadbook_intake.pyruns45,629 bytes
  • scripts/roadbook_pdf_playwright.pyruns0 bytes
  • scripts/roadbook_print_layout.pyruns4,445 bytes
  • scripts/setup_xhs_mcporter.shruns344 bytes
  • scripts/sync_brand_logo.pyruns1,356 bytes
  • scripts/tikhub_mcp_stdio.shruns719 bytes
  • scripts/tikhub_xhs_cache.pyruns6,662 bytes
  • scripts/tikhub_xhs_client.pyruns8,997 bytes
  • scripts/tikhub_xhs_feeds.pyruns8,757 bytes
  • scripts/tikhub_xhs_mcp_stdio.pyruns4,488 bytes
  • scripts/tikhub_xhs_search.pyruns4,414 bytes
  • scripts/tripdata_content_limits.pyruns4,247 bytes
  • scripts/validate_roadbook_image_alternates.pyruns4,805 bytes
  • scripts/xhs_image_url_rules.pyruns3,071 bytes
  • scripts/xhs_search_keyword_rules.pyruns17,982 bytes
  • setup.shruns348 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • skill.mdcore59,816 bytes
  • vercel.jsonasset59 bytes
  • website/index.htmlasset13,722 bytes
  • website/llms.txtdoc460 bytes
  • website/og-image.pngasset1,285,706 bytes
  • website/robots.txtdoc674 bytes
  • website/sitemap.xmlasset487 bytes
  • website/style.cssasset6,463 bytes
  • website/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 GitHub

Skills 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 shell

Automated 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:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skill.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
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

  • Access to secretsline 81
    [Credential-related source omitted]
  • Access to secretsline 82
    [Credential-related source omitted]
  • Access to secretsline 90
    [Credential-related source omitted]

README.md

  • Network accessline 12
    [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
  • Network accessline 13
    [![Website](https://img.shields.io/badge/Website-GitHub%20Pages-646cff)](https://huanyuzhilv.github.io/skills-travel-planner/)
  • Network accessline 14
    [![Release](https://img.shields.io/github/v/release/huanyuzhilv/skills-travel-planner?label=release)](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

  • Network accessline 1527
    try {     const resp = await fetch('/save', {
  • Network accessline 1528
    const resp = await fetch('/save', {

assets/templates/roadbook-v2/roadbook-component-schema.json

  • Network accessline 1
    {   "$schema": "http://json-schema.org/draft-07/schema#",
  • Network accessline 2
    "$schema": "http://json-schema.org/draft-07/schema#",

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

  • Network accessline 1579
    try {     const resp = await fetch('/save', {
  • Network accessline 1580
    const resp = await fetch('/save', {

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

  • Network accessline 21
    - GitHub: https://github.com/huanyuzhilv/skills-travel-planner
  • Network accessline 22
    - Website: https://huanyuzhilv.github.io/skills-travel-planner/
  • Network accessline 23
    - Quick Start: https://github.com/huanyuzhilv/skills-travel-planner#快速开始

package.json

  • Executable scriptline 1
    Executable file

scripts/analyze_xhs_same_day_overlap.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 474
    [Credential-related source omitted]
  • Access to secretsline 476
    [Credential-related source omitted]

scripts/brand_logo.py

  • Executable scriptline 1
    Executable file

scripts/deliver_roadbook_v2.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 15
    [Credential-related source omitted]
  • Access to secretsline 192
    [Credential-related source omitted]

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

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 243
    [Credential-related source omitted]
  • Access to secretsline 244
    [Credential-related source omitted]
  • Access to secretsline 245
    [Credential-related source omitted]

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

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Dangerous shell operationline 108
    rm -f "$OUT/$sub-help.txt"
  • Dangerous shell operationline 112
    rm -f "$OUT/$sub-help.txt"

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 34
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]
  • Access to secretsline 36
    [Credential-related source omitted]

scripts/roadbook_image_engine/__init__.py

  • Executable scriptline 1
    Executable file

scripts/roadbook_image_engine/cache_store.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 13
    [Credential-related source omitted]

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

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 484
    root = ET.fromstring(xml_bytes)     ns = {"w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main"}
  • Network accessline 485
    ns = {"w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main"}

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

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Access to secretsline 3
    [Credential-related source omitted]

scripts/sync_brand_logo.py

  • Executable scriptline 1
    #!/usr/bin/env python3

scripts/tikhub_mcp_stdio.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Access to secretsline 8
    [Credential-related source omitted]
  • Access to secretsline 11
    [Credential-related source omitted]
  • Network accessline 26
    export TIKHUB_MCP_SERVER_URL="${TIKHUB_MCP_SERVER_URL:-https://mcp.tikhub.io}"

scripts/tikhub_xhs_cache.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 23
    [Credential-related source omitted]
  • Access to secretsline 175
    [Credential-related source omitted]

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

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 5
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Network accessline 12
    """小红书 MCP 常见返回 http://*.xhscdn.com;浏览器与交付门禁要求 https。"""

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

  • Network accessline 3
    > Open-source AI roadbook generator — https://github.com/huanyuzhilv/skills-travel-planner
  • Network accessline 5
    - Website: https://huanyuzhilv.github.io/skills-travel-planner/
  • Network accessline 6
    - GitHub: https://github.com/huanyuzhilv/skills-travel-planner

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
Signal confidence: 311 facts

and 261 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativePath CLAUDE.md.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorNativePath .cursor/mcp.json.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skill.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skill.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard 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.