Skip to content

Bot proposal: fill missing alternate_names on long-tail authors using Wikidata + Wikipedia evidence #450

Description

@WendyLee07

Problem

Many Open Library authors who have a real backlog of works on file (5+ works) still have an empty alternate_names array. As a result, readers searching using a different script or language form of the author's name cannot find them via the OL search box.

For example, before today's manual edit the entry for "Chih-tsing Hsia" (work_count=29) had no native-script form on file, so a reader typing "夏志清" could not find him on OL.

The backlog exists on the long tail of the catalog — particularly authors whose primary name on file is a romanization while the native-script form is missing. Regardless of how big that backlog is, this bot is rate-limited to a small constant load (see Frequency below).

Proposed bot

A small bot that, for one author at a time, adds one well-evidenced entry to alternate_names and writes a short edit-comment citing the sources.

Evidence requirement (per edit)

Every edit must be supported by at least two independent reputable authorities. The strong default pair:

  • Wikidata — the author's Q-id, with the multilingual labels block matching the proposed addition
  • Wikipedia article title in another language — typically the article in the author's native-language Wikipedia

Other acceptable corroborators: official publisher / university page, national library authority records (LoC, BnF, NDL).

If two independent reputable sources cannot be found, the candidate is dropped. The bot does not write speculative or single-source additions.

Why this isn't a typical LLM-writes-to-OL situation

The bot itself does not generate the alternate name with an LLM. The pipeline upstream of this bot is:

  1. A discovery crawler reads OL search to find authors with alternate_names == [] and work_count >= 5.
  2. For each such author a research worker (which may use an LLM) gathers the two-source evidence from Wikidata + Wikipedia and produces a structured JSON proposal: {ol_key, proposed_addition, comment, evidence: [{source, url, value}, ...]}.
  3. A QA gate checks the JSON for required fields, that the proposed addition matches the value reported by both evidence URLs, and that the OL author still has alternate_names == []. Only proposals that pass the gate (score 100) are forwarded.
  4. This bot then takes the gate-approved JSON and submits the single addition via the OL API.

Concretely: the LLM proposes; an independent automated check verifies; the bot only commits proposals that survived both. The bot's input is not free-form LLM text — it is a structured proposal whose two evidence URLs the bot itself can re-fetch and compare against before PUT.

Scope guardrails

  • One addition per edit (not bulk-replacing the array)
  • Author pages only (/authors/OL...A). No work / edition / subject edits in this bot.
  • Only adds to alternate_names (not removing or reordering existing entries)
  • Skips any author whose alternate_names is non-empty (someone else already handled them)
  • Skips any author whose work_count < 5 (not worth a name edit)

Frequency

Targeting ≤ 8 edits per day total (well below polite-bot thresholds), regardless of how large the candidate pool is. Each edit is a single PUT plus 2 GETs, paced at 1.5s between requests. Happy to tighten further if reviewers want.

Edit comment format

Pure factual citation. Example:

Adding native-script form per Wikidata Q778276 (zh label '苏童') and Chinese Wikipedia article title '苏童'.

No promotional content, no project attribution in the edit comment.

Account

Bot username: agenticcommonsbot (S3 keys configured; currently 403 on PUT pending bot review, as expected).

The S3-key authentication path is wired and a test login + GET against /authors/OL2630047A.json returns 200 cleanly. The PUT is the only step pending privilege grant.

Code

Forthcoming PR will add a directory AgenticCommonsBot/ to this repo with:

  • wikidata_author_alias_bot.py — single-file Python 3, stdlib only, S3-key auth via /account/login
  • README.md — usage, dry-run output, evidence checklist
  • sample_proposal.json — a real two-source proposal for review
  • sample_dry_run.txt — captured dry-run output against a live (still-empty) OL author so reviewers can see the exact request/response shape

Maintainer

Ask

Looking for a thumbs-up on the approach before opening the implementation PR, plus pointers on anything you'd like tightened. Happy to adjust the per-day cap, evidence requirements, edit-comment format, or anything else that helps reviewers.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions