Public Access
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:
1 parent
7b9db81e82
commit
62d9d76bde
6 files changed
+25
-3
No files matched your search
+4
-2
@@ -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 · Tips</div>
|
<div class="post-meta">October 23, 2026 · 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 · Tips</div>
|
<div class="post-meta">October 24, 2026 · 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>
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in new issue
Block a user