Integrations
Connect PlotLens to Word, Google Docs, and Scrivener, bring your own LLM key, and wire up cloud storage for your project files.
Validate continuity inside the writing tools you already use, point PlotLens at your own LLM provider, and connect the cloud storage where your manuscripts live.
When to use this
Use this when you want PlotLens findings to surface inside Microsoft Word, Google Docs, or Scrivener instead of only on the web app. Use it when your team prefers to pay your LLM provider directly — bring your own OpenAI, Anthropic, or Google AI key. Use it when your manuscripts already live in S3, MinIO, Google Drive, OneDrive, or Dropbox and you’d rather connect that storage than re-upload everything.
Available integrations
| Tool | Status | Plan tier |
|---|---|---|
| Microsoft Word add-in | Available | Plus and above |
| Google Docs add-on | Available | Plus and above |
| Scrivener companion app | Available | Plus and above |
| OpenAI (BYOK) | Available | Plus and above |
| Anthropic (BYOK) | Available | Plus and above |
| Google AI (BYOK) | Available | Plus and above |
| Storage: S3 | Available | Plus and above |
| Storage: MinIO | Available | Plus and above |
| Storage: Google Drive | Available | Plus and above |
| Storage: OneDrive | Available | Plus and above |
| Storage: Dropbox | Available | Plus and above |

Microsoft Word
The Word add-in puts PlotLens in the ribbon. Validation runs inline against the paragraph you’re editing, and findings show as comments and content controls anchored to the text they reference.
How to install the add-in
- Open Word and go to Insert > Get Add-ins.
- Search for PlotLens in the Office Store and click Add, or sideload
manifest.template.xmlfrom your admin if your org distributes it manually. - Click the PlotLens button in the Home ribbon to open the task pane.
- Sign in with your PlotLens account when prompted. The add-in opens an OAuth window and returns to Word automatically.
- Pick the project you want this document associated with.
How to validate from inside Word
- With your manuscript open, click the PlotLens ribbon button to show the task pane.
- Click Validate now to run a check against your active canon, or leave Auto-validate on to run after you stop typing.
- Findings appear in the task pane and as comments anchored to the affected paragraph. Click a finding to jump the cursor to it.
- Resolve, dismiss, or open the finding in the PlotLens web app from the action menu.
The session lives for 24 hours and refreshes automatically while Word is open. Sign out from the task pane footer when you’re done on a shared machine.

Google Docs
The Google Docs add-on indexes your shared document, runs validation as your team writes, and posts findings as native Google Docs comments — so co-writers without a PlotLens account can read them in context.
How to install the add-on
- Open any Google Doc and go to Extensions > Add-ons > Get add-ons.
- Search for PlotLens in the Google Workspace Marketplace and click Install.
- Authorize the requested Google Drive scope. PlotLens uses it to read the documents you point it at — nothing else.
- Reload the document. PlotLens now appears under Extensions.
How to validate from inside Google Docs
- Open Extensions > PlotLens > Open sidebar.
- Sign in with your PlotLens account in the sidebar.
- Pick the project this document belongs to. The add-on indexes the current text and watches for edits.
- Click Validate in the sidebar, or leave the live toggle on to validate as the document changes.
- Findings post as Google Docs comments anchored to the paragraph in question. Reply, resolve, or reopen them like any other Docs comment.
The add-on stores a long-lived refresh token so background sync survives tab reloads. To disconnect, open the sidebar footer and click Sign out, or remove the add-on from Extensions > Manage add-ons.

Scrivener
PlotLens connects to Scrivener through a desktop companion app. The companion watches your .scriv project folder, picks up edits when you save, and runs validation in the background.
How to connect the desktop companion app
- Download the PlotLens companion app for macOS or Windows from your account page.
- Install and launch it. Sign in with your PlotLens account.
- Click Add Scrivener project and select your
.scrivfolder. - Pick the PlotLens project this Scrivener project should map to.
- Leave the companion running in the background. The status indicator turns green when it’s watching for changes.
How validation runs
- Edit and save in Scrivener as you normally would.
- The companion detects changes to the
.scrivbundle and queues an async validation job for the changed text. - Findings appear in the companion window. Click any finding to open it in the PlotLens web app for full context.
- The session heartbeats every six hours, so validation keeps working through long writing sessions without re-auth.
To stop watching a project, right-click it in the companion sidebar and choose Disconnect, or quit the companion entirely.

LLM provider configuration (BYOK)
Bring Your Own Key (BYOK) routes PlotLens validation and entity extraction through an LLM provider you pay directly. You keep cost control and audit visibility on your provider’s dashboard; PlotLens just orchestrates the calls.
Supported providers
| Provider | Models | Key prefix |
|---|---|---|
| OpenAI | gpt-4o, gpt-4o-mini, gpt-4-turbo | sk- |
| Anthropic | claude-3.5-sonnet, claude-3-opus, claude-3-haiku | sk-ant- |
| Google AI | gemini-1.5-pro, gemini-1.5-flash | AIza |
Keys are encrypted at rest. Once saved, the UI only shows the first four and last four characters — full keys are never read back to the browser.
How to add an API key
- Open Settings > Integrations > LLM.
- Click Add provider and choose OpenAI, Anthropic, or Google AI.
- Paste your API key. PlotLens checks the prefix and minimum length immediately.
- Pick the model you want to default to.
- Adjust Temperature (0.0–2.0) and Max tokens (1–128,000) if you need to.
- Click Test to confirm the key parses, then Save configuration.
The key validation pass is a format check, not a network call — actual provider authentication happens the first time PlotLens makes a request, so a wrong-but-well-formed key surfaces as a session error rather than at save time.

