internetarchive / internetarchive/openlibrary

Bot Account Application: AgenticCommonsBot

Open
#12,887 9 comments 0 reactions 0 assignees View on GitHub
Lead: @mekarpeles Needs: Detail Priority: 3 Theme: Bots
Dominant language
Python
Stars
6.7k
Forks
2k
Avg merge
2d 14h
Merged PRs (30d)
126

Description

## Bot Account Application Request

**Account Name**: AgenticCommonsBot
**GitHub Username**: WendyLee07 (working as part of the [Agentic Commons](https://agentic-commons.org) project)
**Purpose**: Fill missing native-script `alternate_names` on long-tail OpenLibrary author records (CJK / Cyrillic / Arabic / etc.), citing Wikidata + Wikipedia as independent evidence sources.

### Request
- Please grant bot privileges to the `AgenticCommonsBot` account
- Please add `AgenticCommonsBot` to the "API" usergroup

### Why this matters

Many OL authors with a real backlog of works (5+) still have an empty `alternate_names` array — readers searching with a different script or language form of the author's name can't find them. For example, before [a recent manual edit](https://openlibrary.org/authors/OL412080A) the entry for "Chih-tsing Hsia" had no native-script form on file, so a reader typing "夏志清" couldn't find him.

### Bot behavior (per edit)

For one author at a time:
1. `GET /authors/OL...A.json`
2. Verify `alternate_names` is still empty (skip if already populated)
3. Append exactly **one** well-evidenced addition
4. `PUT` the updated record with a factual-citation edit comment

### Scope guardrails

- **Author pages only** (`/authors/OL...A`). No work / edition / subject edits.
- **Append-only** — never removes or reorders existing entries.
- Skips authors with `work_count < 5` (low search value).
- **≤8 edits/day total**, well below polite-bot thresholds.

### Evidence requirement

Each proposed addition requires **two independent reputable sources**:
- **Wikidata** — author's Q-id with matching multilingual label
- **Wikipedia article title in another language** (typically the native-language wiki)

If two sources cannot be confirmed, the candidate is dropped — no speculative or single-source additions.

### Edit comment format

Pure factual citation, no slogans or project attribution:
> Adding native-script form per Wikidata Q778276 (zh label '苏童') and Chinese Wikipedia article title '苏童'.

### Pipeline architecture

This is **not a free-form LLM editing OL**. The pipeline is:
1. Discovery crawler finds candidates with `alternate_names == []` and `work_count ≥ 5`
2. Research worker (LLM-assisted) gathers two-source evidence and produces a structured proposal
3. **Independent QA gate re-fetches both evidence URLs** and verifies the proposed value matches before the bot sees it
4. Only QA-passed proposals reach the bot, which performs the single PUT

The LLM proposes; an independent automated check verifies; the bot only commits proposals that survived both.

### Code

Already up for review at [openlibrary-bots#451](https://github.com/internetarchive/openlibrary-bots/pull/451) — single-file Python 3 stdlib, S3-key auth, with a sample two-source proposal ([Su Tong → 苏童 for OL2630047A](https://openlibrary.org/authors/OL2630047A)) and captured dry-run output (login 200, GET 200, PUT 403 as expected pending this grant).

### Operator contact

- GitHub: [@WendyLee07](https://github.com/WendyLee07)
- Email: wiki-bot@agentic-commons.org

Thank you for reviewing! 🙏

@mekarpeles @hornc

Contributor guide

Open the contributing guide

Research direction

Review openlibrary-bots PR #451 and its single-file Python implementation, including the captured dry-run results and QA workflow described here. Confirm the bot account and proposed scope meet OpenLibrary requirements; done means granting AgenticCommonsBot bot privileges and adding it to the API usergroup, or recording why the request is declined.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api, authorization
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.