gs-navigate-pages
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGoogle Scholar Navigate Pages
Google Scholar页面导航
Navigate search result pages. Requires context from a previous gs-search or gs-advanced-search call.
浏览搜索结果页面。需要来自之前gs-search或gs-advanced-search调用的上下文。
Arguments
参数
$ARGUMENTS can be:
- — go to next page
next - — go to previous page
previous - — go to page N
page N
$ARGUMENTS可以是:
- — 跳转到下一页
next - — 跳转到上一页
previous - — 跳转到第N页
page N
Prerequisites
前置条件
This skill requires context from a previous search:
- : the current Google Scholar search URL
currentUrl - : current page number (1-based)
page
此技能需要来自之前搜索的上下文:
- : 当前Google Scholar搜索URL
currentUrl - : 当前页码(从1开始)
page
Steps
步骤
1. Calculate new URL
1. 计算新URL
Google Scholar uses parameter for pagination (0-indexed, increments of 10):
start- Page 1: (or omitted)
start=0 - Page 2:
start=10 - Page 3:
start=20
Based on $ARGUMENTS:
- : newStart = currentStart + 10
next - : newStart = max(0, currentStart - 10)
previous - : newStart = (N - 1) * 10
page N
Modify the parameter in the current search URL. If doesn't exist in the URL, append .
startstart&start={newStart}Google Scholar使用参数实现分页(0索引,每次增量为10):
start- 第1页:(可省略)
start=0 - 第2页:
start=10 - 第3页:
start=20
根据$ARGUMENTS计算:
- : newStart = 当前start值 + 10
next - : newStart = max(0, 当前start值 - 10)
previous - : newStart = (N - 1) * 10
page N
修改当前搜索URL中的参数。如果URL中不存在参数,则追加。
startstart&start={newStart}2. Navigate
2. 导航页面
Use with the updated URL.
mcp__chrome-devtools__navigate_page使用工具访问更新后的URL。
mcp__chrome-devtools__navigate_page3. Extract results (evaluate_script)
3. 提取结果(evaluate_script)
Same extraction script as gs-search step 2:
javascript
async () => {
for (let i = 0; i < 20; i++) {
if (document.querySelector('#gs_res_ccl') || document.querySelector('#gs_captcha_ccl')) break;
await new Promise(r => setTimeout(r, 500));
}
if (document.querySelector('#gs_captcha_ccl') || document.body.innerText.includes('unusual traffic')) {
return { error: 'captcha', message: 'Google Scholar requires CAPTCHA verification. Please complete it in your browser, then tell me to continue.' };
}
const items = document.querySelectorAll('#gs_res_ccl .gs_r.gs_or.gs_scl');
const results = Array.from(items).map((item, i) => {
const titleEl = item.querySelector('.gs_rt a');
const meta = item.querySelector('.gs_a')?.textContent || '';
const parts = meta.split(' - ');
const authors = parts[0]?.trim() || '';
const journalYear = parts[1]?.trim() || '';
const citedByEl = item.querySelector('.gs_fl a[href*="cites"]');
return {
n: NEW_START + i + 1,
title: titleEl?.textContent?.trim() || item.querySelector('.gs_rt')?.textContent?.trim() || '',
href: titleEl?.href || '',
authors,
journalYear,
citedBy: citedByEl?.textContent?.match(/\d+/)?.[0] || '0',
citedByUrl: citedByEl?.href || '',
dataCid: item.getAttribute('data-cid') || '',
fullTextUrl: (item.querySelector('.gs_ggs a') || item.querySelector('.gs_or_ggsm a'))?.href || '',
snippet: item.querySelector('.gs_rs')?.textContent?.trim()?.substring(0, 200) || ''
};
});
const totalText = document.querySelector('#gs_ab_md')?.textContent?.trim() || '';
const hasNext = !!document.querySelector('#gs_n a.gs_ico_nav_next, #gs_nm a:last-child');
const currentUrl = window.location.href;
return { total: totalText, page: NEW_PAGE, resultCount: results.length, hasNext, currentUrl, results };
}Replace and with the computed values.
NEW_STARTNEW_PAGE提取脚本与gs-search步骤2相同:
javascript
async () => {
for (let i = 0; i < 20; i++) {
if (document.querySelector('#gs_res_ccl') || document.querySelector('#gs_captcha_ccl')) break;
await new Promise(r => setTimeout(r, 500));
}
if (document.querySelector('#gs_captcha_ccl') || document.body.innerText.includes('unusual traffic')) {
return { error: 'captcha', message: 'Google Scholar requires CAPTCHA verification. Please complete it in your browser, then tell me to continue.' };
}
const items = document.querySelectorAll('#gs_res_ccl .gs_r.gs_or.gs_scl');
const results = Array.from(items).map((item, i) => {
const titleEl = item.querySelector('.gs_rt a');
const meta = item.querySelector('.gs_a')?.textContent || '';
const parts = meta.split(' - ');
const authors = parts[0]?.trim() || '';
const journalYear = parts[1]?.trim() || '';
const citedByEl = item.querySelector('.gs_fl a[href*="cites"]');
return {
n: NEW_START + i + 1,
title: titleEl?.textContent?.trim() || item.querySelector('.gs_rt')?.textContent?.trim() || '',
href: titleEl?.href || '',
authors,
journalYear,
citedBy: citedByEl?.textContent?.match(/\d+/)?.[0] || '0',
citedByUrl: citedByEl?.href || '',
dataCid: item.getAttribute('data-cid') || '',
fullTextUrl: (item.querySelector('.gs_ggs a') || item.querySelector('.gs_or_ggsm a'))?.href || '',
snippet: item.querySelector('.gs_rs')?.textContent?.trim()?.substring(0, 200) || ''
};
});
const totalText = document.querySelector('#gs_ab_md')?.textContent?.trim() || '';
const hasNext = !!document.querySelector('#gs_n a.gs_ico_nav_next, #gs_nm a:last-child');
const currentUrl = window.location.href;
return { total: totalText, page: NEW_PAGE, resultCount: results.length, hasNext, currentUrl, results };
}将和替换为计算得到的值。
NEW_STARTNEW_PAGE4. Report
4. 生成报告
Page {page} for "{query}" ({total}):
1. {title}
Authors: {authors} | {journalYear}
Cited by: {citedBy}
Data-CID: {dataCid}
2. ...
{hasNext ? "More results available — ask me for the next page." : "No more results."}{query}的第{page}页({total}):
1. {title}
作者:{authors} | {journalYear}
被引用次数:{citedBy}
Data-CID:{dataCid}
2. ...
{hasNext ? "还有更多结果——可以让我跳转下一页。" : "无更多结果。"}Notes
注意事项
- This skill uses 2 tool calls: +
navigate_pageevaluate_script - Google Scholar shows 10 results per page by default
- parameter controls pagination offset
start
- 此技能使用2个工具调用:+
navigate_pageevaluate_script - Google Scholar默认每页显示10条结果
- 参数控制分页偏移量
start