search-stac
SkillSearchSearch and download satellite imagery from Microsoft Planetary Computer. Browse available collections, search by bbox and time range, list assets, and download specific items.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the search-stac skill
What this skill tells your AI
The instructions your AI receives, as published by opengeos/geoai-skills in skills/search-stac/SKILL.md and read by ahel’s review.
You are helping the user search and download satellite imagery from the Planetary Computer STAC catalog using geoai.
Input: $@
Follow these steps in order.
Step 1 -- Determine the action
Parse $@ to identify what the user wants:
- If the input is
list,collections, or asks "what is available": list collections. - If a collection name and
--bboxare provided: search for items. - If
--downloadis present: download items after searching.
Step 2 -- List collections (if requested)
python3 -c "
import geoai
df = geoai.pc_collection_list()
print(df.to_string())
"
If the user provided a filter keyword, pass it:
python3 -c "
import geoai
df = geoai.pc_collection_list(filter_by='FILTER')
print(df.to_string())
"
Report the available collections and stop (unless the user also specified a search).
Step 3 -- Search for items
Parse the collection name, bounding box (--bbox), and optional datetime range (--datetime).
The datetime range should be in the format YYYY-MM-DD/YYYY-MM-DD (start/end).
python3 -c "
import geoai
items = geoai.pc_stac_search(
collection='COLLECTION',
bbox=[MINX, MINY, MAXX, MAXY],
time_range='TIME_RANGE',
limit=LIMIT,
)
print(f'Found {len(items)} items')
print('---')
for item in items[:20]:
assets = list(item.assets.keys())
print(f' {item.id}: {item.datetime} - assets: {assets}')
"
Replace COLLECTION, MINX, MINY, MAXX, MAXY, TIME_RANGE, and LIMIT with actual values. Use limit=10 by default.
If time_range was not specified, omit it or pass None.
Step 4 -- List assets for an item (optional)
If the user asks about available assets or bands for a specific item:
python3 -c "
import geoai
assets = geoai.pc_item_asset_list(item_id='ITEM_ID', collection='COLLECTION')
for name, info in assets.items():
print(f' {name}: {info}')
"
Step 5 -- Download items (if --download flag or user confirms)
python3 -c "
import geoai, os
items = geoai.pc_stac_search(
collection='COLLECTION',
bbox=[MINX, MINY, MAXX, MAXY],
time_range='TIME_RANGE',
limit=LIMIT,
)
output_dir = 'OUTPUT_DIR'
os.makedirs(output_dir, exist_ok=True)
result = geoai.pc_stac_download(
items,
output_dir=output_dir,
)
print(f'Downloaded to: {output_dir}')
for f in os.listdir(output_dir):
fpath = os.path.join(output_dir, f)
if os.path.isfile(fpath):
size_mb = os.path.getsize(fpath) / (1024 * 1024)
print(f' {f} ({size_mb:.1f} MB)')
"
Default output directory: ./stac_data/
Step 6 -- Report and suggest follow-ups
Summarize the search or download results. Then suggest:
- "Use
/geoai-skills:inspect-geoto examine any downloaded files." - "Use
/geoai-skills:process-rasterto clip or mosaic the imagery."
Error handling
import geoaifails -> delegate to/geoai-skills:install-geoai.- Invalid collection name -> list available collections and suggest the closest match.
- No items found -> suggest expanding the bbox, adjusting the date range, or trying a different collection.
- Download failure -> report the error and suggest retrying with fewer items.
Signals
- GitHub stars
- 30
- Forks
- 4
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
search-stac- Source
- github.com/opengeos/geoai-skills