# Digital Marketing Strategies

> Reaching the right people online and turning attention into something that compounds rather than leaks away.

A running checklist of ways to get this garden more views and more reach, pulled from research and grouped by where the leverage is. Almost all of it is free; items marked *(quick win)* are the low-effort places to start. It's a list to work through, not a finished playbook.

## Crawlability and indexing

This site is a React single-page app, so a search or AI bot that runs no JavaScript can see an empty page. Fixing that is the highest-leverage work on this list.

* **Prerender each note to static HTML at build.** A build-time step, and the [content compiler](/garden/build-time-content-compiler) already runs one, can emit a real HTML file per note so bots read content instead of an empty root div.
* **Keep clean path URLs, never hash routes.** Paths like `/garden/slug` get indexed on their own; `#/` routes collapse into one page. This garden already does this. *(quick win)*
* **Ship real anchor links in the served HTML.** Crawlers follow `<a href>`, not click handlers, so navigation and internal links have to exist as true links.
* **Generate an XML sitemap of every note.** List each canonical URL with a `lastmod` date; Bing in particular leans on it for discovery. *(quick win)*
* **Add a robots.txt that points to the sitemap.** One `Sitemap:` line, and check no broad `Disallow` is blocking a search bot. *(quick win)*
* **Verify the site in Google Search Console.** Free, and it unlocks index coverage, the queries you rank for, and a URL Inspection tool that shows what Googlebot actually rendered. *(quick win)*
* **Verify in Bing Webmaster Tools too.** One setup covers Bing, Yahoo and DuckDuckGo, and you can import the Search Console verification. *(quick win)*
* **Ping IndexNow on each publish.** A single keyed request tells Bing, DuckDuckGo and Yandex about new or changed notes at once; Google ignores it, but it's free freshness everywhere else.

## Titles, meta, and social cards

* **Write a unique title per note.** A distinct title around 60 characters is the strongest on-page relevance signal and the clickable headline in results. *(quick win)*
* **Write a unique meta description per note.** A 150 to 160 character summary lifts click-through even though it isn't itself a ranking factor. *(quick win)*
* **Set a self-referencing canonical link.** One canonical per page consolidates signals and stops query strings and trailing slashes spawning duplicate URLs. *(quick win)*
* **Add Open Graph and Twitter card tags.** Shared links then render a rich preview instead of a bare URL, which lifts referral clicks. *(quick win)*
* **Auto-generate an OG image per note.** `@vercel/og` can render a branded 1200x630 card from each note's title at the edge; branded previews get far higher share click-through.
* **Validate cards before promoting.** Run a URL through the platform card debuggers so the image and title render right on the first share. *(quick win)*

## Structured data and semantic markup

* **Add Article JSON-LD to every note.** Include headline, author, datePublished and dateModified; it's the format search and AI crawlers parse most reliably.
* **Declare one consistent Person entity.** A single author identity with `sameAs` links to your profiles helps engines attribute the whole site to you.
* **Add BreadcrumbList JSON-LD.** It reinforces the site hierarchy for engines even where breadcrumb links no longer show in results.
* **Validate with the Rich Results Test.** It catches missing required fields before you publish. *(quick win)*
* **Keep schema aligned with visible content.** Never mark up facts a reader can't see; that mismatch is the most-penalized structured-data mistake.
* **Use one H1 and an ordered heading tree.** A single descriptive H1 with logical H2 and H3 nesting helps engines parse each note. *(quick win)*
* **Wrap content in semantic landmarks.** Real `main`, `article`, `nav` and `time` elements carry meaning that generic divs don't. *(quick win)*
* **Write descriptive image alt text.** It aids accessibility and lets images rank in image search; describe the content, not "image". This garden already does it for figures. *(quick win)*
* **Interlink notes with meaningful anchor text.** The garden's wikilinks already spread crawl equity and topical context; keep the link text descriptive, never "click here".

## Performance and Core Web Vitals

* **Hit the Core Web Vitals thresholds.** Aim for LCP under 2.5s, INP under 200ms and CLS under 0.1 at the 75th percentile, from real-user data in Search Console.
* **Compress images and reserve their space.** Serve modern formats, lazy-load below the fold, and set explicit width and height; some notes here ship multi-megabyte PNGs worth shrinking. *(quick win)*
* **Keep the layout responsive and mobile-first.** Google indexes mobile-first, so a fluid viewport and tap-friendly text are prerequisites, not extras. *(quick win)*
* **Trim and defer non-critical JavaScript.** Smaller bundles and deferred third-party scripts protect INP and speed up first paint on a JS-heavy app.

## AI and agent readiness

