Skip to main content
skill CX Codex

local-descriptions — Claude Code skill: AI POI descriptions

Generates text summaries for points of interest using web search context. Use it to enrich local business directories, travel guides, and location-based apps with narrative descriptions.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add brave/brave-search-skills --skill local-descriptions -a claude-code
Open on GitHub

What local-descriptions does

The skill operates in a two-step flow: first, fetch POI IDs from local-place-search or web-search with result_filter=locations, then pass those IDs to local-descriptions for AI-generated markdown summaries. Each description runs 200–400 words in travel-guide style, covering what makes the location notable.

Descriptions are grounded in web search results rather than venue profiles, so coverage varies. Process up to 20 IDs per request. IDs remain valid for approximately 8 hours, so fresh results require a new search.

Needs a Brave Search API key (included in the Search plan). Output is always formatted markdown: ### headings, bullet lists, bold and italic — ready for documents and web pages without post-processing.

What it helps with

  • Build a local business directory with AI-written descriptions
  • Add narrative summaries to search results for destinations and venues
  • Create travel guide content with structured POI descriptions
  • Fill empty location cards with generated context

Example prompts for the agent

  • Search for cafés in San Francisco, extract their IDs, and generate descriptions via local-descriptions
  • I have 15 restaurant IDs from a search — generate markdown summaries for each
  • Enrich attraction search results with AI-generated text through local-descriptions

How to install local-descriptions

1Skills CLI (Vercel)

npx skills add brave/brave-search-skills --skill local-descriptions -a claude-code

2Manually: put the files in place

~/.claude/skills/local-descriptions/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/local-descriptions/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about local-descriptions

How do I install local-descriptions for Claude Code?

Run npx skills add brave/brave-search-skills --skill local-descriptions -a claude-code, then load the configuration from ~/.claude/skills/local-descriptions/SKILL.md.

What does local-descriptions do?

It returns markdown descriptions of places—restaurants, museums, shops, and more—based on their POI IDs. Descriptions are AI-generated from web search context.

Where do I get POI IDs for local-descriptions?

IDs come from local-place-search or from web-search with result_filter=locations, found in locations.results[].id. IDs expire in roughly 8 hours.

Source text

SKILL.md · MIT
---
name: local-descriptions
description: USE FOR getting AI-generated POI text descriptions. Requires POI IDs from local-place-search, or from web-search with result_filter=locations. Returns markdown descriptions grounded in web search context. Max 20 IDs per request.
---

# Local Descriptions (Search API)

> **Requires API Key**: Get one at https://api.search.brave.com
>
> **Plan**: Included in the **Search** plan. See https://api-dashboard.search.brave.com/app/subscriptions/subscribe
>
> **Two-step flow**: This endpoint requires POI IDs from a prior search.
>
> 1. Get POI IDs from `local-place-search`, or from `web-search` with `result_filter=locations` (`locations.results[].id`)
> 2. Pass those IDs to this endpoint to get AI-generated descriptions

## Quick Start (cURL)

### Get POI Description
```bash
curl -s "https://api.search.brave.com/res/v1/local/descriptions?ids=loc4CQWMJWLD4VBEBZ62XQLJTGK6YCJEEJDNAAAAAAA%3D" \
  -H "Accept: application/json" \
  -H "Accept-Encoding: gzip" \
  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}"
```

### Multiple POIs
```bash
curl -s "https://api.search.brave.com/res/v1/local/descriptions" \
  -H "Accept: application/json" \
  -H "Accept-Encoding: gzip" \
  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
  -G \
  --data-urlencode "ids=loc4CQWMJWLD4VBEBZ62XQLJTGK6YCJEEJDNAAAAAAA=" \
  --data-urlencode "ids=loc4HTAVTJKP4RBEBZCEMBI3NG26YD4II4PATIHPDYI="
```

**Note**: POI IDs are opaque strings returned in web search `locations.results[].id`. They are valid for approximately 8 hours. The example IDs above are for illustration — fetch fresh IDs via `web-search` with `result_filter=locations`.

## Endpoint

```http
GET https://api.search.brave.com/res/v1/local/descriptions
```

**Authentication**: `X-Subscription-Token: <API_KEY>` header

## Parameters

| Parameter | Type | Required | Default | Description |
|--|--|--|--|--|
| `ids` | string[] | **Yes** | — | POI IDs from web search `locations.results[].id` (1-20, repeated: `?ids=a&ids=b`) |

## Response Format

### Response Fields

| Field | Type | Description |
|--|--|--|
| `type` | string | Always `"local_descriptions"` |
| `results` | array | List of description objects (entries may be `null`) |
| `results[].type` | string | Always `"local_description"` |
| `results[].id` | string | POI identifier matching the request |
| `results[].description` | string? | AI-generated markdown description, or `null` if unavailable |

### Example Response

```json
{
  "type": "local_descriptions",
  "results": [
    {
      "type": "local_description",
      "id": "loc4CQWMJWLD4VBEBZ62XQLJTGK6YCJEEJDNAAAAAAA=",
      "description": "### Overview\nA cozy neighborhood cafe known for its **artisanal coffee**..."
    }
  ]
}
```

## Getting POI IDs

`local-place-search` returns POI IDs directly. They also come from the **Web Search API** (`web-search`) with `result_filter=locations`:

```bash
# 1. Search for local businesses
curl -s "https://api.search.brave.com/res/v1/web/search?q=restaurants+san+francisco&result_filter=locations" \
  -H "Accept: application/json" \
  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}"

# 2. Extract POI IDs from locations.results[].id
# 3. Use those IDs with local/pois and local/descriptions
```

## Use Cases

- **Local business overview**: Pair with `local-pois` to get both structured data (hours, ratings) and narrative descriptions
- **Travel/tourism enrichment**: Add descriptive context to POIs for travel planning or destination guides
- **Search results augmentation**: Supplement web search results with AI-generated summaries of local businesses

## Notes

- **Always markdown**: Descriptions use `###` headings, bullet lists, **bold**/*italics* — always formatted as markdown
- **Travel-guide tone**: Typically 200-400 words covering what makes the POI notable
- **AI-generated**: Descriptions are AI-generated based on web search context, not sourced from business profiles
- **Availability**: Not all POIs have descriptions — `description` may be `null`
- **Max IDs**: Up to 20 IDs per request

© brave · MIT · brave/brave-search-skills

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set11

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor