Skip to content

Repository files navigation

Daily Scripts

📊 automated

Welcome to automated – a GitHub-powered dashboard for tracking YouTube channel statistics, cryptocurrency prices (XMR + BTC), and daily GitHub activity streaks using GitHub Actions and GitHub Pages.

🔧 What This Repo Does

This repo uses GitHub Actions to automatically:

  • Fetch YouTube stats (subscribers, views, videos) from multiple channels
  • Track Monero (XMR) and Bitcoin (BTC) prices 3x daily
  • Keep a daily commit streak alive with a timestamp file
  • Display everything neatly on a public GitHub Pages dashboard

📺 YouTube Stats Tracker

  • Pulls stats from 6 YouTube channels
  • Appends to a youtube.csv for long-term tracking
  • Updates a current snapshot in docs/youtube.json
  • Outputs hosted live via GitHub Pages
  • Displays graph for visual representation of growth over time.

📁 Files:

  • youtube/youtube.csv – historical stats
  • docs/youtube.json – latest snapshot (used on website)

⏱ Schedule: every 48 hours


🪙 XMR & BTC Price Logger

  • Fetches prices from CoinGecko
  • Saves to docs/xmr-btc.json and crypto/xmr-btc.csv
  • Useful for price widgets, system tray apps, or analytics

📁 Files:

  • docs/xmr-btc.json – current price snapshot
  • crypto/xmr-btc.csv – historical log

⏱ Schedule: 3x per day (08:00, 14:00, 20:00 UTC)


📆 Daily Streak Keeper

  • Updates a timestamp file (last-updated.txt) once per day
  • Helps maintain a daily commit streak even with no changes
  • Minimal footprint, runs silently without pushing other files

📁 File:

  • last-updated.txt – updated once daily

⏱ Schedule: every day at 09:00 UTC


🌐 GitHub Pages Dashboard

Live site: ➡️ https://uxillary.github.io/automated/

This renders the data visually with JavaScript. JSON is used for live stats display, while CSV files power long-term tracking.


GitHub Lifetime Statistics

The GitHub Lifetime Stats workflow runs daily at 02:23 UTC and can also be started manually with workflow_dispatch. It publishes two plain-integer files:

  • docs/lifetime-contributions.txt is the authenticated contribution-calendar total from account creation through the time of the run. The script fetches the account creation timestamp, splits the UTC range into consecutive windows of at most one calendar year, and sums the GraphQL totalContributions values.
  • docs/release-downloads.txt is the live sum of download counts for uploaded assets that still exist on published releases, including prereleases, in original (non-fork) repositories owned by uxillary. All forks and draft releases are excluded. GitHub's generated source-code ZIP and tar archives, clones, packages, workflow artifacts, GitHub Pages traffic, externally hosted downloads, and deleted releases or assets are not included.

The release scan uses the public owner endpoint for uxillary, then filters out every repository whose GitHub fork flag is set, rather than querying releases from forks. It also avoids the authenticated /user/repos endpoint. This is important for fine-grained tokens: the latter only returns repositories visible to that token and can silently produce an incomplete (or empty) repository list. A zero lifetime contribution result is treated as an API/token visibility error and leaves both existing files untouched instead of publishing misleading zeroes.

The workflow supplies the existing API_GITHUB repository secret to the script as GH_TOKEN. To run it locally, set the token only in your shell environment (do not put it in the repository):

GH_TOKEN="..." node scripts/github_lifetime_stats.js

The mocked test suite never contacts GitHub and does not need a token:

node --test tests/github_lifetime_stats.test.js

GitHub Release Metrics

The daily GitHub Release Metrics workflow records cumulative download counts for uploaded release assets and publishes a historical dataset plus browser-ready summary under docs/metrics/. History begins with the first successful snapshot; GitHub does not provide earlier daily download counts, so none are backfilled.

The explicit allow-list currently tracks uxillary/font-size-tweak and uxillary/maintenance-goblin. Add one entry to scripts/github_release_config.js to track another repository. The workflow uses the existing API_GITHUB secret and can be started from Actions → GitHub Release Metrics → Run workflow. No browser-side GitHub credentials or API calls are used.

Run its tests locally with:

node --test tests/github_release_metrics.test.js

🛠️ Setup Guide

To fork and use this yourself:

  1. Create a GitHub Personal Access Token (for pushing data)
  2. Get a YouTube Data API Key
  3. Set up the required GitHub Secrets:
    • YOUTUBE_API_KEY

Optional (for commit stats, crypto, and streaks):

  • Make sure GitHub Pages is enabled on /docs
  • Set up any additional APIs if using altcoins

🧠 Future Ideas

  • Chart.js or D3.js visuals
  • Weekly summary card generator
  • Discord bot integration
  • Telegram alerts
  • Webhooks for price thresholds

👨‍💻 Maintained by:

@uxillary / AJ Studios
Inspired by automation, powered by caffeine, sustained by daily commits ☕


Project Preview Automation

The Update project previews workflow uses Playwright's Chromium browser to capture consistent, clean website previews at a 1440 × 900 desktop viewport. Screenshots are converted to WebP at quality 85 and stored with capture metadata in generated/project-previews/; these stable assets are intended for consumers such as adamj.link.

Website definitions live only in data/project-previews.json. To add one, append a unique kebab-case slug, display name, verified HTTP(S) url, "enabled": true, and "type": "website". Optional per-project settings include waitFor, delay, viewport, fullPage, hideSelectors, and theme. Only enabled website entries are captured; desktop applications and manually designed covers intentionally remain outside this workflow.

Install dependencies and Chromium, then capture all projects locally:

npm ci
npx playwright install chromium
npm run previews

Capture one configured project with npm run previews -- --project 404cache, or validate the configuration without launching a browser with npm run previews -- --validate-config. To run it on GitHub, open Actions → Update project previews → Run workflow. It also runs every Monday at 03:17 UTC and commits generated changes only when image content or capture status changes. A failed site is recorded in the manifest without stopping other captures or deleting its last known-good image.

About

for all automated tasks

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages