We love comics. We badly wanted to create comic strips. But there was one problem. Some of us can't draw a straight line for nuts.
But why should that stop us from creating comics? So here's a gift to ourselves and the world — a Comic Creator.
We created Comicgen to help people write better stories using comic.
Interested in data storytelling? Come join the #ComicgenFriday community.
A simple way to use Comicgen is from gramener.com/comicgen/.
- Choose your character
- Save the image as SVG
- Insert it into your favorite editor - Illustrator, PowerPoint, Photoshop, etc.
Here's a 3-minute video explaining how to create your own comic strip.
<iframe width="560" height="315" src="https://www.youtube.com/embed/E_2hdZuugI8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>For lettering, you can use comic fonts from Google fonts or Fonts.com.
Some fonts we like are:
Font | Example text |
---|---|
Architects Daughter | ![]() |
Cavolini (Windows) | ![]() |
Segoe Script (Windows) | ![]() |
Segoe Print (Windows) | ![]() |
News Cycle | ![]() |
Indie Flower | ![]() |
Amatic SC | ![]() |
Schoolbell | ![]() |
Just Another Hand | ![]() |
Patrick Hand | ![]() |
Neucha | ![]() |
Handlee | ![]() |
You can also use Comicgen using the plugins below. (We're planning more plugins. Your help is welcome!)
The Comicgen Power BI plugin lets you control the characters, emotions, poses, etc from data. Happy people can accompany good news on charts.
Comics are rendered via the endpoint https://gramener.com/comicgen/v1/comic
. We'll refer to
this as /comic
from now on.
Options for each character can be specified as URL query parameters. For example, to render Ethan's angling sideways, winking, we need:
name
:ethan
angle
:side
emotion
:wink
pose
:normal
This is exposed at /comic?name=ethan&angle=side&emotion=wink&pose=normal
:
The full list of options is at dist/characterlist.json.
You can create comics by directly linking to these files. You can embed these files directly in your plugin.
Storytellers want to share a message and change their audience. But they worry that their content is not engaging or "catchy" enough to drive the change.
- Comics are "catchy". That makes them a powerful way of engaging the audience.
- Comics are simple. Comics are a signal that the content is simple, interesting and often funny. Authors also make comic content simpler, interesting, and funny -- making this a virtuous cycle.
- Comics drive emotion. The pictures convey emotions better than just the words alone. They're funny. That helps learning, and makes the stories more memorable.
Anyone who writes an email, a presentation, or a document, is a storyteller.
Within organizations, we see this in:
- Presenting insights
- Executives' analysis. An analyst created a poster explaining their work using comic characters. It was simple and engaging -- the entire organization understood this deep learning technique.
- Managers' reports. An admin manager sent his status report as a pair of comic characters conversing. Their CEO read this report fully for the first time.
- Consultants' workshops. A consultant runs a culture workshop using comics in the presentation because "... it's a lot less threatening than an official PowerPoint presentation."
- Marketing stories. This could be:
- Product teams launching features. Google Chrome was launched using a comic book.
- Marketer emails
- Event manager invites
Our vision is to make storytelling with comics easy for everyone. (This includes non-designers, non-programmers, and non-storytellers.)
We do this by:
- Adding characters. Characters can be split into layers (like face & body). By combining these cleverly, we can create more characters with fewer drawings. If you have a character idea, please add a comment.
- Adding layers. We need objects like speech bubbles, panels, headings, objects, scenery, backgrounds etc.
- Integrate into your workflow. Comicgen should be easy to use in people's current workflow, with their existing tools.
- Designers use Illustrator / Sketch
- Developers use HTML / JS
- Analysts use Tableau / Power BI
- Managers use e-mail / MS Office
- We want to make storytelling easy for everyone
- API for developers. Comicgen automates away the drudgery in creating comics. Developers should be able to create any comic without designing, purely using an API
- UI for non-developers. We want users to be able to do this without any programming. This means exposing every feature of the API should be exposed on the UI
- Teaching. The ultimate aim is for people to build better stories. Let's teach them
We succeed when more people create more and better stories with Comicgen. We measure this by
- How many people have used comicgen
- How many stories have been created using comicgen
- How many characters are present in comicgen. (Variety drives adoption)
- TODO: We need more intermediate success metrics -- things that will drive adoption
To add a new character, or add images for an existing character:
- Add the SVG images under
svg/<character>/<attr>/.../<file>.svg
- File or folder names must use only lowercase letters. Avoid numbers or special characters
- Add an
svg/<character>/index.json
andsvg/<character>/index.svg
. Seesvg/dee/
for reference - Update the character credits
- Run
npm run build
to recompile files underdist/
- Run src/ on the comicgen folder and test the character
New versions of comicgen are released on Github and npm. Here is the release process:
# Commit all changes into the v1 branch.
# Update package.json version.
# Then:
npm upgrade
npm run build
npm run lint
git push gitlab v1
# Then: Test build at https://code.gramener.com/s.anand/deedey/-/pipelines
# Then: Test output at https://gramener.com/comicgen/v1/
git commit . -m"DOC: Release version x.x.x"
git push origin v1
git push gitlab v1
# Merge into release branch
git checkout release
git merge v1
git tag -a v1.x.x -m"Add a one-line summary"
git push gitlab release --follow-tags
git push origin release --follow-tags
git checkout v1
Then release on npm
# Maintained by @sanand0
npm publish
If you're a developer, we'd love your help in improving comicgen.
- Report bugs. If something doesn't work the way you expect, please add an issue
- Ask for features. Go through the issues. Add a Like reaction to what you like. Or add an issue asking for what you want.
- Offer help. Go through these issues. Pick something interesting. Add a comment saying "I'd like to help." We'll revert in 2-4 days with ideas.
There are 3 areas we're focusing on. Help in these areas would be ideal.
People like to use their own platforms, not switch to a new one. So let's integrate comicgen into popular platforms like Excel, PowerPoint, Power BI, Tableau, R, etc as plugins.
See integration issues related »
People find it easier to create comics using a UI than programming. So let's create an interface that let people create an entire graphic novel!
Developers access comicgen through a JS library. What can we do to make it easier, and feature rich?
Library developed by
- Kriti Rohilla [email protected]
- S Anand [email protected]
- Shamili Robbi [email protected]
- Tejesh [email protected]
Conceived & designed by
- Ramya Mylavarapu [email protected]
- Richie Lionell [email protected]
- Devarani B [email protected]: Aavatar, Ethan & Facesketch under CC0 license
- Pablo Stanley: Humaaans under CC-BY license
- Ramya Mylavarapu [email protected]: Aavatar, Ava, Bean, Biden, Dee, Dey, Evan, Holmes, Jaya, Priya, Ringo, Speechbubbles, Trump & Watson under CC0 license
- Renel McCullum: Bill under CC0 license
- Shawf Designs https://www.fiverr.com/shawf_designs: Sophie under CC0 license
- Swetha Mylavarapu: Aryan & Zoe under CC0 license
- Suchismita Naik [email protected]: Ricky under CC0 license
Designers, we'd love your help in improving comicgen.
If you're a designer, you could help by:
- Designing new characters. Comicgen characters are open for everyone to use. We credit the authors. You can work freelance with us, and get paid per character. You can pick your own character, or choose from the characters people are looking for.
- Adding new layers. Apart from characters, we need other "layers" -- things we can add to panel, like speech bubbles, background objects, etc. You can design new kinds of objects if you think people will use it. Here are some layers people have asked for.
Here's a guide to help understand how to design and submit new characters or layers.
Characters are made of 1 or more SVG images.
The easiest way to create a character is to draw a dozen SVGs and save them as individual files of the same dimensions. For example:
A better way would be to break up the character into different parts. For
example, you could draw faces with different emotions and save them under an
faces/
folder:
Then you could draw the bodies under a bodies/
folder:
If you do this, you must make sure that:
- All faces have the same dimensions, and are at the same position within the SVG
- All bodies have the same dimensions, and are at the same position within the SVG
- When you super-impose any face on any body, the images should align.
You can choose to break up the images in any number of ways. For example:
faces/
,bodies/
face/
,trunk/
,leg/
,shoes/
hair/
,face/
,eyes/
,mouth/
,trunk/
,legs/
The more combinations you have, the more complex your image becomes. You could start small and then add variety.
Give your character a name (e.g. "Ant Man"). Save the SVG files under a folder with the character name (e.g. "ant-man" - lower-case, use hyphens as separator). Add this folder under the svg/ folder.
Then send a pull request or email S Anand [email protected].
When doing this, please mention one of the following:
Comicgen is free, but their designers' time is not. We pay the designers in our team, and freelancers, for the characters they design.
Please e-mail Anand [email protected] and Richie [email protected] if you can design characters as a freelancer. We'd love your help.
Gramener visuals do not externally collect any information, personal or otherwise. If you have any questions, please contact us at [email protected]