From ab473297060a17c72d6029868827ca696c4a8ffc Mon Sep 17 00:00:00 2001 From: Jatin K Malik Date: Thu, 5 Feb 2026 17:01:19 -0800 Subject: [PATCH] fix(website): critical SEO fixes - schema version, FAQ & HowTo structured data (#142) * fix(website): update schema version and add structured data for SEO - Fix softwareVersion from "0.0.0" to "0.4.1-alpha" in SoftwareApplication schema - Add FAQPage schema for rich results in search engines - Add HowTo schema for installation guide steps - Update sitemap.xml lastmod date to 2026-02-05 Fixes #138 * ci: skip Python builds when only web/ folder changes - Add path filters to detect changes in web/ vs Python files - Make python-lint and python-test jobs depend on changes job - Skip Python CI when only web files are modified - Expand Python path filters to include common config files Closes #138 --- .github/workflows/unified-pipeline.yml | 11 ++- web/public/sitemap.xml | 2 +- web/src/app/layout.tsx | 108 ++++++++++++++++++++++++- 3 files changed, 117 insertions(+), 4 deletions(-) diff --git a/.github/workflows/unified-pipeline.yml b/.github/workflows/unified-pipeline.yml index 886dbde..6787332 100644 --- a/.github/workflows/unified-pipeline.yml +++ b/.github/workflows/unified-pipeline.yml @@ -32,11 +32,17 @@ jobs: filters: | web: - 'web/**' + - '.github/workflows/**' python: - 'src/**' - 'tests/**' - 'pyproject.toml' - 'setup.py' + - 'setup.cfg' + - 'requirements*.txt' + - 'Makefile' + - '.pre-commit-config.yaml' + - '.github/workflows/**' - name: Check if website should deploy id: deploy_check run: | @@ -54,6 +60,8 @@ jobs: python-lint: name: ๐Ÿ” Lint Python runs-on: ubuntu-latest + needs: changes + if: needs.changes.outputs.python == 'true' steps: - uses: actions/checkout@v4 @@ -83,7 +91,8 @@ jobs: python-test: name: ๐Ÿงช Test Python ${{ matrix.python-version }} runs-on: ubuntu-latest - needs: python-lint + needs: [changes, python-lint] + if: needs.changes.outputs.python == 'true' strategy: fail-fast: false matrix: diff --git a/web/public/sitemap.xml b/web/public/sitemap.xml index 6f581fb..5775118 100644 --- a/web/public/sitemap.xml +++ b/web/public/sitemap.xml @@ -2,7 +2,7 @@ https://vocalinux.com/ - 2026-01-29 + 2026-02-05 monthly 1.0 diff --git a/web/src/app/layout.tsx b/web/src/app/layout.tsx index 6ceafed..c1fd758 100644 --- a/web/src/app/layout.tsx +++ b/web/src/app/layout.tsx @@ -120,7 +120,7 @@ export default function RootLayout({ "priceCurrency": "USD" }, "description": "Free, open-source voice dictation for Linux. 100% offline with Whisper AI and VOSK. Works with X11 and Wayland.", - "softwareVersion": "0.0.0", + "softwareVersion": "0.4.1-alpha", "author": { "@type": "Person", "name": "Jatin K Malik", @@ -180,7 +180,111 @@ export default function RootLayout({ } }; - const jsonLd = [softwareAppJsonLd, organizationJsonLd, webSiteJsonLd]; + // FAQPage schema for rich results + const faqJsonLd = { + "@context": "https://schema.org", + "@type": "FAQPage", + "mainEntity": [ + { + "@type": "Question", + "name": "Is Vocalinux really 100% offline?", + "acceptedAnswer": { + "@type": "Answer", + "text": "Yes! All speech recognition processing happens locally on your machine. Your voice data never leaves your computer. No internet connection is required after installation." + } + }, + { + "@type": "Question", + "name": "Which Linux distributions are supported?", + "acceptedAnswer": { + "@type": "Answer", + "text": "Vocalinux works on most modern Linux distributions including Ubuntu 22.04+, Fedora, Debian, Arch Linux, Linux Mint, Pop!_OS, and more. It supports both X11 and Wayland display servers." + } + }, + { + "@type": "Question", + "name": "How do I switch between Whisper and VOSK?", + "acceptedAnswer": { + "@type": "Answer", + "text": "You can switch engines via the settings GUI or command line. Use 'vocalinux --engine whisper' or 'vocalinux --engine vosk'. Whisper is recommended for accuracy, VOSK for speed." + } + }, + { + "@type": "Question", + "name": "What are the system requirements?", + "acceptedAnswer": { + "@type": "Answer", + "text": "Minimum: 4GB RAM, dual-core CPU, Python 3.8+. For Whisper large models: 8GB+ RAM recommended. The tiny/base Whisper models and VOSK work great on modest hardware." + } + }, + { + "@type": "Question", + "name": "Can I use it in languages other than English?", + "acceptedAnswer": { + "@type": "Answer", + "text": "Yes! Whisper supports 99+ languages with varying accuracy levels. VOSK has models for 20+ languages. Download additional language models as needed." + } + }, + { + "@type": "Question", + "name": "How do I customize the activation shortcut?", + "acceptedAnswer": { + "@type": "Answer", + "text": "The default is double-tap Ctrl. You can customize this via the GUI settings dialog or by editing ~/.config/vocalinux/config.yaml. Any key combination is supported." + } + }, + { + "@type": "Question", + "name": "Is Vocalinux free?", + "acceptedAnswer": { + "@type": "Answer", + "text": "Yes, Vocalinux is completely free and open-source, licensed under GPL-3.0. No premium tiers, no subscriptions, no tracking โ€” just free software." + } + } + ] + }; + + // HowTo schema for installation guide + const howToJsonLd = { + "@context": "https://schema.org", + "@type": "HowTo", + "name": "How to Install Vocalinux on Linux", + "description": "Step-by-step guide to install Vocalinux voice dictation software on Linux", + "totalTime": "PT10M", + "estimatedCost": { + "@type": "MonetaryAmount", + "currency": "USD", + "value": "0" + }, + "step": [ + { + "@type": "HowToStep", + "name": "Run the installation command", + "text": "Open your terminal and run the one-liner installation command to download and install Vocalinux.", + "url": "https://vocalinux.com/#install" + }, + { + "@type": "HowToStep", + "name": "Wait for installation to complete", + "text": "The installer will download dependencies, set up the environment, and download speech recognition models. This takes approximately 5-10 minutes.", + "url": "https://vocalinux.com/#install" + }, + { + "@type": "HowToStep", + "name": "Launch Vocalinux", + "text": "After installation, launch Vocalinux from your terminal by typing 'vocalinux' or find it in your application menu.", + "url": "https://vocalinux.com/#install" + }, + { + "@type": "HowToStep", + "name": "Start dictating", + "text": "Double-tap Ctrl to start voice dictation. Speak clearly into your microphone. Double-tap Ctrl again to stop.", + "url": "https://vocalinux.com/#install" + } + ] + }; + + const jsonLd = [softwareAppJsonLd, organizationJsonLd, webSiteJsonLd, faqJsonLd, howToJsonLd]; return (