Lee Foot

Keyword Extractor (LLM)

Extract and categorise keywords from content for internal linking opportunities.

Launch the app → View the source

#about

Multi-word phrase extraction (2+ words) with verbatim validation against source content.

Two categories: Internal Link Opportunities (anchor text candidates) and New Page Ideas (content gaps).

Filters against existing anchor texts to prevent duplication.

Claude Sonnet/Haiku or GPT-4o/4o-mini/4.1.

Streamlit appRequires an API key

Platform
Browser-based (no installation required)
Input
Anthropic or OpenAI API keyPage content (paste or CSV/Excel)Optional: existing anchors to exclude
Output
Side-by-side categories: Internal Link Opportunities, New Page Ideas. Keyword counts per category.
Category
Content

Use cases

  • Finding internal linking opportunities
  • Content gap analysis
  • Anchor text ideation
  • New page topic discovery

#features

  • Multi-word phrase extraction (minimum words slider 2-5)
  • First 8,000 characters of content analysed
  • Verbatim validation against the full source text
  • Two categories: internal link anchors vs new page ideas
  • Substring filtering against existing anchor texts
  • Results limit per category (10-50, default 20)

#how-to-use

  1. Enter API key and select model
  2. Paste content or upload file with column mapping
  3. Optionally add existing anchor texts
  4. Run extraction with category limits
  5. Download CSV/Excel with keyword counts

#faq

How much of my content is actually analysed?
Only the first 8,000 characters are sent to the model, whether pasted or from a file. Keywords that appear only later in a long article will not be extracted, so put key sections first or split long content into chunks.
How does the verbatim validation work?
After the model responds, every keyword is checked as a case-insensitive substring of your full content and anything not found is silently dropped. This stops the model inventing phrases, but it also means paraphrases the model returns disappear without warning, which is one reason you may get fewer keywords than the per-category limit.
Why did the anchor exclusion remove so many keywords?
The filter is substring-based in both directions: a keyword is removed if it contains an existing anchor or an existing anchor contains it. A short anchor like 'welding' will eliminate every extracted phrase containing that word, so keep the exclusion list to specific multi-word anchors.
Can it fetch content from URLs?
No. There is no scraping in this tool; the URL and H1 fields are passed to the model as context only. You must paste content or upload a CSV/Excel file with a content column (plus optional URL, H1 and existing-anchors columns for bulk runs).
Are results reproducible?
With Claude, yes in principle: calls use temperature 0 and a 2,000 output token cap. With OpenAI, the response is forced into a strict JSON schema but the temperature is not pinned, so runs can differ slightly. Bulk mode adds a 1 second pause per row.

/contact

Want me to run this for you? I run this tool as a managed service, or build something custom around your data. You get the insights without touching the code.