What problem it solves
This kind of reel is everywhere on Instagram: "Follow and drop a comment, and I'll DM you the location." The very thing you want, the place, only comes after that DM.
But a promotional reel is a video made to attract people, so it actually leaves plenty of clues on screen: the text on a sign, the shape of a bridge, the color of a lighthouse, a line of on-screen text, a caption hashtag. This skill finds the place from those clues alone. No DM required.
First, what is Claude Code
Claude Code is an AI coding agent from Anthropic that runs in your terminal. It handles what you ask by reading files and running commands on its own.
A 'skill' is an extension that adds a specific capability to Claude Code, and a 'plugin' is how skills are packaged and distributed. This tool ships one skill, 'reverse-locate the place in a reel,' as a plugin. As long as you have Claude Code, the two lines below wire it in.
Install - two lines
Type the following inside Claude Code to register the marketplace and install the skill.
You don't need to know what yt-dlp (a video downloader) or ffmpeg (a frame extractor) are. On first run, a preflight detects them, installs via Homebrew on macOS, and prints the exact install command on Linux and Windows.
/plugin marketplace add hjsh200219/insta-spot-search
/plugin install insta-spot-search@insta-spot-searchHow to use it - one line
Just hand it a reel URL. You can use the slash command, plain language, or the path to a video file you've saved locally.
If you know anything at all about the place, add it as a hint. A single "looks like a beach in Gangwon" narrows the search and lifts accuracy.
/insta-spot-search https://www.instagram.com/reels/XXXX/
# plain language works too
where is this reel? https://www.instagram.com/reels/XXXX/
# a hint raises accuracy
/insta-spot-search <URL> looks like a beach in GangwonWhat happens inside - four stages
On the surface it's one URL, but four stages run inside. It automates exactly how a person would gather and cross-check clues like a detective.
The last stage is the point. It doesn't stop at finding a candidate; for each one it deliberately looks for a reason it might be wrong. Only candidates that survive the attempt to disprove them get marked as confirmed, which keeps plausible-but-wrong answers out of the report.
1) ingest.py yt-dlp pulls metadata, captions, comments, location tags + downloads video
ffmpeg extracts frames (24 by default, 1024px)
2) Read frames Claude builds a clue inventory (signs, bridges, lighthouses, text, hashtags)
3) Parallel search Kakao Map keywords - Naver blog signatures - uploader trace-back
4) Cross-check try to disprove each candidate -> confidence (confirmed/likely/candidate) + evidence reportA real run - a 19-second drone reel
In one real run, a single 19-second drone reel pinned down Sacheonjin Beach in Gangneung, down to the address and map link.
It took an arched bridge, a yellow lighthouse, and people gleaning on the tidal rocks as clues, then cross-checked where all three line up at once. Any single clue leaves several candidates, but only one spot fit all three.
When it gets stuck - common cases
If Instagram blocks logged-out access, it retries automatically with your browser cookies (chrome by default). You just need to be logged into Instagram in Chrome.
An "empty media response" error usually means yt-dlp is outdated and its Instagram extractor broke. brew upgrade yt-dlp clears it.
If you want the narration used as a clue too, add --audio to transcribe the speech (reusing your GROQ or OpenAI key). The downloaded video and frames stay in a local temp folder only and are never uploaded anywhere.
The line it draws
It only targets content promoting public places, like shops and tourist spots. A guardrail refuses use aimed at tracing a private home or someone's movements.
It's all open source (MIT). The original repo is in the source link below.