alterlab-yok-akademik — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited alterlab-yok-akademik (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
YÖK Akademik (Yükseköğretim Kurulu Akademik — the Turkish Council of Higher Education's academic search portal) is the authoritative source for a Turkish academic's official current affiliation. It is YÖKSİS-backed (the national higher-education information system), so for Turkish institutions it is more reliable than ORCID or OpenAlex affiliation strings, which lag and fragment.
This skill resolves a name to that official record: current kurum (institution), fakülte/bölüm (faculty/department), unvan (academic title — e.g. Prof. Dr., Doç. Dr., Dr. Öğr. Üyesi), plus the person's portal-listed publications, research projeler (projects), and danışmanlık yapılan tezler (supervised theses).
No public JSON API exists. The portal at akademik.yok.gov.tr/AkademikArama/ is a server-rendered Java/JSP app. The only route is polite HTML scraping of its verified endpoints. Treat every record as authoritative-but-scraped: confirm a candidate match with the user before asserting an affiliation.Use this skill when the request is to:
bylines, a recommendation letter, a grant team, an editorial-board check).
year, and institution.
Route these adjacent asks to the correct sibling skill — do not answer them here:
| The request is really about… | Use instead |
|---|---|
| University/program admission statistics — kontenjan, taban puan, başarı sırası, yerleşen | alterlab-yokatlas |
| Reading or citing a thesis full text / abstract from the national archive (Ulusal Tez Merkezi) | alterlab-yok-tez |
| Searching the national journal-hosting platform DergiPark | alterlab-dergipark |
| Whether a journal is indexed in TR Dizin (the national citation index) | alterlab-trdizin |
| Enriching/verifying publication metadata (DOIs, citation counts, co-authors) | alterlab-openalex |
| Checking whether the cited papers actually exist (fabricated citations) | alterlab-citation-verifier |
| Computing doçentlik (associate-professorship) eligibility points from a publication list | alterlab-docentlik-eligibility |
| Computing the akademik teşvik (academic-incentive) score | alterlab-akademik-tesvik |
YÖK Akademik answers "who is this academic, officially, and where are they now?" It does not judge research quality, compute career-progression points, or fetch thesis full text.
All under the base https://akademik.yok.gov.tr/AkademikArama/. There is no documented JSON API; these are HTML/JSP pages. See references/endpoints.md for the full map, parameters, and verification status of each.
| Step | Endpoint | Returns |
|---|---|---|
| Search by name | POST AkademisyenArama with aramaTerim=<name>&islem=1&…Checkbox=on → category page → follow its Akademisyenler link → view/searchResultviewListAuthor.jsp | Candidate rows: name, unvan, university, faculty/department, and the profile link carrying the opaque `authorId` |
| Profile / select author | AkademisyenGorevOgrenimBilgileri?islem=direct&authorId=<id> → renders view/viewAuthor.jsp | The person's header: current kurum, fakülte, bölüm, unvan, ORCID/email badges. This GET also registers the author in the session (the tabs below 500 without it). |
| Projects | AkademisyenProjeBilgileri?authorId=<id> | Portal-listed research projects (AB / TÜBİTAK / araştırma …) |
| Publications | AkademisyenYayinBilgileri?pubType=<token>&authorId=<id> | Typed tabs (Kitaplar / Makaleler / Bildiriler). pubType is required & opaque — discover the tokens from the profile page (empty pubType → HTTP 418) |
| Supervised theses | AkademisyenYonTezBilgileri?authorId=<id> | Danışmanlık tezleri: title, student, level, year, institution |
authorId is an opaque value (a 16-hex-char token, e.g. 006B496E5F3E4EE2) — never construct or guess one; only use IDs you obtained from a live search result. A cookie session is mandatory: the helper GETs the portal root first so the server sets the JSESSIONID the search POST needs (a session-less POST returns HTTP 500).
Turkish casing is a real trap: İ→i and I→ı are not the ASCII fold. Search the name as the user gave it (correctly-encoded UTF-8), and also try a diacritic-folded variant so "Cağrı", "Cagri", and "Çağrı" all reach the same person. The helper script does both. See references/turkish_names.md for the exact İ/ı, Ş/ş, Ğ/ğ, Ç/ç, Ö/ö, Ü/ü rules and matching strategy.
uv run python skills/turkish-academia/alterlab-yok-akademik/scripts/yok_akademik.py \
search "Ayşe Yılmaz"This returns the candidate list (pretty JSON by default; add --json for compact single-line output). Each candidate carries its `authorId`, name, and unvan.
Common names return many people. Present the candidates as a table — name · unvan · university · faculty/department — and ask the user which one (or confirm the institution they expected). Do not silently pick the first row and assert an affiliation; that is exactly how a wrong byline or letter gets written.
The authorId you pass must come from a live search row. Each per-author command first lands on the profile (which selects the author in the session) before fetching its tab — the helper handles that for you.
# Profile header (affiliation, unvan)
uv run python .../scripts/yok_akademik.py profile --author-id <authorId>
# Research projects (AB / TÜBİTAK / araştırma …)
uv run python .../scripts/yok_akademik.py projects --author-id <authorId>
# Supervised theses
uv run python .../scripts/yok_akademik.py theses --author-id <authorId>
# Portal-listed publications (typed tabs: Kitaplar / Makaleler / Bildiriler)
uv run python .../scripts/yok_akademik.py pubs --author-id <authorId>When you report an affiliation, say it came from YÖK Akademik (YÖKSİS) and give the date, because people move. If the scrape failed or the portal returned a 302/500 (it does so intermittently), say so and fall back to WebFetch on the search page — never invent an affiliation, authorId, title, or thesis from memory.
The portal is a public service with no API; scrape gently.
User-Agent; throttle (≈1–2 s between requests); retry thefrequent transient 302/500 responses with backoff before giving up.
authorId repeatedly.requests + BeautifulSoup; if BeautifulSoup is absent itdegrades to a stdlib html.parser extraction so it still runs in a bare uv env.
{"status": "unavailable", ...} record withmanual-lookup instructions, never a fabricated profile.
authorId I'm using, or did I guess it? (Never guess.)alterlab-yokatlas) or thesis fulltext (alterlab-yok-tez) instead? Re-check the "Does NOT Trigger" table.
references/endpoints.md — the verified JSP endpoint map,parameters, the authorId note, and what is verified vs. unverified.
references/turkish_names.md — Turkish casing/diacriticrules (İ/ı etc.) and the name-matching strategy.
why YÖKSİS beats ORCID/OpenAlex for TR affiliation, and the disambiguation checklist.
Part of the AlterLab Academic Skills suite.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.