pp-airbnb

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Airbnb — Printing Press CLI

Airbnb — Printing Press CLI

Prerequisites: Install the CLI

前提条件:安装CLI

This skill drives the
airbnb-pp-cli
binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
  1. Install via the Printing Press installer:
    bash
    npx -y @mvanhorn/printing-press install airbnb --cli-only
  2. Verify:
    airbnb-pp-cli --version
  3. Ensure
    $GOPATH/bin
    (or
    $HOME/go/bin
    ) is on
    $PATH
    .
If the
npx
install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.23+):
bash
go install github.com/mvanhorn/printing-press-library/library/travel/airbnb/cmd/airbnb-pp-cli@latest
If
--version
reports "command not found" after install, the install step did not put the binary on
$PATH
. Do not proceed with skill commands until verification succeeds.
本技能基于
airbnb-pp-cli
二进制文件运行。在调用本技能的任何命令之前,必须确认CLI已安装。如果未安装,请先执行以下步骤:
  1. 通过Printing Press安装程序安装:
    bash
    npx -y @mvanhorn/printing-press install airbnb --cli-only
  2. 验证:
    airbnb-pp-cli --version
  3. 确保
    $GOPATH/bin
    (或
    $HOME/go/bin
    )已添加到
    $PATH
    环境变量中。
如果
npx
安装失败(无Node环境、离线等情况),可改用Go直接安装(要求Go 1.23及以上版本):
bash
go install github.com/mvanhorn/printing-press-library/library/travel/airbnb/cmd/airbnb-pp-cli@latest
如果安装后
--version
提示“command not found”,说明安装程序未将二进制文件添加到
$PATH
中。请完成验证后再执行技能命令。

When to Use This CLI

何时使用本CLI

Reach for this CLI when an agent or user names an Airbnb listing URL, asks about Airbnb fees or direct-booking savings, mentions 'book direct,' or wants to plan a trip across listings. The cheapest command is the headline; plan and compare extend it. The local store accumulates listings, hosts, and price history across sessions, so re-running queries gets faster and richer over time.
当代理或用户提供Airbnb房源URL、询问Airbnb费用或直订优惠、提及“直接预订”,或需要跨房源规划行程时,可使用本CLI。
cheapest
命令是核心功能;
plan
compare
是其扩展功能。本地存储会跨会话累积房源、房东和价格历史数据,因此重复运行查询会更快、结果更丰富。

When Not to Use This CLI

何时不使用本CLI

Do not activate this CLI for requests that require creating, updating, deleting, publishing, commenting, upvoting, inviting, ordering, sending messages, booking, purchasing, or changing remote state. This printed CLI exposes read-only commands for inspection, export, sync, and analysis.
请勿在需要创建、更新、删除、发布、评论、点赞、邀请、下单、发送消息、预订、购买或更改远程状态的请求中激活本CLI。本CLI仅提供用于查看、导出、同步和分析的只读命令。

Unique Capabilities

独特功能

These capabilities aren't available in any other tool for this API.
以下功能是同类API工具所不具备的。

Host-direct arbitrage

