Skip to main content

Content Gate Kit — free sample

The check no prose linter does: did I already publish this, in different words?

Vale, textlint, proselint and alex all lint one document in isolation. None of them can see that today's draft has the same skeleton as last Tuesday's post. That is the gate people actually need once they publish on a schedule.

This repo ships the substance gate, working and unrestricted, so you can judge the code before paying for the rest. The similarity gate — the one nothing else does — is in the full kit.

git clone https://github.com/zxcv0952290292-lang/content-gate-kit-free
cd content-gate-kit-free
python3 cli.py --demo
=== 01_blocked_no_substance.json  ->  BLOCKED
    - no takeaway: one concrete thing the reader can do or check
    - opening is a conclusion, not a hook: 'Everyone should start saving money.'
    - nothing checkable in the whole piece (needs >=2 numbers/rules/named things)

=== 04_pass.json  ->  PASS

No dependencies. No API key. No model call. No network. Python 3.8+. Under a millisecond.


How this relates to Vale

Use both. They do not overlap.

Vale / textlint / proselint Content Gate Kit
Scope one document at a time this draft vs everything you already published
Catches "I wrote this last week in other words" no yes — the whole point
House style, banned words, passive voice yes, and better than this no
Language English-centric English and CJK (character 2-grams, not word tokens)
Price free free sample here, $29 for all four gates

If you want a style guide enforced, install Vale — it is free, excellent, and this is not trying to replace it. If your problem is that everything you publish is starting to feel the same, no linter solves that.


The four gates

Gate Blocks In this repo
Substance Nothing to take away. A number with no source. An opening that is a slogan instead of a hook. ✅ yes, fully working
Similarity The post you already published — in different words. Compares wording overlap, skeleton (opening shape, ending shape, line rhythm, filler phrases) and scene. full kit
Tone Snark, and the "X is more impressive than Y" pattern. A banned-word list never catches that — the next draft writes "more impressive than wagyu". full kit
Style Punctuation normalised to your house habits. full kit

Full kit — four gates, the n8n workflow, and the config presets: $29 on Gumroad


Why these rules and not other rules

Every rule was written after something real went out wrong, and the comment above it says which. That is the part you cannot get from a linter: not "here are some quality heuristics" but "this exact sentence shape shipped nine smug replies, six of which were identical in structure."

A rule without its incident is the first thing someone deletes. So they all kept their incidents.

Usage

from gatekit import check

r = check(
    text=draft,
    takeaway="one concrete thing the reader can do",
    source="where the numbers came from",
)
r["pass"]      # bool
r["reasons"]   # list of strings, empty when it passes

Shell / CI — exit code 0 passes, 1 blocks:

python3 cli.py --file draft.json && ./publish.sh

Config

{ "takeaway_min": 12, "hard_min": 2, "require_layers": false }

require_layers is strict mode. It additionally demands an operating layer (a verb plus a place the reader can open — "read the Total column") and a numbers layer (the difference converted into a figure — 0.22% vs 0.57%, that is 2.6x).

If a gate blocks the same good draft three times, loosen it. A rule that makes you rewrite good work into compliance is worse than the problem it prevents.

What this is not

  • Not a grammar or plagiarism checker
  • Not an AI-detector
  • It does not call a model, so it cannot judge whether a claim is true. It checks that a claim has a source attached, not that the source is right.

Licence

See LICENSE.txt. Use it in your own and your clients' projects. Do not resell the source as a competing product.

Metadata

Release files for content-gate-lite 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for content-gate-lite 0.1.0
File Size Uploaded Provenance Actions
content_gate_lite-0.1.0.tar.gz 6.5 kB With provenance Details for content_gate_lite-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for content-gate-lite 0.1.0
File Interpreter ABI Platform Actions
content_gate_lite-0.1.0-py3-none-any.whl Python 3 none any Details for content_gate_lite-0.1.0-py3-none-any.whl

Total release size: 13.9 kB

Release files / content_gate_lite-0.1.0.tar.gz

Download URL content_gate_lite-0.1.0.tar.gz
Size 6.5 kB
Tags Source
SHA-256 checksum
How to use checksums
d3de1417ec7a9460da515393a0210a68864fd07ef20c211537ee676997dae020
BLAKE2b-256 checksum
How to use checksums
22eeb442b3be104641fe85e8b428fda148f742c811a63e7b663450905b712bf5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / content_gate_lite-0.1.0-py3-none-any.whl

Download URL content_gate_lite-0.1.0-py3-none-any.whl
Size 7.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e3cb1561c05a9c6ffd3ca4ce2f94f7ce22ce21e77b1c9edb054836cf5bebe697
BLAKE2b-256 checksum
How to use checksums
dad0963662f69a12074e64df8ace0f340c46c956d4168c9af5d359b095ee8eff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Security for content-gate-lite 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for content_gate_lite-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page