Add supplied post images to two posts and to the blog overview cards

- blog/posts/odoo-19-to-20-invoice-migration-with-n8n-and-mcp.html: in-post image
  much.png + og:image
- blog/posts/track-the-oca-modules-you-actually-use.html: in-post image
  oca_module_status.png + og:image
- blog/index.json: optional "image" key on those two entries only (text splice)
- script.js: renderBlog() draws .blog-thumb only when the entry carries an image
- style.css: .blog-thumb rule
- sitemap.xml: lastmod 2026-10-24 for the invoice-migration post

Built by profile webmaster (run 20261024_094206_5c4f28, verified PROBLEMS: 0 /
node --check OK); committed by olchi after that run died on an OpenRouter 402.
This commit is contained in:
oliver committed 2026-10-24 09:46:13 +00:00
1 parent 7b9db81e82
commit 62d9d76bde
6 files changed
+25 -3

No files matched your search

+4 -2
View File
@@ -6,7 +6,8 @@
"area": "tips", "area": "tips",
"headline": "Track the OCA Modules You Actually Use — Without Refreshing GitHub Every Day", "headline": "Track the OCA Modules You Actually Use — Without Refreshing GitHub Every Day",
"teaser": "Every new Odoo release starts the same routine. You install the latest version, open a browser, and begin clicking throu", "teaser": "Every new Odoo release starts the same routine. You install the latest version, open a browser, and begin clicking throu",
"link": "blog/posts/track-the-oca-modules-you-actually-use.html" "link": "blog/posts/track-the-oca-modules-you-actually-use.html",
"image": "https://image.office.odoo4projects.com/img/oca_module_status.png"
}, },
{ {
"id": "odoo-19-to-20-invoice-migration-with-n8n-and-mcp", "id": "odoo-19-to-20-invoice-migration-with-n8n-and-mcp",
@@ -14,7 +15,8 @@
"area": "tips", "area": "tips",
"headline": "This is how i updated my Invoices from Odoo 19 to Odoo 20 with n8n and much MCP", "headline": "This is how i updated my Invoices from Odoo 19 to Odoo 20 with n8n and much MCP",
"teaser": "Copying invoices from one Odoo instance to another by hand is the kind of task that looks small until you are on invoice", "teaser": "Copying invoices from one Odoo instance to another by hand is the kind of task that looks small until you are on invoice",
"link": "blog/posts/odoo-19-to-20-invoice-migration-with-n8n-and-mcp.html" "link": "blog/posts/odoo-19-to-20-invoice-migration-with-n8n-and-mcp.html",
"image": "https://image.office.odoo4projects.com/img/much.png"
}, },
{ {
"id": "6-tips-to-leverage-the-latest-odoo-management-app-update", "id": "6-tips-to-leverage-the-latest-odoo-management-app-update",
@@ -21,6 +21,7 @@
content="Copying invoices from one Odoo instance to another by hand is the kind of task that looks small until you are on invoice" content="Copying invoices from one Odoo instance to another by hand is the kind of task that looks small until you are on invoice"
/> />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="og:image" content="https://image.office.odoo4projects.com/img/much.png" />
<meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:card" content="summary_large_image" />
<link rel="icon" href="../../images/favicon.ico" /> <link rel="icon" href="../../images/favicon.ico" />
<link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.googleapis.com" />
@@ -61,6 +62,7 @@
font-weight: 700; margin: 1.5rem 0 0.5rem; color: var(--dark); font-weight: 700; margin: 1.5rem 0 0.5rem; color: var(--dark);
} }
.post-meta { color: rgba(33,37,41,0.5); font-size: 0.85rem; margin-bottom: 2rem; } .post-meta { color: rgba(33,37,41,0.5); font-size: 0.85rem; margin-bottom: 2rem; }
.post-image { width: 100%; border-radius: 0.75rem; margin-bottom: 2rem; box-shadow: 0 2px 8px rgba(13,27,46,0.08); }
.post-content h2 { .post-content h2 {
font-family: "Inter Tight", sans-serif; font-family: "Inter Tight", sans-serif;
font-size: 1.3rem; margin-top: 2rem; color: var(--dark); font-size: 1.3rem; margin-top: 2rem; color: var(--dark);
@@ -82,6 +84,9 @@
<article> <article>
<h1 class="post-title">This is how i updated my Invoices from Odoo 19 to Odoo 20 with n8n and much MCP</h1> <h1 class="post-title">This is how i updated my Invoices from Odoo 19 to Odoo 20 with n8n and much MCP</h1>
<div class="post-meta">October 23, 2026 &middot; Tips</div> <div class="post-meta">October 23, 2026 &middot; Tips</div>
<img src="https://image.office.odoo4projects.com/img/much.png"
alt="This is how i updated my Invoices from Odoo 19 to Odoo 20 with n8n and much MCP"
class="post-image" loading="lazy" />
<div class="post-content"> <div class="post-content">
<p>Copying invoices from one Odoo instance to another by hand is the kind of task that looks small until you are on invoice forty. I moved mine from Odoo 19 to Odoo 20 with an n8n workflow and the ODOO MCP from much ( available at the APP store for free) pointed at the new system, and the setup is simpler than it sounds: the old invoice goes in as context, the tool writes it into the new Odoo, and the agent handles the mapping in between.</p> <p>Copying invoices from one Odoo instance to another by hand is the kind of task that looks small until you are on invoice forty. I moved mine from Odoo 19 to Odoo 20 with an n8n workflow and the ODOO MCP from much ( available at the APP store for free) pointed at the new system, and the setup is simpler than it sounds: the old invoice goes in as context, the tool writes it into the new Odoo, and the agent handles the mapping in between.</p>
@@ -21,6 +21,7 @@
content="Every new Odoo release starts the same routine. You install the latest version, open a browser, and begin clicking throu" content="Every new Odoo release starts the same routine. You install the latest version, open a browser, and begin clicking throu"
/> />
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="og:image" content="https://image.office.odoo4projects.com/img/oca_module_status.png" />
<meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:card" content="summary_large_image" />
<link rel="icon" href="../../images/favicon.ico" /> <link rel="icon" href="../../images/favicon.ico" />
<link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.googleapis.com" />
@@ -61,6 +62,7 @@
font-weight: 700; margin: 1.5rem 0 0.5rem; color: var(--dark); font-weight: 700; margin: 1.5rem 0 0.5rem; color: var(--dark);
} }
.post-meta { color: rgba(33,37,41,0.5); font-size: 0.85rem; margin-bottom: 2rem; } .post-meta { color: rgba(33,37,41,0.5); font-size: 0.85rem; margin-bottom: 2rem; }
.post-image { width: 100%; border-radius: 0.75rem; margin-bottom: 2rem; box-shadow: 0 2px 8px rgba(13,27,46,0.08); }
.post-content h2 { .post-content h2 {
font-family: "Inter Tight", sans-serif; font-family: "Inter Tight", sans-serif;
font-size: 1.3rem; margin-top: 2rem; color: var(--dark); font-size: 1.3rem; margin-top: 2rem; color: var(--dark);
@@ -82,6 +84,9 @@
<article> <article>
<h1 class="post-title">Track the OCA Modules You Actually Use — Without Refreshing GitHub Every Day</h1> <h1 class="post-title">Track the OCA Modules You Actually Use — Without Refreshing GitHub Every Day</h1>
<div class="post-meta">October 24, 2026 &middot; Tips</div> <div class="post-meta">October 24, 2026 &middot; Tips</div>
<img src="https://image.office.odoo4projects.com/img/oca_module_status.png"
alt="Track the OCA Modules You Actually Use — Without Refreshing GitHub Every Day"
class="post-image" loading="lazy" />
<div class="post-content"> <div class="post-content">
<p>Every new Odoo release starts the same routine. You install the latest version, open a browser, and begin clicking through your favourite OCA repositories to find out which modules have been ported — and which ones you will have to live without for a while.</p> <p>Every new Odoo release starts the same routine. You install the latest version, open a browser, and begin clicking through your favourite OCA repositories to find out which modules have been ported — and which ones you will have to live without for a while.</p>
+9
View File
@@ -373,6 +373,14 @@ var si = 0,
for (var i = 0; i < pagePosts.length; i++) { for (var i = 0; i < pagePosts.length; i++) {
var p = pagePosts[i]; var p = pagePosts[i];
var bc = badgeClass(p.area); var bc = badgeClass(p.area);
var thumbHtml = "";
if (p.image)
thumbHtml =
'<img class="blog-thumb" src="' +
p.image +
'" alt="' +
p.headline +
'" loading="lazy" />';
var agentHtml = ""; var agentHtml = "";
if (p.agent) if (p.agent)
agentHtml = agentHtml =
@@ -381,6 +389,7 @@ var si = 0,
"</span>"; "</span>";
html += html +=
'<div class="blog-card">' + '<div class="blog-card">' +
thumbHtml +
'<div class="blog-card-top">' + '<div class="blog-card-top">' +
'<span class="blog-badge blog-badge-' + '<span class="blog-badge blog-badge-' +
bc + bc +
+1 -1
View File
@@ -20,7 +20,7 @@
</url> </url>
<url> <url>
<loc>https://odoo4projects.com/blog/posts/odoo-19-to-20-invoice-migration-with-n8n-and-mcp.html</loc> <loc>https://odoo4projects.com/blog/posts/odoo-19-to-20-invoice-migration-with-n8n-and-mcp.html</loc>
<lastmod>2026-10-23</lastmod> <lastmod>2026-10-24</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.6</priority> <priority>0.6</priority>
</url> </url>
+1
View File
@@ -708,6 +708,7 @@ img { max-width: 100%; height: auto; vertical-align: middle; }
border-color: var(--brass); border-color: var(--brass);
box-shadow: var(--shadow-hover); box-shadow: var(--shadow-hover);
} }
.blog-thumb { display: block; width: 100%; aspect-ratio: 16/9; object-fit: cover; border-radius: 0.5rem; margin-bottom: 0.75rem; }
.blog-card-top { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .blog-card-top { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; flex-wrap: wrap; }
.blog-badge { .blog-badge {
display: inline-block; padding: 0.2rem 0.6rem; border-radius: 3rem; display: inline-block; padding: 0.2rem 0.6rem; border-radius: 3rem;