general-publisher-access-guard
Avoid bot-blocking publisher websites by routing paper retrieval through legal open-access APIs and mirrors.
Skill by learningmatter-mit
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/learningmatter-mit-general-publisher-access-guard
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: research, legal
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 16
api.biorxiv.org· found in codeapi.crossref.org· found in codeapi.elsevier.com· found in codeapi.openalex.org· found in codeapi.plos.org· found in codeapi.springernature.com· found in codeapi.unpaywall.org· found in codechemrxiv.org· found in codecodeload.github.com· found in install commanddeveloper.ieee.org· found in codedoi.org· found in codeebi.ac.uk· found in codeeuropepmc.org· found in codeexport.arxiv.org· found in codepubs.acs.org· found in codespdi.public.springernature.app· found in code
Files it touches
~/.claude/skills/general-publisher-access-guard
What's inside
- Skill name
general-publisher-access-guard- Description
- Avoid bot-blocking publisher websites by routing paper retrieval through legal open-access APIs and mirrors.
- License
- MIT
- Instructions
- 95 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Instructions call the network
Files (12)
- SKILL.md
- 10.1021_acs.jpclett.7b00189_data.json · examples/acs-blocked-paper/
- 10.1021_acs.jpclett.7b00189_summary.md · examples/acs-blocked-paper/
- README.md · examples/acs-blocked-paper/
- 10.1103_PhysRevLett.120.145301_data.json · examples/oa-repository-bypass/
- 10.1103_PhysRevLett.120.145301_summary.md · examples/oa-repository-bypass/
- 10.1103_PhysRevLett.120.145301_text.txt · examples/oa-repository-bypass/
- README.md · examples/oa-repository-bypass/
- publisher_policy_matrix.json · resources/
- audit_publishers.py · scripts/
- check_publisher.py · scripts/
- safe_paper_retriever.py · scripts/
SKILL.md (first lines)
# General Publisher Access Guard
## Goal
To prevent autonomous research agents from being blocked by scientific journal publisher web application firewalls (Cloudflare Turnstile, Radware CAPTCHA, Akamai, Imperva) and HTTP 403/429 error loops, by auditing publisher anti-bot policies and automatically routing paper retrieval through legal open-access APIs, repository mirrors, and reconstructed abstract services.
## Instructions
When the user asks you to fetch, read, summarize, or analyze scientific literature from specific URLs or DOIs, **NEVER** use direct web scraping (`read_url_content`, `curl`, or raw `requests.get`) on known bot-blocking publisher domains. Follow the three steps below:
### 1. Pre-Flight Publisher Assessment
Before attempting to download or scrape any paper URL or DOI, inspect the domain against the curated publisher policy matrix.
```bash
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/check_publisher.py --url "https://pubs.acs.org/doi/10.1021/acs.chemmater.9b04758"
```
Or with DOI:
```bash
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/check_publisher.py --doi "10.1103/PhysRevLett.120.145301" --json
```
**Decision Rule:**
- If `direct_scraping_safe: false` (status `BLOCKED` or `API ONLY`), you **MUST NOT** scrape or curl the publisher web page. Proceed immediately to Step 2.
- Known blocked domains include: `pubs.acs.org`, `journals.aps.org`, `link.aps.org`, `sciencedirect.com`, `link.springer.com`, `nature.com`, `onlinelibrary.wiley.com`, `pubs.rsc.org`, `iopscience.iop.org`, `pubs.aip.org`, `ieeexplore.ieee.org`, `science.org`, `pnas.org`, `tandfonline.com`, `academic.oup.com`, and `mdpi.com`.
### 2. Execute the Safe Retrieval Cascade
Run the safe paper retriever to query legitimate APIs in priority order:
1. **Official Publisher APIs**: If credentials (`ELSEVIER_API_KEY`, `SPRINGER_API_KEY`) are present in environment variables.
2. **OpenAlex Works API**: Retrieves complete bibliographic metadata (authors, journal, citations, publication year) and reconstructs the full abstract from the inverted index.
3. **Filtered Unpaywall API**: Searches for legal Green/Gold Open Access copies hosted in institutional and disciplinary repositories (e.g. arXiv, PubMed Central, Zenodo, university `.edu` repositories), **automatically discarding any link pointing back to a blocked publisher domain**.
4. **Europe PMC API**: Direct open access XML/PDF retrieval for biomedical and chemistry literature.
5. **Preprint APIs**: Queries arXiv API or ChemRxiv API with required rate throttling (minimum 3 seconds delay).
```bash
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/safe_paper_retriever.py \
--doi "10.1103/PhysRevLett.120.145301" \
--output_dir ./papers
```
The script outputs:
- `<safe_doi>_summary.md`: Structured markdown report with title, authors, citations, reconstructed abstract, and access notes.
- `<safe_doi>.pdf`: Downloaded open-access PDF (if available in a safe repository).
- `<safe_doi>_text.txt`: Plaintext extracted from the PDF via PyMuPDF.
### 3. Graceful Handling of Paywalled Literature
If no open-access copy exists across repository mirrors:
- **DO NOT** retry scraping the publisher website.
- Read and synthesize the abstract provided in `<safe_doi>_summary.md`.
- Inform the user that the full text is restricted by publisher paywalls/WAFs, and request them to upload the institutional PDF to the workspace if full-text extraction is required.
### 4. Auditing Publisher Defenses
To test live publisher WAF defenses or verify if a publisher's bot policy has updated:
```bash
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/audit_publishers.py --publisher acs
```
Or audit all major publishers:
```bash
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/audit_publishers.py --all
```
## Examples
### Example 1: Bypassing ACS Bot Block for Perovskite Battery Paper
Handling an ACS paper (`10.1021/acs.jpclett.7b00189`) where direct web scraping returns Cloudflare Turnstile 403:
```bash
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/safe_paper_retriever.py \
--doi "10.1021/acs.jpclett.7b00189" \
--output_dir examples/acs-blocked-paper
```
See [examples/acs-blocked-paper/README.md](examples/acs-blocked-paper/README.md) for full execution traces and validation against published literature.
### Example 2: Resolving APS Paper via Legal Open-Access Repository Mirror
Handling an APS Physical Review Letters paper (`10.1103/PhysRevLett.120.145301`) by bypassing blocked `link.aps.org/pdf` and fetching the author manuscript from OSTI/MIT DSpace:
```bash
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/safe_paper_retriever.py \
--doi "10.1103/PhysRevLett.120.145301" \
--output_dir examples/oa-repository-bypass
```
See [examples/oa-repository-bypass/README.md](examples/oa-repository-bypass/README.md) for step-by-step instructions.
## Constraints
- **Environment**: Requires the `cpu` environment (contains `requests`, `pymupdf` / `fitz`).
- **Zero Direct Scrape**: Never execute `curl`, `read_url_content`, or browser automation on blocked publisher domains.
- **Unpaywall Polite Pool**: Provide an email address in `UNPAYWALL_EMAIL` or `OPENALEX_EMAIL` environment variable to access high-throughput API pools.
- **Preprint Rate Limits**: arXiv requests must maintain a minimum 3-second crawl delay.
- **Institutional Access**: Paywalled papers without green open-access copies cannot be legally decrypted without subscriber credentials or manual PDF upload.
## References
- Priem, J., Piwowar, H., & Orr, R., "OpenAlex: A fully-open index of scholarly works, authors, venues, institutions, and concepts", *arXiv:2205.01833*, 2022. [DOI: 10.48550/arXiv.2205.01833](https://doi.org/10.48550/arXiv.2205.01833)
- Piwowar, H. et al., "The state of OA: a large-scale analysis of the prevalence and impact of Open Access articles", *PeerJ*, 6:e4375, 2018. [DOI: 10.7717/peerj.4375](https://doi.org/10.7717/peerj.4375)
- Ferguson, C. et al., "Europe PMC: a stocktake by the Europe PMC Consortium", *Nucleic Acids Research*, 49(D1):D1507-D1514, 2021. [DOI: 10.1093/nar/gkaa994](https://doi.org/10.1093/nar/gkaa994)
- Cloudflare AI Crawl Control & Bot Management Whitepaper, 2024.From learningmatter-mit/AtomisticSkills, MIT.
More from learningmatter-mit/AtomisticSkills
- 0.681score
drug-complex-system-builder
learningmatter-mit
Build a solvated, charge-neutralized protein-ligand complex for OpenMM molecular dynamics simulation.
SkillAFreshness: A★ 183Claude Code +9 - 0.681score
drug-binding-site-definition
learningmatter-mit
Define a docking search box (center coordinates + box dimensions in Angstroms) from a co-crystal ligand, binding-site residues, or a saved JSON specification.
SkillAFreshness: A★ 183Claude Code +9 - 0.681score
drug-mmpbsa-gbsa
learningmatter-mit
Compute single-trajectory MM-GBSA and / or MM-PBSA binding free energy estimates from a protein-ligand MD trajectory.
SkillAFreshness: A★ 183Claude Code +9 - 0.681score
drug-pocket-detection
learningmatter-mit
Identify and rank ligandable pockets on a protein structure or model using geometry (fpocket) or an ML predictor (P2Rank).
SkillAFreshness: A★ 183Claude Code +9 - 0.678score
chem-sorption-relax
learningmatter-mit
Prepares supercells for porous frameworks based on minimum interplanar distance and relaxes them using standard MLIP relaxation tools.
SkillAFreshness: A★ 183Claude Code +9 - 0.678score
drug-protein-ligand-md
learningmatter-mit
Run a protein-ligand MD simulation in OpenMM with energy minimization, restrained equilibration, and production NPT, producing trajectory and checkpoint files…
SkillAFreshness: A★ 183Claude Code +9 - 0.678score
chem-db-qmof
learningmatter-mit
Query the Quantum MOF (QMOF) database via Materials Project's MPContribs platform for DFT-computed properties (bandgap) and optimized crystal structures of…
SkillAFreshness: A★ 183Claude Code +9 - 0.678score
chem-bond-dissociation
learningmatter-mit
Calculate homolytic and heterolytic bond dissociation energies (BDEs) for all single bonds in a molecule using MLIPs with RDKit fragmentation.
SkillAFreshness: A★ 183Claude Code +9 - 0.678score
chem-hazard-toxicity
learningmatter-mit
Extract explicit safety warnings, GHS classifications, LD50 toxicity profiles, and acute oral toxicity triage from PubChem PUG VIEW.
SkillAFreshness: A★ 183Claude Code +9 - 0.678score
drug-redocking-rmsd
learningmatter-mit
Compute symmetry-corrected heavy-atom RMSD between docked poses and a reference crystal ligand to validate docking protocols.
SkillAFreshness: A★ 183Claude Code +9 - 0.678score
drug-pose-validation
learningmatter-mit
Validate docked or generated ligand poses for physical plausibility using PoseBusters, filtering out chemically invalid or clashing poses before downstream…
SkillAFreshness: A★ 183Claude Code +9 - 0.678score
chem-dft-orca-optimization
learningmatter-mit
Run DFT geometry optimization (minimization or TS search) on a molecular structure using ORCA via SCINE/ReaDuct wrapper.
SkillAFreshness: A★ 183Claude Code +9
Signals
- Stars
- 183
- Forks
- 31
- Open issues
- 0
- Last commit (this folder)
- Oct 5, 2026 (23 days ago)
- Last release
- Oct 6, 2026 (22 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Website
- arxiv.org/abs/2605.24002
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from learningmatter-mit
- 0.681score
drug-binding-site-definition
learningmatter-mit
Define a docking search box (center coordinates + box dimensions in Angstroms) from a co-crystal ligand, binding-site residues, or a saved JSON specification.
SkillAFreshness: A★ 183Claude Code +9 - 0.681score
drug-complex-system-builder
learningmatter-mit
Build a solvated, charge-neutralized protein-ligand complex for OpenMM molecular dynamics simulation.
SkillAFreshness: A★ 183Claude Code +9 - 0.681score
drug-mmpbsa-gbsa
learningmatter-mit
Compute single-trajectory MM-GBSA and / or MM-PBSA binding free energy estimates from a protein-ligand MD trajectory.
SkillAFreshness: A★ 183Claude Code +9 - 0.681score
drug-pocket-detection
learningmatter-mit
Identify and rank ligandable pockets on a protein structure or model using geometry (fpocket) or an ML predictor (P2Rank).
SkillAFreshness: A★ 183Claude Code +9 - 0.678score
drug-pose-validation
learningmatter-mit
Validate docked or generated ligand poses for physical plausibility using PoseBusters, filtering out chemically invalid or clashing poses before downstream…
SkillAFreshness: A★ 183Claude Code +9 - 0.678score
chem-sorption-relax
learningmatter-mit
Prepares supercells for porous frameworks based on minimum interplanar distance and relaxes them using standard MLIP relaxation tools.
SkillAFreshness: A★ 183Claude Code +9
Cite this page
general-publisher-access-guard skill. Agent Mart. https://agentmart.dev/skills/learningmatter-mit-general-publisher-access-guard (last updated 2026-10-24)