Install
$ agentstack add skill-jinukmoon-agent-skills-jcr-if-extract ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
JCR Impact Factor Extractor
Fetch Journal Impact Factors from Clarivate JCR for a curated journal list, accumulate them into a year-keyed database, and turn that into a trend plot and an HTML report. JCR has no public API, so the fetch reuses the website's own internal endpoint with a session token the user supplies.
When to use
- User says a new JCR / IF came out and wants it pulled or added to their analysis
- User wants an IF table for a set of journals, an IF trend plot, or an IF report
- User wants year-over-year IF comparison (which journals jumped or dropped)
The pipeline
target_journals.json ──> fetch_jcr_if.py --year YYYY ──> jcr_if_YYYY.json (detailed)
└──> jcr_if_database.json (append)
jcr_if_database.json ──> plot_if_trend.py ──────────────────> if_trend.png
jcr_if_YYYY.json + db ─> build_report.py --year YYYY ───────> jcr_YYYY_report.html
Three steps, run in order. Step 1 needs the token; steps 2-3 are offline.
Step 0 — first-run setup (do once)
- Dependencies:
requests,matplotlib(e.g.pip install requests matplotlib). - Journal list: copy
assets/target_journals.example.jsonto a working file
target_journals.json and edit it to the journals the user cares about. Each entry is: ``json {"abbr": "Nat. Catal.", "full": "Nature Catalysis", "issn": "2520-1158", "jcr_abbr": "NAT CATAL"} ` The **jcrabbr** field must be the exact abbreviated name JCR uses (all caps, e.g. ANGEW CHEM INT EDIT, P NATL ACAD SCI USA). If unsure, search the journal on jcr.clarivate.com and read the abbreviated title off the journal profile. A wrong jcrabbr` just shows up as "NOT FOUND" in the fetch summary — fix it and re-run.
Step 1 — get the session token (X-1P-INC-SID)
This is the only manual part, and the easy place to go wrong. The token authorizes one browser session on jcr.clarivate.com and expires fairly quickly, so grab it right before fetching.
- On an institution network (your library subscription), open https://jcr.clarivate.com
and make sure you're logged in / have access.
- Open dev tools (F12) → Network tab. Set the filter to Fetch/XHR.
- In the filter box type
search-result, then **do a journal search / apply a category
filter** on the page so a request fires.
- Click the request whose name is
search-result— confirm it is:
- host (
:authority) =jcr.clarivate.com(NOTsnowplow-...clarivate.net) - method =
POST(NOTGET) - path =
/api/jcr3/bwjournal/v1/search-result
- In Headers → Request Headers, find
x-1p-inc-sidand copy its value.
Common traps (all produce 401 Unauthorized):
- Copying from a snowplow / analytics request (
*.clarivate.net, method GET) — wrong host,
no token there.
- Copying
correlation-idinstead ofx-1p-inc-sid— different header, not a session token. - A stale token from a previous session — just re-copy a fresh one.
Then fetch:
python scripts/fetch_jcr_if.py "" --year 2025
The token is passed as an argument only and is never written to disk. Re-run with a different --year to backfill historical years into the same database.
Step 2 — plot the trend
python scripts/plot_if_trend.py --out if_trend.png
Reads the year range straight from the database, so it never needs editing when a new year is added. Journals whose IF moved by --threshold (default 10) over the covered span are highlighted and labelled; everything else is light gray context.
Step 3 — build the HTML report
python scripts/build_report.py --year 2025 --plot if_trend.png
Produces a portable single-file jcr_2025_report.html: headline numbers, top year-over-year gainers/losers vs the previous year, the embedded trend plot, and per-category IF tables. Pass --author "Name" to add a byline.
Notes for whoever runs this
- The JIF lives in a field named
jif2019in the JCR response — that is just Clarivate's
internal field name and holds the headline IF for whatever jcrYear you requested. Don't "fix" it to match the year.
- Never hard-code the latest year. The whole point of reading years from the data is that
these scripts don't rot each June when a new JCR drops. If you add logic, keep it data-driven.
- A journal showing up under "NOT FOUND" almost always means its
jcr_abbris slightly off, not
that JCR lacks the data.
- All scripts take
--journalsand--dbpaths if you keep files somewhere other than the cwd.
Files
jcr-if-extract/
├── SKILL.md
├── scripts/
│ ├── fetch_jcr_if.py # fetch one JCR year -> detailed JSON + append to database
│ ├── plot_if_trend.py # long-run trend plot (dynamic year range)
│ └── build_report.py # single-file HTML report with YoY movers
└── assets/
└── target_journals.example.json # 72-journal starter list (catalysis/energy/materials/comp)
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: JinukMoon
- Source: JinukMoon/agent-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.