Skip to content

feat(openalex): 학술 그래프 읽기 서비스 (works/authors 검색·조회)#11

Merged
ArcSolver merged 1 commit into
mainfrom
feat/openalex
Jun 1, 2026
Merged

feat(openalex): 학술 그래프 읽기 서비스 (works/authors 검색·조회)#11
ArcSolver merged 1 commit into
mainfrom
feat/openalex

Conversation

@ArcSolver

Copy link
Copy Markdown
Owner

학술 빈틈 두 번째 타자 — OpenAlex(2.5억+ 논문/저자 오픈 학술 그래프, 공식 MCP 없음). 읽기 전용.

특징

  • 무인증(키 선택)OPENALEX_API_KEY·OPENALEX_MAILTO쿼리 파라미터(헤더 아님), 둘 다 없어도 동작(라이브 확인). 코어 get_json만 사용(페이지네이션·건수가 본문 meta에 있음).
  • 쿼리 파라미터 per-page(하이픈)·1–200 검증, search/filter/sort/page.

도구 4종 (GET·읽기)

openalex_search_works(search·filter·sort·per-page·page) · openalex_get_work · openalex_search_authors · openalex_get_author

공식 출처 + 머지 전 독립 검증 (라이브 API 대조)

api-overview · lists · work-object · authentication

독립 검증(라이브 curl)에서 발견·교정:

  • bare DOI/ORCID → 404(OpenAlex는 접두/URL 필요) → doi:/orcid: 네임스페이스로 자동 정규화.
  • 무효 키는 401(403 아님) → _explain 401 분기 추가.
  • 404 본문이 HTML → 비-JSON payload 노출 안 함.
  • 미검증 "100 req/s" 수치 제거(현 문서는 크레딧 모델).

참고: OpenAlex는 2026-02 "키 필수" 공지가 있었으나 라이브 기준 키 없이 200(무료 일일 크레딧) — 키를 선택으로 설계하되 지원.

검증

  • uv run pytest -q204 passed (계약 + 런타임(FakeMCP/RecordingHTTP) + 배선 6서비스·31도구)
  • uv run ruff check . → clean · 카탈로그 6서비스·31도구 · 새 서드파티 의존 없음 · 새 코어 동사 불필요

🤖 Generated with Claude Code

학술 빈틈 두 번째 — OpenAlex MCP. 무인증(키 선택)·JSON·페이지네이션은 본문 meta라 get_json만 사용.
도구 4종(전부 GET·읽기): search_works / get_work / search_authors / get_author.

인증: api_key·mailto는 헤더가 아니라 쿼리 파라미터(선택). per-page는 하이픈·1..200 검증.
응답 {meta,results} 봉투 모델. 라이브 API + 공식 문서로 계약 검증.

머지 전 독립·적대적 검증(라이브 curl 대조)에서 발견·교정:
- bare DOI/ORCID는 OpenAlex가 404 → doi:/orcid: 네임스페이스로 자동 정규화(라이브 확인).
- 무효 키는 401(403 아님) → _explain에 401 분기 추가.
- 404 본문이 HTML → 비-JSON payload는 메시지에 노출 안 함.
- 미검증 "100 req/s" 수치 제거(현 문서는 크레딧 모델).

통합: providers done, .env.example, 배선 스모크 6서비스·31도구, 카탈로그/체인지로그 재생성.
검증: pytest 204 passed, ruff clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ArcSolver ArcSolver merged commit 03bfc43 into main Jun 1, 2026
2 checks passed
@ArcSolver ArcSolver deleted the feat/openalex branch June 1, 2026 12:48
ArcSolver added a commit that referenced this pull request Jun 3, 2026
discover_services가 crossref 자동 등록 → docs/services.md(도구 4종)·CHANGELOG UNRELEASED 반영. openalex(#11)·zotero(#9)와 동일한 통합 단계 재생성.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ArcSolver added a commit that referenced this pull request Jun 3, 2026
* feat(crossref): 학술 메타데이터 읽기 서비스 (works 검색·조회)

works/journals 검색·단건 조회 4개 GET 도구 추가. 무인증(polite pool
mailto는 선택 쿼리 파라미터+User-Agent). 본문 message 기반 건수 안내.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(crossref): offset+rows 합산 경계 정밀화 + published 주석 provenance 보정

- offset 단독 0..10000 외에 offset+rows ≤ 10000 합산 경계를 추가(라이브 확인:
  rows=1·offset=10000, rows=20·offset=9981 모두 400). 서버 400 도달 전 사전 차단.
- Work.published 주석을 보정 — api_format.md엔 미기재(issued/published-print/
  published-online으로 표기), 라이브엔 항상 존재하며 issued와 동일.
- 합산 경계 회귀 테스트 추가. 교차 독립 검증(라이브)에서 발견.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* chore(crossref): 카탈로그·체인지로그 재생성 (crossref 반영)

discover_services가 crossref 자동 등록 → docs/services.md(도구 4종)·CHANGELOG UNRELEASED 반영. openalex(#11)·zotero(#9)와 동일한 통합 단계 재생성.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
ArcSolver added a commit that referenced this pull request Jun 4, 2026
학술 빈틈 두 번째 — OpenAlex MCP. 무인증(키 선택)·JSON·페이지네이션은 본문 meta라 get_json만 사용.
도구 4종(전부 GET·읽기): search_works / get_work / search_authors / get_author.

인증: api_key·mailto는 헤더가 아니라 쿼리 파라미터(선택). per-page는 하이픈·1..200 검증.
응답 {meta,results} 봉투 모델. 라이브 API + 공식 문서로 계약 검증.

머지 전 독립·적대적 검증(라이브 curl 대조)에서 발견·교정:
- bare DOI/ORCID는 OpenAlex가 404 → doi:/orcid: 네임스페이스로 자동 정규화(라이브 확인).
- 무효 키는 401(403 아님) → _explain에 401 분기 추가.
- 404 본문이 HTML → 비-JSON payload는 메시지에 노출 안 함.
- 미검증 "100 req/s" 수치 제거(현 문서는 크레딧 모델).

통합: providers done, .env.example, 배선 스모크 6서비스·31도구, 카탈로그/체인지로그 재생성.
검증: pytest 204 passed, ruff clean.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
ArcSolver added a commit that referenced this pull request Jun 4, 2026
* feat(crossref): 학술 메타데이터 읽기 서비스 (works 검색·조회)

works/journals 검색·단건 조회 4개 GET 도구 추가. 무인증(polite pool
mailto는 선택 쿼리 파라미터+User-Agent). 본문 message 기반 건수 안내.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(crossref): offset+rows 합산 경계 정밀화 + published 주석 provenance 보정

- offset 단독 0..10000 외에 offset+rows ≤ 10000 합산 경계를 추가(라이브 확인:
  rows=1·offset=10000, rows=20·offset=9981 모두 400). 서버 400 도달 전 사전 차단.
- Work.published 주석을 보정 — api_format.md엔 미기재(issued/published-print/
  published-online으로 표기), 라이브엔 항상 존재하며 issued와 동일.
- 합산 경계 회귀 테스트 추가. 교차 독립 검증(라이브)에서 발견.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* chore(crossref): 카탈로그·체인지로그 재생성 (crossref 반영)

discover_services가 crossref 자동 등록 → docs/services.md(도구 4종)·CHANGELOG UNRELEASED 반영. openalex(#11)·zotero(#9)와 동일한 통합 단계 재생성.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant