mrkeyoor.com_
Thu 12 Nov 19:58 UTC
Dataevaluationupdated 25 Oct 2026

chinese-poetry-api review

Chinese Poetry API is a Go service for accessing classical Chinese poetry through REST and GraphQL. Its README documents search, author and dynasty data, and simplified and traditional Chinese output. The supplied documentation is primarily Chinese. Our recorded source-check run completed its build step, but its test command failed; it did not verify a deployed service.

+20stars / 7d
Verdict

Chinese Poetry API is worth evaluating when your application needs a self-hosted poetry API with REST, GraphQL and both Chinese scripts. In our October 3, 2026 run at f17afe4, the recorded build step succeeded in 79 seconds and the test command failed after 13 seconds. The available tail does not explain the failures or prove that the service is broken. Start with the documented Docker route, then verify startup, representative queries and poem text in your chosen revision. Choose the JSON dataset instead if you do not need a server.

We ran it

Lab card: what happened when we ran chinese-poetry-apiScreenshot of chinese-poetry-api (poetry.palemoky.com)
Install✓ · 29s122 packages
Build✓ · 79s
Tests✗ · 13s6 passed · 8 failed of 14 (go test)
Repo2384 files~18,837 lines of source · 380 MB · 3 CI workflows · Dockerfile · tests dir

Answers from our run

Does chinese-poetry-api build from source?

Dependencies installed in 29 seconds (122 packages), and the build succeeded in 79 seconds. We cloned commit f17afe4 into a clean Debian container with 3 CPUs and no project-specific setup.

Do chinese-poetry-api's tests pass?

No. The project's own test command finished in 13 seconds and reported 6 passed, 8 failed (go test).

Who should not use chinese-poetry-api?

Teams that require a deployment verified by this review: our recorded run did not establish container startup, installed-binary operation or endpoint correctness.

What are the alternatives to chinese-poetry-api?

Chinese Poetry, Gushici. Chinese Poetry API is worth evaluating when your application needs a self-hosted poetry API with REST, GraphQL and both Chinese scripts.

Setup3/5The README recommends Docker and the Makefile supplies tagged build and test targets. Our October 3 run completed its setup and build steps, but startup was not verified and test failures remain unexplained.
Docs3/5The supplied Chinese documentation covers REST, GraphQL, language selection and build commands. Revision differences require care, and these extracts do not supply an English operations guide.
Community2/5Issues 51 and 65 contain maintainer replies, including an October 6, 2026 textual-source explanation. This establishes some engagement, not broad adoption, response reliability or a measured support level.
Maturity3/5The project has a versioned database release, checksums and explicit FTS5 build configuration. Our recorded test command failed, its cause is unresolved, and deployment and corpus accuracy were not independently verified.

Who it’s for

Developers building Chinese poetry reading, education or quiz applications that need an API rather than raw dataset files.
Self-hosters comfortable reading Chinese documentation and checking SQLite build requirements.
Applications that need documented REST or GraphQL access and simplified or traditional Chinese output.

Who it’s NOT for

Teams that require a deployment verified by this review: our recorded run did not establish container startup, installed-binary operation or endpoint correctness.
English-only operators who need a supplied English operations guide; the extracts here are primarily Chinese.
Applications that require independently verified poem text without their own source checks.
Clients whose design depends on combined keyword and dynasty search before confirming that behavior in their chosen revision.
Developers seeking only dataset files, without operating another service.

Setup reality

In our recorded run on October 3, 2026, at commit f17afe49ead6dce982602819dadcf6b6f9d5fd50, the dependency/setup step exited successfully in 29 seconds and the build step exited successfully in 79 seconds. The test command exited with code 1 after 13 seconds. The parser recorded 6 passing packages, 8 failing packages and 10 packages without tests. These are package summaries, not an exhaustive count of individual tests.

The recorded configuration was 3 CPUs, 8 GB of memory and image golang:1.24-bookworm. The setup tail records downloading go1.25.0, so the image label alone does not establish the toolchain used throughout. The dependency summary lists 122 entries. The checkout contained 2,384 files, approximately 18,837 source lines and occupied 380 MB.

The build tail is only vet-exit:0. It supports reporting the recorded successful step, but does not independently demonstrate that a server binary was installed or started. The supplied test tail names failures in database, GraphQL and integration packages without showing their underlying error messages. It does not establish FTS5 as the cause.

Separately, the current Makefile enables CGO_ENABLED=1 and the sqlite_fts5 tag for builds and tests. The README recommends Docker, and the v0.6.0 release says container startup downloads the database automatically. Neither deployment path was verified by this recorded run.

A poetry API needs a deployment check beyond a successful build

Chinese Poetry API gives developers a documented REST and GraphQL interface to classical Chinese poetry. It is a plausible fit for reading apps, quizzes and educational tools that need a service layer. Our recorded run does not establish that the service was ready to deploy: the build step succeeded, while the test command failed without enough retained error detail to identify the cause.

The README documents simplified zh-Hans and traditional zh-Hant output, poem search, random selection, authors, dynasties, forms, statistics and health endpoints. Search examples distinguish all-text, title, content and author searches. These are documented capabilities, not endpoint results measured in our run. The supplied README and operational extracts are primarily Chinese; they do not establish that no English documentation exists anywhere.

What our October 3 run actually recorded

Our recorded run began on October 3, 2026, at 02:40:23.233 UTC against commit f17afe49ead6dce982602819dadcf6b6f9d5fd50, dated September 3, 2026. The configuration recorded 3 CPUs, 8 GB of memory and image golang:1.24-bookworm.

