khaosdoctor/dontquotetheai

Don't paste the ai response at me, please

HTML

161

117 commits

updated Aug 31, 2026

See the code

README

dontpastetheai.com

Also responds if you use https://dontquotetheai.com | I was very rushy when getting the domain

A website you send to that one person who answers every question with eight hundred words of ChatGPT they clearly didn't read.

This is satire. Nobody is being attacked, nobody is being cancelled, nobody hates AI, have some humor. Use the tools. Just, you know, read them first.

Spiritual cousin of nohello.net and dontasktoask.com. Static HTML, like the aztecs used to do back in the day. PRs welcome (especially translations).

Translations

Don't see your language? Translations are how this page helps people. The whole process is in TRANSLATING.md, you don't need to touch hreflang or render PNGs, CI handles both. Just translate the text and open a PR.

LanguageSmoothAngryOG imageMaintainer
English (en)index.htmlangry/native
Українська (uk)uk.htmlangry/uk.html@webknjaz
Português (BR) (pt-br)pt-br.htmlangry/pt-br.htmlnative
Русский (ru)ru.htmlangry/ru.html@alexeev-prog
繁體中文 (zh-tw)zh-tw.htmlangry/zh-tw.html@cgjosephlee
简体中文 (zh-cn)zh-cn.htmlangry/zh-cn.html@ieuze
Italiano (it)it.htmlangry/it.html@meccin
Español (es)es.htmlangry/es.html@PotterSys
Français (fr)fr.htmlangry/fr.html@georgesnoe
日本語 (ja)ja.htmlangry/ja.html@KosukeKamiya
नेपाली (ne)ne.htmlangry/ne.html@sndsh404
Türkçe (tr)tr.htmlangry/tr.html@erdemgezer
Српски (sr)sr.htmlangry/sr.html@GoodbyePlanet
Srpski (lat.) (sr-latn)sr-latn.htmlangry/sr-latn.html@GoodbyePlanet
Deutsch (de)de.htmlangry/de.html@shimscho
Magyar (hu)hu.htmlangry/hu.html@gergpus
Bahasa Indonesia (id)id.htmlangry/id.html@Arceister
한국어 (ko)ko.htmlangry/ko.html@kaq6822
فارسی (fa)fa.htmlangry/fa.html@am2mcu
Հայերեն (hy)hy.htmlangry/hy.html@vvahans
Română (ro)ro.htmlangry/ro.html@dorneanu

Want to suggest a language? Open an issue or just send the PR (even a half-finished one). We can iterate. Huge thanks to everyone in the Maintainer column above who took the time to make this page work in their language.

Student page

A teacher-facing page at /student/ for students who hand in AI-generated work they never read. Registered under pages.student in assets/translations.json.

LanguageStudent pageMaintainer
Deutsch (de)/student/deMachine Translated
English (en)/student/@ymaldor1
Español (es)/student/esMachine Translated
فارسی (fa)/student/faMachine Translated
Français (fr)/student/fr@ymaldor1
Magyar (hu)/student/huMachine Translated
Հայերեն (hy)/student/hy@vvahans
Bahasa Indonesia (id)/student/idMachine Translated
Italiano (it)/student/itMachine Translated
日本語 (ja)/student/jaMachine Translated
한국어 (ko)/student/koMachine Translated
नेपाली (ne)/student/neMachine Translated
Polski (pl)/student/plMachine Translated
Português (BR) (pt-br)/student/pt-brMachine Translated
Română (ro)/student/ro@dorneanu
Русский (ru)/student/ruMachine Translated
Српски (sr)/student/srMachine Translated
Srpski (lat.) (sr-latn)/student/sr-latnMachine Translated
Türkçe (tr)/student/trMachine Translated
Українська (uk)/student/ukMachine Translated
简体中文 (zh-cn)/student/zh-cnMachine Translated
繁體中文 (台灣) (zh-tw)/student/zh-twMachine Translated

Notes on AI usage

Apparently my writing was deemed a little too AI-ish, so I am opening this new section to address that.

This website was built using the help of AI, sure, especially because I suck at frontend, and I would never spend hours doing a satirical website to mock AI.

However, I manually checked everything, and I also review and approve every PR here and test every code to make sure things are ok, there are no things like automatic approval or copilot running stuff. Or do you REALLY think Claude suggested something as simple as a bunch of HTML pages?

The text of the website is actually mine, believe it or not. I ran that through an AI reviewer and iterated over it, yes, because I think it writes better than me (especially punctuations, etc) but the original text is fully mine.

People over HN got a bit mad at me because I used AI and said I was being "hypocritical", which doesn't really make sense because the whole point of the website is to not paste things blindly, I never said you cannot use AI. So I decided to do a quick revamp of the text in the original language and English, even though it's not my native language.

If you think the text is bad or still looks like AI, please send me a PR :heart: And if you want to complain about it, I have a place dedicated for your rants.

Two versions

The site comes in two parts:

  • Smooth version (/), friendly, work-safe, nohello.net-ish. Safe to send to a coworker, a manager, or basically anyone you don't want to surprise with feelings.
  • Angry version (/angry/), the original, but angrier. Send to people who can handle a joke at volume. Not safe for your manager. Probably.

They cross-link to each other (red button on smooth → angry, green button on angry → smooth). Each has its own translations at the same path:

/                  → smooth EN
/pt-br.html        → smooth PT-BR
/angry/            → angry EN
/angry/pt-br.html  → angry PT-BR
/student/          → student EN
/student/fr.html   → student FR

CSS and assets are at the root (/styles.css, /assets/). Angry pages reference them with ../.

How it works

Static HTML only. A few things worth knowing:

  • assets/translations.json is the single source of truth for languages. The language dropdown is built at runtime by assets/translations.js from it (each HTML file has a single matching <option> as a no-JS fallback). The same script also rewrites the smooth↔angry cross-link href on any element marked data-variant-toggle, so translated files don't have to hardcode their counterpart's path. A GitHub Action on push to main runs scripts/sync-hreflang.mjs that regenerates the <link rel="alternate" hreflang> block between the <!-- hreflang:start --> / <!-- hreflang:end --> markers in the HTML file, scripts/build-og-images.mjs renders any missing PNGs from their SVG sources, and scripts/sync-seo.mjs regenerates sitemap.xml, robots.txt and the og:locale tag on every page, then commits the result, which triggers Cloudflare to redeploy. This is simpler for translators
  • Cloudflare Workers Assets serves .html files at clean URLs (/it resolves to it.html). assets/translations.js normalizes the last path segment so the dropdown still highlights the current page when the extension is missing.
  • <link rel="alternate" hreflang="..."> tags stay static in each <head> on purpose (Googlebot renders JS but Bing / Yandex / Baidu are flaky about it).
  • The copy button reads location.hostname so the same code works on both domains (dontpastetheai.com or dontquotetheai.com), it copies whichever one the visitor visited. The inline <script> that used to live in every HTML file got deduped into assets/copy.js; translatable strings come from data-copy-aria and data-copied-text attributes on the button itself.

CI

There are two GitHub Actions workflows in .github/workflows/ that basically sync everything:

  • validate.yml, runs on every PR and on push to main. Executes scripts/check-translations.mjs (blocking) to verify each language registered in assets/translations.json has its smooth + angry files, correct canonical/og:url, and an OG SVG. It also runs scripts/sync-hreflang.mjs --check, scripts/sync-seo.mjs --check and scripts/build-og-images.mjs --check as informational steps (continue-on-error: true), any differences there are reported but doesn't block the merge, because the sync workflow fixes it on push.
  • sync.yml, runs on push to main. Installs the libs to render image and the fonts, then sorts translations.json, runs the hreflang, OG image and SEO scripts, and commits everything.

Local dev

Open index.html in a browser, or run python3 -m http.server from the repo root if you want a local server. Angry pages are at /angry/index.html and friends.

Deploy

Cloudflare Workers Assets via wrangler.jsonc. Pushes to main go live automatically. Served at both dontpastetheai.com (canonical) and dontquotetheai.com (redirect/mirror), the copy button shows whichever domain the visitor is on.

Contributing translations

See TRANSLATING.md.

License

See LICENSE. Free to share, remix, translate.

ai
fun
satire-sites
slop

Contributors

khaosdoctor

57 commits

claude

5 commits

gergpus

4 commits

khaosdoctor/dontquotetheai

Don't paste the ai response at me, please

HTML

161

117 commits

updated Aug 31, 2026

See the code

README

dontpastetheai.com

Also responds if you use https://dontquotetheai.com | I was very rushy when getting the domain

A website you send to that one person who answers every question with eight hundred words of ChatGPT they clearly didn't read.

This is satire. Nobody is being attacked, nobody is being cancelled, nobody hates AI, have some humor. Use the tools. Just, you know, read them first.

Spiritual cousin of nohello.net and dontasktoask.com. Static HTML, like the aztecs used to do back in the day. PRs welcome (especially translations).

Translations

Don't see your language? Translations are how this page helps people. The whole process is in TRANSLATING.md, you don't need to touch hreflang or render PNGs, CI handles both. Just translate the text and open a PR.

LanguageSmoothAngryOG imageMaintainer
English (en)index.htmlangry/native
Українська (uk)uk.htmlangry/uk.html@webknjaz
Português (BR) (pt-br)pt-br.htmlangry/pt-br.htmlnative
Русский (ru)ru.htmlangry/ru.html@alexeev-prog
繁體中文 (zh-tw)zh-tw.htmlangry/zh-tw.html@cgjosephlee
简体中文 (zh-cn)zh-cn.htmlangry/zh-cn.html@ieuze
Italiano (it)it.htmlangry/it.html@meccin
Español (es)es.htmlangry/es.html@PotterSys
Français (fr)fr.htmlangry/fr.html@georgesnoe
日本語 (ja)ja.htmlangry/ja.html@KosukeKamiya
नेपाली (ne)ne.htmlangry/ne.html@sndsh404
Türkçe (tr)tr.htmlangry/tr.html@erdemgezer
Српски (sr)sr.htmlangry/sr.html@GoodbyePlanet
Srpski (lat.) (sr-latn)sr-latn.htmlangry/sr-latn.html@GoodbyePlanet
Deutsch (de)de.htmlangry/de.html@shimscho
Magyar (hu)hu.htmlangry/hu.html@gergpus
Bahasa Indonesia (id)id.htmlangry/id.html@Arceister
한국어 (ko)ko.htmlangry/ko.html@kaq6822
فارسی (fa)fa.htmlangry/fa.html@am2mcu
Հայերեն (hy)hy.htmlangry/hy.html@vvahans
Română (ro)ro.htmlangry/ro.html@dorneanu

Want to suggest a language? Open an issue or just send the PR (even a half-finished one). We can iterate. Huge thanks to everyone in the Maintainer column above who took the time to make this page work in their language.

Student page

A teacher-facing page at /student/ for students who hand in AI-generated work they never read. Registered under pages.student in assets/translations.json.

LanguageStudent pageMaintainer
Deutsch (de)/student/deMachine Translated
English (en)/student/@ymaldor1
Español (es)/student/esMachine Translated
فارسی (fa)/student/faMachine Translated
Français (fr)/student/fr@ymaldor1
Magyar (hu)/student/huMachine Translated
Հայերեն (hy)/student/hy@vvahans
Bahasa Indonesia (id)/student/idMachine Translated
Italiano (it)/student/itMachine Translated
日本語 (ja)/student/jaMachine Translated
한국어 (ko)/student/koMachine Translated
नेपाली (ne)/student/neMachine Translated
Polski (pl)/student/plMachine Translated
Português (BR) (pt-br)/student/pt-brMachine Translated
Română (ro)/student/ro@dorneanu
Русский (ru)/student/ruMachine Translated
Српски (sr)/student/srMachine Translated
Srpski (lat.) (sr-latn)/student/sr-latnMachine Translated
Türkçe (tr)/student/trMachine Translated
Українська (uk)/student/ukMachine Translated
简体中文 (zh-cn)/student/zh-cnMachine Translated
繁體中文 (台灣) (zh-tw)/student/zh-twMachine Translated

Notes on AI usage

Apparently my writing was deemed a little too AI-ish, so I am opening this new section to address that.

This website was built using the help of AI, sure, especially because I suck at frontend, and I would never spend hours doing a satirical website to mock AI.

However, I manually checked everything, and I also review and approve every PR here and test every code to make sure things are ok, there are no things like automatic approval or copilot running stuff. Or do you REALLY think Claude suggested something as simple as a bunch of HTML pages?

