backend-manager 5.0.203 → 5.1.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 +56 -0
- package/CLAUDE.md +43 -1501
- package/TODO-CHARGEBLAST.md +32 -0
- package/TODO-email-auth.md +14 -0
- package/docs/admin-post-route.md +24 -0
- package/docs/ai-library.md +23 -0
- package/docs/architecture.md +31 -0
- package/docs/auth-hooks.md +74 -0
- package/docs/cli-firestore-auth.md +59 -0
- package/docs/cli-logs.md +67 -0
- package/docs/code-patterns.md +67 -0
- package/docs/common-operations.md +64 -0
- package/docs/directory-structure.md +119 -0
- package/docs/environment-detection.md +7 -0
- package/docs/file-naming.md +11 -0
- package/docs/marketing-campaigns.md +244 -0
- package/docs/marketing-fields.md +25 -0
- package/docs/mcp.md +95 -0
- package/docs/payment-system.md +325 -0
- package/docs/response-headers.md +7 -0
- package/docs/routes.md +126 -0
- package/docs/sanitization.md +61 -0
- package/docs/schemas.md +39 -0
- package/docs/stripe-webhook-forwarding.md +18 -0
- package/docs/testing.md +129 -0
- package/docs/usage-rate-limiting.md +67 -0
- package/package.json +8 -4
- package/src/defaults/CHANGELOG.md +15 -0
- package/src/defaults/CLAUDE.md +8 -4
- package/src/defaults/docs/README.md +17 -0
- package/src/defaults/test/README.md +33 -0
- package/src/manager/events/cron/daily/marketing-newsletter-generate.js +48 -8
- package/src/manager/functions/core/actions/api/admin/create-post.js +3 -27
- package/src/manager/helpers/utilities.js +21 -0
- package/src/manager/index.js +1 -1
- package/src/manager/libraries/ai/index.js +162 -0
- package/src/manager/libraries/ai/providers/anthropic.js +193 -0
- package/src/manager/libraries/ai/providers/claude-code.js +206 -0
- package/src/manager/libraries/ai/providers/openai.js +934 -0
- package/src/manager/libraries/disposable-domains.json +2 -0
- package/src/manager/libraries/email/generators/lib/filter.js +179 -0
- package/src/manager/libraries/email/generators/lib/image-host.js +231 -0
- package/src/manager/libraries/email/generators/lib/mjml-template.js +83 -0
- package/src/manager/libraries/email/generators/lib/structure.js +278 -0
- package/src/manager/libraries/email/generators/lib/svg-illustrator.js +184 -0
- package/src/manager/libraries/email/generators/lib/templates/classic-schema.js +63 -0
- package/src/manager/libraries/email/generators/lib/templates/clean.js +82 -0
- package/src/manager/libraries/email/generators/lib/templates/editorial-helpers.js +100 -0
- package/src/manager/libraries/email/generators/lib/templates/editorial.js +317 -0
- package/src/manager/libraries/email/generators/lib/templates/field-report-helpers.js +138 -0
- package/src/manager/libraries/email/generators/lib/templates/field-report.js +497 -0
- package/src/manager/libraries/email/generators/lib/templates/index.js +28 -0
- package/src/manager/libraries/email/generators/lib/templates/shared.js +534 -0
- package/src/manager/libraries/email/generators/newsletter.js +377 -95
- package/src/manager/libraries/email/marketing/index.js +5 -2
- package/src/manager/libraries/email/providers/beehiiv.js +7 -3
- package/src/manager/libraries/openai.js +13 -932
- package/src/manager/routes/admin/post/deduplicate-image-alts.js +52 -0
- package/src/manager/routes/admin/post/post.js +10 -17
- package/templates/_.env +4 -0
- package/templates/_.gitignore +1 -0
- package/templates/backend-manager-config.json +48 -4
- package/test/helpers/slugify.js +394 -0
- package/test/marketing/fixtures/clean.json +31 -0
- package/test/marketing/fixtures/editorial.json +31 -0
- package/test/marketing/fixtures/field-report.json +54 -0
- package/test/marketing/newsletter-generate.js +731 -0
- package/test/marketing/newsletter-templates.js +512 -0
- package/test/routes/admin/deduplicate-image-alts.js +190 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Predefined fixture for the `field-report` template. Loaded via NEWSLETTER_FIXTURE=field-report. Wire-service content shape: tldr + dateline + dispatches[{kicker, headline, byline, location, lede, dispatch, dataPoints, cta, image_prompt}].",
|
|
3
|
+
"subject": "LinkedIn tightens identity — operators document everything",
|
|
4
|
+
"preheader": "Three filings from this week's platform front lines.",
|
|
5
|
+
"tldr": "LinkedIn is rolling out verified-account scrutiny across every business profile. Operators with paper trails will outrun the rest. Documentation is the new growth lever.",
|
|
6
|
+
"dateline": "OAKLAND",
|
|
7
|
+
"signoff": "— Stay sharp,\nThe Somiibo Desk",
|
|
8
|
+
"citations": [
|
|
9
|
+
{ "note": "LinkedIn flagged 12,000 impersonation attempts in the verified-profile beta.", "source": "Reported by LinkedIn product team, May 2026" },
|
|
10
|
+
{ "note": "Operator playbook adoption up 38% week-over-week in Q2.", "source": "Per platform analytics, May 2026" }
|
|
11
|
+
],
|
|
12
|
+
"dispatches": [
|
|
13
|
+
{
|
|
14
|
+
"kicker": "LEAD DISPATCH",
|
|
15
|
+
"headline": "LinkedIn ships verified-profile gates for every business account",
|
|
16
|
+
"byline": "Filed by The Somiibo platform desk",
|
|
17
|
+
"location": "OAKLAND",
|
|
18
|
+
"lede": "A wave of identity-verification gates is rolling out across LinkedIn business profiles this week — and the platform is not asking politely.",
|
|
19
|
+
"dispatch": "LinkedIn now requires verified identity attestations on any business profile claiming more than 500 followers. The rollout is fast and uneven: some accounts hit the gate inside two days of profile activity, others sit unchallenged for weeks. The pattern that matters is this — accounts with documented attribution histories sail through verification in under twelve hours. Accounts without get queued. The practical implication is to lock down your attribution log this week, not next.",
|
|
20
|
+
"dataPoints": [
|
|
21
|
+
{ "label": "PROFILES FLAGGED", "value": "12.4K" },
|
|
22
|
+
{ "label": "AVG REVIEW TIME", "value": "14HR" },
|
|
23
|
+
{ "label": "WoW APPROVAL", "value": "+38%" }
|
|
24
|
+
],
|
|
25
|
+
"cta": { "label": "READ THE BRIEF", "url": "https://somiibo.com/blog/linkedin-verification" },
|
|
26
|
+
"image_prompt": "Abstract geometric illustration of a verification checkmark inside a layered profile card."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"kicker": "FIELD NOTES",
|
|
30
|
+
"headline": "Documentation is the new operator moat",
|
|
31
|
+
"byline": "Filed by The Somiibo growth desk",
|
|
32
|
+
"location": "REMOTE",
|
|
33
|
+
"lede": "The teams surviving this round of platform scrutiny share one habit: they write everything down.",
|
|
34
|
+
"dispatch": "Operator playbooks — once dismissed as overhead — are now the difference between an account that recovers from a flag and one that gets permanently restricted. The teams already running on documented processes recover in days. The ones without burn weeks negotiating with support queues. Treat your playbook as a compliance artifact, not a knowledge-management nice-to-have.",
|
|
35
|
+
"dataPoints": [
|
|
36
|
+
{ "label": "RECOVERY (DOCUMENTED)", "value": "4D" },
|
|
37
|
+
{ "label": "RECOVERY (UNDOC)", "value": "21D" }
|
|
38
|
+
],
|
|
39
|
+
"cta": { "label": "SEE THE PLAYBOOK", "url": "https://somiibo.com/blog/operator-playbook" },
|
|
40
|
+
"image_prompt": "Stack of geometric document layers casting clean shadows on a flat surface."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"kicker": "WATCH",
|
|
44
|
+
"headline": "YouTube tests creator-attribution metadata on uploads",
|
|
45
|
+
"byline": "Filed by The Somiibo signals desk",
|
|
46
|
+
"location": "NEW YORK",
|
|
47
|
+
"lede": "A small pilot suggests YouTube will soon ask creators to declare automated tooling and cross-posting workflows at upload time.",
|
|
48
|
+
"dispatch": "A subset of channels saw a new upload checkbox this week asking whether content was assisted by automation. The checkbox is optional today. Reading the room: it will not stay optional. Creators with clear internal workflows already labeled will adapt in an afternoon. Everyone else will spend a quarter retrofitting.",
|
|
49
|
+
"dataPoints": [],
|
|
50
|
+
"cta": null,
|
|
51
|
+
"image_prompt": "Minimalist play button morphing into a label tag, flat geometric style."
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|