is online. The entire set of Project Gutenberg has been parsed into events not larger than 50 KB and imported to our Mercury relay, where it can be searched. The books can be read online or downloaded as Asciidoc, EPUB, or PDF. Please note: **The full content of the PG library is now on Nostr.** These are not merely references to books, they are the complete books, broken down into millions of events that can be individually referenced, highlighted, quoted, commented on, etc. I am working on a tarball download site for the jsonl, for other relay admins to use. The books will be uploaded to various other relays. Once they are on TheForest 🌲 relay, Alexandria will automatically pick them up. If you want to be whitelisted for the download API, please @ me below. ⬇ image #literature #Alexandria #ebooks

Replies (60)

I'm trying to use "Search Publications" to search for things like "Don Quixote", "Cervantes", "Boethius", "Aristotle", etc. but I'm getting no results. Anything I'm doing wrong?
Wait - I started getting results! Maybe it was just relay slowness. The results are not exactly what I'd expect. For example, putting in "Aristotle" gives me works related to Aristotle or philosophy, rather than works by Aristotle. Maybe it has something to do with the way these are indexed on Project Gutenberg.
It's my vibeslop search endpoint. It searches title and author and d-tags. The final one from the devs will be better and more performant.
My job was to parse everything and get it on the Nostr network. All of the systems engineering and Alexandria app development is up to the rest of the team. Imwald is just my test tool, but it works well enough to give you the general idea and to cross-check Alexandria.
I have two questions... first: my friend @Анкап-тян wrote a book; can nostr users add their own books, - or is it limited to the Gutenerg project now? second: can I just add your relay for search in nostr, - such as search.nos.today, - and search in your library (by titles is OK, I mostly don't need fulltext search), and get Aristotle as bunch of notes? (kind 1, or is it completely other kind of event, so, it needs your very own, brand new nostr app?)
The books are currently on our special document relay, which is http-based. The books are going to be uploaded to the "normal" websocksets, from which they can be normally searches. There are already lots of publications, including originals from Nostriches, available on the wss relays, but we are going to add to that all of the public access journals and books we can find. The non-PG books can be viewed on https://alexandria.imwald.eu And those are findable from any normal Nostr search. We also have a composer there. You can also use our Obsidian plug-in.
The feature that makes results appear while you type into the input field sometimes works, but sometimes it freezes and I get a "Page Unresponsive" message. Maybe that's still some of the background noise you mentioned? I'm also not sure how to define what type of content it should search for (e.g. title, author etc.). Is that something I can add into the input field, maybe something "title: Tom Jones"?
By the way, the Alexandria site can be a little difficult to find. I found it by entering "Gitcitadel Alexandria" into a search engine, which involves a bit of combinatorics. It might make sense to include links in your posts or on your profile, or something like that.
At least right now I'm not seeing a drop-down on the box "Search publications by title, author ..." etc. This is a linux laptop with Chrome.
The drop-down started appearing now. Also text entry is now smooth and quick, no freezes. The search results are sort of related to the topic I entered, not always quite on point.
It'll get better, once they get all of the edge caching and indexing going and we get the big relays like theforest and NFDB holding the data. My wimpy little test server is always sluggish and it's like 20 GB of data to search through.
Let me add support for user statuses and render it in my client. Then I can add it there and it would appear on every event I publish.
That seems more likely. Inkan was built based on plain vanilla jumble from about 6 months ago, not sure what exactly it does with profiles. It's the same at primal.net, though.
Huh, I actually don't know how to figure out which profile event is being displayed by a client. But I'm pretty confident that I have the right event, it's most likely the tags not being rendered as you say.
Yeah, primal is always slow to upgrade and jumble hasn't updated anything on profiles in ages. Project seems to be in maintenance mode. The forks are all more active.
It looks like this, now. You might need to go to settings - cache - clear service worker to see the newest version. The content field of the 30041 section has an Asciidoc document header in it, which needs to be removed, and a locally-stored image (that can't work on a remote machine). image
Hmmm .. searching for "Don Quixote" as title or "Cervantes" as author just hangs on "Searching publications ..." for maybe a minute and then I get a "No publications match your filters" message (although I got search results for these earlier). Same with "Plato", nothing matches. Ah, but I do get a result for "Ambrose Bierce" and for the "Bible". So maybe it's a matter of things still getting indexed, but it doesn't yet feel like the complete Project Gutenberg is getting found in the searches.
If you just type in, it does a local search. If you press the search relays button after typing, it uses the API to the Mercury document relay. That's the relay with the PG dump. I get a result for "Don Quixote" in 4 seconds. I also changed it to cache search results, so it should find it faster, after the first time.
Yes, that works. Actually clicking the "Search the relays" button brings up a much more complete-looking list of results. It should not say "Searching for publications ..." *before* the user has clicked the "Search the relays" button because, once it says that, the user is unlikely to click that button since they think the search is already underway.
Also, there are distracting oddities about the format in which the text of the books is displayed. Portions of the text appear inside black boxes which seem out of place and make the text look fragmented (see screenshot below). Looking at the original PJ website, these may be portions of the text that had special formatting there (maybe centering or block-quoting or something like that). It would be better to more closely mirror the formatting / look of the original PJ. Also, by the way, are you OTSing these books? That would be of great value if it's not already done somewhere else. image
Lucas M's avatar
Lucas M 3 weeks ago
I just did the same but none seem to load.
Lucas M's avatar
Lucas M 3 weeks ago
Correction: certain ones don't seem to.
It's OpenTimestamps. The created_at timestamps that are included in Nostr events are self-declared and can be faked. Instead of relying on these, Nostr events can get objective timestamps that are recorded on Bitcoin, proving that the event must have existed at the time of some Bitcoin block. To do this correctly, it's necessary to timestamp a concatenation of the event_id and the event's signature. These timestamps can be created efficiently for large numbers of events using Merkle trees, and it's pretty quick and easy for clients to verify that an event has a valid Bitcoin timestamp. For Project Gutenberg, timestamping these books on Bitcoin would prove that they existed in the exact form in which you recorded them as of, say, June 11, 2026. This would give people the ability to confirm that these books have not been altered since that time. There have been attempts to alter classic works to fit current sensibilities, and there could conceivably be attempts to either remove the unaltered versions from the internet altogether or to obfuscate what the original version was. It's possible that someone has already timestamped the Project Gutenberg texts, I'm not sure. But what you're doing seems like an opportunity to do so.
You could timestamp them on the relay after they've been published, or client-side right after they've been signed. You need a mechanism for updating the timestamps once the event has been recorded on Bitcoin and the full Merkle proof is available. I don't really know what people use these days to timestamp events. I've been running my own server that timestamps events on the inkan relay, but I haven't tried to make something that works on other people's relays.
↑