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:
text
https://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ốngEndpoint 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ó.
| Verb | Trả lời câu hỏi gì | Dùng để kiểm tra điều gì |
|---|---|---|
Identify | Kho 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 |
ListMetadataFormats | Kho 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 |
ListSets | Kho chia thành những nhóm nào? | Mỗi tạp chí / chuyên mục có setSpec riêng chưa |
ListIdentifiers | Danh sách mã bản ghi | Đếm nhanh số bài đang được phơi ra ngoài |
ListRecords | Danh sách bản ghi đầy đủ | Kiểm tra chất lượng metadata thực tế |
GetRecord | Mộ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ứcYYYY-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ống | Cơ chế lấy dữ liệu | Tạp chí cần làm gì |
|---|---|---|
| BASE (Bielefeld) | Thu thập qua OAI-PMH | Đăng ký baseURL, giữ endpoint ổn định |
| CORE | Thu thập qua OAI-PMH | Đăng ký baseURL |
| OpenAIRE | Thu thập qua OAI-PMH (oai_openaire) | Đăng ký + vượt qua Validator |
| PKP Index | Thu thập qua OAI-PMH | Đăng ký baseURL |
| Google Scholar | Crawler đọc thẻ meta trên trang bài báo | Nhúng thẻ Highwire Press, mở crawl cho bot |
| DOAJ | Tạp chí phải chủ động đẩy metadata lên | Nộp XML / gọi API / dùng plugin |
| Crossref | Tạ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ăn và 449 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.vnrepository_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 metadataPrefix là oai_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:title và dc: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=Identifytrả về XML, không phải HTML - [ ] Phản hồi có đủ
repositoryName,baseURL,protocolVersion,earliestDatestamp,deletedRecord,granularity,adminEmail - [ ]
earliestDatestampkhớp năm xuất bản của số cũ nhất - [ ]
?verb=ListMetadataFormatscóoai_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ósetSpecriêng - [ ]
ListRecordschạy hết được đến bản ghi cuối (theo hết chuỗiresumptionToken); 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:creatortách đúng từng tác giả,dc:dateđúng ngày xuất bản,dc:identifiercó 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, saiearliestDatestamp, 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
- XML JATS là gì? Chuẩn dữ liệu xuất bản mà Scopus, PubMed và DOAJ yêu cầu
- Số hóa số cũ và gán DOI hồi tố cho tạp chí khoa học
- Tích hợp API Crossref, DOAJ, Scopus — tự động hóa dữ liệu thay vì nhập tay
- Google Scholar là gì? Cách để bài báo của tạp chí được đánh chỉ mục
- Tất cả bài viết về tạp chí khoa học
- Liên hệ triển khai VOJS
