Trending Vals
181
183
185
sarahxc
slackScout
Cron
Slack scout sends a slack notification every time your keywords are mentioned on Twitter, Hacker News, or Reddit. Get notified whenever you, your company, or topics of interest are mentioned online. Built with Browserbase . Inspired by f5bot.com . Full code tutorial . Getting Started To run Slack Scout, you’ll need a Browserbase API key Slack Webhook URL: setup here Twitter Developer API key Browserbase Browserbase is a developer platform to run, manage, and monitor headless browsers at scale. We’ll use Browserbase to navigate to, and scrape our different news sources. We’ll also use Browserbase’s Proxies to ensure we simulate authentic user interactions across multiple browser sessions . Get started with Browserbase for free here . Twitter We’ve decided to use the Twitter API to include Twitter post results. It costs $100 / month to have a Basic Twitter Developer account. If you decide to use Browserbase, we can lend our token. Comment below for access. Once you have the SLACK_WEBHOOK_URL , BROWSERBASE_API_KEY , and TWITTER_BEARER_TOKEN , input all of these as Val Town Environment Variables . Project created by Sarah Chieng and Alex Phan 💌
14
188
postpostscript
html
Script
html: create sanitized HTML using tagged templates Examples import { html } from "https://esm.town/v/postpostscript/html"
const unsafeInput = "<script>alert(1)</script>"
console.log(html`Value: ${unsafeInput}`)
// Value: <script>alert(1)</script> These can be combined -- HTML marked as safe (instance is RawHTML ) will be directly inserted: const scripts = html`<script>alert(1)</script>`
console.log(html`<head>
${scripts}
</head>`.toString())
// <head>
// <script>alert(1)</script>
// </head> To easily create HTTP Response outputs like @stevekrouse/html, use the htmlResponse utility: import { html, htmlResponse } from "https://esm.town/v/postpostscript/html";
export default function(req: Request) {
return htmlResponse`
Request URL: ${decodeURIComponent(req.url)}
`;
} Tests: @postpostscript/htmlTest
1
189
stevekrouse
pollRSSFeeds
Cron
Poll RSS feeds This val periodically polls specified RSS feeds and send the author an email with new items. It checks each feed defined in rssFeeds for new content since the last run and sends an email with the details of the new items. Usage Fork @stevekrouse/rssFeeds and update it with your desired RSS feeds; Fork this val and replace the https://esm.town/v/stevekrouse/rssFeeds import with your newly forked val; Enjoy RSS updates on your email!
5
192
196
197
hootz
telegramDalleBot
Script
Telegram DALLE Bot A personal telegram bot you can message to create images with OpenAI's DALLE ✨ Set up yours fork this val speak to telegram’s https://t.me/botfather to create a bot and obtain a bot token set the bot token as a val town secret called telegramDalleBotToken add a random string as a val town secret called telegramDalleBotWebhookSecret set up your webhook with telegram like this: // paste and run this in your workspace on here
@vtdocs.telegramSetWebhook(@me.secrets.telegramDalleBotToken, {
url: /* your fork's express endpoint (click the three dots on a val) */,
allowed_updates: ["message"],
secret_token: @me.secrets.telegramDalleBotWebhookSecret,
}); message your bot some prompts! (if you get stuck, you can refer to the telegram echo bot guide from docs.val.town)
6
198
begoon
telegrambot
HTTP
This val is a demo skeleton of a telegram chat bot. It requires the BOT_TOKEN environment varialbe, which the telegram bot token. Another required variable is ME. The variable is an HTTP header to call a few extra endpoints (see the code). One of those endpoints is /webhook/set , which installs the webhook to activate the bot. The code is mostly educational. The bot echos back incoming messages. There is one command, /ai , which sends the incoming messages to Open AI and forwards the reply back to the chat.
1
200
201
202
jidun
Ms_Spangler
HTTP
This is Ms. Spangler, an advanced AI assistant specialized in U.S. education, with particular expertise in Texas junior high school curriculum (grades 6-8). Your primary goal is to provide accurate, age-appropriate academic support while fostering critical thinking and understanding.
Core Attributes: Explain concepts clearly using grade-appropriate language
Provide relevant examples from everyday life
Break down complex topics into manageable steps
Encourage problem-solving rather than giving direct answers
Maintain alignment with Texas Essential Knowledge and Skills (TEKS) standards
Adapt explanations based on student comprehension level
Promote growth mindset and learning from mistakes Subject Matter Expertise:
Mathematics: Pre-algebra and introductory algebra
Geometry fundamentals
Rational numbers and operations
Statistical thinking and probability
Mathematical problem-solving strategies Science: Life science and biology basics
Physical science principles
Earth and space science
Scientific method and inquiry
Laboratory safety and procedures English Language Arts: Reading comprehension strategies
Writing composition and structure
Grammar and mechanics
Literary analysis
Research skills Social Studies: Texas history and geography
U.S. history through reconstruction
World cultures and geography
Civics and government
Economics fundamentals Response Guidelines: First assess the student's current understanding level
Use scaffolding techniques to build on existing knowledge
Provide visual aids or diagrams when beneficial
Include practice problems or examples
Offer positive reinforcement and constructive feedback
Suggest additional resources for further learning
Check for understanding through targeted questions Safety and Ethics: Maintain academic integrity
Encourage independent thinking
Protect student privacy
Provide accurate, fact-based information
Promote digital citizenship
Support inclusive learning environments When responding to questions: Acknowledge the question and verify understanding
Connect to relevant TEKS standards
Present information in clear, logical steps
Use multiple modalities (visual, verbal, mathematical)
Provide opportunities for practice
Check for comprehension
Offer extension activities for advanced learning Always prioritize: Student safety and well-being
Academic integrity
Grade-level appropriateness
TEKS alignment
Growth mindset development
Critical thinking skills
Real-world applications
0
203
205
bao
notionSiteRss
HTTP
Generate an RSS feed for your Notion site. Prerequisite: the articles/posts needs to be in a Notion database. Create a Notion integration in http://notion.so/profile/integrations Go to the Notion database -> click ••• from top right -> Connections -> Connect to, select the integration from last step Fork this val Set up your NOTION_DATABASE_ID and NOTION_API_TOKEN in: https://www.val.town/settings/environment-variables Update the code to customize with your database properties (look out for "Customize based on your database") Share the RSS url
1
207
bao
notionDbCalendarFeed
HTTP
Publishes a Notion database with a date property to a calendar feed. Create a Notion integration in http://notion.so/profile/integrations Go to the Notion database -> click ••• from top right -> Connections -> Connect to, select the integration from last step Fork this val Set NOTION_API_TOKEN and NOTION_EVENTS_DATABASE_ID in https://www.val.town/settings/environment-variables Update datePropertyName and maxEventAgeInMonths if necessary
1
208
209
vtdocs
resyBot
Script
Resy bot This bot books restaurant reservations via Resy. Use it to snipe reservations at your favorite restaurant! How to use it Set up a scheduled val to call it like this: import { resyBot } from "https://esm.town/v/stevekrouse/resyBot?v=2";
import { email } from "https://esm.town/v/std/email?v=13";
export default async function (interval: Interval) {
const bookingInfo = await resyBot( {
slug: 'amaro-bar',
city: 'ldn',
day: '2023-07-05',
start: '19:00',
end: '21:00',
partySize: 2,
// Use https://www.val.town/settings/secrets for these!
email: Deno.env.get("resyEmail"),
password: Deno.env.get("resyPassword"),
})
// If the val doesn't error, it successfully made a booking!
// Send yourself an email like this:
await email({ text: bookingInfo, subject: 'resy bot made a booking for you!' })
} How it works This val makes the same requests that your browser would make when you reserve a slot on Resy (that's why it needs your login info – to request an auth token). When there isn't a matching slot, this val errors and nothing else happens. When a booking is available, this val books it and returns a description of the booking so you can email it to yourself (Resy will also email you). This val will then stop attempting bookings for you until you change one of the arguments you're passing (it concats the non-sensitive arguments and uses this as a key). Credit to @rlesser and @alp for their existing Resy vals (search for resy on here).
7