plugins/wikipedia-lookup/skills/wiki-deep-dive/SKILL.md
Retrieve the full content of a Wikipedia article, broken down by sections, with references and images. Use when the user says: "full wikipedia article on", "deep dive into", "everything wikipedia knows about", "read me the wikipedia page for"
npx skillsauth add aymenfurter/polyclaw wiki-deep-diveInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Fetch the full content of a Wikipedia article and present it in a structured way.
python3 -c "
import wikipedia
import json
try:
page = wikipedia.page('TOPIC', auto_suggest=True)
# Split content into sections by heading pattern
import re
sections = re.split(r'\n(== .+ ==)\n', page.content)
result = {
'title': page.title,
'url': page.url,
'sections': [],
'images': page.images[:5],
'references_count': len(page.references),
'links_count': len(page.links)
}
# Parse sections
current_heading = 'Introduction'
current_body = ''
for part in sections:
if re.match(r'^== .+ ==$', part.strip()):
if current_body.strip():
result['sections'].append({'heading': current_heading, 'length': len(current_body.strip())})
current_heading = part.strip().strip('= ')
current_body = ''
else:
current_body += part
if current_body.strip():
result['sections'].append({'heading': current_heading, 'length': len(current_body.strip())})
print(json.dumps(result, indent=2))
except wikipedia.exceptions.DisambiguationError as e:
print(json.dumps({'error': 'disambiguation', 'options': e.options[:10]}, indent=2))
except wikipedia.exceptions.PageError:
print(json.dumps({'error': 'not_found'}, indent=2))
"
For longer articles, first present the table of contents and then fetch specific sections when the user asks:
python3 -c "
import wikipedia
import re
page = wikipedia.page('TOPIC', auto_suggest=True)
sections = re.split(r'\n(== .+ ==)\n', page.content)
# Find the requested section
target = 'SECTION_NAME'
current_heading = 'Introduction'
for part in sections:
if re.match(r'^== .+ ==$', part.strip()):
current_heading = part.strip().strip('= ')
elif current_heading.lower() == target.lower():
print(part.strip()[:3000])
break
"
## <Article Title>
**URL**: <url>
**Sections**: X | **References**: Y | **Links**: Z
### Table of Contents
1. Introduction (<length> chars)
2. <Section Name> (<length> chars)
3. <Section Name> (<length> chars)
...
### Introduction
<first section content, truncated to reasonable length>
After presenting the overview, offer the user options:
/data/notes/topics/<topic>.mdTell the user the article size, number of sections, and highlight the most substantial sections. Offer to read any section in detail.
tools
Search the web for information using Playwright browser automation. Use when the user asks to find, look up, or research something online.
content-media
Summarize the content of a given URL. Use when the user provides a link and asks for a summary or key points.
development
Create, read, update, and organize personal notes. Use when the user asks to take a note, jot something down, save information for later, or manage their notes.
development
Generate a daily briefing summarizing recent memory and relevant information. Use when the user asks for a morning briefing or daily summary.