A simple BlueSky profile labeler that can be ran on Cloudflare Workers
github.com/SocksTheWolf/SimpleBSkyLabeler
cf
bsky
profile
label
bluesky
cloudflare
workers
1<!doctype html>
2<html data-theme="dark">
3<head>
4<title>{{TITLE}}</title>
5<!-- Primary Meta Tags -->
6 <meta name="title" content="{{TITLE}}" />
7 <meta name="description" content="{{DESC}}" />
8
9 <!-- Open Graph / Facebook -->
10 <meta property="og:type" content="website" />
11 <meta property="og:url" content="{{HOST}}" />
12 <meta property="og:title" content="{{TITLE}}" />
13 <meta property="og:description" content="{{DESC}}" />
14 <meta property="og:image" content="/img/content-img.jpg" />
15
16 <!-- Twitter -->
17 <meta property="twitter:card" content="summary_large_image" />
18 <meta property="twitter:url" content="{{HOST}}" />
19 <meta property="twitter:title" content="{{TITLE}}" />
20 <meta property="twitter:description" content="{{DESC}}" />
21 <meta property="twitter:image" content="/img/content-img.jpg" />
22<!-- End Meta Tags -->
23
24<!-- Site Required Runtimes/Tags -->
25<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png">
26<link rel="stylesheet" href="/css/pico.min.css" />
27<script type="text/javascript" src="/js/htmx.min.js"></script>
28<script type="text/javascript" src="/js/htmx-ext-response-targets.min.js"></script>
29<style> .output { min-height: 3rem; } </style>
30
31</head>
32<body hx-ext="response-targets">
33 <main class="container">
34 <article>
35 <header><h1>{{TITLE}}</h1></header>
36 <noscript><strong>HEY!</strong> Javascript is necessary in order to use this website.</noscript>
37 <div class="bodyContent"></div>
38 <hr />
39 <!-- Label Site Specific -->
40 <form id="addform" hx-post="/add-account" hx-target="#form-output" hx-target-error="#form-output" hx-swap="innerHTML" hx-indicator="#ind" hx-disabled-elt="#submitButton">
41 <label>
42 BSky Handle:
43 </label>
44 <input type="text" id="username" name="domain" minlength="4" required placeholder="@example.bsky.social" />
45 <small>This should be an user profile URL, URL to a post, a handle in the form of <code>USERNAME.bsky.social</code> or custom domain. Do not put your resolved DID here.</small>
46 <input id="submitButton" type="submit" value="Add" />
47 </form>
48 <center class="output">
49 <span id="ind" aria-busy="true" class="htmx-indicator">Loading...</span><br />
50 <span id="form-output"></span>
51 </center>
52 <footer>
53 </footer>
54 </article>
55 </main>
56 <script src="/js/script.js" type="text/javascript"></script>
57</body>
58</html>