Futzing with the app functionality, had some unorganized ideas and thoughts

I’ve loved my use of Ghost over the years, and I’ve done some interesting things in the pre-1.0 version of Ghost on my site Tedium, but I admit I’ve been slow to move over to 1.0 because it would require some changes to my workflow and approach.

But I’m finally taking a stab at it after taking a second look at the app functionality. It’s certainly not a full ecosystem yet, but Ghost has some room to be strengthened if you know what you’re doing.

Anyway, this got me to thinking about Ghost as a platform, things I’d like to see and work on, and I wanted to kind of get things written down into words. Some of this might make sense as separate ideas posts, and I might do that in the next week or two, but I think that combining them together sort of highlights my headspace at the moment.

This is not super-organized, but if anyone has thoughts, I’d love to hear:

  • Broaching the idea of shortcodes. As far as I’ve read in the past, shortcodes have been discouraged by the Ghost team. That’s fine—I definitely am not suggesting that it be part of the mainline Ghost product, because it’s an approach doesn’t work for everyone and clutters up the DB. But the existence of an app-based solution could be beneficial, even if it’s simply supported by the community. If that were the case, I think the solution is not to add them to the Ghost interface, but for an app framework that can parse blog posts using regex, in cases where they would come in handy—a solution posited in a blog post series I caught wind of last week. Better to code that into an app than add that into the main system, so sites that would benefit from the ability to add extra divs or styling could take advantage of it. (Side note: I know that Markdown-It allows some of this functionality through the addition of node modules, but it diverts significantly from the simplicity of shortcodes and Markdown in general, so I don’t know if that’s the right solution.)
  • A different take on embeds. One fingers-crossed on my wishlist is that I’d like to see Ghost add an oEmbed-style system so that a URL for a tweet, a YouTube video, an Instagram post, or a similar social post was enough to embed it. The reason this is a better approach than simply embedding the full object is because such code can change over time—if Twitter adds new functionality for example, or if a new social network comes on the scene. This could also be done with an app built around regex, of course, among other ways. I think that this is one of WordPress’ best features (as well as Medium’s) and something that would make Ghost a lot easier to use for writers. If you have to copy and paste embed codes for a number of emails through Twitter or YouTube, that adds a lot of extra time and work, and while tools like Embedly can do this, it’d be nice to do it without an extra script that readers have to load. I’m not sure if this is the direction Koenig is going, but I’d support if if it were. — EDIT: I see this is being worked on in Koenig, so I’ll remove it.
  • Using apps to create new views. I know that the AMP functionality has been somewhat controversial in Ghost, but I think that its thinking could translate to other directions for the platform as a whole, if so desired. Here’s what I’m thinking: Based on a cursory glance of the AMP plugin, it would be possible to take the bones of that to build a similar routing app for a separate function. Just one example I could see is the creation of separate page, like “yoursite/permalink/email”, that would render the code for the article in an email-friendly theme, effectively (for those interested) allowing users to cut down on a lot of the busywork that comes with writing an email in the nature of Stratechery, which took the exact opposite approach to this problem, implementing a tool that effectively cleans up Ben’s code and spits out an email. (And yes, my newsletter Tedium would benefit from a tool like this as well, but I’m trying to think more broadly.) I could almost see it as something where the page would be private only for logged-in users, and the view would take the HBS theme, inline the code and add UTM codes on the fly. As far as sending, it could be a matter of giving users options—either copying and paste the code to the email, or by making it something that could be sent through the existing Ghost list. Ghost is just a blogging platform, but sometimes blog posts go directly into reader inboxes. As Ghost evolves, that could be a real opportunity to stand out while still keeping to the blogger ethos.
  • Will Koenig be extendible? Finally, to get a better understanding of the new hotness, will it be possible down the line to create custom components for Koenig? That could be a real game-changer if done well—it evokes some of the functionality of Statamic or Kirby, perhaps even the keyboard magic of an editor like Gingko.

Long story short, I think that the app functionality has a lot of untapped potential, even in its still somewhat embryonic form, and I plan on working on some of this on my end. If anyone has any thoughts on this, I’d love to hear—and if you’re doing anything cool with apps, I’d love to see it.

To conclude here: I had considered, for a while, whether Ghost was the right fit of platform for my site in the long run because of recent growth and changes on my end, and I did a lot of research on this, looking at seemingly hundreds of CMSes and kicking a whole lot of tires. Ultimately, I came back to the fact that nothing else has quite the same quality of interface or long-term potential, and the community is pretty strong as well. Nothing else out there is built so specifically for writers rather than coders or marketers.

