RowSprout – Bulk pagina generator & programmatic SEO

Beschrijving

Veel sites hebben tientallen of honderden pagina’s nodig met dezelfde lay-out maar andere details: een pagina per dienst in elke stad waar je werkt, per productvariant, per locatie, per specialisme. Die met de hand bouwen en onderhouden kost veel tijd, en met gedupliceerde pagina’s moet je elke latere wijziging op elke kopie opnieuw doen.

RowSprout maakt daar één template en één tabel van. Het is een bulk pagina-generator voor programmatic SEO: locatiepagina’s, pagina’s per werkgebied voor lokale SEO, landingspagina’s per product of doelgroep, allemaal in sync met één ontwerp.

Een voorbeeld

Een loodgietersbedrijf werkt in 30 plaatsen. Met RowSprout ontwerpt het één pagina “Loodgieter in [plaats]”, voegt een rij toe voor elke plaats (de naam van de plaats, een korte introductie, een telefoonnummer, een e-mailadres voor contact) en slaat op. RowSprout maakt 30 pagina’s, elk met een eigen titel, URL zoals /loodgieter-amsterdam/, tekst en details. Verandert het bedrijf later het ontwerp of de openingstijden, dan past het de template één keer aan en volgt elke pagina.

Zo werkt het

  1. Bouw een template. Ontwerp de pagina één keer in de blok-editor, Elementor of WPBakery Page Builder, net als elke andere pagina.
  2. Leg de eigenschappen vast. Dit zijn de velden die elke pagina krijgt: een titel, een URL, een stuk tekst, een link, een e-mailadres enzovoort. Plaats ze in je ontwerp met een widget, een blok of een plaatshouder.
  3. Voeg je gegevens toe. Elke rij (een “groep”) is één pagina. Typ de waarden in de tabel direct onder de editor, of importeer ze uit een spreadsheet.
  4. Sla op. RowSprout genereert de pagina’s op de achtergrond. Het zijn echte WordPress pagina’s met een eigen URL, titel, content en uitgelichte afbeelding.

Functies

  • Echte pagina’s, geen virtuele. Elke gegenereerde pagina is een normaal WordPress bericht met een eigen permalink, dus zoekmachines, cacheplugins en je thema behandelen hem als elke andere pagina.
  • Je eigen URL-patroon. Stel het adres van elke pagina samen uit de eigenschappen, bijvoorbeeld /loodgieter-amsterdam/, /loodgieter-utrecht/ enzovoort, in de root van de site of onder een voorvoegsel naar keuze. RowSprout genereert nooit twee pagina’s op dezelfde URL, ook niet over templates heen en, zonder voorvoegsel, niet op het adres van je andere pagina’s en berichten: zo’n pagina wacht tot je hem een vrije URL geeft.
  • Elke taal en elk alfabet. Accenten, Grieks, Cyrillisch, Arabisch, Hebreeuws, Chinees, Japans en emoji worden volledig ondersteund in je rijen, titels, content en URL’s. Adressen volgen de regels van WordPress zelf: Zürich wordt /loodgieter-zurich/, terwijl andere alfabetten blijven zoals ze zijn (/loodgieter-αθήνα/).
  • Pagina’s blijven in sync. Wijzig het ontwerp of een rij, sla op en elke pagina van de template wordt opnieuw gegenereerd, dus geen enkele pagina raakt verouderd.
  • Status in één oogopslag. Het scherm Templates toont per template hoeveel van de pagina’s actueel zijn.
  • Genereren op de achtergrond. Pagina’s worden in een wachtrij aangemaakt (Action Scheduler), dus het opslaan van een template met honderden rijen maakt je beheeromgeving nooit traag.
  • Plaatshouders overal. Gebruik een eigenschap in de paginatitel, de URL, de content of een link, en die wordt per pagina vervangen.
  • Veldtypen: titel, URL-slug, tekst, tekstvak, URL, e-mail en getal.
  • Importeren en exporteren. Download templates met hun eigenschappen, rijen en ontwerp als bestand en voeg ze toe aan een andere site, bijvoorbeeld van een stagingsite naar de livesite. Voordat je importeert, zie je wat het bestand toevoegt en wijzigt.
  • Groepen uit een spreadsheet. Download de groepen van een template als CSV-bestand, bewerk ze in Excel of Google Sheets en importeer ze opnieuw: uit een CSV- of Excel-bestand (.xlsx), een URL of een gedeelde Google-spreadsheet (met een keuze van tab). Een import in stappen laat eerst zien wat hij gaat doen, updatet de groepen die hij herkent, voegt de andere toe, kan de groepen verwijderen die niet in het bestand staan, kan nieuwe eigenschappen toevoegen voor nieuwe kolommen en onthoudt je keuzes voor de kolommen voor de volgende keer.
  • Content per rij met “Als / dan”. Toon een deel van het ontwerp als de waarden van een pagina aan je regels voldoen (als de prijs boven 100 ligt, als de datum in de toekomst ligt, als het type “hotel” is), en een ander deel, of niets, als dat niet zo is. Regels kun je combineren met en/of, en de operators passen zich aan het type van de eigenschap aan. Regels over de datum van vandaag blijven ook op gecachete pagina’s kloppen.
  • Raster met pagina’s. Toon alle pagina’s van een template als lijst of als kaarten op elke gewenste pagina, bijvoorbeeld een overzicht van alle plaatsen waar je werkt.
  • Subtemplates. Geef een template een hoofdtemplate en hij gebruikt de rijen van de hoofdtemplate opnieuw: de pagina’s nemen de titel, URL en velden van de bijbehorende rij over, bijvoorbeeld een pagina “Daklekkage in [plaats]” voor elke plaats die een pagina “Dakdekker in [plaats]” heeft. Templates kunnen één niveau diep worden genest.
  • Zoveel templates als je nodig hebt, beheerd vanuit het scherm Templates.