房东直订差价获取

  • cheapest
    — Given an Airbnb or VRBO listing URL, find the host's direct booking site and report the cheapest of three sources.
    When a user names an Airbnb/VRBO listing, this is the right tool to reach for. Returns a structured comparison of OTA fees vs direct booking with actionable URLs.
    bash
    airbnb-pp-cli cheapest 'https://www.airbnb.com/rooms/37124493?check_in=2026-05-16&check_out=2026-05-19' --agent
  • plan
    — Search Airbnb and VRBO in parallel for a city/dates/budget, then run cheapest on the top results, return a ranked-by-savings list.
    The agent-friendly trip planner. One call returns ranked results across both platforms with direct-booking URLs and savings amounts.
    bash
    airbnb-pp-cli plan 'Lake Tahoe' --checkin 2026-05-16 --checkout 2026-05-19 --guests 4 --budget 1500 --agent
  • compare
    — Side-by-side: OTA total (with cleaning + service + tax fees) vs direct booking total, with dollar and percent savings.
    Use when an agent needs to justify a booking recommendation with concrete savings numbers.
    bash
    airbnb-pp-cli compare 'https://www.airbnb.com/rooms/37124493' --checkin 2026-05-16 --checkout 2026-05-19 --json
  • find-twin
    — Reverse image search a listing's photos to find the same property on direct booking sites or alternate platforms.
    When host extraction fails (vague host name), reverse image search is the most reliable signal.
    bash
    airbnb-pp-cli find-twin 'https://www.airbnb.com/rooms/37124493' --json
  • cheapest
    — 给定Airbnb或VRBO房源URL,查找房东的直订网站并报告三个渠道中的最低价。
    当用户提供Airbnb/VRBO房源时,这是首选工具。返回OTA费用与直订价格的结构化对比结果及可操作的URL。
    bash
    airbnb-pp-cli cheapest 'https://www.airbnb.com/rooms/37124493?check_in=2026-05-16&check_out=2026-05-19' --agent
  • plan
    — 并行搜索Airbnb和VRBO的城市/日期/预算房源,然后对热门结果执行
    cheapest
    命令,返回按优惠幅度排序的列表。
    适合代理使用的行程规划工具。一次调用即可返回跨平台的排序结果,包含直订URL和优惠金额。
    bash
    airbnb-pp-cli plan 'Lake Tahoe' --checkin 2026-05-16 --checkout 2026-05-19 --guests 4 --budget 1500 --agent
  • compare
    — 并排对比:OTA总价(含清洁费+服务费+税费)与直订总价,显示优惠金额和百分比。
    当代理需要用具体的优惠数据证明预订建议合理性时使用。
    bash
    airbnb-pp-cli compare 'https://www.airbnb.com/rooms/37124493' --checkin 2026-05-16 --checkout 2026-05-19 --json
  • find-twin
    — 对房源图片进行反向图片搜索,在直订网站或其他平台找到同一房源。
    当房东信息提取失败(房东名称模糊)时,反向图片搜索是最可靠的方法。
    bash
    airbnb-pp-cli find-twin 'https://www.airbnb.com/rooms/37124493' --json

Cross-platform

跨平台功能

  • match
    — Given a listing on Airbnb (or VRBO), find the same property on the other platform via geocode + amenities + photo signal.
    Cross-platform price discrimination is real; the same condo can cost 15 percent less on VRBO. This finds it.
    bash
    airbnb-pp-cli match 'https://www.airbnb.com/rooms/37124493' --json
  • match
    — 给定Airbnb(或VRBO)的房源,通过地理编码+设施+图片信息在另一平台找到同一房源。
    跨平台价格差异真实存在:同一套公寓在VRBO上的价格可能低15%。本命令可找到这类房源。
    bash
    airbnb-pp-cli match 'https://www.airbnb.com/rooms/37124493' --json

Local state that compounds

可累积的本地状态

  • watch
    — Add saved listings to a watchlist with target prices; daily sync checks for drops; cron-friendly exit codes signal hits.
    Use when a user is shopping a specific listing and waiting for a price drop. Schedule watch check daily; act on exit code 7.
    bash
    airbnb-pp-cli watch add 'https://www.airbnb.com/rooms/37124493' --max-price 350 --checkin 2026-05-16 --checkout 2026-05-19
  • host portfolio
    — Given a host or property management company name, list every known listing under them across Airbnb and VRBO.
    Discover bulk patterns: which PMCs operate in this city, which have direct sites, where to focus arbitrage.
    bash
    airbnb-pp-cli host portfolio 'Vacasa' --json --select listings.title,listings.location
  • wishlist diff
    — Track price changes on Airbnb wishlists over time; report which saved listings dropped, by how much, and over what window.
    User saved a listing months ago and forgot. This surfaces price movement so they can act before booking.
    bash
    airbnb-pp-cli wishlist diff --since 2026-04-01 --json
  • fingerprint
    — Stable hash from photos + amenities + host + city; used by match for dedupe; exposed for power-user export workflows.
    Build your own external joins on listings; stable across sessions.
    bash
    airbnb-pp-cli fingerprint 'https://www.airbnb.com/rooms/37124493'
  • watch
    — 将收藏的房源添加到监视列表并设置目标价格;每日同步检查价格下降情况;支持cron的退出码会提示是否触发降价。
    当用户正在关注特定房源并等待降价时使用。每日安排监视检查,当退出码为7时表示价格已低于设定值。
    bash
    airbnb-pp-cli watch add 'https://www.airbnb.com/rooms/37124493' --max-price 350 --checkin 2026-05-16 --checkout 2026-05-19
  • host portfolio
    — 给定房东或物业管理公司名称,列出其在Airbnb和VRBO上的所有已知房源。
    发现批量模式:哪些物业管理公司在该城市运营,哪些有直订网站,以及套利重点方向。
    bash
    airbnb-pp-cli host portfolio 'Vacasa' --json --select listings.title,listings.location
  • wishlist diff
    — 跟踪Airbnb心愿单的价格变化;报告收藏房源的降价幅度和时间窗口。
    用户数月前收藏了房源但已遗忘。本命令可显示价格变动,方便用户在预订前采取行动。
    bash
    airbnb-pp-cli wishlist diff --since 2026-04-01 --json
  • fingerprint
    — 基于图片+设施+房东+城市生成的稳定哈希值;用于
    match
    命令去重;为高级用户导出工作流提供支持。
    可构建自定义的房源外部关联;跨会话保持稳定。
    bash
    airbnb-pp-cli fingerprint 'https://www.airbnb.com/rooms/37124493'

