Slides app - intelligent querying of Google Slides presentations. After granting access to drive and slides through Google's OAuth API, you can query and submit questions to your Presentation notes and content without specifying which documents contain the information.
First, run the development server:
npm run dev
Open http://localhost:3000 with your browser to see the result
- firebase deploy --only hosting
- Get pinecone api key
- Using with npm or pip package
- Create Index
in the /functions dir
- getAuthentication - Get custom google OAuth URL with user profile, drive, slides scopes
- oauthRedirect - Handle redirect from Google OAuth, create firebase token for webApp authentication
- getSlides - Hit the Drive/Slides api and extract notes and slide content, save to Firestore
- questionDocument - Ask a question to the AI about your slides
- onPresentationWritten - When a slide is saved from getSlides to firestore, automatically create vector and store in Pinecone
CLIENT_ID= Google OAuth Client ID
CLIENT_SECRET= Google OAuth Client Secret
REDIRECT_PAGE= The webapp landing page
HANDLER= OAuth Redirect Handler function
OPENAI_KEY=OpenAI Api Key
VECTOR_MODEL= Embedding vector model (OpenAI)
PINECONE_KEY= Pinecone API key
PINECONE_DOCUMENT_INDEX= Pinecone Vector Index
PINECONE_ENVIRONMENT= Pinecone cloud environment
- firebase deploy --only functions
- Google Drive API
- Google Slides API
- IAM Service Account Credentials API
- Google Functions
- Firebase Auth
- Firestore
- Semantic Search API
- App Engine Service Account - Service Account Token Creator to create custom tokens
- OAuth 2.0 Client ID
- Configure origins and redirects from WebApp
- GetAuthenticaion (Retrieve Login) - Invocable by anonymous
- OauthRedirect (Handle Redirect) - callable by https
- GetSlides (Retrieve Slides) - Invocable by authenticated user
- May need more than base 256MB to process slides
- QuestionDocument - Invocable by authenticated user
- onPresentationWritten - Invocable on document written to firestore Presentations collection
- Users - contains user OAuth token and refresh token
- Slides - contains users slide presentation content
- Embeddings - contains presentation content embeddings