Werkt met de editor die je al gebruikt

  • Blok-editor: koppel een Paragraaf-, Koptekst-, Lijstitem-, Knop- of Afbeelding-blok aan een eigenschap met Block Bindings, voeg plaatshouders in vanuit de teksttoolbar en gebruik de blokken Raster en Als / dan.
  • Elementor: de widgets Koptekst, Tekstvak, Knop, Raster en Als / dan, een knop “RowSprout eigenschap invoegen” in de teksteditor en een tab “RowSprout template” om eigenschappen en rijen te beheren zonder Elementor te verlaten. Met Elementor Pro kan Als / dan een opgeslagen Elementor-template tonen.
  • WPBakery Page Builder: de elementen Raster en Als / dan, en dezelfde invoegknop in de teksteditors.

Integraties

  • Rank Math: gegenereerde pagina’s krijgen de SEO-, social- en robots-instellingen van de template, met de eigen waarden van elke pagina; de template zelf blijft buiten de sitemap en staat op noindex.
  • Yoast SEO, SEOPress en The SEO Framework: gegenereerde pagina’s krijgen de SEO-titel en meta description van de template en de andere instellingen die deze plugins bij een pagina opslaan, met de eigen waarden van elke pagina; templates blijven buiten hun sitemaps en staan op noindex.
  • Zonder SEO-plugin blijven templates ook buiten de eigen sitemap van WordPress en staan ze op noindex.

RowSprout Pro

RowSprout Pro is een aparte add-on, verkocht buiten WordPress.org, voor sites die verder groeien dan één reeks pagina’s. Pro voegt toe:

  • Smart Generate: bij opslaan worden alleen de pagina’s opnieuw gegenereerd waarop je wijziging effect heeft, in plaats van elke pagina van de template.
  • Planning: kies per rij wanneer de pagina wordt gepubliceerd.
  • Scheduled sync: keep a template’s groups in sync with a Google sheet, a CSV or Excel file at a URL, or a JSON feed or REST API (with a request header for an API key), every hour, day or week. New and changed pages are generated automatically; a Syncs screen with a log shows every run, with safeguards against a broken source and an email when a sync starts failing.
  • WPML: vertaal een template één keer en alle pagina’s worden in die taal gegenereerd.
  • Extra veldtypen: selectievakje, datum, datum en tijd, itemlijst, icoon, thumbnail, keuzelijst, opgemaakte tekst, kleur, telefoon en bestand.
  • Extra Elementor elementen: de widgets Date, Item List, Thumbnail en Sibling Links, plus de dynamische tags RowSprout Page Field en Page Link.
  • Extra blok-editor element: een itemlijst blok.
  • Extra WPBakery-element: een Item List-element.
  • Statusoverzicht op het scherm Templates: per template een statusbalk die live wordt geüpdatet, een overzicht per rij van elke pagina en alle pagina’s van een template genereren met één klik.
  • Throttling van de batchgrootte en de verwerkingsuren op drukke sites.
  • WP-CLI- en MCP-commando’s om templates, pagina’s, groepsimports en synchronisaties te beheren vanuit scripts of AI-agents.
  • Een templateimport die updatet: zet wijzigingen over van een stagingsite naar de livesite, met vertalingen, afbeeldingen en een keuze wat je exporteert.

Privacy

