seshat-scribe 0.9.0 → 0.9.2
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/dist/core/portable-writer.d.ts +2 -2
- package/dist/core/portable-writer.d.ts.map +1 -1
- package/dist/core/portable-writer.js +69 -51
- package/dist/core/portable-writer.js.map +1 -1
- package/dist/core/writer.d.ts.map +1 -1
- package/dist/core/writer.js +1 -0
- package/dist/core/writer.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { BlogPlan } from
|
|
2
|
-
import type { SeshatConfig } from
|
|
1
|
+
import type { BlogPlan } from "./planner.js";
|
|
2
|
+
import type { SeshatConfig } from "../config.js";
|
|
3
3
|
/**
|
|
4
4
|
* Use Gemini to write content as structured markdown that we'll parse into Portable Text
|
|
5
5
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portable-writer.d.ts","sourceRoot":"","sources":["../../src/core/portable-writer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"portable-writer.d.ts","sourceRoot":"","sources":["../../src/core/portable-writer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA2CjD;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,GAAG,EAAE,CAAC,CAqFhB"}
|
|
@@ -1,43 +1,57 @@
|
|
|
1
|
-
import { createGenAIClient } from
|
|
2
|
-
import { addUsage, fromGenerateContentResponse } from
|
|
1
|
+
import { createGenAIClient } from "../lib/gemini.js";
|
|
2
|
+
import { addUsage, fromGenerateContentResponse } from "../lib/usage.js";
|
|
3
3
|
/**
|
|
4
4
|
* Generate a unique key for Sanity documents
|
|
5
5
|
*/
|
|
6
6
|
function generateKey() {
|
|
7
7
|
return Math.random().toString(36).substring(2, 15);
|
|
8
8
|
}
|
|
9
|
-
const WRITE_MODEL =
|
|
9
|
+
const WRITE_MODEL = "gemini-3-flash-preview";
|
|
10
10
|
function pickOne(arr) {
|
|
11
11
|
return arr[Math.floor(Math.random() * arr.length)];
|
|
12
12
|
}
|
|
13
13
|
const OPENING_STYLES = [
|
|
14
|
-
{
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
{ instruction:
|
|
18
|
-
{ instruction:
|
|
19
|
-
{
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
{
|
|
15
|
+
instruction: "Start with 1–2 sentences on why this matters to the reader.",
|
|
16
|
+
},
|
|
17
|
+
{ instruction: "Open with a question that the post will answer." },
|
|
18
|
+
{ instruction: "Open with a bold or surprising claim, then back it up." },
|
|
19
|
+
{
|
|
20
|
+
instruction: "Open with a very short anecdote or moment (2–3 sentences) that leads into the topic.",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
instruction: "Dive straight into the technical content; no preamble. Start with a concrete example or definition.",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
instruction: "Start with an understated, almost casual observation that draws the reader in.",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
instruction: "Start by contradicting a common belief or practice, then explain.",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
instruction: 'Start with a specific frustration or "this used to confuse me" and then resolve it.',
|
|
33
|
+
},
|
|
22
34
|
];
|
|
23
35
|
/**
|
|
24
36
|
* Use Gemini to write content as structured markdown that we'll parse into Portable Text
|
|
25
37
|
*/
|
|
26
38
|
export async function writePortableTextContent(config, plan) {
|
|
27
39
|
const ai = createGenAIClient();
|
|
28
|
-
const primaryTag = plan.tags[0] ||
|
|
40
|
+
const primaryTag = plan.tags[0] || "general";
|
|
29
41
|
const opening = pickOne(OPENING_STYLES);
|
|
30
42
|
// Build generation instructions
|
|
31
|
-
let generationInstructions =
|
|
43
|
+
let generationInstructions = "";
|
|
32
44
|
if (config.generation) {
|
|
33
45
|
if (config.generation.targetWordCount) {
|
|
34
46
|
generationInstructions += `\n- Target length: approximately ${config.generation.targetWordCount} words`;
|
|
35
47
|
}
|
|
36
48
|
if (config.generation.includeCodeExamples) {
|
|
37
|
-
generationInstructions +=
|
|
49
|
+
generationInstructions +=
|
|
50
|
+
"\n- Include multiple practical code examples throughout the post";
|
|
38
51
|
}
|
|
39
52
|
if (config.generation.seoOptimized) {
|
|
40
|
-
generationInstructions +=
|
|
53
|
+
generationInstructions +=
|
|
54
|
+
"\n- Optimize for SEO: use keywords naturally, clear headings, scannable structure";
|
|
41
55
|
}
|
|
42
56
|
if (config.generation.customInstructions) {
|
|
43
57
|
generationInstructions += `\n- Additional instructions: ${config.generation.customInstructions}`;
|
|
@@ -90,10 +104,12 @@ Write a focused, valuable post that helps developers understand ${plan.title}.`;
|
|
|
90
104
|
const u = fromGenerateContentResponse(WRITE_MODEL, response.usageMetadata);
|
|
91
105
|
if (u)
|
|
92
106
|
addUsage(u);
|
|
93
|
-
let content = response.text?.trim() ||
|
|
107
|
+
let content = response.text?.trim() || "";
|
|
94
108
|
// Clean up: remove wrapping code blocks if Gemini added them
|
|
95
|
-
if (content.startsWith(
|
|
96
|
-
content = content
|
|
109
|
+
if (content.startsWith("```")) {
|
|
110
|
+
content = content
|
|
111
|
+
.replace(/^```(?:markdown|md)?\\n/, "")
|
|
112
|
+
.replace(/\\n```$/, "");
|
|
97
113
|
}
|
|
98
114
|
// Convert markdown to Portable Text blocks
|
|
99
115
|
return parseMarkdownToPortableText(content);
|
|
@@ -103,40 +119,40 @@ Write a focused, valuable post that helps developers understand ${plan.title}.`;
|
|
|
103
119
|
*/
|
|
104
120
|
function parseMarkdownToPortableText(markdown) {
|
|
105
121
|
const blocks = [];
|
|
106
|
-
const lines = markdown.split(
|
|
122
|
+
const lines = markdown.split("\n");
|
|
107
123
|
let currentParagraph = [];
|
|
108
124
|
let inCodeBlock = false;
|
|
109
125
|
let codeBlockContent = [];
|
|
110
|
-
let codeBlockLanguage =
|
|
126
|
+
let codeBlockLanguage = "";
|
|
111
127
|
const flushParagraph = () => {
|
|
112
128
|
if (currentParagraph.length > 0) {
|
|
113
|
-
const text = currentParagraph.join(
|
|
129
|
+
const text = currentParagraph.join("\n").trim();
|
|
114
130
|
if (text) {
|
|
115
|
-
blocks.push(createTextBlock(text,
|
|
131
|
+
blocks.push(createTextBlock(text, "normal"));
|
|
116
132
|
}
|
|
117
133
|
currentParagraph = [];
|
|
118
134
|
}
|
|
119
135
|
};
|
|
120
136
|
for (const line of lines) {
|
|
121
137
|
// Handle code blocks
|
|
122
|
-
if (line.startsWith(
|
|
138
|
+
if (line.startsWith("```")) {
|
|
123
139
|
if (!inCodeBlock) {
|
|
124
140
|
flushParagraph();
|
|
125
141
|
inCodeBlock = true;
|
|
126
|
-
codeBlockLanguage = line.slice(3).trim() ||
|
|
142
|
+
codeBlockLanguage = line.slice(3).trim() || "javascript";
|
|
127
143
|
codeBlockContent = [];
|
|
128
144
|
}
|
|
129
145
|
else {
|
|
130
146
|
// End of code block
|
|
131
147
|
blocks.push({
|
|
132
148
|
_key: generateKey(),
|
|
133
|
-
_type:
|
|
149
|
+
_type: "code",
|
|
134
150
|
language: codeBlockLanguage,
|
|
135
|
-
code: codeBlockContent.join(
|
|
151
|
+
code: codeBlockContent.join("\n"),
|
|
136
152
|
});
|
|
137
153
|
inCodeBlock = false;
|
|
138
154
|
codeBlockContent = [];
|
|
139
|
-
codeBlockLanguage =
|
|
155
|
+
codeBlockLanguage = "";
|
|
140
156
|
}
|
|
141
157
|
continue;
|
|
142
158
|
}
|
|
@@ -145,34 +161,34 @@ function parseMarkdownToPortableText(markdown) {
|
|
|
145
161
|
continue;
|
|
146
162
|
}
|
|
147
163
|
// Handle headings
|
|
148
|
-
if (line.startsWith(
|
|
164
|
+
if (line.startsWith("#### ")) {
|
|
149
165
|
flushParagraph();
|
|
150
|
-
blocks.push(createTextBlock(line.slice(5),
|
|
166
|
+
blocks.push(createTextBlock(line.slice(5), "h4"));
|
|
151
167
|
continue;
|
|
152
168
|
}
|
|
153
|
-
if (line.startsWith(
|
|
169
|
+
if (line.startsWith("### ")) {
|
|
154
170
|
flushParagraph();
|
|
155
|
-
blocks.push(createTextBlock(line.slice(4),
|
|
171
|
+
blocks.push(createTextBlock(line.slice(4), "h3"));
|
|
156
172
|
continue;
|
|
157
173
|
}
|
|
158
|
-
if (line.startsWith(
|
|
174
|
+
if (line.startsWith("## ")) {
|
|
159
175
|
flushParagraph();
|
|
160
|
-
blocks.push(createTextBlock(line.slice(3),
|
|
176
|
+
blocks.push(createTextBlock(line.slice(3), "h2"));
|
|
161
177
|
continue;
|
|
162
178
|
}
|
|
163
|
-
if (line.startsWith(
|
|
179
|
+
if (line.startsWith("# ")) {
|
|
164
180
|
flushParagraph();
|
|
165
|
-
blocks.push(createTextBlock(line.slice(2),
|
|
181
|
+
blocks.push(createTextBlock(line.slice(2), "h1"));
|
|
166
182
|
continue;
|
|
167
183
|
}
|
|
168
184
|
// Handle blockquotes
|
|
169
|
-
if (line.startsWith(
|
|
185
|
+
if (line.startsWith("> ")) {
|
|
170
186
|
flushParagraph();
|
|
171
|
-
blocks.push(createTextBlock(line.slice(2),
|
|
187
|
+
blocks.push(createTextBlock(line.slice(2), "blockquote"));
|
|
172
188
|
continue;
|
|
173
189
|
}
|
|
174
190
|
// Empty lines separate paragraphs
|
|
175
|
-
if (line.trim() ===
|
|
191
|
+
if (line.trim() === "") {
|
|
176
192
|
flushParagraph();
|
|
177
193
|
continue;
|
|
178
194
|
}
|
|
@@ -190,7 +206,7 @@ function createTextBlock(text, style) {
|
|
|
190
206
|
const children = parseInlineFormatting(text);
|
|
191
207
|
return {
|
|
192
208
|
_key: generateKey(),
|
|
193
|
-
_type:
|
|
209
|
+
_type: "block",
|
|
194
210
|
style,
|
|
195
211
|
children,
|
|
196
212
|
markDefs: [],
|
|
@@ -206,31 +222,31 @@ function parseInlineFormatting(text) {
|
|
|
206
222
|
for (const part of parts) {
|
|
207
223
|
if (!part)
|
|
208
224
|
continue;
|
|
209
|
-
if (part.startsWith(
|
|
225
|
+
if (part.startsWith("**") && part.endsWith("**")) {
|
|
210
226
|
// Bold
|
|
211
227
|
children.push({
|
|
212
228
|
_key: generateKey(),
|
|
213
|
-
_type:
|
|
229
|
+
_type: "span",
|
|
214
230
|
text: part.slice(2, -2),
|
|
215
|
-
marks: [
|
|
231
|
+
marks: ["strong"],
|
|
216
232
|
});
|
|
217
233
|
}
|
|
218
|
-
else if (part.startsWith(
|
|
234
|
+
else if (part.startsWith("__") && part.endsWith("__")) {
|
|
219
235
|
// Bold (alternative)
|
|
220
236
|
children.push({
|
|
221
237
|
_key: generateKey(),
|
|
222
|
-
_type:
|
|
238
|
+
_type: "span",
|
|
223
239
|
text: part.slice(2, -2),
|
|
224
|
-
marks: [
|
|
240
|
+
marks: ["strong"],
|
|
225
241
|
});
|
|
226
242
|
}
|
|
227
|
-
else if (part.startsWith(
|
|
243
|
+
else if (part.startsWith("`") && part.endsWith("`")) {
|
|
228
244
|
// Inline code
|
|
229
245
|
children.push({
|
|
230
246
|
_key: generateKey(),
|
|
231
|
-
_type:
|
|
247
|
+
_type: "span",
|
|
232
248
|
text: part.slice(1, -1),
|
|
233
|
-
marks: [
|
|
249
|
+
marks: ["code"],
|
|
234
250
|
});
|
|
235
251
|
}
|
|
236
252
|
else if (part.match(/\[(.*?)\]\((.*?)\)/)) {
|
|
@@ -239,7 +255,7 @@ function parseInlineFormatting(text) {
|
|
|
239
255
|
if (match) {
|
|
240
256
|
children.push({
|
|
241
257
|
_key: generateKey(),
|
|
242
|
-
_type:
|
|
258
|
+
_type: "span",
|
|
243
259
|
text: match[1],
|
|
244
260
|
marks: [],
|
|
245
261
|
});
|
|
@@ -249,12 +265,14 @@ function parseInlineFormatting(text) {
|
|
|
249
265
|
// Regular text
|
|
250
266
|
children.push({
|
|
251
267
|
_key: generateKey(),
|
|
252
|
-
_type:
|
|
268
|
+
_type: "span",
|
|
253
269
|
text: part,
|
|
254
270
|
marks: [],
|
|
255
271
|
});
|
|
256
272
|
}
|
|
257
273
|
}
|
|
258
|
-
return children.length > 0
|
|
274
|
+
return children.length > 0
|
|
275
|
+
? children
|
|
276
|
+
: [{ _key: generateKey(), _type: "span", text, marks: [] }];
|
|
259
277
|
}
|
|
260
278
|
//# sourceMappingURL=portable-writer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portable-writer.js","sourceRoot":"","sources":["../../src/core/portable-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAIxE;;GAEG;AACH,SAAS,WAAW;IAClB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAE7C,SAAS,OAAO,CAAI,GAAQ;IAC1B,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,cAAc,GAA8B;IAChD,
|
|
1
|
+
{"version":3,"file":"portable-writer.js","sourceRoot":"","sources":["../../src/core/portable-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAmBjD;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,QAAQ,EACd,QAAQ,GAAE,IAAiB,EAC3B,SAAS,GAAE,MAAM,GAAG,IAA0B,GAC7C,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAmBjD;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,QAAQ,EACd,QAAQ,GAAE,IAAiB,EAC3B,SAAS,GAAE,MAAM,GAAG,IAA0B,GAC7C,OAAO,CAAC,MAAM,CAAC,CAoHjB"}
|
package/dist/core/writer.js
CHANGED
|
@@ -70,6 +70,7 @@ Do NOT start with "In this article we will...", "In today's post...", or similar
|
|
|
70
70
|
- Use examples and code to clarify; show real code, not pseudo-code
|
|
71
71
|
- Explain the "why" behind decisions; include edge cases or gotchas when relevant
|
|
72
72
|
- Don't use perfect grammar, just write like a human.
|
|
73
|
+
- Avoid obvious AI writing patterns like "—" or "...", which a human would never use.
|
|
73
74
|
|
|
74
75
|
**Structure:**
|
|
75
76
|
- Use clear headings, but don't follow a cookie-cutter pattern (e.g. not always Intro → Background → Solution → Conclusion with equal weight)
|
package/dist/core/writer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAIzD,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAE7C,SAAS,OAAO,CAAI,GAAQ;IAC1B,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,cAAc,GAA8B;IAChD,EAAE,WAAW,EAAE,6DAA6D,EAAE;IAC9E,EAAE,WAAW,EAAE,iDAAiD,EAAE;IAClE,EAAE,WAAW,EAAE,wDAAwD,EAAE;IACzE,EAAE,WAAW,EAAE,sFAAsF,EAAE;IACvG,EAAE,WAAW,EAAE,qGAAqG,EAAE;IACtH,EAAE,WAAW,EAAE,gFAAgF,EAAE;IACjG,EAAE,WAAW,EAAE,mEAAmE,EAAE;IACpF,EAAE,WAAW,EAAE,qFAAqF,EAAE;CACvG,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAoB,EACpB,IAAc,EACd,WAAiB,IAAI,IAAI,EAAE,EAC3B,YAA2B,mBAAmB;IAE9C,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAE/B,mCAAmC;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IAE7C,oEAAoE;IACpE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IAED,yCAAyC;IACzC,MAAM,WAAW,GAAG,gBAAgB,CAClC,MAAM,CAAC,WAAW,EAClB;QACE,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,UAAU;QACf,SAAS;KACV,CACF,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAExC,gCAAgC;IAChC,IAAI,sBAAsB,GAAG,EAAE,CAAC;IAChC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;YACtC,sBAAsB,IAAI,oCAAoC,MAAM,CAAC,UAAU,CAAC,eAAe,QAAQ,CAAC;QAC1G,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;YAC1C,sBAAsB,IAAI,kEAAkE,CAAC;QAC/F,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;YACnC,sBAAsB,IAAI,mFAAmF,CAAC;QAChH,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;YACzC,sBAAsB,IAAI,gCAAgC,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;QACnG,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG;;;WAGN,IAAI,CAAC,KAAK;iBACJ,IAAI,CAAC,WAAW;SACxB,UAAU,GAAG,sBAAsB;;;EAG1C,OAAO,CAAC,WAAW
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":"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"}
|