Colorful Second Brain - Part 2: Excalidraw Color Palette Loader
Based on Zsolt's Visual Personal Knowledge Management's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.
Custom Excalidraw palettes can be generated externally and then applied inside Excalidraw via the Obsidian-based “palette loader” script.
Briefing
A custom color palette workflow for Excalidraw is the centerpiece here: build palettes elsewhere, save them in an Obsidian vault, then use the “palette loader” script to repaint existing drawings with brand-matching or more/less vivid color schemes. The payoff is practical—switching palettes becomes a repeatable, one-click process instead of manually recoloring shapes.
The process starts with a quick grounding in color theory concepts that matter when generating palettes. The palette logic distinguishes the RGB color wheel used by computers (red, green, blue) from the RYB wheel used by artists (red, yellow, blue). From there, the video lays out common palette structures: monochromatic (one hue with multiple shades), analogous (a base color plus its neighbors), complementary (two colors opposite on the wheel), split complementary (three colors using the neighbors of the complement), triadic (three equidistant hues), and tetradic (four hues forming a rectangle/square). It also notes how shade generation can be driven by algorithms—changing lightness/darkness and, optionally, shifting hue to create warmer shadows and cooler highlights.
For palette creation, Palatin is presented as the most convenient generator because the palette loader script works best with Palatin’s output format (though it can handle other generators too). In Palatin, users pick a palette type (monochromatic, analogous, triadic, tetradic), optionally add complementary colors, and then tune parameters like hue position, saturation, and the angular distance between colors on the wheel. The result is a palette defined by a base color plus multiple shades per secondary color. Once the palette looks right, export is done via “Sketch palette,” which produces text that can be copied into Obsidian.
In Obsidian, palettes are stored as documents inside a dedicated folder (defaulting to an Excalidraw “palettes” folder). After saving the palette data, the first-time setup requires installing the palette loader script from the Excalidraw script library and running it once. When a palette is loaded, the script also fills in missing essentials—adding black, white, transparent, and two gray shades—so Excalidraw has a complete set of colors to map onto existing elements.
Switching palettes is then demonstrated by drawing a simple face and repainting it. If the new palette is compatible in size (e.g., both use the same number of base/secondary colors and shades), the script offers an option to “repaint” so the drawing’s colors remap line-by-line from the old palette to the new one. If the palette structure differs (such as moving between monochromatic and triadic), the script may skip the repaint prompt and simply replace the palette.
Finally, the workflow supports non-JSON palette sources. Users can export as text, then edit the output so only hexadecimal color values remain (without the “#” character) to avoid Obsidian treating them as tags. The palette loader can then import that edited list and repaint drawings accordingly.
Overall, the central insight is that palette switching in Excalidraw can be automated end-to-end—generation in Palatin, storage in Obsidian, and deterministic recoloring via palette loader—making iterative experimentation with color combinations fast enough to be genuinely useful for real projects and brand-aligned notes.
Cornell Notes
The workflow centers on creating custom Excalidraw color palettes outside the app and then using the “palette loader” script to repaint drawings with those palettes. Palette design is guided by color-wheel relationships—monochromatic, analogous, complementary, split complementary, triadic, and tetradic—plus shade-generation choices like lightness/darkness and hue shifts. Palatin is recommended because its “Sketch palette” export fits the palette loader’s expectations, but other generators can work via a text/hex workflow. In Obsidian, palettes are stored in a dedicated folder, and the script fills in missing colors (black, white, transparent, and gray shades) so Excalidraw can map colors consistently. Palette switching is most seamless when the new palette matches the old palette’s structure so repainting can remap colors line-by-line.
Why does the RGB vs. RYB distinction matter when building palettes for Excalidraw?
What are the main palette structures, and how do they determine which hues appear together?
How does Palatin let users tune a palette beyond just picking a palette type?
What does palette loader add to a palette that only contains “colors” but not Excalidraw essentials?
When does palette switching repaint existing drawings versus just replacing the palette?
How can palettes be imported when the generator doesn’t output the right JSON format?
Review Questions
- How would you choose between complementary, split complementary, and triadic palette structures for a brand-matching goal?
- What compatibility condition determines whether palette loader offers to repaint an existing drawing?
- Why must hexadecimal values be imported without the “#” character in the text-based palette workflow?
Key Points
- 1
Custom Excalidraw palettes can be generated externally and then applied inside Excalidraw via the Obsidian-based “palette loader” script.
- 2
Color harmony can be approached systematically using palette structures: monochromatic, analogous, complementary, split complementary, triadic, and tetradic.
- 3
Palatin is the preferred palette generator because its “Sketch palette” export aligns with palette loader’s expected format.
- 4
Palette loader automatically adds black, white, transparent, and two gray shades so Excalidraw has a complete, usable palette.
- 5
Palette switching works best when the new palette matches the old palette’s structure, enabling line-by-line color remapping and repaint prompts.
- 6
Non-JSON palette sources can still work by exporting as text and importing only hex color values (without “#”) to prevent Obsidian tag pollution.