來源審查與分類 是做什麼的?
尋找候選來源,然後在進行任何分析之前,回答關於每個來源的四個問題:
- 它是否合法免費?(可及性)
- 我,作為一個 AI 代理,實際上能否讀取它,以及透過哪種途徑?(可觸及性)
- 它是否真實、當前且未被撤稿?(完整性)
- 它的品質和核心程度如何?(評級、角色、⭐ 脈絡選集)
輸出是一個分類帳。research-plan 技能會在其基礎上建構,evidence-check 技能會根據它進行審計,使用者也可以單獨使用它(「這些來源中,哪些你可以讀取,哪些必須由我下載?」)。此技能適用於任何領域和非論文類來源。
核心真理(從慘痛經驗學到;不要重新學習)
- 可及性是針對每條途徑,而非每篇論文。 一篇開放獲取的文章可能在出版商網站上被封鎖,但可透過 API 讀取,反之亦然。記錄實際有效的途徑。
- HTTP 200 狀態碼會騙人。 CAPTCHA 頁面、登入牆、JavaScript Shell、空內容的 XML,以及回報「成功」但內容為空的工具,看起來都像成功。請檢查你實際獲得的內容。
- WebFetch 回傳的是模型的提取結果,而非原始網頁。 它適合閱讀和取得後設資料;絕不能作為逐字引用的來源。逐字文本僅能來自原始途徑:使用 shell (
curl) 取得的 API XML/JSON、下載的 PDF,或使用者提供的檔案。 - 被封鎖 ≠ 找不到。 封鎖你的頁面會將來源標記為
unchecked,絕不能標記為not_found。API 故障意味著忽略該訊號,絕不能記錄為false。 - 青銅級(Bronze) ≠ 可讀取。 必須測試它。
- 絕不規避。 不得使用影子圖書館、鏡像站、快取、繞過機器人/CAPTCHA 的抓取,或批量蒐集。
- 絕不憑記憶命名來源。 在測試中,兩個模型的初稿參考文獻都出現了錯誤的標題、錯誤的年份、錯誤的 DOI,甚至有一篇不存在的論文。每個來源在被寫入任何地方之前都必須經過查詢。
邊做邊記錄(檢查點)
在開始時建立 research/<slug>/ledger.md。在每次搜尋後,立即將查詢行附加到搜尋日誌中。在分類一個來源後,立即將其行附加到分類帳中。長時間的執行會遺失上下文;磁碟上的分類帳就是記憶體。
步驟 0 — 框架(一個訊息,然後開始)
用一行說明:問題 · 領域 · 年份範圍(預設:過去 10–15 年 + 重要的舊作;「近期」= 5 年) · 範圍內的來源類型 · 來自請求的硬性限制(例如「評分量表需要 2 個書籍章節」) · 深度:
quick(快速):保留 8–15 個來源。滾雪球式搜尋為可選(從頂級評論進行一次前向滾雪球)。超過上限的記錄記錄為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 |
| 計算機科學 / 機器學習 / 物理 / 量化生物學 | 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 筆表示限制過嚴,需重新措辭。重新措辭一個零結果的查詢屬於同一輪工作。
- 記錄: 標題、作者、年份、發表處、類型、DOI · PMID · PMCID · arXiv · URL,
found_via。 - 去重: DOI → 其他 ID → 標準化後的標題 + 年份。合併預印本和已發表版本。
- 界限: 在達到約 1,000 筆記錄或約 50 次 API 呼叫前,與使用者確認。
◆ 檢查點:詞彙、查詢、結果數量。
步驟 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)需要一個真實的 Email:僅在使用者同意用於此目的時使用;否則跳過。
- 無資料 →
unknown。絕不能自行發明oa、?後綴或出版商名稱作為可及性值。 - 非論文類來源 →
web。 - 授權未知 → 在重新分發時視為
local-only。
3b. 代理可觸及性:途徑階梯(在第一個成功處停止)
- 已有(Held):在使用者的資料庫或先前的執行中。
- Europe PMC REST,原始資料,透過 shell
curl,前提是 shell 可以存取:- 搜尋:
…/rest/search?query=DOI:"a" OR DOI:"b"&format=json,每次呼叫 ≤ 8 個 DOI,間隔 ≥ 1 秒; - 全文:
…/rest/{PMCID}/fullTextXML。 這是最好的逐字引用途徑。僅在 shell 無法存取時使用 WebFetch;WebFetch 會拒絕長 URL 且有速率限制。 - 429 → 等待,重試一次。5xx →
blocked:http-5xx,前往下一條途徑。
- 搜尋:
- PubMed
get_full_text_article:僅在full_text非空時有效。空內容 →blocked:empty-body。 - 預印本伺服器:arXiv, bioRxiv/medRxiv 的
.full頁面。 - 開放獲取位置:OpenAlex
oa_url/pdf_url(直接的 PDF URL 可能比文章頁面更有效)、Semantic ScholaropenAccessPdf、CORE、Crossref TDM 連結。 - 出版商頁面:每個主機僅嘗試一次。跟隨 DOI 重新導向即為該次嘗試。絕不跟隨進入 robots.txt 禁止的主機(ScienceDirect / Elsevier linkinghub)。
- 作者或機構典藏,透過 WebSearch 搜尋
"<精確標題>" pdf。尊重「禁止文本與資料探勘 / AI 使用」的聲明。 - 以上皆無效:記錄原因並將此來源轉交給使用者。
2026年10月觀察結果(應重新測試;這些情況會改變):
- 原始資料途徑有效:透過 curl 存取的 Europe PMC REST。
- 提取途徑有效:Nature OA、Frontiers、MDPI、bioRxiv
.full、arXiv、來自 OpenAlex 的 Springer 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:<route> | 已取得全文:readable:europepmc-xml(原始資料) · readable:pdf(原始資料) · readable:webfetch(提取所得,不適用於逐字引用) |
abstract-only | 僅能獲得摘要(典型的付費牆) |
blocked:<reason> | 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 Checker 的check_references+ OpenAlex 的resolve_references。當工具之間意見不一致時,在 Crossref 或 OpenAlex 中精確匹配到的 DOI 優於標題搜尋得到的not_found;請同時記錄兩者。 - 書籍章節: 驗證容器書籍,而不僅僅是 DOI:書籍標題、編輯者、頁碼和出版商來自 Crossref 記錄(
api.crossref.org/works/<doi>→container-title,page)。在測試中,DOI 是正確的,但書籍標題卻是錯的。 - 撤稿: 使用
check_retractions檢查。Clear 僅表示「未找到撤稿通知」。 - 同儕審查: 為預印本加上標籤(在分類帳中標記為
peer: preprint;在來源檔案條目中標記為`preprint`);如果存在已發表版本,請引用它。 - 污染: 一個 2024 年之後的預印本如果在 ≥2 個索引中無法匹配,則存在偽造風險。請重新驗證或捨棄它。
- 掠奪性期刊標誌;灰色文獻:URL + 存取日期 + Wayback Machine 連結。
步驟 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% 相同,則在分類帳中說明數量。
步驟 6 — 分類帳
research/<slug>/ledger.md:第一個表格,每個來源一行,欄位順序如下:
# · 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 <此技能資料夾>/scripts/research_checks.py ledger research/<slug>/ledger.md(標準庫 Python,在你的沙箱中執行),並在移交前修復錯誤。如果單獨使用,請將分類帳渲染為 research-plan 中描述的來源檔案。
隱私
僅使用主題詞進行搜尋,絕不使用使用者未發表作品中的句子。使用者的 Email 僅用於 Unpaywall,並且僅在使用者同意後使用。