The dependency/setup step exited 0 after 29 seconds. Its retained tail says go: downloading go1.25.0 (linux/amd64). The dependency summary contains 122 entries; that is not a count of installed command-line tools. The image label also does not establish the actual toolchain used throughout the run.

The build step exited 0 after 79 seconds, with retained tail vet-exit:0. We can report that successful recorded step. The tail does not independently demonstrate a compiled server artifact, an installed binary or a running API.

The go test step exited 1 after 13 seconds. The parser recorded 6 passing packages, 8 failing packages and 10 packages without tests. Its total of 14 refers to passing and failing package summaries, not 14 individual tests. Exhaustive unique test counts were not reconciled against a complete log. Packages without tests must not be counted as failures.

The retained tail names failures in database, GraphQL and integration packages, including TestGraphQLCountFields, and shows the processor package passing. It omits the underlying error messages needed to diagnose those failures. In particular, this run does not support attributing them to no such module: fts5 or to a missing sqlite_fts5 tag.

The checkout measured 2,384 files, approximately 18,837 source lines and 380 MB. It included 3 CI workflow files, a Dockerfile, a Compose file and a tests directory. Those repository signals do not establish that CI passed or that the container works. No new execution, installed-binary check, deployment check or workload benchmark was performed for this correction.

Follow the documented build configuration

The current Makefile sets CGO_ENABLED=1 and GO_TAGS := sqlite_fts5. Its comment says the tag enables FTS5 and the trigram tokenizer required by the full-text search index. Both build and test targets pass the tag.

That is a documented build requirement, separate from the unexplained failures in our stored run. A generic go build should not be treated as equivalent to the project's configured build. Use the documented Makefile path for a source evaluation, then check startup and search against a fresh database before relying on a custom binary.

The README recommends Docker. Release v0.6.0 says container startup automatically downloads the database and lists poetry.db.gz plus checksums.txt for SHA256 verification. This makes the release asset part of deployment planning. Confirm the image and database revisions you intend to use, verify the asset, and check persistence and restart behavior. Our run did not test these operations; the available extracts do not substantiate the previous claims about a particular volume mount or container health-check implementation.

Keep release data separate from the current README

Release v0.6.0 reports 371,313 poems, 13,577 authors and 11 dynasties in its database. Those are release-reported figures, not counts we queried or a verified total for today's main branch.

The current README says the project uses palemoky/chinese-poetry on its fix-typo branch, with corrections to characters, dynasties and authors. Its category counts differ from the README pinned to our recorded commit. Treat the release, the measured source revision and the current README as different snapshots. Confirm the actual database behind your deployment rather than combining their figures into one inventory.

Verify search composition and textual variants

The README documents dynasty and author filters for poem lists and random selection. That does not establish the same filter support for keyword search.

In issue 65, opened July 14, 2026, a user reports that /api/v1/poems/search cannot combine keywords with dynasty filtering. The maintainer acknowledged the request on July 17. The supplied extract shows the issue open, but an issue report alone does not prove the behavior of every later revision. If your interface needs a query such as moon poems from the Tang dynasty, confirm it against your selected deployment before designing around it.

Issue 51 also needs careful reading. A user reported wrong characters on June 23, 2026. On October 6, the maintainer explained that the example's wording appears in Song-era sources and that another wording appears in later selections. This exchange supports checking textual provenance; it does not prove that the example is an error or quantify corpus-wide accuracy. The current README's correction claims do not establish independent editorial verification either.

For classroom or quotation use, sample representative poems in both scripts against the editions your application follows. Decide how you will handle variants and user corrections before presenting the text as authoritative.

Choose the service only when you need its interface

The Chinese Poetry repository distributes its literature data as JSON. Choose that route for offline processing or an application with its own storage and search layer.

Gushici addresses a narrower need: returning a random classical Chinese poetry line, optionally by category, in formats including JSON, text, SVG and PNG. Its README says the open repository contains only test data and that additional data must be collected separately. That matters if you intend to self-host a quote widget.

Chinese Poetry API is the candidate here when REST or GraphQL and both Chinese scripts justify operating a service. The next useful check is a deployment of your chosen revision with representative list, search and GraphQL requests. The stored test failure is a reason to investigate, not a diagnosis.

How to read the scores

These are editorial assessments of the supplied evidence, not benchmark results. The rubric is 1 for substantial documented barriers, 2 for limited or unresolved evidence, 3 for a usable documented path with material checks remaining, 4 for detailed support with few unresolved questions, and 5 for strong corroboration across documentation and relevant recorded checks. Unknown adoption or compatibility earns no extra credit. Setup and maturity remain provisional because deployment was not verified.

Alternatives

ProjectWhat it isPick it when
Chinese Poetry gh↗A classical Chinese literature dataset distributed as JSON.Choose it when you want dataset files and will build your own indexing or application layer.
GushiciAn API project for returning a random classical Chinese poetry line, with category selection and several output formats.Choose it for a random-line widget. Its repository supplies only test data, so self-hosting requires collecting additional data yourself.

What people are saying

  1. [github-trending] palemoky/chinese-poetry-api

Sources

  1. Chinese Poetry API README
  2. Chinese Poetry API v0.6.0 release
  3. SQLite FTS5 build configuration
  4. Reported poem text errors
  5. Requested dynasty filter for search

More data reviews

rerun · telegraf · rocksdb · redash · akshare · DB-GPT · the whole board →