Meet Clio. She turns your smartphone into an intelligent museum guide.
Instead of reading tiny plaques on the wall, simply point your camera at an artwork. Clio will identify it, pull up real historical data from the MET Museum, and let you chat with the artwork—via text or voice.
It's like walking through a museum with a personal historian in your pocket.
👉 Watch Clio in Action on YouTube
git clone https://github.com/sqqstellar/cs50final.git
cd cs50finalYou'll need Python 3.10+. A virtual environment is recommended:
Windows:
python -m venv venv
.\venv\Scripts\Activate.ps1Mac/Linux:
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtClio uses Google Gemini to think. Get a free key at Google AI Studio.
- Create a file named
.envin the project folder - Paste your key inside:
GEMINI_API_KEY=AIzaSy...your_key_here...
python app.pyOpen your browser to http://127.0.0.1:5000
-
Scan: Point your camera at an artwork. (Check the
image_library/folder to see which art pieces Clio currently recognizes!) -
Confirm: Clio will match the image and pull metadata (Artist, Date, History) from the MET API.
-
Chat: Ask questions like "Why is this significant?" or "How was this made?"
-
Voice Mode: Tap the 🎧 headphone icon to speak to Clio hands-free.
Want to try Clio without visiting a museum? Here's how:
Create a .env file in the project root with your Gemini API key:
GEMINI_API_KEY=your_api_key_here
Get a free key at Google AI Studio.
Since Clio uses your camera, you can test it by:
- Open the
image_library/folder on your computer - Download or send one of the artwork images to your phone
- Display the image on your phone screen
- Use another device (or the same phone) to scan it through Clio's camera
To confirm Clio identified the artwork correctly:
- Check
random_artworks.json— it contains detailed metadata for each artwork in the library (artist, creation date, medium, culture, dimensions, etc.) - Compare the information Clio displays with the data in this file
- The artwork ID in the filename (e.g.,
artwork_436535.jpg) corresponds to the MET Museum's object ID
Want to expand the library?
- Visit the MET Collection
- Find an artwork and note its Object ID from the URL
- Download the image and save it as
artwork_[ID].jpginimage_library/ - Run
python get_random_artworks.pyto update the metadata
| Issue | Solution |
|---|---|
| Camera not working | Browsers block camera on http:// unless it's localhost. Use http://127.0.0.1:5000 or enable HTTPS. |
| Artwork not recognized | Clio only knows artworks in image_library/. Add more by downloading from MET Collection and naming as artwork_[ID].jpg. |
| Voice not playing | Check browser audio permissions. Interact with the page first (click/tap). |
| API errors | Verify your .env file exists and contains a valid GEMINI_API_KEY. |
Questions? Feel free to reach out!