De gratis plugin volgt je niet, laadt niets van buiten je site en verstuurt uit zichzelf nergens iets naartoe. De enige aanvragen naar buiten zijn de aanvragen waar je zelf om vraagt als je groepen importeert vanaf een URL (zie Externe diensten hieronder).

Externe diensten

Als je de groepen van een template importeert vanaf een URL, haalt RowSprout die URL op vanaf je server, op het moment dat je in de importwizard op Ophalen of Volgende klikt. Er wordt verder niets verzonden: er gaan geen gegevens over je site, de gebruikers of de groepen mee met de aanvraag, behalve de gebruikelijke HTTP-headers die WordPress verzendt (zoals de user agent met het adres van je site).

  • Een URL die je invult (een CSV-, tekst- of Excel-bestand op een willekeurige server): de aanvraag gaat naar de server waar die URL naar verwijst, onder de eigen voorwaarden en het eigen privacybeleid van die site.
  • Een Google Sheets-link: RowSprout haalt de CSV-export van de spreadsheet op, en bij een spreadsheet met meerdere tabs de lijst met tabs, bij Google (docs.google.com). Dit werkt alleen voor een spreadsheet die is gedeeld met “Iedereen met de link”. De servicevoorwaarden en het privacybeleid van Google zijn van toepassing.

Ontwikkeling

RowSprout is open source. De code, releases en de issuetracker staan op GitHub: github.com/RowSprout/RowSprout.

Schermafbeeldingen

Blokken

Deze plugin heeft 1 blok.

  • Grid

Installatie

  1. Ga in je WordPress-beheer naar Plugins Nieuwe plugin, zoek naar “RowSprout” en klik op Nu installeren en daarna op Activeren. Of upload de map rowsprout naar /wp-content/plugins/ en activeer de plugin op het scherm Plugins.
  2. Open het nieuwe menu RowSprout en maak je eerste template.
  3. Ontwerp de pagina, voeg je eigenschappen toe op de tab Eigenschappen en je rijen op de tab Groepen.
  4. Sla op met Pagina’s aanmaken en updaten. Je pagina’s verschijnen meestal binnen een à twee minuten.

Optioneel: kies onder RowSprout Instellingen of gegenereerde pagina’s in de root van de site staan of onder een voorvoegsel zoals /locaties/.

FAQ

Heb ik Elementor nodig?

Nee. RowSprout werkt met de blok-editor van WordPress, Elementor en WPBakery Page Builder. Gebruik de editor waarmee je je site al bouwt.

Zijn de gegenereerde pagina’s goed voor SEO?

Het zijn gewone WordPress pagina’s met een eigen URL, titel, content en uitgelichte afbeelding, dus SEO-plugins, sitemaps en caching behandelen ze als elke pagina die je met de hand hebt gemaakt. Zorg dat elke rij echt bruikbare, onderscheidende content heeft: zoekmachines waarderen pagina’s die een echte vraag beantwoorden, geen bijna identieke kopieën.

Wat is het verschil met een pagina dupliceren?

Een gedupliceerde pagina is een losse kopie: veranderen de lay-out, een call-to-action of de openingstijden, dan bewerk je elke kopie met de hand. RowSprout houdt het ontwerp (de template) en de details (de rijen) gescheiden. Wijzig de template en elke pagina wordt er opnieuw uit gegenereerd; wijzig een rij en alleen de details van die pagina veranderen. Een pagina toevoegen is een rij toevoegen.

Kan ik RowSprout gebruiken voor lokale SEO en pagina’s per werkgebied?

Ja, dat is een van de meest voorkomende toepassingen: één pagina per plaats, regio of vestiging, elk met een eigen titel, URL, introductie en contactdetails. Met een subtemplate voeg je daar een tweede reeks aan toe, zoals een pagina “Daklekkage in [plaats]” voor elke plaats die een pagina “Dakdekker in [plaats]” heeft. Geef, net als bij elke pagina, elke locatie echt bruikbare, onderscheidende content (zie de SEO-vraag hierboven).

Werkt RowSprout in mijn taal?

Ja, in elke taal en elk alfabet. Accenten, Grieks, Cyrillisch, Arabisch, Hebreeuws, Chinees, Japans en emoji komen precies zo op je pagina’s als je ze typt. In URL’s worden accenten vereenvoudigd zoals WordPress dat doet (met Duitse en Deense spelling op sites in die talen), en letters van andere alfabetten blijven zoals ze zijn. Meer in de documentatie (Engelstalig): Languages and special characters.

Wat gebeurt er als ik de template wijzig?

