{"id":298845,"date":"2026-05-02T01:39:07","date_gmt":"2026-05-02T01:39:07","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/nostr-wp-blog\/"},"modified":"2026-05-02T02:05:37","modified_gmt":"2026-05-02T02:05:37","slug":"synalysis-blog-importer-for-nostr","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/synalysis-blog-importer-for-nostr\/","author":14951578,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.4","stable_tag":"1.1.4","tested":"6.9.4","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"Synalysis Blog Importer for Nostr","header_author":"Synalysis","header_description":"Imports NIP-23 long-form articles from Nostr relays into WordPress with archive and single templates plus optional NIP-05 (not affiliated with the Nostr protocol or WordPress).","assets_banners_color":"","last_updated":"2026-05-02 02:05:37","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/synalysis\/synalysis-blog-importer-for-nostr","header_author_uri":"https:\/\/github.com\/synalysis","rating":0,"author_block_rating":0,"active_installs":0,"downloads":94,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.4":{"tag":"1.1.4","author":"synalysis","date":"2026-05-02 02:05:37"}},"upgrade_notice":{"1.1.4":"<p>Removed custom extension sign-in and tightened review findings.<\/p>","1.1.3":"<p>Coding standards and readme tag cleanup.<\/p>","1.1.2":"<p>Renamed plugin and slug for directory compliance. Re-activate after upload if WordPress does not prompt automatically.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.4"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[323,87,4608,220135,126553],"plugin_category":[59],"plugin_contributors":[261639],"plugin_business_model":[],"class_list":["post-298845","plugin","type-plugin","status-publish","hentry","plugin_tags-blog","plugin_tags-import","plugin_tags-markdown","plugin_tags-nostr","plugin_tags-relay","plugin_category-utilities-and-tools","plugin_contributors-synalysis","plugin_committers-synalysis"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/synalysis-blog-importer-for-nostr.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>This plugin fetches <a href=\"https:\/\/github.com\/nostr-protocol\/nips\/blob\/master\/23.md\">NIP-23<\/a> long-form articles from relays you configure and stores them as a dedicated content type (<code>synalysis_article<\/code>), separate from default Posts. It provides an article archive, single-article templates, optional <code>\/.well-known\/nostr.json<\/code> for NIP-05, and basic SEO integration (including sitemap support).<\/p>\n\n<p>PHP dependencies are bundled in <code>vendor\/<\/code> in official release zips, so site owners do not need to run Composer on the server.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>synalysis-blog-importer-for-nostr<\/code> folder to <code>\/wp-content\/plugins\/<\/code> (or install the release <code>.zip<\/code> via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>).<\/li>\n<li>Activate <strong>Synalysis Blog Importer for Nostr<\/strong> through the <strong>Plugins<\/strong> menu.<\/li>\n<li>Go to <strong>Settings \u2192 Synalysis Blog Importer<\/strong> and add author npubs\/pubkeys, relay URLs, and other options.<\/li>\n<li>Run a sync from the settings page or wait for the scheduled task to import articles.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"are%20imported%20articles%20mixed%20with%20my%20normal%20blog%20posts%3F\"><h3>Are imported articles mixed with my normal blog posts?<\/h3><\/dt>\n<dd><p>No. Imported articles use the <code>synalysis_article<\/code> custom post type. They appear under <strong>Relay articles<\/strong> in the admin and use the plugin\u2019s archive and single templates. They do not replace or merge with default <strong>Posts<\/strong> unless your theme or another plugin explicitly queries that post type.<\/p><\/dd>\n<dt id=\"do%20i%20need%20composer%20on%20my%20wordpress%20server%3F\"><h3>Do I need Composer on my WordPress server?<\/h3><\/dt>\n<dd><p>Not if you install from a release zip that includes <code>vendor\/<\/code>. Composer is only required when working from a development copy without vendored dependencies.<\/p><\/dd>\n<dt id=\"where%20do%20i%20report%20bugs%20or%20request%20features%3F\"><h3>Where do I report bugs or request features?<\/h3><\/dt>\n<dd><p>Use the <a href=\"https:\/\/github.com\/synalysis\/synalysis-blog-importer-for-nostr\/issues\">GitHub issue tracker<\/a>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>Removed the optional browser-extension login feature to avoid custom authentication on user sites. Tightened NIP-05 input validation, JSON-LD output, and release packaging for WordPress.org review.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Plugin check \/ PHPCS compatibility: login redirect handling, NIP-05 request path, readme tags (max 5), prefixed template variables, slug collision via WP_Query, documented ignores where appropriate.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Renamed plugin for WordPress.org trademark guidelines; text domain matches slug. Removed redundant load_plugin_textdomain (WP 4.6+). Documented public REST permission callbacks.<\/li>\n<li>Admin notices limited to this plugin\u2019s settings screen and (for a missing vendor tree) the Plugins list, in line with directory guidance on dashboard notices.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Release zip: strip disallowed file types from bundled Composer dependencies (WordPress.org policy).<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Packaging and readme updates; coding standards, security sniffs, and i18n fixes.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Imports NIP-23 long-form articles from configured relays into WordPress. Not affiliated with the Nostr protocol, WordPress, or relay operators.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/298845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=298845"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/synalysis"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=298845"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=298845"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=298845"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=298845"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=298845"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=298845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}