Upwork High-Spend & Niche Keyword Filter

Show only Upwork jobs with $1K+ spend and keywords from your service niche (marketing, design, dev, SEO, etc.)

// ==UserScript==
// @name         Upwork High-Spend & Niche Keyword Filter
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Show only Upwork jobs with $1K+ spend and keywords from your service niche (marketing, design, dev, SEO, etc.)
// @author       You
// @match        https://www.upwork.com/nx/search/jobs*
// @grant        none
// @run-at       document-idle
// ==/UserScript==

(function () {
  const keywords = [
    "marketing", "digital marketing", "performance marketing", "social media", "facebook ads", "google ads", "ppc",
    "graphic design", "branding", "logo design", "poster", "canva", "photoshop", "illustrator", "figma",
    "video editing", "reels", "after effects", "premiere pro", "motion graphics", "youtube editing",
    "wordpress", "shopify", "cms", "landing page", "elementor", "woocommerce", "web design", "web development",
    "seo", "on-page", "off-page", "technical seo", "local seo", "link building",
    "content writing", "copywriting", "blog writing", "website content", "article writing", "product description",
    "data analytics", "google analytics", "ga4", "gtm", "ads", "google tag manager", "GHL", "Go high level" , "CRM", "reporting", "dashboard", "data studio"
  ];

  const HIGHLIGHT_STYLE = 'background-color: #e6f7ff !important; border-left: 4px solid #1890ff !important;';

  function filterJobCards() {
    let visibleCount = 0;
    const jobCards = document.querySelectorAll('[data-test="JobTileDetails"]');

    jobCards.forEach(card => {
      const spendElement = Array.from(card.querySelectorAll('span, div, strong')).find(el =>
        el.innerText?.toLowerCase().includes('spent')
      );

      let isHighSpender = false;

      if (spendElement) {
        const match = spendElement.innerText.match(/\$([\d.,]+)\s*[kK]?/);
        if (match && match[1]) {
          let amount = parseFloat(match[1].replace(/,/g, ''));
          if (spendElement.innerText.toLowerCase().includes('k')) {
            amount *= 1000;
          }
          if (!isNaN(amount) && amount >= 1000) {
            isHighSpender = true;
          }
        }
      }

      const jobText = card.innerText.toLowerCase();
      const hasKeyword = keywords.some(keyword =>
        new RegExp(`\\b${keyword}\\b`, 'i').test(jobText)
      );

      if (isHighSpender && hasKeyword) {
        card.style.display = 'block';
        card.style = HIGHLIGHT_STYLE;
        visibleCount++;
      } else {
        card.style.display = 'none';
      }
    });

    console.log(`✅ Displaying ${visibleCount} job(s) with $1K+ spend and matching keywords`);
  }

  const observer = new MutationObserver(filterJobCards);
  observer.observe(document.body, { childList: true, subtree: true });

  setTimeout(filterJobCards, 2000);
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址