Sla op met “Pagina’s aanmaken en updaten” en elke pagina van de template wordt opnieuw gegenereerd met je wijzigingen. “Alleen template opslaan” bewaart je wijzigingen zonder de pagina’s al aan te raken; die worden gemarkeerd als verouderd tot je ze genereert. (Smart Generate van RowSprout Pro genereert alleen de pagina’s opnieuw waarop je wijziging effect heeft.)

Kan ik een gegenereerde pagina direct bewerken?

Gegenereerde pagina’s zijn standaard vergrendeld, omdat ze worden overschreven zodra hun template ze opnieuw genereert: wijzig de template voor alles of de rij voor één pagina. Wil je gegenereerde pagina’s toch met de hand bewerken, ontgrendel ze dan onder RowSprout Instellingen, en houd er rekening mee dat de volgende keer genereren die wijzigingen vervangt.

Wat gebeurt er als ik een rij of de template verwijder?

Als je een rij verwijdert, wordt de bijbehorende pagina verwijderd. Verplaats je een template naar de prullenbak, dan gaan de pagina’s ook naar de prullenbak; zet je de template terug, dan worden ook de pagina’s teruggezet.

Maakt RowSprout mijn site trager?

Nee. Pagina’s worden op de achtergrond gegenereerd en bezoekers krijgen normale WordPress pagina’s. Er wordt niets ter plekke opgebouwd als iemand een pagina opent.

Maakt deze plugin verbinding met externe diensten?

Alleen als je daarom vraagt: groepen importeren vanaf een URL of een Google Sheets-link haalt dat bestand op (zie Externe diensten). Verder werkt de gratis plugin volledig op je eigen site. RowSprout Pro, een aparte plugin, maakt verbinding met de licentieserver van RowSprout om een licentie te activeren en te controleren op updates.

Kan ik mijn rijen importeren uit Excel of Google Sheets?

Ja. Klik op de tab Algemeen van een template op “Groepen importeren…” en kies een CSV- of Excel-bestand (.xlsx), een URL of de link van een Google-spreadsheet die is gedeeld met “Iedereen met de link”. De wizard toont een voorbeeld, laat je kiezen welke kolom welke eigenschap vult (of een nieuwe) en vertelt je wat hij gaat toevoegen, updaten of verwijderen voordat hij iets opslaat. RowSprout Pro kan zo’n import vanaf een URL volgens een schema herhalen.

Kan een pagina andere content tonen afhankelijk van de rij?

Ja, in de blok-editor, Elementor en WPBakery. Voeg “Als / dan” toe, stel regels in op de eigenschappen van de pagina, zoals “Prijs is groter dan 100” of “Datum ligt in de toekomst”, en kies wat je toont als ze kloppen (Dan) en als ze niet kloppen (Anders).

Beoordelingen

Er zijn geen beoordelingen voor deze plugin.

Bijdragers & ontwikkelaars

“RowSprout – Bulk pagina generator & programmatic SEO” is open source software. De volgende personen hebben bijgedragen aan deze plugin.

Bijdragers

“RowSprout – Bulk pagina generator & programmatic SEO” is vertaald in 1 locale. Dank voor de vertalers voor hun bijdragen.

Vertaal “RowSprout – Bulk pagina generator & programmatic SEO” in je eigen taal.

Interesse in ontwikkeling?

Bekijk de code, haal de SVN repository op, of abonneer je op het ontwikkellog via RSS.

Changelog

