Skip to content
Agentmart
Submit a tool

general-publisher-access-guard

Avoid bot-blocking publisher websites by routing paper retrieval through legal open-access APIs and mirrors.

Skill by learningmatter-mit

IndexedMIT★ 183
Write a review

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.

We use your email only for this newsletter. Privacy

About

Avoid bot-blocking publisher websites by routing paper retrieval through legal open-access APIs and mirrors.

Use cases: research, legal

No 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 code
  • api.crossref.org · found in code
  • api.elsevier.com · found in code
  • api.openalex.org · found in code
  • api.plos.org · found in code
  • api.springernature.com · found in code
  • api.unpaywall.org · found in code
  • chemrxiv.org · found in code
  • codeload.github.com · found in install command
  • developer.ieee.org · found in code
  • doi.org · found in code
  • ebi.ac.uk · found in code
  • europepmc.org · found in code
  • export.arxiv.org · found in code
  • pubs.acs.org · found in code
  • spdi.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

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
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from learningmatter-mit

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)