{"id":20040765,"url":"https://github.com/vadimkantorov/wpssg","last_synced_at":"2026-04-18T13:31:19.550Z","repository":{"id":219634609,"uuid":"749498751","full_name":"vadimkantorov/wpssg","owner":"vadimkantorov","description":"Primer of running WordPress as a Static Site Generator (SSG) with Markdown content","archived":false,"fork":false,"pushed_at":"2024-12-20T17:33:47.000Z","size":87,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-11T13:41:47.785Z","etag":null,"topics":["markdown","static-site-generator","wordpress"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vadimkantorov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-01-28T18:50:44.000Z","updated_at":"2024-12-20T17:33:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"107eb5a9-5370-43fb-9d95-eb1bae83121f","html_url":"https://github.com/vadimkantorov/wpssg","commit_stats":null,"previous_names":["vadimkantorov/wpssg"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vadimkantorov/wpssg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vadimkantorov%2Fwpssg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vadimkantorov%2Fwpssg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vadimkantorov%2Fwpssg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vadimkantorov%2Fwpssg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vadimkantorov","download_url":"https://codeload.github.com/vadimkantorov/wpssg/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vadimkantorov%2Fwpssg/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31971484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["markdown","static-site-generator","wordpress"],"created_at":"2024-11-13T10:43:43.399Z","updated_at":"2026-04-18T13:31:19.530Z","avatar_url":"https://github.com/vadimkantorov.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Primer of running WordPress as a Static Site Generator (SSG) with Markdown content\nPlease see [`.github/workflows/publish.yml`](.github/workflows/publish.yml) for the code\n\nCurrently uses:\n- https://github.com/wp-cli/wp-cli for headless WordPress installation and management\n- https://github.com/dirtsimple/postmark for Markdown import\n- https://github.com/elementor/wp2static for static WordPress crawling\n\n# WordPress SQL schema\n```sql\nPRAGMA synchronous = OFF;\nPRAGMA journal_mode = DELETE;\nBEGIN TRANSACTION;\nCREATE TABLE `wp_commentmeta` (\n  `meta_id` integer  NOT NULL PRIMARY KEY AUTOINCREMENT\n,  `comment_id` integer  NOT NULL DEFAULT '0'\n,  `meta_key` varchar(255) DEFAULT NULL\n,  `meta_value` longtext COLLATE BINARY\n);\nCREATE TABLE `wp_comments` (\n  `comment_ID` integer  NOT NULL PRIMARY KEY AUTOINCREMENT\n,  `comment_post_ID` integer  NOT NULL DEFAULT '0'\n,  `comment_author` tinytext NOT NULL\n,  `comment_author_email` varchar(100) NOT NULL DEFAULT ''\n,  `comment_author_url` varchar(200) NOT NULL DEFAULT ''\n,  `comment_author_IP` varchar(100) NOT NULL DEFAULT ''\n,  `comment_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'\n,  `comment_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'\n,  `comment_content` text NOT NULL\n,  `comment_karma` integer NOT NULL DEFAULT '0'\n,  `comment_approved` varchar(20) NOT NULL DEFAULT '1'\n,  `comment_agent` varchar(255) NOT NULL DEFAULT ''\n,  `comment_type` varchar(20) NOT NULL DEFAULT 'comment'\n,  `comment_parent` integer  NOT NULL DEFAULT '0'\n,  `user_id` integer  NOT NULL DEFAULT '0'\n);\nCREATE TABLE `wp_links` (\n  `link_id` integer  NOT NULL PRIMARY KEY AUTOINCREMENT\n,  `link_url` varchar(255) NOT NULL DEFAULT ''\n,  `link_name` varchar(255) NOT NULL DEFAULT ''\n,  `link_image` varchar(255) NOT NULL DEFAULT ''\n,  `link_target` varchar(25) NOT NULL DEFAULT ''\n,  `link_description` varchar(255) NOT NULL DEFAULT ''\n,  `link_visible` varchar(20) NOT NULL DEFAULT 'Y'\n,  `link_owner` integer  NOT NULL DEFAULT '1'\n,  `link_rating` integer NOT NULL DEFAULT '0'\n,  `link_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'\n,  `link_rel` varchar(255) NOT NULL DEFAULT ''\n,  `link_notes` mediumtext NOT NULL\n,  `link_rss` varchar(255) NOT NULL DEFAULT ''\n);\nCREATE TABLE `wp_options` (\n  `option_id` integer  NOT NULL PRIMARY KEY AUTOINCREMENT\n,  `option_name` varchar(191) NOT NULL DEFAULT ''\n,  `option_value` longtext NOT NULL\n,  `autoload` varchar(20) NOT NULL DEFAULT 'yes'\n,  UNIQUE (`option_name`)\n);\nCREATE TABLE `wp_postmeta` (\n  `meta_id` integer  NOT NULL PRIMARY KEY AUTOINCREMENT\n,  `post_id` integer  NOT NULL DEFAULT '0'\n,  `meta_key` varchar(255) DEFAULT NULL\n,  `meta_value` longtext COLLATE BINARY\n);\nCREATE TABLE `wp_posts` (\n  `ID` integer  NOT NULL PRIMARY KEY AUTOINCREMENT\n,  `post_author` integer  NOT NULL DEFAULT '0'\n,  `post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'\n,  `post_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'\n,  `post_content` longtext NOT NULL\n,  `post_title` text NOT NULL\n,  `post_excerpt` text NOT NULL\n,  `post_status` varchar(20) NOT NULL DEFAULT 'publish'\n,  `comment_status` varchar(20) NOT NULL DEFAULT 'open'\n,  `ping_status` varchar(20) NOT NULL DEFAULT 'open'\n,  `post_password` varchar(255) NOT NULL DEFAULT ''\n,  `post_name` varchar(200) NOT NULL DEFAULT ''\n,  `to_ping` text NOT NULL\n,  `pinged` text NOT NULL\n,  `post_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'\n,  `post_modified_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'\n,  `post_content_filtered` longtext NOT NULL\n,  `post_parent` integer  NOT NULL DEFAULT '0'\n,  `guid` varchar(255) NOT NULL DEFAULT ''\n,  `menu_order` integer NOT NULL DEFAULT '0'\n,  `post_type` varchar(20) NOT NULL DEFAULT 'post'\n,  `post_mime_type` varchar(100) NOT NULL DEFAULT ''\n,  `comment_count` integer NOT NULL DEFAULT '0'\n);\nCREATE TABLE `wp_term_relationships` (\n  `object_id` integer  NOT NULL DEFAULT '0'\n,  `term_taxonomy_id` integer  NOT NULL DEFAULT '0'\n,  `term_order` integer NOT NULL DEFAULT '0'\n,  PRIMARY KEY (`object_id`,`term_taxonomy_id`)\n);\nCREATE TABLE `wp_term_taxonomy` (\n  `term_taxonomy_id` integer  NOT NULL PRIMARY KEY AUTOINCREMENT\n,  `term_id` integer  NOT NULL DEFAULT '0'\n,  `taxonomy` varchar(32) NOT NULL DEFAULT ''\n,  `description` longtext NOT NULL\n,  `parent` integer  NOT NULL DEFAULT '0'\n,  `count` integer NOT NULL DEFAULT '0'\n,  UNIQUE (`term_id`,`taxonomy`)\n);\nCREATE TABLE `wp_termmeta` (\n  `meta_id` integer  NOT NULL PRIMARY KEY AUTOINCREMENT\n,  `term_id` integer  NOT NULL DEFAULT '0'\n,  `meta_key` varchar(255) DEFAULT NULL\n,  `meta_value` longtext COLLATE BINARY\n);\nCREATE TABLE `wp_terms` (\n  `term_id` integer  NOT NULL PRIMARY KEY AUTOINCREMENT\n,  `name` varchar(200) NOT NULL DEFAULT ''\n,  `slug` varchar(200) NOT NULL DEFAULT ''\n,  `term_group` integer NOT NULL DEFAULT '0'\n);\nCREATE TABLE `wp_usermeta` (\n  `umeta_id` integer  NOT NULL PRIMARY KEY AUTOINCREMENT\n,  `user_id` integer  NOT NULL DEFAULT '0'\n,  `meta_key` varchar(255) DEFAULT NULL\n,  `meta_value` longtext COLLATE BINARY\n);\nCREATE TABLE `wp_users` (\n  `ID` integer  NOT NULL PRIMARY KEY AUTOINCREMENT\n,  `user_login` varchar(60) NOT NULL DEFAULT ''\n,  `user_pass` varchar(255) NOT NULL DEFAULT ''\n,  `user_nicename` varchar(50) NOT NULL DEFAULT ''\n,  `user_email` varchar(100) NOT NULL DEFAULT ''\n,  `user_url` varchar(100) NOT NULL DEFAULT ''\n,  `user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'\n,  `user_activation_key` varchar(255) NOT NULL DEFAULT ''\n,  `user_status` integer NOT NULL DEFAULT '0'\n,  `display_name` varchar(250) NOT NULL DEFAULT ''\n);\nCREATE INDEX \"idx_wp_users_user_login_key\" ON \"wp_users\" (`user_login`);\nCREATE INDEX \"idx_wp_users_user_nicename\" ON \"wp_users\" (`user_nicename`);\nCREATE INDEX \"idx_wp_users_user_email\" ON \"wp_users\" (`user_email`);\nCREATE INDEX \"idx_wp_posts_post_name\" ON \"wp_posts\" (`post_name`);\nCREATE INDEX \"idx_wp_posts_type_status_date\" ON \"wp_posts\" (`post_type`,`post_status`,`post_date`,`ID`);\nCREATE INDEX \"idx_wp_posts_post_parent\" ON \"wp_posts\" (`post_parent`);\nCREATE INDEX \"idx_wp_posts_post_author\" ON \"wp_posts\" (`post_author`);\nCREATE INDEX \"idx_wp_links_link_visible\" ON \"wp_links\" (`link_visible`);\nCREATE INDEX \"idx_wp_options_autoload\" ON \"wp_options\" (`autoload`);\nCREATE INDEX \"idx_wp_term_taxonomy_taxonomy\" ON \"wp_term_taxonomy\" (`taxonomy`);\nCREATE INDEX \"idx_wp_term_relationships_term_taxonomy_id\" ON \"wp_term_relationships\" (`term_taxonomy_id`);\nCREATE INDEX \"idx_wp_commentmeta_comment_id\" ON \"wp_commentmeta\" (`comment_id`);\nCREATE INDEX \"idx_wp_commentmeta_meta_key\" ON \"wp_commentmeta\" (`meta_key`);\nCREATE INDEX \"idx_wp_usermeta_user_id\" ON \"wp_usermeta\" (`user_id`);\nCREATE INDEX \"idx_wp_usermeta_meta_key\" ON \"wp_usermeta\" (`meta_key`);\nCREATE INDEX \"idx_wp_terms_slug\" ON \"wp_terms\" (`slug`);\nCREATE INDEX \"idx_wp_terms_name\" ON \"wp_terms\" (`name`);\nCREATE INDEX \"idx_wp_comments_comment_post_ID\" ON \"wp_comments\" (`comment_post_ID`);\nCREATE INDEX \"idx_wp_comments_comment_approved_date_gmt\" ON \"wp_comments\" (`comment_approved`,`comment_date_gmt`);\nCREATE INDEX \"idx_wp_comments_comment_date_gmt\" ON \"wp_comments\" (`comment_date_gmt`);\nCREATE INDEX \"idx_wp_comments_comment_parent\" ON \"wp_comments\" (`comment_parent`);\nCREATE INDEX \"idx_wp_comments_comment_author_email\" ON \"wp_comments\" (`comment_author_email`);\nCREATE INDEX \"idx_wp_termmeta_term_id\" ON \"wp_termmeta\" (`term_id`);\nCREATE INDEX \"idx_wp_termmeta_meta_key\" ON \"wp_termmeta\" (`meta_key`);\nCREATE INDEX \"idx_wp_postmeta_post_id\" ON \"wp_postmeta\" (`post_id`);\nCREATE INDEX \"idx_wp_postmeta_meta_key\" ON \"wp_postmeta\" (`meta_key`);\nEND TRANSACTION;\n```\n\n# References\n- https://make.wordpress.org/core/2023/04/19/status-update-on-the-sqlite-project/\n- https://github.com/WordPress/wordpress-develop/pull/3220\n- https://core.trac.wordpress.org/ticket/57793\n- https://wordpress.org/plugins/sqlite-database-integration/\n- https://wp2static.com/developers/wp-cli/\n- https://github.com/dirtsimple/postmark\n- https://www.digitalocean.com/community/tutorials/how-to-use-wp-cli-to-manage-your-wordpress-site-from-the-command-line\n- https://blog.hubspot.com/website/backup-wordpress-site-using-cpanel\n- https://simplystatic.com\n- https://kinsta.com/blog/wp-cli/\n- https://leonstafford.wordpress.com/wordpress-static-html-output-plugin\n- https://localwp.com/\n- https://www.gloomycorner.com/publishing-posts-to-a-wordpress-site-with-markdown/\n- https://github.com/joshcanhelp/wordpress-to-markdown\n- https://github.com/gloomic/wp-cli-markdown-post\n- https://stackoverflow.com/questions/18671/quick-easy-way-to-migrate-sqlite3-to-mysql\n- https://te-st.org/2023/09/01/kind-wordpress/\n- https://kndwp.org/\n- https://wp2static.com/developers/wp-cli/\n\n- https://github.com/wp-cli/wp-cli/issues/6000\n- https://github.com/wp-cli/wp-cli/issues/6001\n- https://sqlite.org/forum/forumpost/fa6fd7b3ae\n- https://github.com/WordPress/wordpress-develop/pull/3220\n- https://github.com/WordPress/sqlite-database-integration/pull/157\n- https://bugs.mysql.com/bug.php?id=65941\n- https://gist.github.com/esperlu/943776\n\n- https://github.com/jekyll/minima/tree/demo-site\n- https://stackoverflow.com/questions/18772504/wp-insert-post-error-content-title-and-excerpt-are-empty\n- https://github.com/dirtsimple/postmark/issues/4\n- https://web.archive.org/web/20230929192125/https://wp2static.com/compiling-from-source/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvadimkantorov%2Fwpssg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvadimkantorov%2Fwpssg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvadimkantorov%2Fwpssg/lists"}