---
name: eulogikon-corpus
description: Access the Eulogikon corpus of ancient Greek texts — 1,358 authors and 4,060 works, Homer through late antiquity, all public domain (Public Domain Mark 1.0 on the Greek source text; CC0 1.0 on Eulogikon's own indexes and metadata). Resolve works through eulogikon.org metadata indexes, then fetch Greek text as Markdown or HTML. Per-work JSON is not published yet. Identifiers are stable: eul_aid for authors (opaque 3-letter code, e.g. 'ffk' = Plato), eul_wid for works (e.g. 'ffk-ag').
---

# Eulogikon corpus

Eulogikon is a free, open-source digital library of ancient Greek texts —
1,358 authors and 4,060 works, spanning Homer through late
antiquity: philosophy, history, drama, lyric, medicine, mathematics, rhetoric,
and the fragmentary traditions, all in clean Unicode Greek.

There are two public surfaces:

- **Live site** — `https://eulogikon.org`. This is the primary agent path:
  resolve identity in `/data/*.json`, then fetch work text at
  `/works/{name}.md` or `/works/{name}`, where `{name}` is the universal
  artefact stem `{work_display_string}-{eul_wid}`.
- **Downloadable data store** — the separate GitHub repository
  **`eulogikon/ancient-greek-texts`**. Clone it for bulk files. Live retrieval
  is Markdown on eulogikon.org.

Per-work body JSON (`units[]`, `rows[]`, or canonical work JSON) is not part of
the public contract yet. Use Markdown for the Greek text.

Rights are split by surface. The ancient Greek **source text** carries **Public
Domain Mark 1.0** — Eulogikon asserts no copyright over it and makes no claim
over its own preparation of it. Everything else Eulogikon controls (the indexes,
the manifests, the English metadata, the site itself) is released under **CC0
1.0**. Either way: no attribution required, no restrictions on use,
redistribution, or training.

## Identifiers

Eulogikon uses a stable identifier scheme. Once issued, identifiers do not
change.

- **`eul_aid`** — author identifier. An **opaque three-letter code, not derived
  from the author's name** (e.g. Plato is `ffk`). Do not try to guess it from a
  name; resolve it through a manifest (below).
- **`eul_wid`** — work identifier; an `eul_wid` begins with its `eul_aid`, e.g.
  `ffk-ag` (Plato's Republic). Lowercase, stable. This is the **sole
  identifier for works**; the owning author is the prefix before the last hyphen.

Display strings (`author_display_string`, `work_display_string`) are
display/URL conveniences, **not** identifiers. Resolve by `eul_aid` / `eul_wid`.
They are mutable and they are not unique on their own — several works share a
`work_display_string`, and only the composed stem is unique.

**For citations and permalinks, use the bare-identifier URL.**
`https://eulogikon.org/works/{eul_wid}` and
`https://eulogikon.org/authors/{eul_aid}` redirect (`301`) to the canonical
page. That form cannot break when a display string changes, so it is the durable
address to put in a bibliography.
Every artefact for a work — URL, HTML file, Markdown file — uses
the same composed string `{work_display_string}-{eul_wid}`. Authors follow the
same pattern: `{author_display_string}-{eul_aid}`. Compose the string inline
from the row — there is no separate `name` field on the JSON index entries.

## Where the data lives

Start at `https://eulogikon.org/llms.txt`.

On the live site:

- `/data/works.json` — work metadata index keyed by `eul_wid`; each row
  carries `work_display_string`. Compose the URL stem as
  `{work_display_string}-{eul_wid}`.
- `/data/authors.json` — author metadata index keyed by `eul_aid`; each row
  carries `author_display_string`.
- `/works/{work_display_string}-{eul_wid}.md` — the whole work as Greek Markdown
  (the live agent text).
- `/works/{work_display_string}-{eul_wid}` — human-readable HTML page.
- `/works/{work_display_string}-{eul_wid}.pdf` — optional whole-work PDF (R2;
  not every stem is guaranteed).
- `/authors/{author_display_string}-{eul_aid}` — author page.

**Tekmeria** — corpus-grounded readings at `https://tekmeria.eulogikon.org/`.
Individual aphoristic essays (Τεκμήρια) cite corpus passages by `eul_wid` + ref;
they are published observations, not substitute corpus text. Start at the index,
then fetch each essay HTML page. Essay text is CC0 1.0.

In the downloadable data store, paths are relative to
`https://raw.githubusercontent.com/eulogikon/ancient-greek-texts/main/`.
Use the manifests there; do not crawl directories by guesswork.

File naming in the data store:

- Greek work: `grc/{work_display_string}-{eul_wid}.grc.{pdf|md|txt}`
  (an `eul_wid` begins with its `eul_aid`)
- English author metadata: `en/{author_display_string}-{eul_aid}.en.{pdf|md|txt}`

### Lookup indexes (fetch these first, not the file tree)

- **`llms.txt`** — the LLM entry point (follows the llms.txt convention). Start
  here.
- **`manifest.authors.json`** — compact author index (one row per author), keyed
  by `eul_aid`, with display name and `author_display_string`.
- **`manifest.works.min.csv`** — compact, grep-friendly work index (one row per
  work). Resolve identity here, then fetch the row's `grc_md` path (Markdown
  on GitHub raw). Do not construct a live plain-text work URL. Greek work JSON is
  not yet part of the public contract.
- **`manifest.json`** — full machine-readable index (large; don't load whole).
- **`manifest.csv`** — one row per work.
- **`MANIFEST.md`** — human-readable index (~5,000+ entries; don't load whole).
- **`dataset.jsonld`** — schema.org Dataset metadata.
- **`CITATION.cff`** — citation metadata (see below).

### Work Markdown shape

Each `/works/{name}.md` carries YAML frontmatter with `eul_wid`, `eul_aid`,
canonical page URL, classification, and license. The body has the full Greek
text, with each citable unit reference as an H3 heading:

```markdown
### Apol 17 a

Greek text...
```

This is the current public agent text surface. Per-work JSON remains withheld
until its public shape is clean and stable.

## Typical workflows

### Look up an author or work by name

1. Fetch `/data/authors.json` (authors) or `/data/works.json` (works).
2. Match on `author_display_string` / `work_display_string`. Each row
   carries `eul_aid` and (for works) `eul_wid`.
3. Use those identifiers for any subsequent fetch.

### Fetch a single work

1. In `/data/works.json`, find the row for your `eul_wid`.
2. Compose the universal artefact stem `{work_display_string}-{eul_wid}` from the row.
3. Fetch `https://eulogikon.org/works/{work_display_string}-{eul_wid}.md` for the Greek text, or
   `https://eulogikon.org/works/{work_display_string}-{eul_wid}` for the HTML reading page.
   Optional PDF: `https://eulogikon.org/works/{work_display_string}-{eul_wid}.pdf`.

### Find works by classification

1. Fetch `/data/works.json` and filter by `domain`, or fetch a pre-built
   **domain** or **affiliation** PDF bundle from the data store:
   `domains/{domain}.pdf` (17 domains) and `affiliations/{school}.pdf`
   (25 schools — Stoic, Platonist, Pre-Socratic, Epicurean, …).
2. For finer author metadata (period, dialect, affiliation, floruit), use
   `/data/authors.json` or the author's `en/{author_display_string}-{eul_aid}.en.md`
   in the data store.

### Bulk crawl

1. Use `/data/works.json` or the data-store `manifest.csv` as the complete list.
2. Iterate over site Markdown URLs (`/works/{name}.md`).
3. Be considerate with concurrency; the corpus is maintained by one person.

### Compose a citation

- Cite by **`eul_wid`** (stable) plus the passage reference — the string that
  appears as an H3 heading in that work's Markdown (a Stephanus, Bekker, DK or
  fragment number, depending on the work).
- Use the **bare-identifier URL** as the permalink:
  `https://eulogikon.org/works/{eul_wid}`, which redirects (`301`) to the
  canonical page. Display strings are mutable and not unique on their own, so a
  display-string URL is not a durable citation.
- The human-readable reading page is served at
  `https://eulogikon.org/works/{name}`; author pages at
  `https://eulogikon.org/authors/{author_display_string}-{eul_aid}`.
- To cite the corpus as a dataset, use the Zenodo DOI
  `https://doi.org/10.5281/zenodo.20335421` (or the metadata in `CITATION.cff`). That DOI resolves to
  the latest **archived** release — a dated snapshot whose counts will not match
  the live site, which is updated more often than it is archived. Cite the
  archived version for reproducibility, and give your access date for anything
  you read here.

## Formats

Live site: Markdown at `/works/{stem}.md` is the agent text. HTML is the
reading page. PDF at `/works/{stem}.pdf` is optional. There is no live
plain-text work route.

The GitHub archive also holds Markdown and PDF under `grc/` and `en/`.
Per-work JSON is not published yet. Only the top-level `manifest.*.json`
indexes are published. PDFs include pre-built per-domain and per-school
compilations.

## Constraints and notes

- **License:** Public Domain Mark 1.0 on the Greek source text; CC0 1.0 Universal on Eulogikon's own indexes, manifests and metadata. Public domain; no attribution required; no
  restrictions, including AI training.
- **Read-only.** Fetch files; there is no write API.
- **No authentication.** Everything is public. Do not look for OAuth or keys.
- **Stable identifiers.** `eul_aid` and `eul_wid` do not change once issued;
  safe to hard-code downstream.
- **Greek text is the corpus body.** The `en/` files are English *author
  metadata* (biography, work lists), not full translations.
- **Don't crawl the file tree.** Resolve via the manifests; the tree is flat
  and large.

## What this skill is not for

- General questions about ancient Greek philosophy or literature — answer those
  from your own knowledge. This skill is for fetching specific texts from this
  corpus.
- Full English translations of the Greek works — the `en/` files are author
  metadata, not translated texts.
- Morphological analysis, lemmatization, or linguistic annotation. Eulogikon
  prioritizes readability over granular linguistic markup.