3.3

  • Nieuw: de groepen van een template importeren en exporteren. Download de groepen op de tab Algemeen als CSV (vier formats, voor Excel in elke taal en voor scripts), bewerk ze in een spreadsheet en importeer ze opnieuw. De importwizard leest CSV- en tekstbestanden, Excel-werkmappen (.xlsx, met een keuze van werkblad), elke URL en gedeelde Google-spreadsheets (met een keuze van tab). Hij toont een voorbeeld, laat je de scheidingstekens kiezen, welke kolom welke eigenschap of een nieuwe eigenschap vult, en onder “Geavanceerde opties” de tekencodering en de beginrij, en vertelt je wat hij gaat toevoegen, updaten, laten staan of verwijderen voordat hij opslaat. Keuzes voor de kolommen worden per template onthouden. Waarden die een spreadsheet-app heeft veranderd (zoals weggevallen voorloopnullen) houden hun opgeslagen waarde.
  • Nieuw: “Als / dan”, voor de blok-editor (een blok met de gebieden Dan en Anders), Elementor (een widget met stijlinstellingen, die ook een Elementor Pro-template kan tonen) en WPBakery (een element met de containers Dan en Anders). Toon content als de waarden van een pagina aan je regels voldoen, verbonden met en/of, met operators die zich aan het type van de eigenschap aanpassen; regels over de datum van vandaag blijven ook op gecachete pagina’s kloppen.
  • Nieuw: Yoast SEO, SEOPress en The SEO Framework. Gegenereerde pagina’s krijgen de SEO-instellingen van de template met de eigen waarden van elke pagina, en templates blijven buiten de sitemaps van deze plugins en staan op noindex.
  • Nieuw: bij het importeren van templates zie je eerst wat het bestand toevoegt en wijzigt: per template een nieuw concept of een update, en de eigenschappen en groepen die nieuw, gewijzigd of verwijderd zijn, plus een ontbrekende hoofdtemplate en dubbele URL’s.
  • Nieuw: hooks voor add-ons in de groepsimport (andere bestandsformats, de aanvraag voor een URL, extra velden in de wizard, na een import), voor de instellingen van een add-on in het instellingenformulier, en voor het vergelijken van Als / dan-regels. Zie de hookreferentie op docs.rowsprout.com.
  • Gewijzigd: een groep zonder titel krijgt geen pagina; de tab Groepen en de melding bij het opslaan geven aan welke groepen op een titel wachten. Een lege URL/slug volgt uit de titel.
  • Gewijzigd: als je een groep van een hoofdtemplate verwijdert, worden ook de groepen die de subtemplates ervoor hebben verwijderd, met hun pagina’s.
  • Gewijzigd: de tab Groepen van een subtemplate biedt geen “Groep toevoegen” en geen sleepgrepen meer, omdat de groepen uit de hoofdtemplate komen.
  • Gewijzigd: RowSprout Instellingen heeft één knop Wijzigingen opslaan voor alle instellingen.
  • Oplossing: bij het opslaan van een template met veel groepen kon het formulier worden afgekapt bij max_input_vars van PHP, waardoor de groepen boven de limiet verloren gingen. Het formulier wordt nu als één veld verzonden, en een afgekapt formulier wordt nooit opgeslagen.
  • Oplossing: als je een groep verwijdert, worden de rijen die een subtemplate of een WPML-vertaling onder dezelfde groeps-ID heeft niet meer mee verwijderd.
  • Oplossing: een lege nieuwe groepskaart wordt niet meer gemarkeerd als kaart zonder titel.
  • Oplossing: de editorteksten van het Raster-blok worden vertaald, en vier teksten in het beheer zijn duidelijker geformuleerd.
  • Oplossing: de voorbeelddata stelt geen eigen paginatemplate meer in, dus de pagina’s gebruiken het paginatemplate van het thema.

3.2

  • Nieuw: RowSprout Importeren / Exporteren. Templates downloaden (met hun eigenschappen, groepen en pagina bouwer lay-out) als een bestand en ze op een andere site importeren als concepten. De templates lijst krijgt ook een exporteren actie.
  • Nieuw: voorbeelddata. Eén klik op de pagina Importeren / exporteren voegt twee voorbeeldtemplates toe (stedentrips en foodtours in Europese steden) om RowSprout mee uit te proberen.
  • Nieuw: een pagina waarvan de URL al in gebruik is op de site, wordt niet gegenereerd: door een pagina van een andere template of, zonder URL-voorvoegsel, door een gewone pagina, een bericht of content van een andere plugin. De template wordt wel opgeslagen en de andere pagina’s worden gegenereerd; een melding toont de URL’s en wat ze gebruikt. Voorheen was een van de twee pagina’s niet meer bereikbaar, zonder enige waarschuwing.
  • Gewijzigd: een subtemplate waarvan de hoofdtemplate nog geen pagina’s heeft, wordt nu opgeslagen; de pagina’s worden gegenereerd zodra de hoofdtemplate zijn eigen pagina’s heeft. Voorheen werd het opslaan geweigerd.
  • Gewijzigd: een template zonder groepen toont nu “Geen groepen” als status, in plaats van “Nog geen pagina’s gegenereerd”.
  • Oplossing: gegenereerde pagina’s gebruiken nu het paginatemplate van het thema in plaats van het template voor blogberichten, dus blokthema’s zoals Twenty Twenty-Five tonen er geen lege regel “Geschreven door … in …” meer boven. Een template die je zelf hebt gekozen, gaat nog steeds voor.
  • Oplossing: een bulkactie (Naar prullenbak verplaatsen, Terugzetten, Permanent verwijderen, Prullenbak legen, of Ongedaan maken na het in bulk naar de prullenbak verplaatsen) op een hoofdtemplate die samen met de subtemplates is geselecteerd, eindigt niet meer in een fout.

3.1

  • Eerste openbare release.