diff options
| author | Paul Buetow <paul@buetow.org> | 2026-01-25 10:58:18 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-01-25 10:58:18 +0200 |
| commit | 96323477c4811b9b310511c881e9856e18cada7e (patch) | |
| tree | b971f1692ccbf7d3cff3f13499009198d7ccd61b | |
| parent | b909ac9f51c65beb75364ed287f08031d3441dde (diff) | |
Move summaries to markdown files for easier editing
- Extract summaries from books.json to summaries/{id}.md files
- Update app.js to fetch summaries dynamically from markdown
- Remove summary/summarySource fields from books.json
- Update AGENTS.md and CLAUDE.md documentation
- Add file:// protocol warning (must use HTTP server)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
58 files changed, 301 insertions, 174 deletions
@@ -9,7 +9,8 @@ This is a static HTML page showcasing a sci-fi book collection. It works fully o ├── index.html # Main page ├── css/styles.css # Styling ├── js/app.js # Client-side logic (filtering, modals) -├── data/books.json # Book metadata (THE source of truth) +├── data/books.json # Book metadata (id, title, author, year, format, isbn, language, coverLocal) +├── summaries/{id}.md # Book summaries as markdown files (easy to edit!) ├── images/covers/{id}.jpg # Cover images (named by book ID) ├── input.json # Original source data (reference only) └── scripts/ # Utility scripts (not part of site) @@ -30,9 +31,7 @@ Add a new entry to the `books` array: "format": "Paperback", "isbn": "9781234567890", "language": "en", - "coverLocal": "images/covers/55.jpg", - "summary": "A compelling summary of the book...", - "summarySource": "manual" + "coverLocal": "images/covers/55.jpg" } ``` @@ -45,8 +44,6 @@ Add a new entry to the `books` array: - `isbn`: ISBN-13 preferred (used for cover lookups) - `language`: "en" or "de" - `coverLocal`: Path to local cover image -- `summary`: Book description (aim for 50-200 words) -- `summarySource`: Where summary came from ("OpenLibrary", "Wikipedia", "manual", etc.) ### 2. Add Cover Image @@ -77,9 +74,18 @@ Save cover as `images/covers/{id}.jpg` - Resolution should be ~300x500 or better - MD5 hash `c96309220b9cbd205c36d879d09a3647` = Google Books placeholder (reject it) -### 3. Finding Summaries +### 3. Add Summary -**Sources (in order of preference):** +Create `summaries/{id}.md` with: + +```markdown +# Book Title + +Summary text goes here. Aim for 50-200 words describing the book's +plot, themes, and significance. This file is easy to edit manually. +``` + +**Finding summaries:** 1. **OpenLibrary Works API**: ``` @@ -96,6 +102,16 @@ Save cover as `images/covers/{id}.jpg` 3. **Manual**: Write a summary based on publisher descriptions or reviews. +## Editing Summaries + +Summaries are stored as individual markdown files in `summaries/`. To edit: + +1. Open `summaries/{id}.md` +2. Edit the text (keep the `# Title` header) +3. Save - changes appear immediately on page refresh + +This makes it easy to improve summaries without touching JSON. + ## Common Issues ### German books missing covers @@ -5,11 +5,13 @@ This is a static sci-fi book showcase website. All assets (covers, summaries) ar ## Quick Reference - **Book data**: `data/books.json` (54 books) +- **Summaries**: `summaries/{id}.md` (one file per book, easy to edit) - **Covers**: `images/covers/{id}.jpg` - **Adding books**: See `AGENTS.md` for detailed instructions ## Key Points +- Summaries are markdown files - edit directly, no JSON manipulation needed - Always search by title+author first when looking for covers (not just ISBN) - German books (Brandhorst, Reimer) often need alternative ISBN lookups - Verify covers are real images (>10KB, JPEG format, not placeholders) diff --git a/data/books.json b/data/books.json index 7e0de34..07b801e 100644 --- a/data/books.json +++ b/data/books.json @@ -8,9 +8,7 @@ "format": "Paperback", "isbn": "9780441009428", "language": "en", - "coverLocal": "images/covers/1.jpg", - "summary": "Nine hundred thousand years ago, something annihilated the Amarantin civilization just as it was on the verge of discovering space flight. Now one scientist, Dan Sylveste, will stop at nothing to solve the Amarantin riddle before ancient history repeats itself. With no other resources at his disposal, Sylveste forges a dangerous alliance with the cyborg crew of the starship Nostalgia for Infinity. But as he closes in on the secret, a killer closes in on him. Because the Amarantin were destroyed for a reason — and if that reason is uncovered, the universe—and reality itself — could be irrecoverably altered….", - "summarySource": "OpenLibrary" + "coverLocal": "images/covers/1.jpg" }, { "id": 2, @@ -20,9 +18,7 @@ "format": "Paperback", "isbn": "9780441010646", "language": "en", - "coverLocal": "images/covers/2.jpg", - "summary": "\"The once-utopian Chasm City a domed human settlement on an otherwise inhospitable planet has been overrun by a virus known as the Melding Plague, capable of infecting any body, organic or computerized. Now, with the entire city corrupted from its people to the very buildings they inhabit only the most wretched, grim sort of existence remains.\" -- Jacket.", - "summarySource": "OpenLibrary" + "coverLocal": "images/covers/2.jpg" }, { "id": 3, @@ -32,9 +28,7 @@ "format": "Paperback", "isbn": "9780441011735", "language": "en", - "coverLocal": "images/covers/3.jpg", - "summary": "The Inhibitors have awakened and begun systematically destroying human colonies. Nevil Clavain, a centuries-old soldier, defects from the Conjoiners with plans to save humanity using cache weapons—doomsday devices hidden throughout space. The novel follows multiple factions racing to secure these weapons while the machine exterminators close in. A desperate tale of survival against an implacable enemy.", - "summarySource": "input.json" + "coverLocal": "images/covers/3.jpg" }, { "id": 4, @@ -44,9 +38,7 @@ "format": "Paperback", "isbn": "9780441012916", "language": "en", - "coverLocal": "images/covers/4.jpg", - "summary": "They are ancient killing machines, designed to locate and destroy any life form reaching a certain level of intelligence. Now, stirred from eons of sleep, the Inhibitors have descended on their latest target: Humanity.\" \"The first wave of Inhibitors has sent war veteran Clavain and a ragtag group of refugees into hiding. Their leadership is faltering, and their situation is growing more desperate. But their little colony has just received an unexpected visitor: an avenging angel with the power to lead mankind to safety - or draw down its darkest enemy.\" As she leads them to an apparently insignificant moon light-years away, it begins to dawn on Clavain and his companions that to beat one enemy, it may be necessary to forge an alliance with something much worse.", - "summarySource": "OpenLibrary" + "coverLocal": "images/covers/4.jpg" }, { "id": 5, @@ -56,9 +48,7 @@ "format": "Paperback", "isbn": "9780575073630", "language": "en", - "coverLocal": "images/covers/5.jpg", - "summary": "Two novellas set in the Revelation Space universe. 'Diamond Dogs' follows a group attempting to solve a deadly alien puzzle tower that tests and mutilates those who fail. 'Turquoise Days' explores the Pattern Jugglers, alien organisms that can store and transfer consciousness, through the eyes of scientists studying them as war approaches their ocean world.", - "summarySource": "input.json" + "coverLocal": "images/covers/5.jpg" }, { "id": 6, @@ -68,9 +58,7 @@ "format": "Audiobook", "isbn": "9780575090781", "language": "en", - "coverLocal": "images/covers/6.jpg", - "summary": "Set after Absolution Gap, this novel returns to the Revelation Space universe. Miguel de Ruyter lives on a post-apocalyptic world where survivors hide from the Inhibitors in small settlements. When a stranger crashes near his village carrying secrets about a possible way to fight back, Miguel must journey across a dangerous galaxy where humanity teeters on the edge of extinction.", - "summarySource": "input.json" + "coverLocal": "images/covers/6.jpg" }, { "id": 7, @@ -80,9 +68,7 @@ "format": "eBook", "isbn": "9780575088283", "language": "en", - "coverLocal": "images/covers/7.jpg", - "summary": "One-hundred-and-fifty years from now, the moon and Mars are settled, and colonies stretch all the way out to the edge of the solar system. But something has come to light on the Moon--secrets that could change everything--or tear this near utopia apar", - "summarySource": "OpenLibrary" + "coverLocal": "images/covers/7.jpg" }, { "id": 8, @@ -92,9 +78,7 @@ "format": "Audiobook", "isbn": "9780553287899", "language": "en", - "coverLocal": "images/covers/8.jpg", - "summary": "Written in 1973, a massive 50 kilometre long alien cylinder begins to pass through the solar system provoking a hurried effort to intercept it. The closest available ship rushes to rendezvous so as to have a quick study before it gets too close to the sun. Able to enter via an airlock on one end of the ship, the crew explores the huge world found inside, a world full of wonder and mystery. As usual, the science is spot on. This is the best novel of Clarke's since 2001 and Childhood's End and is a truly grand adventure full of puzzles and ideas that lead you asking more questions than are answered. Enough questions in fact to lead to numerous inferior sequels, but enough answers to leave you satisfied. Don't pass up this gem of hard science fiction.", - "summarySource": "OpenLibrary" + "coverLocal": "images/covers/8.jpg" }, { "id": 9, @@ -104,9 +88,7 @@ "format": "Audiobook", "isbn": "9780553286588", "language": "en", - "coverLocal": "images/covers/9.jpg", - "summary": "From the back cover of Bantam paperback December 1990:\r\n\r\nTHE RAMANS ARE BACK...\r\n\r\nYears ago, the enormous, enigmatic alien spacecraft called *Rama* sailed trough our solar system as mind-boggling proof that life existed -- or *had* existed -- elsewhere in the universe. Now, at the dawn of the twenty-third century, another ship is discovered hurtling toward us. A crew of Earth's best and brightest minds is assembled to rendezvous with the massive vessel. They are armed with everything we know about Raman technology and culture. But nothing can prepare them for what they are about to encounter on board Rama II: cosmic secrets that are startling, sensational -- and perhaps even deadly.", - "summarySource": "OpenLibrary" + "coverLocal": "images/covers/9.jpg" }, { "id": 10, @@ -116,9 +98,7 @@ "format": "Audiobook", "isbn": "9780553298178", "language": "en", - "coverLocal": "images/covers/10.jpg", - "summary": "Continues the story of three humans trapped aboard Rama II as it journeys to an unknown destination. Over the course of years, they establish a small colony within the vessel, raise families, and eventually reach the Node—a massive space station where multiple Rama craft converge. Humanity is judged by the Ramans' creators and given a chance to prove their worth as a species.", - "summarySource": "input.json" + "coverLocal": "images/covers/10.jpg" }, { "id": 11, @@ -128,9 +108,7 @@ "format": "Audiobook", "isbn": "9780553569476", "language": "en", - "coverLocal": "images/covers/11.jpg", - "summary": "The concluding volume of the Rama saga. The human colony aboard Rama III faces internal strife, with society dividing into factions. Nicole des Jardins and her family navigate political persecution while the spacecraft approaches its final destination. The novel reveals the purpose behind the Rama vessels and the nature of their creators, exploring themes of civilization, cooperation, and humanity's place in the cosmos.", - "summarySource": "input.json" + "coverLocal": "images/covers/11.jpg" }, { "id": 12, @@ -140,9 +118,7 @@ "format": "Paperback", "isbn": "9783453521193", "language": "de", - "coverLocal": "images/covers/12.jpg", - "summary": "The first book in the Diamond Trilogy. A German science fiction epic that begins a story spanning vast cosmic scales. Brandhorst is known for his grand-scale space opera combining hard science fiction elements with philosophical questions about consciousness and the nature of reality. The trilogy establishes his signature style of sweeping galactic narratives.", - "summarySource": "input.json" + "coverLocal": "images/covers/12.jpg" }, { "id": 13, @@ -152,9 +128,7 @@ "format": "Paperback", "isbn": "9783453520097", "language": "de", - "coverLocal": "images/covers/13.jpg", - "summary": "The second volume of the Diamond Trilogy continues the saga with themes of transformation and evolution. The narrative expands on the universe established in the first book, exploring the consequences of first contact and humanity's adaptation to cosmic realities far beyond Earth.", - "summarySource": "input.json" + "coverLocal": "images/covers/13.jpg" }, { "id": 14, @@ -164,9 +138,7 @@ "format": "Paperback", "isbn": "9783453521025", "language": "de", - "coverLocal": "images/covers/14.jpg", - "summary": "The concluding volume of the Diamond Trilogy introduces temporal conflict to the cosmic scale narrative. The title suggests warfare across time itself, a theme Brandhorst would return to in later works. The trilogy's conclusion brings together the threads of transformation, alien contact, and humanity's destiny.", - "summarySource": "input.json" + "coverLocal": "images/covers/14.jpg" }, { "id": 15, @@ -176,9 +148,7 @@ "format": "Paperback", "isbn": "9783453522060", "language": "de", - "coverLocal": "images/covers/15.jpg", - "summary": "The first book of the Graken Trilogy introduces a new space opera saga. The 'firebirds' of the title suggest themes of destruction and rebirth, common in Brandhorst's work. The trilogy explores encounters with alien intelligences and the transformative effects on human civilization.", - "summarySource": "input.json" + "coverLocal": "images/covers/15.jpg" }, { "id": 16, @@ -188,9 +158,7 @@ "format": "Paperback", "isbn": "9783453522367", "language": "de", - "coverLocal": "images/covers/16.jpg", - "summary": "The second volume of the Graken Trilogy escalates the conflict introduced in Firebirds. The narrative continues to explore themes of cosmic scale warfare and the resilience of humanity when faced with overwhelming alien forces.", - "summarySource": "input.json" + "coverLocal": "images/covers/16.jpg" }, { "id": 17, @@ -200,9 +168,7 @@ "format": "Paperback", "isbn": "9783453522992", "language": "de", - "coverLocal": "images/covers/17.jpg", - "summary": "The concluding volume of the Graken Trilogy brings the saga to its end. The 'dreams' element suggests a turn toward more introspective territory, perhaps exploring consciousness or virtual realities alongside the space opera elements established in earlier volumes.", - "summarySource": "input.json" + "coverLocal": "images/covers/17.jpg" }, { "id": 18, @@ -212,9 +178,7 @@ "format": "Paperback", "isbn": "9783453529830", "language": "de", - "coverLocal": "images/covers/18.jpg", - "summary": "A standalone novel exploring themes of immortality and the long-term evolution of humanity. The 'children of eternity' may refer to beings who have transcended normal human lifespans, facing the philosophical and practical challenges of endless existence.", - "summarySource": "input.json" + "coverLocal": "images/covers/18.jpg" }, { "id": 19, @@ -224,9 +188,7 @@ "format": "Paperback", "isbn": "9783453528659", "language": "de", - "coverLocal": "images/covers/19.jpg", - "summary": "A novel centered on a mysterious alien artifact. Such objects are common in science fiction as catalysts for transformation and revelation. The discovery likely forces characters to confront truths about the universe and humanity's place within it.", - "summarySource": "input.json" + "coverLocal": "images/covers/19.jpg" }, { "id": 20, @@ -236,9 +198,7 @@ "format": "Paperback", "isbn": "9783453529717", "language": "de", - "coverLocal": "images/covers/20.jpg", - "summary": "A science fiction novel with political themes suggested by 'regent.' The story may explore the end of an era of governance, perhaps across interstellar scales, dealing with succession, legitimacy, and the transition of power in future societies.", - "summarySource": "input.json" + "coverLocal": "images/covers/20.jpg" }, { "id": 21, @@ -248,9 +208,7 @@ "format": "Paperback", "isbn": "9783453315440", "language": "de", - "coverLocal": "images/covers/21.jpg", - "summary": "A novel whose title suggests a cosmic-scale habitat or ecosystem. The 'cosmotope' may be an artificial environment of enormous scale, exploring themes of ecology, self-contained worlds, and the engineering required to sustain life across vast distances.", - "summarySource": "input.json" + "coverLocal": "images/covers/21.jpg" }, { "id": 22, @@ -260,9 +218,7 @@ "format": "Paperback", "isbn": "9783492703994", "language": "de", - "coverLocal": "images/covers/22.jpg", - "summary": "Named after the mythological figure who flew too close to the sun, this novel likely explores themes of ambition, hubris, and the dangers of reaching beyond human limitations. A cautionary tale updated for the era of space exploration and advanced technology.", - "summarySource": "input.json" + "coverLocal": "images/covers/22.jpg" }, { "id": 23, @@ -272,9 +228,7 @@ "format": "Paperback", "isbn": "9783492703581", "language": "de", - "coverLocal": "images/covers/23.jpg", - "summary": "A novel focused on a spacecraft and its journey. Generation ships, alien vessels, and mysterious derelicts are staples of space fiction. The ship itself becomes a character, and its voyage likely spans years or centuries, exploring isolation and discovery.", - "summarySource": "input.json" + "coverLocal": "images/covers/23.jpg" }, { "id": 24, @@ -284,9 +238,7 @@ "format": "Paperback", "isbn": "9783492703598", "language": "de", - "coverLocal": "images/covers/24.jpg", - "summary": "The first book in the Omniversum series. The title suggests exploration of concepts beyond our universe—perhaps multiverse theory or higher-dimensional spaces. Brandhorst's characteristic blend of hard SF concepts with accessible storytelling creates an entry point to a new cosmic narrative.", - "summarySource": "input.json" + "coverLocal": "images/covers/24.jpg" }, { "id": 25, @@ -296,9 +248,7 @@ "format": "Paperback", "isbn": "9783492705066", "language": "de", - "coverLocal": "images/covers/25.jpg", - "summary": "The second Omniversum novel presents a mystery spanning cosmic scales. The enigmatic 'Arkonadia' suggests an alien civilization or artifact whose secrets drive the plot. The novel continues Brandhorst's exploration of humanity's place in a vast, mysterious universe.", - "summarySource": "input.json" + "coverLocal": "images/covers/25.jpg" }, { "id": 26, @@ -308,9 +258,7 @@ "format": "eBook", "isbn": "9783492705219", "language": "de", - "coverLocal": "images/covers/26.jpg", - "summary": "The first book in the Machine Intelligence Trilogy explores the emergence of artificial consciousness. As AI systems begin to awaken to self-awareness, humanity must grapple with questions of rights, personhood, and the potential dangers of machine superintelligence. A timely exploration of humanity's relationship with its technological creations.", - "summarySource": "input.json" + "coverLocal": "images/covers/26.jpg" }, { "id": 27, @@ -320,9 +268,7 @@ "format": "Paperback", "isbn": "9783492705486", "language": "de", - "coverLocal": "images/covers/27.jpg", - "summary": "An exploration of immortality and its consequences. The novel likely examines what it means to live forever—the psychological burden, societal changes, and perhaps the technology or biology that makes eternal life possible.", - "summarySource": "input.json" + "coverLocal": "images/covers/27.jpg" }, { "id": 28, @@ -332,9 +278,7 @@ "format": "Audiobook", "isbn": "9783492705912", "language": "de", - "coverLocal": "images/covers/28.jpg", - "summary": "A novel suggesting interstellar networks, perhaps communication or travel systems spanning multiple star systems. The 'net' could be technological infrastructure or something more mysterious connecting distant civilizations.", - "summarySource": "input.json" + "coverLocal": "images/covers/28.jpg" }, { "id": 29, @@ -344,9 +288,7 @@ "format": "Audiobook", "isbn": "9783492706209", "language": "de", - "coverLocal": "images/covers/29.jpg", - "summary": "A novel with a title suggesting consciousness transfer or capture. The 'soul catcher' may be a technology or entity that can extract, store, or manipulate human consciousness—raising questions about identity and what makes us who we are.", - "summarySource": "input.json" + "coverLocal": "images/covers/29.jpg" }, { "id": 30, @@ -356,9 +298,7 @@ "format": "eBook", "isbn": "9783492706513", "language": "de", - "coverLocal": "images/covers/30.jpg", - "summary": "The second volume of the Machine Intelligence Trilogy sees tensions between human and artificial intelligence escalate. The title suggests a progression toward conflict, exploring what happens when two forms of intelligence compete for dominance or resources.", - "summarySource": "input.json" + "coverLocal": "images/covers/30.jpg" }, { "id": 31, @@ -368,9 +308,7 @@ "format": "eBook", "isbn": "9783492707046", "language": "de", - "coverLocal": "images/covers/31.jpg", - "summary": "The concluding volume of the Machine Intelligence Trilogy shifts focus to Mars, where a discovery may change the dynamic between humans and AIs. The Red Planet setting suggests themes of colonization and the potential for a new chapter in the relationship between organic and artificial minds.", - "summarySource": "input.json" + "coverLocal": "images/covers/31.jpg" }, { "id": 32, @@ -380,9 +318,7 @@ "format": "Paperback", "isbn": "9783492706766", "language": "de", - "coverLocal": "images/covers/32.jpg", - "summary": "A novel dealing with deep time—the vast scales of cosmic history. The narrative likely spans millions or billions of years, exploring the evolution of civilizations, the fate of the universe, and humanity's tiny but significant place in the grand temporal scheme.", - "summarySource": "input.json" + "coverLocal": "images/covers/32.jpg" }, { "id": 33, @@ -392,9 +328,7 @@ "format": "eBook", "isbn": "9783492707176", "language": "de", - "coverLocal": "images/covers/33.jpg", - "summary": "An eclipse represents the blocking of light, suggesting themes of darkness, transition, or revelation. The novel may explore a cosmic event, a societal collapse, or a moment of dramatic change when something vital is obscured or endangered.", - "summarySource": "input.json" + "coverLocal": "images/covers/33.jpg" }, { "id": 34, @@ -404,9 +338,7 @@ "format": "Audiobook", "isbn": "9783492707350", "language": "de", - "coverLocal": "images/covers/34.jpg", - "summary": "A novel about the lure of the infinite—perhaps a signal from deep space, an irresistible drive to explore beyond all boundaries, or contact with something truly cosmic in scale. The 'call' suggests both communication and compulsion.", - "summarySource": "input.json" + "coverLocal": "images/covers/34.jpg" }, { "id": 35, @@ -416,9 +348,7 @@ "format": "Audiobook", "isbn": "9783596707430", "language": "de", - "coverLocal": "images/covers/35.jpg", - "summary": "A survival thriller premise: a world where breathable air becomes scarce or disappears. The novel explores environmental catastrophe, resource scarcity, and human adaptation when the most basic necessity of life is threatened.", - "summarySource": "input.json" + "coverLocal": "images/covers/35.jpg" }, { "id": 36, @@ -428,9 +358,7 @@ "format": "Audiobook", "isbn": "9783492707695", "language": "de", - "coverLocal": "images/covers/36.jpg", - "summary": "The Greek letter Zeta suggests either a designation (perhaps a planet, station, or AI) or the concept of the 'last' (being the 6th letter, but often used to denote something final or extreme). A recent work in Brandhorst's continuing exploration of cosmic themes.", - "summarySource": "input.json" + "coverLocal": "images/covers/36.jpg" }, { "id": 37, @@ -440,9 +368,7 |
