WallpaperMachine
당신이 사랑하는 배경화면, 맥에서 새롭게 만나보세요
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Log the books you read and see where each one takes place on a world map. The book version of MovieMap, with Goodreads in Letterboxd's place.
Live at https://dominicvhoule.github.io/thebookmap/
goodreads_library_export.csv) on the Goodreads tab. It brings in every book with ratings, dates read and read counts, plus the Want to read and Currently reading shelves, with no limit on size and whether the profile is public or private. Importing a newer export later adds only the new books.| What | Source |
|---|---|
| Titles, authors, covers, editions | Open Library (no key needed). Every cover is Open Library's: each book saves its Open Library cover ID once, and the image link is built from it |
| Your books, ratings, dates read | Your Goodreads library export (CSV) |
| Where a book takes place | Wikidata "narrative location" (P840), linked to Open Library works (P648) |
| When Wikidata has none | The library catalogue's subject places on Open Library ("Saint Petersburg (Russia)"), located through Wikipedia |
| Then | The places linked in the book's Wikipedia article (its Setting or Plot section) |
| Optional AI step | Claude reads the Wikipedia article and catalogue entry (book-setting function, needs an API key) |
| Last resort | The author's country (Wikidata), marked approximate |
| Cover images | Your own Cloudflare Worker and R2 bucket (cloudflare/covers-worker.js): each cover is fetched from Open Library once, then always served from R2 |
| Book summaries | The book's Wikipedia article when it has one (story sentences, credited "From Wikipedia's article … (CC BY-SA 4.0), adapted"); otherwise Claude writes one in its own words (book-summary function, needs ANTHROPIC_API_KEY). Saved once per book in book_summaries |
| Base map | OpenFreeMap tiles (OpenStreetMap data) drawn with MapLibre |
| Accounts, maps, follows | Supabase, the same project as MovieMap |
Resolved settings are cached in a shared book_settings table so each book is only looked up once.
The site works before this: anyone can browse the starter shelf and keep books in their browser, and people can sign in with their MovieMap account. This one step turns on books on accounts, People and the nightly Goodreads check.
supabase/migrations/101_bookmap.sql and press Run. It only adds tables and columns; nothing of MovieMap's is changed. It also schedules the nightly Goodreads check, using the secret MovieMap's daily sync already keeps in Vault.https://dominicvhoule.github.io/thebookmap/ under Redirect URLs, so sign-up and password emails come back to BookMap.The three functions are already deployed to the project: goodreads-feed (Verify JWT on), book-sync (Verify JWT off; uses CRON_SECRET), and book-setting (Verify JWT on; does nothing until ANTHROPIC_API_KEY is set, the same key MovieMap's AI step uses). To redeploy one, paste its supabase/functions/<name>/index.ts into the Supabase editor.
index.html page shell
styles.css all styles (phone layout at the bottom)
config.js Supabase settings (MovieMap's project)
js/featured.js the hand-checked starter shelf (245 books), shown to signed-out visitors
js/data.js Open Library and Wikidata lookups, country helpers
js/wikiplot.js settings from the catalogue's subject places and from Wikipedia
js/app.js map, reading log, logging, Goodreads, accounts, people
data/world.json country shapes (Natural Earth via world-atlas)
supabase/migrations/101_bookmap.sql the book tables and the nightly schedule
supabase/functions/goodreads-feed/index.ts reads public Goodreads Read shelves
supabase/functions/book-sync/index.ts adds new Goodreads books for every member, once a day
supabase/functions/book-setting/index.ts asks Claude where a book is set (optional)
goodreads-feed, nightly book-sync) was removed on 2026-10-26: the site no longer reads Goodreads pages, and the nightly jobs are unscheduled. The two functions are still deployed but unused.