{"_id":"@abeedoo/gho","_rev":"5-ca2485a888ca48ea6b35e92ceab1119c","name":"@abeedoo/gho","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@abeedoo/gho","version":"1.0.0","keywords":["ghost","cms","cli","blog","publishing"],"author":{"name":"Clifford Meece","email":"clifford.meece@me.com"},"license":"MIT","_id":"@abeedoo/gho@1.0.0","maintainers":[{"name":"meecect","email":"clifford.meece@me.com"}],"homepage":"https://github.com/abeedoolabs/ghost-cli#readme","bugs":{"url":"https://github.com/abeedoolabs/ghost-cli/issues"},"bin":{"gho":"bin/gho.mjs"},"dist":{"shasum":"87cf86251e64ac229459790cba8651f257638284","tarball":"https://registry.npmjs.org/@abeedoo/gho/-/gho-1.0.0.tgz","fileCount":3,"integrity":"sha512-PROa2cftx83oTE/7PRJz2Q2EvhgLTQhm40tjrhCxFVnI6U4mVOeWF+/GV+9IYPcD5Bnbnz3cA3twU/8auplGxw==","signatures":[{"sig":"MEYCIQCwPsa5TdTkni/6/ENJOENpURnwms9VBZw/yWquAqKaRAIhAMBeZuvVpmtg8UTlYnHFZFDm8pgDC6RrLOfPuIBZtzfG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15332},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"3c8fd8127493b59d7cb4c90d48c0f61c0407846b","_npmUser":{"name":"meecect","email":"clifford.meece@me.com"},"repository":{"url":"git+https://github.com/abeedoolabs/ghost-cli.git","type":"git"},"_npmVersion":"11.14.1","description":"Minimal CLI for managing Ghost CMS posts, pages, and tags","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/gho_1.0.0_1779123004482_0.870133253315803","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@abeedoo/gho","version":"1.0.1","keywords":["ghost","cms","cli","blog","publishing"],"author":{"name":"Clifford Meece","email":"clifford.meece@me.com"},"license":"MIT","_id":"@abeedoo/gho@1.0.1","maintainers":[{"name":"meecect","email":"clifford.meece@me.com"}],"homepage":"https://github.com/abeedoolabs/gho#readme","bugs":{"url":"https://github.com/abeedoolabs/gho/issues"},"bin":{"gho":"bin/gho.mjs"},"dist":{"shasum":"d1e9e0f77534dcb9e2e9528c59b243b7a0aeb11a","tarball":"https://registry.npmjs.org/@abeedoo/gho/-/gho-1.0.1.tgz","fileCount":3,"integrity":"sha512-VoVsCVel0Nl7dEZ6v/2h2o7+vHFUTwF83cMP8b+0a6+QK9J5Te/Ms8ttFsI5/SBQ8R60+pSThMbOFW/EVL0ezw==","signatures":[{"sig":"MEYCIQDWjlLYiWz1B5RcmIvP6+devPzvjG/Hu+dSiID0uFTX1gIhAINXKpRGknonMvSbI7AGT/x2652W7QEk1S3t14wkSRSD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15290},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"25ff50c4a9414b585a28ff16d4f0430fa8e865cc","_npmUser":{"name":"meecect","email":"clifford.meece@me.com"},"repository":{"url":"git+https://github.com/abeedoolabs/gho.git","type":"git"},"_npmVersion":"11.14.1","description":"Minimal CLI for managing Ghost CMS posts, pages, and tags","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/gho_1.0.1_1779123492808_0.28062431311444835","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@abeedoo/gho","version":"1.0.2","keywords":["ghost","cms","cli","blog","publishing"],"author":{"name":"Clifford Meece","email":"clifford.meece@me.com"},"license":"MIT","_id":"@abeedoo/gho@1.0.2","maintainers":[{"name":"meecect","email":"clifford.meece@me.com"}],"homepage":"https://github.com/abeedoolabs/gho#readme","bugs":{"url":"https://github.com/abeedoolabs/gho/issues"},"bin":{"gho":"bin/gho.mjs"},"dist":{"shasum":"c931a091679e61ddd50fe9d34d0b27654bdd922d","tarball":"https://registry.npmjs.org/@abeedoo/gho/-/gho-1.0.2.tgz","fileCount":3,"integrity":"sha512-OCy8uKj0zWxkvEVkcai6Ao023lxAsaSbKc8GN/dIvBfYRTLhAU4h2ouG4z+P3qdvw7p0hM8Hag1ixu7NilpVmQ==","signatures":[{"sig":"MEQCIHZCuKPxbZyY0Eb1OQm4161xUw8f5bFdM/EJ/5UhczozAiBJ6wWb4WNGnrZlV21FgkuWgERN8j/LKD6WbJxbRkT/gg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15866},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"a1093331de9d6a780242455caf959438613ddceb","_npmUser":{"name":"meecect","email":"clifford.meece@me.com"},"repository":{"url":"git+https://github.com/abeedoolabs/gho.git","type":"git"},"_npmVersion":"11.14.1","description":"Minimal CLI for managing Ghost CMS posts, pages, and tags","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/gho_1.0.2_1779204248564_0.2680237413626849","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@abeedoo/gho","version":"1.0.3","keywords":["ghost","cms","cli","blog","publishing"],"author":{"name":"Clifford Meece","email":"clifford.meece@me.com"},"license":"MIT","_id":"@abeedoo/gho@1.0.3","maintainers":[{"name":"meecect","email":"clifford.meece@me.com"}],"homepage":"https://github.com/abeedoolabs/gho#readme","bugs":{"url":"https://github.com/abeedoolabs/gho/issues"},"bin":{"gho":"bin/gho.mjs"},"dist":{"shasum":"3899f0882a229f261c46cd6808da745d91040480","tarball":"https://registry.npmjs.org/@abeedoo/gho/-/gho-1.0.3.tgz","fileCount":3,"integrity":"sha512-DXsQ0dWnTowXmCIYwJ/duYLG2yInxxvH8JM1vBZ5OgUYlSTzSObUOsEP4AU7yvmnCAbqPXh11LwvKpCUnG+aRQ==","signatures":[{"sig":"MEQCIEiIpfqXWlLwG/Y9XF5iSq7dMbqHAFAWsDS2Drekhuj3AiBFl8tkZm/qlSVFQde80vpn/cAfw43i+ivU0/EeW9sEBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16558},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"e62ae737f88a446a4b0f743c04852ee9ba7d3792","_npmUser":{"name":"meecect","email":"clifford.meece@me.com"},"repository":{"url":"git+https://github.com/abeedoolabs/gho.git","type":"git"},"_npmVersion":"11.14.1","description":"Minimal CLI for managing Ghost CMS posts, pages, and tags","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/gho_1.0.3_1780601475140_0.4761349399926911","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@abeedoo/gho","version":"1.1.0","description":"Minimal CLI for managing Ghost CMS posts, pages, and tags","type":"module","bin":{"gho":"bin/gho.mjs"},"keywords":["ghost","cms","cli","blog","publishing","claude-code","skill","ai"],"author":{"name":"Clifford Meece","email":"clifford.meece@me.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abeedoolabs/gho.git"},"engines":{"node":">=18.0.0"},"gitHead":"7f15e3661f83f26639042f35810dd7a06e5e3882","_id":"@abeedoo/gho@1.1.0","bugs":{"url":"https://github.com/abeedoolabs/gho/issues"},"homepage":"https://github.com/abeedoolabs/gho#readme","_nodeVersion":"22.18.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-lj6Hynr59QJScjsZbbJGyte4yt0D4Ex8CsczPjPNvEu+oAx3YVUlzcNxbRe8bAugcOm4OHiq0qeuRJkuP6VBQA==","shasum":"4ac0e9be2fcb4a958b9493b6f96efa559a7c2c78","tarball":"https://registry.npmjs.org/@abeedoo/gho/-/gho-1.1.0.tgz","fileCount":4,"unpackedSize":20005,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDNr2F1TdE7oQO6XaANVJlyiFLnrnukVoLgIGSWHttzvQIgdFXo16eaQv0IfC4Txu/WapsWxe8qWM42kpNtMvghPxI="}]},"_npmUser":{"name":"meecect","email":"clifford.meece@me.com"},"directories":{},"maintainers":[{"name":"meecect","email":"clifford.meece@me.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gho_1.1.0_1781024629313_0.851193118314604"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-18T16:50:04.388Z","modified":"2026-06-09T17:03:49.580Z","1.0.0":"2026-05-18T16:50:04.636Z","1.0.1":"2026-05-18T16:58:12.962Z","1.0.2":"2026-05-19T15:24:08.691Z","1.0.3":"2026-06-04T19:31:15.284Z","1.1.0":"2026-06-09T17:03:49.457Z"},"bugs":{"url":"https://github.com/abeedoolabs/gho/issues"},"author":{"name":"Clifford Meece","email":"clifford.meece@me.com"},"license":"MIT","homepage":"https://github.com/abeedoolabs/gho#readme","keywords":["ghost","cms","cli","blog","publishing","claude-code","skill","ai"],"repository":{"type":"git","url":"git+https://github.com/abeedoolabs/gho.git"},"description":"Minimal CLI for managing Ghost CMS posts, pages, and tags","maintainers":[{"name":"meecect","email":"clifford.meece@me.com"}],"readme":"# @abeedoo/gho\n\nMinimal CLI for managing Ghost CMS posts, pages, and tags. Zero dependencies.\n\n**[npm](https://www.npmjs.com/package/@abeedoo/gho)** · **[GitHub](https://github.com/abeedoolabs/gho)**\n\n## Install\n\n```bash\nnpm install -g @abeedoo/gho\n```\n\nOr use with npx:\n\n```bash\nnpx @abeedoo/gho list posts\n```\n\n## Setup\n\nGet your Admin API key from Ghost Admin → Settings → Integrations → Add custom integration.\n\nConfigure credentials using any of these methods (checked in priority order):\n\n### 1. Environment variables\n\n```bash\nexport GHOST_URL=https://your-ghost-site.com\nexport GHOST_ADMIN_API_KEY=your-id:your-secret\n```\n\n### 2. --env flag\n\n```bash\ngho --env /path/to/config list posts\n```\n\n### 3. `.gho` file (recommended)\n\nCreate a `.gho` file in your project root:\n\n```\nGHOST_URL=https://your-ghost-site.com\nGHOST_ADMIN_API_KEY=your-id:your-secret\n```\n\nAdd `.gho` to your `.gitignore` — it contains secrets.\n\n### 4. `.env` file\n\nFalls back to `.env` if no `.gho` file is found:\n\n```env\nGHOST_URL=https://your-ghost-site.com\nGHOST_ADMIN_API_KEY=your-id:your-secret\n```\n\n### Multi-site config\n\nYour `.gho` file can contain multiple sites using `[section]` headers:\n\n```\n# Default site (used when no --site flag)\nGHOST_URL=https://myblog.com\nGHOST_ADMIN_API_KEY=id:secret\n\n[staging]\nGHOST_URL=https://staging.myblog.com\nGHOST_ADMIN_API_KEY=id:secret\n\n[client-blog]\nGHOST_URL=https://client.example.com\nGHOST_ADMIN_API_KEY=id:secret\n```\n\nUse with the `--site` flag:\n\n```bash\ngho --site staging list posts\ngho --site client-blog publish my-post\ngho list posts                          # uses default\n```\n\n## Commands\n\n### List content\n\n```bash\ngho list posts                    # all posts\ngho list posts --status draft     # drafts only\ngho list posts --status published # published only\ngho list pages                    # all pages\n```\n\n### Create a draft\n\n```bash\ngho draft my-post-slug \"My Post Title\" content.md\n```\n\nCreates a draft post from a markdown file. If the file starts with `# Title`, the first line is stripped (the title comes from the argument). If a post with that slug already exists, it's replaced.\n\n### Publish / Unpublish\n\n```bash\ngho publish my-post-slug\ngho unpublish my-post-slug\n```\n\n### Get post details\n\n```bash\ngho get my-post-slug\n```\n\nShows title, status, URL, preview link, tags, and excerpt.\n\n### Update content\n\n```bash\ngho update my-post-slug updated-content.md\n```\n\nReplaces the post content from a markdown file. Preserves title, tags, and status.\n\n### Delete\n\n```bash\ngho delete my-post-slug\n```\n\n### List tags\n\n```bash\ngho tags\n```\n\nShows all tags with post counts, sorted by usage.\n\n## Claude Code Skill\n\nInstall gho as a Claude Code skill so Claude can manage your Ghost blog conversationally:\n\n```bash\ngho install-skill\n```\n\nThis copies the SKILL.md to `~/.claude/skills/gho/`. After installation, you can use `/gho` commands in Claude Code or just ask naturally:\n\n- \"list my drafts\"\n- \"publish the fence post\"\n- \"draft a new post from drafts/my-post.md\"\n\nThe skill is also available on community marketplaces:\n- [Claude Skills Market](https://www.claudeskillsmarket.com/)\n- [SkillsMP](https://skillsmp.com/)\n\n## How It Works\n\nUses Ghost's Admin API with JWT authentication. The CLI constructs JWTs from your Admin API key using Node's built-in `crypto` module — no external dependencies.\n\nPosts are created using Ghost's mobiledoc format with a markdown card, which means your markdown is rendered by Ghost's markdown engine (including code blocks, links, images, etc.).\n\n## License\n\nMIT — [Clifford Meece](https://cliffordmeece.com)\n","readmeFilename":"README.md"}