') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); WangWilly (Willywangkaa) · GitHub
Skip to content
View WangWilly's full-sized avatar
🎋
Available
🎋
Available

Block or report WangWilly

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
WangWilly/README.md

Yuli Wang

I build AI-assisted products, developer tools, and backend systems across computer vision, web automation, fintech, and Web3.

Currently building I Am Model — a LINE AI virtual try-on service for fashion stores. It helps customers choose clothing, upload a photo, preview AI-generated try-on results, and return to the product or sales flow with more confidence.

Website · Portfolio · Medium

Current Focus

  • AI commerce: LINE AI virtual try-on for fashion ecommerce
  • Computer vision: real-time gaze correction and image-to-image workflows
  • Backend systems: Go, Rust, TypeScript, FastAPI, Gin, Axum
  • Web3 infrastructure: Solana, EVM, trading systems, indexing experiments

Selected Work

A product for fashion stores that brings AI try-on into LINE. Customers can select clothing, upload a photo, and see AI-generated try-on results before purchasing.

Keywords: AI virtual try-on, LINE Bot, fashion ecommerce, product workflow, customer confidence

Real-time gaze correction system for video communication, using computer vision and deep learning to improve eye contact during live calls.

Python · TensorFlow · Computer Vision · macOS

Solana trading bot and trading service experiment with Jupiter integration.

TypeScript · Solana · Trading Systems

A Go/Gin REST API template for HR management systems and backend service experiments.

Go · Gin · REST API · MySQL

NLP tool that extracts potential stock ticker symbols from natural-language input.

TypeScript · NLP · Next.js

Tech I Use

Languages: Python, TypeScript, Go, Rust, Java, C++, Solidity
Backend: FastAPI, Gin, Axum, NestJS, Express, Spring
Frontend: React, Next.js, Vue
Data / Infra: PostgreSQL, MySQL, MongoDB, Redis, Docker, Cloudflare
AI / CV: TensorFlow, PyTorch, image processing, NLP
Web3: Solana, Anchor, EVM, Hardhat, Ethers.js

Links

Pinned Loading

  1. gaze-correction-camgaze-correction-camPublic

    The Gaze Correction Camera project is an advanced real-time gaze correction system designed to enhance video communication by improving eye contact. Leveraging state-of-the-art computer vision and …

    Python 95 16

  2. solana-trading-botsolana-trading-botPublic

    Solana Trading Bot / sol-trading-service / Solana 交易机器人 / Jupiter embedded

    TypeScript 18 6

  3. svm-boring-vaultsvm-boring-vaultPublic

    Forked from Veda-Labs/boring-vault-svm

    Implementation of vault system on Solana

    TypeScript

  4. DountyDountyPublic

    A tool to incentivize developers to contribute to open source projects by rewarding them with bounties.

    TypeScript 1

  5. osu-cse-6431osu-cse-6431Public

    Labs for operating systems

    Java 1

  6. rust-patent-protectorrust-patent-protectorPublic

    Toy project to learn building web services with Rust.

    Rust 1