尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Lenz Fact-Checking for Google Docs: check the factual claims and citations in a Doc against independent sources, from a sidebar. Apps Script add-on.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Lenz checks factual claims against evidence from multiple independent sources. This repository is the source of its Google Docs add-on: an Apps Script sidebar that sends the open tab to Lenz and shows the findings next to the words they are about.
The add-on will be listed on the Google Workspace Marketplace; the listing is coming. Until then you can build and deploy your own copy (below). Either way you need a Lenz account (create one); checks use credits from it.
Privacy. The add-on asks for access to one Doc at a time: the first time you check a Doc, Google's file picker asks you to allow Lenz to read that Doc, and nothing is sent before you do. Lenz receives the tab's text to check it and keeps the check in your Lenz account; deleting your account deletes it. Details: lenz.io/privacy#google-docs.
Docs REST API ──► serialize.js ──► review text + map ──► api.js ──► POST /api/v1/review
(active tab) (the Doc as text, every piece (idempotent submit, GET /api/v1/reviews/{id}
mapped to its Doc index) polling, errors) │
▼
Docs batchUpdate ◄── Code.js ◄── place.js ◄──────────── view.js ◄──────── the review body
(Apply, guarded by (glue) (finds each finding's (sidebar model:
requiredRevisionId) words again, even order, coverage)
after co-authors typed)
documents.currentonly (the open Doc, for the
selection) and drive.file (files you allow it, one by one), not for all your Docs. Until you
pick the Doc in Google's file picker, the Docs REST API answers "not found" and the add-on sends
nothing to Lenz. Google keeps the permission, so each Doc is asked about once.serialize.js keeps an interval map between the two, including the
characters it adds itself (paragraph breaks, [words](url) for links).place.js finds each passage again
by its words and their surroundings, and refuses when the passage was not unique in the checked
text or is not unique now, so an edit never lands on another copy of the same sentence.documents.batchUpdate (insert the new words after the old ones, then delete the
old ones, so the replacement keeps their formatting) with writeControl.requiredRevisionId: any
change in between makes Google refuse the write, and the add-on re-reads and retries once.Idempotency-Key and exact request body are
stored before the request goes out; a lost reply is replayed byte for byte and returns the same
review. Check this Doc on an unchanged Doc shows the last results again.CONTRACT.md describes the modules and their interfaces. The pure modules use no
Apps Script globals, so the same files run in Node for tests and in Apps Script unchanged.
Requirements: Node 20+ and clasp 3.x, a Google Cloud project
and a Lenz account.
npm test # all suites, no network
cp config/flavours/internal.example.json config/flavours/internal.json # then fill in your own values
bash scripts/build.sh internal # dist/internal
bash scripts/clasp-create.sh # once: create the Apps Script project
bash scripts/deploy.sh # test, build, push, version, deploy
docs/deploy.md covers the two builds (internal for your own copy and testing,
public for Lenz's Marketplace listing), the Google Cloud setup, signing clasp in, test deployments
and a listing.
src/ the Apps Script code (scripts/build.sh assembles what clasp pushes)
config/ per-build settings and the shared manifest base
test/ node --test suites; fakes for Google Docs, Apps Script and the Lenz API
scripts/ build, clasp create/deploy, live smoke, spike and trial reports
docs/ deployment, live smoke, trial log and the store listing
Questions and problems: lenz.io/contact. Vulnerabilities: see
SECURITY.md.
MIT, Copyright Lenz IO.