Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 0 additions & 1 deletion .claude/skills/stack127-tool-audit

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/stack127-tool-backend

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/stack127-tool-content-integration

This file was deleted.

1 change: 1 addition & 0 deletions .claude/skills/stack127-tool-copywriting
1 change: 0 additions & 1 deletion .claude/skills/stack127-tool-frontend

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/stack127-tool-interface-design

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/stack127-tool-interface-plan

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/stack127-tool-orchestrator

This file was deleted.

1 change: 1 addition & 0 deletions .claude/skills/stack127-tool-page
1 change: 0 additions & 1 deletion .claude/skills/stack127-tool-product-plan

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/stack127-tool-research

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/stack127-tool-writing

This file was deleted.

5 changes: 2 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,8 @@ Read `stack127_docs/quality-workflow.md`.
## Skills

- General page work: `skills/stack127/page-build/SKILL.md`.
- Tool pipeline: `stack127_docs/tool-pipeline.md` and skills under `skills/stack127/tools/`.
- Existing tool review: `skills/stack127/tools/stack127-tool-audit/SKILL.md`.
- Tool page copy, including rewrites of live pages: `skills/stack127/tools/stack127-tool-writing/SKILL.md`, with `stack127_docs/writing-style.md` and `stack127_docs/shared-ui.md`. Use these repo files instead of any personal or synced copy skill.
- Tool pages, new or reworked: `skills/stack127/stack127-tool-page/SKILL.md`. One tool at a time, with the owner: the plan and the copy each wait for their yes.
- Tool page and tool catalog copy: `skills/stack127/stack127-tool-copywriting/SKILL.md`, with `stack127_docs/writing-style.md`. Use these repo files instead of any personal or synced copy skill.
- Directory page copy, including rewrites of live pages: `skills/stack127/stack127-directory-writing/SKILL.md`.
- Production release: `skills/stack127/stack127-release-e2e/SKILL.md`.
- Self-host app work: skills under `skills/self-host-apps/`.
Expand Down
3 changes: 3 additions & 0 deletions app/(site)/(catalogs)/[slug]/content/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import HostingCloudToolsIntro from "./hosting-cloud-tools/intro.mdx";
import KdpToolsArticle from "./kdp-tools/article.mdx";
import KdpToolsIntro from "./kdp-tools/intro.mdx";
import ProductivityToolsIntro from "./productivity-tools/intro.mdx";
import PublisherToolsArticle from "./publisher-tools/article.mdx";
import PublisherToolsIntro from "./publisher-tools/intro.mdx";
import SaasToolsArticle from "./saas-tools/article.mdx";
import SaasToolsIntro from "./saas-tools/intro.mdx";
import StorageToolsArticle from "./storage-tools/article.mdx";
Expand All @@ -21,6 +23,7 @@ export const catalogContent: Record<string, { Intro: MDXContent; Article?: MDXCo
"hosting-cloud-tools": { Intro: HostingCloudToolsIntro },
"kdp-tools": { Intro: KdpToolsIntro, Article: KdpToolsArticle },
"productivity-tools": { Intro: ProductivityToolsIntro },
"publisher-tools": { Intro: PublisherToolsIntro, Article: PublisherToolsArticle },
"saas-tools": { Intro: SaasToolsIntro, Article: SaasToolsArticle },
"storage-tools": { Intro: StorageToolsIntro, Article: StorageToolsArticle },
};
14 changes: 14 additions & 0 deletions app/(site)/(catalogs)/[slug]/content/publisher-tools/article.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
## Which publisher tool do I need?

| Your question | Where to start |
| --- | --- |
| Which ad networks should I apply to with my traffic and revenue? | [Ad network requirements checker](/ad-network-requirements-checker) |
| Which ad network does another site use? | [Ad network checker](/ad-network-checker) |
| What will my traffic earn, or what's my RPM? | [Ad revenue calculator](/ad-revenue-calculator) |
| What are the joining rules, and which sites use each network? | [Ad networks directory](/ad-networks) |

## Does a good fit mean I'll be accepted?

No. The requirements checker gives an estimate, based on each network's published rules and the sites we track. Every network still reviews your content, where your traffic comes from, and your account history before it says yes.

Open Details on any network for its published numbers, the date we checked them, and a link to its own page.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Choosing an ad network for your site? Get a short list of networks to apply to, or look up a site to see which networks it uses. Start with the question you need to answer below.
11 changes: 11 additions & 0 deletions app/(site)/(components-ui)/components-ui/examples/navigation.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { Breadcrumbs } from "@/app/ui/site/breadcrumbs";
import { SidebarList } from "@/app/ui/site/sidebar-list";
import { UiTabs } from "@/app/ui/tabs";
import { Example } from "../gallery";
import { TabRowDemo } from "./tab-row-demo";
import styles from "../components-ui.module.css";

