{"id":14069248,"url":"https://github.com/zzamboni/enwrite","last_synced_at":"2026-01-10T03:54:05.053Z","repository":{"id":29524453,"uuid":"33063004","full_name":"zzamboni/enwrite","owner":"zzamboni","description":"Evernote-powered statically-generated blogs and websites","archived":false,"fork":false,"pushed_at":"2023-04-12T05:41:29.000Z","size":99,"stargazers_count":174,"open_issues_count":14,"forks_count":19,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-07-11T22:26:09.047Z","etag":null,"topics":["blogging","evernote","hacktoberfest","hugo","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/zzamboni.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2015-03-29T05:43:59.000Z","updated_at":"2024-11-08T06:29:16.000Z","dependencies_parsed_at":"2024-02-24T13:59:37.085Z","dependency_job_id":null,"html_url":"https://github.com/zzamboni/enwrite","commit_stats":{"total_commits":107,"total_committers":4,"mean_commits":26.75,"dds":"0.11214953271028039","last_synced_commit":"5529f4c2905a6e61096f8ff6668fa6e148ae8602"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/zzamboni/enwrite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzamboni%2Fenwrite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzamboni%2Fenwrite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzamboni%2Fenwrite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzamboni%2Fenwrite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zzamboni","download_url":"https://codeload.github.com/zzamboni/enwrite/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzamboni%2Fenwrite/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267376609,"owners_count":24077364,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-27T02:00:11.917Z","response_time":82,"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":["blogging","evernote","hacktoberfest","hugo","ruby"],"created_at":"2024-08-13T07:06:45.445Z","updated_at":"2026-01-10T03:54:04.967Z","avatar_url":"https://github.com/zzamboni.png","language":"Ruby","readme":"# Enwrite [![Gem Version](https://badge.fury.io/rb/enwrite.svg)](http://badge.fury.io/rb/enwrite)\n\n\u003e What wild heart-histories seemed to lie enwritten\u003cbr/\u003e\n\u003e Upon those crystalline, celestial spheres!\n\u003cp align=\"right\"\u003e\u0026mdash;Edgar Allan Poe\u003c/p\u003e\n\nEvernote-powered statically-generated blogs and websites. Now posting\nto your blog or updating your website is as easy as writing a new note\nin Evernote! Post from the Evernote application on any device, use the\nweb clipper, or post by email. Enwrite will pick up the new content\nand post it automatically!\n\nStill work-in-progress but functional, more docs to come soon.\n\nThe first time you run it (or if you use the `--auth` flag afterward)\nyou will be asked to open an Evernote authentication page, and then to\nprovide the authentication code to Enwrite.\n\nFor now it produces output suitable for [Hugo](http://gohugo.io). You\nneed to have an existing Hugo install. Output to other blogging/site\ngenerator tools is planned for the future through output plugins.\n\n## Installation\n\n    $ sudo gem install enwrite\n\nMake sure you have Hugo installed:\nhttp://gohugo.io/overview/installing/\n\n## Getting started\n\nCreate a new Hugo site for testing:\n\n    $ cd ~/tmp\n    $ hugo new site my-hugo-blog\n    $ mkdir my-hugo-blog/themes; git clone https://github.com/zyro/hyde-x.git my-hugo-blog/themes/hyde-x\n\nPopulate it with contents from Evernote:\n\n    $ enwrite --help\n    Enwrite v0.2.4\n    \n    Usage: /usr/local/bin/enwrite [options] (at least one of -n or -s has to be specified)\n    \n    Search options:\n        -n, --notebook NOTEBOOK          Process notes from specified notebook.\n        -t, --tag TAG                    Process only notes that have this tag\n                                         within the given notebook.\n            --remove-tags [t1,t2,t3]     List of tags to remove from output posts.\n                                         If no argument given, defaults to --tag.\n        -s, --search SEARCHEXP           Process notes that match given search\n                                         expression. If specified, --notebook\n                                         and --tag are ignored.\n    Output options:\n        -p, --output-plugin PLUGIN       Output plugin to use (Valid values: hugo)\n        -o, --output-dir OUTDIR          Base dir of hugo output installation\n            --rebuild-all                Process all notes that match the given\n                                         conditions (normally only updated notes\n                                         are processed)\n    Other options:\n            --auth [TOKEN]               Force Evernote reauthentication (will\n                                         happen automatically if needed). Use\n                                         TOKEN if given, otherwise get one\n                                         interactively.\n            --config-tag TAG             Specify tag to determine config notes\n                                         (default: _enwrite_config)\n        -v, --verbose                    Verbose mode\n        -d, --debug                      Debug output mode\n            --version                    Show version\n        -h, --help                       Shows this help message\n\n## Sample usage\n\nGenerate posts from all notes tagged `published` in notebook\n`my_notebook`:\n\n    $ enwrite -n my_notebook -t published -o ~/tmp/my-hugo-blog\n    $ cd ~/tmp/my-hugo-blog\n    $ hugo server --watch\n\nGenerate posts from all notes matching `some search expression`:\n\n    $ enwrite -s 'some search expression' -o /tmp/my-hugo-blog\n\nImages, audio and video are embedded in the generated posts (audio\nand video are done using HTML5 `\u003caudio\u003e` and `\u003cvideo\u003e` tags). Other\nfile types are stored and linked to with their filename.\n\n## Special tags\n\nThe following tags trigger special behavior if found within the\nselected notes:\n\n### Globally-recognized tags\n\n- `page`: publish the note as a page instead of a blog post.\n- `post` (or none): publish the note as a blog post. This is the\ndefault.\n- `markdown`: store the note as Markdown instead of HTML. Markdown\n  notes can still contain images or other formatting, this will be left\n  untouched inside the Markdown file.\n- `_enwrite_config`: the contents of the note must be in YAML format\n  and contain configuration parameters to Enwrite (more documentation\n  about this will be written soon). For example, if you wanted blog\n  posts to be stored in the Hugo `blog` category instead of `post`,\n  you could include this:\n\n  ```\n  hugo:\n      tag_to_type:\n          default: blog/\n          post: blog/\n          page:\n  ```\n\n### Hugo-specific tags\n\nThe following tags are recognized by the Hugo output plugin (the only\none available at the moment):\n\n- `_enwrite_files_hugo`: text in these notes is ignored, but any\n  attachments are stored under the Hugo output directory. `.tar.gz`\n  files will be unpacked under that directory, all others will be\n  stored as-is. You can use this to have Hugo config files, themes,\n  static contents or anything else automatically installed by Enwrite\n  as well. Please note that any \"files\" notes *must also* be included\n  in the selection criteria specified by `-n`, `-t` or `-s` (e.g. if\n  you are using `-t published`, your files notes must also be tagged\n  `published` or they will be ignored).\n\n  Any text in files notes will be ignored, so you can use it to make\n  it human-readable. For example, I have the following note in the\n  notebook that powers http://zzamboni.org/new/, so I can start from a\n  plain Hugo site and have it fully customized after running\n  `enwrite`:\n  \n  ![Files note screenshot](https://www.evernote.com/shard/s2/sh/f1baa4dc-9e30-4c61-9f94-0014ba80a531/900eb250af52c9e5/res/96777fc2-8ac6-4d30-9943-e05014df5dc8/skitch.png)\n\n- Any tags of the form `_foo=bar` are inserted into the frontmatter\n  for the generated posts as field `foo` with value `bar`. This might\n  be used to add information (e.g. a custom `slug`, specify `weight` for\n  ordeing of pages, or any other field which may control the behavior or\n  output produced.\n  \n## Other tags\n\nAll the special tags described above are removed from the post before\npublishing (you can configure additional ones to remove with the\n`--remove-tags` option). All other tags are passed through to the\nproduced posts. Of course, you could have some of those tags also\ntrigger special behavior within the output system. For example, my\n[custom Hyde-X Hugo theme](https://github.com/zzamboni/new/tree/master/themes/hyde-x-zzamboni)\nrecognizes the following tags:\n\n- `_home`: set this page as the default for the site.\n- `_menu=main`: add this page to the top-level navigation menu.\n\n## Shortcuts\n\nShortcuts are of the form `[shortcutname params]`. The following\nshortcuts are currently recognized:\n\n- Embed Youtube video by URL or ID. You can optionally specify `width`\n  and `height`. All arguments must be enclosed in double quotes.\n\n```\n[youtube url=\"https://www.youtube.com/watch?v=dQw4w9WgXcQ\"]\n[youtube src=\"https://www.youtube.com/watch?v=dQw4w9WgXcQ\"]\n[youtube id=\"dQw4w9WgXcQ\" width=\"640px\" height=\"480px\"]\n```\n\n- Embed gist.\n\n```\n[gist url=\"https://gist.github.com/zzamboni/843142d3f759e582fe8f\"]\n```\n\n## Planned features/fixes\n\nhttps://github.com/zzamboni/enwrite/labels/enhancement\n\n## Bugs, feature requests, feedback or other issues?\n\nPlease open a\n[Github issue](https://github.com/zzamboni/enwrite/issues).\n","funding_links":[],"categories":["Ruby"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzzamboni%2Fenwrite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzzamboni%2Fenwrite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzzamboni%2Fenwrite/lists"}