{"id":50241216,"url":"https://github.com/dbreunig/jekyll-third-audience","last_synced_at":"2026-05-26T21:05:12.249Z","repository":{"id":347766029,"uuid":"1174878411","full_name":"dbreunig/jekyll-third-audience","owner":"dbreunig","description":"A Jekyll plugin that generates clean Markdown copies of blog posts alongside their HTML output, making your content accessible to AI agents — the \"third audience\" of the web.","archived":false,"fork":false,"pushed_at":"2026-03-07T00:08:23.000Z","size":9,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-12T21:23:22.929Z","etag":null,"topics":["jekyll","jekyll-plugin","markdown"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dbreunig.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-07T00:07:42.000Z","updated_at":"2026-04-16T10:50:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dbreunig/jekyll-third-audience","commit_stats":null,"previous_names":["dbreunig/jekyll-third-audience"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dbreunig/jekyll-third-audience","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbreunig%2Fjekyll-third-audience","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbreunig%2Fjekyll-third-audience/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbreunig%2Fjekyll-third-audience/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbreunig%2Fjekyll-third-audience/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dbreunig","download_url":"https://codeload.github.com/dbreunig/jekyll-third-audience/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbreunig%2Fjekyll-third-audience/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33538723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"ssl_error","status_checked_at":"2026-05-26T15:22:15.568Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jekyll","jekyll-plugin","markdown"],"created_at":"2026-05-26T21:05:02.185Z","updated_at":"2026-05-26T21:05:12.244Z","avatar_url":"https://github.com/dbreunig.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jekyll-third-audience\n\nA Jekyll plugin that generates clean Markdown copies of blog posts alongside their HTML output, making your content accessible to AI agents — the \"third audience\" of the web.\n\nIn this case, \"clean\" means, \"Removing includes and other things that match regex patterns you provide.\"\n\nWill this reduce AI traffic to your site? No, in fact it will likely increase it, as bots will have to read the HTML page to learn the Markdown version exists. But I like Markdown and I wish more sites provided Markdown versions, for human readers as well as robots.\n\nInspired by [Dries Buytaert's article on the 'third audience'](https://dri.es/the-third-satisfying-audience-for-your-blog).\n\n## What it does\n\n1. **Generates `.md` files** — After Jekyll builds your site, the plugin writes a clean Markdown version of each post next to its HTML file. The Markdown version has structured front matter and the raw body content with no HTML, no includes, no Liquid tags.\n\n2. **Adds `\u003clink\u003e` tags** — The `{% third_audience_meta %}` Liquid tag outputs a `\u003clink rel=\"alternate\" type=\"text/markdown\"\u003e` tag in your HTML `\u003chead\u003e`, telling AI agents where to find the Markdown version.\n\n## Installation\n\nAdd to your `Gemfile`:\n\n```ruby\ngem \"jekyll-third-audience\"\n```\n\nAdd to your `_config.yml`:\n\n```yaml\nplugins:\n  - jekyll-third-audience\n```\n\nAdd to your `_includes/head.html` (or equivalent):\n\n```html\n{% third_audience_meta %}\n```\n\nRun `bundle install`.\n\n## Configuration\n\nAdd a `third_audience` block to `_config.yml`. All settings are optional — these are the defaults:\n\n```yaml\nthird_audience:\n  layouts:\n    - post\n  front_matter:\n    - title\n    - date\n    - author\n    - description\n    - tags\n    - url\n  strip_includes: []\n  replace_includes: []\n```\n\n### `layouts`\n\nWhich layouts get `.md` versions and `\u003clink\u003e` tags. Default: `[\"post\"]`.\n\n### `front_matter`\n\nWhich fields to include in the Markdown file's YAML front matter. Default: `[\"title\", \"date\", \"author\", \"description\", \"tags\", \"url\"]`.\n\n### `strip_includes`\n\nList of include filenames to remove entirely from the Markdown output:\n\n```yaml\nthird_audience:\n  strip_includes:\n    - email_subscribe.html\n    - contact_form.html\n```\n\nThis removes any `{% include email_subscribe.html %}` or `{% include contact_form.html %}` tags from the Markdown body.\n\n### `replace_includes`\n\nList of regex pattern/replacement rules for transforming includes:\n\n```yaml\nthird_audience:\n  replace_includes:\n    - pattern: \"\\\\{%\\\\s*include\\\\s+emoji_break\\\\.html.*?%\\\\}\"\n      replacement: \"\\n---\\n\"\n```\n\n## Example\n\nGiven a post at `_posts/2024-01-15-my-post.md`, after `jekyll build` you'll find:\n\n- `_site/2024/01/15/my-post.html` — the normal HTML output\n- `_site/2024/01/15/my-post.md` — clean Markdown with structured front matter\n\nThe Markdown file looks like:\n\n```markdown\n---\ntitle: \"My Post Title\"\ndate: 2024-01-15\nauthor: Your Name\ndescription: \"A description of the post\"\ntags: [\"jekyll\", \"markdown\"]\nurl: https://example.com/2024/01/15/my-post.html\n---\nThe raw markdown body of your post, with all includes\nstripped or replaced per your configuration.\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbreunig%2Fjekyll-third-audience","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdbreunig%2Fjekyll-third-audience","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbreunig%2Fjekyll-third-audience/lists"}