Skip to content

Commit 74f4bdb

Browse files
author
PrintableTools Lab Bot
committed
Queue TechTools exact upload retries
1 parent 9be3afd commit 74f4bdb

3 files changed

Lines changed: 82 additions & 9 deletions

File tree

scripts/directory-monitor.cjs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,23 @@ const freenosignupUploadFixListings = [
9898
["Resize Signature 200x100", "exact 200 x 100 px signature resize path"],
9999
];
100100

101+
const techtoolsExactUploadLimitListings = [
102+
["Photo 480x640 Under 200KB", "exact 480 x 640 px and 200KB photo path"],
103+
["Photo 512x512 Under 100KB", "exact 512 x 512 px and 100KB photo path"],
104+
["Signature 160x70 Under 20KB", "exact 160 x 70 px and 20KB signature path"],
105+
["Signature 250x80 Under 50KB", "exact 250 x 80 px and 50KB signature path"],
106+
["Signature 300x60 Under 20KB", "exact 300 x 60 px and 20KB signature path"],
107+
["Signature 400x150 Under 50KB", "exact 400 x 150 px and 50KB signature path"],
108+
["Photo 150x200 Under 20KB", "exact 150 x 200 px and 20KB photo path"],
109+
["Photo 180x240 Under 50KB", "exact 180 x 240 px and 50KB photo path"],
110+
["Photo 400x514 Under 100KB", "exact 400 x 514 px and 100KB photo path"],
111+
["Photo 600x800 Under 200KB", "exact 600 x 800 px and 200KB photo path"],
112+
["Signature 100x50 Under 10KB", "exact 100 x 50 px and 10KB signature path"],
113+
["Signature 200x60 Under 20KB", "exact 200 x 60 px and 20KB signature path"],
114+
["Signature 256x64 Under 20KB", "exact 256 x 64 px and 20KB signature path"],
115+
["Signature 400x200 Under 100KB", "exact 400 x 200 px and 100KB signature path"],
116+
];
117+
101118
const directories = [
102119
{
103120
name: "Zearches",
@@ -699,6 +716,14 @@ const directories = [
699716
submittedAt: "2026-06-09",
700717
reviewWindow: "auto-approved API listing for the common 35 x 45 mm passport-style photo workflow",
701718
},
719+
...techtoolsExactUploadLimitListings.map(([title, reason]) => ({
720+
name: `TechTools Launchpad ${title.toLowerCase()} listing`,
721+
url: "https://techtools.cz/tools/launchpad/",
722+
searchUrl: "https://techtools.cz/launchpad-api/tools?per_page=100&sort=recent",
723+
expected: [siteHost, title],
724+
submittedAt: "2026-06-09",
725+
reviewWindow: `auto-approved API listing after rate-limit retry for the ${reason}`,
726+
})),
702727
{
703728
name: "NoSignupTools",
704729
url: "https://nosignuptools.com/",

scripts/submit-techtools-upload-error-backlog.cjs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ const latestExactUploadLimitBacklog = [
1414
["signature-250x80-50kb", "Signature 250x80 Under 50KB", "signature_250x80_50kb_2026_06", "signature_250x80_50kb_landing", "Free no-signup 250 x 80 signature and 50KB upload workflow.", "PrintableTools Lab Signature 250x80 Under 50KB helps people blocked when an application, school, job, bank, or admin upload page requires both an exact 250 x 80 px signature image and a 50KB cap. The page opens browser resize and compression steps, keeps ordinary files local, and includes an optional public-safe $9 Upload Limit Fix Plan request after fit is confirmed."],
1515
["signature-300x60-20kb", "Signature 300x60 Under 20KB", "signature_300x60_20kb_2026_06", "signature_300x60_20kb_landing", "Free no-signup 300 x 60 signature and strict 20KB upload workflow.", "PrintableTools Lab Signature 300x60 Under 20KB helps people blocked when an exam, job, school, bank, or admin upload page requires both an exact 300 x 60 px signature image and a tiny 20KB cap. The page opens browser resize and compression steps, keeps ordinary files local, and includes an optional public-safe $9 Upload Limit Fix Plan request after fit is confirmed."],
1616
["signature-400x150-50kb", "Signature 400x150 Under 50KB", "signature_400x150_50kb_2026_06", "signature_400x150_50kb_landing", "Free no-signup 400 x 150 signature and 50KB upload workflow.", "PrintableTools Lab Signature 400x150 Under 50KB helps people blocked when a document, job, school, bank, or admin upload page requires both an exact 400 x 150 px signature image and a 50KB cap. The page opens browser resize and compression steps, keeps ordinary files local, and includes an optional public-safe $9 Upload Limit Fix Plan request after fit is confirmed."],
17+
["photo-150x200-20kb", "Photo 150x200 Under 20KB", "photo_150x200_20kb_2026_06", "photo_150x200_20kb_landing", "Free no-signup 150 x 200 photo and strict 20KB upload workflow.", "PrintableTools Lab Photo 150x200 Under 20KB helps people blocked by application, school, exam, profile, and admin upload forms that require exact 150 x 200 px portrait dimensions plus a tiny 20KB cap. The page points visitors through local browser resize and image-to-KB steps, then offers an optional public-safe $9 Upload Limit Fix Plan request without asking for private files, IDs, logins, or payment details."],
18+
["photo-180x240-50kb", "Photo 180x240 Under 50KB", "photo_180x240_50kb_2026_06", "photo_180x240_50kb_landing", "Free no-signup 180 x 240 photo and 50KB upload workflow.", "PrintableTools Lab Photo 180x240 Under 50KB helps people blocked by application, profile, school, exam, and admin upload forms that require exact 180 x 240 px portrait dimensions plus a 50KB cap. The page points visitors through local browser resize and image-to-KB steps, then offers an optional public-safe $9 Upload Limit Fix Plan request without asking for private files, IDs, logins, or payment details."],
19+
["photo-400x514-100kb", "Photo 400x514 Under 100KB", "photo_400x514_100kb_2026_06", "photo_400x514_100kb_landing", "Free no-signup 400 x 514 photo and 100KB upload workflow.", "PrintableTools Lab Photo 400x514 Under 100KB helps people blocked by application, profile, document, and admin upload forms that require exact 400 x 514 px portrait dimensions plus a 100KB file-size cap. The page points visitors through local browser resize and compression steps, then offers an optional public-safe $9 Upload Limit Fix Plan request without asking for private files, IDs, logins, or payment details."],
20+
["photo-600x800-200kb", "Photo 600x800 Under 200KB", "photo_600x800_200kb_2026_06", "photo_600x800_200kb_landing", "Free no-signup 600 x 800 photo and 200KB upload workflow.", "PrintableTools Lab Photo 600x800 Under 200KB helps people blocked by application, profile, school, marketplace, and admin upload forms that require exact 600 x 800 px portrait dimensions plus a 200KB file-size cap. The page points visitors through local browser resize and compression steps, then offers an optional public-safe $9 Upload Limit Fix Plan request without asking for private files, IDs, logins, or payment details."],
21+
["signature-100x50-10kb", "Signature 100x50 Under 10KB", "signature_100x50_10kb_2026_06", "signature_100x50_10kb_landing", "Free no-signup 100 x 50 signature and strict 10KB upload workflow.", "PrintableTools Lab Signature 100x50 Under 10KB helps people blocked when an exam, job, school, bank, or admin upload page requires both an exact 100 x 50 px signature image and a tiny 10KB cap. The page opens browser resize and compression steps, keeps ordinary files local, and includes an optional public-safe $9 Upload Limit Fix Plan request after fit is confirmed."],
22+
["signature-200x60-20kb", "Signature 200x60 Under 20KB", "signature_200x60_20kb_2026_06", "signature_200x60_20kb_landing", "Free no-signup 200 x 60 signature and strict 20KB upload workflow.", "PrintableTools Lab Signature 200x60 Under 20KB helps people blocked when an application, exam, job, school, bank, or admin upload page requires both an exact 200 x 60 px signature image and a strict 20KB cap. The page opens browser resize and compression steps, keeps ordinary files local, and includes an optional public-safe $9 Upload Limit Fix Plan request after fit is confirmed."],
23+
["signature-256x64-20kb", "Signature 256x64 Under 20KB", "signature_256x64_20kb_2026_06", "signature_256x64_20kb_landing", "Free no-signup 256 x 64 signature and strict 20KB upload workflow.", "PrintableTools Lab Signature 256x64 Under 20KB helps people blocked when a portal requires both an exact 256 x 64 px signature image and a strict 20KB cap. The page opens browser resize and compression steps, keeps ordinary files local, and includes an optional public-safe $9 Upload Limit Fix Plan request after fit is confirmed."],
24+
["signature-400x200-100kb", "Signature 400x200 Under 100KB", "signature_400x200_100kb_2026_06", "signature_400x200_100kb_landing", "Free no-signup 400 x 200 signature and 100KB upload workflow.", "PrintableTools Lab Signature 400x200 Under 100KB helps people blocked when a document, job, school, bank, or admin upload page requires both an exact 400 x 200 px signature image and a 100KB cap. The page opens browser resize and compression steps, keeps ordinary files local, and includes an optional public-safe $9 Upload Limit Fix Plan request after fit is confirmed."],
1725
];
1826

1927
const backlog = [

scripts/verify-seo.cjs

Lines changed: 49 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -770,6 +770,22 @@ else {
770770
"Signature 400x200 Under 100KB",
771771
"Resize Signature 200x100",
772772
];
773+
const techtoolsExactUploadTitles = [
774+
"Photo 480x640 Under 200KB",
775+
"Photo 512x512 Under 100KB",
776+
"Signature 160x70 Under 20KB",
777+
"Signature 250x80 Under 50KB",
778+
"Signature 300x60 Under 20KB",
779+
"Signature 400x150 Under 50KB",
780+
"Photo 150x200 Under 20KB",
781+
"Photo 180x240 Under 50KB",
782+
"Photo 400x514 Under 100KB",
783+
"Photo 600x800 Under 200KB",
784+
"Signature 100x50 Under 10KB",
785+
"Signature 200x60 Under 20KB",
786+
"Signature 256x64 Under 20KB",
787+
"Signature 400x200 Under 100KB",
788+
];
773789
if (!directoryMonitorScript.includes("NoSignupTools overdue invoice reminder listing") || !directoryMonitorScript.includes("Overdue+Invoice+Reminder+Email")) failures.push("Directory monitor missing NoSignupTools overdue invoice reminder submission tracking.");
774790
if (!directoryMonitorScript.includes("NoSignupTools upload limit fixer listing") || !directoryMonitorScript.includes("Upload+Limit+Fixer")) failures.push("Directory monitor missing NoSignupTools upload limit fixer submission tracking.");
775791
if (!directoryMonitorScript.includes("NoSignupTools upload error cheatsheet listing") || !directoryMonitorScript.includes("Upload+Error+Cheatsheet")) failures.push("Directory monitor missing NoSignupTools upload error cheatsheet submission tracking.");
@@ -849,6 +865,10 @@ else {
849865
if (!directoryMonitorScript.includes("TechTools Launchpad signature under 50KB listing") || !directoryMonitorScript.includes("Signature Under 50KB")) failures.push("Directory monitor missing TechTools signature 50KB listing tracking.");
850866
if (!directoryMonitorScript.includes("TechTools Launchpad resize signature 140x60 listing") || !directoryMonitorScript.includes("Resize Signature 140x60")) failures.push("Directory monitor missing TechTools resize signature 140x60 listing tracking.");
851867
if (!directoryMonitorScript.includes("TechTools Launchpad photo 200x230 under 50KB listing") || !directoryMonitorScript.includes("Photo 200x230 Under 50KB")) failures.push("Directory monitor missing TechTools photo 200x230 under 50KB listing tracking.");
868+
if (!directoryMonitorScript.includes("techtoolsExactUploadLimitListings")) failures.push("Directory monitor missing data-driven TechTools exact upload-limit retry tracking.");
869+
for (const title of techtoolsExactUploadTitles) {
870+
if (!directoryMonitorScript.includes(title)) failures.push(`Directory monitor missing TechTools exact upload-limit tracking: ${title}.`);
871+
}
852872
if (!directoryMonitorScript.includes("TechTools Launchpad photo 240x320 under 50KB listing") || !directoryMonitorScript.includes("Photo 240x320 Under 50KB")) failures.push("Directory monitor missing TechTools photo 240x320 under 50KB listing tracking.");
853873
if (!directoryMonitorScript.includes("TechTools Launchpad photo 295x413 under 35KB listing") || !directoryMonitorScript.includes("Photo 295x413 Under 35KB")) failures.push("Directory monitor missing TechTools photo 295x413 under 35KB listing tracking.");
854874
if (!directoryMonitorScript.includes("TechTools Launchpad photo 354x472 under 100KB listing") || !directoryMonitorScript.includes("Photo 354x472 Under 100KB")) failures.push("Directory monitor missing TechTools photo 354x472 under 100KB listing tracking.");
@@ -916,11 +936,32 @@ for (const [reportName, shareUrl, campaign] of [
916936
}
917937
}
918938
const techtoolsLatestExactRateLimitFile = path.join(root, "reports", "techtools-upload-error-backlog-rate-limit.json");
919-
if (!fs.existsSync(techtoolsLatestExactRateLimitFile)) failures.push("Missing TechTools latest exact upload-limit rate-limit retry report.");
920-
else {
921-
const report = fs.readFileSync(techtoolsLatestExactRateLimitFile, "utf8");
922-
for (const pending of ["Photo 480x640 Under 200KB", "Photo 512x512 Under 100KB", "Signature 160x70 Under 20KB", "Signature 250x80 Under 50KB", "Signature 300x60 Under 20KB", "Signature 400x150 Under 50KB"]) {
923-
if (!report.includes(pending)) failures.push(`TechTools latest exact upload-limit rate-limit report missing pending retry item: ${pending}.`);
939+
const techtoolsLatestExactRateLimitReport = fs.existsSync(techtoolsLatestExactRateLimitFile) ? fs.readFileSync(techtoolsLatestExactRateLimitFile, "utf8") : "";
940+
const techtoolsUploadBacklogScriptFile = path.join(root, "scripts", "submit-techtools-upload-error-backlog.cjs");
941+
const techtoolsUploadBacklogScript = fs.existsSync(techtoolsUploadBacklogScriptFile) ? fs.readFileSync(techtoolsUploadBacklogScriptFile, "utf8") : "";
942+
if (!techtoolsLatestExactRateLimitReport && !techtoolsUploadBacklogScript) failures.push("Missing TechTools latest exact upload-limit retry evidence.");
943+
for (const [pending, reportName, campaign] of [
944+
["Photo 480x640 Under 200KB", "techtools-photo-480x640-200kb-submit.json", "photo_480x640_200kb_2026_06"],
945+
["Photo 512x512 Under 100KB", "techtools-photo-512x512-100kb-submit.json", "photo_512x512_100kb_2026_06"],
946+
["Signature 160x70 Under 20KB", "techtools-signature-160x70-20kb-submit.json", "signature_160x70_20kb_2026_06"],
947+
["Signature 250x80 Under 50KB", "techtools-signature-250x80-50kb-submit.json", "signature_250x80_50kb_2026_06"],
948+
["Signature 300x60 Under 20KB", "techtools-signature-300x60-20kb-submit.json", "signature_300x60_20kb_2026_06"],
949+
["Signature 400x150 Under 50KB", "techtools-signature-400x150-50kb-submit.json", "signature_400x150_50kb_2026_06"],
950+
["Photo 150x200 Under 20KB", "techtools-photo-150x200-20kb-submit.json", "photo_150x200_20kb_2026_06"],
951+
["Photo 180x240 Under 50KB", "techtools-photo-180x240-50kb-submit.json", "photo_180x240_50kb_2026_06"],
952+
["Photo 400x514 Under 100KB", "techtools-photo-400x514-100kb-submit.json", "photo_400x514_100kb_2026_06"],
953+
["Photo 600x800 Under 200KB", "techtools-photo-600x800-200kb-submit.json", "photo_600x800_200kb_2026_06"],
954+
["Signature 100x50 Under 10KB", "techtools-signature-100x50-10kb-submit.json", "signature_100x50_10kb_2026_06"],
955+
["Signature 200x60 Under 20KB", "techtools-signature-200x60-20kb-submit.json", "signature_200x60_20kb_2026_06"],
956+
["Signature 256x64 Under 20KB", "techtools-signature-256x64-20kb-submit.json", "signature_256x64_20kb_2026_06"],
957+
["Signature 400x200 Under 100KB", "techtools-signature-400x200-100kb-submit.json", "signature_400x200_100kb_2026_06"],
958+
]) {
959+
const reportFile = path.join(root, "reports", reportName);
960+
if (fs.existsSync(reportFile)) {
961+
const report = fs.readFileSync(reportFile, "utf8");
962+
if (!report.includes(campaign) || !report.includes("https://techtools.cz/tools/launchpad/?tool=")) failures.push(`TechTools exact upload-limit report missing live evidence: ${reportName}`);
963+
} else if (!techtoolsLatestExactRateLimitReport.includes(pending) && (!techtoolsUploadBacklogScript.includes(pending) || !techtoolsUploadBacklogScript.includes(campaign))) {
964+
failures.push(`TechTools exact upload-limit item is neither live, rate-limited, nor queued for retry: ${pending}.`);
924965
}
925966
}
926967
const techtoolsResumePdfTooLargeReportFile = path.join(root, "reports", "techtools-resume-pdf-too-large-upload-fix-submit.json");
@@ -1043,11 +1084,10 @@ for (const [label, fileName, campaign, liveUrl, title] of [
10431084
if (!report.includes(liveUrl) || !report.includes(campaign) || !report.includes(title)) failures.push(`TechTools ${label} submission report missing live evidence.`);
10441085
}
10451086
}
1046-
const techtoolsUploadBacklogScriptFile = path.join(root, "scripts", "submit-techtools-upload-error-backlog.cjs");
1047-
if (!fs.existsSync(techtoolsUploadBacklogScriptFile)) failures.push("Missing TechTools upload-error backlog retry script.");
1087+
if (!techtoolsUploadBacklogScript) failures.push("Missing TechTools upload-error backlog retry script.");
10481088
else {
1049-
const script = fs.readFileSync(techtoolsUploadBacklogScriptFile, "utf8");
1050-
if (!script.includes("Image Dimensions 600x600 Upload Fix") || !script.includes("PDF Not Accepted JPG Required Fix") || !script.includes("Email Attachment Too Large PDF Fix") || !script.includes("PDF Under 2MB Upload Fix") || !script.includes("Resume PDF Under 2MB Upload Fix") || !script.includes("Document Under 5MB Upload Fix") || !script.includes("PDF Size Reducer") || !script.includes("Compress PDF to 2MB") || !script.includes("Compress PDF to 5MB") || !script.includes("Compress PDF Without Uploading") || !script.includes("PDF to JPG Without Uploading") || !script.includes("JPG to PDF Without Uploading") || !script.includes("Extract Text From PDF Without Uploading") || !script.includes("Merge PDF Without Uploading") || !script.includes("Split PDF Without Uploading") || !script.includes("rateLimited") || !script.includes("techtools-upload-error-backlog-rate-limit.json")) failures.push("TechTools upload-error backlog retry script missing remaining high-intent listing payloads or rate-limit handling.");
1089+
const script = techtoolsUploadBacklogScript;
1090+
if (!script.includes("Image Dimensions 600x600 Upload Fix") || !script.includes("PDF Not Accepted JPG Required Fix") || !script.includes("Email Attachment Too Large PDF Fix") || !script.includes("PDF Under 2MB Upload Fix") || !script.includes("Resume PDF Under 2MB Upload Fix") || !script.includes("Document Under 5MB Upload Fix") || !script.includes("PDF Size Reducer") || !script.includes("Compress PDF to 2MB") || !script.includes("Compress PDF to 5MB") || !script.includes("Compress PDF Without Uploading") || !script.includes("PDF to JPG Without Uploading") || !script.includes("JPG to PDF Without Uploading") || !script.includes("Extract Text From PDF Without Uploading") || !script.includes("Merge PDF Without Uploading") || !script.includes("Split PDF Without Uploading") || !script.includes("Photo 150x200 Under 20KB") || !script.includes("Signature 400x200 Under 100KB") || !script.includes("rateLimited") || !script.includes("techtools-upload-error-backlog-rate-limit.json")) failures.push("TechTools upload-error backlog retry script missing remaining high-intent listing payloads or rate-limit handling.");
10511091
}
10521092
for (const [name, reportName, campaign, reviewUrl] of [
10531093
["PDF under 2MB", "nosignuptools-pdf-under-2mb-upload-fix-submit.json", "pdf_under_2mb_upload_fix_2026_06", "https://nosignuptools.com/tools/pdf-under-2mb-upload-fix-by-printabletools-lab"],

0 commit comments

Comments
 (0)