
Ieee Parse Results
- 4 installs
- 31 repo stars
- Updated March 14, 2026
- cookjohn/ieee-skills
Re-parses the currently open IEEE Xplore search results page to extract structured data without navigating.
About
An internal skill that extracts structured result data from an already-open IEEE Xplore search page. Other skills use it to re-parse results after sorting or filtering.
- Extracts from .List-results-items result items on the current page
- Runs without navigation, used internally by other IEEE skills
Ieee Parse Results by the numbers
- 4 all-time installs (skills.sh)
- Ranked #1,780 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
- Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/cookjohn/ieee-skills --skill ieee-parse-resultsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 4 |
|---|---|
| repo stars | ★ 31 |
| Last updated | March 14, 2026 |
| Repository | cookjohn/ieee-skills ↗ |
What it does
Re-parses the currently open IEEE Xplore search results page to extract structured data without navigating.
Files
Parse Current IEEE Xplore Results Page
Extract structured data from an already-open IEEE Xplore search results page without navigating.
When to use
- After the user has manually navigated to a search results page
- When re-parsing results after sorting or filtering changes
- Called internally by other skills
Steps
Step 1: Extract results from current page
Use evaluate_script (no navigation needed):
async () => {
// Verify we are on a search results page
if (!window.location.pathname.includes('/search')) {
return { error: 'Not on an IEEE Xplore search results page.' };
}
// Wait for results if still loading
for (let i = 0; i < 20; i++) {
if (document.querySelectorAll('.List-results-items .result-item').length > 0) break;
await new Promise(r => setTimeout(r, 500));
}
const items = document.querySelectorAll('.List-results-items .result-item');
if (items.length === 0) {
return { error: 'No results found on the current page. The page may still be loading.' };
}
const papers = [];
for (let i = 0; i < items.length; i++) {
const item = items[i];
const titleLink = item.querySelector('h3 a[href*="/document/"]');
const authors = [...item.querySelectorAll('.author a[href*="/author/"]')].map(a => a.textContent.trim());
const pubLink = item.querySelector('.description a[href*="/xpl/"]');
const publisherInfo = item.querySelector('.publisher-info-container');
const infoText = publisherInfo?.textContent?.trim() || '';
const yearMatch = infoText.match(/Year:\s*(\d{4})/);
const docNumber = titleLink?.href?.match(/\/document\/(\d+)/)?.[1] || '';
const itemText = item.textContent || '';
const citedByMatch = itemText.match(/Cited by:.*?(\d+)/);
const citedBy = citedByMatch ? citedByMatch[1] : '';
const hasCheckbox = !!item.querySelector('input[type="checkbox"]');
papers.push({
rank: i + 1,
title: titleLink?.textContent?.trim()?.replace(/<[^>]+>/g, '') || '',
arnumber: docNumber,
authors,
publication: pubLink?.textContent?.trim() || '',
year: yearMatch ? yearMatch[1] : '',
info: infoText,
citedBy,
hasCheckbox,
});
}
const resultCount = document.querySelector('.Dashboard-header span')?.textContent?.trim() || '';
const currentUrl = window.location.href;
const urlParams = Object.fromEntries(new URL(currentUrl).searchParams);
return { papers, resultCount, currentUrl, urlParams };
}Step 2: Return structured data
Return the extracted data. The arnumber field is the primary key for all subsequent operations (detail, download, export).
Notes
- This skill uses only 1 tool call (
evaluate_script). - It does NOT navigate — it reads the current page as-is.
- If results are empty, the page may still be loading; the built-in wait loop handles this.