PageSourceSearch

https://www.creatorsenseai.com/app/login

html creatorsenseai.com collected 2026-10-02 01:26:21 UTC 11,069 bytes, 199 lines download raw bytes

1<!doctype html>
2<html lang="en">
3  <head>
4    <meta charset="UTF-8" />
5    <!--
6      Static tags describe CreatorSense, which is what this shell actually ships
7      as: VITE_PRODUCT_BRAND=creatorsense on the only service that serves /app/.
8
9      They used to describe Orolith and get corrected by the script below, which
10      left a window before JS ran where the page was Orolith. On desktop that is
11      invisible. On a phone it is not: mobile browsers paint the address and
12      status bar from theme-color at first paint, so the chrome came up Orolith
13      navy (#2a4066) and then flipped, and the tab switcher, share sheet and
14      Add to Home Screen all read "Orolith".
15
16      An Orolith host is now the one that gets patched at runtime, which is the
17      arrangement CreatorSense had and tolerated.
18    -->
19    <link rel="icon" type="image/png" href="/app/branding/creatorsense/icon-32.png" />
20    <link rel="icon" type="image/png" sizes="16x16" href="/app/branding/creatorsense/icon-32.png" />
21    <link rel="icon" type="image/png" sizes="32x32" href="/app/branding/creatorsense/icon-32.png" />
22    <meta
23      name="viewport"
24      content="width=device-width, initial-scale=1.0, viewport-fit=cover, interactive-widget=resizes-content"
25    />
26
27    <!-- Primary Meta Tags -->
28    <title>CreatorSense — Trace &amp; MCP for creators</title>
29    <meta name="title" content="CreatorSense — Trace &amp; MCP for creators" />
30    <meta
31      name="description"
32      content="CreatorSense Trace attributes digital leaks; CreatorSense MCP puts your creator data in Claude. Login and app tools — marketing lives on the public site."
33    />
34    <meta
35      name="keywords"
36      content="creator analytics, content creator tools, revenue tracking, YouTube analytics, TikTok analytics, Instagram analytics, AI insights, creator economy, TaxWise, ORACLE forecasting"
37    />
38    <meta name="author" content="CreatorSense" />
39    <link rel="canonical" href="https://www.creatorsenseai.com/" />
40    <!-- Allow indexing of the public login page; individual app routes handled by SPA router -->
41    <meta name="robots" content="index, follow" />
42
43    <!-- Open Graph / Facebook -->
44    <meta property="og:type" content="website" />
45    <meta property="og:url" content="https://www.creatorsenseai.com/" />
46    <meta property="og:title" content="CreatorSense — Trace &amp; MCP for creators" />
47    <meta
48      property="og:description"
49      content="Trace attributes digital leaks; MCP puts your creator data in Claude."
50    />
51    <meta property="og:image" content="/app/branding/creatorsense/og-card.png" />
52    <meta property="og:image:width" content="1200" />
53    <meta property="og:image:height" content="630" />
54
55    <!-- Twitter -->
56    <meta property="twitter:card" content="summary_large_image" />
57    <meta property="twitter:url" content="https://www.creatorsenseai.com/" />
58    <meta property="twitter:title" content="CreatorSense — Trace &amp; MCP for creators" />
59    <meta
60      property="twitter:description"
61      content="Trace attributes digital leaks; MCP puts your creator data in Claude."
62    />
63    <meta property="twitter:image" content="/branding/creatorsense/og-card.png" />
64
65    <!-- PWA Meta Tags -->
66    <meta name="theme-color" content="#fbf8f6" />
67    <meta name="apple-mobile-web-app-capable" content="yes" />
68    <meta name="mobile-web-app-capable" content="yes" />
69    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
70    <meta name="apple-mobile-web-app-title" content="CreatorSense" />
71    <link rel="apple-touch-icon" href="/app/branding/creatorsense/icon-180.png" />
72    <!-- Orolith host: brand meta before SPA boot. CreatorSense is the static default. -->
73    
73<script>
74      ;(function () {
75        try {
76          var h = location.hostname || ''
77          // Anything on a CreatorSense host already matches the static tags.
78          if (/(^|\.)creatorsenseai\.com$/i.test(h)) return
79          // Only rebrand for a real Orolith host; localhost and preview builds
80          // keep the CreatorSense default rather than flipping unexpectedly.
81          if (!/(^|\.)orolith\.(io|com)$/i.test(h)) return
82          var prefix = location.origin + '/'
83          if (location.pathname.indexOf('/app') === 0) prefix = location.origin + '/app/'
84          document.querySelectorAll('link[rel="icon"]').forEach(function (el) {
85            el.href = prefix + 'branding/logos/orolith-logo-32.png'
86          })
87          var touch = document.querySelector('link[rel="apple-touch-icon"]')
88          if (touch) touch.href = prefix + 'branding/logos/orolith-logo-256.png'
89          var appleTitle = document.querySelector('meta[name="apple-mobile-web-app-title"]')
90          if (appleTitle) appleTitle.setAttribute('content', 'Orolith')
91          var theme = document.querySelector('meta[name="theme-color"]')
92          if (theme) theme.setAttribute('content', '#2a4066')
93          document.title = 'Orolith - Analytics Platform for Content Creators'
94          var set = function (sel, attr, val) {
95            var el = document.querySelector(sel)
96            if (el) el.setAttribute(attr, val)
97          }
98          set('meta[name="title"]', 'content', document.title)
99          set(
100            'meta[name="description"]',
101            'content',
102            'AI-powered analytics platform for content creators. Track revenue, optimize content, and grow your audience with intelligent insights.'
103          )
104          set('meta[name="author"]', 'content', 'Orolith')
105          set('link[rel="canonical"]', 'href', 'https://orolith.io/')
106          set('meta[property="og:title"]', 'content', document.title)
107          set('meta[property="og:url"]', 'content', 'https://orolith.io/')
108          set('meta[property="og:image"]', 'content', '/branding/banners/og-image-1200x630.png')
109          set('meta[property="twitter:title"]', 'content', document.title)
110          set('meta[property="twitter:url"]', 'content', 'https://orolith.io/')
111          set('meta[property="twitter:image"]', 'content', '/branding/banners/og-image-1200x630.png')
112        } catch (e) {}
113      })()
114    </script>
114
115
116    <!--
117    Content-Security-Policy meta-tag fallback.
118    Primary CSP is enforced via Cloudflare Transform Rules / response headers.
119    This meta-tag is a secondary defence for environments without Cloudflare
120    (local dev, Railway preview, direct-to-origin requests).
121    It does NOT cover frame-ancestors or report-uri (header-only directives).
122  -->
123    <meta
124      http-equiv="Content-Security-Policy"
125      content="default-src 'self'; script-src 'self' 'unsafe-inline' https://challenges.cloudflare.com https://accounts.google.com https://apis.google.com https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://accounts.google.com; font-src 'self' https://fonts.gstatic.com data:; img-src 'self' data: blob: https:; media-src 'self' blob: https://*.r2.cloudflarestorage.com https://b4dedf5f9febc4226344bbd0a4c5a4f7.r2.cloudflarestorage.com; connect-src 'self' https://*.up.railway.app https://api.creatorsenseai.com https://api.orolith.io https://*.r2.cloudflarestorage.com https://b4dedf5f9febc4226344bbd0a4c5a4f7.r2.cloudflarestorage.com https://sentry.io https://*.sentry.io wss://*.up.railway.app https://accounts.google.com https://oauth2.googleapis.com https://cdn.jsdelivr.net; frame-src 'self' https://accounts.google.com; object-src 'none'; base-uri 'self';"
126    />
127
128    <!-- Google Fonts loads async so a slow CDN can never block first paint
129         (it was previously render-blocking; on a flaky connection the login
130         page sat blank waiting on fonts.googleapis.com). The preload →
131         rel=stylesheet swap applies it the moment it arrives; display=swap
132         renders text in fallback fonts meanwhile. -->
133    <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin />
134    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
135
136    <!-- Google Fonts (moved out of the bundled CSS @import, which hid it from
137         the preload scanner and blocked paint after app CSS arrived) -->
138    <link
139      rel="preload"
140      as="style"
141      href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&family=Source+Serif+4:opsz,[email protected],600;8..60,700&display=swap"
142      onload="
143        this.onload = null
144        this.rel = 'stylesheet'
145      "
146    />
147    <noscript>
148      <link
149        rel="stylesheet"
150        href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&family=Source+Serif+4:opsz,[email protected],600;8..60,700&display=swap"
151      />
152    </noscript>
153
154    <!-- Font Awesome removed: the SPA now uses lucide exclusively, so the
155         render-blocking cdnjs stylesheet is gone entirely. -->
156
157    <!--
158      No JSON-LD here. This shell is the signed-in app, which nginx serves with
159      X-Robots-Tag: noindex, nofollow, so schema on it earns nothing. The block
160      that used to sit here described "Orolith" at $29 and $79 tiers that no
161      longer exist, which is the kind of stale claim that only surfaces once
162      something accidentally indexes it. Structured data for the product lives
163      on the marketing site, where it is kept in step with pricing.
164    -->
165
166    <!-- Blocking theme script: applies dark/light class before first paint to prevent flash -->
167
168    
168<script>
169      ;(function () {
170        try {
171          var stored = localStorage.getItem('orolith-theme')
172          var prefersDark =
173            window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
174          var isDark = stored === 'dark' || (stored !== 'light' && prefersDark)
175          if (isDark) {
176            document.documentElement.classList.add('dark')
177            document.documentElement.style.backgroundColor = '#0f172a'
178            document.documentElement.style.colorScheme = 'dark'
179          } else {
180            document.documentElement.classList.add('light')
181            document.documentElement.style.backgroundColor = '#f8fafc'
182          }
183        } catch (e) {}
184      })()
185    </script>
185
186    
186<script type="module" crossorigin src="/app/assets/index-BNPflmqD.js"></script>
186
187    <link rel="modulepreload" crossorigin href="/app/assets/vendor-misc-5pJBpqhN.js">
188    <link rel="modulepreload" crossorigin href="/app/assets/vendor-vue-BIDZeepx.js">
189    <link rel="modulepreload" crossorigin href="/app/assets/vendor-tanstack-B6ELLr_Q.js">
190    <link rel="modulepreload" crossorigin href="/app/assets/vendor-sentry-84cD2ryj.js">
191    <link rel="modulepreload" crossorigin href="/app/assets/vendor-utils-CxkvrZ9U.js">
192    <link rel="stylesheet" crossorigin href="/app/assets/vendor-vue-C7FFelxn.css">
193    <link rel="stylesheet" crossorigin href="/app/assets/index-CDUGBYcW.css">
194  <link rel="manifest" href="/app/manifest.webmanifest">
194<script id="vite-plugin-pwa:register-sw" src="/app/registerSW.js"></script>
194</head>
195
196  <body>
197    <div id="app"></div>
198  </body>
199</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.