I have had an old blog (which is still active) where I published some articles which I also want to publish on the new blog?
How can I do this without SEO penalty?
You'll get a penalty if you're trying (regardless of your level of intention) to have two or more copies of the same page indexed.
If you still want both copies live, then you'll have to determine which ONE page from each set of same pages you want indexed.
As for the remaining pages in each set, you can either:
Declare it canonical to the original. In your HTML, insert the following after the
<head> opening tag:
<link rel="canonical" href="original.htm">
replace original.htm with the URL to the chosen page of each set which will then become the real original version.
Make the copies non-indexable. This method is simpler since you won't need to know the URL to the original page in the set, and its also more compatible with more search engines since this was an older way to declare duplicate content. Use the following right after the
<head> opening tag:
<meta name="ROBOTS" content="NOINDEX">
Side note: the tags I mentioned to insert right after
<head> can actually go anywhere between
</head> as long as no other tag appears malformed. For example, this is not acceptable:
<head><title><meta name="ROBOTS" content="NOINDEX">page title</title></head> because the title tag is malformed. In all cases, run your HTML through a validator after making changes.
I am assuming that you are saying that you are worried about them having duplicate content. One option would be to set one of them to be removed from the search engine index, such as by serving a 404, and then adding a robots.txt rule to prevent re-crawling them. The easier option, though, if it is acceptable to you, might be to create a redirect from one to the other.
Search engines don't like to see duplicate content because their users don't like to see duplicate content. So, the best thing in my opinion would be to create redirects so that there is only one set of the content.