Discovery Signals

发现信号

This CLI was generated with browser-observed traffic context.
  • Capture coverage: 66 API entries from 299 total network entries
  • Protocols: rpc_envelope (80% confidence), rest_json (75% confidence)
  • Auth signals: api_key — headers: X-Airbnb-API-Key, X-Goog-Api-Key
  • Generation hints: has_rpc_envelope, weak_schema_confidence
  • Candidate command ideas: create_GetViewportInfo — Derived from observed POST /$rpc/google.internal.maps.mapsjs.v1.MapsJsInternalService/GetViewportInfo traffic.; create_StaysPdpSections — Derived from observed POST /api/v3/StaysPdpSections/{hash} traffic.; create_get_data_layer_variables — Derived from observed POST /api/v2/get-data-layer-variables traffic.; create_js — Derived from observed POST /js/ traffic.; create_marketing_event_tracking — Derived from observed POST /api/v2/marketing_event_tracking traffic.; create_messages — Derived from observed POST /tracking/jitney/logging/messages traffic.; create_realtimeconversion — Derived from observed POST /track/realtimeconversion traffic.; get_GetConsentFlagsQuery — Derived from observed GET /api/v3/GetConsentFlagsQuery/{hash} traffic.
  • Caveats: empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.; empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.; empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.; empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.; empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.; empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.; empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.; empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.; empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.; empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.
本CLI基于浏览器观测到的流量上下文生成。
  • 捕获覆盖范围:299条网络请求中的66条API请求
  • 协议:rpc_envelope(80%置信度)、rest_json(75%置信度)
  • 认证信号:api_key — 请求头:X-Airbnb-API-Key、X-Goog-Api-Key
  • 生成提示:has_rpc_envelope、weak_schema_confidence
  • 候选命令思路:create_GetViewportInfo — 基于观测到的POST /$rpc/google.internal.maps.mapsjs.v1.MapsJsInternalService/GetViewportInfo流量生成;create_StaysPdpSections — 基于观测到的POST /api/v3/StaysPdpSections/{hash}流量生成;create_get_data_layer_variables — 基于观测到的POST /api/v2/get-data-layer-variables流量生成;create_js — 基于观测到的POST /js/流量生成;create_marketing_event_tracking — 基于观测到的POST /api/v2/marketing_event_tracking流量生成;create_messages — 基于观测到的POST /tracking/jitney/logging/messages流量生成;create_realtimeconversion — 基于观测到的POST /track/realtimeconversion流量生成;get_GetConsentFlagsQuery — 基于观测到的GET /api/v3/GetConsentFlagsQuery/{hash}流量生成。
  • 注意事项:empty_payload:类API请求返回空或null负载;schema置信度较低;(重复多次)

Command Reference

命令参考

airbnb_listing — Airbnb listings (search and detail) via SSR HTML scrape (openbnb pattern, no auth required).
  • airbnb-pp-cli airbnb_listing get
    — Get full Airbnb listing detail (amenities, house rules, location, highlights, description, policies, host) via SSR...
  • airbnb-pp-cli airbnb_listing search
    — Search Airbnb listings by location, dates, and guest count via the public SSR HTML page (openbnb pattern). Walks...
