← back to Handbag Auth Nextjs

scripts/signupAllAffiliates.ts

78 lines

// Automated signup for all top affiliate programs
// Opens signup pages one by one, pre-fills forms, waits for manual review

import { openHandbagAffiliateSignup, merchantConfigs, profile } from "./handbagAffiliateSignup";

const TOP_AFFILIATES_TO_SIGNUP = [
  "fashionphile",
  "rebag",
  "therealreal",
];

// Additional merchant configs for top luxury resellers
const ADDITIONAL_MERCHANTS = {
  vestiaire: {
    signupUrl: "https://www.vestiairecollective.com/sell/",
    selectors: {
      email: 'input[type="email"]',
      submitButton: 'button[type="submit"]',
    },
  },
  yoogis: {
    signupUrl: "https://www.yoogiscloset.com/sell-designer-handbags",
    selectors: {
      name: 'input[name="name"]',
      email: 'input[name="email"]',
      submitButton: 'button.submit',
    },
  },
};

async function signupAll() {
  console.log("=== Automated Affiliate Signup ===\n");
  console.log("Business: " + profile.company);
  console.log("Email: " + profile.email);
  console.log("Website: " + profile.websites[0]);
  console.log("\nSigning up for top affiliate programs...\n");

  for (const merchant of TOP_AFFILIATES_TO_SIGNUP) {
    console.log(`\n--- ${merchant.toUpperCase()} ---`);

    const config = merchantConfigs[merchant];
    if (!config) {
      console.log(`No config found for ${merchant}, skipping...`);
      continue;
    }

    try {
      await openHandbagAffiliateSignup(config);

      console.log("\nPress ENTER when you're done reviewing and submitting this form...");
      await new Promise((resolve) => {
        process.stdin.once("data", resolve);
      });
    } catch (error) {
      console.error(`Error with ${merchant}:`, error);
      console.log("Continuing to next merchant...");
    }
  }

  console.log("\n=== All Signups Complete ===");
  console.log("Next steps:");
  console.log("1. Wait for affiliate approval emails");
  console.log("2. Save your affiliate codes/links");
  console.log("3. Update data/handbag_affiliates.json with codes");
  process.exit(0);
}

const isMainModule = import.meta.url === `file://${process.argv[1]}`;

if (isMainModule) {
  signupAll().catch((err) => {
    console.error("Signup failed:", err);
    process.exit(1);
  });
}

export { signupAll };