| Group | Items | With DOI | Please fix | Please check | Zotero data of | Zotero |
|---|---|---|---|---|---|---|
| NFF | 309 | 69% | 91 | 172 | 16 Oct 2026 | open |
| PAND | 737 | 72% | 55 | 374 | 16 Oct 2026 | open |
| AFA | 1822 | 54% | 85 | 687 | 16 Oct 2026 | open |
| AMA | 3610 | 70% | 223 | 2450 | 16 Oct 2026 | open |
| APA | 3152 | 53% | 169 | 2070 | 16 Oct 2026 | open |
| ECA | 4367 | 66% | 316 | 3242 | 16 Oct 2026 | open |
| GA1 | 7973 | 74% | 402 | 4195 | 16 Oct 2026 | open |
| IAS | 5251 | 78% | 373 | 1870 | 16 Oct 2026 | open |
| ILK | 10663 | 64% | 702 | 6113 | 07 Nov 2026 | open |
| LDR | 4264 | 67% | 310 | 3111 | 16 Oct 2026 | open |
| PPA | 2790 | 69% | 76 | 1414 | 16 Oct 2026 | open |
| SCM | 1156 | 73% | 128 | 800 | 16 Oct 2026 | open |
| SUA | 6258 | 49% | 537 | 4729 | 16 Oct 2026 | open |
| VA | 3109 | 70% | 385 | 1854 | 16 Oct 2026 | open |
| IPCC | 1309 | 85% | 111 | 573 | 16 Oct 2026 | open |
| TCA | 3942 | 46% | 152 | 3639 | 16 Oct 2026 | open |
IPBES Zotero group reports
IPBES Literature Report 0.5.0 · source code on GitHub · Zotero data of 16 October 2026 to 07 November 2026
These reports show the state of the IPBES Zotero groups, and list the items in each group which should be corrected. Open the report of a group for the details and for links to the items in Zotero.
Groups
Please fix: number of items with errors. Please check: number of items which may need a correction.
Zotero plugins
The problems listed in the reports can be fixed directly in Zotero with two plugins for Zotero 10. Zotero Fix Proposals shows the fixes proposed for a group (Tools → Fix Proposals…), and Zotero Safe Edit checks every change, asks you to approve it, writes it, logs it and lets you undo it.
| Plugin | Version | Download | What it does |
|---|---|---|---|
| Zotero Safe Edit | 0.2.2 | download | Lets local applications propose edits to Zotero items, which are applied only after approval in Zotero, with backups, a change log and undo. |
| Zotero Fix Proposals | 0.1.10 | download | Shows fixes proposed for Zotero groups (e.g. by the IPBES Literature Report) and applies the ones you choose through Zotero Safe Edit, after approval. |
To install: download both files, then in Zotero: Tools → Plugins → gear icon → Install Plugin From File…. Afterwards the plugins update themselves. Before fixing anything:
- In Settings → Safe Edit, allow the fields to be fixed (e.g.
DOI, language, date, publicationTitle, volume, issue, pages, extra, ISSN). - Switch off automatic sync (Settings → Sync), and sync by hand when done.
- Open Tools → Fix Proposals…, allow it to propose edits, make a backup of the group, and work through the fixes.
Metrics documentation
The measures calculated for each group, and what they contain.
identifiers
DOI coverage (met_id_doi)
Number and share of items with a valid DOI, and items whose DOI field is filled but contains no valid DOI. DOIs are extracted with openalexPro::extract_doi() and lower cased.
Result: A list with - doi_raw: content of the DOI field, named by item key / OpenAlex id - doi: valid DOIs, named by item key / OpenAlex id - invalid: filled DOI fields without a valid DOI - count: number of valid DOIs - count_invalid: number of invalid DOI fields - pc: percentage of items with a valid DOI
ISBN coverage (met_id_isbn)
Number and share of items with an ISBN, overall and for the item types which should have one (book, bookSection).
Result: A list with - isbn: ISBNs, named by item key - count: number of items with an ISBN - pc: percentage of all items with an ISBN - pc_expected: percentage of books and book sections with an ISBN
ISSN coverage (met_id_issn)
Number and share of items with an ISSN, overall and for the item types which should have one (journalArticle, magazineArticle).
Result: A list with - issn: ISSNs, named by item key - count: number of items with an ISSN - pc: percentage of all items with an ISSN - pc_expected: percentage of journal and magazine articles with an ISSN
ISSN not in the standard form (met_id_issn_form)
Items whose ISSN field is not in the standard form: each ISSN as 1234-567X (with hyphen, capital X), several separated by “,”. The ISSNs are checked with their check digit. If all are valid, the standard form is proposed; otherwise the item is listed with the ISSNs which are not valid.
Result: A list with - items: tibble with key, title, issn (as entered), standard (standard form, NA if an ISSN is not valid) and invalid (ISSNs which are not valid, NA if none) - count: number of items whose ISSN field is not in the standard form - count_invalid: of these, items with an ISSN which is not valid
DOIs in the wrong field (met_id_doi_misplaced)
Items with an empty DOI field but a DOI in the Url or Extra field. These DOIs are not used for the OpenAlex lookup and should be moved to the DOI field.
Result: A list with - items: tibble with key, title, doi_in_url and doi_in_extra - count: number of items with a misplaced DOI - pc: percentage of all items with a misplaced DOI
DOIs in the wrong form (met_id_doi_form)
Items whose DOI field contains a valid DOI, but not as a bare DOI: as a link (https://doi.org/10.…), with a prefix (doi:, DOI), URL-encoded (%5B for [) or with spaces or other characters around it. Citation styles add the link themselves, so a link in the DOI field appears twice in a bibliography. The bare DOI is the one recognised by openalexPro::extract_doi(), keeping its upper and lower case.
Result: A list with - items: tibble with key, title, doi_raw (content of the DOI field) and doi (the bare DOI) - count: number of items with a DOI in the wrong form - pc: percentage of all items with a DOI in the wrong form
DOIs which do not exist (met_id_doi_exists)
Items whose DOI field contains a DOI in the right form which does not exist at doi.org: usually a typo, a shortened DOI, or a DOI with extra characters at the end (., ;, a link to supplementary material). Only DOIs which are not found in OpenAlex are checked at doi.org. Where the DOI without the extra characters at the end exists, it is given as suggestion.
Result: A list with - items: tibble with key, title, doi_raw (content of the DOI field), doi and suggestion (existing DOI without the extra characters, NA if none) - count: number of items with a DOI which does not exist - count_unchecked: number of DOIs which could not be checked (no answer from OpenAlex or doi.org) - pc: percentage of the items with a valid DOI whose DOI does not exist
Items without identifier (met_id_none)
Items with none of DOI, ISBN, ISSN or Url. These items can neither be checked against OpenAlex nor easily be retrieved by readers.
Result: A list with - items: tibble with key, type and title - count: number of items without identifier - pc: percentage of all items without identifier
DOIs found in OpenAlex for items without a DOI (met_id_candidates)
For items without a DOI, OpenAlex was searched by title (see [get_doi_candidates()]). The works found are compared with the item: title (ignoring case and punctuation), year and the surname of the first author. A work is a likely match if the titles are (nearly) the same (similarity at least 0.95), the years differ by at most 1 and the first authors have the same surname (year or author are not compared if the item has none), and the title has at least 4 words (short titles like “Zoonoses” are too general). It is a possible match if the titles are similar (at least 0.8). All likely and possible works with a DOI are kept, sorted per item, best first. DOIs used by another item in the group are noted (the item would be a duplicate).
Result: A list with - items: tibble with key, title, year, author (first author) of the item, and doi, id, cand_title, cand_year, cand_author, cand_journal of the work found, similarity (titles), match (likely or possible), note (DOI used by another item, else NA) and single (TRUE for the only likely match of an item), one row per item and work - count_items: number of items with at least one match - count_searched: number of items searched - count_likely: items with exactly one likely match - count_choice: items with several or only possible matches
metadata
Filled fields per item type (met_meta_fields)
Percentage of items with a filled field, per item type, for the main fields: Title, Author, Publication Year, Publication Title, Publisher, DOI, ISBN, ISSN, Url, Abstract Note and Language. Not every field is expected for every item type, e.g. reports have no Publication Title.
Result: A list with - pc_filled: tibble with one row per item type: type, count and the percentage of items with a filled field, one column per field
Problematic publication years (met_meta_year)
Items whose date is missing (missing), from whose date Zotero could not derive a year (unparseable), or whose year lies in the future (future).
Result: A list with - items: tibble with key, title, date, year and problem - count: number of items per problem (missing, unparseable, future) - pc: percentage of all items per problem
Duplicate items (met_meta_duplicates)
Items which are in the group more than once, identified by the same DOI, or by the same normalised title (lower case, letters and digits only), publication year and first word of the first author.
Result: A list with - by_doi: tibble with doi, keys of the duplicates, title and count - by_title: tibble with year, first_author, keys of the duplicates, title and count - count_doi, count_title: number of surplus copies, i.e. items which could be removed
Language not given as a standard code (met_meta_language)
Items whose language is not given as a standard language code, i.e. a two-letter ISO 639-1 code, optionally with a region (en, en-US), but e.g. as a name (English), a three-letter code (eng) or in a different spelling (EN, en_us). Citation styles and other tools only recognise the codes. Where the value is recognised, the standard code is proposed, based on the ISO 639-2 list (R package ISOcodes): codes, three-letter codes and the English names of the languages. Other values, e.g. names in the language itself, several languages or other text, are listed without a proposal.
Result: A list with - items: tibble with key, title, language (as entered) and code (proposed standard code, NA if not recognised) - count: number of items whose language is not a standard code - count_recognised: of these, items for which a code is proposed - pc: percentage of all items whose language is not a standard code
openalex_check
Zotero DOIs found in OpenAlex (met_check_found)
Valid Zotero DOIs which were / were not found in OpenAlex. A DOI which is not found is either not indexed by OpenAlex or wrong (see met_id_doi_exists for DOIs which do not exist). DOIs of works which OpenAlex has under another DOI (e.g. the old and the new DOI of an article) count as found.
Result: A list with - zotero_in_oa: DOIs found, named by item key (for works OpenAlex has under another DOI: that DOI) - zotero_not_in_oa: DOIs not found, named by item key - other_doi: tibble with key, doi (in Zotero) and oa_doi of the works OpenAlex has under another DOI - count_not_in_oa: number of DOIs not found - pc_in_oa: percentage of valid Zotero DOIs found
Retracted works (met_check_retracted)
Works flagged as retracted by OpenAlex, with the key of the Zotero item(s) with the same DOI.
Result: A list with - items: tibble with the OpenAlex id, doi, title and the Zotero item key - count: number of retracted works
Wrong DOIs (met_check_mismatch)
Items whose DOI points in OpenAlex to a work with a different title or year, which usually means that the wrong DOI is attached to the item. An item is flagged when the title similarity (normalised Levenshtein distance) is below 0.8 or the years differ by more than one.
Result: A list with - items: tibble with key, doi, doi_raw (content of the DOI field), openalex (the work’s OpenAlex ID), title_zotero, title_openalex, title_similarity, year_zotero and year_openalex - count: number of flagged items - pc: percentage of the items found in OpenAlex which are flagged
Item type agreement (met_check_type)
Zotero item type compared with the OpenAlex work type for items with the same DOI.
Result: A list with - comparison: tibble with type_zotero, type_openalex and count
Missing dates found in OpenAlex (met_check_date)
Items without a date whose DOI was found in OpenAlex: the publication date in OpenAlex is proposed. OpenAlex gives 1 January when only the year is known, so such dates are proposed as the year only. Items whose DOI points to a different publication are left out.
Result: A list with - items: tibble with key, title, doi and date (the publication date in OpenAlex, YYYY-MM-DD, or YYYY if only the year is known) - count: number of items without a date for which OpenAlex has one
Empty fields found in OpenAlex (met_check_fill)
Journal articles with an empty journal, volume, issue or pages field whose DOI was found in OpenAlex with these details: the values in OpenAlex are proposed. The journal is only taken if the publication is in a journal in OpenAlex (not e.g. a repository). Page ranges which end before they start (e.g. 1260-2, shortened or wrong) are not proposed. Items whose DOI points to a different publication are left out.
Result: A list with - items: tibble with key, title, doi, field (Zotero field: publicationTitle, volume, issue or pages) and value (in OpenAlex), one row per empty field, sorted by publication - count: number of items with at least one field to fill - count_fields: number of fields to fill
OpenAlex ID in the Extra field (met_check_openalex_id)
Items whose DOI was found in OpenAlex, compared with the OpenAlex ID noted in their Extra field (a line OpenAlex: W…). Items without such a line can get it, which links them to OpenAlex for later checks. Items with a different ID are listed for checking: OpenAlex merges records, and the ID of a merged record redirects to the new one. Items whose DOI points to a different publication are left out.
Result: A list with - items: tibble with key, title, doi, id (OpenAlex ID of the DOI, e.g. W2741809807), extra_id (ID in the Extra field, NA if none), extra (content of Extra) and line (line to add to Extra), for items without the ID or with a different one - count_missing: items without an OpenAlex ID in Extra - count_different: items with a different OpenAlex ID in Extra
OpenAlex ID in the Extra field not valid (met_check_extra_id)
Checks the lines OpenAlex: … in the Extra field (looked up by [get_extra_ids()]). A line is not valid if - it is not an OpenAlex work ID (W and digits), - the item has several lines with different IDs, - the ID is not in OpenAlex (wrong, or merged into another record), or - the work is a different publication: its DOI is not the DOI of the item, or, for items without DOI, its title is not similar (similarity below 0.8, see [title_similarity()]).
Result: A list with - items: tibble with key, title, value (after OpenAlex:), oa_title, oa_doi (of the work in OpenAlex), problem, extra (content of Extra) and doi_id (OpenAlex ID of the item’s DOI, NA if none), one row per line which is not valid - count: number of items with a line which is not valid - count_checked: number of items with an OpenAlex line
profile
Publication years (met_prof_year)
Number of items per publication year, with cumulative counts. Items without a year are counted as NA.
Result: A list with - by_year: tibble with year, count, proportion p, count_cumsum and p_cumsum
Open access status (met_prof_oa)
OpenAlex open access status (gold, diamond, green, hybrid, bronze, closed) of the works, overall and per publication year.
Result: A list with - total: tibble with oa_status, count and pc - by_year: tibble with year, oa_status and count
Top journals (met_prof_journals)
The 50 most frequent journals, from the Publication Title in Zotero and the source of the primary location in OpenAlex. Ties at rank 50 are included.
Result: A list with - top: tibble with journal and count
Item types and grey literature (met_prof_types)
Number of items per item type (Zotero) or work type (OpenAlex), and the share of grey literature, i.e. reports, theses, dissertations, web pages, documents, presentations, manuscripts, blog posts and preprints.
Result: A list with - by_type: tibble with type, count, grey (logical) and pc - pc_grey: percentage of grey literature
Languages (met_prof_language)
Languages as entered, and normalised to two letter codes (lower case, region removed, English spellings mapped to en). Inconsistent codes in the language as entered are a quality issue in themselves.
Result: A list with - raw: tibble with language as entered and count - by_language: tibble with normalised language and count - pc_missing: percentage of items without language - pc_english: percentage of items in English
maintenance
Group activity (met_maint_activity)
Items added per month, and items added / modified in the 30 days before the metrics were calculated.
Result: A list with - added_by_month: tibble with month, count and count_cumsum - added_last_30d: number of items added in the last 30 days - modified_last_30d: number of items modified in the last 30 days