{"version":"https://jsonfeed.org/version/1.1","title":"azoresflights blog","home_page_url":"https://azoresflights.com/blog","feed_url":"https://azoresflights.com/feed.json","description":"Watches Azores Airlines fares and emails you when a route hits a new low in the range you set. Every price carries the date the airline last confirmed it.","language":"en","items":[{"id":"https://azoresflights.com/blog/writing-your-first-post","url":"https://azoresflights.com/blog/writing-your-first-post","title":"Writing your first post","summary":"The minimum front matter a post needs, and the shape that earns search traffic.","content_html":"<p>What does a post actually need? Three lines of front matter and a body.</p>\n\n<p>That is the whole requirement: <code>title</code>, <code>description</code>, and <code>pub_date</code>. Everything else is optional,\nand this file is the proof. Compare it with <code>hello-world.md</code>, which shows every field available.</p>\n\n<h2 id=\"the-shape-that-gets-found\">The shape that gets found</h2>\n\n<p>Search engines and AI assistants reward the same structure, and it is not complicated:</p>\n\n<ol>\n<li><strong>Make the title the question someone types.</strong> Not a clever phrase. The question.</li>\n<li><strong>Answer it in the first eighty words.</strong> Give a number, a name, or a yes with its condition.\nThis is the passage an assistant quotes when it cites you, so make it able to stand alone.</li>\n<li><strong>Then go deep, under headings that are almost questions themselves.</strong> Each section should make\nsense pulled out of context, because that is how it will be retrieved.</li>\n<li><strong>Prefer specifics to adjectives.</strong> Numbers, examples, and named things beat \"powerful\" and\n\"seamless\" every time.</li>\n<li><strong>Say what you are unsure about.</strong> A stated range reads as more trustworthy than false precision,\nand sources that qualify their claims get cited more, not less.</li>\n</ol>\n\n<h2 id=\"the-part-most-people-skip\">The part most people skip</h2>\n\n<p>Write about the thing where you are genuinely the best available source. Anyone can restate a\npopular tutorial, and the search results already have forty of them. Nobody else can explain how\nyour product decides something, what it actually costs, or what you learned shipping it.</p>\n\n<p>That is the post worth writing first.</p>\n","date_published":"2026-01-02T00:00:00+00:00","date_modified":"2026-01-02T00:00:00+00:00","authors":[{"name":"wbnns"}],"tags":["getting started","writing"]},{"id":"https://azoresflights.com/blog/hello-world","url":"https://azoresflights.com/blog/hello-world","title":"Hello world","summary":"The example post that ships with the blog. Delete it and write your own.","content_html":"<p>What does it take to publish a post here? One file, and no database.</p>\n\n<p>The short version: create a markdown file in <code>content/posts/</code>, give it the front matter above, and\ncommit. There is no admin interface, no editor to log into, and nothing to click. Your writing is\nreviewed, versioned, and deployed exactly like your code.</p>\n\n<h2 id=\"why-it-works-this-way\">Why it works this way</h2>\n\n<p>A blog stored in the database needs an admin interface, and an admin interface needs authentication,\nauthorization, an editor, image uploads, and a draft workflow. That is a real product, and it is not\nthe product you are building.</p>\n\n<p>Files skip all of it. You already have a text editor, and you already have code review.</p>\n\n<h2 id=\"what-you-get-for-free\">What you get for free</h2>\n\n<p>Every post published here also gets:</p>\n\n<ul>\n<li>A canonical URL, so search engines index one address per post.</li>\n<li>OpenGraph and Twitter card tags, so links unfurl properly when shared.</li>\n<li><code>BlogPosting</code> structured data, so search results can show the author and date.</li>\n<li>An entry in <code>/sitemap.xml</code>, <code>/feed.xml</code>, <code>/feed.json</code>, and <code>/llms.txt</code>.</li>\n<li>A raw markdown version at <code>/blog/hello-world.md</code>, which AI crawlers can read directly.</li>\n</ul>\n\n<h2 id=\"writing-the-post-itself\">Writing the post itself</h2>\n\n<p>Standard markdown. Headings, lists, tables, and fenced code blocks all work, and code is highlighted\non the server, so no JavaScript runs on the page:</p>\n<pre class=\"highlight language-ruby\"><code><span class=\"k\">class</span> <span class=\"nc\">BlogPost</span>\n  <span class=\"k\">def</span> <span class=\"nf\">to_param</span> <span class=\"o\">=</span> <span class=\"n\">slug</span>\n<span class=\"k\">end</span>\n</code></pre>\n<p>Start your headings at <code>##</code>. The <code>#</code> level is the post title, and it is rendered from the front\nmatter, not from the body.</p>\n\n<h2 id=\"next\">Next</h2>\n\n<p>Delete this file and <code>writing-your-first-post.md</code>, then write something only you can write. The posts\nthat earn search traffic are the ones answering a question where you are the best available source.</p>\n","date_published":"2026-01-01T00:00:00+00:00","date_modified":"2026-01-01T00:00:00+00:00","authors":[{"name":"Your name"}],"tags":["getting started"]}]}