ソーストリアージ は何をしますか?
候補情報源を見つけ、各情報源について分析前に4つの質問に回答します:
- 法的に無料か?(アクセス)
- 私(AIエージェント)が実際に読めるか、またどの経路でか?(リーチ)
- 本物で、最新で、撤回されていないか?(整合性)
- どの程度優れていて、中心的か?(グレード、役割、⭐ コンテキストピック)
出力は台帳です。research-planがこれを基に構築し、evidence-checkがこれを監査し、ユーザーは単独で使用できます(「どれを読めるか、どれをダウンロードする必要があるか?」)。あらゆる分野および非論文情報源に対応します。
核となる真理(苦労して学んだこと。再学習しないこと)
- アクセスは経路ごとであり、論文ごとではない。 OA記事は出版社サイトでブロックされていてもAPIで読める場合があり、その逆もあります。機能した経路を記録してください。
- HTTP 200は嘘をつく。 CAPTCHAページ、ログインウォール、JavaScriptシェル、空のボディのXML、空のテキストで「成功」を報告するツールはすべて成功のように見えます。受け取ったものを確認してください。
- WebFetchはモデルの抽出結果を返し、ページそのものではない。 読み取りやメタデータには適していますが、逐語的な引用のソースには決してなりません。逐語的なテキストは、生の経路(シェル(
curl)で取得したAPIのXML/JSON、ダウンロードしたPDF、またはユーザーから提供されたファイル)からのみ得られます。 - ブロックされている ≠ 存在しない。 あなたをブロックするページは情報源を
uncheckedのままにしますが、決してnot_foundにはしません。ダウンしているAPIは、シグナルを省略することを意味し、決してfalseを記録しません。 - ブロンズ ≠ 読める。 テストしてください。
- 決して回避しないでください。 シャドウライブラリ、ミラー、キャッシュ、ロボット/CAPTCHA回避のスクレイピング、一括収集は禁止です。
- 決して記憶から情報源を命名しないでください。 テストでは、両モデルの初稿参考文献に、間違ったタイトル、間違った年、間違ったDOI、および存在しない論文が1件含まれていました。すべての情報源は、どこかに表示される前に検索されます。
進捗に応じて書き込む(チェックポイント)
最初にresearch/<slug>/ledger.mdを作成します。毎回の検索後、検索ログにクエリ行を追加します。情報源を分類した後、すぐにその行を追加します。長時間の実行ではコンテキストが失われます。ディスク上の台帳がメモリです。
ステップ0 — フレーム設定(1メッセージで、その後実行)
1行で述べます:質問 · 分野 · 年範囲(デフォルト:過去10~15年 + 重要な過去の研究;「最近」= 5年) · 対象となる情報源タイプ · リクエストからのハード制約(例:「ルーブリックには2つの書籍の章が必要」) · 深さ:
quick: 8~15件の情報源を維持。スノーボーリングは任意(トップレビューから1つの前方スノーボール)。上限を超えたレコードはnot carried forward (cap)として記録:カウントされるが、除外理由は不要。deep: 25件以上維持、3~5件の最も中心的な研究から後方および前方にスノーボール。
修正されるまで進めてください。ユーザーが「確認して」/「ステップバイステップで」と言った場合は、各◆で停止します。それ以外は最後まで実行し、最後に選択をリストアップします。
ステップ1 — まずライブラリを確認
ユーザーが既に持っているものを確認します:接続されたPDFフォルダ、以前のresearch/*/台帳、.bibまたはZotero/CSLエクスポート。所有情報源はheld: library。そのDOIを「既に所有」として検索に渡します。
ステップ2 — 発見
用語セットは概念ごとに、ORで結合:同義語、頭字語、古い名称、英国/米国スペル、メソッド名。生命科学の場合はMeSH + エントリ用語、遺伝子記号、酵素名 + EC番号、ラテン語 + 一般的な生物名を追加。著者ではなくメソッドでクエリを実行。 クエリには2~3の概念グループを使用。それ以上のANDは0件のヒットを返します。
| ニーズ | プライマリ | セカンダリ |
|---|---|---|
| 生物医学 / 生命科学 | PubMed (MeSH) | Europe PMC REST (SRC:"PPR" でbioRxiv/medRxivプレプリント検索; HAS_FT:y = 全文利用可能), OpenAlex |
| あらゆる分野、広範囲 | OpenAlex (トピック/コンセプトフィルターが生検索より優れている) | Semantic Scholar, Crossref |
| CS / ML / 物理 / 量子生物学 | arXiv (関連性でソート) | Semantic Scholar, alphaXiv / Scholar Feed |
| プレプリント | Europe PMC SRC:"PPR" または OpenAlex type:preprint | bioRxivコネクタにはキーワード検索がない:既知のDOIの詳細と公開バージョンにのみ使用 |
| 書籍の章 | OpenAlex type:book-chapter、出版社カタログ、WebSearch | コンテナを確認(ステップ4参照) |
| 主張 / レビュー 高速 | Consensus, Elicit(接続されている場合) | DOIですべてのヒットを検証 |
| 非論文 | まず所有者の公式ドキュメント/仕様/コード | 残りはWebSearchで |
- 感度チェック: 主要な論文が既知の場合は、クエリがそれらを見つけることを確認します。
- ヒット数: 数万件のヒットは広すぎます。0~1件は制限が強すぎるので、言い換えます。0ヒットのクエリの言い換えは同じラウンドの一部です。
- 記録: タイトル、著者、年、発表場所、タイプ、DOI · PMID · PMCID · arXiv · URL、
found_via。 - 重複排除: DOI → その他ID → 正規化されたタイトル + 年。プレプリントと公開バージョンをマージ。
- 制限: 約1,000レコードまたは約50回の呼び出しの前に確認を依頼します。
◆ チェックポイント:用語、クエリ、ヒット数。
ステップ3 — アクセストリアージ(読む前に)
3a. 法的アクセス(バッチ処理)
保持する各情報源について、OpenAlex get_workを呼び出します(検索結果はライセンスを省略)。そのoa_status値を正確にコピーします: gold · diamond · hybrid · green · bronze · closed。またlicenseとoa_url/pdf_urlを記録します。Europe PMC licenseフィールドとPubMed get_copyright_statusはフォールバックです。Unpaywall(version、host_type)には実際のメールアドレスが必要です:ユーザーが承認したものだけを使用し、それ以外はスキップします。
- データなし →
unknown。oa、?サフィックス、またはアクセス値としての出版社名を決して発明しないでください。 - 非論文情報源 →
web。 - ライセンス不明 → 再配布については
local-onlyとして扱います。
3b. エージェントの到達可能性:経路ラダー(最初の成功で停止)
- 保持済み:ユーザーのライブラリ内または以前の実行内。
- Europe PMC REST、生、シェル
curl経由(シェルが到達可能な場合):- 検索:
…/rest/search?query=DOI:"a" OR DOI:"b"&format=json、1回の呼び出しで最大8 DOI、1秒以上の間隔。 - 全文:
…/rest/{PMCID}/fullTextXML。 これが最良の逐語的経路です。シェルが到達できない場合にのみWebFetchを使用します。WebFetchは長いURLを拒否し、レート制限があります。 - 429 → 待機、1回再試行。5xx →
blocked:http-5xx、次の経路に進みます。
- 検索:
- PubMed
get_full_text_article:full_textが空でない場合のみ有効。空 →blocked:empty-body。 - プレプリントサーバー:arXiv、bioRxiv/medRxiv
.fullページ。 - OAロケーション:OpenAlex
oa_url/pdf_url(直接のPDF URLが記事ページで失敗する場合に機能することがある)、Semantic ScholaropenAccessPdf、CORE、Crossref TDMリンク。 - 出版社ページ:ホストごとに1回の試行のみ。DOIリダイレクトに従うことがその試行です。ロボット禁止ホスト(ScienceDirect / Elsevier linkinghub)には決して従わないでください。
- 著者または機関リポジトリ(WebSearch
"<exact title>" pdf経由)。「テキストおよびデータマイニング/AI使用禁止」の通知を尊重します。 - 何も機能しなかった:理由を記録し、情報源をユーザーに回します。
2026年10月時点の観測結果(再テスト必須。これらは変化します):
- 生のOK:curl経由のEurope PMC REST。
- 抽出OK:Nature OA、Frontiers、MDPI、bioRxiv
.full、arXiv、Springer OpenAlexからのPDF URL。 - ブロック:ScienceDirect(ロボット)、Wiley(OAを含む)(フェッチエラー)、Springer記事ページ、BMC PDFエンドポイント、PMCウェブサイト(CAPTCHA)、Annual Reviews、Science。
- 信頼できない:PubMed全文ツール(頻繁に空)、Europe PMC fullTextXML(一部のPMCIDでHTTP 500)、WebFetch経由のEurope PMC(レート制限)。
何かを読み取り可能と呼ぶ前に検証:
- アブストラクトを超えた本文テキストがあること。
- CAPTCHA/サインイン/アクセス拒否ページでないこと。
- 空またはメタデータのみのXMLでないこと。
- ダウンロードしたファイルは、
%PDF-で始まり、HTMLでなく、約10 KBを超える場合のみカウントします。
| リーチ | 意味 |
|---|---|
readable:<経路> | 全文取得:readable:europepmc-xml(生) · readable:pdf(生) · readable:webfetch(抽出、逐語引用不可) |
abstract-only | アブストラクトのみ取得可能(典型的なペイウォール) |
blocked:<理由> | paywall(アブストラクトさえも) · robots · captcha · login · http-4xx · http-5xx · fetch-error · rate-limited · empty-body · js-shell |
unchecked | 未試行(予算/上限)。「未テスト」と書かないでください。 |
ラベルルール: 統制語を正確にこれらのテーブルの通りに最初に置きます。注釈は括弧内に続けてもよい(例:verified (Crossref DOI))。
情報源をblockedまたはabstract-onlyとラベル付けする前に、グリーンコピーを探してください。法的にgold/hybrid/green/bronzeであるが、あなたにとってblockedである情報源は、「無料だがAIにはブロックされている」セクションに入ります。
ステップ4 — 整合性(バッチ処理。命名前)
発見直後に、名前を付けるすべての情報源(計画内、⭐として、または推奨として)に対してこれを実行します。これは最終ステップではありません。
- 存在: 評決
verified·partial·mismatch·not_found·unchecked。Reference Checkercheck_references+ OpenAlexresolve_referencesを使用します。ツールが一致しない場合、CrossrefまたはOpenAlexでの正確なDOI一致は、タイトル検索のnot_foundに優先します。両方を記録します。 - 書籍の章: コンテナを検証します。DOIだけでなく、Crossrefレコードからの書籍タイトル、編集者、ページ、出版社(
api.crossref.org/works/<doi>→container-title、page)。テストでは、DOIは正しかったが書籍タイトルが間違っていることがありました。 - 撤回:
check_retractions。クリアは「通知が見つからなかった」ことのみを意味します。 - 査読: プレプリントにラベルを付けます(台帳では
peer: preprint、ソースファイルエントリでは`preprint`)。公開バージョンが存在する場合はそれを引用します。 - 汚染: 2つ以上のインデックスで一致しない2024年以降のプレプリントは、捏造リスクがあります。再検証するか、削除します。
- 略奪的な発表媒体フラグ;グレー文献:URL + アクセス日 + Waybackリンク。
ステップ5 — グレード、役割、⭐
グレードA–F: 自分の分野への適合性、方法論、査読、最新性、データ、利害関係の中央値。整合性の失敗はグレードをDに制限します。未読またはアブストラクトのみの情報源は暫定グレード(B?)を取得します。
役割: evidence · background · method · tool/data · counter。
非論文階層: T1 所有者ドキュメント/仕様/コード/法令 · T2 機関 · T3 専門家ジャーナリズム · T4 コミュニティ · T5 ベンダーマーケティング。
⭐ コンテキストパック(5~10選):構築中のものを最も改善するであろう情報源(ローカルに保存する場合)。アクセスは無関係。各選択に必要なもの:
- なぜ重要か。
- 入手方法(OAリンク / VITライブラリログイン / 図書館間相互貸借 / 著者にメール)。
- 保存名
<firstauthor>-<year>-<keyword>.pdf。 - 再配布:
ok(CC-BY / CC0 / パブリックドメイン)またはlocal-only(それ以外すべて、不明なライセンスを含む)。
スキュー・チェック: 既知の値の70%以上が1つの次元にある場合 → その旨と件数を述べます。
ステップ6 — 台帳
research/<slug>/ledger.md:最初のテーブル、情報源ごとに1行、列はこの順序:
# · Short cite · Type · Role · Grade · access · licence · version · reach · held · read · integrity · retraction · peer · ⭐ · Save as · Link · found_via
readはnot-readで開始。research-planがfull·sections:<which>·abstract·metadataを入力します。⭐= 選択された情報源はokまたはlocal-only、それ以外は-。- 除外された行はID
E1…を使用します。
テーブルの下:
- 検索ログ: データベース · 日付 · クエリ · ヒット数 · どの用語が何を見つけたか。
- カウント: 特定 → 重複排除後 → 繰り越されなかった(上限) → 保持 → 除外(理由付き)。カウント行の
total= 除外された行を含むすべての台帳行。
バンドルされたチェッカーpython3 <this skill's folder>/scripts/research_checks.py ledger research/<slug>/ledger.md(標準ライブラリPython、独自のサンドボックスで実行)を実行し、引き継ぐ前にエラーを修正します。単独で使用する場合、台帳をresearch-planで説明されているソースファイルとしてレンダリングします。
プライバシー
トピックワードのみで検索し、ユーザーの未発表作品の文章は決して使用しません。ユーザーのメールアドレスはUnpaywallにのみ送信され、かつユーザーの許可がある場合のみです。