nature-downloader について
nature-downloaderは、合法なオープンアクセス、出版社API、CNKI、機関のブラウザー経由で論文を取得するためのスキルです。言語と出版社に応じて経路を選び、取得内容を検証して出典をマニフェストに記録します。
主な機能
- 01中国語文献をCNKI経由で取得
- 02対象となる英語論文で出版社APIを試行
- 03合法なオープンアクセスと代替経路を確認
- 04必要に応じて機関ブラウザー経由でアクセス
- 05ファイル形式と取得内容を検証
- 06出典をマニフェストに記録
活用シーン
- 01CNKI経由で中国語論文をダウンロード
- 02出版社の認証情報で対象の英語論文を取得
- 03API取得失敗後に合法なオープンアクセス版を検索
- 04PDFのみの依頼で実際のPDFを確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ yuan1z0825/ nature-skills --skill nature-downloaderインストール後、Claude Code で/nature-downloaderを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitattributes.gitignoreLICENSEmanifest.yamlREADME_EN.mdREADME.mdrequirements.txtagents/openai.yamldata/publishers.jsonschool.schema.jsonschools.yamldocs/nature-downloader-reference-research-2026-07-15.mddocs/superpowers/plans/2026-06-21-nature-downloader-merge.mdexamples/carsi-retry-template.tsvmanifest-template.tsvpublisher-verification-template.tsvreferences/delivery-verification-and-failures.mdinstitutional-browser-workflow.mdscripts/batch_download.mjsbrowser_pdf_downloader.mjscdp_open_url.mjsconfigure_credentials.pyconfigure_school.pyextract_pdf_text.pyscripts/lib/anti-bot.mjscdp-utils.mjscnki.mjscredentials.mjsdirect-download.mjsmanifest.mjs詳細
Nature Literature Downloader
このスキルは、文献を合法的なオープンアクセス、出版社 API、CNKI 機関アクセス、およびブラウザベースの機関プロバイダー経由でルーティングします。scripts/batch_download.mjs がオーケストレーションのエントリーポイントです。学校設定、出版社の認証情報、メタデータ/OA 解決、プロバイダーからのダウンロード、コンテンツ検証、マニフェストは個別のモジュールです。
検証済みのルートはあくまで例であり、デフォルトではありません。機関ごとに、ユーザーの実際の図書館リソース URL から開始すべきです。なぜなら、リソースポータル、CAS コールバック、EZproxy、WebVPN、IP 認証されたデータベースページ、データベース詳細ページのほうが、学校名よりも実際の認可経路を確実に示すからです。
SI 確認ゲート — 最初にこれを行ってください。 PDF、CAJ、HTML、XML、アーカイブ、または添付ファイルをダウンロードする前に、ユーザーが Supporting Information を希望するかどうかを尋ねてください。SI の明示的なリクエストは「はい」とみなします。正文のみの明示的なリクエストは「いいえ」とみなします。それ以外の場合は、バッチ全体について一度だけ尋ねてください。ダウンローダーは
--siまたは--no-siのいずれか一方を付けて実行してください。どちらのフラグもない場合、スクリプトはsi_confirmation_requiredを返し、出力ディレクトリを作成しません。
メインワークフロー。 ルーティングの前に、DOI/タイトルを正規化し、言語と出版社を特定してください。中国語文献は常に CNKI を使用します。利用可能なプロバイダー認証情報がある英語の Elsevier、Springer Nature、IEEE の論文については、まず出版社 API を試し、API ダウンロードが成功した後は OA 判定を要求しないでください。その API 試行が失敗した場合は、自動的に正規の OA ソースを確認してください。その他の英語出版社については、まず OA を確認し、OA が利用できない場合は機関の Web Access ルートを使用します。
规范化 DOI/题名并识别语言、出版商
├─ 中文文献:直接走 CNKI
└─ 英文文献
├─ Elsevier / Springer Nature / IEEE,且已配置有效 Key
│ ├─ 优先通过出版商 API 下载
│ ├─ API 下载成功:结束,不强制判断 OA
│ └─ API 下载失败:检查文章级 OA,再走 PMC / Unpaywall / 合法仓储
└─ 其他出版商
├─ 检查文章级 OA
└─ OA 不可用:走 Web Access 机构授权
中国語文献は CNKI 専用です。 中国語のタイトル、
zhメタデータ言語、明示的な CNKI ソース URL、または--route cnkiは、別の OA コピーが存在するように見えても CNKI を使用しなければなりません。ユーザーの現在の Chrome の図書館/CNKI ログイン状態を再利用し、設定済みのdiscovery.cnki_urlを優先してください。Cookie をエクスポートしたり、機関のパスワードを収集したりしないでください。
出版社 API フォールバック。 有効な API キーは全文への権利を保証するものではありません。Elsevier、Springer Nature、または IEEE の API 試行が権利なしまたは使用可能な全文なしを返した場合は、自動的にまず正規の OA ソースを試してください。出版社 API と OA ルートの両方が失敗した後にのみ、
api_fallback_confirmation_requiredを返し、Web Access を使用するかどうかを一度だけ尋ねてください。自動的に機関の Web Access に切り替えないでください。
ブラウザ状態の原則。 認可されたダウンロードは、ユーザーがログインしている正確なブラウザプロファイルに依存します。プロキシ、CDP セッション、またはブラウザ自動化ツールが、ログイン状態のない新しいプロファイルや別のブラウザを開いた場合、その失敗を図書館の権限不足として扱わないでください。ユーザーのアクティブなブラウザセッションを再利用する制御パスに切り替えるか、制御されたブラウザインスタンスで認証するようユーザーに依頼してください。
フォーマットの原則。 PDF、HTML 全文、および CAJ などのデータベースネイティブ形式は、それぞれ異なる成果物です。ユーザーが PDF のみを求める場合は、実際の PDF リンクまたは
no_authorized_pdf_found/pdf_fetch_failedを報告してください。CAJ、HTML、またはログインページを PDF であるかのように保存しないでください。
Download Intake and First-Run Configuration
すべてのダウンロードリクエストについて、まず論文リストを確定し、次を尋ねてください:
是否同时下载这些文献的 Supporting Information(SI,补充材料)?
この質問の前にメタデータ検索を行うのは、要求された論文を特定するために必要な場合のみです。回答が判明するまでファイルをダウンロードしないでください。選択したルートが CNKI または Web Access の場合にのみ図書館を設定してください。選択した英語論文が Elsevier、Springer Nature、または IEEE に属する場合にのみ出版社 API を設定してください。設定済みのプロバイダー API を試す前に OA 判定は必要ありません。
有料ライブラリのリソース設定
実際に利用しているライブラリのリソース URL をユーザーに尋ねます。
请发你平时进入图书馆电子资源/数据库的平台链接。
可以是资源门户、数据库列表、Web of Science 入口、某个数据库详情页,
或跳转到统一身份认证的登录链接。
設定を保存する前に、URL から認証経路を推定します。
python3 scripts/configure_school.py infer "https://example.edu/library/resources"
python3 scripts/configure_school.py url "https://example.edu/library/resources"
python3 scripts/configure_school.py show
python3 scripts/configure_school.py health --force
配布されるスキルには、学校ごとのプリセットは含まれていません。ユーザーがリソース URL を提示できない場合は、学校固有のドメインを推測せず、所属機関のライブラリまたはデータベースのエントリーを探すよう依頼してください。
デフォルトの設定パスは次のとおりです。
~/.config/lit-dl/school.json
テストや分離されたプロファイルでは、次のように設定します。
LIT_DL_CONFIG_DIR=/path/to/configdir
ダウンローダーはこの設定を自動的に読み込みます。discovery.web_of_science_url が指定されている場合、scripts/batch_download.mjs はこれを Web of Science のエントリーとして使用します。それ以外の場合は、https://www.webofscience.com/wos/woscc/basic-search にフォールバックします。
中国語文献の場合、ダウンローダーは discovery.cnki_url が指定されていれば、それも読み込みます。指定されていない場合、scripts/batch_download.mjs --title "<中文题名>" は https://kns.cnki.net/kns8s/defaultresult/index にフォールバックします。
API 優先とオープンアクセスへのフォールバック
英語論文の場合、論文単位の OA を確認するタイミングを決める前に、出版社を特定します。
-
DOI、PMID、正確なタイトル、論文 URL、または確定した論文リストを収集し、メタデータと出版社を標準化します。
-
Elsevier、Springer Nature、または IEEE の論文で、利用可能なプロバイダー認証情報が設定されている場合は、まずその出版社の API を試します。成功した場合は、
accessMode: publisher_apiとoa_status: not_checked_api_firstを記録し、論文にラベルを付けることだけを目的に OA の解決を実行しないでください。 -
出版社 API に失敗した場合は、PMC、Unpaywall、出版社の OA ページ、arXiv、その他の合法なリポジトリや、明らかにオープンな PDF URL など、正当な OA ソースを自動的に検索します。失敗した API の試行はマニフェストに残してください。
-
その他の英語出版社については、Web Access の前に、正当な OA ソースを検索します。
-
正確なタイトルが指定されている場合、または OA のみを明示的に求められている場合は、次を優先します。
node scripts/batch_download.mjs --title "<exact title>" --open-access --no-si --out "<project>"ユーザーから既知の正当な OA PDF URL が提示された場合は、
--pdf-urlを使用します。 -
ダウンロードしたファイルを検証し、ソースを記録します。PDF のダウンロードに成功した場合は、
open_access_downloadedとしてマークします。 -
合法な OA 全文が見つからない場合は、
oa_not_foundとしてマークします。サポート対象の出版社については API にすでに失敗しているため、Web Access を行う前に確認を求めます。それ以外の出版社については、Web Access に進みます。--route open_accessが明示的に要求された場合は、OA の結果を得た時点で停止します。
出版社 API 認証情報
ルートで初めて必要になったときにだけ、認証情報を遅延設定します。
python3 scripts/configure_credentials.py set elsevier
python3 scripts/configure_credentials.py set springer_nature --service openaccess
python3 scripts/configure_credentials.py set springer_nature --service fulltext
python3 scripts/configure_credentials.py set springer_nature --service metadata
python3 scripts/configure_credentials.py set ieee --fulltext-endpoint 'https://issued-endpoint.example/articles/{doi}'
python3 scripts/configure_credentials.py set elsevier --stdin
python3 scripts/configure_credentials.py show
python3 scripts/configure_credentials.py validate <provider>
python3 scripts/configure_credentials.py validate springer_nature --service openaccess
python3 scripts/configure_credentials.py validate springer_nature --service fulltext
python3 scripts/configure_credentials.py validate springer_nature --service metadata
python3 scripts/configure_credentials.py delete <provider>
python3 scripts/configure_credentials.py contact-email [email protected]
ユーザーには、公式の登録リンクを案内してください。Elsevier は https://dev.elsevier.com/、Springer Nature は https://dev.springernature.com/docs/quick-start/api-access/、IEEE は https://developer.ieee.org/member/register です。
Springer の認証情報はサービスごとに適用されます。metadata_api_key は /meta/v2/json に対して検証され、ダウンロードには使用できません。openaccess_api_key は /openaccess/jats を使用し、fulltext_api_key は Full Text 契約のもとで /xmldata/jats を使用します。ユーザーが有効化したサービスだけを設定してください。アカウントが各サービスへのアクセスを許可している場合、明示的に同じキーを複数のサービスで再利用できます。共有キーまたは個別キーのどちらかを前提にしないでください。Full Text では、発行された完全な KEY/METRIC 値を、必要に応じて非表示プロンプトまたは --stdin で入力してください。Springer のサービスを1つ設定しても、ほかのサービスの設定は保持されます。互換性のため、従来の api_key(--service を付けずに set springer_nature を実行した場合を含む)は引き続き Full Text の認証情報として扱い、Meta や OA の認証情報と推定してはいけません。
Springer のダウンロードでは、まず設定済みの Full Text サービスを試し、失敗した場合は設定済みの OA サービスを試します。OA 専用の認証情報の場合は、OA サービスに直接アクセスします。Meta 専用の認証情報では、API を優先するダウンロードの対象になりません。どちらのフルテキストサービスでも、コンテンツの検証と、シークレットを含まないソース URL が維持されます。これらのサービスが失敗した場合は、既存の一般的な OA と、確認済みの Web Access のフォールバックを使用します。検証では、デフォルトで Full Text サービスを使用します。--service metadata と --service openaccess は、選択したサービスと認証情報のみを検証します。検証では HTTP レスポンスを確認しますが、記事へのアクセス権は確認しません。Meta の検証では OA または Full Text へのアクセスを証明できません。また、フルテキストサービスのプローブが成功しても、特定の記事へのアクセスが保証されるわけではありません。公式のサービス資料:Meta、OA、Full Text。
ユーザーに API キーをチャットに貼り付けるよう、こちらから求めないでください。ユーザーが自発的に出版社の API キーを送信した場合は、その正確なキーを保存する許可とみなしてください。キーの使用を拒否したり、再発行を求めたり、キーをそのまま返したりしてはいけません。キーをコマンドライン引数、ログ、返信、マニフェストに含めず、configure_credentials.py set <provider> --stdin に渡してください。その後は、マスクされた確認情報と検証ステータスのみを報告してください。キーがすでに提供されていない場合は、引き続きローカルの非表示プロンプトを優先してください。IEEE Metadata API へのアクセスは有料のフルテキストアクセスではありません。IEEE を API 経由でダウンロード可能として扱う前に、発行された Full-Text Access エンドポイントまたはテンプレートを必須としてください。シークレットは、モード 0600 の ~/.config/lit-dl/credentials.json に保存されます。
リソース URL の判定
アクセス経路を選択する前に、ユーザーが指定した URL を分類してください。
cas.* / /authserver/login CAS / SSO login page; inspect service= callback, then return to the service portal
idp/shibboleth / carsi CARSI / Shibboleth institutional route
ezproxy / libproxy EZproxy remote-access proxy
webvpn / vpn WebVPN route
metaersp / metaauth / uas Library resource aggregation portal
webofscience / sciencedirect Database or publisher entry; check whether it was reached through a portal
URL が service= パラメーターを含むログインページの場合、コールバック先のホストをリソースサービスとして扱い、ログインページだけでワークフローを完結させないでください。たとえば、https://login.university.example/authserver/login?service=https://resources.university.example/callback の場合、認証後に ID サービスからユーザーのリソースポータルへ戻ります。
機関固有のドメイン
プリセットが完全だと決めつけず、ユーザーのアドレスバーに実際に表示されている内容を確認し、機関ごとに適切に修正してください。
Library home / aggregation: library.example.edu, resources.example.edu
Discovery/database entry: webofscience.com, clarivate.com, cnki.net, sciencedirect.com, provider.example.com
Unified identity / SSO: sso.example.edu, cas.example.edu, idp.example.edu
Federation / WAYF: ds.carsi.edu.cn, wayf.example.org, shibboleth/openathens hosts
Proxy / WebVPN: ezproxy.example.edu, webvpn.example.edu
設定済みの機関ログイン、フェデレーション、プロキシ、データベースログインのホストは、サインイン段階として扱ってください。これらに到達したことを最終的な失敗として扱ってはいけません。
境界
ユーザーが正当に利用できる機関アクセスのみを使用してください。ペイウォール、DRM、または二要素認証を回避してはいけません。
検証優先ルール: ユーザーが認証済みの Chrome セッションで、スライダー、チェックボックス、ロボット確認、または簡単な検証コントロールが表示された場合は、ユーザーに対応を依頼する前にブラウザー上で操作を試みてください。試行は1つのタブにつき最大2回までとし、チャレンジが消えたことを確認し、成功した場合は同じタブから続行してください。
- スライダー/ドラッグ式チャレンジ(CNKI のパズル式スライダーを含む):表示されている移動距離を見積もり、段階的なドラッグをシミュレートしてください。
- ScienceDirect のロボット確認、管理された Turnstile、reCAPTCHA のチェックボックス段階:表示されているチェックボックスを1回試してください。
Continue、Verify、または同等の簡単な表示コントロール:1回クリックしてから、ページの状態を再確認してください。
ユーザーへの引き継ぎ: 制限された試行が失敗した後にのみ、または画像選択による回答、QR 承認、SMS/OTP、パスキー、ハードウェアキー、二要素認証など、秘密情報や本人確認を伴う入力がページで求められた場合は直ちに、ユーザーに対応を依頼してください。チャレンジが表示されたタブは開いたままにし、認証情報やコードをチャットに貼り付けるよう求めてはいけません。
無制限または無差別なダウンロードは避けてください。ユーザーが確認した確定済みの論文リストのみを処理し、プロバイダーに配慮した間隔を置いて操作し、ダウンロードしたもの、入手元、補足情報が見つかったかどうかを明確に記録してください。
機関パスワード、データベースのパスワード、OTP コード、リカバリーコード、またはセッショントークンをチャットやターミナルに貼り付けるようユーザーに求めてはいけません。ユーザーがこれらの本人確認を伴う秘密情報を提示しようとした場合は受け取らず、引き継ぎログイン手順を使用してください。出版社の API キーには、上記の別途定められた受領時保存ルールが適用されます。
保存済みの機関ログインページに関する例外:ユーザーが、ブラウザーに認証情報をすでに入力済みで、表示されているログイン/確認ボタンのクリックを許可すると明示した場合、エージェントは、想定される機関の SSO/CAS/CARSI/Shibboleth ページで、そのボタンを1回クリックしてもかまいません。ただし、認証情報を読み取ったり、コピーしたり、入力したりしてはいけません。この例外は、CAPTCHA、QR ログイン、SMS/OTP、出版社のボット確認、同意/セキュリティ警告、または想定される機関ログインフロー以外のページには適用されません。
Cookie、パスワード、ローカルストレージ、ブラウザープロファイル、またはセッションファイルを調べたりエクスポートしたりしてはいけません。ブラウザーですでに認証済みのページコンテキストのみを使用してください。
前提条件
ダウンロードを試みる前に、選択したアクセス分岐に該当する条件を確認してください。
OA 限定の分岐では、対象となる論文の識別子/リスト、出力フォルダ、Node.js 22+、および PDF 検証で必要な場合は Python 3 を確認してください。ライブラリの設定や機関のブラウザーログインは必要ありません。
有料ライブラリの分岐では、次の条件を確認してください:
- ユーザーのライブラリ/データベースのログイン状態を保持しているブラウザーが、ユーザーのマシン上で開かれていること。
- 学校の設定が存在し、有効であること。
python3 scripts/configure_school.py showを実行します。- 存在しない場合は、
python3 scripts/configure_school.py preset "<school name>"を実行するか、src/wizard.pyを通じてユーザーを案内します。
- ユーザーが、その同じブラウザーで自身の所属機関/ライブラリの経路に個人的にログインしており、ライブラリの集約サービス、対象データベース、またはディスカバリーの入口に到達できること。
- ブラウザー制御の経路が、その同じログイン済みブラウザープロファイルを再利用できること。
- Chrome CDP の場合、ユーザーに
chrome://inspect/#remote-debuggingを開き、現在のブラウザーインスタンスでリモートデバッグを有効にするよう依頼します。 - CDP が古いブラウザー、一時プロファイル、または別のブラウザーに接続する場合は、新しいプロファイルを起動するのではなく、ユーザーのアクティブなセッションを再利用できるブラウザー制御チャネルを使用します。
- Chrome CDP の場合、ユーザーに
- 環境が Node.js 22+ を実行できること。
node --versionを試します。- Codex Desktop で
nodeが PATH にない場合は、%LOCALAPPDATA%\OpenAI\Codex\bin\node.exeを試します。
- 環境が、設定および PDF テキスト検証のために Python 3 を実行できること。
python3 --versionを試します。- 必要に応じて
pip install -r requirements.txtで Python ヘルパーをインストールします。
- Web アクセスの CDP プロキシが利用可能であるか、起動できること。
- 一般的な Claude Code の経路:
%USERPROFILE%\.claude\skills\web-access-main\scripts\check-deps.mjs。 - 一般的な共有エージェントの経路:
%USERPROFILE%\.agents\skills\web-access-main\scripts\check-deps.mjs。 - Codex 専用のセットアップでは、
%USERPROFILE%\.codex\skills\web-access-main\scripts\check-deps.mjsも確認します。
- 一般的な Claude Code の経路:
- ユーザーが対象の出力フォルダを承認していること。
Claude Code でこのスキルがインストールされていないと表示される場合は、次の場所にインストールまたはコピーします:
$env:USERPROFILE\.claude\skills\nature-downloader
Codex やその他のエージェントのセットアップでは、代わりに .codex\skills や .agents\skills を使用する場合があります。3 つの場所は、異なるスキルバージョンではなく、インストール先として扱ってください。
バッチの範囲
確定した DOI/タイトル/PMID のリストは、バッチごとの論文数の固定推奨なしでサポートされます。
運用上の安全策:
- 各プロバイダーに適したペースでリクエストを行い、バッチ全体を通じてマニフェストを維持する
- まず可視の検証コントロールを試みる。最大 2 回の失敗した試行の後、機関のログイン期限切れ時、または異常な/セキュリティ上重要なプロンプトが表示された場合は停止する
広範なキーワード検索を無制限の自動ダウンロードに変えないでください。ジャーナルの号全体、巻全体、または大規模な結果セットをダウンロードしないでください。
ステータス分類
すべての論文を以下のいずれかのステータスに分類し、そのステータスをマニフェストに保持してください:
downloaded
downloaded_with_si
open_access_downloaded
full_text_html_available
available_not_downloaded
native_fulltext_downloaded
si_confirmation_required
credentials_missing
credentials_invalid
api_not_entitled
api_fulltext_unavailable
api_fallback_confirmation_required
oa_not_found
oa_resolution_inconclusive
metadata_ambiguous
carsi_waiting_user
carsi_resolved_retry_needed
publisher_verification_waiting_user
sciencedirect_robot_check
retry_after_user_verification
verification_auto_passed
verification_auto_failed
do_not_auto_retry
url_needs_repair
library_no_permission
no_full_text_link
publisher_blocked_waiting_user
no_authorized_pdf_found
failed_after_retry
verification_auto_passed は、CAPTCHA/スライダー/ロボットチェックがスキルによって自動的に解決され、その後ダウンロードが正常に進行した場合に使用します。
verification_auto_failed は、自動検証を試みたもののチャレンジを通過できなかった場合に使用します。これはユーザーへの引き継ぎステータスであり、最終的な失敗ではありません。
carsi_waiting_user は、ブラウザが機関の SSO / CAS / CARSI-Shibboleth / OpenAthens / データベース認証ページを明示的に表示している場合にのみ使用します。これを最終的な失敗として扱わないでください。
publisher_verification_waiting_user または sciencedirect_robot_check は、出版社のページに検証チャレンジが表示されているものの、自動操作が不可能だった場合に使用します。制限付きの自動試行を行って失敗した場合は、代わりに verification_auto_failed を使用してください。これらのいずれも最終的なダウンロード失敗ではありません。
open_access_downloaded は、PMC、出版社の OA PDF、arXiv、その他の合法的なオープン PDF ソースなど、正規のオープンアクセス経路が機関の認証なしでダウンロード済み PDF を提供した場合に使用します。
API ファーストのダウンロードが成功した場合は、oa_status: not_checked_api_first を記録します。これは OA 解決が意図的にスキップされたことを意味し、その論文が非 OA であることを意味するものではありません。api_fallback_confirmation_required は、サポートされている出版社 API の試行とその自動 OA フォールバックの両方が失敗した後にのみ使用してください。
full_text_html_available は、図書館/全文リゾルバーが読み取り可能な HTML 全文へのアクセスを許可したものの、有効な PDF リンクまたは %PDF レスポンスが得られない場合に使用します。これは PDF ダウンロードではなく、全文アクセスの成功結果です。ユーザーが論文を求めていた場合は HTML/テキストを保存し、現在の認証済み経路では PDF が利用できなかったことをユーザーに明確に伝えてください。
library_no_permission は、図書館ポータル、SFX/OpenURL リゾルバー、データベース、または出版社のページが、ユーザーの機関にその論文の全文閲覧権限がないことを明確に示している場合に使用します。現在の図書館リソースではこの論文の権限がないことをユーザーに率直に伝えてください。一時的なネットワーク問題であるかのように出版社への直接アクセスを再試行しないでください。
ブラウザコントロールの開始
web-access CDP プロキシが、ユーザーが使用しているものと同じログイン済みブラウザインスタンスにアタッチできる場合は、それを使用してください。タスクが既存のログイン状態に依存しており、CDP が空白/新規プロファイルを開く場合は、ユーザーのアクティブなブラウザセッションを再利用するブラウザコントロールチャネルを優先してください。
Windows PowerShell の場合:
$node = "node"
if (-not (Get-Command node -ErrorAction SilentlyContinue)) {
$node = "$env:LOCALAPPDATA\OpenAI\Codex\bin\node.exe"
}
$checkDepsCandidates = @(
"$env:USERPROFILE\.claude\skills\web-access-main\scripts\check-deps.mjs",
"$env:USERPROFILE\.agents\skills\web-access-main\scripts\check-deps.mjs",
"$env:USERPROFILE\.codex\skills\web-access-main\scripts\check-deps.mjs"
)
$checkDeps = $checkDepsCandidates | Where-Object { Test-Path $_ } | Select-Object -First 1
if (-not $checkDeps) { throw "web-access-main/scripts/check-deps.mjs not found" }
& $node $checkDeps
次にテストします:
Invoke-WebRequest -UseBasicParsing -Uri "http://127.0.0.1:3456/targets" -TimeoutSec 10
これがハングするか失敗する場合:
- ユーザーにリモートデバッグのチェックボックスを確認してもらいます。
%TEMP%\cdp-proxy.logを確認します。- ターゲットは表示されるもののデータベース/図書館ページが未認証の場合、図書館の権限不足を疑う前に、古い CDP エンドポイント、間違ったブラウザ、または新規ブラウザプロファイルを疑ってください。
- Chrome のセッションファイルを読み取ろうとしないでください。
高速バッチパス(2 本以上の論文のデフォルト — 高速かつトークン効率が高い)
単一の論文を超える場合は、ブラウザをステップごとに操作するのではなく、scripts/batch_download.mjs を実行してください。OA と出版社の API は CDP なしで動作します。CNKI、Web Access、およびリクエストされた SI は、認証済みブラウザに遅延してアタッチします。大きな DOM とファイルのバイト列はスクリプト内にとどまります。
スクリプトは ~/.config/lit-dl/school.json を自動的に読み取ります。設定に discovery.web_of_science_url が含まれている場合、その URL が Web of Science のエントリとして使用されます。それ以外の場合、スクリプトはコンパイル済みのデフォルト Web of Science URL にフォールバックします。
# by topic (collects N records from Web of Science Core Collection):
node scripts/batch_download.mjs --topic "rice blast resistance gene" --count 10 --no-si --out "<project>"
# by explicit DOIs:
node scripts/batch_download.mjs --dois "10.1007/s00122-021-03957-1,10.1111/pbi.14066" --no-si --out "<project>"
# by exact open-access title (arXiv fallback, useful for DOI-less papers):
node scripts/batch_download.mjs --title "Attention Is All You Need" --open-access --no-si --out "<project>"
# by Chinese exact title (default CNKI route):
node scripts/batch_download.mjs --title "乡村振兴背景下数字治理研究" --no-si --out "<project>"
# by Chinese exact title, PDF only:
node scripts/batch_download.mjs --title "乡村振兴背景下数字治理研究" --cnki-format pdf --no-si --out "<project>"
# by Chinese exact title with a library-provided CNKI entry:
node scripts/batch_download.mjs --title "乡村振兴背景下数字治理研究" --cnki-url "https://kns.cnki.net/kns8s/defaultresult/index" --no-si --out "<project>"
# by known PDF URL:
node scripts/batch_download.mjs --pdf-url "https://arxiv.org/pdf/1706.03762" --title "Attention Is All You Need" --no-si --out "<project>"
# replace --no-si with --si only after the user explicitly requests SI
出力には { summary, manifest, results } が含まれます。スクリプトは <project>/manifest.json に、ルート、OA の証拠、アクセスモード、フォーマット、MIME、バイト数、SHA-256、SI の選択、および型付きの失敗を書き出します。シークレットらしきフィールドは再帰的に削除されます。PDF は PDFs/ の下に、ネイティブ HTML/XML は FullText/ の下に、CAJ は CNKI/ の下に、補足資料は SupportingInformation/ の下に配置されます。
トークンの規律(すべてのパスに適用): ページ DOM 全体、検索結果、または PDF/SI のバイト列を eval してエージェントのコンテキストに戻さないでください。大きなデータは Node/scripts/*.mjs の中に保ち、コンパクトなステータスのみを表に出してください。対話的な /eval + cdp_open_url.mjs は、以下の単一論文ルート、またはバッチ実行後に 1 本の行き詰まった論文を診断するために取っておいてください。
高度なブラウザおよび配信ルート
このルーターはコンパクトに保ち、詳細な運用リファレンスはその条件が該当する場合にのみ読み込んでください:
- 正規の OA および該当する出版社 API のルートを使い果たし、タスクが Web of Science、機関認証済みブラウザセッション、出版社の検証、認証のハンドオフ、またはブラウザコンテキストでの PDF 転送を必要とする場合は、references/institutional-browser-workflow.md を読み込んでください。
- ユーザーが Supporting Information を要求した場合、ダウンロードしたファイルに最終検証と命名が必要な場合、またはアクセス試行が型付きの失敗やリトライ状態に達した場合は、references/delivery-verification-and-failures.md を読み込んでください。
このルーターにある境界、SI 確認ゲート、ブラウザ状態の原則、ステータスの意味論、およびトークンの規律は、いずれかのリファレンスを読み込んだ場合でも必須のままです。リファレンスを、アクセス制御を回避したり、認証情報、Cookie、またはセッションデータを露出したりする許可として扱わないでください。