{"id":17026501,"url":"https://github.com/djsudduth/joplin-plugin-paragraph-extractor","last_synced_at":"2026-02-14T12:02:25.006Z","repository":{"id":209099420,"uuid":"723133439","full_name":"djsudduth/joplin-plugin-paragraph-extractor","owner":"djsudduth","description":"Extract specific paragraphs out of Joplin notes using keywords, hashtags or custom tags similar to Logseq block references. Also, refresh extracted notes if source notes change.","archived":false,"fork":false,"pushed_at":"2025-01-10T18:02:50.000Z","size":454,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-27T19:47:47.612Z","etag":null,"topics":["block-references","extract-text","joplin","joplin-plugin","note-taking","notes-app","notetaking","plugin"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/djsudduth.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2023-11-24T19:20:34.000Z","updated_at":"2025-01-10T17:59:21.000Z","dependencies_parsed_at":"2023-12-05T17:27:01.780Z","dependency_job_id":"e2975325-6430-4688-865e-818cae9fbdde","html_url":"https://github.com/djsudduth/joplin-plugin-paragraph-extractor","commit_stats":null,"previous_names":["djsudduth/joplin-plugin-paragraph-extractor"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/djsudduth/joplin-plugin-paragraph-extractor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djsudduth%2Fjoplin-plugin-paragraph-extractor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djsudduth%2Fjoplin-plugin-paragraph-extractor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djsudduth%2Fjoplin-plugin-paragraph-extractor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djsudduth%2Fjoplin-plugin-paragraph-extractor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/djsudduth","download_url":"https://codeload.github.com/djsudduth/joplin-plugin-paragraph-extractor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djsudduth%2Fjoplin-plugin-paragraph-extractor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29443468,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T10:51:12.367Z","status":"ssl_error","status_checked_at":"2026-02-14T10:50:52.088Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["block-references","extract-text","joplin","joplin-plugin","note-taking","notes-app","notetaking","plugin"],"created_at":"2024-10-14T07:33:02.323Z","updated_at":"2026-02-14T12:02:24.999Z","avatar_url":"https://github.com/djsudduth.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Joplin Extract Paragraphs\n\nPlugin to extract and combine paragraph blocks from any selected notes to a single new note based on a keyword, hashtag or custom tag contained within the paragraph. This is similar to block functionality in other note taking systems like Logseq.\n\nTypical useage is to identify paragraphs with added hashtags (e.g., #mytag). Then, any paragraph with that tag in multiple notes can be copied and added to a single new note. However, keywords do not have to be hashtags and can just be a simple search word to identify and extract the paragraph.\n\nExample screenshots can be found here: https://discourse.joplinapp.org/t/plugin-extract-paragraphs/35831\n\nBullet and sub-bullet lists are treated as single paragraphs in Joplin. Settings will allow for extracting single bullets (along with their sub-bullets) that contain the keyword rather than all the bullets in the paragraph.\n\n**The full note can be extracted** if the hashtagged keyword is by iteself in the last paragraph. This is useful if you do not wish to add the same hashtag to every paragraph if the entire note is useful.\n\nAny Joplin tags in the source notes will be combined as Joplin tags in the extracted note. Selected notes are not changed at all.\n\n**Extracted notes can be refreshed from the source notes** if the setting to add extraction metadata is on. This will allow an extracted note to update if any of the source notes change. (NOTE: only one extracted note can be refrehed at a time. Also, if you use the rich text editor, you **must have the rich text metadata selection in settings turned on** so that the data isn't deleted if editing the extracted note).\n\n## Installation\n\n### Automatic\n\n- Go to `Tools \u003e Options \u003e Plugins`\n- Search for `Paragraph Extractor`\n- Click Install plugin\n- Restart Joplin to enable the plugin\n\n### Manual\n\n- Download the latest released JPL package (`io.github.djsudduth.paragraph-extractor.jpl`) from [here](https://github.com/djsudduth/joplin-plugin-paragraph-extractor/releases/latest)\n- Close Joplin\n- Copy the downloaded JPL package in your profile `plugins` folder\n- Start Joplin\n\n## Usage\n\n### Extracting Paragraphs\n\n- Select multiple notes to extract sections based on keyword into a single note\n- Click on `Tools \u003e Extract paragraphs from notes` or use the command `Extract paragraphs from notes` from the context menu\n\n### Refreshing Extracted Notes\n\n- Select a single note that was previously extracted with the appended metadata (see settings to turn on metadata)\n- Click on `Tools \u003e Refresh extracted paragraphs note` or use the command `Refresh extracted paragraphs note` from the context menu\n\nComplete Video Tutorial:  \nhttps://youtu.be/tyk66PUjSCE\n\n## Options\n\nGo to `Tools \u003e Options \u003e Paragraph Extractor`\n\n- `Preserve source note titles with backlinks`: Titles of source notes will be embedded at the top in new note with links back to the original source notes. Default `true`.\n- `Embed source note titles at end of each extracted paragraph`: Titles of source notes will be embedded at the end of each extracted paragraph rather than at the top with a link back to the original source notes. Default `false`.\n- `Extract content at the bulleted list item level`: Bullets will be extracted at the top bullet level (including sub-bullets) vs all bullets within a paragraph. Default `false`\n- `Ignore the keyword case`: Any case for the keyword or hashtag keyword will be used for extraction. Default `false`\n- `Include the header of the section extracted`: Any H1-H6 header will be included with the extracted paragraph or bullet (this is ignored for keywords embedded within the header which are always extracted). Default `false`\n- `Default or Last Used Tag Prefix character`: Either the common hashtag # character (preferred) or $, %. Default `#`\n- `Default or Last Used Paragraph Tag or Keyword`: The entered keyword to search in notes to extract the paragraph. If the prefix hashtag field is set, then the tag is added to the keyword for finding paragraph blocks.\n- `Extract paragraphs that contain highlights`: Any paragraphs that contain highlights will also be extracted along with paragraphs with keywords. If there is a need to only extract paragraphs with highlighting then leave the keyword blank. Default `false`\n- `Remove extracted paragraph keyword and add end tag`: Any tagged/hashtagged keyword will be removed from the paragraph and an endtag will be added in the new extraction note. Removal assumes the keyword has a hashtag prefix character - otherwise the setting is ignored. The end tag is always appended when this is selected. Default `false`\n- `Append extracted note refresh metadata`: When paragraphs are extracted from one or many notes, the details of the plugin's settings and source note list will be appended as metadata in the form of a comment. This can be used to refresh an extracted note if the source note or notes change. Default `false`\n- `Append extracted note refresh metadata`: When paragraphs are extracted from one or many notes, the details of the plugin's settings and source note list will be appended as metadata in the form of a comment (unless the rich text compatibility option is selected which will make the metadata visible). This can be used to refresh an extracted note if the source note or notes change. Default `false`\n- `Enable rich text editor compatibility for refresh metadata`: If the rich text editor is used with note refresh - this must be enabled so that the appended refresh metadata isn't deleted when a refreshed note is edited within the rich editor. This does not need to be enabled if using only the markdown editor. Default `true`\n- `Title of the combined note`: New title of the combined note. Default `Extracted paragraphs`.\n- `Custom note title`: New note title with possible variables `{{FIRSTTITLE}}`, `{{LASTTITLE}}`, `{{ALLTITLE}}` and `{{DATE}}`.\n\n## Keyboard Shortcuts\n\nUnder `Options \u003e Keyboard Shortcuts` you can assign a keyboard shortcut for the following commands:\n\n- `Extract paragraphs from notes`\n\n## Build\n\nSee [BUILD](BUILD.md)\n\n## Changelog\n\nSee [Changelog](CHANGELOG.md)\n\n## Thanks\n\nSpecial thanks to [Jack Gruber](https://github.com/JackGruber) for the inspiration and excellent code to help bootstrap this plugin!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdjsudduth%2Fjoplin-plugin-paragraph-extractor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdjsudduth%2Fjoplin-plugin-paragraph-extractor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdjsudduth%2Fjoplin-plugin-paragraph-extractor/lists"}