Button guide

Share a Python SEO script with your marketing team they upload a keyword or URL list and download the results

You can share a Python SEO script with your marketing team by installing the Button runner on your computer and turning the script into a web form at https://button.bitgate.dev. Colleagues open the link, upload their CSVs (up to 25 MB per file and 8 files per run) and download the output without installing Python. The Free plan is $0 for 1 published tool, 3 invited people and 100 runs per month, and everything executes on your own machine for up to 30 minutes per run.

Scripts that fit a web form

If you have scripts sitting on your machine that take a file, run for a few minutes and spit out a new CSV, they'll work well here.

A few common ones:

  • Keyword clustering. A colleague uploads a keyword CSV and picks the number of clusters as a number input. Your script reads the file, groups the terms and writes the clustered CSV to the output folder.
  • URL status checks. Someone drops in a list of URLs to check after a migration or a content update, and gets back a file with the status codes.
  • Redirect mapping. They upload two files - one with old URLs, one with new URLs - and the script maps the closest matches and outputs a redirect sheet.

Button isn't limit-free, and it's the wrong choice for some jobs. Every run caps out at 30 minutes, and your computer only runs one job at a time. So big site-wide crawls belong elsewhere - on a dedicated server or a cloud crawler that can run for hours in parallel. Also, since jobs run on your own machine, your computer has to be switched on and online whenever the team wants to use the tool. If your laptop is shut in your bag, the tool page shows Offline and nobody can run it until you're back online.

Getting your Python script ready

Before you hook the script up to Button, make sure it doesn't rely on hard-coded file paths on your desktop or input() prompts in the terminal. It needs to take its inputs as command-line arguments using something like Python's argparse, read the input file path from an argument, and write the finished files into an output folder that's also passed in as an argument.

Here's a small keyword clustering script. It expects a CSV with a keyword column and needs pandas and scikit-learn:

import argparse
import os

import pandas as pd
from sklearn.cluster import KMeans
from sklearn.feature_extraction.text import TfidfVectorizer

parser = argparse.ArgumentParser()
parser.add_argument("--keywords", required=True)
parser.add_argument("--clusters", type=int, required=True)
parser.add_argument("--out-dir", required=True)
args = parser.parse_args()

df = pd.read_csv(args.keywords)
vectors = TfidfVectorizer().fit_transform(df["keyword"])
model = KMeans(n_clusters=args.clusters, n_init=10, random_state=0)
df["cluster"] = model.fit_predict(vectors)
df.sort_values("cluster").to_csv(os.path.join(args.out_dir, "clustered_keywords.csv"), index=False)

When you set this up in Button, fixed flags like --keywords and --clusters are part of the command you approve on your machine. Your colleagues never see flags or type them in; they only supply the values for the form fields you create.

The runner passes every form value to your program as its own argument, with no shell in between, and it rejects any value that starts with -. It also pins the exact command you approved by hash, and if you change the tool later, people have to confirm the new version before they run it.

How to publish the script and invite your team

Setting this up takes a few steps on your computer and in the browser. (And while we're talking about Python here, the runner works the same way with Node, R, PowerShell, shell scripts or compiled binaries.)

  1. Sign in at https://button.bitgate.dev.
  2. Install the Button runner on your computer using the one-line command the site shows you. It's a curl command on macOS and Linux, or a PowerShell command on Windows.
  3. Open the local setup page on your computer and pick your Python script.
  4. Set up the inputs your colleagues will fill out. You can add text, number, yes/no, choice and file fields - so for the clustering script, you'd add a file input for the keyword CSV and a number input for the cluster count.
  5. Approve the command on your computer and publish the tool. Button gives the tool its own web page.
  6. Invite your colleagues by email.

When someone on the marketing team gets the invite email, they open the link and sign in with Google or a one-time email code. They don't install anything, and they never pay. They see whether your computer is Ready, Busy or Offline, fill in the form, press Run and download the results once the script finishes.

Every run is logged with who ran it and when, and if someone leaves the team or only needs temporary access, you can revoke their access or set it to expire at any time.

Plans, limits and how files are handled

When someone runs your tool, the job happens on your computer, never in Button's cloud, though the form values and files do pass through Button's servers to get between the user's browser and your machine. Button deletes input files 24 hours after a run ends, and deletes the outputs after 7 days.

Here are the numbers for both plans and the per-run limits:

Item Free Pro
Price $0 $15/month, or $144/year ($12/month)
Published tools 1 50
Invited people (you don't count; recipients never pay) 3 250
Runs per month (includes your own runs) 100 5,000
File transfer per month 1 GB 50 GB
Computers (runners) per workspace 1 1
Max file size 25 MB per file (up to 8 files and 100 MB per run) 25 MB per file (up to 8 files and 100 MB per run)
Max run time and concurrency 30 minutes per run, 1 run at a time 30 minutes per run, 1 run at a time
Max log size 1 MB per run 1 MB per run

If you try Pro and decide to go back to Free later, downgrading deletes nothing. Also keep in mind that every workspace has one computer paired to it; if you pair a new computer, it replaces the previous one.

FAQ

Does my computer have to stay on for the team to run my script?

Yes, because jobs run directly on your machine rather than in Button's cloud, your computer has to be on and connected to the internet. The tool's page shows Ready, Busy or Offline so your team knows if it's available, and it runs one job at a time.

Do my colleagues need a paid account or Python installed?

No, recipients never pay and don't install anything on their machines. They open the link from their invite email, sign in with Google or a one-time email code, fill out the form in their browser and download the output files.

Where do the uploaded CSVs and output files go?

Button's servers relay the form values and files between your colleague's browser and your computer, where the script runs. Inputs are deleted from Button 24 hours after a run finishes, and output files are deleted after 7 days.

Can someone pass extra flags through the form to run something else on my machine?

No. The runner only executes the exact command you approved on your computer (pinned by hash), passes every form value as its own argument without a shell, and blocks values starting with "-".

Can I connect both my laptop and a desktop to the same workspace?

No, every plan supports one computer (runner) per workspace. If you pair a new computer to your workspace, it replaces the one you had paired before.

Last updated

Put your script behind a form

Button turns a script on your computer into a web form. Colleagues sign in, fill it in, press Run and download the results. Free for 1 tool and 3 people.