The text of the website is actually mine, believe it or not. I ran that through an AI reviewer and iterated over it, yes, because I think it writes better than me (especially punctuations, etc) but the original text is fully mine.

People over HN got a bit mad at me because I used AI and said I was being "hypocritical", which doesn't really make sense because the whole point of the website is to not paste things blindly, I never said you cannot use AI. So I decided to do a quick revamp of the text in the original language and English, even though it's not my native language.

If you think the text is bad or still looks like AI, please send me a PR :heart: And if you want to complain about it, I have a place dedicated for your rants.

Two versions

The site comes in two parts:

  • Smooth version (/), friendly, work-safe, nohello.net-ish. Safe to send to a coworker, a manager, or basically anyone you don't want to surprise with feelings.
  • Angry version (/angry/), the original, but angrier. Send to people who can handle a joke at volume. Not safe for your manager. Probably.

They cross-link to each other (red button on smooth → angry, green button on angry → smooth). Each has its own translations at the same path:

/                  → smooth EN
/pt-br.html        → smooth PT-BR
/angry/            → angry EN
/angry/pt-br.html  → angry PT-BR
/student/          → student EN
/student/fr.html   → student FR

CSS and assets are at the root (/styles.css, /assets/). Angry pages reference them with ../.

How it works

Static HTML only. A few things worth knowing:

  • assets/translations.json is the single source of truth for languages. The language dropdown is built at runtime by assets/translations.js from it (each HTML file has a single matching <option> as a no-JS fallback). The same script also rewrites the smooth↔angry cross-link href on any element marked data-variant-toggle, so translated files don't have to hardcode their counterpart's path. A GitHub Action on push to main runs scripts/sync-hreflang.mjs that regenerates the <link rel="alternate" hreflang> block between the <!-- hreflang:start --> / <!-- hreflang:end --> markers in the HTML file, scripts/build-og-images.mjs renders any missing PNGs from their SVG sources, and scripts/sync-seo.mjs regenerates sitemap.xml, robots.txt and the og:locale tag on every page, then commits the result, which triggers Cloudflare to redeploy. This is simpler for translators
  • Cloudflare Workers Assets serves .html files at clean URLs (/it resolves to it.html). assets/translations.js normalizes the last path segment so the dropdown still highlights the current page when the extension is missing.
  • <link rel="alternate" hreflang="..."> tags stay static in each <head> on purpose (Googlebot renders JS but Bing / Yandex / Baidu are flaky about it).
  • The copy button reads location.hostname so the same code works on both domains (dontpastetheai.com or dontquotetheai.com), it copies whichever one the visitor visited. The inline <script> that used to live in every HTML file got deduped into assets/copy.js; translatable strings come from data-copy-aria and data-copied-text attributes on the button itself.

CI

There are two GitHub Actions workflows in .github/workflows/ that basically sync everything:

  • validate.yml, runs on every PR and on push to main. Executes scripts/check-translations.mjs (blocking) to verify each language registered in assets/translations.json has its smooth + angry files, correct canonical/og:url, and an OG SVG. It also runs scripts/sync-hreflang.mjs --check, scripts/sync-seo.mjs --check and scripts/build-og-images.mjs --check as informational steps (continue-on-error: true), any differences there are reported but doesn't block the merge, because the sync workflow fixes it on push.
  • sync.yml, runs on push to main. Installs the libs to render image and the fonts, then sorts translations.json, runs the hreflang, OG image and SEO scripts, and commits everything.

Local dev

Open index.html in a browser, or run python3 -m http.server from the repo root if you want a local server. Angry pages are at /angry/index.html and friends.

Deploy

Cloudflare Workers Assets via wrangler.jsonc. Pushes to main go live automatically. Served at both dontpastetheai.com (canonical) and dontquotetheai.com (redirect/mirror), the copy button shows whichever domain the visitor is on.

Contributing translations

See TRANSLATING.md.

License

See LICENSE. Free to share, remix, translate.

ai
fun
satire-sites
slop

Contributors

khaosdoctor

57 commits

claude

5 commits

gergpus

4 commits

Languages

HTML

94.1%

JavaScript

4.6%

CSS

1.3%