【openclaw实用Skill】local-places 技能:用 Google Places API 打造本地地点搜索能力
1. 为什么要在 openclaw 里接一个本地地点搜索 Skillopenclaw 的 Skill 体系里local-places 是一个很典型的「本地代理型」技能它本身不直接对外发起请求而是在你本机起一个 FastAPI 服务把 Google Places API 的能力包装成两个清晰的接口——先解析位置再搜索地点。这样做的好处是AI 工具在调用时不用关心 Google 的鉴权细节只需要对着127.0.0.1:8000发 JSON 就行。它适合谁如果你正在用 openclaw 做 Agent、做本地生活类问答、或者想让模型回答「附近有没有营业中的咖啡馆」这类问题local-places 就是那个把「模糊地名」变成「精确经纬度」再变成「结构化地点列表」的中间层。核心检索词就三个openclaw、local-places、Google Places API。我实测下来这个 Skill 的价值在于两步流程的设计。很多地点搜索工具一上来就让你给坐标但用户嘴里说的是「伦敦 Soho」「我家附近」local-places 先用/locations/resolve把文本转成坐标再用/places/search在半径内搜逻辑上更贴近真实对话。下面从环境准备讲到验证请求每一步都给可复制的骨架。2. TaoToken 前置统一 Key 与 API 通道怎么接local-places 默认读的是GOOGLE_PLACES_API_KEY但如果你不想在多个 Skill 里散落不同的 Key可以用 TaoToken 做统一入口。TaoToken 的定位是给 AI 工具提供统一的 Key 管理和 API 通道官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end API 基址是 https://taotoken.net/api 。这里要分清两件事Google Places API Key 是 local-places 真正去查地点用的TaoToken 的 Key 是你用来管理模型调用、coding plan、以及统一接入通道的。两者不冲突可以并存。我的做法是.env里保留GOOGLE_PLACES_API_KEY给 local-places 用同时在 openclaw 的全局配置里填 TaoToken 的 Key让模型对话和 Skill 调度走同一条通道。你需要先去 TaoToken 控制台拿 Key地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 然后在 API Keys 页面生成一个页面在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。拿到之后openclaw 的config.toml里填 TaoToken 的 base_url 和 keylocal-places 的.env里填 Google 的 key各司其职。注意不要把 Google Places API Key 和 TaoToken Key 混在同一个变量里排障时会很难定位是哪个通道出的问题。如果你后面要做长期编码或 Agent 任务可以看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。只是想验证模型对话是否通用模型对话页就行https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 。3. 可复制配置config.toml 与 settings.json 骨架先把 openclaw 的 Skill 目录拉下来local-places 在skills/local-places下。进入目录后核心是两份配置一份给 openclaw 主程序看的config.toml一份给 local-places 服务看的settings.json或者.env两者选一我习惯用.env管密钥、settings.json管默认参数。config.toml的骨架如下重点是base_url指向 TaoToken 的 API 地址api_key填你在控制台生成的那串[llm] provider openai-compatible base_url https://taotoken.net/api api_key sk-你的TaoTokenKey model gpt-4o-mini [skills.local-places] enabled true endpoint http://127.0.0.1:8000 timeout_seconds 15settings.json管的是 local-places 自己的默认行为比如默认搜索半径、默认返回条数、以及 Google Key 的读取方式。如果你用.env就写成GOOGLE_PLACES_API_KEY...如果坚持用settings.json可以这样{ google_places_api_key: AIza...你的GoogleKey, default_radius_m: 1000, default_limit: 10, default_language: zh-CN, server: { host: 127.0.0.1, port: 8000 } }环境准备命令按官方给的来先建虚拟环境再装依赖cd skills/local-places echo GOOGLE_PLACES_API_KEYAIza...你的GoogleKey .env uv venv uv pip install -e .[dev] uv run --env-file .env uvicorn local_places.main:app --host 127.0.0.1 --port 8000启动后你会看到 uvicorn 打印Uvicorn running on http://127.0.0.1:8000这就说明本地代理起来了。此时 openclaw 通过config.toml里的endpoint找到它模型侧通过 TaoToken 的base_url走统一通道两条链路互不干扰。4. 验证请求一次地点查询的完整动作与预期返回配置填完必须验证否则你永远不知道是 Key 错了还是服务没起。验证分两步正好对应 local-places 的两步流程。第一步解析位置。把「Soho, London」这种模糊文本转成坐标curl -X POST http://127.0.0.1:8000/locations/resolve \ -H Content-Type: application/json \ -d {location_text: Soho, London, limit: 5}预期返回里会有lat和lng比如51.5137和-0.1366以及一个formatted_address。如果这一步返回空数组多半是 Google Places API Key 没生效或者.env没被--env-file读到。第二步用解析出的坐标搜咖啡馆带上营业中和评分过滤curl -X POST http://127.0.0.1:8000/places/search \ -H Content-Type: application/json \ -d { query: coffee shop, location_bias: {lat: 51.5137, lng: -0.1366, radius_m: 1000}, filters: {open_now: true, min_rating: 4.0}, limit: 10 }预期返回结构是这样的results数组里每个元素包含place_id、name、address、location、rating、price_level、types、open_now末尾可能带next_page_token{ results: [ { place_id: ChIJ..., name: Coffee Shop, address: 123 Main St, location: {lat: 51.5, lng: -0.1}, rating: 4.6, price_level: 2, types: [cafe, food], open_now: true } ], next_page_token: ... }拿到place_id后想看详情就再发一个 GETcurl http://127.0.0.1:8000/places/ChIJ...这一步会返回完整地址、营业时间、联系方式。如果next_page_token存在把它作为参数再请求一次就能翻页。整个验证链路跑通说明 openclaw、local-places、Google Places API、TaoToken 通道四者都正常。5. 本篇常见错排查从 401 到空结果排障时按「服务层 → 鉴权层 → 参数层」的顺序查能省很多时间。服务起不来端口被占。报Address already in use说明 8000 端口有别的进程。换端口uvicorn local_places.main:app --host 127.0.0.1 --port 8001同时把config.toml里的endpoint改成http://127.0.0.1:8001。401 或 PERMISSION_DENIED。这是 Google Places API Key 的问题。检查.env里变量名是不是GOOGLE_PLACES_API_KEY值有没有多余空格以及 Google Cloud 控制台里 Places API 是否已启用、Key 是否限制了 IP。如果你同时用了 TaoToken确认 401 是来自 Google 还是来自 TaoToken看响应体里的error.message能区分。resolve 返回空数组。位置文本太模糊比如只写「附近」。local-places 需要可解析的地名换成「Soho, London」或具体地址再试。另外limit解析时范围是 1–10超了会被拒。search 返回 400。常见是filters.types填了多个类型。约束是只能指定一个类型比如restaurant或cafe不能写成数组塞两个。filters.min_rating必须是 0–5 且以 0.5 为增量写 4.3 会报错。location_bias.radius_m必须大于 0。结果里 open_now 全是 false。检查filters.open_now是不是布尔值true而不是字符串true。JSON 里字符串和布尔值行为不同。翻页拿不到更多结果。next_page_token有时效性拿到后要尽快用隔太久会失效。另外limit搜索时是 1–20超过 20 不会报错但会被截断。提示排障时先单独 curl local-places 的接口确认它自己能通再去 openclaw 里测 Skill 调用。分层定位比一上来就查 openclaw 日志快得多。6. 接入与后续把 local-places 用顺的几个动作local-places 跑通之后真正影响体验的是参数习惯。我自己的做法是在 openclaw 的 Skill 描述里写清楚「先 resolve 再 search」让模型别跳步default_radius_m设 1000 到 1500 之间太小搜不到、太大结果杂min_rating默认给 4.0能过滤掉一批低质结果。如果你要把这套能力接到更长的编码或 Agent 流程里TaoToken 的 Coding Plan 可以统一管 Key 和额度https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有 base_url 和鉴权头的完整说明。ClaudeCode 相关的接入看 https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecode-anthropicutm_campaignrewrite 。最后留一个实用技巧把 resolve 的结果缓存到本地同一个地名短时间内重复问就不用反复调 Google既省额度又快。local-places 本身不提供缓存但你在 openclaw 的 Skill 包装层加一层字典就行键用location_text值存坐标过期时间设 10 分钟。这个改动很小但对话体验会顺很多。

