cnki-download

安装量: 38
排名: #18650

安装

npx skills add https://github.com/cookjohn/cnki-skills --skill cnki-download
CNKI Paper Download (文献下载)
Prerequisites
User
must be logged in
to CNKI with download permissions.
Arguments
$ARGUMENTS
is optionally a paper detail URL. If blank, uses current page.
Steps
1. Navigate (if URL provided)
If URL provided: use
navigate_page
to go to the URL directly (no wait_for needed — Step 2 handles waiting).
Important
Always use navigate_page instead of clicking links on the search results page. Clicking opens a new tab and wastes 3 extra tool calls ( list_pages + select_page + take_snapshot ). 2. Check status and download (single async evaluate_script) Replace FORMAT with "pdf" or "caj" : async ( ) => { // Wait for page load await new Promise ( ( r , j ) => { let n = 0 ; const c = ( ) => { if ( document . querySelector ( '.brief h1' ) ) r ( ) ; else if ( ++ n

30 ) j ( 'timeout' ) ; else setTimeout ( c , 500 ) ; } ; c ( ) ; } ) ; // Captcha check const cap = document . querySelector ( '#tcaptcha_transform_dy' ) ; if ( cap && cap . getBoundingClientRect ( ) . top = 0 ) { return { error : 'captcha' , message : 'CNKI 正在显示滑块验证码。请在 Chrome 中手动完成拼图验证。' } ; } const format = "FORMAT" ; // "pdf" or "caj" // Check download links const pdfLink = document . querySelector ( '#pdfDown' ) || document . querySelector ( '.btn-dlpdf a' ) ; const cajLink = document . querySelector ( '#cajDown' ) || document . querySelector ( '.btn-dlcaj a' ) ; // Check login status const notLogged = document . querySelector ( '.downloadlink.icon-notlogged' ) || document . querySelector ( '[class*="notlogged"]' ) ; if ( notLogged ) { return { error : 'not_logged_in' , message : '下载需要登录。请先在 Chrome 中登录知网账号。' } ; } const title = document . querySelector ( '.brief h1' ) ?. innerText ?. trim ( ) ?. replace ( / \s * 网络首发 \s * $ / , '' ) || '' ; if ( format === 'pdf' && pdfLink ) { pdfLink . click ( ) ; return { status : 'downloading' , format : 'PDF' , title } ; } else if ( format === 'caj' && cajLink ) { cajLink . click ( ) ; return { status : 'downloading' , format : 'CAJ' , title } ; } else if ( pdfLink ) { pdfLink . click ( ) ; return { status : 'downloading' , format : 'PDF' , title } ; } else if ( cajLink ) { cajLink . click ( ) ; return { status : 'downloading' , format : 'CAJ' , title } ; } return { error : 'no_download' , message : '未找到下载链接' , hasPDF : ! ! pdfLink , hasCAJ : ! ! cajLink } ; } 3. Report Based on JS result: status: downloading → "PDF 下载已触发:{title}。请在 Chrome 下载管理器中查看。" error: not_logged_in → tell user to log in error: captcha → tell user to solve captcha Tool calls: 1–2 (navigate_page if URL + evaluate_script) Verified selectors Element Selector Notes PDF download

pdfDown

inside li.btn-dlpdf CAJ download

cajDown

inside li.btn-dlcaj Download area .download-btns parent

Not logged in .downloadlink.icon-notlogged Title .brief h1 strip trailing "网络首发" Captcha detection Check #tcaptcha_transform_dy element's getBoundingClientRect().top >= 0 . Only active when top >= 0 (visible). Pre-loaded SDK sits at top: -1000000px .
返回排行榜