ieee-search
IEEE Xplore Basic Search
Search for academic papers on IEEE Xplore using Chrome DevTools MCP.
Important: Determine the IEEE Xplore base URL
Before the first operation, check the current browser page URL to determine which IEEE Xplore domain the user is accessing. Store it as BASE_URL. Common patterns:
- Direct access:
https://ieeexplore.ieee.org - Institutional proxy: URL containing
ieeexplorein the hostname (e.g. WebVPN or EZProxy)
Use whatever origin the user's browser is currently on. If no IEEE Xplore page is open, ask the user which URL to use.
Steps
Step 1: Navigate to search results
Use navigate_page to go to:
{BASE_URL}/search/searchresult.jsp?queryText={QUERY}&highlight=true&returnFacets=ALL&returnType=SEARCH&matchPubs=true&rowsPerPage=25&pageNumber=1
Where {QUERY} is the URL-encoded search keywords from $ARGUMENTS.
Important: Always include initScript to prevent bot detection:
initScript: "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
Step 2: Check access
After navigation, verify the page loaded correctly:
- If the page shows a captcha or bot detection challenge: tell the user "请在浏览器中完成验证后告知我。" Wait for confirmation.
- If the URL no longer contains
ieeexplore, the user may have been redirected to a login page. Tell the user: "页面被重定向,请在浏览器中完成登录或认证后告知我。" Then wait. - Otherwise, proceed.
Step 3: Extract search results
Use evaluate_script with built-in waiting. Do NOT use wait_for — it returns the full page snapshot which can exceed token limits.
async () => {
// Wait for results to load (up to 15s)
for (let i = 0; i < 30; i++) {
if (document.querySelectorAll('.List-results-items .result-item').length > 0 ||
document.querySelector('.Dashboard-header span')) break;
await new Promise(r => setTimeout(r, 500));
}
const items = document.querySelectorAll('.List-results-items .result-item');
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 abstractSnippet = item.querySelector('.js-displayer-content span')?.textContent?.trim() || '';
// Cited by: extract from full text content using regex (DOM selector varies across pages)
const itemText = item.textContent || '';
// Two formats: "Cited by: 70" (default sort) and "Cited by: Papers (190)" (citation sort)
const citedByMatch = itemText.match(/Cited by:.*?(\d+)/);
const citedBy = citedByMatch ? citedByMatch[1] : '';
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,
abstract: abstractSnippet.substring(0, 200),
});
}
const resultCount = document.querySelector('.Dashboard-header span')?.textContent?.trim() || '';
const noResults = resultCount.includes('No results') || items.length === 0;
return { papers, resultCount, noResults };
}
Step 4: Handle no results
If noResults is true:
- Tell the user no results were found on IEEE Xplore.
- Suggest broadening the search (use fewer keywords, remove quotes, try synonyms).
- Important: IEEE Xplore does NOT host IEC, ISO, or CENELEC standard documents directly. If the user searched for an IEC/ISO standard number (e.g. "IEC 60358-2"), explain:
- IEC standards must be obtained from the IEC Webstore (webstore.iec.ch) or national standardization bodies.
- Suggest searching IEEE Xplore for the technical topic instead (e.g. "coupling capacitor power line carrier" instead of "IEC 60358").
- Suggest searching IEEE SA (standards.ieee.org) for the corresponding IEEE/ANSI standard using
ieee-standards-search. - Offer to search for papers that reference the IEC standard.
Step 5: Present results
Format results as a numbered list:
{resultCount}
1. {title}
Authors: {authors}
Publication: {publication} | {year}
Info: {info}
Cited by: {citedBy} | Article #: {arnumber}
2. ...
Key CSS Selectors
| Element | Selector |
|---|---|
| Result items | .List-results-items .result-item |
| Title link | h3 a[href*="/document/"] |
| Authors | .author a[href*="/author/"] |
| Publication link | .description a[href*="/xpl/"] |
| Publisher info | .publisher-info-container |
| Abstract snippet | .js-displayer-content span |
| Cited by | Regex Cited by:\s*(\d+) on item text (DOM selector unreliable) |
| Result count | .Dashboard-header span |
| Checkbox | input[type="checkbox"][aria-label="Select search result"] |
URL Parameters
| Param | Description | Example |
|---|---|---|
queryText |
Query string | deep learning |
rowsPerPage |
Results per page | 25, 50, 75, 100 |
pageNumber |
Page number (1-based) | 1, 2, 3 |
sortType |
Sort order | newest, oldest, paper-citations, patent-citations, most-popular |
highlight |
Highlight matches | true |
returnFacets |
Return facets | ALL |
returnType |
Return type | SEARCH |
matchPubs |
Match publications | true |
Search Strategy (Learned from Testing)
Quoting matters: IEEE Xplore treats unquoted words as individual tokens joined by OR. Always quote multi-word phrases.
| Query | Results | Quality |
|---|---|---|
coupling capacitor power line carrier |
~12,000+ | Terrible — each word matches independently |
"coupling capacitor" "power line carrier" |
4 | Excellent — exact phrases, both required |
"coupling capacitor" OR "capacitor divider" |
Moderate | OK — OR between synonyms of same concept |
"coupling capacitor" OR "power line carrier" |
~12,000+ | Bad — OR between different concepts |
Rules:
- Always quote multi-word phrases with double quotes
- Use AND (implicit) between different concepts — just put quoted phrases next to each other
- Use OR only between synonyms of the same concept (e.g.
"drain coil" OR "line trap") - Add a domain anchor like
"HVDC"or"high voltage"to prevent cross-domain noise - If results > 500, the query is too broad — add more AND terms
- If results = 0, the query is too narrow — remove one quoted phrase or try synonyms
- For multi-topic searches, use
ieee-advanced-searchwithmatchBoolean=truefor full boolean control
Notes
- Results include article numbers (
arnumber) needed for detail extraction, PDF download, and citation export. - This skill performs at most 2 tool calls:
navigate_page+evaluate_script. - IEEE Xplore uses Angular and loads content dynamically; the wait loop in
evaluate_scripthandles this. - IEEE Xplore does NOT host IEC/ISO/CENELEC standards. For IEC standards, direct users to IEC Webstore. For corresponding IEEE/ANSI standards, use
ieee-standards-search. - The
citedByfield is extracted via regex from the item's text content, not a specific DOM element, because IEEE Xplore's cited-by markup varies.