用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/cookjohn/ieee-skills --skill ieee-search命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | ieee-search |
| description | Searches for academic papers on IEEE Xplore. Use when the user wants to find papers by keyword on IEEE Xplore. |
| argument-hint | [search keywords] |
Search for academic papers on IEEE Xplore using Chrome DevTools MCP.
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:
https://ieeexplore.ieee.orgieeexplore in 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.
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})"
After navigation, verify the page loaded correctly:
ieeexplore, the user may have been redirected to a login page. Tell the user: "页面被重定向,请在浏览器中完成登录或认证后告知我。" Then wait.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.();
infoText = publisherInfo?.?.() || ;
yearMatch = infoText.();
docNumber = titleLink?.?.()?.[] || ;
abstractSnippet = item.()?.?.() || ;
itemText = item. || ;
citedByMatch = itemText.();
citedBy = citedByMatch ? citedByMatch[] : ;
papers.({
: i + ,
: titleLink?.?.()?.(, ) || ,
: docNumber,
authors,
: pubLink?.?.() || ,
: yearMatch ? yearMatch[] : ,
: infoText,
citedBy,
: abstractSnippet.(, ),
});
}
resultCount = .()?.?.() || ;
noResults = resultCount.() || items. === ;
{ papers, resultCount, noResults };
}
If noResults is true:
ieee-standards-search.Format results as a numbered list:
{resultCount}
1. {title}
Authors: {authors}
Publication: {publication} | {year}
Info: {info}
Cited by: {citedBy} | Article #: {arnumber}
2. ...
| 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"] |
| 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 |
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:
"drain coil" OR "line trap")"HVDC" or "high voltage" to prevent cross-domain noiseieee-advanced-search with matchBoolean=true for full boolean controlarnumber) needed for detail extraction, PDF download, and citation export.navigate_page + evaluate_script.evaluate_script handles this.ieee-standards-search.citedBy field is extracted via regex from the item's text content, not a specific DOM element, because IEEE Xplore's cited-by markup varies.