Brightdata Local Search
davila7/claude-code-templates
Set up and run local web searches using Bright Data SERP API with the unfancy-search pipeline (query expansion, SERP retrieval, RRF reranking).
Manages persistent work state (briefs) for local SEO engagements.
The automated check flagged lines worth reading first. See the safety section below.
$ npx skills add garrettjsmith/localseoskills --skill brief -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install garrettjsmith/localseoskills brief --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/garrettjsmith/localseoskills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/brief .claude/skills/brief && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "brief" agent skill from https://github.com/garrettjsmith/localseoskills/tree/main/skills/brief into .claude/skills/brief/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brief", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/garrettjsmith/localseoskills/tree/main/skills/briefType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add garrettjsmith/localseoskills --skill brief -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install garrettjsmith/localseoskills brief --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrettjsmith/localseoskills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/brief .agents/skills/brief && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "brief" agent skill from https://github.com/garrettjsmith/localseoskills/tree/main/skills/brief into .agents/skills/brief/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brief", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add garrettjsmith/localseoskills --skill brief -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install garrettjsmith/localseoskills brief --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrettjsmith/localseoskills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/brief .cursor/skills/brief && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "brief" agent skill from https://github.com/garrettjsmith/localseoskills/tree/main/skills/brief into .cursor/skills/brief/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brief", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/garrettjsmith/localseoskills.git --path skills/brief--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add garrettjsmith/localseoskills --skill brief -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install garrettjsmith/localseoskills brief --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrettjsmith/localseoskills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/brief .gemini/skills/brief && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "brief" agent skill from https://github.com/garrettjsmith/localseoskills/tree/main/skills/brief into .gemini/skills/brief/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brief", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install garrettjsmith/localseoskills briefInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add garrettjsmith/localseoskills --skill brief -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/garrettjsmith/localseoskills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/brief .github/skills/brief && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "brief" agent skill from https://github.com/garrettjsmith/localseoskills/tree/main/skills/brief into .github/skills/brief/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brief", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add garrettjsmith/localseoskills --skill brief -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install garrettjsmith/localseoskills brief --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrettjsmith/localseoskills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/brief .opencode/skills/brief && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "brief" agent skill from https://github.com/garrettjsmith/localseoskills/tree/main/skills/brief into .opencode/skills/brief/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brief", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
briefManages persistent work state (briefs) for local SEO engagements.
Brief is an agent skill from garrettjsmith/localseoskills. Manages persistent work state (briefs) for local SEO engagements. Automatically load this skill when starting work on a specific business or location, when a user says "resume," "continue," "pick up where we left off," or references a specific client or location by name. Also load when any tool call is about to be made for a business, that's the trigger to create or update a brief. Load when receiving output from a scheduled task.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Productivity & Automation, covering Local SEO and Scheduled and recurring tasks. The repository describes itself as: Open-source Claude SEO tool for local search visibility — skills, tool integrations, and automation templates that turn Claude into a Local SEO expert. The licence is MIT.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 405ce20. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Brief loads about 1.9k tokens when it runs. Until then it costs about 110 tokens; SKILL.md has 930 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found patterns that need a careful read before installing.
4. Run initial audit automatically, don't ask permission:Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from garrettjsmith/localseoskills at commit 405ce20, republished under its MIT licence (© garrettjsmith). 930 words, ~1,909 tokens.
.claude/skills/brief/SKILL.md (or your agent's skills folder).Briefs are persistent work state for local SEO engagements. One brief per location. Brand rollup for multi-location work. Scheduled task outputs extend the brief over time, building a compounding history of every scan, audit, report, and finding for each business.
briefs/
{brand}/
_brand.brief.md ← config + rollup across all locations
reports/ ← brand-level rollup reports
{location}/
location.brief.md ← always current, always lean
reports/ ← weekly, monthly, QBR reports
scans/ ← geogrid scans, citation audits, page audits
drafts/ ← GBP posts, review responses awaiting approval
alerts/ ← monitoring alertsThis is the most important section. When a user mentions a specific business and no brief exists, do not proceed with their request yet. Run setup first, then circle back to what they asked for.
Before doing any work for a specific business, check for an existing brief:
briefs/{brand-slug}/{location-slug}/location.brief.mdTell the user:
"I don't have a brief for [Business Name] yet. Let me grab a few details so I can track everything going forward. This takes about 2 minutes."
Then ask these questions one at a time, not all at once:
Q1: "What's the primary keyword you want to rank for? (e.g. 'plumber buffalo ny')"
Q2: "What's the website URL?"
Q3: "How far does the service area extend? (e.g. 5 miles, 20 miles)"
Q4: "Are you managing this for a client, or is this your own business?"
Q5: "Do you want alerts and reports sent to a Slack channel?" (optional, skip if they say no)
That's it. Don't ask for more than these unless something is genuinely ambiguous.
Create brief folder structure:
briefs/{brand-slug}/{location-slug}/location.brief.mdbriefs/{brand-slug}/{location-slug}/reports/briefs/{brand-slug}/{location-slug}/scans/briefs/{brand-slug}/{location-slug}/drafts/briefs/{brand-slug}/{location-slug}/alerts/briefs/{brand-slug}/_brand.brief.mdPopulate Identity section from answers and any context already in the conversation
Configure _brand.brief.md approval block from Q4/Q5 answers
Run initial audit automatically, don't ask permission:
local_auditbusiness_profile + profile_healthgeogrid_scan (7x7, primary keyword, stated radius)citation_auditreview_velocity + google_reviewscompetitor_gapPopulate Findings from audit results
Set Next Action to the single highest-priority fix
Offer scheduled task setup:
"Brief created and initial audit done. I found [X critical, Y important issues]. [Top finding in one sentence].
Want me to set up automated monitoring? I can configure weekly ranking scans, review monitoring, GBP change detection, and monthly reports to run automatically."
If yes, go through task list from
tasks/README.md, recommend based on audit findings, configure via/scheduleIf no, proceed with original request
Then return to what the user originally asked for:
"Now let me [original request]..."
If no filesystem access: run the same conversation and audit, then output the brief as formatted text at the end of setup:
"Here's your brief. Add this to your Project knowledge base so I'll have it next time:" [brief content]
Outside of first run, create a brief mid-session if:
Do not create briefs for:
Claude Code / Cowork:
briefs/{brand-slug}/{location-slug}/location.brief.mdClaude Project: Upload brief file to Project knowledge base after creation. Tell user to do this if they haven't.
At end of every session:
When a scheduled task writes an output file:
[DATE] | {task type} → {one-line finding} → see {output path}_brand.brief.md Locations table row for this locationThe brief stays lean. Detail lives in the output files. The brief is the index.
When a user returns to a business:
Do not re-run tools with results in scans/ unless user asks or data is >30 days old.
After months of scheduled tasks writing to a brief, the history is queryable:
Never delete output files. Archive if the folder gets unwieldy. The history is the value.
During every session, manual or scheduled, watch for:
When observed, surface it explicitly:
"I noticed [X] during this session. This pattern isn't in the skill files. Want me to add it to
meta/lessons.mdfor review?"
Wait for confirmation. Then write the lesson.
After each location session:
_brand.brief.md Locations tableLowercase, hyphens, obvious:
keystone-insurance, mikes-plumbingbuffalo, downtown-chicago, pittsburgh-pa© garrettjsmith, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/brief of garrettjsmith/localseoskills.
Open the folder on GitHubat commit 405ce20
Brief next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Brief this skillgarrettjsmith/localseoskills | 120 | — | ~1.9k | Automated safety check: Warn | MIT | |
| Brightdata Local Searchdavila7/claude-code-templates | 32k | — | ~1.2k | Automated safety check: Notes | MIT | |
| X Demand Radarkennyzir/7deer_skills | 322 | — | ~3.6k | Automated safety check: Pass | MIT | |
| 11 Channel Setup Globalminhnv0807/ai-business-skills | 610 | — | ~3.2k | Automated safety check: Pass | MIT | |
| ScheduleTinyAGI/tinyagi | 3.6k | — | ~1.4k | Automated safety check: Pass | MIT | |
| FLOW SEO FrameworkAgriciDaniel/claude-seo | 19k | 2 repos | ~1.4k | Automated safety check: Pass | MIT |
davila7/claude-code-templates
Set up and run local web searches using Bright Data SERP API with the unfancy-search pipeline (query expansion, SERP retrieval, RRF reranking).
kennyzir/7deer_skills
AI 热点雷达 - 在新 AI 工具/关键词爆火前发现它们,抢注域名、建站套利. An agent skill from kennyzir/7deer_skills.
minhnv0807/ai-business-skills
A skill your agent uses when the user needs to choose and stand up marketing channels and the tech behind them — channel selection scoring, platform-by-platform setup checklists, business account…
TinyAGI/tinyagi
Create, list, and delete scheduled tasks (recurring or one-time) that send messages to agents.
AgriciDaniel/claude-seo
Brings the FLOW framework's stage-specific SEO prompts into the agent, from keyword discovery through backlinks, on-page work and conversion to local SEO, loaded on demand.
TinyAGI/tinyagi
Send a proactive message to a paired user via their channel (Discord, Telegram, or WhatsApp).
garrettjsmith/localseoskills
When the user wants to programmatically manage Google Business Profiles at scale via API, automate GBP updates, build GBP management tools, or integrate GBP data into their systems.
garrettjsmith/localseoskills
When the user wants to create, schedule, or optimize Google Business Profile posts.
garrettjsmith/localseoskills
Generate complete semantic content briefs for local SEO content — location pages, service pages, blog posts, FAQ content, and pillar pages.
garrettjsmith/localseoskills
Build a complete local content strategy from keyword research output.
garrettjsmith/localseoskills
When the user wants to run a geogrid scan, check existing scan reports, track ranking trends over time, monitor GBP changes via Falcon Guard, or analyze reviews.
garrettjsmith/localseoskills
When the user wants to research keywords for a local business, find local search opportunities, build a keyword map for location pages, or understand local search intent.
Categories
Manages persistent work state (briefs) for local SEO engagements. Brief is an agent skill from garrettjsmith/localseoskills. Manages persistent work state (briefs) for local SEO engagements.
Brief fits situations like: tasks that involve Local SEO; tasks that involve Scheduled and recurring tasks.
Run `npx skills add garrettjsmith/localseoskills --skill brief -a claude-code`. Or copy the skill folder (skills/brief in garrettjsmith/localseoskills) into .claude/skills/brief in your project. Claude Code loads it when a task matches its description.
Run `npx skills add garrettjsmith/localseoskills --skill brief -a codex`. Or copy the skill folder (skills/brief in garrettjsmith/localseoskills) into .agents/skills/brief in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add garrettjsmith/localseoskills --skill brief -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/brief, .gemini/skills/brief, .github/skills/brief and .opencode/skills/brief in your project.
SKILL.md names no scripts, command-line tools or credentials: Brief is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md flagged 1 warning(s): tells the agent its actions are pre-authorized / not to stop for confirmation. Read the flagged lines before installing; the check is not a guarantee either way.
Brief is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Brief: Brightdata Local Search (davila7/claude-code-templates, 32k stars), X Demand Radar (kennyzir/7deer_skills, 322 stars), 11 Channel Setup Global (minhnv0807/ai-business-skills, 610 stars) and Schedule (TinyAGI/tinyagi, 3.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
garrettjsmith (a GitHub user) maintains it in garrettjsmith/localseoskills, which has 120 GitHub stars. The repository holds 38 skills in this directory. The repository was last updated on August 15, 2026.
Source: garrettjsmith/localseoskills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.