cnki-download
Download a paper PDF/CAJ from CNKI. Requires user to be logged in. Use when user wants to download a specific paper.
DeepseekModel
官方收录技能
质量 优秀 · 90
v1.0.0
获取
https://deepseekmodel.com/api/download.php?id=cookjohn-cnki-skills-skills-cnki-download-skill-md&format=skill
下载 .skill
标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用
.skill 文件中 system_prompt 字段的实际内容。
name cnki-download description Download a paper PDF/CAJ from CNKI. Requires user to be logged in. Use when user wants to download a specific paper. argument-hint [paper URL or blank if already on detail page] 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 <a> inside li.btn-dlpdf CAJ download #cajDown <a> inside li.btn-dlcaj Download area .download-btns parent <div> 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 .
Agent 识别该技能的关键词,点击任意一个即可复制。
该技能未提供触发词。
下载的 .skill 包内含以下字段。
| 字段 | 说明 |
|---|---|
| format | 格式标识(skill/v1) |
| skill_id | 技能唯一 ID |
| name | 技能名称 |
| version | 版本号 |
| description | 技能描述 |
| category | 所属分类(数组) |
| trigger_words | 触发词列表 |
| tags | 标签列表 |
| source | 来源标识 |
| source_url | 来源链接(本页地址) |
| exported_at | 导出时间(每次下载生成) |
| system_prompt | 系统提示词正文 |
| model_config | 模型参数:provider / model / temperature / max_tokens / top_p |
| examples | 示例 |
| install_guide | 各平台导入说明(Coze / Dify / Claude / 自定义框架) |