相关新闻

AI前沿 | 2026年9月14日:GPT-6 Astra 智能体基准大幅领先 + Claude Fable 5.1 对比 + Drone-Bench 物理编程

AI前沿 | 2026年9月14日:GPT-6 Astra 智能体基准大幅领先 + Claude Fable 5.1 对比 + Drone-Bench 物理编程

AI前沿 | 2026年9月14日:GPT-6 Astra 智能体基准大幅领先 Claude Fable 5.1 对比 Drone-Bench 物理编程 📖 首屏导读 本教程配套付费专栏:《大模型工程师修炼手记》 19.9 元(AI 编程 Agent 实战 本文同主题系统课程&#xff…

2026/10/1 18:37:57 阅读更多 →
Substrate FRAME dev_mode 模式实战:用最小样板快速开发 Pallet 示例(pallet-dev-mode 解析)

Substrate FRAME dev_mode 模式实战:用最小样板快速开发 Pallet 示例(pallet-dev-mode 解析)

区块链开发框架后端 【免费下载链接】substrate Substrate: The platform for blockchain innovators 项目地址: https://gitcode.com/gh_mirrors/su/substrate 点击查看 免费下载 导读 本文围绕 Substrate 仓库中的官方示例 frame/examples/dev-mode/README.md 及…

2026/9/28 22:36:28 阅读更多 →
Claude Code模板实战:用CLAUDE.md打造工程级AI开发流程

Claude Code模板实战:用CLAUDE.md打造工程级AI开发流程

1. 模板不是锦上添花,是让 Claude Code 真正“懂活”的钥匙用过 Claude Code 的人应该都有这种体会:第一次装好、跑起来,觉得这玩意儿确实能读仓库、能改文件、能跑命令,挺新鲜。但用上三五天,问题就来了——它写出来的…

2026/9/29 21:48:34 阅读更多 →

最新新闻

arXiv每日论文分析报告:自动抓取、语义打分与结构化摘要实战

arXiv每日论文分析报告:自动抓取、语义打分与结构化摘要实战

1. 一份“每日论文分析报告”到底在解决什么问题每天早上打开 arXiv 的 cs.CL、cs.LG、cs.CV 几个分区,新论文加起来动辄两三百篇,光是标题列表往下滚就要花掉十几分钟。更麻烦的是,标题和摘要之间存在巨大的信息差——有些标题看着平平无奇&…

2026/10/1 18:37:45 阅读更多 →
PX4 SensorAccelFifo 消息深度解析:加速度计 FIFO 批量数据通路与原始计数换算

PX4 SensorAccelFifo 消息深度解析:加速度计 FIFO 批量数据通路与原始计数换算

嵌入式物联网机器人自动驾驶智能硬件 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot 点击查看 免费下载 PX4 在常规的 sensor_accel(已标定加速度)消息之外&#xff0c…

2026/10/1 18:37:45 阅读更多 →
Debian系统深度解析:从包管理到网络与休眠控制的工程实践

Debian系统深度解析:从包管理到网络与休眠控制的工程实践

1. Debian是什么?它不是“另一个Linux”,而是一套精密运转的协作机制Debian是什么?这个问题看似简单,但如果你只回答“一个Linux发行版”,就像说“汽车就是四个轮子加个发动机”——技术上没错,但完全漏掉了…

2026/10/1 18:37:45 阅读更多 →
RAP 层次注解实战:从自引用表到 Fiori Elements Tree View

RAP 层次注解实战:从自引用表到 Fiori Elements Tree View

前阵子在做物料分类管理的 Fiori Elements 应用,数据量不大,一张 ytmclass 自引用表,无非就是 uuid 指向 parent_uuid 这种经典结构。第一版按普通 List Report 交付,岗位上的用户每天要看几千行分类,翻页翻得冒火&…

2026/10/1 18:37:45 阅读更多 →
Sass与Less对比:前端CSS预处理器选型与工程实践

Sass与Less对比:前端CSS预处理器选型与工程实践

写样式的时候要不要用预处理器?这个问题几乎每个前端都纠结过。我干了十多年前端,被问得最多的不是“怎么写CSS”,而是“Sass和Less到底选哪个”。网上教程一堆,但大多是抄官方文档,真正从项目实战角度把这事儿讲透的没…

2026/10/1 18:37:45 阅读更多 →
第一次编程作业实战:从读题到提交的完整流程

第一次编程作业实战:从读题到提交的完整流程

课程群里的通知弹出来时,我正对着教材第3章的目录发愁。标题只有一行字: 3.2第一次作业 。没有配图,没有额外解释,连提交方式都要自己点进附件里翻。头一回做这种需要交代码的作业,最折磨人的往往不是题目本身&#…

2026/10/1 18:36:44 阅读更多 →

日新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/30 13:14:22 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 18:13:06 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →