Skip to content

OAI-PMH là gì? Cách để bài báo tạp chí được các hệ thống thu thập tự động

OAI-PMH (Open Archives Initiative Protocol for Metadata Harvesting) là giao thức cho phép một hệ thống bên ngoài gửi yêu cầu HTTP đến website tạp chí và nhận về siêu dữ liệu (metadata) của toàn bộ bài báo dưới dạng XML — không cần con người xuất file hay nhập tay. Phiên bản đang dùng là 2.0, do Open Archives Initiative công bố ngày 14/6/2002. Bật OAI-PMH đúng cách giúp tạp chí được BASE, CORE, OpenAIRE và PKP Index tự lấy dữ liệu. Nhưng có một điểm phần lớn tòa soạn Việt Nam hiểu sai: Google Scholar và DOAJ không dùng OAI-PMH để lấy bài của bạn.

Cập nhật: tháng 7/2026 — Biên soạn bởi đội ngũ VOJS, Metis JSC


OAI-PMH là gì?

OAI-PMH là một giao thức trao đổi siêu dữ liệu chạy trên HTTP, trong đó bên thu thập (harvester) gửi yêu cầu kèm tham số, còn kho dữ liệu (repository — ở đây là website tạp chí) trả lời bằng tài liệu XML chứa metadata bài báo. Giao thức do Open Archives Initiative xây dựng, bản 2.0 công bố ngày 14/6/2002, tài liệu đặc tả cập nhật lần cuối ngày 8/1/2015.

OAI-PMH chỉ trao đổi metadata, không trao đổi file toàn văn. Harvester lấy tiêu đề, tác giả, tóm tắt, ngày xuất bản, định danh — rồi dùng liên kết trong bản ghi để trỏ người dùng về website tạp chí. Vì vậy tạp chí có OAI-PMH tốt vẫn giữ được lưu lượng truy cập về trang gốc.

Địa chỉ harvester gọi vào gọi là baseURL (endpoint OAI). Với tạp chí chạy OJS hoặc nền tảng tương thích, endpoint thường có dạng:

texthttps://tapchi.example.vn/index.php/<ma-tap-chi>/oai      → chỉ 1 tạp chí
https://tapchi.example.vn/index.php/index/oai             → toàn bộ tạp chí trên cùng hệ thống

Endpoint dạng index/oai rất hữu ích với các trường đại học vận hành nhiều tạp chí trên một cài đặt: harvester chỉ cần đăng ký một địa chỉ là lấy được tất cả, mỗi tạp chí là một "set" riêng.


Sáu verb của OAI-PMH và cách dùng để tự kiểm tra tạp chí

OAI-PMH chỉ có đúng sáu lệnh (verb), và bạn có thể gõ cả sáu trực tiếp lên trình duyệt để kiểm tra tạp chí của mình trong vòng vài phút. Đây là bộ công cụ chẩn đoán rẻ nhất mà một tòa soạn có.

VerbTrả lời câu hỏi gìDùng để kiểm tra điều gì
IdentifyKho này là ai, hỗ trợ gì?Endpoint có sống không; earliestDatestamp có đúng năm bài cũ nhất không
ListMetadataFormatsKho xuất được những định dạng nào?Ngoài oai_dc có thêm định dạng giàu hơn không
ListSetsKho chia thành những nhóm nào?Mỗi tạp chí / chuyên mục có setSpec riêng chưa
ListIdentifiersDanh sách mã bản ghiĐếm nhanh số bài đang được phơi ra ngoài
ListRecordsDanh sách bản ghi đầy đủKiểm tra chất lượng metadata thực tế
GetRecordMột bản ghi cụ thểSoi một bài cụ thể xem thiếu trường nào

Ba lệnh nên chạy đầu tiên:

curl "https://tapchi.example.vn/index.php/tckh/oai?verb=Identify"
curl "https://tapchi.example.vn/index.php/tckh/oai?verb=ListMetadataFormats"
curl "https://tapchi.example.vn/index.php/tckh/oai?verb=ListRecords&metadataPrefix=oai_dc"

Theo đặc tả OAI-PMH 2.0, phản hồi Identify bắt buộc phải có đủ các phần tử repositoryName, baseURL, protocolVersion, earliestDatestamp, deletedRecord, granularity và ít nhất một adminEmail. Thiếu bất kỳ phần tử nào là endpoint không hợp lệ — harvester nghiêm ngặt sẽ loại ngay từ bước đăng ký.

Đặc tả OAI-PMH 2.0 quy định mọi kho dữ liệu bắt buộc phải trả về được metadata ở định dạng Dublin Core không phân định (oai_dc), và bắt buộc hỗ trợ độ chi tiết mốc thời gian ở mức YYYY-MM-DD. — Open Archives Initiative, OAI-PMH v2.0 (2002, bản tài liệu 2015)

Khi danh sách quá dài, kho không trả hết một lần mà kèm resumptionToken để harvester gọi tiếp phần sau. Đây chính là chỗ hỏng thường xuyên nhất ở các tạp chí có kho bài lớn — nói kỹ ở mục lỗi bên dưới.


Ai thực sự thu thập qua OAI-PMH, ai không?

Đây là hiểu lầm tốn kém nhất: rất nhiều tòa soạn Việt Nam bật OAI-PMH rồi ngồi chờ Google Scholar và DOAJ "tự lấy bài" — cả hai hệ thống này đều không hoạt động như vậy. Bảng dưới phân định ba cơ chế khác nhau.

Hệ thốngCơ chế lấy dữ liệuTạp chí cần làm gì
BASE (Bielefeld)Thu thập qua OAI-PMHĐăng ký baseURL, giữ endpoint ổn định
COREThu thập qua OAI-PMHĐăng ký baseURL
OpenAIREThu thập qua OAI-PMH (oai_openaire)Đăng ký + vượt qua Validator
PKP IndexThu thập qua OAI-PMHĐăng ký baseURL
Google ScholarCrawler đọc thẻ meta trên trang bài báoNhúng thẻ Highwire Press, mở crawl cho bot
DOAJTạp chí phải chủ động đẩy metadata lênNộp XML / gọi API / dùng plugin
CrossrefTạp chí phải chủ động nộp XML depositĐăng ký DOI theo từng số

Hai trích dẫn nên đọc kỹ. Về DOAJ:

"Unlike some other indexing services, if a journal is accepted into DOAJ, we won't automatically go and collect published content." (Khác với một số dịch vụ chỉ mục khác, nếu tạp chí được nhận vào DOAJ, chúng tôi sẽ không tự động đi thu thập nội dung đã xuất bản.) — DOAJ Blog, 2020

DOAJ nói rõ họ chưa bao giờ đi thu thập metadata từ website tạp chí. Muốn bài xuất hiện trong DOAJ, tòa soạn phải đẩy dữ liệu lên bằng một trong bốn cách: gọi API (JSON), dùng plugin DOAJ XML của PKP, tải file XML qua tài khoản DOAJ (tối đa 250 MB mỗi file), hoặc nhập tay qua biểu mẫu. Ba định dạng XML được chấp nhận: DOAJ Native XML, Crossref 4.4.2 XML và Crossref 5.3.1 XML. Thủ tục hồ sơ xem tại bài DOAJ là gì? Hướng dẫn đăng ký tạp chí Việt Nam vào DOAJ.

Về Google Scholar, hướng dẫn lập chỉ mục chính thức không nhắc đến OAI-PMH; công cụ này crawl trang bài báo và đọc thẻ meta trong mã HTML:

"Use Dublin Core tags (e.g., DC.title) as a last resort — they work poorly for journal papers because Dublin Core doesn't have unambiguous fields for journal title, volume, issue, and page numbers." (Chỉ dùng thẻ Dublin Core như phương án cuối cùng — chúng hoạt động kém với bài tạp chí vì Dublin Core không có trường rõ ràng cho tên tạp chí, tập, số và số trang.) — Google Scholar Inclusion Guidelines

Hệ quả thực tế rất đáng chú ý: oai_dc — định dạng bắt buộc của OAI-PMH — chính là Dublin Core, và Google Scholar coi đó là lựa chọn kém nhất. Tạp chí muốn lên Google Scholar phải làm việc khác hẳn: nhúng thẻ Highwire Press (citation_title, citation_journal_title, citation_volume, citation_firstpage, citation_pdf_url…) trên từng trang bài báo. Xem thêm bài Google Scholar là gì? Cách để bài báo của tạp chí được đánh chỉ mục.

Quy mô của các harvester thật sự dùng OAI-PMH không nhỏ: BASE bao phủ hơn 400 triệu tài liệu từ hơn 12.000 nguồn (BASE, 2025); CORE lưu 49,2 triệu tài liệu toàn văn449 triệu bản ghi metadata thu từ hơn 14.500 kho trên toàn cầu (CORE, 5/2025). Đây là kênh tiếp cận miễn phí mà nhiều tạp chí Việt Nam đang bỏ trống.


Bật và cấu hình OAI-PMH cho tạp chí

Với tạp chí chạy OJS, bật OAI-PMH là thao tác cấu hình chứ không phải lập trình — nhưng có hai lớp cần bật, bỏ sót lớp nào cũng khiến endpoint chết.

Bước 1 — Bật ở lớp máy chủ. Trong tệp config.inc.php, mục [oai] phải để bật, đồng thời khai repository_id là chuỗi định danh ổn định gắn với tên miền tạp chí:

text[oai]
oai = On
repository_id = tapchi.example.vn

repository_id không được đổi về sau: nó là gốc sinh mã định danh từng bản ghi (dạng oai:tapchi.example.vn:article/1234). Đổi giá trị này đồng nghĩa mọi bản ghi cũ ở phía harvester trở thành bản ghi lạ, và tạp chí bị đếm trùng.

Bước 2 — Bật ở lớp giao diện quản trị. Trong khu vực Settings → Distribution của OJS 3.x, bật tùy chọn cho phép truy cập OAI (nhãn hiển thị thay đổi đôi chút giữa các phiên bản). Chỉ sửa config.inc.php mà quên bước này thì endpoint vẫn trả lỗi.

Bước 3 — Kiểm tra bằng verb Identify, rồi đối chiếu earliestDatestamp với năm xuất bản của số cũ nhất trên hệ thống. Lệch nhau nghĩa là kho bài cũ chưa được đưa lên đúng cách.

Bước 4 — Đăng ký baseURL với từng harvester. BASE, CORE, OpenAIRE và PKP Index đều có biểu mẫu đăng ký riêng; không đăng ký thì endpoint dù hoàn hảo cũng không ai gọi vào. Riêng OpenAIRE bắt buộc chạy qua công cụ Validator trong Content Provider Dashboard trước khi vào lịch thu thập định kỳ, và khuyến nghị dùng metadataPrefixoai_openaire thay vì oai_dc.

Bước 5 — Giữ endpoint ổn định qua các lần đổi hệ thống. URL đổi thì harvester mất dấu và toàn bộ lịch sử thu thập bị đứt — xem quy trình migration an toàn từ OJS sang hệ thống mới.


7 lỗi endpoint OAI-PMH thường gặp ở tạp chí Việt Nam

Đây là các lỗi đội ngũ VOJS gặp lặp lại khi rà soát hệ thống tạp chí trước lúc bàn giao. Đa số không nằm ở phần mềm, mà ở dữ liệu và cấu hình máy chủ.

1. Bật OAI ở giao diện nhưng quên config.inc.php (hoặc ngược lại). Triệu chứng: verb Identify trả về trang 404 hoặc trang chủ tạp chí thay vì XML. Cách phát hiện: xem phản hồi có thẻ <OAI-PMH> hay không.

2. Máy chủ chặn yêu cầu không có User-Agent hợp lệ. Nhiều cấu hình tường lửa ứng dụng và chống bot chặn thẳng request "trần", trong khi một số harvester gửi User-Agent tối giản. Triệu chứng đặc trưng: mở bằng trình duyệt thì thấy XML, harvester lại báo 403. Xử lý: đưa dải IP của harvester vào danh sách cho phép.

3. resumptionToken đứt giữa chừng. Với kho vài nghìn bài, harvester phải gọi hàng chục lượt liên tiếp. Token gắn với phiên (session) ngắn hoặc máy chủ giới hạn tốc độ quá gắt sẽ làm quá trình dừng nửa đường. Dấu hiệu: BASE hoặc CORE hiển thị số bài ít hơn hẳn số bài thật.

4. earliestDatestamp sai lệch với thực tế. Tạp chí đưa kho bài cũ lên nhưng ghi ngày nạp thay vì ngày xuất bản gốc, khiến toàn bộ bài từ 1995–2015 mang mốc thời gian của năm nạp. Harvester thu thập gia tăng theo from/until sẽ hiểu sai lịch sử tạp chí.

5. Không tách trường tên tác giả. Trong oai_dc, tên tác giả nằm ở dc:creator. Nhiều tạp chí Việt Nam nhập cả cụm "TS. Nguyễn Văn A (Trường ĐH X)" vào một ô; harvester nhận nguyên chuỗi đó là tên tác giả và mọi thống kê về sau đều sai. Sửa gốc ở hệ thống nộp bài trực tuyến: tách họ, tên, đơn vị và ORCID thành ô riêng ngay từ đầu vào.

6. Thiếu tóm tắt và từ khóa tiếng Anh. Bản ghi chỉ có dc:titledc:description tiếng Việt gần như vô hình trong hệ thống tìm kiếm quốc tế — lý do nên chuẩn hóa abstract song ngữ, xem hướng dẫn viết abstract bài báo.

7. Chỉ có oai_dc, không có định dạng giàu hơn. oai_dc không có trường riêng cho tập, số, trang, DOI, ORCID hay nguồn tài trợ. Tạp chí hướng tới OpenAIRE nên xuất thêm định dạng dựa trên chuẩn XML JATS hoặc oai_openaire.


Checklist kiểm tra OAI-PMH trong 15 phút

Làm đúng thứ tự; dừng ở bước đầu tiên không đạt và xử lý xong mới đi tiếp.

  • [ ] ?verb=Identify trả về XML, không phải HTML
  • [ ] Phản hồi có đủ repositoryName, baseURL, protocolVersion, earliestDatestamp, deletedRecord, granularity, adminEmail
  • [ ] earliestDatestamp khớp năm xuất bản của số cũ nhất
  • [ ] ?verb=ListMetadataFormatsoai_dc; ghi nhận còn định dạng nào khác
  • [ ] ?verb=ListSets — mỗi tạp chí hoặc chuyên mục có setSpec riêng
  • [ ] ListRecords chạy hết được đến bản ghi cuối (theo hết chuỗi resumptionToken); số bản ghi thu được bằng đúng số bài trên website
  • [ ] Mở 3 bản ghi ngẫu nhiên: dc:creator tách đúng từng tác giả, dc:date đúng ngày xuất bản, dc:identifier có DOI
  • [ ] baseURL đã đăng ký với BASE, CORE, OpenAIRE, PKP Index và nằm trong tài liệu bàn giao kỹ thuật

Bảng kiểm này bổ sung cho checklist website tạp chí khoa học đạt chuẩn quốc tế: phần metadata ở đó tập trung vào thẻ HTML, phần này vào kênh máy-với-máy.


OAI-PMH nằm ở đâu trong bức tranh dữ liệu của một tạp chí?

Một tạp chí vận hành chuẩn phải nuôi bốn kênh dữ liệu song song, và OAI-PMH chỉ là một trong bốn: thẻ meta HTML cho crawler tìm kiếm, endpoint OAI-PMH cho harvester, file XML/API đẩy sang Crossref và DOAJ, và bản nộp cho mạng lưu trữ dài hạn LOCKSS, CLOCKSS, PKP PN.

Nếu tòa soạn nhập liệu rời rạc — website một nơi, file nộp Crossref một nơi, bảng Excel gửi DOAJ một nơi — sai lệch giữa các kênh là chắc chắn, và đây là loại lỗi cơ sở dữ liệu quốc tế soi khi thẩm định hồ sơ. Cách xử lý gốc: để hệ thống sinh cả bốn đầu ra từ một bản ghi, như phân tích ở bài tích hợp API Crossref, DOAJ, Scopus thay vì nhập tay. VOJS — Hệ thống quản lý tạp chí khoa học sinh sẵn endpoint OAI-PMH cho từng tạp chí và cho toàn hệ thống, xuất song song thẻ Highwire Press, file Crossref và file DOAJ từ cùng một bản ghi biên tập.

Riêng kho số in nhiều năm chưa lên mạng, endpoint chỉ phơi ra được phần đã số hóa — phần còn lại xử lý theo quy trình ở bài số hóa số cũ và gán DOI hồi tố cho tạp chí khoa học.


Câu hỏi thường gặp về OAI-PMH

Bật OAI-PMH rồi thì Google Scholar có tự lấy bài không?

Không. Hướng dẫn lập chỉ mục của Google Scholar không dùng OAI-PMH; công cụ này crawl trang bài báo và đọc thẻ meta trong HTML. Google Scholar còn khuyến cáo chỉ dùng thẻ Dublin Core "như phương án cuối cùng" vì Dublin Core thiếu trường rõ ràng cho tên tạp chí, tập, số và trang. Muốn lên Google Scholar, tạp chí phải nhúng thẻ Highwire Press trên từng trang bài và cho phép bot truy cập file PDF.

Có OAI-PMH thì DOAJ có tự cập nhật bài mới không?

Không. DOAJ tuyên bố rõ họ không tự đi thu thập nội dung sau khi tạp chí được nhận vào danh mục. Tòa soạn phải chủ động đẩy metadata lên bằng API, plugin DOAJ XML của PKP, tải file XML (tối đa 250 MB mỗi file) hoặc nhập tay. Được nhận vào DOAJ mới là bước một; không đẩy bài lên thì hồ sơ tạp chí trong DOAJ vẫn rỗng.

oai_dc là gì và có bắt buộc không?

oai_dc là mã định dạng của Dublin Core không phân định — bộ 15 phần tử mô tả cơ bản như dc:title, dc:creator, dc:date, dc:identifier. Đặc tả OAI-PMH 2.0 bắt buộc mọi kho phải trả về được định dạng này để bảo đảm mọi harvester đều đọc hiểu. Kho có thể hỗ trợ thêm các định dạng giàu hơn, và nên làm vậy nếu hướng tới OpenAIRE.

Endpoint OAI-PMH có làm lộ toàn văn bài báo không?

Không. OAI-PMH chỉ trả về metadata; file PDF hay HTML toàn văn vẫn nằm trên máy chủ tạp chí, truy cập qua liên kết trong bản ghi. Với tạp chí hạn chế truy cập, phơi metadata còn có lợi: người đọc tìm được bài rồi mới quay về website tạp chí, giữ nguyên lưu lượng và thống kê truy cập.

Tạp chí không dùng OJS thì triển khai OAI-PMH thế nào?

Hệ thống nào cũng triển khai được, vì OAI-PMH chỉ là một endpoint HTTP trả XML theo sáu verb chuẩn. Khối lượng công việc nằm ở chỗ dữ liệu phải đủ sạch: tên tác giả tách trường, ngày xuất bản đúng, DOI có sẵn. Nếu tạp chí còn quản lý bài bằng email và thư mục file, việc đầu tiên là chuẩn hóa dữ liệu — xem lộ trình chuyển đổi số tạp chí khoa học Việt Nam.

Vì sao BASE hoặc CORE chỉ hiển thị một phần số bài của tạp chí?

Nguyên nhân phổ biến nhất là chuỗi resumptionToken đứt giữa chừng: harvester lấy được vài trăm bản ghi đầu rồi gặp token hết hạn, bị giới hạn tốc độ hoặc bị tường lửa chặn. Cách kiểm tra: tự chạy ListRecords, theo hết chuỗi token, đếm số bản ghi thu được rồi so với số bài thật trên website.

VJOL có thay thế được endpoint OAI-PMH của tạp chí không?

Không. VJOL là kênh phân phối bổ sung ở cấp quốc gia, còn endpoint trên chính tên miền tạp chí mới là thứ gắn danh tính tạp chí với harvester quốc tế. Nên có cả hai: bản ghi trên VJOL để tiếp cận người đọc trong nước, endpoint riêng để BASE, CORE, OpenAIRE ghi nhận đúng nguồn gốc.


Tóm tắt

  • OAI-PMH 2.0 (Open Archives Initiative, 14/6/2002) là giao thức để hệ thống bên ngoài kéo metadata bài báo từ website tạp chí dưới dạng XML
  • Giao thức có đúng 6 verb: Identify, ListMetadataFormats, ListSets, ListIdentifiers, ListRecords, GetRecord — gõ trực tiếp lên trình duyệt để tự chẩn đoán
  • BASE, CORE, OpenAIRE, PKP Index thu thập qua OAI-PMH; Google Scholar crawl thẻ meta HTML; DOAJ và Crossref bắt buộc tạp chí chủ động đẩy dữ liệu
  • oai_dc (Dublin Core) là định dạng bắt buộc nhưng nghèo trường — cần định dạng giàu hơn nếu hướng tới OpenAIRE
  • Bảy lỗi hay gặp: quên một trong hai lớp cấu hình, bị chặn User-Agent, đứt resumptionToken, sai earliestDatestamp, gộp tên tác giả, thiếu abstract tiếng Anh, chỉ có oai_dc
  • Bật endpoint là chưa đủ — phải đăng ký baseURL với từng harvester và giữ URL ổn định qua các lần nâng cấp

Về nội dung bài viết

Bài viết được biên soạn bởi đội ngũ VOJS — Metis JSC. Tham chiếu: Open Archives Initiative — OAI-PMH Protocol v2.0 (2002, bản tài liệu 2015); Google Scholar Inclusion Guidelines; DOAJ Blog (2020) và tài liệu nộp metadata của DOAJ; OpenAIRE Guidelines for Literature Repositories; số liệu quy mô của BASE (2025) và CORE (5/2025); tài liệu cấu hình OJS của Public Knowledge Project.


Bài viết liên quan

Cập nhật gần nhất:

Sản phẩm của Công ty Cổ phần Metis.