plaud-notes-to-notion 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/LICENSE +1 -1
- package/README.md +29 -12
- package/dist/card.d.ts +1 -1
- package/dist/card.js +3 -3
- package/dist/config.d.ts +2 -2
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/daemon.d.ts +1 -1
- package/dist/daemon.js +1 -1
- package/dist/format.d.ts +1 -1
- package/dist/format.js +1 -1
- package/dist/format.js.map +1 -1
- package/dist/ssn.d.ts +1 -1
- package/dist/ssn.js +1 -1
- package/package.json +6 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.2.0
|
|
4
|
+
|
|
5
|
+
- Replace personal identities and call-like fixtures with clearly synthetic examples.
|
|
6
|
+
- Add staged, full-history CI and pre-publish package privacy/secret scans.
|
|
7
|
+
- Preserve home-derived configuration, Keychain accounts and existing runtime state.
|
|
8
|
+
|
|
9
|
+
|
|
3
10
|
## 1.1.0
|
|
4
11
|
|
|
5
12
|
Participant labeling now defaults to Claude Haiku 5.5 (`claude-haiku-5-5`),
|
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Plaud Notes to Notion
|
|
2
2
|
|
|
3
3
|
Mac Mini **LaunchAgent** that replaces the two Zapier Zaps
|
|
4
|
-
(*
|
|
4
|
+
(*Alex Example / Morgan Example: Plaud → Notion: Transcript + Summary*). When Plaud finishes a
|
|
5
5
|
recording's summary, it writes two rows into that person's **Plaud Notes**
|
|
6
6
|
Notion database — one `Summary`, one `Transcript` — structured exactly like the
|
|
7
7
|
Zap's rows. Every 5 minutes it also copies **Summary** title/participant edits
|
|
@@ -16,10 +16,10 @@ No Zapier, no extra runtime dependencies (Node ≥ 20 built-ins only).
|
|
|
16
16
|
| Poll Plaud every **30 s** (deep 30-day scan every 10 min) | 1. Plaud *Transcript & Summary Ready* | Writes only once Plaud has **both** the auto summary and the transcript. Zapier took ~1–2 min. |
|
|
17
17
|
| `Recorded` = recording start, to the minute, true UTC | 2. Date/Time `+5 hours` | The Zap's +5h hid Plaud's Central-time-labelled-UTC bug and would be **1 h off after DST ends**. |
|
|
18
18
|
| **SSN redaction** (summary, transcript, title) | — (new) | Written *and* spoken digits, incl. answers in the next speaker's line. Runs before anything leaves the Mac. |
|
|
19
|
-
| **Card redaction** (summary, transcript, title) | — (new) | Credit/debit card numbers (full, or partial: "ending in", "begins with", "last four of the card", "the
|
|
19
|
+
| **Card redaction** (summary, transcript, title) | — (new) | Credit/debit card numbers (full, or partial: "ending in", "begins with", "last four of the card", "the 0000 card"), security code (CVV/CVC) and expiration date. Written or spoken; runs before SSN redaction so a card's last four is never labelled an SSN. A full number or 4-digit partial found anywhere in a recording is removed everywhere in it. |
|
|
20
20
|
| Remove `PLAUD NOTE`; pair quotes `“…”` | 3–4. Formatter Text | The Zap turned every `"` into `”`. |
|
|
21
21
|
| Strip Plaud image embeds, `---`, blank lines; split `> **Label:** text` | 5. Code (JavaScript) | Ported verbatim. |
|
|
22
|
-
| Participants via **Claude Haiku 5.5** (default) or **GPT-6 Luna, high effort**, schema-checked JSON | 6. AI by Zapier | Also sees the transcript (names often only appear there) and the database's existing Participant spellings (e.g. `
|
|
22
|
+
| Participants via **Claude Haiku 5.5** (default) or **GPT-6 Luna, high effort**, schema-checked JSON | 6. AI by Zapier | Also sees the transcript (names often only appear there) and the database's existing Participant spellings (e.g. `Example Banker - Bank`). Owner and `Speaker N` labels never listed. |
|
|
23
23
|
| Create **Summary** row (Notion markdown API) | 7. Notion | Block-for-block identical to the Zap's output. |
|
|
24
24
|
| Create **Transcript** row (one plain-text paragraph) | 8. Notion | Exact text — `*`, `_`, `#` in speech can never turn into formatting. |
|
|
25
25
|
| Summary → Transcript sync every **5 min** | Grok *Sync Plaud Transcripts to Summaries* (retired) | Pair by `Recorded` minute; skip ambiguous minutes; full 90-day reconcile daily. |
|
|
@@ -39,15 +39,15 @@ Plaud's own title; recordings still generating are re-checked every poll (up to
|
|
|
39
39
|
"syncSeconds": 300,
|
|
40
40
|
"llmModel": "claude-haiku-5-5",
|
|
41
41
|
"profiles": {
|
|
42
|
-
"
|
|
43
|
-
"
|
|
42
|
+
"example": { "enabled": true, "owner": "Alex Example", "notionDataSourceId": "<Plaud Notes data source id>", "startAfter": "<cutover ISO time>" },
|
|
43
|
+
"second-example": { "enabled": false, "owner": "Morgan Example", "notionDataSourceId": "<Morgan Example's Plaud Notes data source id>", "startAfter": "<cutover ISO time>" }
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
- `startAfter` — only recordings **uploaded** after this instant are ingested. Set it to the moment the Zap is turned off so nothing is written twice.
|
|
49
49
|
- `ingest` / `syncTranscripts` (default `true`) — switch either half off.
|
|
50
|
-
- `credentials` — use another profile's Keychain secrets (e.g. a test profile that writes to a test database with
|
|
50
|
+
- `credentials` — use another profile's Keychain secrets (e.g. a test profile that writes to a test database with Alex Example's sign-in).
|
|
51
51
|
- The daemon re-reads the file when it changes; turning a profile on needs no restart.
|
|
52
52
|
|
|
53
53
|
### LLM (participant labeling)
|
|
@@ -70,11 +70,11 @@ profile pauses (no ingest or sync) until the key is saved — run
|
|
|
70
70
|
|
|
71
71
|
```bash
|
|
72
72
|
npm install -g plaud-notes-to-notion # or build from a checkout: npm ci && npm run build
|
|
73
|
-
plaud-notes-to-notion login --profile
|
|
74
|
-
plaud-notes-to-notion set-secret notion --profile
|
|
73
|
+
plaud-notes-to-notion login --profile example # opens Plaud → sign in as that person → Authorize
|
|
74
|
+
plaud-notes-to-notion set-secret notion --profile example # Notion internal integration secret (paste, hidden)
|
|
75
75
|
plaud-notes-to-notion set-secret anthropic # Anthropic API key (shared; Haiku, the default)
|
|
76
76
|
plaud-notes-to-notion set-secret openai # OpenAI API key (shared; only if llmModel is gpt-*)
|
|
77
|
-
plaud-notes-to-notion doctor --profile
|
|
77
|
+
plaud-notes-to-notion doctor --profile example
|
|
78
78
|
sh "$(npm root -g)/plaud-notes-to-notion/examples/install-launchagent.sh"
|
|
79
79
|
```
|
|
80
80
|
|
|
@@ -87,8 +87,8 @@ profile-specific `anthropic:<profile>` / `openai:<profile>` wins over the shared
|
|
|
87
87
|
|
|
88
88
|
```bash
|
|
89
89
|
plaud-notes-to-notion status # last poll / sync / write per profile
|
|
90
|
-
plaud-notes-to-notion once --profile
|
|
91
|
-
plaud-notes-to-notion sync --profile
|
|
90
|
+
plaud-notes-to-notion once --profile example --dry-run # show what would be written, write nothing
|
|
91
|
+
plaud-notes-to-notion sync --profile example --dry-run # show Transcript fixes, change nothing
|
|
92
92
|
tail -f ~/Library/Logs/plaud-notes-to-notion.log
|
|
93
93
|
```
|
|
94
94
|
|
|
@@ -99,4 +99,21 @@ npm ci
|
|
|
99
99
|
npm test && npm run typecheck && npm run build
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
-
Tests use
|
|
102
|
+
Tests use explicitly fictional people, calls and all-zero SSNs; payment-card numbers are standard synthetic test values. Never commit tokens, real transcripts or database ids.
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
### Privacy gates
|
|
106
|
+
|
|
107
|
+
Install Gitleaks 8.30.1 and enable the staged gate once per clone:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
git config core.hooksPath .githooks
|
|
111
|
+
gitleaks git --log-opts=--all --config .gitleaks.toml --redact=100 --no-banner .
|
|
112
|
+
npm run build && npm run scan:package
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Push and pull-request CI scans full fetched history and package contents.
|
|
116
|
+
`prepublishOnly` rebuilds and scans the exact npm file list before publication.
|
|
117
|
+
Use home-derived paths and local config for real owners and destinations.
|
|
118
|
+
After a rewritten history, discard old clones and re-clone; merging old history
|
|
119
|
+
can restore removed data.
|
package/dist/card.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Runs on raw Plaud text before anything leaves the Mini, next to SSN redaction.
|
|
5
5
|
* Removes full card numbers (written or spoken, also when the transcription
|
|
6
|
-
* dropped or added a digit), partial numbers ("ending in
|
|
6
|
+
* dropped or added a digit), partial numbers ("ending in 0000", "Visa that
|
|
7
7
|
* begins with 4111", "last four of the card"), the security code (CVV / CVC)
|
|
8
8
|
* and the expiration date. Full numbers and 4-digit partials found anywhere in
|
|
9
9
|
* a recording are removed everywhere in it.
|
package/dist/card.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Runs on raw Plaud text before anything leaves the Mini, next to SSN redaction.
|
|
5
5
|
* Removes full card numbers (written or spoken, also when the transcription
|
|
6
|
-
* dropped or added a digit), partial numbers ("ending in
|
|
6
|
+
* dropped or added a digit), partial numbers ("ending in 0000", "Visa that
|
|
7
7
|
* begins with 4111", "last four of the card"), the security code (CVV / CVC)
|
|
8
8
|
* and the expiration date. Full numbers and 4-digit partials found anywhere in
|
|
9
9
|
* a recording are removed everywhere in it.
|
|
@@ -48,7 +48,7 @@ const CARD_WORD = /\b(?:card|visa|master\s?card|amex|american\s+express|discover
|
|
|
48
48
|
const PARTIAL_TRIGGER = /\b(?:end(?:s|ing|ed)?|begin(?:s|ning)?|start(?:s|ing)?)(?:\s+(?:in|with))?\b/gi;
|
|
49
49
|
/** "last four (digits) of the/your card" — the answer may land in the next utterance. */
|
|
50
50
|
const LAST_FOUR_TRIGGER = /\blast\s+(?:four|4)(?:\s+(?:digits|numbers))?(?=[^.?!\n]{0,40}\bcard\b)/gi;
|
|
51
|
-
/** A 4-digit run naming a card: "the
|
|
51
|
+
/** A 4-digit run naming a card: "the 0000 card", "my 0000 Visa". */
|
|
52
52
|
const CARD_AFTER = /^[\s`'"“”‘’)]*(?:(?:visa|master\s?card|amex|credit|debit|signature|rewards)\s+)*(?:card|visa|master\s?card|amex)\b/i;
|
|
53
53
|
const CODE_TRIGGER = /\b(?:cvv2?|cvc2?|cid|security\s+code|three[- ]digit\s+code|(?:code|digits|numbers)\s+on\s+the\s+back)\b/gi;
|
|
54
54
|
const EXPIRY_TRIGGER = /\b(?:expiration(?:\s+date)?|expiry(?:\s+date)?|exp\.?(?:\s+date)?|expires?|expir(?:ed|ing)|valid\s+(?:thru|through))(?![\w])/gi;
|
|
@@ -195,7 +195,7 @@ function scan(text) {
|
|
|
195
195
|
}
|
|
196
196
|
hits.push({ start: run.start, end: run.end, kind: "number", spread: run.digits.length === 4 && !isYearInDate(text, run) ? run.digits : undefined });
|
|
197
197
|
}
|
|
198
|
-
// "this card is the
|
|
198
|
+
// "this card is the 0000 card", "my 0000 Visa"
|
|
199
199
|
for (const run of runs) {
|
|
200
200
|
if (run.digits.length === 4 && !isYearInDate(text, run) && !isAmount(text, run) && CARD_AFTER.test(text.slice(run.end, run.end + 30))) {
|
|
201
201
|
hits.push(numberHit(run));
|
package/dist/config.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* One Plaud account → one Plaud Notes database.
|
|
2
|
+
* One Plaud account → one Plaud Notes database. Alex Example and Morgan Example are identical
|
|
3
3
|
* except for these fields; everything else (pipeline, prompt, schedule) is shared.
|
|
4
4
|
*/
|
|
5
5
|
export interface ProfileConfig {
|
|
@@ -20,7 +20,7 @@ export interface ProfileConfig {
|
|
|
20
20
|
syncTranscripts: boolean;
|
|
21
21
|
/**
|
|
22
22
|
* Keychain profile whose Plaud/Notion secrets this profile uses (default: itself).
|
|
23
|
-
* Lets a test profile share
|
|
23
|
+
* Lets a test profile share Alex Example's sign-in while writing to a test database.
|
|
24
24
|
*/
|
|
25
25
|
credentials: string;
|
|
26
26
|
}
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Product constants. No secrets. */
|
|
2
2
|
export declare const PACKAGE_NAME = "plaud-notes-to-notion";
|
|
3
|
-
export declare const PACKAGE_VERSION = "1.
|
|
3
|
+
export declare const PACKAGE_VERSION = "1.2.0";
|
|
4
4
|
/** macOS Keychain service. One service, named accounts per profile. */
|
|
5
5
|
export declare const KEYCHAIN_SERVICE = "plaud-notes-to-notion";
|
|
6
6
|
/** Plaud OAuth token-set JSON for a profile: `plaud:<profile>`. */
|
package/dist/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Product constants. No secrets. */
|
|
2
2
|
export const PACKAGE_NAME = "plaud-notes-to-notion";
|
|
3
|
-
export const PACKAGE_VERSION = "1.
|
|
3
|
+
export const PACKAGE_VERSION = "1.2.0";
|
|
4
4
|
/** macOS Keychain service. One service, named accounts per profile. */
|
|
5
5
|
export const KEYCHAIN_SERVICE = "plaud-notes-to-notion";
|
|
6
6
|
/** Plaud OAuth token-set JSON for a profile: `plaud:<profile>`. */
|
package/dist/daemon.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { SecretStore } from "./secrets.js";
|
|
|
3
3
|
/**
|
|
4
4
|
* Long-running LaunchAgent loop. Per enabled profile: ingest every pollSeconds
|
|
5
5
|
* (deep scan every 10 min), Summary→Transcript sync every syncSeconds.
|
|
6
|
-
* Re-reads config.json when it changes, so turning
|
|
6
|
+
* Re-reads config.json when it changes, so turning Morgan Example on needs no restart.
|
|
7
7
|
*/
|
|
8
8
|
export declare function runDaemon(options: {
|
|
9
9
|
store: SecretStore;
|
package/dist/daemon.js
CHANGED
|
@@ -33,7 +33,7 @@ function describe(err, credentials) {
|
|
|
33
33
|
/**
|
|
34
34
|
* Long-running LaunchAgent loop. Per enabled profile: ingest every pollSeconds
|
|
35
35
|
* (deep scan every 10 min), Summary→Transcript sync every syncSeconds.
|
|
36
|
-
* Re-reads config.json when it changes, so turning
|
|
36
|
+
* Re-reads config.json when it changes, so turning Morgan Example on needs no restart.
|
|
37
37
|
*/
|
|
38
38
|
export async function runDaemon(options) {
|
|
39
39
|
const env = options.env || process.env;
|
package/dist/format.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export declare function formatOffset(ms: number): string;
|
|
|
26
26
|
export declare function formatTranscript(segments: PlaudSegment[]): string;
|
|
27
27
|
/** Notion `Recorded`: recording start, truncated to the minute, as a UTC instant. */
|
|
28
28
|
export declare function recordedMinute(startAt: Date): string;
|
|
29
|
-
/** Meeting title: Plaud's own title minus its leading `MM-DD ` date (
|
|
29
|
+
/** Meeting title: Plaud's own title minus its leading `MM-DD ` date (Alex Example 2026-09-26). */
|
|
30
30
|
export declare function meetingTitle(plaudName: string): string;
|
|
31
31
|
/**
|
|
32
32
|
* Participants as Notion multi-select options: owner and generic diarization
|
package/dist/format.js
CHANGED
|
@@ -73,7 +73,7 @@ export function recordedMinute(startAt) {
|
|
|
73
73
|
d.setUTCSeconds(0, 0);
|
|
74
74
|
return d.toISOString();
|
|
75
75
|
}
|
|
76
|
-
/** Meeting title: Plaud's own title minus its leading `MM-DD ` date (
|
|
76
|
+
/** Meeting title: Plaud's own title minus its leading `MM-DD ` date (Alex Example 2026-09-26). */
|
|
77
77
|
export function meetingTitle(plaudName) {
|
|
78
78
|
const t = plaudName.replace(/^\d{2}-\d{2}\s+/, "").trim();
|
|
79
79
|
return t || "Untitled recording";
|
package/dist/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
|
package/dist/ssn.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Social Security number redaction for Plaud summaries and transcripts.
|
|
3
3
|
*
|
|
4
4
|
* Runs on raw Plaud text before anything leaves the Mini (OpenAI or Notion).
|
|
5
|
-
* Handles written digits ("
|
|
5
|
+
* Handles written digits ("0000", "000-00-0000") and spoken digits
|
|
6
6
|
* ("zero zero two three", "double oh two three"), including answers that land
|
|
7
7
|
* in the next speaker's utterance after "last four of your social?".
|
|
8
8
|
*/
|
package/dist/ssn.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Social Security number redaction for Plaud summaries and transcripts.
|
|
3
3
|
*
|
|
4
4
|
* Runs on raw Plaud text before anything leaves the Mini (OpenAI or Notion).
|
|
5
|
-
* Handles written digits ("
|
|
5
|
+
* Handles written digits ("0000", "000-00-0000") and spoken digits
|
|
6
6
|
* ("zero zero two three", "double oh two three"), including answers that land
|
|
7
7
|
* in the next speaker's utterance after "last four of your social?".
|
|
8
8
|
*/
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "plaud-notes-to-notion",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Mac Mini LaunchAgent: new Plaud recordings
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"description": "Mac Mini LaunchAgent: new Plaud recordings \u2192 Plaud Notes Notion database (Summary + Transcript rows), plus Summary\u2192Transcript title/participant sync. Replaces the Zapier Plaud \u2192 Notion Zaps.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cli.js",
|
|
7
7
|
"bin": {
|
|
8
8
|
"plaud-notes-to-notion": "./bin/plaud-notes-to-notion.js"
|
|
9
9
|
},
|
|
10
|
-
"author": "
|
|
10
|
+
"author": "sfls1397",
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"repository": {
|
|
13
13
|
"type": "git",
|
|
@@ -42,7 +42,9 @@
|
|
|
42
42
|
"test": "vitest run",
|
|
43
43
|
"test:watch": "vitest",
|
|
44
44
|
"typecheck": "tsc --noEmit",
|
|
45
|
-
"audit": "npm audit --omit=dev"
|
|
45
|
+
"audit": "npm audit --omit=dev",
|
|
46
|
+
"scan:package": "node scripts/scan-package.js",
|
|
47
|
+
"prepublishOnly": "npm run build && npm run scan:package"
|
|
46
48
|
},
|
|
47
49
|
"devDependencies": {
|
|
48
50
|
"@types/node": "^22.10.0",
|