So I’m going to stick with it. Look forward to where it takes me.

Hey @ernie :wave: Thanks for your thoughts :smile:

Shortcodes won’t be a thing in Ghost but the new Koenig is designed to eventually be extensible via custom cards that could also register their own text expansions. I think that would cover all typical uses of shortcodes.

Apps are definitely on the cards, you can add your vote and ideas to the Ghost Apps topic on the ideas board.

You also mention a number of things such as e-mail newsletters and so on that won’t necessarily be apps but are definitely planned as part of our Memberships & Subscriptions feature that we’re currently hiring for.

Definitely! The plan is to allow for custom cards and text expansions to be registered/installed. We’re also only just getting started with what’s possible via the cards interface, expect a lot of exciting things in this area :grin: Cards really can be anything, you could have a podcast player card, or a slideshow, or an image gallery card to name a few simpler ideas.

The underlying structure of Koenig also opens up a lot of additional possibilities we’d like to explore such as being able to create content templates. For example, adding a “recipe” template that defines the structure of a typical page on your site. The template could consist of a number of cards (image, ingredient list, cooking steps) as well as rich-text areas (description) that would be pre-populated as blank areas for you when creating a “recipe” post.

Another thing to keep an eye on is the Dynamic routing work that will allow for a lot more control over your site structure. It should also eventually allow things such as your suggested “email view”, alternate feeds, and a lot more.

I think in short, the answer is: “Don’t worry, we’re thinking about (and working on) all of these things!” :+1:


Thanks @Kevin for all this! It all sounds pretty great, though I may need to personally experiment with shortcodes on my end as a stopgap just to get my setup to Ghost 1.0. I may post some specific help requests regarding that in the coming days. (Long story short: I was able to successfully implement them as a solution for standard posts, but the prePostsRender filter that I rely on for that doesn’t appear to be used in RSS or AMP.)

One other question I have about Koenig’s functionality—have you considered making available some text-only tags that can be recognized in as Koenig blocks in a copy-paste? I ask because I think a lot of people do their writing in another editor, then pull it into Ghost, and I think having a way to at least start building the blocks before they go into the system in the rich format would save some production time.

If you copy/paste markdown into Koenig it will auto-convert, similarly if you copy/paste from a rich-text source such as another website or editor it will also auto-convert as much as possible. You can read about the current features in the beta announcement post.

@ernie it’s fun to see someone really digging into the codebase and exploring the potential. You’ve touched on a lot of interesting points and I think Kevin has addressed most of them, but to give you a slightly broader picture.

The original plan for Ghost included the concept of apps, but we deliberately moved away from customisation in the early days so that we could build a solid core without the overhead of backwards compat & competition between core & extensions.

This year, we are taking the very first steps towards making Ghost into a customisable, extensible, super powerful platform. We have two active projects: the new Editor and dynamic routing (channels).

Some of what you’re talking about falls under the Editor, other parts falls under dynamic routing, so perhaps you’d like to get involved with beta testing those projects? The very first beta of dynamic routing is being prepped to ship as I write this.

Once those two huge projects are “complete” we have plans to revisit other areas of customisation, including the API and Apps, but that’s not going to be until much later this year and in the meantime all of our (limited, we’re a TINY team) attention is being poured into the current active projects.

Let me end by reiterating Kevin - we are thinking about how to make Ghost customisable, we have huge plans for how that will look in the end, and we are actively working towards those huge plans with the resources we have :slight_smile:

Hey @Hannah, thanks for your thoughtful response here. I realize you guys are small scale and doing amazing work, and I want to emphasize that it’s really mind-blowing how far you’ve taken things in a few short years.

I also do appreciate you giving it to me straight on the situation with apps and with your scale. I think I’ll make the point that, hopefully, once some of these customizations are made, the community will be happy to assist by coming up with ways to make them do everything under the sun. :slight_smile:

And I do get, in this context, why you moved away from apps. It’s sort of a game of focusing on making the experience good for everyone, then focusing on the potential for edge cases that something like apps would involve. I think as you try to experiment, you run into edge cases. Comes with the territory.

I’m not on a deadline with any future updates, and I have a staging site of sorts that would be perfect for testing some of these wacky new features as they come up. So I’ll try to slow my roll a little and hopefully that leads into some interesting new directions for both Ghost and what I’m able to personally do with it. Cheers!