airbnb_wishlist — Airbnb wishlists (read user's saved listings; requires auth login --chrome).
  • airbnb-pp-cli airbnb_wishlist items
    — Get items in a specific wishlist by listing IDs.
  • airbnb-pp-cli airbnb_wishlist list
    — List the user's wishlists via Airbnb's GraphQL persisted query.
host — Host identity extraction (the linchpin of host-direct arbitrage).
  • airbnb-pp-cli host extract
    — Extract the host's brand or display name from a listing URL across both platforms. Uses propertyManagement.name...
  • airbnb-pp-cli host portfolio
    — List every known listing under one host or PMC across Airbnb and VRBO from the local store.
vrbo_listing — VRBO listings (search and detail) via /graphql with Akamai warmup pattern.
  • airbnb-pp-cli vrbo_listing get
    — Get full VRBO property detail via the propertyDetail GraphQL operation (operation name discovered at runtime). Falls...
  • airbnb-pp-cli vrbo_listing search
    — Search VRBO properties via the propertySearch GraphQL operation. Uses Akamai warmup (GET / first, wait 1.5s, then POST).
airbnb_listing — 通过SSR HTML抓取获取Airbnb房源(搜索和详情)(openbnb模式,无需认证)。
  • airbnb-pp-cli airbnb_listing get
    — 通过SSR获取Airbnb房源的完整详情(设施、房屋规则、位置、亮点、描述、政策、房东)...
  • airbnb-pp-cli airbnb_listing search
    — 通过公开SSR HTML页面(openbnb模式)按位置、日期和客人数搜索Airbnb房源...
airbnb_wishlist — Airbnb心愿单(读取用户收藏的房源;需要通过--chrome登录认证)。
  • airbnb-pp-cli airbnb_wishlist items
    — 通过房源ID获取特定心愿单中的项目。
  • airbnb-pp-cli airbnb_wishlist list
    — 通过Airbnb的GraphQL持久化查询列出用户的心愿单。
host — 房东身份提取(房东直订差价获取的关键)。
  • airbnb-pp-cli host extract
    — 跨平台从房源URL中提取房东品牌或显示名称。使用propertyManagement.name...
  • airbnb-pp-cli host portfolio
    — 从本地存储中列出同一房东或物业管理公司在Airbnb和VRBO上的所有已知房源。
vrbo_listing — 通过/graphql和Akamai预热模式获取VRBO房源(搜索和详情)。
  • airbnb-pp-cli vrbo_listing get
    — 通过propertyDetail GraphQL操作获取VRBO房源的完整详情(操作名称在运行时发现)...
  • airbnb-pp-cli vrbo_listing search
    — 通过propertySearch GraphQL操作搜索VRBO房源。使用Akamai预热(先GET /,等待1.5秒,再POST)。

Freshness Contract

新鲜度约定

This printed CLI owns bounded freshness only for registered store-backed read command paths. In
--data-source auto
mode, those paths check
sync_state
and may run a bounded refresh before reading local data.
--data-source local
never refreshes.
--data-source live
reads the API and does not mutate the local store. Set
AIRBNB_PP_NO_AUTO_REFRESH=1
to skip the freshness hook without changing source selection.
Covered paths:
  • airbnb-pp-cli airbnb_wishlist
  • airbnb-pp-cli airbnb_wishlist items
  • airbnb-pp-cli airbnb_wishlist list
When JSON output uses the generated provenance envelope, freshness metadata appears at
meta.freshness
. Treat it as current-cache freshness for the covered command path, not a guarantee of complete historical backfill or API-specific enrichment.
本CLI仅对已注册的基于存储的只读命令路径提供有限的新鲜度保证。在
--data-source auto
模式下,这些路径会检查
sync_state
,并可能在读取本地数据前执行有限刷新。
--data-source local
模式从不刷新。
--data-source live
模式读取API且不修改本地存储。设置
AIRBNB_PP_NO_AUTO_REFRESH=1
可跳过新鲜度钩子,无需更改数据源选择。
覆盖的路径:
  • airbnb-pp-cli airbnb_wishlist
  • airbnb-pp-cli airbnb_wishlist items
  • airbnb-pp-cli airbnb_wishlist list
当JSON输出使用生成的来源信封时,新鲜度元数据会显示在
meta.freshness
中。将其视为所覆盖命令路径的当前缓存新鲜度,而非完整历史回填或API特定增强的保证。

Finding the right command

查找合适的命令

When you know what you want to do but not which command does it, ask the CLI directly:
bash
airbnb-pp-cli which "<capability in your own words>"
which
resolves a natural-language capability query to the best matching command from this CLI's curated feature index. Exit code
0
means at least one match; exit code
2
means no confident match — fall back to
--help
or use a narrower query.
当你知道要做什么但不知道用哪个命令时,可直接询问CLI:
bash
airbnb-pp-cli which "<用你自己的语言描述功能>"
which
命令会将自然语言功能查询解析为CLI精选功能索引中最匹配的命令。退出码
0
表示至少有一个匹配项;退出码
2
表示无匹配项——请改用
--help
或缩小查询范围。

Recipes

使用示例

Find the cheapest way to book a saved Airbnb listing

查找预订收藏Airbnb房源的最便宜方式

bash
airbnb-pp-cli cheapest 'https://www.airbnb.com/rooms/37124493' --checkin 2026-05-16 --checkout 2026-05-19 --json --select savings,direct.url,direct.total,airbnb.total
Returns just the savings and price comparison fields, not the full host-extraction trace.
bash
airbnb-pp-cli cheapest 'https://www.airbnb.com/rooms/37124493' --checkin 2026-05-16 --checkout 2026-05-19 --json --select savings,direct.url,direct.total,airbnb.total
仅返回优惠金额和价格对比字段,不包含完整的房东提取跟踪信息。

Plan a 4-guest Tahoe trip across both platforms

规划适合4人的太浩湖跨平台行程

bash
airbnb-pp-cli plan 'Lake Tahoe' --checkin 2026-05-16 --checkout 2026-05-19 --guests 4 --budget 1500 --agent
Fans out across Airbnb + VRBO + direct discovery; ranks by total savings.
bash
airbnb-pp-cli plan 'Lake Tahoe' --checkin 2026-05-16 --checkout 2026-05-19 --guests 4 --budget 1500 --agent
在Airbnb + VRBO + 直订渠道中搜索,按总优惠幅度排序。

Watch for price drops on saved listings

监视收藏房源的价格下降情况

bash
airbnb-pp-cli watch add 'https://www.airbnb.com/rooms/37124493' --max-price 350 && airbnb-pp-cli watch check
Add to watchlist, then check with cron — exits 7 when any drop is under threshold.
bash
airbnb-pp-cli watch add 'https://www.airbnb.com/rooms/37124493' --max-price 350 && airbnb-pp-cli watch check
添加到监视列表,然后通过cron定期检查——当价格低于阈值时退出码为7。

Find a Vacasa property in Austin and book direct

在奥斯汀找到Vacasa的房源并直接预订

bash
airbnb-pp-cli host portfolio 'Vacasa' --city Austin --agent --select listings.title,listings.direct_url
Bulk discovery of one PMC's portfolio with direct URLs already resolved.
bash
airbnb-pp-cli host portfolio 'Vacasa' --city Austin --agent --select listings.title,listings.direct_url
批量发现某物业管理公司的房源组合,且已解析直订URL。

Compare deeply nested response

对比深层嵌套响应

bash
airbnb-pp-cli airbnb get 37124493 --agent --select listing.title,listing.coordinate.latitude,listing.coordinate.longitude,pricingQuote.structuredStayDisplayPrice.primaryLine.price,pricingQuote.structuredStayDisplayPrice.secondaryLine.price
Use --select with dotted paths to narrow Airbnb's deeply nested SSR Apollo cache to just the high-gravity fields.
bash
airbnb-pp-cli airbnb get 37124493 --agent --select listing.title,listing.coordinate.latitude,listing.coordinate.longitude,pricingQuote.structuredStayDisplayPrice.primaryLine.price,pricingQuote.structuredStayDisplayPrice.secondaryLine.price
使用--select和点路径将Airbnb深层嵌套的SSR Apollo缓存缩小到关键字段。

Auth Setup

认证设置

Public search and listing detail need no auth. Authenticated features (Airbnb wishlists, trip history) use cookie import via auth login --chrome. The web-search backend is pluggable: Parallel.ai (paid, best), DuckDuckGo HTML (free default), Brave Search API (free tier), or Tavily (free tier).
Run
airbnb-pp-cli doctor
to verify setup.
公开搜索和房源详情无需认证。需认证的功能(Airbnb心愿单、行程历史)通过
auth login --chrome
导入cookie实现。网络搜索后端支持插件:Parallel.ai(付费,最佳)、DuckDuckGo HTML(免费默认)、Brave Search API(免费 tier)或Tavily(免费 tier)。
运行
airbnb-pp-cli doctor
验证设置。

Agent Mode

代理模式

Add
--agent
to any command. Expands to:
--json --compact --no-input --no-color --yes
.
  • Pipeable — JSON on stdout, errors on stderr
  • Filterable
    --select
    keeps a subset of fields. Dotted paths descend into nested structures; arrays traverse element-wise. Critical for keeping context small on verbose APIs:
    bash
    airbnb-pp-cli airbnb_listing get --agent --select id,name,status
  • Previewable
    --dry-run
    shows the request without sending
  • Offline-friendly — sync/search commands can use the local SQLite store when available
  • Non-interactive — never prompts, every input is a flag
  • Read-only — do not use this CLI for create, update, delete, publish, comment, upvote, invite, order, send, or other mutating requests
在任何命令后添加
--agent
。等效于:
--json --compact --no-input --no-color --yes
  • 可管道化 — stdout输出JSON,stderr输出错误信息
  • 可过滤
    --select
    保留字段子集。点路径可深入嵌套结构;数组可遍历元素。对于冗长的API,这是缩小上下文的关键:
    bash
    airbnb-pp-cli airbnb_listing get --agent --select id,name,status
  • 可预览
    --dry-run
    显示请求但不发送
  • 离线友好 — 同步/搜索命令可在可用时使用本地SQLite存储
  • 非交互式 — 从不提示,所有输入均为标志位
  • 只读 — 请勿使用本CLI执行创建、更新、删除、发布、评论、点赞、邀请、下单、发送或其他修改状态的请求

Response envelope

响应信封

Commands that read from the local store or the API wrap output in a provenance envelope:
json
{
  "meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
  "results": <data>
}
Parse
.results
for data and
.meta.source
to know whether it's live or local. A human-readable
N results (live)
summary is printed to stderr only when stdout is a terminal — piped/agent consumers get pure JSON on stdout.
从本地存储或API读取数据的命令会将输出包裹在来源信封中:
json
{
  "meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
  "results": <data>
}
解析
.results
获取数据,
.meta.source
表示数据来自实时API还是本地存储。当stdout为终端时,仅会向stderr打印人类可读的
N results (live)
摘要;管道/代理消费者仅会在stdout获取纯JSON。

Agent Feedback

代理反馈

When you (or the agent) notice something off about this CLI, record it:
airbnb-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
airbnb-pp-cli feedback --stdin < notes.txt
airbnb-pp-cli feedback list --json --limit 10
Entries are stored locally at
~/.airbnb-pp-cli/feedback.jsonl
. They are never POSTed unless
AIRBNB_PP_FEEDBACK_ENDPOINT
is set AND either
--send
is passed or
AIRBNB_PP_FEEDBACK_AUTO_SEND=true
. Default behavior is local-only.
Write what surprised you, not a bug report. Short, specific, one line: that is the part that compounds.
当你(或代理)发现本CLI存在问题时,可记录反馈:
airbnb-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
airbnb-pp-cli feedback --stdin < notes.txt
airbnb-pp-cli feedback list --json --limit 10
反馈条目存储在本地
~/.airbnb-pp-cli/feedback.jsonl
中。仅当设置了
AIRBNB_PP_FEEDBACK_ENDPOINT
且传递了
--send
或设置了
AIRBNB_PP_FEEDBACK_AUTO_SEND=true
时,才会POST反馈。默认行为仅存储在本地。
请写下让你感到意外的内容,而非bug报告。简短、具体、一行内容:这才是有价值的反馈。

Output Delivery

输出交付

Every command accepts
--deliver <sink>
. The output goes to the named sink in addition to (or instead of) stdout, so agents can route command results without hand-piping. Three sinks are supported:
SinkEffect
stdout
Default; write to stdout only
file:<path>
Atomically write output to
<path>
(tmp + rename)
webhook:<url>
POST the output body to the URL (
application/json
or
application/x-ndjson
when
--compact
)
Unknown schemes are refused with a structured error naming the supported set. Webhook failures return non-zero and log the URL + HTTP status on stderr.
每个命令都支持
--deliver <sink>
。输出会发送到指定的sink,同时(或代替)输出到stdout,以便代理无需手动管道即可路由命令结果。支持三种sink:
Sink效果
stdout
默认;仅输出到stdout
file:<path>
原子性地将输出写入
<path>
(先写入临时文件再重命名)
webhook:<url>
将输出体POST到指定URL(
application/json
格式;若使用
--compact
则为
application/x-ndjson
格式)
未知的协议会被拒绝,并返回包含支持协议集合的结构化错误。Webhook失败会返回非零退出码,并在stderr记录URL和HTTP状态码。

Named Profiles

命名配置文件

A profile is a saved set of flag values, reused across invocations. Use it when a scheduled agent calls the same command every run with the same configuration - HeyGen's "Beacon" pattern.
airbnb-pp-cli profile save briefing --json
airbnb-pp-cli --profile briefing airbnb_listing get
airbnb-pp-cli profile list --json
airbnb-pp-cli profile show briefing
airbnb-pp-cli profile delete briefing --yes
Explicit flags always win over profile values; profile values win over defaults.
agent-context
lists all available profiles under
available_profiles
so introspecting agents discover them at runtime.
配置文件是一组保存的标志值,可在多次调用中复用。当调度代理每次运行都使用相同配置调用同一命令时使用——即HeyGen的"Beacon"模式。
airbnb-pp-cli profile save briefing --json
airbnb-pp-cli --profile briefing airbnb_listing get
airbnb-pp-cli profile list --json
airbnb-pp-cli profile show briefing
airbnb-pp-cli profile delete briefing --yes
显式标志始终优先于配置文件值;配置文件值优先于默认值。
agent-context
会在
available_profiles
下列出所有可用配置文件,以便内省代理在运行时发现它们。

Exit Codes

退出码

CodeMeaning
0Success
2Usage error (wrong arguments)
3Resource not found
4Authentication required
5API error (upstream issue)
7Rate limited (wait and retry)
10Config error
代码含义
0成功
2使用错误(参数错误)
3资源未找到
4需要认证
5API错误(上游问题)
7速率限制(请等待后重试)
10配置错误

Argument Parsing

参数解析

Parse
$ARGUMENTS
:
  1. Empty,
    help
    , or
    --help
    → show
    airbnb-pp-cli --help
    output
  2. Starts with
    install
    → ends with
    mcp
    → MCP installation; otherwise → see Prerequisites above
  3. Anything else → Direct Use (execute as CLI command with
    --agent
    )
解析
$ARGUMENTS
  1. 为空、
    help
    --help
    → 显示
    airbnb-pp-cli --help
    输出
  2. install
    开头
    → 若以
    mcp
    结尾 → MCP安装;否则 → 参见上方前提条件
  3. 其他情况 → 直接使用(以
    --agent
    标志执行CLI命令)

MCP Server Installation

MCP服务器安装

  1. Install the MCP server:
    bash
    go install github.com/mvanhorn/printing-press-library/library/travel/airbnb/cmd/airbnb-pp-mcp@latest
  2. Register with Claude Code:
    bash
    claude mcp add airbnb-pp-mcp -- airbnb-pp-mcp
  3. Verify:
    claude mcp list
  1. 安装MCP服务器:
    bash
    go install github.com/mvanhorn/printing-press-library/library/travel/airbnb/cmd/airbnb-pp-mcp@latest
  2. 在Claude Code中注册:
    bash
    claude mcp add airbnb-pp-mcp -- airbnb-pp-mcp
  3. 验证:
    claude mcp list

Direct Use

直接使用

  1. Check if installed:
    which airbnb-pp-cli
    If not found, offer to install (see Prerequisites at the top of this skill).
  2. Match the user query to the best command from the Unique Capabilities and Command Reference above.
  3. Execute with the
    --agent
    flag:
    bash
    airbnb-pp-cli <command> [subcommand] [args] --agent
  4. If ambiguous, drill into subcommand help:
    airbnb-pp-cli <command> --help
    .
  1. 检查是否安装:
    which airbnb-pp-cli
    若未找到,提供安装选项(参见顶部的前提条件)。
  2. 将用户查询与上述独特功能和命令参考中的最佳命令匹配。
  3. --agent
    标志执行:
    bash
    airbnb-pp-cli <command> [subcommand] [args] --agent
  4. 若存在歧义,查看子命令帮助:
    airbnb-pp-cli <command> --help