substack-article-mcp 0.5.1 → 0.7.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/README.md +84 -56
- package/dist/auth.d.ts +25 -2
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +78 -75
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts +45 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +247 -38
- package/dist/client.js.map +1 -1
- package/dist/index.js +94 -22
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +209 -30
- package/dist/server.js.map +1 -1
- package/dist/setup.d.ts +13 -9
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +27 -29
- package/dist/setup.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,107 +1,135 @@
|
|
|
1
1
|
# substack-article-mcp
|
|
2
2
|
|
|
3
|
-
MCP server for Substack —
|
|
3
|
+
MCP server for Substack — read articles, comments, feed, and subscriptions from Cursor, Claude Desktop, Claude Code, or any MCP client. Public content works without authentication; log in for premium/paywalled articles and personalized features.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
## Quick Start
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Choose your AI client:
|
|
10
|
+
|
|
11
|
+
### Cursor
|
|
12
|
+
|
|
13
|
+
One command — logs in and configures Cursor automatically:
|
|
10
14
|
|
|
11
15
|
```bash
|
|
12
|
-
npx -y substack-article-mcp
|
|
16
|
+
npx -y substack-article-mcp install --cursor
|
|
13
17
|
```
|
|
14
18
|
|
|
15
|
-
|
|
19
|
+
Restart Cursor after installation.
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
### Claude Code
|
|
18
22
|
|
|
19
|
-
|
|
23
|
+
One command — logs in and adds the MCP globally:
|
|
20
24
|
|
|
21
25
|
```bash
|
|
22
|
-
npx -y substack-article-mcp
|
|
26
|
+
npx -y substack-article-mcp install --claude-code
|
|
23
27
|
```
|
|
24
28
|
|
|
25
|
-
|
|
29
|
+
### Claude Desktop
|
|
26
30
|
|
|
27
|
-
|
|
31
|
+
Download the `.mcpb` extension from the [Releases page](https://github.com/jenny-ouyang/substack-article-mcp/releases) and double-click to install.
|
|
28
32
|
|
|
29
|
-
**
|
|
33
|
+
**Optional:** After installing, go to Extensions > Substack Articles > Settings and paste your Substack cookie to unlock paid articles, subscriptions, and your feed. Leave it empty for public-only access.
|
|
30
34
|
|
|
31
|
-
|
|
32
|
-
{
|
|
33
|
-
"mcpServers": {
|
|
34
|
-
"substack": {
|
|
35
|
-
"command": "npx",
|
|
36
|
-
"args": ["-y", "substack-article-mcp"]
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
```
|
|
35
|
+
### Use it
|
|
41
36
|
|
|
42
|
-
|
|
37
|
+
Ask from chat — the app starts the server automatically:
|
|
43
38
|
|
|
44
|
-
|
|
39
|
+
- "List recent articles from platformer" *(public, no auth needed)*
|
|
40
|
+
- "Get the full content of article 184929446" *(works with numeric IDs)*
|
|
41
|
+
- "Show me the comments on this article"
|
|
42
|
+
- "Search platformer articles for 'antitrust'"
|
|
43
|
+
- "What newsletters do I subscribe to?" *(requires auth)*
|
|
44
|
+
- "Show me my reader feed" *(requires auth)*
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
claude mcp add substack -- npx -y substack-article-mcp
|
|
48
|
-
```
|
|
46
|
+
---
|
|
49
47
|
|
|
50
|
-
|
|
48
|
+
## Authentication
|
|
51
49
|
|
|
52
|
-
|
|
50
|
+
**Authentication is optional.** Public tools (`list_articles`, `get_article`, `search_articles`, `get_comments`) work without any credentials as long as you specify a subdomain.
|
|
53
51
|
|
|
54
|
-
|
|
52
|
+
Log in to unlock:
|
|
53
|
+
- Full paid/premium article content
|
|
54
|
+
- `list_subscriptions` — see all newsletters you follow
|
|
55
|
+
- `get_feed` — your personalized reader feed
|
|
56
|
+
- `get_inbox` — chronological inbox from all subscriptions
|
|
57
|
+
- Auto-detected default subdomain (so you don't need to specify one)
|
|
58
|
+
|
|
59
|
+
### How auth works
|
|
55
60
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
+
The server checks for credentials in this priority order:
|
|
62
|
+
|
|
63
|
+
1. **`SUBSTACK_COOKIE` environment variable** — used by Claude Desktop's `.mcpb` extension (set automatically from the optional cookie field in settings)
|
|
64
|
+
2. **`~/.substack-article-mcp/auth.json`** — saved by the `login` or `install` command
|
|
65
|
+
3. **No auth** — public content only
|
|
66
|
+
|
|
67
|
+
### Refreshing credentials
|
|
68
|
+
|
|
69
|
+
Substack cookies expire every few weeks. When tools start returning auth errors:
|
|
70
|
+
|
|
71
|
+
- **Cursor / Claude Code:** Run `npx -y substack-article-mcp login` in your terminal
|
|
72
|
+
- **Claude Desktop:** Go to Extensions > Substack Articles > Settings and paste a fresh cookie
|
|
73
|
+
|
|
74
|
+
### Getting your cookie manually
|
|
75
|
+
|
|
76
|
+
1. Open substack.com in Chrome and log in
|
|
77
|
+
2. DevTools (F12) → Application → Cookies → substack.com
|
|
78
|
+
3. Copy the value of `substack.sid` (and `substack.lli` for paid articles)
|
|
79
|
+
4. Use as: `substack.sid=YOUR_VALUE; substack.lli=YOUR_LLI_VALUE`
|
|
61
80
|
|
|
62
81
|
---
|
|
63
82
|
|
|
64
|
-
## CLI
|
|
83
|
+
## CLI Commands
|
|
65
84
|
|
|
66
|
-
| Command |
|
|
85
|
+
| Command | Description |
|
|
67
86
|
|---------|-------------|
|
|
68
|
-
| `npx -y substack-article-mcp
|
|
69
|
-
| `npx -y substack-article-mcp
|
|
70
|
-
| `npx -y substack-article-mcp login
|
|
71
|
-
| `npx -y substack-article-mcp --
|
|
87
|
+
| `npx -y substack-article-mcp install --cursor` | Log in + add MCP to Cursor |
|
|
88
|
+
| `npx -y substack-article-mcp install --claude-code` | Log in + add MCP to Claude Code |
|
|
89
|
+
| `npx -y substack-article-mcp login` | Refresh credentials (Chrome login flow) |
|
|
90
|
+
| `npx -y substack-article-mcp login --manual '<cookie>'` | Paste cookies directly |
|
|
91
|
+
| `npx -y substack-article-mcp login --check` | Check auth status and cookie age |
|
|
92
|
+
| `npx -y substack-article-mcp --help` | Show help |
|
|
93
|
+
| `npx -y substack-article-mcp --version` | Show version |
|
|
72
94
|
|
|
73
|
-
> **Do not** run `npx -y substack-article-mcp` with no arguments in your terminal. That starts the MCP stdio server and your terminal will
|
|
95
|
+
> **Do not** run `npx -y substack-article-mcp` with no arguments in your terminal. That starts the MCP stdio server and your terminal will appear stuck. Your AI client starts it automatically.
|
|
74
96
|
|
|
75
97
|
---
|
|
76
98
|
|
|
77
|
-
## MCP
|
|
99
|
+
## MCP Tools
|
|
78
100
|
|
|
79
|
-
| Tool | Description |
|
|
80
|
-
|
|
81
|
-
| `substack_auth_status` | Check
|
|
82
|
-
| `list_articles` | List published articles
|
|
83
|
-
| `get_article` | Full article as markdown
|
|
84
|
-
| `search_articles` | Search
|
|
85
|
-
| `get_comments` | Full comment tree
|
|
101
|
+
| Tool | Auth Required | Description |
|
|
102
|
+
|------|:---:|-------------|
|
|
103
|
+
| `substack_auth_status` | No | Check auth status, cookie age, and get refresh guidance |
|
|
104
|
+
| `list_articles` | No* | List published articles with metadata and engagement stats |
|
|
105
|
+
| `get_article` | No* | Full article as markdown. Accepts slug or numeric post ID |
|
|
106
|
+
| `search_articles` | No* | Search articles by keyword |
|
|
107
|
+
| `get_comments` | No* | Full comment tree with replies and reactions |
|
|
108
|
+
| `list_subscriptions` | Yes | All newsletters you subscribe to (paid, comped, free) |
|
|
109
|
+
| `get_feed` | Yes | Personalized reader feed from subscribed newsletters |
|
|
110
|
+
| `get_inbox` | Yes | Chronological inbox with pagination |
|
|
86
111
|
|
|
87
|
-
|
|
112
|
+
*\* Requires a `subdomain` parameter if not authenticated. Auth is needed for paid/premium content.*
|
|
88
113
|
|
|
89
|
-
|
|
114
|
+
All content tools accept an optional `subdomain` parameter to read any newsletter (e.g., `subdomain: "platformer"`).
|
|
90
115
|
|
|
91
|
-
|
|
116
|
+
`get_article` and `get_comments` also accept numeric post IDs (e.g., `184929446`). When using an ID, the publication is auto-detected.
|
|
117
|
+
|
|
118
|
+
---
|
|
92
119
|
|
|
93
|
-
|
|
94
|
-
2. The tool saves `substack.sid`, `substack.lli` (for paid content), and your subdomain to `~/.substack-article-mcp/auth.json`.
|
|
95
|
-
3. The MCP server reads that file and sends cookies to Substack's API. No environment variables needed.
|
|
120
|
+
## Privacy & Security
|
|
96
121
|
|
|
97
|
-
|
|
122
|
+
- The server runs **entirely on your local machine** as a subprocess of your AI client
|
|
123
|
+
- No cloud hosting, no intermediary servers
|
|
124
|
+
- Your credentials never leave your computer
|
|
125
|
+
- The `login` command uses a dedicated Chrome profile in `~/.substack-article-mcp/chrome-profile/` — completely separate from your regular Chrome
|
|
98
126
|
|
|
99
127
|
---
|
|
100
128
|
|
|
101
129
|
## Requirements
|
|
102
130
|
|
|
103
131
|
- **Node.js** 18+
|
|
104
|
-
- **Google Chrome** (for the `login`
|
|
132
|
+
- **Google Chrome** (for the `login` / `install` commands only — not needed for Claude Desktop)
|
|
105
133
|
|
|
106
134
|
## Disclaimer
|
|
107
135
|
|
package/dist/auth.d.ts
CHANGED
|
@@ -2,18 +2,41 @@ interface StoredAuth {
|
|
|
2
2
|
substackSid: string;
|
|
3
3
|
extractedAt: string;
|
|
4
4
|
subdomain?: string;
|
|
5
|
-
/** Real JWT for paid/subscriber context; if missing, we send "substack.lli=1" which can yield truncated paid content */
|
|
6
5
|
substackLli?: string;
|
|
7
6
|
}
|
|
8
7
|
export declare function getAuthDir(): string;
|
|
8
|
+
export declare function getAuthFilePath(): string;
|
|
9
|
+
/**
|
|
10
|
+
* Parse a cookie string (env var or manual input) into sid and optional lli.
|
|
11
|
+
* Accepts formats:
|
|
12
|
+
* "substack.sid=VALUE; substack.lli=VALUE"
|
|
13
|
+
* "s%3A..." (raw sid value)
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseCookieInput(input: string): {
|
|
16
|
+
sid: string;
|
|
17
|
+
lli?: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Load auth from env var first, then auth.json file.
|
|
21
|
+
* Priority: SUBSTACK_COOKIE env var > auth.json
|
|
22
|
+
*/
|
|
9
23
|
export declare function loadAuth(): StoredAuth | null;
|
|
10
24
|
export declare function saveAuth(sid: string, subdomain?: string, lli?: string): void;
|
|
11
|
-
|
|
25
|
+
/** Returns true if any auth source is available. */
|
|
26
|
+
export declare function isAuthenticated(): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Build cookie headers for Substack API requests.
|
|
29
|
+
* Returns null if no auth is available (instead of throwing).
|
|
30
|
+
*/
|
|
31
|
+
export declare function getCookieHeaders(): Record<string, string> | null;
|
|
32
|
+
/** Auth guidance message tailored to the user's context. */
|
|
33
|
+
export declare function getAuthGuidance(): string;
|
|
12
34
|
export declare function runLogin(): Promise<void>;
|
|
13
35
|
export declare function runManualLogin(cookieArg: string): Promise<void>;
|
|
14
36
|
export declare function validateStoredAuth(): Promise<boolean>;
|
|
15
37
|
export declare function checkAuthStatus(): Promise<{
|
|
16
38
|
authenticated: boolean;
|
|
39
|
+
authSource?: string;
|
|
17
40
|
cookieAge?: string;
|
|
18
41
|
subdomain?: string;
|
|
19
42
|
}>;
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAWA,UAAU,UAAU;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,UAAU,IAAI,MAAM,CAKnC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAiB7E;AAED;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,UAAU,GAAG,IAAI,CAuB5C;AAED,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,EAClB,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CASN;AAED,oDAAoD;AACpD,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAYhE;AAED,4DAA4D;AAC5D,wBAAgB,eAAe,IAAI,MAAM,CAKxC;AAwCD,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CA0F9C;AAmHD,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBrE;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAqB3D;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAuBD"}
|
package/dist/auth.js
CHANGED
|
@@ -4,13 +4,61 @@ import { join } from "node:path";
|
|
|
4
4
|
const AUTH_DIR = join(homedir(), ".substack-article-mcp");
|
|
5
5
|
const AUTH_FILE = join(AUTH_DIR, "auth.json");
|
|
6
6
|
const CHROME_PROFILE_DIR = join(AUTH_DIR, "chrome-profile");
|
|
7
|
+
const USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36";
|
|
7
8
|
export function getAuthDir() {
|
|
8
9
|
if (!existsSync(AUTH_DIR)) {
|
|
9
10
|
mkdirSync(AUTH_DIR, { recursive: true });
|
|
10
11
|
}
|
|
11
12
|
return AUTH_DIR;
|
|
12
13
|
}
|
|
14
|
+
export function getAuthFilePath() {
|
|
15
|
+
return AUTH_FILE;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Parse a cookie string (env var or manual input) into sid and optional lli.
|
|
19
|
+
* Accepts formats:
|
|
20
|
+
* "substack.sid=VALUE; substack.lli=VALUE"
|
|
21
|
+
* "s%3A..." (raw sid value)
|
|
22
|
+
*/
|
|
23
|
+
export function parseCookieInput(input) {
|
|
24
|
+
const trimmed = input.trim();
|
|
25
|
+
if (trimmed.includes("=") && (trimmed.includes(";") || trimmed.includes("substack."))) {
|
|
26
|
+
const parts = trimmed.split(";").map((p) => p.trim());
|
|
27
|
+
let sid = "";
|
|
28
|
+
let lli;
|
|
29
|
+
for (const part of parts) {
|
|
30
|
+
const eq = part.indexOf("=");
|
|
31
|
+
if (eq === -1)
|
|
32
|
+
continue;
|
|
33
|
+
const name = part.slice(0, eq).trim();
|
|
34
|
+
const value = part.slice(eq + 1).trim();
|
|
35
|
+
if (name === "substack.sid")
|
|
36
|
+
sid = value;
|
|
37
|
+
if (name === "substack.lli" && value.length > 10)
|
|
38
|
+
lli = value;
|
|
39
|
+
}
|
|
40
|
+
if (sid)
|
|
41
|
+
return lli ? { sid, lli } : { sid };
|
|
42
|
+
}
|
|
43
|
+
return { sid: trimmed };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Load auth from env var first, then auth.json file.
|
|
47
|
+
* Priority: SUBSTACK_COOKIE env var > auth.json
|
|
48
|
+
*/
|
|
13
49
|
export function loadAuth() {
|
|
50
|
+
const envCookie = process.env["SUBSTACK_COOKIE"];
|
|
51
|
+
if (envCookie && envCookie.trim().length > 0) {
|
|
52
|
+
const { sid, lli } = parseCookieInput(envCookie);
|
|
53
|
+
if (sid && sid.length > 5) {
|
|
54
|
+
return {
|
|
55
|
+
substackSid: sid,
|
|
56
|
+
extractedAt: new Date().toISOString(),
|
|
57
|
+
subdomain: process.env["SUBSTACK_SUBDOMAIN"],
|
|
58
|
+
...(lli ? { substackLli: lli } : {}),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
14
62
|
try {
|
|
15
63
|
if (!existsSync(AUTH_FILE))
|
|
16
64
|
return null;
|
|
@@ -34,19 +82,33 @@ export function saveAuth(sid, subdomain, lli) {
|
|
|
34
82
|
};
|
|
35
83
|
writeFileSync(AUTH_FILE, JSON.stringify(data, null, 2), "utf-8");
|
|
36
84
|
}
|
|
85
|
+
/** Returns true if any auth source is available. */
|
|
86
|
+
export function isAuthenticated() {
|
|
87
|
+
return loadAuth() !== null;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Build cookie headers for Substack API requests.
|
|
91
|
+
* Returns null if no auth is available (instead of throwing).
|
|
92
|
+
*/
|
|
37
93
|
export function getCookieHeaders() {
|
|
38
94
|
const auth = loadAuth();
|
|
39
|
-
if (!auth)
|
|
40
|
-
|
|
41
|
-
}
|
|
95
|
+
if (!auth)
|
|
96
|
+
return null;
|
|
42
97
|
const lli = auth.substackLli && auth.substackLli.length > 10
|
|
43
98
|
? auth.substackLli
|
|
44
99
|
: "1";
|
|
45
100
|
return {
|
|
46
101
|
Cookie: `substack.sid=${auth.substackSid}; substack.lli=${lli}`,
|
|
47
|
-
"User-Agent":
|
|
102
|
+
"User-Agent": USER_AGENT,
|
|
48
103
|
};
|
|
49
104
|
}
|
|
105
|
+
/** Auth guidance message tailored to the user's context. */
|
|
106
|
+
export function getAuthGuidance() {
|
|
107
|
+
if (process.env["SUBSTACK_COOKIE"] !== undefined) {
|
|
108
|
+
return "Your Substack cookie has expired or is invalid. Update it in your Claude Desktop extension settings (Extensions > Substack Articles).";
|
|
109
|
+
}
|
|
110
|
+
return 'Not authenticated. Run "npx -y substack-article-mcp login" in your terminal to connect your Substack account.';
|
|
111
|
+
}
|
|
50
112
|
function findChrome() {
|
|
51
113
|
const { platform } = process;
|
|
52
114
|
const candidates = [];
|
|
@@ -73,7 +135,7 @@ export async function runLogin() {
|
|
|
73
135
|
if (!chromePath) {
|
|
74
136
|
console.error("Could not find Chrome/Chromium on your system.");
|
|
75
137
|
console.error("Install Google Chrome and try again.");
|
|
76
|
-
console.error(
|
|
138
|
+
console.error('\nAlternative: run "substack-article-mcp login --manual" to paste your cookie directly.');
|
|
77
139
|
process.exit(1);
|
|
78
140
|
}
|
|
79
141
|
console.log("Opening a Chrome window for Substack login...");
|
|
@@ -93,8 +155,6 @@ export async function runLogin() {
|
|
|
93
155
|
});
|
|
94
156
|
const pages = await browser.pages();
|
|
95
157
|
const page = pages[0] || (await browser.newPage());
|
|
96
|
-
// Clear any stale Substack cookies from a previous login session
|
|
97
|
-
// so we don't accidentally grab an old cookie and close immediately.
|
|
98
158
|
try {
|
|
99
159
|
const client = await page.createCDPSession();
|
|
100
160
|
const existing = (await client.send("Network.getAllCookies"));
|
|
@@ -107,7 +167,7 @@ export async function runLogin() {
|
|
|
107
167
|
await client.detach();
|
|
108
168
|
}
|
|
109
169
|
catch {
|
|
110
|
-
// Non-critical
|
|
170
|
+
// Non-critical
|
|
111
171
|
}
|
|
112
172
|
await page.goto("https://substack.com/sign-in", {
|
|
113
173
|
waitUntil: "networkidle2",
|
|
@@ -127,7 +187,6 @@ export async function runLogin() {
|
|
|
127
187
|
process.exit(1);
|
|
128
188
|
}
|
|
129
189
|
console.log("Login detected! Extracting account info...");
|
|
130
|
-
// Try to detect the user's own publication subdomain (best-effort, not required)
|
|
131
190
|
let subdomain = await detectSubdomainFromPage(page);
|
|
132
191
|
await browser.close();
|
|
133
192
|
if (!subdomain) {
|
|
@@ -141,13 +200,10 @@ export async function runLogin() {
|
|
|
141
200
|
}
|
|
142
201
|
if (subdomain) {
|
|
143
202
|
console.log(` Default newsletter: ${subdomain}.substack.com`);
|
|
144
|
-
console.log(" (You can also read articles from any other Substack by specifying a subdomain.)");
|
|
145
203
|
}
|
|
146
204
|
else {
|
|
147
205
|
console.log(" No default newsletter detected — specify a subdomain when listing or reading articles.");
|
|
148
206
|
}
|
|
149
|
-
console.log("\nYou can now use the Substack Article MCP in Cursor, Claude Code, or Claude Desktop.");
|
|
150
|
-
await offerToAddMcp();
|
|
151
207
|
}
|
|
152
208
|
async function detectSubdomainFromPage(page) {
|
|
153
209
|
const urlsToTry = [
|
|
@@ -176,7 +232,7 @@ async function detectSubdomainFromPage(page) {
|
|
|
176
232
|
return match[1];
|
|
177
233
|
}
|
|
178
234
|
catch {
|
|
179
|
-
// continue
|
|
235
|
+
// continue
|
|
180
236
|
}
|
|
181
237
|
}
|
|
182
238
|
return null;
|
|
@@ -184,17 +240,13 @@ async function detectSubdomainFromPage(page) {
|
|
|
184
240
|
function getCookieHeadersForSid(sid) {
|
|
185
241
|
return {
|
|
186
242
|
Cookie: `substack.sid=${sid}; substack.lli=1`,
|
|
187
|
-
"User-Agent":
|
|
243
|
+
"User-Agent": USER_AGENT,
|
|
188
244
|
Accept: "application/json",
|
|
189
245
|
};
|
|
190
246
|
}
|
|
191
|
-
/** Try Substack session/dashboard APIs with the cookie to get publication subdomain. */
|
|
192
247
|
async function detectSubdomainFromApi(sid) {
|
|
193
248
|
const headers = getCookieHeadersForSid(sid);
|
|
194
|
-
const bases = [
|
|
195
|
-
"https://substack.com/api/v1",
|
|
196
|
-
"https://substack.com/api",
|
|
197
|
-
];
|
|
249
|
+
const bases = ["https://substack.com/api/v1", "https://substack.com/api"];
|
|
198
250
|
const paths = ["/me", "/user", "/session", "/dashboard", "/user/me"];
|
|
199
251
|
for (const base of bases) {
|
|
200
252
|
for (const path of paths) {
|
|
@@ -227,35 +279,6 @@ async function detectSubdomainFromApi(sid) {
|
|
|
227
279
|
}
|
|
228
280
|
return null;
|
|
229
281
|
}
|
|
230
|
-
async function offerToAddMcp() {
|
|
231
|
-
if (!process.stdin.isTTY)
|
|
232
|
-
return;
|
|
233
|
-
const readline = await import("node:readline");
|
|
234
|
-
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
235
|
-
const answer = await new Promise((resolve) => {
|
|
236
|
-
rl.question("\nAdd MCP to Cursor now? (y/n): ", (a) => {
|
|
237
|
-
rl.close();
|
|
238
|
-
resolve((a || "").trim().toLowerCase());
|
|
239
|
-
});
|
|
240
|
-
});
|
|
241
|
-
if (answer !== "y" && answer !== "yes")
|
|
242
|
-
return;
|
|
243
|
-
try {
|
|
244
|
-
const { addToConfig } = await import("./setup.js");
|
|
245
|
-
const { path, updated } = addToConfig("cursor");
|
|
246
|
-
if (updated) {
|
|
247
|
-
console.log(` Added to ${path}`);
|
|
248
|
-
console.log(" Restart Cursor to use the MCP.");
|
|
249
|
-
}
|
|
250
|
-
else {
|
|
251
|
-
console.log(` Already in ${path}`);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
catch (err) {
|
|
255
|
-
console.error(" Could not add to Cursor:", err instanceof Error ? err.message : String(err));
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
/** Returns sid and lli only after user has left the sign-in page (avoids grabbing a stale cookie from the same profile). */
|
|
259
282
|
async function waitForSubstackCookies(page, timeoutMs) {
|
|
260
283
|
const start = Date.now();
|
|
261
284
|
while (Date.now() - start < timeoutMs) {
|
|
@@ -274,35 +297,12 @@ async function waitForSubstackCookies(page, timeoutMs) {
|
|
|
274
297
|
}
|
|
275
298
|
}
|
|
276
299
|
catch {
|
|
277
|
-
//
|
|
300
|
+
// retry
|
|
278
301
|
}
|
|
279
302
|
await new Promise((r) => setTimeout(r, 2000));
|
|
280
303
|
}
|
|
281
304
|
return null;
|
|
282
305
|
}
|
|
283
|
-
/** Parse Cookie header or single value into sid and optional lli. */
|
|
284
|
-
function parseCookieInput(input) {
|
|
285
|
-
const trimmed = input.trim();
|
|
286
|
-
if (trimmed.includes("=") && (trimmed.includes(";") || trimmed.includes("substack."))) {
|
|
287
|
-
const parts = trimmed.split(";").map((p) => p.trim());
|
|
288
|
-
let sid = "";
|
|
289
|
-
let lli;
|
|
290
|
-
for (const part of parts) {
|
|
291
|
-
const eq = part.indexOf("=");
|
|
292
|
-
if (eq === -1)
|
|
293
|
-
continue;
|
|
294
|
-
const name = part.slice(0, eq).trim();
|
|
295
|
-
const value = part.slice(eq + 1).trim();
|
|
296
|
-
if (name === "substack.sid")
|
|
297
|
-
sid = value;
|
|
298
|
-
if (name === "substack.lli" && value.length > 10)
|
|
299
|
-
lli = value;
|
|
300
|
-
}
|
|
301
|
-
if (sid)
|
|
302
|
-
return lli ? { sid, lli } : { sid };
|
|
303
|
-
}
|
|
304
|
-
return { sid: trimmed };
|
|
305
|
-
}
|
|
306
306
|
export async function runManualLogin(cookieArg) {
|
|
307
307
|
const { sid, lli } = parseCookieInput(cookieArg);
|
|
308
308
|
if (!sid) {
|
|
@@ -324,11 +324,11 @@ export async function runManualLogin(cookieArg) {
|
|
|
324
324
|
export async function validateStoredAuth() {
|
|
325
325
|
try {
|
|
326
326
|
const headers = getCookieHeaders();
|
|
327
|
-
|
|
327
|
+
if (!headers)
|
|
328
|
+
return false;
|
|
328
329
|
const res = await fetch("https://substack.com/api/v1/reader/posts?limit=1", { headers, redirect: "follow" });
|
|
329
330
|
if (res.ok)
|
|
330
331
|
return true;
|
|
331
|
-
// Fallback: if we have a subdomain, try the publication-specific endpoint
|
|
332
332
|
const subdomain = loadAuth()?.subdomain || process.env["SUBSTACK_SUBDOMAIN"];
|
|
333
333
|
if (subdomain) {
|
|
334
334
|
const res2 = await fetch(`https://${subdomain}.substack.com/api/v1/archive?limit=1`, { headers });
|
|
@@ -341,6 +341,8 @@ export async function validateStoredAuth() {
|
|
|
341
341
|
}
|
|
342
342
|
}
|
|
343
343
|
export async function checkAuthStatus() {
|
|
344
|
+
const envCookie = process.env["SUBSTACK_COOKIE"];
|
|
345
|
+
const hasEnvVar = envCookie !== undefined && envCookie.trim().length > 0;
|
|
344
346
|
const auth = loadAuth();
|
|
345
347
|
if (!auth) {
|
|
346
348
|
return { authenticated: false };
|
|
@@ -352,7 +354,8 @@ export async function checkAuthStatus() {
|
|
|
352
354
|
const ageHours = Math.floor((ageMs % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
|
|
353
355
|
return {
|
|
354
356
|
authenticated: valid,
|
|
355
|
-
|
|
357
|
+
authSource: hasEnvVar ? "environment variable" : "auth.json",
|
|
358
|
+
cookieAge: hasEnvVar ? "from env var" : `${ageDays}d ${ageHours}h (extracted ${auth.extractedAt})`,
|
|
356
359
|
subdomain: auth.subdomain,
|
|
357
360
|
};
|
|
358
361
|
}
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -38,12 +38,53 @@ export interface SubstackComment {
|
|
|
38
38
|
reactions: Record<string, number>;
|
|
39
39
|
children: SubstackComment[];
|
|
40
40
|
}
|
|
41
|
-
/**
|
|
42
|
-
* Fetch full comment tree for an article.
|
|
43
|
-
* The slug is resolved to a post ID first via the article detail endpoint.
|
|
44
|
-
*/
|
|
45
41
|
export declare function getComments(slugOrId: string, subdomain?: string): Promise<{
|
|
46
42
|
postId: number;
|
|
47
43
|
comments: SubstackComment[];
|
|
48
44
|
}>;
|
|
45
|
+
export interface SubstackSubscription {
|
|
46
|
+
publicationId: number;
|
|
47
|
+
name: string;
|
|
48
|
+
subdomain: string;
|
|
49
|
+
url: string;
|
|
50
|
+
authorName: string;
|
|
51
|
+
plan: "paid" | "comp" | "free";
|
|
52
|
+
isFavorite: boolean;
|
|
53
|
+
createdAt: string;
|
|
54
|
+
}
|
|
55
|
+
export declare function listSubscriptions(): Promise<SubstackSubscription[]>;
|
|
56
|
+
export interface InboxItem {
|
|
57
|
+
id: number;
|
|
58
|
+
title: string;
|
|
59
|
+
slug: string;
|
|
60
|
+
subtitle: string;
|
|
61
|
+
publishedAt: string;
|
|
62
|
+
canonicalUrl: string;
|
|
63
|
+
audience: string;
|
|
64
|
+
publicationName: string;
|
|
65
|
+
publicationSubdomain: string;
|
|
66
|
+
authorName: string;
|
|
67
|
+
likes: number;
|
|
68
|
+
comments: number;
|
|
69
|
+
restacks: number;
|
|
70
|
+
wordCount?: number;
|
|
71
|
+
}
|
|
72
|
+
export declare function getInbox(pages?: number): Promise<InboxItem[]>;
|
|
73
|
+
export interface FeedItem {
|
|
74
|
+
id: number;
|
|
75
|
+
title: string;
|
|
76
|
+
slug: string;
|
|
77
|
+
subtitle: string;
|
|
78
|
+
publishedAt: string;
|
|
79
|
+
canonicalUrl: string;
|
|
80
|
+
audience: string;
|
|
81
|
+
publicationName: string;
|
|
82
|
+
publicationSubdomain: string;
|
|
83
|
+
authorName: string;
|
|
84
|
+
likes: number;
|
|
85
|
+
comments: number;
|
|
86
|
+
restacks: number;
|
|
87
|
+
wordCount?: number;
|
|
88
|
+
}
|
|
89
|
+
export declare function getReaderFeed(limit?: number): Promise<FeedItem[]>;
|
|
49
90
|
//# sourceMappingURL=client.d.ts.map
|