Project-level overrides
Team-level keys cover every project by default. To use a different provider or model for one project — say, Claude for a thriller series and GPT-4o for a sci-fi standalone — open that project’s Settings > LLM tab and set an override there. Overrides resolve per request, so you can change them without touching the team default.
Storage provider configuration
Connect external storage so PlotLens can read manuscripts where they already live. Once connected, the storage provider appears as a source when you import documents.
Supported providers
| Provider | Auth | Notes |
|---|---|---|
| S3 | Access key + secret + region | Endpoint optional for AWS, required for S3-compatible vendors |
| MinIO | Access key + secret + endpoint | S3-compatible; endpoint must resolve to a public address |
| Google Drive | OAuth2 (drive scope) | Authorize the Google account with access |
| OneDrive | OAuth2 (files scope) | Authorize the Microsoft account with access |
| Dropbox | OAuth2 access token | Authorize the Dropbox account with access |
How to connect
- Open Settings > Integrations > Storage.
- Click Add provider and choose your provider type.
- For S3 or MinIO, enter the bucket, access key, secret key, region, and endpoint (MinIO requires this; S3 only if you’re hitting a non-AWS endpoint). For Google Drive, OneDrive, or Dropbox, click Authorize and complete the OAuth flow in the popup.
- For S3 and MinIO, click Test connection. PlotLens probes the endpoint, validates credentials, and reports latency. The test rejects private and loopback addresses to prevent server-side request forgery.
- Click Save. The provider appears in your list with credentials masked.
To re-test a saved provider, edit, or remove it, use the row actions on the storage list. Removing a provider doesn’t delete documents already imported through it.

Plan availability
Integrations are a Plus-and-above feature. Free and Lite plans use the PlotLens-managed default LLM and PlotLens-hosted storage; they cannot install the Word add-in, the Google Docs add-on, the Scrivener companion, or configure BYOK or external storage.
| Capability | Plus | Pro | Small Team | Studio | Production | Enterprise |
|---|---|---|---|---|---|---|
| Word, Google Docs, Scrivener | Yes | Yes | Yes | Yes | Yes | Yes |
| BYOK LLM | Yes | Yes | Yes | Yes | Yes | Yes |
| External storage providers | Yes | Yes | Yes | Yes | Yes | Yes |
| Project-level LLM override | Yes | Yes | Yes | Yes | Yes | Yes |
See Billing & plans for the full comparison.
Limits & edge cases
- Session expired. Integration sessions live 24 hours and heartbeat automatically while the client is open. If a session goes more than 24 hours without a heartbeat, the next request returns 401 Unauthorized — sign in again from the add-in, sidebar, or companion app to start a new session.
- LLM key fails format check. The Test button rejects keys that don’t match the expected prefix or minimum length with a message like “OpenAI keys must start with ‘sk-’”. Re-paste the key and confirm there’s no leading or trailing whitespace.
- LLM key is well-formed but invalid. Format validation passes locally; the real authentication happens on the first provider call. If the key is wrong or revoked, the next validation run fails with a provider auth error. Update the key in Settings > Integrations > LLM.
- Storage endpoint rejected. S3 and MinIO endpoints are checked against a private-IP block list (loopback, RFC1918, link-local). If you need to test against a private network, expose the endpoint publicly or run validation from a host with access.
- S3 access denied. Test connection returns “Access denied” with the round-trip latency. Check that the access key has
s3:GetObjectands3:ListBucketpermissions on the bucket. - Bucket not found. Test connection returns 404. Verify the bucket name and region match exactly — region mismatches commonly produce this error.
- Document too large for the integration. Each session enforces a
max_content_lengthset by your plan. Validation requests larger than the limit are rejected; split the document or run validation on a single chapter at a time. - Rate limit exceeded. Sync validation enforces an
rpmlimit per session. If you hit it, the next call returns a rate-limit error — wait, then retry. The Word and Docs clients back off automatically. - Google Docs comment quota. Google limits comments per document. Long manuscripts with hundreds of findings may stop adding new comments — resolve older findings to free up the quota, or run validation in smaller passes.
- Word content control limit. Word supports roughly 5,000 content controls per document. When PlotLens hits that ceiling, the oldest annotations are dropped to make room for new ones.
- Subscription downgrade mid-session. If your team drops below Plus, active sessions finish their 24-hour window so you don’t lose in-flight work, but new session creation is blocked until you upgrade.
Common pitfalls
- Mixing personal and team LLM keys. A team-level key applies to every project unless a project sets its own override. Set project overrides explicitly when one manuscript should use a different provider.
- Pasting a key with whitespace. Copy from a password manager rather than a chat or doc — invisible whitespace is the most common cause of “key failed format check.”
- Authorizing the wrong Google account. Google Docs and Google Drive authorizations are per-account. Make sure the account you authorize actually has access to the documents or files you intend to use.
- Pointing the Scrivener companion at a closed
.scrivbundle. Scrivener writes to the bundle on save, not on every keystroke. If validation seems stale, save in Scrivener (Cmd/Ctrl-S) and the companion will pick the change up. - Sideloading an old Word manifest. If you sideloaded the manifest manually, update it when prompted — old manifests still load but lose access to newer task-pane features.
- Treating BYOK as free. Bringing your own key shifts LLM cost to your provider account, not to zero. Set spending limits on the provider side if you’re cost-sensitive.