Repository navigation
Expand file tree
/
Copy pathsanity.blueprint.ts
More file actions
99 lines (98 loc) · 3.28 KB
/
Copy pathsanity.blueprint.ts
File metadata and controls
99 lines (98 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import {
defineBlueprint,
defineDocumentFunction,
defineScheduledFunction,
} from "@sanity/blueprints";
export default defineBlueprint({
resources: [
defineDocumentFunction({
name: "syndicate-content",
displayName: "Syndicate Content (Dev.to & Hashnode)",
project: process.env.SANITY_STUDIO_PROJECT_ID || "hfh83o0w",
event: {
on: ["create", "update"],
filter: '_type in ["post", "podcast"] && !(_id in path("drafts.**"))',
},
src: "./apps/sanity/functions/syndicate-content",
runtime: "nodejs22.x",
timeout: 30,
env: {
DEVTO_API_KEY: process.env.PRIVATE_DEVTO || process.env.DEVTO_API_KEY || "",
HASHNODE_ACCESS_TOKEN: process.env.PRIVATE_HASHNODE || process.env.HASHNODE_ACCESS_TOKEN || "",
HASHNODE_PUBLICATION_ID: process.env.HASHNODE_PUBLICATION_ID || "60242f8180da6c44eadf775b",
SANITY_AUTH_TOKEN: process.env.SANITY_AUTH_TOKEN || "",
SANITY_API_WRITE_TOKEN: process.env.SANITY_API_WRITE_TOKEN || "",
},
}),
defineDocumentFunction({
name: "sync-youtube-transcript",
displayName: "Sync YouTube Transcripts & Video Intelligence",
project: process.env.SANITY_STUDIO_PROJECT_ID || "hfh83o0w",
event: {
on: ["create", "update"],
filter: 'defined(youtube) && !(_id in path("drafts.**"))',
},
src: "./apps/sanity/functions/sync-youtube-transcript",
runtime: "nodejs22.x",
timeout: 60,
env: {
YOUTUBE_API_KEY: process.env.YOUTUBE_API_KEY || "",
},
}),
defineScheduledFunction({
name: "sync-nightly-dataset",
displayName: "Nightly Dataset Sync (Production -> Dev)",
src: "./apps/sanity/functions/sync-nightly-dataset",
event: {
expression: "0 4 * * *", // 4:00 AM UTC
},
runtime: "nodejs22.x",
timeout: 300,
env: {
SANITY_AUTH_TOKEN: process.env.SANITY_AUTH_TOKEN || "",
SANITY_STUDIO_PROJECT_ID:
process.env.SANITY_STUDIO_PROJECT_ID || "hfh83o0w",
SANITY_STUDIO_DATASET:
process.env.SANITY_STUDIO_DATASET || "production",
},
}),
defineScheduledFunction({
name: "sync-missing-youtube-transcripts",
displayName: "Sync Missing YouTube Transcripts",
src: "./apps/sanity/functions/sync-missing-youtube-transcripts",
event: {
expression: "0 5 * * *", // 5:00 AM UTC
},
runtime: "nodejs22.x",
timeout: 300,
env: {
YOUTUBE_API_KEY: process.env.YOUTUBE_API_KEY || "",
SANITY_AUTH_TOKEN: process.env.SANITY_AUTH_TOKEN || "",
SANITY_API_WRITE_TOKEN: process.env.SANITY_API_WRITE_TOKEN || "",
SANITY_STUDIO_PROJECT_ID:
process.env.SANITY_STUDIO_PROJECT_ID || "hfh83o0w",
SANITY_STUDIO_DATASET:
process.env.SANITY_STUDIO_DATASET || "production",
},
}),
defineScheduledFunction({
name: "sync-youtube-analytics",
displayName: "Sync YouTube Video Analytics (Views, Likes, Comments)",
src: "./apps/sanity/functions/sync-youtube-analytics",
event: {
expression: "0 6 * * *", // 6:00 AM UTC
},
runtime: "nodejs22.x",
timeout: 300,
env: {
YOUTUBE_API_KEY: process.env.YOUTUBE_API_KEY || "",
SANITY_AUTH_TOKEN: process.env.SANITY_AUTH_TOKEN || "",
SANITY_API_WRITE_TOKEN: process.env.SANITY_API_WRITE_TOKEN || "",
SANITY_STUDIO_PROJECT_ID:
process.env.SANITY_STUDIO_PROJECT_ID || "hfh83o0w",
SANITY_STUDIO_DATASET:
process.env.SANITY_STUDIO_DATASET || "production",
},
}),
],
});