Tools like [isitagentready.com](https://isitagentready.com/) score whether AI systems can find and read a site. For a content site the commerce and protocol checks don't apply; the real wins are crawler access, clean structure, and answer-first writing.

* **Allow AI answer bots in robots.txt.** Permit OAI-SearchBot, ChatGPT-User, PerplexityBot, Claude-SearchBot and Googlebot so notes stay eligible to be cited. *(quick win)*
* **Decide on training bots separately.** You can optionally disallow GPTBot, Google-Extended, ClaudeBot and CCBot to opt out of training while keeping search access.
* **Confirm Vercel's edge isn't blocking crawlers.** robots.txt and any firewall rules must agree; some configs silently drop AI search bots as scrapers. *(quick win)*
* **Publish an llms.txt index at the root.** A markdown table of contents of the best notes gives an agent one-fetch discovery, and the build step can generate it. Treat it as cheap insurance, not a proven lever.
* **Offer a markdown version of each note.** A `.md` sibling URL, or `text/markdown` by content negotiation, hands agents clean text at a fraction of the tokens.
* **Lead each section with the answer.** A direct 40 to 60 word answer up front is what answer engines lift when they cite you. *(quick win)*
* **State facts plainly and cite sources.** High fact density with a named source every couple of paragraphs is the strongest citation booster.
* **Prefer lists, tables and FAQ blocks.** Structured elements dominate AI citations, and question-shaped content with FAQ schema is cited especially often. *(quick win)*
* **Put the year in titles and refresh notes.** Answer engines weight recency hard, so date the work and keep it current. *(quick win)*

## Analytics and attribution

Tag outbound links so the analytics can tell you which channel actually sends readers. The common, free way is UTM parameters on the URL:

`https://…/garden/a-note?utm_source=linkedin&utm_medium=social&utm_campaign=launch`

* `utm_source`: where the traffic comes from (linkedin, newsletter, hackernews).
* `utm_medium`: the channel type (social, email, referral).
* `utm_campaign`: the specific campaign name.
* `utm_content` (optional): tells near-identical links apart, like a header versus footer button.
* `utm_term` (optional): mostly for paid-search keywords.

Vercel Web Analytics, already on this site, logs these automatically, and Google's Campaign URL Builder generates the links. Then:

* **Write down a UTM naming taxonomy.** Keep source, medium and campaign lowercase and consistent so typos don't split one campaign into several. *(quick win)*
* **Give each channel a distinct source.** Tag Hacker News, the newsletter, RSS and every social network separately to see what really drives views.
* **Layer a cookieless analytics for referrers.** Plausible or Fathom give richer referrer and campaign breakdowns than the built-in analytics, with no cookie banner.
* **Track events, not just pageviews.** Set goals for newsletter signups and outbound clicks so you measure conversion, not raw traffic.

## Distribution and syndication

* **Publish on your domain first, then syndicate.** Give search a week or two to index the original, then cross-post to dev.to, Hashnode or Medium with a canonical pointing back. *(quick win)*
* **Point every syndicated canonical at the original.** One hop only; a canonical that points at another canonical breaks the signal.
* **On LinkedIn, post a teaser and a link.** LinkedIn articles ignore canonical tags, so link back to the original instead of republishing the full text.
* **Turn each note into native posts per platform.** Adapt the hook and length for X, Bluesky, Mastodon and Threads rather than copy-pasting; this is the social step of the [Autonomous Content Pipeline](/garden/autonomous-content-pipeline).
* **Lead social posts with a hook and add alt text.** A strong first line drives algorithmic reach, and image alt text is free reach plus accessibility. *(quick win)*

## Community, email, and cadence

* **Submit to Hacker News with a plain title.** A neutral, non-hype title fits the norms; stay in the thread to reply, and never ask for upvotes.
* **Post to Lobsters and niche subreddits after contributing first.** Build a little comment history so you read as a member with a site, and check each place's link rules.
* **Share only where you're already a regular.** Drop links in on-topic Discord or Slack channels you take part in, not cold.
* **Expose a clean RSS or Atom feed.** It lets readers subscribe on their terms and feeds newsletters and directories. *(quick win)*
* **Wire RSS to email with Buttondown.** New notes then send themselves to subscribers, and it's free under a small list. *(quick win)*
* **Add a small email capture to each note.** This garden now does this: a lightweight form adds subscribers to a [Resend](https://resend.com/) audience, and [ImprovMX](https://improvmx.com/) catches the replies. See [the two-way mail loop](/garden/garden-mail-loop).
* **Submit to blog directories and a webring.** ooh.directory and IndieWeb directories need only a feed and send real readers plus genuine backlinks. *(quick win)*
* **Earn backlinks by guest posting and getting cited.** Writing for other dev blogs and answering questions builds authority that aggregators can't.
* **Hold a consistent publishing rhythm.** Steady output compounds subscribers and search authority; pick a cadence you can keep.
* **Reply in every thread you seed.** Author presence keeps a post alive and pulls return clicks. *(quick win)*