const here = "/components-ui/navigation";
Expand Down Expand Up @@ -73,6 +74,16 @@ export function NavigationExamples() {
{ id: "rules", title: "Rules", content: <p>Ad placement, other ad partners, and the contract.</p> },
]} />
</Example>
<Example
components={["UiTabRow", "uiTabPanelProps"]}
note="A tab row over one panel you render, for a tool with a few ways to calculate. You hold the active tab, so a shared link can open any of them. Same look and keys as Tabs."
source="app/ui/tabs.tsx"
title="Tab row"
usage={{ label: "TSX", code: `<UiTabRow label="What to calculate" onChange={setTab} panelId={panelId} tabs={tabs} value={tab} />
<form {...uiTabPanelProps(panelId, tab)}>…</form>` }}
>
<TabRowDemo />
</Example>
</>
);
}
21 changes: 21 additions & 0 deletions app/(site)/(components-ui)/components-ui/examples/tab-row-demo.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
"use client";

import { useId, useState } from "react";
import { UiTabRow, uiTabPanelProps } from "@/app/ui/tabs";

const tabs = [
{ id: "revenue", title: "Revenue" },
{ id: "cpm", title: "CPM to RPM" },
{ id: "rpm", title: "Find RPM" },
];

export function TabRowDemo() {
const panelId = useId();
const [tab, setTab] = useState("revenue");
return (
<div>
<UiTabRow label="What to calculate" onChange={setTab} panelId={panelId} tabs={tabs} value={tab} />
<p {...uiTabPanelProps(panelId, tab)}>The {tabs.find((item) => item.id === tab)?.title} inputs go here.</p>
</div>
);
}
2 changes: 1 addition & 1 deletion app/(site)/(components-ui)/components-ui/sections.ts
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ export const gallerySections: GallerySection[] = [
label: "Navigation",
description: "Breadcrumbs above page titles, page links for long lists, and sidebar link lists.",
icon: Signpost,
components: ["Breadcrumbs", "Pagination", "SidebarList", "UiTabs"],
components: ["Breadcrumbs", "Pagination", "SidebarList", "UiTabs", "UiTabRow"],
},
{
slug: "page-layout",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,19 @@
## Who is Adapex a fit for?

A publisher who already sells ads through Google and wants a team to run the setup. If you use AdSense, Ad Exchange, or Prebid today, Adapex can take that over, and you keep your own Google Ad Manager account.
An established site that already earns from AdSense, Ad Exchange, or Prebid and wants more from it without hiring an ad operations person. Adapex adds itself to that setup.

If you're just starting out, [Google AdSense](/ad-networks/google-adsense) has no traffic minimum and you can set it up yourself.
A new blog without Google Ad Manager is a weak fit. Start with [Google AdSense](/ad-networks/google-adsense), then come back once ad revenue is worth managing.

## What does onboarding through MCM mean?
## What does joining through MCM mean?

MCM is Google's way of letting a partner manage ads for another publisher. Your Ad Manager account stays yours, and Adapex works with it under that link.

## Can you try Adapex without a long contract?

Yes. Adapex says no long-term contract is needed. It offers better terms on longer contracts, so ask what you'd give up by staying short.
MCM is Google's way of letting a partner sell ads for your site. Your Ad Manager account stays yours, and Google reviews the link before ads run.

## How long will you wait for your money?

About two months. On Net 60, each month's earnings arrive 60 days after the month ends. [Raptive](/ad-networks/raptive) pays on Net 45 and [Media.net](/ad-networks/media-net) on Net 30, so plan for a longer gap if you switch from a faster payer.
About two months from the end of each month. If you're moving from a Net 30 network such as [Media.net](/ad-networks/media-net), plan for a gap in cash flow while the first payments come through.

## What should you ask Adapex before you sign?

Ask for your share, the payment minimum, and whether Adapex must be your only ad partner. None of these are public. If you're offered a longer contract, get the better share or features it adds in writing.

## How can you check if a site uses Adapex?

Look for Adapex in the site's ads.txt file, or paste the domain into our [ad network checker](/ad-network-checker).
1. What share of ad revenue do you keep?
2. What's the payment minimum?
3. What does a longer contract add, and what notice ends it?
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Adapex is a managed ad service that runs publishers' ads through Google Ad Manager. It suits sites already on AdSense, Ad Exchange, or Prebid that want a team to manage them.
Adapex is for mid-sized publishers who already sell ads and want a team to squeeze more out of that setup. It plugs into your existing AdSense, Ad Exchange, or Prebid through Google Ad Manager, so you don't start from zero.
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
Adapex doesn't publish a traffic minimum, site rules, or the regions it accepts. You apply through the contact form on its site.

If you already run AdSense, Ad Exchange, or Prebid, Adapex can bring that setup in. Onboarding goes through Google Ad Manager's Multiple Customer Management (MCM).
Apply through the [Adapex contact form](https://adapex.io/get-in-touch/). Its questions about revenue, pageviews, and US traffic help it judge fit. Because Adapex joins through Google's MCM, Google also reviews the link before ads run.
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
## How does Adapex pay?

Adapex pays on Net 60 terms, so each month's earnings arrive 60 days after that month ends. Its share, payment minimum, payment methods, and currency are not public.
Monthly, on Net 60 terms, through the payment method you set up with Adapex. Its share and payment minimum aren't published, so ask for both in writing before you sign.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
## What rules does Adapex set?

Adapex doesn't require a long-term contract. A longer contract can get you a better share or extra features.
No long-term contract is needed to start, so you can test it. Its FAQ says a longer term can bring a better revenue share and earlier access to new features.

You can block ad categories, advertisers, and domains, and set price floors. Whether Adapex must be your only ad partner, and how much notice you give to leave, are not public.
You can block ads by category, advertiser, or domain, and Adapex supports dynamic and rule-based price floors. Ask how much notice you'd give to leave.
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
## What does Adapex do for you?

You get a dashboard that reports revenue and traffic close to real time, split by country and device. You keep your own Google Ad Manager account.
A team runs and tunes your ad setup, and you keep your own Google Ad Manager account. Reporting is near real time through its dashboard, with detailed breakdowns.
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
## Who is Aditude for?
## Who is Aditude a fit for?

Aditude works with web and app publishers on their ad technology. It doesn't say who qualifies, so the only way to know is to ask its team.
Larger publishers with real ad operations needs, such as a gaming site, a media group, or an app with many daily users. You'll get the most from it if someone on your side can judge a technical setup.

## What should you ask Aditude before you sign?
A small blog looking for a quick ad tag isn't the target. [Google AdSense](/ad-networks/google-adsense) is the simpler start.

Aditude publishes no publisher terms, so get these answers in writing:
## What do publishers say about Aditude?

1. What share of ad revenue do you keep?
2. When are you paid, and what's the minimum?
3. Must Aditude be your only ad partner?
4. Who decides where ads go on your pages?
5. How much notice do you need to give to leave?
Independent reports are thin. One operator of a free design app with about 1.1 million monthly users [wrote on Reddit](https://www.reddit.com/r/adops/comments/1ozpww8) that they started with Aditude and later tested other partners after problems with ad placement. That's one account, not a pattern.

## What if you want public terms before you talk to anyone?
## What should you ask in the demo?

Pick a network that publishes its rules. [Google AdSense](/ad-networks/google-adsense) has no traffic minimum. [Raptive](/ad-networks/raptive) and [Mediavine](/ad-networks/mediavine) publish their share and pay day. [Ezoic](/ad-networks/ezoic) publishes its share in its terms.
1. What share of ad revenue do you keep, and when are you paid?
2. Must Aditude be your only ad partner?
3. Who decides where ads go on your pages?
4. How much notice ends the contract?

## How can you check if a site uses Aditude?
## Which networks publish their terms instead?

Look for Aditude in the site's ads.txt file, or paste the domain into our [ad network checker](/ad-network-checker).
[Raptive](/ad-networks/raptive) and [Mediavine](/ad-networks/mediavine) publish their share and pay day. [Ezoic](/ad-networks/ezoic) puts its share in its legal terms.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Aditude is an ad technology company that builds and runs ad setups for web and app publishers. Its joining rules and terms are not public, so you'll need to talk to its team.
Aditude builds and runs ad technology for larger web and app publishers, the kind with gaming, media, or audio audiences and their own ad questions. You start with a sales demo, so it suits teams that can weigh a custom setup.
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
Aditude doesn't publish a traffic minimum, site rules, accepted regions, or how to apply. Contact its team to ask whether your site fits.
There's no sign-up form. You [contact Aditude](https://www.aditude.com/contact) and book a demo, and the team decides whether your site fits.

Its [case studies](https://www.aditude.com/case-studies) show the publishers it works with: gaming and esports media such as Dexerto, digital media, audio, and apps. If your site looks like those, a demo is worth asking for.
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
## How does Aditude pay?

Not public. Aditude doesn't publish its share, when it pays, the payment minimum, methods, or currency.
Aditude agrees pay terms with each publisher during the sales process. Ask for your share, payment timing, and minimum in writing.
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
## What rules does Aditude set?

Not public. The terms on Aditude's site cover use of its website, not a publisher agreement. Ask about exclusivity, ad placement, content rules, and notice to leave before you sign.
Aditude has no public publisher agreement. The terms on its site cover use of the website only. Ask whether it must be your only ad partner, who decides where ads go, and how much notice ends the deal.
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
## What does Aditude do for you?

Aditude publishes guides on ad technology for publishers. Its dashboard, reporting, and support terms are not public.
Aditude runs the ad technology for web and app inventory, with support tailored to each publisher. Its Dexerto case study reports a 15% revenue lift against the earlier setup. That's Aditude's own figure, without a traffic or revenue baseline.
Original file line number Diff line number Diff line change
@@ -1,27 +1,13 @@
## Who is Adnimation a fit for?

Sites with steady traffic that want display, video, and native ads run for them. Adnimation asks for substantial traffic but doesn't give a number, so contact its team if you're unsure.
Original-content sites with a large audience: news, automotive, and other niches Adnimation names among its customers. Most of its customers have been US-based, including sites in other languages that serve US readers.

It's not a fit for gambling, porn, or drug sites. Those are restricted.
## Should a small site try MAP?

## Is Adnimation a fit for a small site?
It's the route meant for you. MAP has no pageview floor, so a smaller site can apply and get reviewed. Its terms differ from the managed service, so don't count on Net 35 or the full team.

Probably not the managed service. Adnimation's MAP product has no pageview minimum, but it's a separate program with its own terms. Don't assume the managed service's pay terms apply to MAP.

For a small site, [Google AdSense](/ad-networks/google-adsense) has no traffic minimum, and [Journey by Mediavine](/ad-networks/journey-by-mediavine) starts at 1,000 premium sessions a month.
If MAP says no, [Google AdSense](/ad-networks/google-adsense) has no traffic minimum.

## How fast does Adnimation pay?

Faster than many managed services. Net 35 means each month's money arrives about five weeks after it ends. Many networks on this list pay on Net 60, such as [Monumetric](/ad-networks/monumetric) and [Playwire](/ad-networks/playwire).

## Can you leave Adnimation?

Yes. There's no lock-in contract, but you need to give notice. Ask how much before you sign, since it isn't public.

## How quickly will you get help?

Adnimation says it replies in under two hours on average. You can reach it by email, phone, WhatsApp, Telegram, or Skype, which helps if something breaks on a busy day.

## How can you check if a site uses Adnimation?

Look for Adnimation in the site's ads.txt file, or paste the domain into our [ad network checker](/ad-network-checker).
Faster than many managed services. Net 35 lands each month's money about five weeks after it ends, where [Monumetric](/ad-networks/monumetric) and [Playwire](/ad-networks/playwire) use Net 60.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Adnimation is a managed ad service for publishers with steady traffic. It runs display, video, and native ads for you.
Adnimation runs display, video, and native ads for established websites, apps, and streaming channels. Smaller sites have a separate route, its self-serve MAP program, so check which one fits you before you apply.
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
Adnimation asks for substantial traffic but doesn't publish a number. It reviews each site, and you apply by contacting its team. It doesn't say which regions it accepts.
Pick your route first. The managed service is for large sites, and the visitor range in the row comes from an older interview with Adnimation's co-founder, a picture of its customers rather than a cutoff. Smaller sites apply to the [MAP program](https://www.adnimation.com/map/), which still reviews every site.

Sites with gambling, porn, or drug content are restricted.

Adnimation's separate MAP product says it has no pageview minimum. That's a different program from the managed service on this page.
Both start on the [get started page](https://www.adnimation.com/get-started/).
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
## How does Adnimation pay?

Adnimation pays monthly by direct bank payment, on Net 35 terms, and it may accept PayPal. It works on a revenue share, but the rate is not public. The payment minimum and currency are not public either.

The MAP program has its own payment terms, which don't apply to the managed service.
These terms are for the managed service. MAP has its own payment terms, so read them separately before you compare.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
## What rules does Adnimation set?

There's no lock-in contract, but you have to give notice to leave. How much notice is not public.
There's no lock-in contract, but you give notice to leave. Ask how much before you sign.

You can ask for changes to where ads go on your pages. Adnimation doesn't publish a rule that it must be your only ad partner.
You can ask for changes to where ads go, and your own direct ad deals can keep running. Ask whether other ad networks can stay on the site.
Loading
Loading