jackwener / jackwener/OpenCLI

feat(external): add Zenodo support

Open
#1,943 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
29.5k
Forks
2.9k
Avg merge
15h 36m
Merged PRs (30d)
70

Description

## Feature Request

Add support for [Zenodo](https://zenodo.org) through the [zenodo-cli](https://github.com/thedavidweng/zenodo-cli) external CLI integration.

### What is Zenodo?

[Zenodo](https://zenodo.org) is a general-purpose open-access research data repository built and operated by [CERN](https://home.cern/). It was developed under the European Commission's [OpenAIRE](https://www.openaire.eu/) project and is one of the most widely used research data repositories in the world.

Key facts:

- **Hosted by CERN** — trusted, long-term preservation infrastructure
- **EU-funded** — part of the European Open Science Cloud ecosystem
- **DOI minting** — every deposited record gets a free DOI (Digital Object Identifier)
- **1M+ records** — datasets, software, publications, presentations, and more
- **InvenioRDM** — migrated to the modern InvenioRDM platform in 2023, providing a clean REST API (`/api/records`)
- **Used by major projects** — CERN, LIGO, NASA, major EU research consortia, and thousands of individual researchers

### Why add Zenodo to OpenCLI?

- **Research discovery** — `opencli zenodo search "gravitational waves"` gives researchers and AI agents instant access to millions of open datasets and publications
- **Dataset management** — researchers can list, create, and manage their Zenodo records directly from the CLI
- **File operations** — upload and download research data files programmatically
- **Agent-ready** — zenodo-cli provides `--json` output, consistent exit codes, and safety gates, making it ideal for AI agent workflows
- **Public API** — search is fully public (no login required), lowering the barrier for read-only use cases

### How it works

The integration would use zenodo-cli ([thedavidweng/zenodo-cli](https://github.com/thedavidweng/zenodo-cli)), an agent-friendly CLI that covers the full InvenioRDM API surface:

```bash
# Search public records (no login required)
opencli zenodo search "machine learning" --json

# Record management (requires API token)
opencli zenodo records list
opencli zenodo records show
opencli zenodo records create

# File operations
opencli zenodo files list
opencli zenodo files download
```

Installation: `go install github.com/thedavidweng/zenodo-cli/cmd/zenodo@latest`

Contributor guide

Open the contributing guide

Research direction

Start by examining how OpenCLI registers external CLI integrations and where the `opencli zenodo` entry point should invoke `zenodo-cli`. Use the listed search, record-management, and file-operation commands as the integration scope, and verify JSON output plus token-required operations.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, javascript
Domain
cli
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.